//
//  CameraDriver.swift
//  otg_swift
//
//  Created by hanqiu on 2026/7/2.
//

import Foundation

/// 任意品牌相机 Driver 的统一接口。
/// ViewModel 只依赖此协议，不引用具体品牌实现。
protocol CameraDriver: AnyObject {
    var platform: CameraPlatform { get }
    var deviceInfo: CameraDeviceInfo { get }

    /// Session 已由 ConnectionManager 打开；Driver 内通常无需再次连接。
    func connect() async throws
    func disconnect()
    /// 枚举相机内可导入的历史照片（MTP/PTP 目录扫描）。
    func listObjects() async throws -> [CameraObject]
    func requestThumbnailData(for object: CameraObject, maxPixelSize: Int) async -> Data?
    /// 下载单张对象到指定目录，返回本地文件 URL。
    func downloadObject(_ object: CameraObject, to directory: URL) async throws -> URL
}

/// 与品牌无关的相机文件描述，由 ICCameraFile 映射而来。
struct CameraObject: Equatable {
    let id: String
    let filename: String
    let fileSize: Int64
    let capturedAt: Date
}
