import Foundation

protocol NetworkServiceProtocol {
    func fetchSessions() async throws -> [RemoteSession]
    func syncSession(
        _ session: CelestiaSession,
        deletedEventClientIDs: [String]
    ) async throws -> RemoteSession
    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
}
