import { CalendarProps as AriaCalendarProps, DateValue } from 'react-aria-components/Calendar';
import { AriaCalendarGridProps } from 'react-aria/useCalendar';
import { ButtonProps } from 'react-aria-components/Button';
import { ContextValue } from 'react-aria-components/slots';
import { GlobalDOMAttributes } from '@react-types/shared';
import { StyleProps } from './style-utils';
import React, { ReactElement, ReactNode } from 'react';
export interface CalendarProps<T extends DateValue> extends Omit<AriaCalendarProps<T>, 'visibleDuration' | 'style' | 'className' | 'render' | 'styles' | 'children' | keyof GlobalDOMAttributes>, StyleProps {
    /**
     * The error message to display when the calendar is invalid.
     */
    errorMessage?: ReactNode;
    /**
     * The number of months to display at once.
     * @default 1
     */
    visibleMonths?: number;
}
export declare const CalendarContext: React.Context<ContextValue<Partial<CalendarProps<any>>, HTMLDivElement>>;
/**
 * Calendars display a grid of days in one or more months and allow users to select a single date.
 */
export declare const Calendar: <T extends DateValue>(props: CalendarProps<T> & React.RefAttributes<HTMLDivElement>) => ReactElement<unknown, string | React.JSXElementConstructor<any>> | null;
export declare const CalendarHeader: () => ReactElement<unknown, string | React.JSXElementConstructor<any>>;
export declare const CalendarGrid: (props: Omit<AriaCalendarGridProps, "children"> & {
    children?: ReactNode;
} & {
    months: number;
}) => ReactElement<unknown, string | React.JSXElementConstructor<any>>;
export declare const CalendarButton: (props: Omit<ButtonProps, "children"> & {
    children: ReactNode;
}) => ReactElement<unknown, string | React.JSXElementConstructor<any>>;
