import { type LazyExoticComponent, type ReactElement } from 'react';
import { type PdfViewerProps } from '../../../PdfViewer';
import { type FileUploaderProps, type UploadFile } from '../../FileUploader';
export type UsePreviewFileUploaderParams = Pick<FileUploaderProps, 'className' | 'name' | 'label' | 'maxFileSize' | 'isDisabled' | 'isError' | 'helperText' | 'restrictions' | 'placeholder' | 'inputRef' | 'notify' | 'generateDownloadLink' | 'onUploadFile' | 'onDeleteFile' | 'onView' | 'getErrorMessage'> & {
    /**
     * Значение
     */
    value: UploadFile | null | undefined;
    /**
     * Массив разрешенных расширений файлов и MIME-типов
     *
     * @example
     * // Используя расширения файлов
     * accept={['.jpg', '.png', '.pdf']}
     *
     * // Используя MIME-типы
     * accept={['image/jpeg', 'image/png', 'application/pdf']}
     *
     * // Комбинируя расширения и MIME-типы
     * accept={['.jpg', 'image/png', 'application/pdf']}
     */
    accept?: string[];
    /**
     * Кастомное изображение для placeholder. Дефолтное берется из configProvider, если было прокинуто
     */
    placeholderImgSrc?: string;
    /**
     * Скрытие персональных данных от инструментов мониторинга
     */
    isHidePersonalData?: boolean;
    /**
     * Компонент для отображения превью pdf-файлов
     */
    PdfViewer?: ((props: PdfViewerProps) => ReactElement) | LazyExoticComponent<(props: PdfViewerProps) => ReactElement>;
    /**
     * Функция, вызываемая при изменении списка файлов (добавление/удаление)
     * @param value - Объект загруженного файла или null при удалении
     * @remarks
     * Вызывается в следующих случаях:
     * - При добавлении нового файла через диалог выбора или drag-n-drop
     * - При удалении файла
     * - При изменении статуса загрузки файла (loading/success/error)
     * - При обновлении информации о файле после успешной загрузки
     */
    onChange: (value: UploadFile | null) => void;
};
export declare const usePreviewFileUploader: ({ placeholderImgSrc, isHidePersonalData, PdfViewer, accept, ...props }: UsePreviewFileUploaderParams) => {
    dropZoneProps: {
        className: string;
        hintPlaceholderProps: {
            placeholderImgSrc: string | undefined;
            isMultiple: boolean | undefined;
            accept: string[];
            maxFileCount: number;
            maxFileSize: number;
            placeholder: string | undefined;
        };
        isLimitMaxFileCount: boolean;
        maxFileCount: number;
        isVisibleAddFile: boolean;
        isVisibleFileList: boolean;
        fileInputProps: {
            id: string | undefined;
            accept: string;
            ref: import("react").RefObject<HTMLInputElement> | undefined;
            value: string;
            onChange: (event: import("react").ChangeEvent<HTMLInputElement, Element>) => void;
            name: string | undefined;
            isMultiple: boolean | undefined;
            isDisabled: boolean | undefined;
        };
        uploadButtonProps: {
            isDisabled: boolean | undefined;
            htmlFor: string | undefined;
        };
        containerProps: {
            className: string | undefined;
            label: string | undefined;
            isError: boolean | undefined;
            helperText: import("react").ReactNode;
        };
        onDragLeave: (event: import("react").DragEvent<HTMLElement>) => void;
        onDragOver: (event: import("react").DragEvent<HTMLElement>) => void;
        onDrop: (event: import("react").DragEvent<HTMLElement>) => void;
        isActive: boolean;
        htmlFor: string | undefined;
        isDisabled: boolean | undefined;
        isError: boolean | undefined;
    };
    fileListProps: {
        isHidePersonalData: boolean | undefined;
        PdfViewer: LazyExoticComponent<(props: PdfViewerProps) => ReactElement> | ((props: PdfViewerProps) => ReactElement) | undefined;
        onDelete: (fileId: string) => void;
        onRetry: ((fileId: string, file: File) => void) | undefined;
        onView: ((fileId: string, file?: File | undefined, fileUrl?: string | undefined) => void) | undefined;
        generateDownloadLink: ((fileId: string, file?: File | undefined, fileUrl?: string | undefined) => string) | undefined;
        isMultiple: boolean | undefined;
        files: UploadFile[];
        selfFiles: Record<string, UploadFile & import("../../types").SpecificSelfFileParams>;
        setErrorStatusFile: (fileId: string, errorMsg: string) => void;
        getErrorMessage: ((fileId: string, error: Error) => string) | undefined;
        deletingFileId: string | null;
    };
};
