/// <reference types="react" />
import type { Locale } from '../_hooks/I18n';
import type { Props } from '../_utils/types';
export declare type SegmentType = 'day' | 'month' | 'year';
declare type DateInputVariant = '' | 'error' | 'disabled';
export interface DateSegmentProps {
    /**
     * @since 10.19.0
     */
    disabled?: boolean;
    /**
     * @since 10.19.0
     */
    maxLength: number;
    /**
     * @since 10.19.0
     */
    maxValue: number;
    /**
     * @since 10.19.0
     */
    minValue: number;
    /**
     * @since 10.19.0
     */
    nextRef?: React.RefObject<HTMLDivElement>;
    /**
     * @since 10.19.0
     */
    onChange?: (value: number) => void;
    /**
     * @since 10.19.0
     */
    placeholder: string;
    /**
     * @since 10.19.0
     */
    prevRef?: React.RefObject<HTMLDivElement>;
    /**
     * @since 10.19.0
     */
    tabIndex?: number;
    /**
     * @since 10.19.0
     */
    type: SegmentType;
    /**
     * @since 10.19.0
     */
    value?: number;
}
export interface DateInputConfig {
    /**
     * @since 10.19.0
     */
    onChange: (date: Date | null) => void;
    /**
     * @since 10.19.0
     */
    value?: Date | null;
    /**
     * @since 10.19.0
     */
    log?: string;
}
export interface DateInputApi {
    /**
     * @since 10.19.0
     */
    clear: () => void;
    /**
     * @since 10.19.0
     */
    day: number;
    /**
     * @since 10.19.0
     */
    hasValues: boolean;
    /**
     * @since 10.19.0
     */
    month: number;
    /**
     * @since 10.19.0
     */
    setDay: (value: number) => void;
    /**
     * @since 10.19.0
     */
    setMonth: (value: number) => void;
    /**
     * @since 10.19.0
     */
    setYear: (value: number) => void;
    /**
     * @since 10.19.0
     */
    year: number;
}
export declare type Segments = {
    [key in SegmentType]: number;
};
export declare type DateInputLocales = {
    [key in Locale]?: {
        delimiter?: string[];
        segments?: [SegmentType, SegmentType, SegmentType];
        placeholders?: {
            year: string;
            month: string;
            day: string;
        };
    };
};
export interface DateInputProps extends Props, Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
    /**
     * @since 10.19.0
     */
    clearRef: React.RefObject<HTMLButtonElement>;
    /**
     * Error variant
     * @default false
     * @since 10.19.0
     */
    error?: boolean;
    /**
     * @since 10.19.0
     */
    disabled?: boolean;
    /**
     * @param {Date | null} date
     * Change handler for when a valid date is entered
     * @since 10.19.0
     */
    onChange?: (date: Date | null) => void;
    /**
     * @since 10.19.0
     */
    onChangeSegment?: (type: SegmentType, value: number) => void;
    /**
     * @param {MouseEvent} e
     * Handler for when the clear icon is clicked
     * @since 10.19.0
     */
    onClear?: (e: React.MouseEvent<HTMLButtonElement>) => void;
    /**
     * @since 10.19.0
     */
    segmentRefs?: {
        segmentOne?: React.RefObject<HTMLDivElement>;
        segmentTwo?: React.RefObject<HTMLDivElement>;
        segmentThree?: React.RefObject<HTMLDivElement>;
    };
    /**
     * @since 10.19.0
     */
    tabIndex?: number;
    /**
     * Date value for the input
     * @since 10.19.0
     */
    value?: Date;
    /**
     * @since 10.19.0
     */
    variant?: DateInputVariant;
}
export {};
