import { default as React } from 'react';
import { default as IFileUploadProps } from './IFileUploadProps';
/**
 * FileUpload component provides a user interface for selecting and uploading files.
 * Can work in both controlled and uncontrolled modes:
 * - Controlled mode: when fileList and onChange props are provided
 * - Uncontrolled mode: when fileList and onChange props are not provided (component manages its own state)
 * @param props {@link IFileUploadProps} - The component props
 * @returns FileUpload component
 *
 * @example
 * ```tsx
 * // Basic usage
 * function App() {
 *   const [fileList, setFileList] = useState<IFileWithStatus[]>([]);
 *
 *   const onChange = ({fileList}: {fileList: IFileWithStatus[]}) => {
 *     setFileList(fileList);
 *   };
 *
 *   return (
 *     <FileUpload
 *       value={fileList}
 *       onChange={onChange}
 *     />
 *   );
 * }
 * ```
 *
 * @example
 * ```tsx
 * // Example for onUpload function when file is uploaded
 * function App() {
 *   const [fileList, setFileList] = useState<IFileWithStatus[]>([]);
 *
 *   // This function will be called when each file is uploaded
 *   // You can use this function to update the file list or perform other actions
 *   const onUpload = (file: IFileWithStatus, setProgress: (progress: number) => void) => {
 *     // Simulate file upload with progress updates
 *     for (let percent = 0; percent <= 100; percent += 10) {
 *       await new Promise(resolve => setTimeout(resolve, 100));
 *       setProgress(percent);
 *     }
 *   };
 *
 *   const onChange = ({fileList}: {fileList: IFileWithStatus[]}) => {
 *     setFileList(fileList);
 *   };
 *
 *   return <FileUpload allowMultiple={true} onUpload={onUpload} value={fileList} onChange={onChange} />;
 * }
 * ```
 */
declare const FileUpload: React.FC<IFileUploadProps>;
export default FileUpload;
