import { ReadFileError, ReadFileResult } from "@ryuzaki13/react-foundation-lib/file";
import { UiBaseProps } from "../types";
interface InputFilesCommonProps extends Omit<UiBaseProps<undefined>, "value" | "onChange"> {
    /** Callback ошибки чтения файла */
    onReadError?: (error: ReadFileError) => void;
    /** HTML-атрибут accept для нативного input[type="file"] (например `[".pdf", ".docx"]`) */
    accept?: readonly string[];
    /** Список допустимых MIME-типов — передаётся в readFile */
    allowedMime?: readonly string[];
    /** Максимальный размер одного файла в байтах */
    maxBytes?: number;
    /** Максимальное количество файлов. При достижении лимита input блокируется */
    maxFiles?: number;
    /** Текст ошибки под полем */
    error?: string;
    /** Callback сброса ошибки */
    onClearError?: () => void;
    /** CSS-класс обёртки */
    className?: string;
}
type InputFilesDataUrlResult = Extract<ReadFileResult, {
    mode: "data-url";
}>;
type InputFilesArrayBufferResult = Extract<ReadFileResult, {
    mode: "array-buffer";
}>;
/**
 * Пропсы компонента InputFiles.
 *
 * Компонент предназначен для выбора нескольких файлов.
 * Выбранные файлы отображаются списком под полем ввода,
 * каждый с кнопкой удаления (крестик).
 *
 * В onChange передаётся обновлённый массив результатов readFile.
 */
export type InputFilesProps = (InputFilesCommonProps & {
    value: InputFilesDataUrlResult[];
    onChange: (value: InputFilesDataUrlResult[]) => void;
    /** Режим чтения: "data-url" по умолчанию */
    readMode?: "data-url";
}) | (InputFilesCommonProps & {
    value: InputFilesArrayBufferResult[];
    onChange: (value: InputFilesArrayBufferResult[]) => void;
    /** Режим чтения файла как ArrayBuffer */
    readMode: "array-buffer";
});
/**
 * InputFiles — компонент выбора нескольких файлов.
 *
 * Поле стилизовано как InputText. При клике открывается нативный
 * диалог с multiple. Каждый выбранный файл читается через readFile
 * и добавляется в массив value.
 *
 * Список выбранных файлов отображается под полем.
 * Каждый файл можно удалить кнопкой «крестик».
 *
 * InputFiles типизирует массив по `readMode`.
 * Если `readMode` не задан или равен `"data-url"`, в `value` и `onChange`
 * используется массив объектов с `dataUrl`. Если `readMode` равен
 * `"array-buffer"`, используется массив объектов с `buffer`.
 */
export declare function InputFiles(props: InputFilesProps): import("react").JSX.Element;
export {};
//# sourceMappingURL=InputFiles.d.ts.map