import { DateTime } from 'luxon';
import { MaskedDateInputChange } from './MaskedDateInput';
export type DateFieldSingleStateChange = {
    date: DateTime | null;
    isInputValid: boolean;
    isInputEmpty: boolean;
};
export type DateFieldSingleStateChangeHandler = (change: DateFieldSingleStateChange) => void;
export type DateFieldSingleStateParam = {
    /**
     * The controlled value of the date field.
     */
    valueProp?: DateTime | null;
    /**
     * The default (uncontrolled) value of the date field.
     */
    defaultValueProp?: DateTime | null;
    /**
     * Callback for when the date changes.
     */
    onChange: DateFieldSingleStateChangeHandler;
};
export type DateFieldSingleState = {
    /**
     * The current value (DateTime) of the date field.
     */
    value: DateTime | null;
    /**
     * Sets the value of the date field.
     */
    setValue: (value: DateTime | null) => void;
    /**
     * Handles the change of the input field.
     */
    handleInputChange: (change: MaskedDateInputChange) => void;
    /**
     * Handles the selection of a date in the calendar.
     */
    handleCalendarSelection: (date: DateTime) => void;
};
/**
 * This is a hook for keeping state in sync between a date input and calendar.
 */
export declare function useDateFieldSingleState({ valueProp, defaultValueProp, onChange, }: DateFieldSingleStateParam): DateFieldSingleState;
