import React from 'react';
import { Theme } from '../cn';
import { CalendarProps } from '../calendar/calendar';
export declare type CalendarInputProps = {
    /**
     * Содержимое поля ввода
     */
    value?: string;
    /**
     * Содержимое поля ввода, указанное по умолчанию
     */
    defaultValue?: string;
    /**
     * Дата для отображения календаря по умолчанию
     */
    defaultMonth?: string | number | any;
    /**
     * Свойства компонента [Calendar](#!/Calendar)
     */
    calendar?: CalendarProps;
    /**
     * Управление возможностью раскрытия календаря
     */
    opened?: boolean;
    /**
     * Тип инпута (filled только на белом фоне в размере m)
     */
    view?: 'default' | 'filled';
    /**
     * Управление возможностью компонента занимать всю ширину родителя
     */
    width?: 'default' | 'available';
    /**
     * Направления, в которые может открываться попап компонента
     */
    directions?: ReadonlyArray<'anchor' | 'top-left' | 'top-center' | 'top-right' | 'left-top' | 'left-center' | 'left-bottom' | 'right-top' | 'right-center' | 'right-bottom' | 'bottom-left' | 'bottom-center' | 'bottom-right'>;
    /**
     * Управление автозаполнением компонента
     */
    autocomplete?: boolean;
    /**
     * Управление возможностью изменения значения компонента
     */
    disabled?: boolean;
    /**
     * Размер компонента
     */
    size?: 's' | 'm' | 'l' | 'xl';
    /**
     * Последовательность перехода между контролами при нажатии на Tab
     */
    tabIndex?: number;
    /**
     * Добавление дополнительных элементов к инпуту слева
     */
    leftAddons?: React.ReactNode;
    /**
     * Добавление дополнительных элементов к инпуту справа
     */
    rightAddons?: React.ReactNode;
    /**
     * Управление рендером иконки календаря в инпуте
     */
    withIcon?: boolean;
    /**
     * Лейбл для поля
     */
    label?: React.ReactNode;
    /**
     * Подсказка в поле
     */
    placeholder?: string;
    /**
     * Подсказка под полем
     */
    hint?: React.ReactNode;
    /**
     * Отображение ошибки
     */
    error?: React.ReactNode;
    /**
     * Сброс ошибки при установке фокуса в компоненте Input
     */
    resetError?: boolean;
    /**
     * Управление нативным режимом на мобильных устройствах
     */
    mobileMode?: 'native' | 'popup' | 'input';
    /**
     * Подсказка над меню в мобильном режиме
     */
    mobileTitle?: React.ReactNode;
    /**
     * Идентификатор компонента в DOM
     */
    id?: string;
    /**
     * Имя компонента в DOM
     */
    name?: string;
    /**
     * Дополнительный класс
     */
    className?: string;
    /**
     * Тема компонента
     */
    theme?: Theme;
    /**
     * Обработчик установки фокуса на компонент
     */
    onFocus?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик снятия фокуса с компонента
     */
    onBlur?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик установки фокуса на поле ввода
     */
    onInputFocus?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик снятия фокуса с поля ввода
     */
    onInputBlur?: (event?: React.FocusEvent<any>) => void;
    /**
     * Обработчик ввода даты в текстовом поле
     */
    onInputChange?: (value?: string) => void;
    /**
     * Обработчик выбора даты в календаре
     */
    onCalendarChange?: (formattedValue?: string) => void;
    /**
     * Обрабочик изменения даты в календаре
     */
    onChange?: (formattedValue?: string, value?: number) => void;
    /**
     * Обработчик события нажатия на клавишу в момент, когда фокус находится на компоненте
     */
    onKeyDown?: (event?: React.KeyboardEvent<any>) => void;
    /**
     * Обработчик события нажатия на клавишу клавиатуры в момент, когда фокус находится в календаре
     */
    onCalendarKeyDown?: (event?: React.KeyboardEvent<any>) => void;
    /**
     * Обработчик события нажатия на клавишу клавиатуры в момент, когда фокус находится на текстовом поле
     */
    onInputKeyDown?: (event?: React.KeyboardEvent<any>) => void;
    /**
     * Идентификатор для систем автоматизированного тестирования
     */
    'data-test-id'?: string;
};
/**
 * Компонент для ввода даты.
 */
export declare class CalendarInput extends React.Component<CalendarInputProps> {
    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<CalendarInputProps>;
    state: {
        isMobile: boolean;
        isInputFocused: boolean;
        isCalendarFocused: boolean;
        opened: boolean;
        value: string;
        month: number;
    };
    private timeoutId;
    private changeCloseTimeoutId;
    /**
     * @type {Calendar}
     */
    private calendar;
    /**
     * @type {Popup}
     */
    private calendarPopup;
    /**
     * @type {Input}
     */
    private customCalendarTarget;
    private nativeCalendarTarget;
    componentDidMount(): void;
    componentWillUnmount(): void;
    render(): JSX.Element;
    renderPopup(value: any): JSX.Element;
    renderMobileHeader(): JSX.Element;
    private handleCalendarChange;
    private handleCalendarMonthChange;
    private handleCalendarFocus;
    private handleCalendarBlur;
    private handleCalendarKeyDown;
    private handleIconButtonClick;
    private handleCustomInputChange;
    private handleNativeInputChange;
    private handleCustomInputFocus;
    private handleNativeInputFocus;
    private handleCustomInputBlur;
    private handleNativeInputBlur;
    private handleInputKeyDown;
    private handleMqMatchChange;
    private handleMobileWrapperClick;
    private handlePopupCloserClick;
    /**
     * Устанавливает фокус на поле ввода, открывает календарь.
     */
    focus(): void;
    /**
     * Убирает фокус с поля ввода.
     */
    blur(): void;
    /**
     * Скроллит страницу до поля ввода.
     */
    scrollTo(): void;
    private canBeNative;
    private isNativeInput;
    private isMobilePopup;
    private isSimpleInput;
    private changeFocused;
    private setOpened;
    private renderIcon;
}
declare const _default: React.ForwardRefExoticComponent<CalendarInputProps & React.RefAttributes<CalendarInput>> & CalendarInput;
export default _default;
