/**
 * All credit goes to [React Spectrum](https://github.com/adobe/react-spectrum)
 * We improved the Calendar from Stately [useRangeCalendar](https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/calendar/src/useRangeCalendar.ts)
 * to work with Reakit System
 */
import * as React from "react";
import { InputBase, RangeValue } from "@react-types/shared";
import { CalendarActions, CalendarState } from "./CalendarState";
export declare function useRangeCalendarState(props?: RangeCalendarInitialState): RangeCalendarStateReturn;
export declare type RangeCalendarState = CalendarState & {
    dateRangeValue: RangeValue<Date> | null;
    anchorDate: Date | null;
    highlightedRange: RangeValue<Date> | null;
    isRangeCalendar: boolean;
};
export declare type RangeCalendarActions = CalendarActions & {
    setDateRangeValue: (value: RangeValue<Date>) => void;
    setAnchorDate: React.Dispatch<React.SetStateAction<Date | null>>;
    selectDate: (date: Date) => void;
    selectFocusedDate: () => void;
    highlightDate: (date: Date) => void;
};
declare type Range = {
    /** The start value of the range. */
    start: string;
    /** The end value of the range. */
    end: string;
};
declare type RangeValueBase = {
    /** The current value (controlled). */
    value?: Range;
    /** The default value (uncontrolled). */
    defaultValue?: Range;
    /** Handler that is called when the value changes. */
    onChange?: (value: Range) => void;
};
declare type RangeValueMinMax = {
    /** The smallest value allowed. */
    minValue?: string;
    /** The largest value allowed. */
    maxValue?: string;
};
export declare type RangeCalendarInitialState = RangeValueBase & RangeValueMinMax & InputBase & {
    /**
     * Whether the element should receive focus on render.
     */
    autoFocus?: boolean;
    /**
     * Id for the calendar grid
     */
    id?: string;
};
export declare type RangeCalendarStateReturn = RangeCalendarState & RangeCalendarActions;
export {};
