import { type WeekdayLabel } from '../date/dateLocale'; import type { CalendarDate, DateCalendar, DateValue, FirstDayOfWeek } from '../date/types'; export type CalendarCellModel = Readonly<{ gridKey: string; value: DateValue | null; calendarDate: CalendarDate | null; dayLabel: string; accessibleLabel: string; isAdjacentMonth: boolean; isFocused: boolean; isSelected: boolean; isToday: boolean; isUnavailable: boolean; isOutOfRange: boolean; isOutsideSupportedRange: boolean; isDisabled: boolean; isReadOnly: boolean; isFocusable: boolean; }>; export type CalendarGridModel = Readonly<{ cells: readonly CalendarCellModel[]; heading: string; firstDayOfWeek: FirstDayOfWeek; monthStartValue: DateValue; weekdayLabels: readonly WeekdayLabel[]; }>; export type CreateCalendarGridModelOptions = Readonly<{ focusedValue: DateValue; visibleMonthValue?: DateValue; selectedValue?: DateValue | null; todayValue?: DateValue; minValue?: DateValue; maxValue?: DateValue; isDateUnavailable?: (value: DateValue) => boolean; locale: string; calendar: DateCalendar; firstDayOfWeek?: FirstDayOfWeek; disabled?: boolean; readOnly?: boolean; }>; export declare function createCalendarGridModel({ focusedValue, visibleMonthValue, selectedValue, todayValue, minValue, maxValue, isDateUnavailable, locale, calendar, firstDayOfWeek, disabled, readOnly, }: CreateCalendarGridModelOptions): CalendarGridModel; export declare function canSelectCalendarCell(cell: CalendarCellModel): cell is CalendarCellModel & Readonly<{ value: DateValue; }>; export type ResolveInitialCalendarFocusOptions = Readonly<{ value?: DateValue | null; defaultFocusedValue?: DateValue; today: DateValue; minValue?: DateValue; maxValue?: DateValue; }>; export declare function resolveInitialCalendarFocus({ value, defaultFocusedValue, today, minValue, maxValue, }: ResolveInitialCalendarFocusOptions): DateValue; export type CalendarFocusMovement = Readonly<{ unit: 'day' | 'week' | 'month' | 'year'; amount: number; }> | Readonly<{ unit: 'week-start' | 'week-end'; }>; export type MoveCalendarFocusOptions = Readonly<{ calendar: DateCalendar; firstDayOfWeek: FirstDayOfWeek; }>; export declare function moveCalendarFocus(value: DateValue, movement: CalendarFocusMovement, { calendar, firstDayOfWeek }: MoveCalendarFocusOptions): DateValue; export declare function getHorizontalDayDelta(key: 'ArrowLeft' | 'ArrowRight', direction: 'ltr' | 'rtl'): -1 | 1; export type CalendarState = Readonly<{ focusedValue: DateValue; visibleMonthValue: DateValue; }>; export type CalendarStateAction = Readonly<{ type: 'move-focus'; movement: CalendarFocusMovement; calendar: DateCalendar; firstDayOfWeek: FirstDayOfWeek; }> | Readonly<{ type: 'set-focused-value'; value: DateValue; calendar: DateCalendar; }>; export declare function createCalendarState(focusedValue: DateValue, calendar: DateCalendar): CalendarState; export declare function calendarStateReducer(state: CalendarState, action: CalendarStateAction): CalendarState; //# sourceMappingURL=calendarModel.d.ts.map