/// <reference types="react" />
import type { BoxProps } from '../Box/Box.types';
import type { Props } from '../_utils/types';
export interface CalendarProps extends BodyProps {
    /**
     * Click handler for navigating the calendar, with arrows or selects.
     */
    onNavigate?: (date: Date) => void;
}
export interface BodyProps extends Props {
    /**
     * Controls the month displayed on the calendar, can be different from selected.
     * @default new Date()
     * @since 10.19.0
     */
    displayDate?: Date;
    /**
     * @param {Date} date - start of a day in the year
     * @param {Date} today - start of today in the context of the time zone
     * @returns {Boolean}
     * Provide a function to disable dates.
     * @since 10.19.0
     */
    disabledDate?: (date: Date, today: Date) => boolean;
    /**
     * Provide a function to disable dates. Must return a boolean.
     * @since 10.19.0
     */
    monthRef?: React.Ref<HTMLDivElement>;
    /**
     * Click handler for selecting a day.
     * @since 10.19.0
     */
    onSelect?: (day: Date) => void;
    /**
     * End of the highlight of a day range
     * @since 10.19.0
     */
    selectedEnd?: Date;
    /**
     * Start of the highlight of a day range
     * @since 10.19.0
     */
    selectedStart?: Date;
    yearRef?: React.Ref<HTMLDivElement>;
}
export interface DayProps extends Props {
    /**
     * @since 10.19.0
     */
    disabled?: boolean;
    /**
     * @since 10.19.0
     */
    isCurrentMonth?: boolean;
    /**
     * @since 10.19.0
     */
    isRangeEnd?: boolean;
    /**
     * @since 10.19.0
     */
    isRangeStart?: boolean;
    /**
     * @since 10.19.0
     */
    isToday?: boolean;
    /**
     * @since 10.19.0
     */
    onClick?: (event: React.MouseEvent<HTMLElement>) => void;
    /**
     * @since 10.19.0
     */
    selected?: boolean;
}
export interface DayProps extends Props {
    /**
     * @since 10.19.0
     */
    disabled?: boolean;
    /**
     * @since 10.19.0
     */
    isCurrentMonth?: boolean;
    /**
     * @since 10.19.0
     */
    isRangeEnd?: boolean;
    /**
     * @since 10.19.0
     */
    isRangeStart?: boolean;
    /**
     * @since 10.19.0
     */
    isToday?: boolean;
    /**
     * @since 10.19.0
     */
    onClick?: (event: React.MouseEvent<HTMLElement>) => void;
    /**
     * @since 10.19.0
     */
    selected?: boolean;
}
export interface SelectProps extends Props {
    /**
     * @since 10.19.0
     */
    block?: boolean;
    /**
     * @since 10.19.0
     */
    label: string;
    /**
     * @since 10.19.0
     */
    onSelect: (selection: number) => any;
    /**
     * Expects an array of objects with the following shape
     * @since 10.19.0
     */
    options?: SelectOption[];
    /**
     * Identifier of the selected value
     * @since 10.19.0
     */
    selected?: number;
}
export interface NextPrevProps extends Props {
    /**
     * @since 10.19.0
     */
    onClick: () => void;
}
export interface SelectOption {
    /**
     * @since 10.19.0
     */
    label: string;
    /**
     * @since 10.19.0
     */
    value: number;
}
export interface CalendarContainerProps extends Props {
}
export interface NavigationProps extends Omit<BoxProps, 'as'> {
}
export interface WeekdaysProps extends Props {
}
export interface WeekProps extends Props {
}
