// // Copyright 2025 Element Creations Ltd. // Copyright 2022-2025 New Vector Ltd. // // SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. // Please see LICENSE files in the repository root for full details. // import Foundation enum MediaLoaderError: Error { case missingClient case notSupported case invalidURL case unexpectedResponse } // sourcery: AutoMockable nonisolated protocol MediaLoaderProtocol: Sendable { func loadMediaContentForSource(_ source: MediaSourceProxy) async throws -> Data func loadMediaThumbnailForSource(_ source: MediaSourceProxy, width: UInt, height: UInt) async throws -> Data func loadMediaFileForSource(_ source: MediaSourceProxy, filename: String?) async throws -> MediaFileHandleProxy }