import { DatePickerProps as AriaDatePickerProps, DateValue } from 'react-aria-components/DatePicker';
import { CalendarProps } from './Calendar';
import { ContextValue } from 'react-aria-components/slots';
import { StyleProps } from './style-utils';
import { ReactElement, ReactNode } from 'react';
import { GlobalDOMAttributes, HelpTextProps, SpectrumLabelableProps } from '@react-types/shared';
import { PopoverProps } from 'react-aria-components/Popover';
export interface DatePickerProps<T extends DateValue> extends Omit<AriaDatePickerProps<T>, 'children' | 'className' | 'style' | 'render' | keyof GlobalDOMAttributes>, Pick<CalendarProps<T>, 'createCalendar' | 'pageBehavior' | 'firstDayOfWeek' | 'isDateUnavailable'>, Pick<PopoverProps, 'shouldFlip'>, StyleProps, SpectrumLabelableProps, HelpTextProps {
    /**
     * The size of the DateField.
     *
     * @default 'M'
     */
    size?: 'S' | 'M' | 'L' | 'XL';
    /**
     * The maximum number of months to display at once in the calendar popover, if screen space permits.
     * @default 1
     */
    maxVisibleMonths?: number;
    /**
     * The error message to display when the calendar is invalid.
     */
    errorMessage?: ReactNode;
}
export declare const DatePickerContext: import("react").Context<ContextValue<Partial<DatePickerProps<any>>, HTMLDivElement>>;
export declare const timeField: import("../style/types").StyleString<"flexGrow" | "flexShrink" | "minWidth" | "width">;
/**
 * DatePickers combine a DateField and a Calendar popover to allow users to enter or select a date and time value.
 */
export declare const DatePicker: <T extends DateValue>(props: DatePickerProps<T> & import("react").RefAttributes<HTMLDivElement>) => ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | null;
export declare function CalendarPopover(props: Omit<PopoverProps, 'children'> & {
    children: ReactNode;
}): ReactElement;
export declare function CalendarButton(props: {
    isOpen: boolean;
    size: 'S' | 'M' | 'L' | 'XL';
    setButtonHasFocus: (hasFocus: boolean) => void;
}): ReactElement;
