import type { BaseProps, NoChildrenProp, TestIdProp } from '../../types';
import type { FormControlProps } from '../FormControl';
export interface DateTimeProperties extends TestIdProp, BaseProps {
    /** Date as ISO8601 string, timestamp or native Date object. Defines minimum available value that can be set by the user. */
    min?: string | number | Date;
    /** Date as ISO8601 string, timestamp or native Date object. Defines maximum available value that can be set by the user. */
    max?: string | number | Date;
    /**
     * Sets DOM id for the control and associates label element via 'for' attribute.
     * If an id is not pass, a random id will be generated for any render.
     */
    id?: FormControlProps['id'];
    /** Set visual state based on a validation state. */
    status?: FormControlProps['status'];
    /** Pass a string or a fragment with an Icon and string. */
    label?: FormControlProps['label'];
    /** Visually hides the label region. */
    labelHidden?: FormControlProps['labelHidden'];
    /** It is recommended to pass a simple string to offer guidance. Text will be styled based on status prop. */
    info?: FormControlProps['info'];
    /** Indicate if the field is required. The browser defaults to false. */
    required?: FormControlProps['required'];
    /** Disable the control. The browser defaults to false. */
    disabled?: FormControlProps['disabled'];
    /** Makes the input non editable and non clickable. The browser defaults to false. */
    readOnly?: FormControlProps['readOnly'];
    /** Sets html name attribute for the underlying control. Useful for mapping to a data field. */
    name?: FormControlProps['name'];
    /** Automatically focuses the input on render. */
    autoFocus?: boolean;
    /**
     * IANA time zone string (e.g. "America/New_York").
     * When provided, today-highlight and the "Set today" / "Set now" button use
     * the provided time zone instead of the browser's local time zone.
     */
    timeZone?: string;
}
export type DateTimeValueErrorState = 'incomplete' | 'invalid';
export type DateTimeCallbackParameter = {
    valueAsISOString: string | undefined;
    valueAsTimestamp: number | undefined;
    state?: DateTimeValueErrorState;
};
export interface DateTimeCallbacks {
    /** Callback fired when input value changes. */
    onChange?: (value: DateTimeCallbackParameter) => void;
    /** Callback fired when the component gets focused. */
    onFocus?: (value: DateTimeCallbackParameter) => void;
    /** Callback fired when the component loses focus. */
    onBlur?: (value: DateTimeCallbackParameter) => void;
    /** Callback fired when AI suggestion is accepted/rejected */
    onResolveSuggestion?: FormControlProps['onResolveSuggestion'];
}
export default interface DateTimeProps extends DateTimeProperties, DateTimeCallbacks, NoChildrenProp {
    /**
     * Date as ISO8601 string, timestamp or native Date object.
     * Requires onChange prop to update value for controlled inputs.
     */
    value?: string | number | Date;
}
export type DateRangeCallbackParameter = {
    start: DateTimeCallbackParameter;
    end: DateTimeCallbackParameter;
};
export type AbsoluteVariant = 'date' | 'datetime' | 'time' | 'week' | 'month' | 'year' | 'monthyear' | 'quarteryear';
export type DateTimeVariant = AbsoluteVariant | 'relative';
export type DateTimeFormat = 'short' | 'medium' | 'long' | 'numeric' | 'long-numeric';
//# sourceMappingURL=DateTime.types.d.ts.map