import { DataTrackingId, IanaZone } from '../../types';
import { MaskedDateInputProps } from './internal/MaskedDateInput';
import { DateMode } from './types';
export type DateFieldSingleProps = Omit<MaskedDateInputProps, "onChange" | "value" | "autoComplete" | "onClick" | "onKeyDown" | "ref" | "lastValidDate" | "setLastValidDate" | "required" | "onFocus" | "onBlur"> & {
    value?: string | null;
    defaultValue?: string | null;
    onChange?: DateFieldSingleChangeHandler;
    onFocus?: (event: React.FocusEvent) => void;
    onBlur?: (event: React.FocusEvent) => void;
    mode?: Extract<DateMode, "mm/dd/yyyy" | "dd/mm/yyyy">;
    disableHint?: boolean;
    disableCalendar?: boolean;
    unavailable?: {
        /**
         * The specific dates that are unavailable. ISO 8601 format.
         * @example ["2025-07-02"]
         */
        dates?: string[];
        /**
         * The days of the week that are unavailable.
         * (1-7, where 1 is Monday and 7 is Sunday)
         */
        daysOfWeek?: (1 | 2 | 3 | 4 | 5 | 6 | 7)[];
    };
    minDate?: string;
    maxDate?: string;
    required?: boolean;
    /**
     * 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;
export type DateFieldSingleChange = {
    /**
     * The date in ISO 8601 format.
     * @example "2025-07-02"
     */
    date: string | null;
    /**
     * Whether the input is valid. That is, it matches the format and is not empty.
     * This does not mean that the date is valid according to the constraints.
     */
    isInputValid: boolean;
    /**
     * Whether the input is empty.
     */
    isInputEmpty: boolean;
    /**
     * Whether the date is valid according to the constraints.
     * Constraints include:
     * - Required
     * - Unavailable dates
     * - Unavailable days of the week
     * - Min date
     * - Max date
     */
    isDateValid: boolean;
};
export type DateFieldSingleChangeHandler = (change: DateFieldSingleChange) => void;
/**
 * DateFieldSingle component for entering a single date via a masked text
 * input, with an optional popover calendar for picking the date visually.
 *
 * Features:
 * - Masked date input with configurable mm/dd/yyyy or dd/mm/yyyy mode
 * - Optional popover calendar (disable with `disableCalendar`)
 * - Min/max date and unavailable-date/day-of-week constraints
 * - Timezone-aware "Today" navigation via `timezone`
 * - Reports input validity and constraint validity separately via `onChange`
 * - Full keyboard support (arrow-down opens the calendar from the input)
 *
 * @example
 * <DateFieldSingle
 *   label="Appointment date"
 *   value="2025-07-02"
 *   onChange={({ date, isDateValid }) => console.log(date, isDateValid)}
 *   minDate="2025-01-01"
 * />
 */
export declare const DateFieldSingle: {
    (props: DateFieldSingleProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
