export interface UploadedFile {
    id: string;
    metadata?: Record<string, unknown>;
    mimeType: string;
    name: string;
    size: number;
    uploadedAt?: string;
    url: string;
}
export interface UploadProgress {
    loaded: number;
    progress: number;
    total: number;
}
export interface UploadError {
    code: string;
    details?: unknown;
    message: string;
}
export type UploadFunction = (file: File, options?: {
    metadata?: Record<string, unknown>;
    onProgress?: (progress: UploadProgress) => void;
    signal?: AbortSignal;
}) => Promise<UploadedFile>;
export type BatchUploadFunction = (files: File[], options?: {
    concurrency?: number;
    onFileComplete?: (fileId: string, result: UploadedFile | UploadError) => void;
    onProgress?: (fileId: string, progress: UploadProgress) => void;
    signal?: AbortSignal;
}) => Promise<Array<UploadedFile | UploadError>>;
