import * as react_jsx_runtime from 'react/jsx-runtime';
import { F as FileDropzoneProps, f as FileUploaderProps, e as FileUploadProps$1, b as UseFileUploadOptions, d as UseFileUploadReturn } from '../index-CyCLM3kg.mjs';
export { a as FileUploadData, I as InputField, c as UploadFromUrlOptions, U as UploadResult } from '../index-CyCLM3kg.mjs';
import * as React from 'react';
import { ComponentProps, DragEvent, ChangeEvent } from 'react';
export { a as FILE_TYPE_GROUPS, F as FileType, e as createFileTypeValidator, f as formatFileSize, b as getFileExtensions, c as getFileMimeTypes, g as getFileTypeDefinition, d as getFileTypesByCategory, j as isCryptoSupported, h as isFileApiSupported, i as isFileTypeMatch, v as validateFile } from '../file-utils-CUHxYCcA.mjs';

interface FileUploadProgress {
    file: File;
    progress: number;
    status: "uploading" | "completed" | "error" | "canceled";
    error?: string;
}

declare function FileDropzone({ multiple, selectedFiles, onFilesSelected, onRemoveFile, className, allowedFileTypes, maxFileSizeBytes, listFooter, footer, showRemoveButton, disabled, emptyTitle, emptyDescription, }: FileDropzoneProps): react_jsx_runtime.JSX.Element;

declare function FileUploader({ title, description, inputFields, allowedFileTypes, maxFileSizeBytes, // 100MB default
multiple, onSuccess, trigger, isProcessing, disabled, }: FileUploaderProps): react_jsx_runtime.JSX.Element;

declare function FileUpload({ className, heading, content, onContentChange, allowFileRemoval, showHeader, allowedFileTypes, maxFileSizeBytes, uploadDescription, fileUrlPlaceholder, disableWhenHasSelection, footer, }: FileUploadProps$1): react_jsx_runtime.JSX.Element;

type FileUploadProps = ComponentProps<typeof FileUpload>;
type BaseManagedProps = {
    variant?: "inline" | "modal";
};
type InlineVariantProps = BaseManagedProps & {
    variant?: "inline";
} & FileUploadProps;
type ModalVariantProps = BaseManagedProps & {
    variant: "modal";
} & FileUploaderProps;
type ManagedFileUploadProps = InlineVariantProps | ModalVariantProps;
declare function ManagedFileUpload(props: ManagedFileUploadProps): react_jsx_runtime.JSX.Element;

interface UploadProgressProps {
    files: FileUploadProgress[];
    onClose: () => void;
}
declare function UploadProgress({ files, onClose }: UploadProgressProps): react_jsx_runtime.JSX.Element | null;

interface UseFileDropzoneOptions {
    onFilesSelected: (files: File[]) => void;
    multiple?: boolean;
}
declare function useFileDropzone({ onFilesSelected, multiple, }: UseFileDropzoneOptions): {
    inputRef: React.RefObject<HTMLInputElement | null>;
    isDragging: boolean;
    handleDragEnter: (event: DragEvent<HTMLElement>) => void;
    handleDragOver: (event: DragEvent<HTMLElement>) => void;
    handleDragLeave: (event: DragEvent<HTMLElement>) => void;
    handleDrop: (event: DragEvent<HTMLElement>) => void;
    handleFileInputChange: (event: ChangeEvent<HTMLInputElement>) => void;
    handleClick: () => void;
};

declare function useFileUpload({ onProgress, onUploadStart, onUploadComplete, onUploadError, }?: UseFileUploadOptions): UseFileUploadReturn;

interface UseUploadProgressReturn {
    uploadProgressFiles: FileUploadProgress[];
    startUpload: (file: File) => void;
    updateProgress: (file: File, progress: number) => void;
    completeUpload: (file: File) => void;
    failUpload: (file: File, error: string) => void;
    removeUpload: (file: File) => void;
    clearAllUploads: () => void;
    isVisible: boolean;
    hideProgress: () => void;
}
declare function useUploadProgress(): UseUploadProgressReturn;

declare const PROGRESS_THRESHOLD = 3;
declare function getDisplayModes(fileCount: number): {
    showOverallProgress: boolean;
    isCompact: boolean;
};
declare function addUploadToQueue(uploads: FileUploadProgress[], file: File): FileUploadProgress[];
declare function updateFileProgress(uploads: FileUploadProgress[], file: File, progress: number): FileUploadProgress[];
declare function completeFileUpload(uploads: FileUploadProgress[], file: File): FileUploadProgress[];
declare function failFileUpload(uploads: FileUploadProgress[], file: File, error: string): FileUploadProgress[];
declare function cancelFileUpload(uploads: FileUploadProgress[], file: File): FileUploadProgress[];
declare function cancelAllUploads(uploads: FileUploadProgress[]): FileUploadProgress[];
declare function removeFileUpload(uploads: FileUploadProgress[], file: File): FileUploadProgress[];
declare function removeCompletedUploads(uploads: FileUploadProgress[]): FileUploadProgress[];
interface UploadStats {
    total: number;
    uploading: number;
    completed: number;
    failed: number;
    canceled: number;
    totalProgress: number;
}
declare function calculateUploadStats(uploads: FileUploadProgress[]): UploadStats;
declare function hasActiveUploads(uploads: FileUploadProgress[]): boolean;
declare function getVisibleFiles(uploads: FileUploadProgress[], showAll: boolean, maxVisible?: number): {
    filesToShow: FileUploadProgress[];
    shouldShowViewMore: boolean;
};

export { FileDropzone, FileDropzoneProps, FileUpload, type FileUploadProgress, FileUploadProps$1 as FileUploadProps, FileUploader, FileUploaderProps, ManagedFileUpload, PROGRESS_THRESHOLD, UploadProgress, type UploadStats, UseFileUploadOptions, UseFileUploadReturn, addUploadToQueue, calculateUploadStats, cancelAllUploads, cancelFileUpload, completeFileUpload, failFileUpload, getDisplayModes, getVisibleFiles, hasActiveUploads, removeCompletedUploads, removeFileUpload, updateFileProgress, useFileDropzone, useFileUpload, useUploadProgress };
