import { DataTrackingId, IanaZone } from '../../types';
import { MaskedDateRangeInputProps } from './internal/MaskedDateRangeInput';
import { DateMode } from '../DateFieldSingle/types';
export type DateFieldRangeChange = {
    /**
     * The start date in ISO 8601 format.
     * @example "2025-03-22"
     */
    startDate: string | null;
    /**
     * The end date in ISO 8601 format.
     * @example "2025-07-02"
     */
    endDate: string | null;
    /**
     * Whether the input field contains two parsable dates.
     * This is not the same as the date range being valid.
     *
     */
    isInputValid: boolean;
    /**
     * Whether the input field is empty.
     */
    isInputEmpty: boolean;
    /**
     * Whether the start and end dates are valid according to the constraints.
     * Constraints include:
     * - Required
     * - Unavailable dates
     * - Unavailable days of the week
     * - Min date
     * - Max date
     */
    isDateRangeValid: boolean;
};
export type DateFieldRangeChangeHandler = (change: DateFieldRangeChange) => void;
export type DateFieldRangeValue = {
    startDate: string | null;
    endDate: string | null;
} | null;
export type DateFieldRangeProps = Omit<MaskedDateRangeInputProps, "onChange" | "value" | "autoComplete" | "onClick" | "onKeyDown" | "ref" | "required" | "startDate" | "endDate" | "defaultValue" | "onFocus" | "onBlur"> & {
    value?: DateFieldRangeValue;
    defaultValue?: DateFieldRangeValue;
    onChange?: DateFieldRangeChangeHandler;
    mode?: Extract<DateMode, "mm/dd/yyyy" | "dd/mm/yyyy">;
    disableHint?: boolean;
    disableCalendar?: boolean;
    unavailable?: {
        dates?: string[];
        daysOfWeek?: (1 | 2 | 3 | 4 | 5 | 6 | 7)[];
    };
    minDate?: string;
    maxDate?: string;
    required?: boolean;
    onFocus?: (event: React.FocusEvent) => void;
    onBlur?: (event: React.FocusEvent) => void;
    /**
     * The IANA timezone to use for the calendar. Controls the meaning of the "Today"
     * button and which month/year is initially displayed. When the timezone differs
     * from the user's locale timezone, a disambiguation message is shown below the calendar.
     * @example "America/Los_Angeles"
     */
    timezone?: IanaZone;
} & DataTrackingId;
/**
 * DateFieldRange component for entering a start and end date via a masked
 * text input, with an optional popover calendar for picking the range
 * visually.
 *
 * Features:
 * - Masked start/end date input with configurable mm/dd/yyyy or dd/mm/yyyy mode
 * - Optional popover range calendar
 * - Min/max date and unavailable-date/day-of-week constraints applied to both ends
 * - Reports input validity and range validity separately via `onChange`
 * - Full keyboard support (arrow-down opens the calendar from the input)
 *
 * @example
 * <DateFieldRange
 *   label="Trip dates"
 *   value={{ startDate: "2025-07-02", endDate: "2025-07-10" }}
 *   onChange={({ startDate, endDate, isDateRangeValid }) =>
 *     console.log(startDate, endDate, isDateRangeValid)
 *   }
 * />
 */
export declare const DateFieldRange: {
    (props: DateFieldRangeProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
