import { default as React } from 'react'; import { FormLabelProps } from '../FormLabel/FormLabel'; export declare enum MIMETypes { Images = "image/jpeg,image/png,image/gif,image/svg+xml,image/webp", Audio = "audio/mpeg,audio/wav", Videos = "video/mp4,video/x-msvideo,video/quicktime,video/x-ms-wmv,video/x-matroska,video/x-flv,video/webm,video/mpeg,video/3gpp,video/3gpp2,video/ogg,video/x-m4v", Media = "image/jpeg,image/png,image/gif,image/svg+xml,image/webp,audio/mpeg,audio/wav,video/mp4,video/x-msvideo,video/quicktime,video/x-ms-wmv,video/x-matroska,video/x-flv,video/webm,video/mpeg,video/3gpp,video/3gpp2,video/ogg,video/x-m4v", Documents = "application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation", Text = "text/plain", Archives = "application/zip,application/x-rar-compressed", Spreadsheets = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,text/csv,application/csv" } type FileTypeWithStatus = File & { status: 'uploading' | 'success' | 'error'; progress?: number; errorMessage?: string; }; type FileTypeWithoutStatus = File & { status?: never; progress?: never; }; export type FileType = FileTypeWithStatus | FileTypeWithoutStatus; type FileUploaderBaseProps = { /** Function to save uploaded files */ uploadCallout: (files: FileType[]) => void; /** Allow FileUploader to receive multiple files */ acceptMultiple?: boolean; /** Optionally restrict the types of files that are accepted. If your required type is not specified in the enum MIMETypes, you can add in the necessary strings to the array. */ acceptedFileTypes?: Array; /** Optionally make the component disabled */ disabled?: boolean; /** Optionally hide the x button */ noFileRemoval?: boolean; /** Optional prop to add a test id to the FileUploader for QA testing */ qaTestId?: string; }; type WithControlled = FileUploaderBaseProps & { /** Optionally allow the files to be in a controlled state */ controlled: true; /** Files to upload */ files: FileType[]; /** Function to remove files */ removeFileCallout: (file: FileType) => void; }; type WithoutControlled = FileUploaderBaseProps & { /** Files to upload */ files?: FileType[]; controlled?: never; removeFileCallout?: never; }; type DetermineAsyncType = WithControlled | WithoutControlled; type WithFormLabelProps = FileUploaderBaseProps & DetermineAsyncType & { /** FormLabel component above the upload field */ formLabelProps: Omit; /** Optional download link callout */ downloadCallout?: () => void; }; type WithoutFormLabelProps = FileUploaderBaseProps & DetermineAsyncType & { formLabelProps?: never; downloadCallout?: never; }; export type FileUploaderProps = WithFormLabelProps | WithoutFormLabelProps; declare const FileUploader: ({ uploadCallout, files, formLabelProps, downloadCallout, acceptedFileTypes, disabled, acceptMultiple, controlled, removeFileCallout, noFileRemoval, qaTestId, }: FileUploaderProps) => React.JSX.Element; export default FileUploader;