/**
 * React Hook for File Upload
 * Production-ready React hook for Health Ecosystem file uploads
 */
import { FileUploadClient } from '../FileUploadClient';
import { FileUploadConfig, UploadOptions, UploadResult, FileUploadState } from '../types';
interface UseFileUploadOptions extends Partial<UploadOptions> {
    /** Auto-upload when files are selected */
    autoUpload?: boolean;
    /** Multiple file selection */
    multiple?: boolean;
    /** Accept file types (HTML input accept attribute) */
    accept?: string;
}
interface UseFileUploadReturn {
    /** Current upload state */
    state: FileUploadState;
    /** Upload files */
    upload: (files: File[] | File, options?: Partial<UploadOptions>) => Promise<UploadResult | UploadResult[]>;
    /** Cancel current upload */
    cancel: () => void;
    /** Reset upload state */
    reset: () => void;
    /** Open file picker */
    openFilePicker: () => void;
    /** File input props for manual integration */
    getInputProps: () => {
        type: 'file';
        accept?: string;
        multiple?: boolean;
        onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
        style: {
            display: 'none';
        };
    };
    /** Upload client instance */
    client: FileUploadClient;
}
export declare function useFileUpload(config: FileUploadConfig, options?: UseFileUploadOptions): UseFileUploadReturn;
/**
 * Hook for drag and drop file upload
 */
export declare function useDropzone(config: FileUploadConfig, options?: UseFileUploadOptions): {
    isDragActive: boolean;
    getDropzoneProps: () => {
        onDragEnter: (event: React.DragEvent) => void;
        onDragLeave: (event: React.DragEvent) => void;
        onDragOver: (event: React.DragEvent) => void;
        onDrop: (event: React.DragEvent) => void;
    };
    /** Current upload state */
    state: FileUploadState;
    /** Upload files */
    upload: (files: File[] | File, options?: Partial<UploadOptions>) => Promise<UploadResult | UploadResult[]>;
    /** Cancel current upload */
    cancel: () => void;
    /** Reset upload state */
    reset: () => void;
    /** Open file picker */
    openFilePicker: () => void;
    /** File input props for manual integration */
    getInputProps: () => {
        type: "file";
        accept?: string;
        multiple?: boolean;
        onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
        style: {
            display: "none";
        };
    };
    /** Upload client instance */
    client: FileUploadClient;
};
export {};
//# sourceMappingURL=useFileUpload.d.ts.map