import Foundation enum Constants { static let version = "0.8.2" static let maxMessageBytes = 65536 static let maxImageBytes = 5 * 1024 * 1024 // 5 MB static let maxFileBytes = 50 * 1024 * 1024 // 50 MB static let imageChunkSize = 32768 // 32 KB static let selfDeviceId = "00000000-0000-0000-0000-000000000000" static let opkReplenishThreshold = 20 static let opkBatchSize = 50 static let spkRotationDays = 7 static let maxSkip = 256 static let maxSenderKeySkip = 256 static let deviceBundleCacheTTL: TimeInterval = 300 // 5 minutes static let sendReceiveTimeout: TimeInterval = 30 static let reconnectBaseDelay: TimeInterval = 1 static let reconnectMaxDelay: TimeInterval = 30 static let pbkdf2Iterations: UInt32 = 600_000 static let ecp1Magic = Data([0x45, 0x43, 0x50, 0x31]) // "ECP1" // HKDF info/salt strings matching Python static let x3dhInfo = "EncryptedChat_X3DH" static let rootKeyInfo = "EncryptedChat_RootKey" static let selfEncryptionSalt = "self_encryption" static let selfEncryptionInfo = "EncryptedChat_SelfKey" static let localStorageSalt = "local_storage" static let localStorageInfo = "EncryptedChat_LocalStorage" static let senderKeyChainInfo = "SenderKeyChain" // Server connection defaults static let defaultHost = "127.0.0.1" static let defaultPort: UInt16 = 9999 }