import SessionUtilitiesKit import PromiseKit import Sodium public protocol SessionSnodeKitStorageProtocol { @discardableResult func write(with block: @escaping (Any) -> Void) -> Promise @discardableResult func write(with block: @escaping (Any) -> Void, completion: @escaping () -> Void) -> Promise func writeSync(with block: @escaping (Any) -> Void) func getUserPublicKey() -> String? func getUserED25519KeyPair() -> Box.KeyPair? func getOnionRequestPaths() -> [OnionRequestAPI.Path] func setOnionRequestPaths(to paths: [OnionRequestAPI.Path], using transaction: Any) func getSnodePool() -> Set func setSnodePool(to snodePool: Set, using transaction: Any) func getLastSnodePoolRefreshDate() -> Date? func setLastSnodePoolRefreshDate(to date: Date, using transaction: Any) func getSwarm(for publicKey: String) -> Set func setSwarm(to swarm: Set, for publicKey: String, using transaction: Any) func getLastMessageHash(for snode: Snode, associatedWith publicKey: String) -> String? func setLastMessageHashInfo(for snode: Snode, associatedWith publicKey: String, to lastMessageHashInfo: JSON, using transaction: Any) func pruneLastMessageHashInfoIfExpired(for snode: Snode, associatedWith publicKey: String) func getReceivedMessages(for publicKey: String) -> Set func setReceivedMessages(to receivedMessages: Set, for publicKey: String, using transaction: Any) }