import React__default, { MutableRefObject } from 'react';
import { DateValue } from '@internationalized/date';
import { AriaButtonProps } from '@react-aria/button';
import { AriaDateRangePickerProps } from '@react-aria/datepicker';
import { DateRangePickerState } from '@react-stately/datepicker';
import { CalendarProps } from '@react-types/calendar';
import { AriaDialogProps } from '@react-types/dialog';
import { GroupDOMAttributes, DOMAttributes } from '@react-types/shared';
import { ElementProps } from '../types/common.types.mjs';
import { RangeCalendarProps } from '../calendar/range-calendar.mjs';
import { DateRangeFieldProps } from '../input/date-range-field.mjs';
import { TimeInputProps } from '../input/time-input.mjs';
import '../calendar-ClXhr701.mjs';
import '@react-aria/calendar';
import '../calendar/calendar-context.mjs';
import '@react-stately/calendar';
import '../types/theme.types.mjs';
import '../input/date-field.mjs';
import '../input/date-input-segment.mjs';
import '../input/date-input-group.mjs';

interface UseDateRangePickerProps<T extends DateValue = DateValue> extends AriaDateRangePickerProps<T> {
    dateInputProps?: CalendarProps<T>;
    calendarProps?: RangeCalendarProps<T>;
    timeInputProps?: TimeInputProps;
}
type UseDateRangePickerReturn<T extends DateValue = DateValue> = {
    ref: MutableRefObject<HTMLDivElement>;
    state: DateRangePickerState;
    getTriggerProps: ElementProps<'button'>;
    getAriaTriggerProps: AriaButtonProps<'button'>;
    getDateRangeProps: {
        state: DateRangePickerState;
        label?: React__default.ReactNode;
        groupProps: GroupDOMAttributes;
        labelProps: DOMAttributes;
        getStartDateFieldProps: DateRangeFieldProps<T>;
        getEndDateFieldProps: DateRangeFieldProps<T>;
    };
    getTimeInputRangeProps: {
        getStartTimeInputProps: TimeInputProps;
        getEndTimeInputProps: TimeInputProps;
    };
    getCalendarProps: RangeCalendarProps<T>;
    getDialogProps: AriaDialogProps;
};
declare const useDateRangePicker: <T extends DateValue>(props?: UseDateRangePickerProps<T>) => UseDateRangePickerReturn<T>;

export { type UseDateRangePickerProps, useDateRangePicker };
