import React from 'react';
import { ButtonProps } from '../button/button';
export declare type AttachProps = {
    /**
     * Содержимое поля ввода, указанное по умолчанию. Принимает массив объектов типа File или null.
     */
    value?: File[];
    /**
     * Уникальное имя блока
     */
    name?: string;
    /**
     * Идентификатор компонента в DOM
     */
    id?: string;
    /**
     * Иконка
     */
    icon?: React.ReactNode;
    /**
     * Последовательность перехода между контролами при нажатии на Tab
     */
    tabIndex?: number;
    /**
     * Текст для случая, когда файл не загружен
     */
    noFileText?: string;
    /**
     * Содержимое кнопки для выбора файла
     */
    buttonContent?: React.ReactNode;
    /**
     * Свойства для кнопки
     */
    buttonProps?: ButtonProps;
    /**
     * Доступные для выбора MIME типы файлов
     */
    accept?: string;
    /**
     * Управление возможностью изменения значения компонента
     */
    disabled?: boolean;
    /**
     * Управление возможностью выбора нескольких файлов
     */
    multiple?: boolean;
    /**
     * Процент выполнения загрузки файла
     */
    progressBarPercent?: number;
    /**
     * Число символов, после которого имя файла будет обрезаться
     */
    maxFilenameLength?: number;
    /**
     * Размер компонента
     */
    size?: 's' | 'm' | 'l' | 'xl';
    /**
     * Тема компонента
     */
    theme?: 'alfa-on-color' | 'alfa-on-white';
    /**
     * Дополнительный класс
     */
    className?: string;
    /**
     * Обработчик клика по компоненту кнопки
     */
    onClick?: (event?: React.MouseEvent<unknown>) => void;
    /**
     * Обработчик изменения значения 'value'
     */
    onChange?: (value?: unknown[], event?: React.ChangeEvent<unknown>) => void;
    /**
     * Обработчик фокуса компонента
     */
    onFocus?: (event?: React.FocusEvent<unknown>) => void;
    /**
     * Обработчик снятия фокуса компонента
     */
    onBlur?: (event?: React.FocusEvent<unknown>) => void;
    /**
     * Обработчик события наведения курсора на кнопку
     */
    onMouseEnter?: (event?: React.MouseEvent<unknown>) => void;
    /**
     * Обработчик события снятия курсора с кнопки
     */
    onMouseLeave?: (event?: React.MouseEvent<unknown>) => void;
    /**
     * Идентификатор для систем автоматизированного тестирования
     */
    'data-test-id'?: string;
};
declare type AttachState = {
    focused: boolean;
    hovered: boolean;
    value: File[];
};
/**
 * Компонент прикрепления файлов.
 */
export declare class Attach extends React.PureComponent<AttachProps, AttachState> {
    protected cn: (this: void | {
        props?: Record<string, unknown>;
    }, elementNameOrMods?: string | {
        [key: string]: string | number | boolean;
    }, mods?: {
        [key: string]: string | number | boolean;
    }) => string;
    static defaultProps: Partial<AttachProps>;
    state: AttachState;
    private input;
    static getDerivedStateFromProps(nextProps: AttachProps, prevState: AttachState): {
        value: File[];
    };
    componentDidUpdate(_: AttachProps, prevState: AttachState): void;
    render(): JSX.Element;
    renderIcon(): JSX.Element;
    renderButton(): JSX.Element;
    renderStatusText(): JSX.Element;
    private truncateFilename;
    private handleInputChange;
    private handleClearClick;
    private handleButtonClick;
    private handleFocus;
    private handleBlur;
    private handleMouseEnter;
    private handleMouseLeave;
    /**
     * Ставит фокус на контрол.
     */
    focus(): void;
    /**
     * Убирает фокус с контрола.
     */
    blur(): void;
    private performChange;
}
declare const _default: React.ForwardRefExoticComponent<AttachProps & React.RefAttributes<Attach>> & Attach;
export default _default;
