import Foundation protocol NetworkServiceProtocol { func fetchSessions() async throws -> [RemoteSession] func syncSession( _ session: CelestiaSession, deletedEventClientIDs: [String] ) async throws -> RemoteSession func deleteSession(sessionID: String) async throws func fetchStorageQuota() async throws -> StorageQuota func uploadAsset( sessionID: String, clientID: String, kind: String, fileURL: URL, progress: @escaping @Sendable (Double) -> Void ) async throws -> AssetUploadResult func downloadAsset(sessionID: String, asset: RemoteAsset, destinationURL: URL) async throws func recordSyncCheckpoint() async throws }