import { type IUploadFileItem, UploadItemStatus } from "../types.js";
/**
 * @internal
 */
export interface IUseUploadQueueConfig {
    uploadFn: (file: File) => Promise<void | {
        status: typeof UploadItemStatus.Error;
        errorMessage?: string;
    }>;
    onUploadSuccess?: (file: File) => void;
    onUploadError?: (file: File, error: unknown) => void;
}
/**
 * @internal
 */
export interface IUseUploadQueueResult {
    queue: IUploadFileItem[];
    getItemById: (id: string) => IUploadFileItem | undefined;
    requireItemById: (id: string) => IUploadFileItem;
    isUploading: boolean;
    addToQueue: (files: File[]) => void;
    removeFromQueue: (fileId: string) => void;
    updateFileStatus: (fileId: string, status: IUploadFileItem["status"], errorMessage?: string) => void;
    uploadFile: (fileId: string) => Promise<IUploadFileItem>;
    uploadAll: () => Promise<IUploadFileItem[]>;
    clearQueue: () => void;
}
/**
 * @internal
 */
export declare function useUploadQueue({ uploadFn, onUploadSuccess, onUploadError }: IUseUploadQueueConfig): IUseUploadQueueResult;
//# sourceMappingURL=useUploadQueue.d.ts.map