import React from 'react';
import PropTypes from 'prop-types';
import DateInputFoundation, { DateInputAdapter, DateInputFoundationProps, RangeType, InsetInputChangeProps, InsetInputChangeFoundationProps } from '@douyinfe/semi-foundation/lib/es/datePicker/inputFoundation';
import { noop } from '@douyinfe/semi-foundation/lib/es/utils/function';
import { ValueType } from '@douyinfe/semi-foundation/lib/es/datePicker/foundation';
import BaseComponent, { BaseProps } from '../_base/baseComponent';
export interface DateInputProps extends DateInputFoundationProps, BaseProps {
    insetLabel?: React.ReactNode;
    prefix?: React.ReactNode;
    onClick?: (e: React.MouseEvent<HTMLInputElement>) => void;
    onChange?: (value: string, e: React.MouseEvent<HTMLInputElement>) => void;
    onEnterPress?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    onBlur?: (e: React.MouseEvent<HTMLInputElement>) => void;
    onFocus?: (e: React.MouseEvent<HTMLInputElement>, rangeType?: RangeType) => void;
    onClear?: (e: React.MouseEvent<HTMLDivElement>) => void;
    onInsetInputChange?: (options: InsetInputChangeProps) => void;
    value?: Date[];
    inputRef?: React.RefObject<HTMLInputElement>;
    rangeInputStartRef?: React.RefObject<HTMLInputElement>;
    rangeInputEndRef?: React.RefObject<HTMLInputElement>;
    showClearIgnoreDisabled?: boolean;
}
export default class DateInput extends BaseComponent<DateInputProps, {}> {
    static propTypes: {
        borderless: PropTypes.Requireable<boolean>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onEnterPress: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onClear: PropTypes.Requireable<(...args: any[]) => any>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        value: PropTypes.Requireable<any[]>;
        disabled: PropTypes.Requireable<boolean>;
        type: PropTypes.Requireable<"date" | "month" | "dateTime" | "dateRange" | "year" | "monthRange" | "dateTimeRange">;
        showClear: PropTypes.Requireable<boolean>;
        format: PropTypes.Requireable<string>;
        inputStyle: PropTypes.Requireable<object>;
        inputReadOnly: PropTypes.Requireable<boolean>;
        insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        validateStatus: PropTypes.Requireable<string>;
        prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        prefixCls: PropTypes.Requireable<string>;
        dateFnsLocale: PropTypes.Validator<object>;
        placeholder: PropTypes.Requireable<NonNullable<string | any[]>>;
        rangeInputFocus: PropTypes.Requireable<NonNullable<string | boolean>>;
        rangeInputStartRef: PropTypes.Requireable<object>;
        rangeInputEndRef: PropTypes.Requireable<object>;
        rangeSeparator: PropTypes.Requireable<string>;
        insetInput: PropTypes.Requireable<NonNullable<boolean | object>>;
        insetInputValue: PropTypes.Requireable<object>;
        defaultPickerValue: PropTypes.Requireable<NonNullable<string | number | object>>;
    };
    static defaultProps: {
        borderless: boolean;
        showClear: boolean;
        onClick: typeof noop;
        onChange: typeof noop;
        onEnterPress: typeof noop;
        onBlur: typeof noop;
        onClear: typeof noop;
        onFocus: typeof noop;
        type: string;
        inputStyle: {};
        inputReadOnly: boolean;
        prefixCls: "semi-datepicker";
        rangeSeparator: " ~ ";
    };
    foundation: DateInputFoundation;
    constructor(props: DateInputProps);
    get adapter(): DateInputAdapter;
    componentDidMount(): void;
    componentWillUnmount(): void;
    formatText(value: ValueType): string;
    handleChange: (value: string, e: React.ChangeEvent<HTMLInputElement>) => void;
    handleEnterPress: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    handleInputClear: (e: React.MouseEvent<HTMLDivElement>) => void;
    handleRangeInputChange: (rangeStart: string, rangeEnd: string, e: React.ChangeEvent) => void;
    handleRangeInputClear: React.MouseEventHandler<HTMLDivElement>;
    handleRangeInputEnterPress: (e: React.KeyboardEvent<HTMLInputElement>, rangeStart: string, rangeEnd: string) => void;
    handleRangeInputEndKeyPress: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    handleRangeInputFocus: (e: React.MouseEvent<HTMLElement>, rangeType: RangeType) => void;
    handleRangeStartFocus: React.MouseEventHandler<HTMLElement>;
    handleInsetInputChange: (options: InsetInputChangeFoundationProps) => void;
    getRangeInputValue: (rangeStart: string, rangeEnd: string) => string;
    renderRangePrefix(): React.JSX.Element;
    renderRangeSeparator(rangeStart: string, rangeEnd: string): React.JSX.Element;
    renderRangeClearBtn(rangeStart: string, rangeEnd: string): React.JSX.Element;
    renderRangeSuffix(suffix: React.ReactNode): React.JSX.Element;
    renderRangeInput(rangeProps: DateInputProps): React.JSX.Element;
    isRenderMultipleInputs(): boolean;
    renderInputInset(): React.JSX.Element;
    renderTriggerInput(): React.JSX.Element;
    render(): React.JSX.Element;
}
