import type { CSSProperties, PropType } from 'vue';
import type { PickerLocale } from '.';
import type { SizeType } from '../../config-provider';
import type { AlignType } from '../../vc-align/interface';
import type { CustomFormat, DisabledTime, DisabledTimes, EventValue, PanelMode, PickerMode, RangeValue } from '../../vc-picker/interface';
import type { DateRender } from '../../vc-picker/panels/DatePanel/DateBody';
import type { MonthCellRender } from '../../vc-picker/panels/MonthPanel/MonthBody';
import type { SharedTimeProps } from '../../vc-picker/panels/TimePanel';
import type { RangeDateRender, RangeType } from '../../vc-picker/RangePicker';
import type { VueNode } from '../../_util/type';
declare function commonProps<DateType>(): {
    id: StringConstructor;
    dropdownClassName: StringConstructor;
    dropdownAlign: {
        type: PropType<AlignType>;
    };
    popupStyle: {
        type: PropType<CSSProperties>;
    };
    transitionName: StringConstructor;
    placeholder: StringConstructor;
    allowClear: {
        type: BooleanConstructor;
        default: any;
    };
    autofocus: {
        type: BooleanConstructor;
        default: any;
    };
    disabled: {
        type: BooleanConstructor;
        default: any;
    };
    tabindex: NumberConstructor;
    open: {
        type: BooleanConstructor;
        default: any;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: any;
    };
    /** Make input readOnly to avoid popup keyboard in mobile */
    inputReadOnly: {
        type: BooleanConstructor;
        default: any;
    };
    getPopupContainer: {
        type: PropType<(node: HTMLElement) => HTMLElement>;
    };
    panelRender: {
        type: PropType<(originPanel: VueNode) => VueNode>;
    };
    role: StringConstructor;
    name: StringConstructor;
    autocomplete: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
    };
    showToday: {
        type: BooleanConstructor;
        default: any;
    };
    showTime: {
        type: PropType<any>;
        default: any;
    };
    locale: {
        type: PropType<any>;
    };
    size: {
        type: PropType<any>;
    };
    bordered: {
        type: BooleanConstructor;
        default: any;
    };
    dateRender: {
        type: PropType<any>;
    };
    disabledDate: {
        type: PropType<(date: DateType) => boolean>;
    };
    mode: {
        type: PropType<PanelMode>;
    };
    picker: {
        type: PropType<PickerMode>;
    };
    valueFormat: StringConstructor;
};
export interface CommonProps<DateType> {
    id?: string;
    prefixCls?: string;
    dropdownClassName?: string;
    dropdownAlign?: AlignType;
    popupStyle?: CSSProperties;
    transitionName?: string;
    placeholder?: string;
    allowClear?: boolean;
    autofocus?: boolean;
    disabled?: boolean;
    tabindex?: number;
    open?: boolean;
    defaultOpen?: boolean;
    inputReadOnly?: boolean;
    suffixIcon?: VueNode;
    clearIcon?: VueNode;
    prevIcon?: VueNode;
    nextIcon?: VueNode;
    superPrevIcon?: VueNode;
    superNextIcon?: VueNode;
    getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
    panelRender?: (originPanel: VueNode) => VueNode;
    role?: string;
    name?: string;
    autocomplete?: string;
    direction?: 'ltr' | 'rtl';
    showToday?: boolean;
    showTime?: boolean | SharedTimeProps<DateType>;
    locale?: PickerLocale;
    size?: SizeType;
    bordered?: boolean;
    dateRender?: DateRender<DateType>;
    disabledDate?: (date: DateType) => boolean;
    mode?: PanelMode;
    picker?: PickerMode;
    valueFormat?: string;
}
declare function datePickerProps<DateType>(): {
    defaultPickerValue: {
        type: PropType<string | DateType>;
    };
    defaultValue: {
        type: PropType<string | DateType>;
    };
    value: {
        type: PropType<string | DateType>;
    };
    disabledTime: {
        type: PropType<DisabledTime<DateType>>;
    };
    format: {
        type: PropType<string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[]>;
    };
    renderExtraFooter: {
        type: PropType<(mode: PanelMode) => VueNode>;
    };
    showNow: {
        type: BooleanConstructor;
        default: any;
    };
    monthCellRender: {
        type: PropType<any>;
    };
    monthCellContentRender: {
        type: PropType<any>;
    };
};
export interface DatePickerProps<DateType> {
    defaultPickerValue?: DateType | string;
    defaultValue?: DateType | string;
    value?: DateType | string;
    disabledTime?: DisabledTime<DateType>;
    format?: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
    renderExtraFooter?: (mode: PanelMode) => VueNode;
    showNow?: boolean;
    monthCellRender?: MonthCellRender<DateType>;
    monthCellContentRender?: MonthCellRender<DateType>;
}
declare function rangePickerProps<DateType>(): {
    allowEmpty: {
        type: PropType<[boolean, boolean]>;
    };
    dateRender: {
        type: PropType<any>;
    };
    defaultPickerValue: {
        type: PropType<[string, string] | [DateType, DateType]>;
    };
    defaultValue: {
        type: PropType<[string, string] | [DateType, DateType]>;
    };
    value: {
        type: PropType<[DateType, DateType]>;
    };
    disabledTime: {
        type: PropType<(date: EventValue<DateType>, type: any) => DisabledTimes>;
    };
    disabled: {
        type: PropType<boolean | [boolean, boolean]>;
    };
    format: StringConstructor;
    renderExtraFooter: {
        type: PropType<() => VueNode>;
    };
    separator: {
        type: StringConstructor;
    };
    ranges: {
        type: PropType<Record<string, [DateType, DateType] | (() => Exclude<RangeValue<DateType>, null>)>>;
    };
    placeholder: ArrayConstructor;
    mode: {
        type: PropType<[PanelMode, PanelMode]>;
    };
};
export interface RangePickerProps<DateType> {
    allowEmpty?: [boolean, boolean];
    dateRender?: RangeDateRender<DateType>;
    defaultPickerValue?: [DateType, DateType] | [string, string];
    defaultValue?: [DateType, DateType] | [string, string];
    value?: [DateType, DateType];
    disabledTime?: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;
    disabled?: [boolean, boolean];
    format?: string;
    renderExtraFooter?: () => VueNode;
    separator?: string;
    ranges?: Record<string, Exclude<RangeValue<DateType>, null> | (() => Exclude<RangeValue<DateType>, null>)>;
    placeholder?: [string, string];
    mode?: [PanelMode, PanelMode];
}
export declare type ExtraDatePickerProps<DateType> = {
    valueFormat?: string;
    defaultPickerValue?: DateType | string;
    defaultValue?: DateType | string;
    value?: DateType | string;
};
export declare type ExtraRangePickerProps<DateType> = {
    valueFormat?: string;
    defaultPickerValue?: [DateType, DateType] | [string, string];
    defaultValue?: [DateType, DateType] | [string, string];
    value?: [DateType, DateType] | [string, string];
};
export { commonProps, datePickerProps, rangePickerProps };
