import * as MediaLibrary from 'expo-media-library'; export type ExtendedAsset = MediaLibrary.Asset & { exif?: Record; }; // 上传任务类型 export type UploadTask = { file: File; metadata: { isCompressed: string; type: string; isThumbnail?: string; [key: string]: any; }; }; // 上传队列项 export type FileUploadItem = { id: string; name: string; progress: number; status: 'pending' | 'uploading' | 'done' | 'error'; error: string | null; type: 'image' | 'video'; thumbnail: string | null; }; // 确认上传返回 export type ConfirmUpload = { file_id: string; upload_url: string; name: string; size: number; content_type: string; file_path: string; }; // 上传结果 export type UploadResult = { originalUrl?: string; compressedUrl: string; file: File | null; exif: any; originalFile: ConfirmUpload; compressedFile: ConfirmUpload; thumbnail: string; thumbnailFile: File; }; // 上传URL响应类型 export type UploadUrlResponse = { upload_url: string; file_id: string; };