import { KeyboardEventHandler, MouseEventHandler, SyntheticEvent } from "react"; import { CalendarDate, DateValue } from "@internationalized/date"; interface BaseUseSelectionCalendarProps { hoveredDate?: DateValue | null; selectedDate?: SelectionVariantType | null; defaultSelectedDate?: SelectionVariantType; onSelectedDateChange?: (event: SyntheticEvent, selectedDate: SelectionVariantType) => void; isDaySelectable: (date?: DateValue) => boolean; onHoveredDateChange?: (event: SyntheticEvent, hoveredDate: DateValue | null) => void; } declare type SingleSelectionValueType = DateValue; declare type MultiSelectionValueType = DateValue[]; declare type RangeSelectionValueType = { startDate?: DateValue; endDate?: DateValue; }; declare type OffsetSelectionValueType = { startDate?: DateValue; endDate?: DateValue; }; export interface UseOffsetSelectionCalendarProps extends Omit, "startDateOffset" | "endDateOffset"> { selectionVariant: "offset"; startDateOffset?: (date: DateValue) => DateValue; endDateOffset?: (date: DateValue) => DateValue; } export interface UseRangeSelectionCalendarProps extends BaseUseSelectionCalendarProps { selectionVariant: "range"; } export interface UseMultiSelectionCalendarProps extends BaseUseSelectionCalendarProps { selectionVariant: "multiselect"; } export interface UseSingleSelectionCalendarProps extends BaseUseSelectionCalendarProps { selectionVariant: "default"; } export declare type useSelectionCalendarProps = UseSingleSelectionCalendarProps | UseMultiSelectionCalendarProps | UseRangeSelectionCalendarProps | UseOffsetSelectionCalendarProps; export declare function useSelectionCalendar(props: useSelectionCalendarProps): { state: { selectedDate: CalendarDate | import("@internationalized/date").CalendarDateTime | import("@internationalized/date").ZonedDateTime | RangeSelectionValueType | OffsetSelectionValueType | MultiSelectionValueType | null | undefined; hoveredDate: CalendarDate | import("@internationalized/date").CalendarDateTime | import("@internationalized/date").ZonedDateTime | null | undefined; }; helpers: { setSelectedDate: (event: SyntheticEvent, newSelectedDate: DateValue) => void; isSelected: (date: DateValue) => boolean; setHoveredDate: (event: SyntheticEvent, date: DateValue | null) => void; isHovered: (date: DateValue) => boolean; isSelectedSpan: (date: DateValue) => boolean; isHoveredSpan: (date: DateValue) => boolean; isSelectedStart: (date: DateValue) => boolean; isSelectedEnd: (date: DateValue) => boolean; isHoveredOffset: (date: DateValue) => boolean; }; }; export declare function useSelectionDay({ date }: { date: DateValue; }): { handleClick: MouseEventHandler; handleKeyDown: KeyboardEventHandler; handleMouseOver: MouseEventHandler; handleMouseLeave: MouseEventHandler; status: { selected: boolean; selectedSpan: boolean; hoveredSpan: boolean; selectedStart: boolean; selectedEnd: boolean; hovered: boolean; hoveredOffset: boolean; }; dayProps: { className: string; "aria-pressed": string | undefined; "aria-disabled": string | undefined; }; }; export {};