export declare const dropzone: "dropzone"; export declare const action: "action"; export declare const kinds: readonly ["dropzone", "action"]; export type FileUploadKind = typeof kinds[number]; export declare const listSizes: readonly ["md", "lg"]; export type FileUploadListSize = typeof listSizes[number]; export declare const uploading: "uploading"; export declare const success: "success"; export declare const uploaded: "uploaded"; export declare const error: "error"; export declare const listItemStates: readonly ["uploading", "success", "uploaded", "error"]; export type FileUploadListItemState = typeof listItemStates[number]; export interface FileItem { id: string; fileName: string; fileSize: string; state: FileUploadListItemState; progress: number; thumbnail?: string; error?: string; } export interface FileUploadParams { accept?: string; fileLimit?: number; maxFileSize?: number; } export interface FileActions { progress(progress: number): void; success(): void; error(error: string): void; dismiss(): void; } export interface FilesState { fileItems: FileItem[]; abortControllers: AbortController[]; files: File[]; shouldAddToFormData: boolean[]; validFileCount: number; } export declare const getFormData: (name: string, filesState: FilesState) => FormData; export type AddFilesAction = { type: 'add'; payload: Array<{ fileItem: FileItem; abortController: AbortController; file: File; shouldAddToFormData: boolean; }>; }; export type RemoveFileAction = { type: 'remove'; payload: FileItem; }; export type UpdateFileAction = { type: 'update'; payload: { fileItem: FileItem; updates: Partial; }; }; export type FilesAction = AddFilesAction | RemoveFileAction | UpdateFileAction; export declare const initialState: FilesState; export interface FileUploadContextValue { ctxAccept?: string; ctxMultiple?: boolean; ctxFileLimit?: number; ctxMaxFileSize?: number; ctxAddFiles?(files: FileList): void; ctxDismissFile?(file: FileItem): void; ctxFileItems?: FileItem[]; ctxError?: boolean; ctxDisabled?: boolean; } export interface FileUploadListContextValue { ctxThumbnail?: boolean; ctxSize?: FileUploadListSize; ctxDisabled?: boolean; } export declare function convertBytesToFriendly(bytes: number): string; export declare const validateFile: (file: File, fileCount: number, { accept, fileLimit, maxFileSize }: FileUploadParams) => string | undefined; export declare const createFileItem: (file: File, { state, error, }: { state: FileUploadListItemState; error?: string; }) => FileItem; type ThumbnailGenerator = (file: File, callback: (thumbnail: string) => void) => undefined | string; export declare const generateThumbnail: ThumbnailGenerator; export declare function dismissFile(file: FileItem, dispatch: (action: FilesAction) => void): void; export declare function addFiles(files: FileList | null, dispatch: (action: FilesAction) => void, validFileCount: number, accept?: string, fileLimit?: number, maxFileSize?: number, initialFileItemState?: FileUploadListItemState, onUpload?: (file: File, actions: FileActions, signal: AbortSignal) => boolean | void | undefined): void; export declare function filesReducer(state: FilesState, action: FilesAction): FilesState; export {};