import type { File } from '../../../../shared/contracts/files';
export interface FileUploadError {
    name: string;
    message: string;
}
export type FileProgressStatus = 'pending' | 'uploading' | 'complete' | 'error' | 'cancelled';
export interface FileProgress {
    name: string;
    index: number;
    status: FileProgressStatus;
    size: number;
    uploadedBytes: number;
    file?: File;
    error?: string;
}
export interface UploadProgressState {
    isVisible: boolean;
    isMinimized: boolean;
    totalFiles: number;
    files: FileProgress[];
    errors: FileUploadError[];
    uploadId: number;
}
export interface RootState {
    uploadProgress: UploadProgressState;
}
/**
 * Byte-weighted aggregate progress across the whole batch: `sum(uploadedBytes) / sum(size)`.
 *
 * Falls back to count-based progress (settled files / total files) when all sizes are
 * zero — e.g. URL-flow rows where the file size is unknown up front.
 */
export declare const selectAggregateProgress: ((state: RootState) => number) & import("reselect").OutputSelectorFields<(args_0: FileProgress[]) => number, {
    clearCache: () => void;
}> & {
    clearCache: () => void;
};
export declare const openUploadProgress: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
    totalFiles: number;
    fileNames: string[];
    fileSizes?: number[];
}, "uploadProgress/openUploadProgress">, setFileUploading: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
    name: string;
    index: number;
    size: number;
}, "uploadProgress/setFileUploading">, setFileProgress: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
    index: number;
    bytes: number;
}, "uploadProgress/setFileProgress">, setFileComplete: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
    index: number;
    file: File;
}, "uploadProgress/setFileComplete">, setFileError: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
    index: number;
    name: string;
    message: string;
}, "uploadProgress/setFileError">, addUploadErrors: import("@reduxjs/toolkit").ActionCreatorWithPayload<FileUploadError[], "uploadProgress/addUploadErrors">, closeUploadProgress: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"uploadProgress/closeUploadProgress">, toggleMinimize: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"uploadProgress/toggleMinimize">, cancelUpload: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"uploadProgress/cancelUpload">, setUploadFailed: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
    message: string;
}, "uploadProgress/setUploadFailed">, retryCancelledFiles: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"uploadProgress/retryCancelledFiles">;
export declare const uploadProgressReducer: import("redux").Reducer<UploadProgressState>;
