import { type ReactNode, type RefObject, type SyntheticEvent } from 'react';
import { type TextFieldProps } from '../../TextField';
import { type CloseEventReason } from '../../types/CloseEventReason';
import { type DateMask } from '../../utils/date';
import { type MondayFirst } from '../DayPicker';
import { type WithDoubleNavigationButtons } from './configTypes';
import { type MinMaxDate } from './minMaxDate';
export type DatePickerProps = MondayFirst & WithDoubleNavigationButtons & Partial<MinMaxDate> & {
    /**
     * Маска для инпута даты
     * @default 'DD.MM.YYYY'
     */
    mask?: DateMask;
    /**
     * Обработчик изменения состояния. Передает только Date object, если дата невалидна, то будет Invalid date
     */
    onChange?: (date?: Date | null) => void;
    onBlur?: () => void;
    onOpen?: () => void;
    onClose?: (event?: SyntheticEvent<Element, Event> | Event, reason?: CloseEventReason) => void;
    inputProps?: Omit<TextFieldProps, 'ref' | 'value' | 'onChange'>;
    inputRef?: RefObject<HTMLInputElement>;
    /**
     * Блокирует взаимодействие с элементом
     */
    disabled?: boolean;
    /**
     * Принимает только Date object, включая невалидную дату Invalid date
     */
    value?: Date | null;
    /**
     * Название класса, применяется к корневому компоненту
     */
    className?: string;
    /**
     * Определяет размер компонента
     * @default 	'medium'
     */
    size?: 'small' | 'medium';
    /**
     * Название текстового поля
     */
    label?: ReactNode;
    /**
     * Лейбл будет помечен как обязательный
     */
    required?: boolean;
    /**
     * Вспомогательный текст под полем ввода
     */
    helperText?: ReactNode;
    /**
     * Включает/отключает резервирование места под helperText
     */
    hideHelperText?: boolean;
    /**
     * Элемент в начале инпута
     */
    startAdornment?: ReactNode;
} & Pick<TextFieldProps, 'label' | 'required' | 'helperText'>;
