import * as React from 'react';
import type { HTMLAttributesWithRootRef } from '../../types';
import { type CalendarDaysProps, type CalendarDaysTestsProps } from '../CalendarDays/CalendarDays';
import { type CalendarHeaderProps, type CalendarHeaderTestsProps } from '../CalendarHeader/CalendarHeader';
import { type CalendarDoneButtonProps, type CalendarTimeProps, type CalendarTimeTestsProps } from '../CalendarTime/CalendarTime';
export type CalendarTestsProps = CalendarDaysTestsProps & CalendarHeaderTestsProps & CalendarTimeTestsProps;
export interface CalendarProps extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange' | 'defaultValue'>, Pick<CalendarTimeProps, 'changeHoursLabel' | 'changeMinutesLabel'>, Pick<CalendarHeaderProps, 'prevMonthLabel' | 'nextMonthLabel' | 'changeMonthLabel' | 'changeYearLabel' | 'onNextMonth' | 'onPrevMonth' | 'prevMonthIcon' | 'nextMonthIcon' | 'prevMonthProps' | 'nextMonthProps'>, Pick<CalendarDaysProps, 'dayProps' | 'listenDayChangesForUpdate' | 'renderDayContent'>, CalendarDoneButtonProps, CalendarTestsProps {
    /**
     * Текущая выбранная дата.
     */
    value?: Date | null;
    /**
     * Начальная дата при монтировании.
     */
    defaultValue?: Date | null;
    /**
     * Запрещает выбор даты в прошлом.
     * Применяется, если не заданы `shouldDisableDate` и `disableFuture`.
     */
    disablePast?: boolean;
    /**
     * Запрещает выбор даты в будущем.
     * Применяется, если не задано `shouldDisableDate`.
     */
    disableFuture?: boolean;
    /**
     * Включает выбор времени.
     */
    enableTime?: boolean;
    /**
     * Отключает селекторы выбора месяца/года.
     */
    disablePickers?: boolean;
    /**
     * `aria-label` для изменения дня.
     *
     * @deprecated Будет удалeно в **VKUI v8**.
     * Использовалось для задания aria-label для контейнера дней в календаре.
     * Теперь этот контейнер является таблицей (с помощью role="grid") и
     * в aria-label рендерится текущий открытый в календаре месяц и год.
     */
    changeDayLabel?: string;
    /**
     * День недели, с которого начинается неделя.
     */
    weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
    /**
     * Показывать дни соседних месяцев.
     */
    showNeighboringMonth?: boolean;
    /**
     * Размер календаря.
     */
    size?: 's' | 'm';
    /**
     * Обработчик изменения выбранной даты.
     */
    onChange?: (value?: Date) => void;
    /**
     * Функция для проверки запрета выбора даты.
     */
    shouldDisableDate?: (value: Date) => boolean;
    /**
     * Дата отображаемого месяца.
     * При использовании обновление даты должно происходить вне компонента.
     */
    viewDate?: Date;
    /**
     * Обработчик изменения даты в шапке календаря.
     */
    onHeaderChange?: (value: Date) => void;
    /**
     * Минимальные дата и время, которые можно выбрать.
     * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.
     */
    minDateTime?: Date;
    /**
     * Максимальные дата и время, которые можно выбрать.
     * Применяется, если не заданы `shouldDisableDate` и `disablePast`/`disableFuture`.
     */
    maxDateTime?: Date;
    /**
     * Часовой пояс для отображения даты.
     */
    timezone?: string;
}
/**
 * @see https://vkui.io/components/calendar
 */
export declare const Calendar: ({ getRootRef, "value": valueProp, defaultValue, onChange, disablePast, disableFuture, shouldDisableDate, onDoneButtonClick, enableTime, doneButtonText, doneButtonDisabled, doneButtonShow, DoneButton, weekStartsOn, disablePickers, "aria-label": ariaLabel, changeHoursLabel, changeMinutesLabel, prevMonthLabel, nextMonthLabel, changeMonthLabel, changeYearLabel, showNeighboringMonth, size, "viewDate": externalViewDate, onHeaderChange, onNextMonth, onPrevMonth, prevMonthIcon, nextMonthIcon, prevMonthProps, nextMonthProps, dayProps, listenDayChangesForUpdate, renderDayContent, minDateTime, maxDateTime, timezone, minutesTestId, hoursTestId, doneButtonTestId, prevMonthButtonTestId, nextMonthButtonTestId, monthDropdownTestId, yearDropdownTestId, dayTestId, ...props }: CalendarProps) => React.ReactNode;
//# sourceMappingURL=Calendar.d.ts.map