/**
 * Structural interface for an external upload manager.
 *
 * hazo_collab_forms declares this interface locally — it never imports from
 * hazo_files or any other upload library. Consumers supply whatever object
 * matches this shape (duck-typed / structural compatibility).
 */
export type ExternalJobStatus = 'queued' | 'uploading' | 'processing' | 'awaiting_confirmation' | 'done' | 'error';
export interface ExternalJobSnapshot {
    job_id: string;
    group_id: string;
    group_label?: string;
    status: ExternalJobStatus;
    progress: {
        current: number;
        total: number;
    } | null;
    files: ReadonlyArray<{
        file_name: string;
        mime_type: string;
        file_id?: string;
        download_url?: string;
    }>;
    extracted_data: Record<string, unknown>;
    error: string | null;
}
export interface ExternalSubmitOptions {
    files: File[];
    group_id: string;
    group_label?: string;
    metadata?: Record<string, unknown>;
}
export interface ExternalUploadManagerEvents {
    'job:created': {
        job: ExternalJobSnapshot;
    };
    'job:status_changed': {
        job: ExternalJobSnapshot;
        previous_status: ExternalJobStatus;
    };
    'job:progress': {
        job: ExternalJobSnapshot;
    };
    'job:completed': {
        job: ExternalJobSnapshot;
    };
    'job:error': {
        job: ExternalJobSnapshot;
        error: string;
    };
}
export interface ExternalUploadManager {
    submit_batch(options: ExternalSubmitOptions): string;
    get_jobs_for_group(group_id: string): ReadonlyArray<ExternalJobSnapshot>;
    on<K extends keyof ExternalUploadManagerEvents>(event: K, listener: (data: ExternalUploadManagerEvents[K]) => void): () => void;
}
//# sourceMappingURL=external_upload_manager.d.ts.map