import { ReactNode } from 'react';
import { BaseComponentProps } from '../../types';
import { ButtonProps } from '../Button';

/**
 * Single file item in the upload list (with progress, failure, retry, etc.).
 */
export interface FileUploadItem {
    file: File;
    progress?: number;
    isUploadRunning?: boolean;
    failed?: boolean;
    failedMessage?: string;
    disabled?: boolean;
    timeRemaining?: number;
    onPause?: () => void;
    onRetry?: () => void;
}
/**
 * Valid file type configuration (fileType key, optional template download, type override).
 */
export interface ValidFileTypeConfig {
    fileType: string;
    templateDownloader?: () => void;
    typeOverride?: boolean;
}
/**
 * MIME type map by file type key (extends record for custom keys).
 */
export declare const FILE_TYPE_MIME_MAP: Record<string, string[]>;
export declare const SIZE_CONVENTIONS: readonly ["B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
export interface FileUploadProps extends BaseComponentProps {
    fileList: FileUploadItem[];
    onFileListChange: (list: FileUploadItem[]) => void;
    disabled?: boolean;
    numberOfFiles?: number;
    validFileTypes?: ValidFileTypeConfig[];
    primaryButtonLabel?: ReactNode;
    secondaryButtonLabel?: ReactNode;
    onPrimaryButtonClick?: () => void;
    onSecondaryButtonClick?: () => void;
    primaryButtonProps?: Partial<ButtonProps>;
    secondaryButtonProps?: Partial<ButtonProps>;
    onClose?: () => void;
    customFailedActionButton?: ReactNode;
}
//# sourceMappingURL=FileUpload.types.d.ts.map