import type { HTMLAttributes } from 'react';
import React from 'react';
import type { Nullable } from '../../typings/utility-types';
import type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
import type { TGetRootNode } from '../../lib/rootNode';
import type { CalendarDateShape, CalendarProps } from '../Calendar';
import type { SizeProp } from '../../lib/types/props';
export declare const MIN_WIDTH = 120;
export interface DatePickerProps extends Pick<CalendarProps, 'isHoliday' | 'minDate' | 'maxDate' | 'renderDay' | 'onMonthChange'>, Pick<HTMLAttributes<HTMLElement>, 'id'>, CommonProps {
    /** Устанавливает фокус на контроле после окончания загрузки страницы. */
    autoFocus?: boolean;
    /** Делает компонент недоступным. */
    disabled?: boolean;
    /** Отображает кнопку "Сегодня" в календаре. */
    enableTodayLink?: boolean;
    /** Переводит контрол в состояние валидации "ошибка". */
    error?: boolean;
    /** Задает nекущую позицию выпадающего окна вручную. */
    menuPos?: 'top' | 'bottom';
    /** Задает выравнивание меню. */
    menuAlign?: 'left' | 'right';
    /** Задает размер контрола. */
    size?: SizeProp;
    /**
     * Строка формата `dd.mm.yyyy`
     * Задает значение автокомплита.
     */
    value?: string | null;
    /** Переводит контрол в состояние валидации "предупреждение". */
    warning?: boolean;
    /** Задает ширину автокомплита. */
    width?: number | string;
    /** Задает функцию, которая вызывается при потере датапикером фокуса. */
    onBlur?: () => void;
    /** Задает функцию, вызывающуюся при изменении value.
     * @param value - строка в формате `dd.mm.yyyy`. */
    onValueChange: (value: string) => void;
    /** Задает функцию, которая вызывается при получении датапикером фокуса. */
    onFocus?: () => void;
    /** Задает функцию, которая вызывается при нажатии кнопки на клавиатуре. */
    onKeyDown?: (e: React.KeyboardEvent<any>) => void;
    /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseenter`). См разницу с onMouseOver в [документации](https://learn.javascript.ru/mousemove-mouseover-mouseout-mouseenter-mouseleave)  */
    onMouseEnter?: (e: React.MouseEvent<any>) => void;
    /** Задает функцию, которая вызывается при уходе мышки с объекта (событие `onmouseleave`). */
    onMouseLeave?: (e: React.MouseEvent<any>) => void;
    /** Задает функцию, которая вызывается при наведении мышкой (событие `onmouseover`). */
    onMouseOver?: (e: React.MouseEvent<any>) => void;
    /** Позволяет использовать на мобильных устройствах нативный календарь для выбора дат.
     * На iOS нативный календарь не умеет работать с minDate и maxDate. */
    useMobileNativeDatePicker?: boolean;
}
export interface DatePickerState {
    opened: boolean;
    canUseMobileNativeDatePicker: boolean;
    today: CalendarDateShape;
}
export declare const DatePickerDataTids: {
    readonly root: "DatePicker__root";
    readonly input: "DatePicker__input";
    readonly label: "DatePicker__label";
    readonly pickerRoot: "Picker__root";
    readonly pickerTodayWrapper: "Picker__todayWrapper";
};
type DefaultProps = Required<Pick<DatePickerProps, 'minDate' | 'maxDate'>>;
/**
 * Поле `DatePicker` помогает вводить дату с клавиатуры или выбирать ее с помощью мыши.
 *
 * Используйте поле с датой, когда нужно ввести дату в формате ДД.ММ.ГГГГ.
 *
 * Поле с датой отличается от обычного поля ввода наличием иконки, маски и блока календаря.
 */
export declare class DatePicker extends React.PureComponent<DatePickerProps, DatePickerState> {
    static __KONTUR_REACT_UI__: string;
    static displayName: string;
    static defaultProps: DefaultProps;
    private getProps;
    private theme;
    private readonly locale;
    private canOpenPopup;
    static validate: (value: Nullable<string>, range?: {
        minDate?: string | undefined;
        maxDate?: string | undefined;
    }) => boolean;
    state: DatePickerState;
    private input;
    private focused;
    getRootNode: TGetRootNode;
    private setRootNode;
    private isMobileLayout;
    componentDidMount(): void;
    componentDidUpdate(prevProps: DatePickerProps, prevState: DatePickerState): void;
    /**
     * @public
     */
    blur(): void;
    /**
     * @public
     */
    focus(opts?: {
        withoutOpenDropdown?: boolean;
    }): void;
    /**
     * Закрывает выпадашку выбора дня
     * @public
     */
    close(): void;
    render(): React.JSX.Element;
    renderMain: (props: CommonWrapperRestProps<DatePickerProps>) => React.JSX.Element;
    private parseValueToDate;
    private renderTodayLink;
    getParent: () => Nullable<Element>;
    private getRootStyle;
    private getInputRef;
    private openPickerPopup;
    private handleFocus;
    private handleKeyDown;
    private handleBlur;
    private handleValueChange;
    private handleSelect;
    private handleMobileCloseRequest;
}
export {};
