import { CustomSlotsType, VueNode } from '../../_util/type';
import { GenerateConfig } from '../../vc-picker/generate/index';
import { PanelMode, EventValue, PresetDate, DisabledTimes, CustomFormat, PickerMode } from '../../vc-picker/interface';
import { DefineComponent, ComponentObjectPropsOptions, PropType, CSSProperties, ExtractPropTypes, ComponentOptionsMixin, PublicProps, ExtractDefaultPropTypes, ComponentProvideOptions } from 'vue';
import { RangeDateRender, RangeType, RangeInfo } from '../../vc-picker/RangePicker';
import { SharedTimeProps } from '../../vc-picker/panels/TimePanel';
import { FocusEventHandler, MouseEventHandler } from '../../_util/EventInterface';
import { PickerLocale } from './interface';
import { ButtonSize } from '../../button';
export default function generateRangePicker<DateType, ExtraProps = {}>(generateConfig: GenerateConfig<DateType>, extraProps: ExtraProps): DefineComponent< ComponentObjectPropsOptions<{
    [x: string]: unknown;
}> extends {
    allowEmpty: {
        type: PropType<[boolean, boolean]>;
        default: [boolean, boolean];
    };
    dateRender: {
        type: PropType<RangeDateRender<DateType>>;
        default: RangeDateRender<DateType>;
    };
    defaultPickerValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    defaultValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    value: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    presets: {
        type: PropType< PresetDate<DateType[]>[]>;
        default: PresetDate<DateType[]>[];
    };
    disabledTime: {
        type: PropType<(date: EventValue<DateType>, type: RangeType) => DisabledTimes>;
        default: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;
    };
    disabled: {
        type: PropType<boolean | [boolean, boolean]>;
        default: boolean | [boolean, boolean];
    };
    renderExtraFooter: {
        type: PropType<() => VueNode>;
        default: () => VueNode;
    };
    separator: {
        type: StringConstructor;
    };
    showTime: {
        type: PropType<boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        })>;
        default: boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        });
    };
    ranges: {
        type: PropType<Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>>;
        default: Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>;
    };
    placeholder: {
        type: PropType<string[]>;
        default: string[];
    };
    mode: {
        type: PropType<[PanelMode, PanelMode]>;
        default: [PanelMode, PanelMode];
    };
    onChange: {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void;
    };
    'onUpdate:value': {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    onCalendarChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void;
    };
    onPanelChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void;
    };
    onOk: {
        type: PropType<(dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    id: StringConstructor;
    dropdownClassName: StringConstructor;
    popupClassName: StringConstructor;
    popupStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    transitionName: StringConstructor;
    allowClear: {
        type: BooleanConstructor;
        default: boolean;
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    tabindex: NumberConstructor;
    open: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: boolean;
    };
    inputReadOnly: {
        type: BooleanConstructor;
        default: boolean;
    };
    format: {
        type: PropType<string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[]>;
        default: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
    };
    getPopupContainer: {
        type: PropType<(node: HTMLElement) => HTMLElement>;
        default: (node: HTMLElement) => HTMLElement;
    };
    panelRender: {
        type: PropType<(originPanel: VueNode) => VueNode>;
        default: (originPanel: VueNode) => VueNode;
    };
    onOpenChange: {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    'onUpdate:open': {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    onFocus: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onBlur: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onMousedown: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseup: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseenter: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseleave: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onClick: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onContextmenu: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onKeydown: {
        type: PropType<(event: KeyboardEvent, preventDefault: () => void) => void>;
        default: (event: KeyboardEvent, preventDefault: () => void) => void;
    };
    role: StringConstructor;
    name: StringConstructor;
    autocomplete: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
        default: "ltr" | "rtl";
    };
    showToday: {
        type: BooleanConstructor;
        default: boolean;
    };
    locale: {
        type: PropType<PickerLocale>;
        default: PickerLocale;
    };
    size: {
        type: PropType<ButtonSize>;
        default: ButtonSize;
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabledDate: {
        type: PropType<(date: DateType) => boolean>;
        default: (date: DateType) => boolean;
    };
    picker: {
        type: PropType<PickerMode>;
        default: PickerMode;
    };
    valueFormat: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    disabledHours: {
        type: PropType<(() => number[]) | undefined>;
        default: (() => number[]) | undefined;
    };
    disabledMinutes: {
        type: PropType<((hour: number) => number[]) | undefined>;
        default: ((hour: number) => number[]) | undefined;
    };
    disabledSeconds: {
        type: PropType<((hour: number, minute: number) => number[]) | undefined>;
        default: ((hour: number, minute: number) => number[]) | undefined;
    };
} & ExtraProps ? {} : ExtractPropTypes<{
    allowEmpty: {
        type: PropType<[boolean, boolean]>;
        default: [boolean, boolean];
    };
    dateRender: {
        type: PropType<RangeDateRender<DateType>>;
        default: RangeDateRender<DateType>;
    };
    defaultPickerValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    defaultValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    value: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    presets: {
        type: PropType< PresetDate<DateType[]>[]>;
        default: PresetDate<DateType[]>[];
    };
    disabledTime: {
        type: PropType<(date: EventValue<DateType>, type: RangeType) => DisabledTimes>;
        default: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;
    };
    disabled: {
        type: PropType<boolean | [boolean, boolean]>;
        default: boolean | [boolean, boolean];
    };
    renderExtraFooter: {
        type: PropType<() => VueNode>;
        default: () => VueNode;
    };
    separator: {
        type: StringConstructor;
    };
    showTime: {
        type: PropType<boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        })>;
        default: boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        });
    };
    ranges: {
        type: PropType<Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>>;
        default: Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>;
    };
    placeholder: {
        type: PropType<string[]>;
        default: string[];
    };
    mode: {
        type: PropType<[PanelMode, PanelMode]>;
        default: [PanelMode, PanelMode];
    };
    onChange: {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void;
    };
    'onUpdate:value': {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    onCalendarChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void;
    };
    onPanelChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void;
    };
    onOk: {
        type: PropType<(dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    id: StringConstructor;
    dropdownClassName: StringConstructor;
    popupClassName: StringConstructor;
    popupStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    transitionName: StringConstructor;
    allowClear: {
        type: BooleanConstructor;
        default: boolean;
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    tabindex: NumberConstructor;
    open: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: boolean;
    };
    inputReadOnly: {
        type: BooleanConstructor;
        default: boolean;
    };
    format: {
        type: PropType<string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[]>;
        default: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
    };
    getPopupContainer: {
        type: PropType<(node: HTMLElement) => HTMLElement>;
        default: (node: HTMLElement) => HTMLElement;
    };
    panelRender: {
        type: PropType<(originPanel: VueNode) => VueNode>;
        default: (originPanel: VueNode) => VueNode;
    };
    onOpenChange: {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    'onUpdate:open': {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    onFocus: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onBlur: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onMousedown: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseup: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseenter: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseleave: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onClick: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onContextmenu: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onKeydown: {
        type: PropType<(event: KeyboardEvent, preventDefault: () => void) => void>;
        default: (event: KeyboardEvent, preventDefault: () => void) => void;
    };
    role: StringConstructor;
    name: StringConstructor;
    autocomplete: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
        default: "ltr" | "rtl";
    };
    showToday: {
        type: BooleanConstructor;
        default: boolean;
    };
    locale: {
        type: PropType<PickerLocale>;
        default: PickerLocale;
    };
    size: {
        type: PropType<ButtonSize>;
        default: ButtonSize;
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabledDate: {
        type: PropType<(date: DateType) => boolean>;
        default: (date: DateType) => boolean;
    };
    picker: {
        type: PropType<PickerMode>;
        default: PickerMode;
    };
    valueFormat: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    disabledHours: {
        type: PropType<(() => number[]) | undefined>;
        default: (() => number[]) | undefined;
    };
    disabledMinutes: {
        type: PropType<((hour: number) => number[]) | undefined>;
        default: ((hour: number) => number[]) | undefined;
    };
    disabledSeconds: {
        type: PropType<((hour: number, minute: number) => number[]) | undefined>;
        default: ((hour: number, minute: number) => number[]) | undefined;
    };
} & ExtraProps>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ComponentObjectPropsOptions<{
    [x: string]: unknown;
}> extends {
    allowEmpty: {
        type: PropType<[boolean, boolean]>;
        default: [boolean, boolean];
    };
    dateRender: {
        type: PropType<RangeDateRender<DateType>>;
        default: RangeDateRender<DateType>;
    };
    defaultPickerValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    defaultValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    value: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    presets: {
        type: PropType< PresetDate<DateType[]>[]>;
        default: PresetDate<DateType[]>[];
    };
    disabledTime: {
        type: PropType<(date: EventValue<DateType>, type: RangeType) => DisabledTimes>;
        default: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;
    };
    disabled: {
        type: PropType<boolean | [boolean, boolean]>;
        default: boolean | [boolean, boolean];
    };
    renderExtraFooter: {
        type: PropType<() => VueNode>;
        default: () => VueNode;
    };
    separator: {
        type: StringConstructor;
    };
    showTime: {
        type: PropType<boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        })>;
        default: boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        });
    };
    ranges: {
        type: PropType<Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>>;
        default: Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>;
    };
    placeholder: {
        type: PropType<string[]>;
        default: string[];
    };
    mode: {
        type: PropType<[PanelMode, PanelMode]>;
        default: [PanelMode, PanelMode];
    };
    onChange: {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void;
    };
    'onUpdate:value': {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    onCalendarChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void;
    };
    onPanelChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void;
    };
    onOk: {
        type: PropType<(dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    id: StringConstructor;
    dropdownClassName: StringConstructor;
    popupClassName: StringConstructor;
    popupStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    transitionName: StringConstructor;
    allowClear: {
        type: BooleanConstructor;
        default: boolean;
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    tabindex: NumberConstructor;
    open: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: boolean;
    };
    inputReadOnly: {
        type: BooleanConstructor;
        default: boolean;
    };
    format: {
        type: PropType<string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[]>;
        default: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
    };
    getPopupContainer: {
        type: PropType<(node: HTMLElement) => HTMLElement>;
        default: (node: HTMLElement) => HTMLElement;
    };
    panelRender: {
        type: PropType<(originPanel: VueNode) => VueNode>;
        default: (originPanel: VueNode) => VueNode;
    };
    onOpenChange: {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    'onUpdate:open': {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    onFocus: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onBlur: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onMousedown: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseup: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseenter: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseleave: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onClick: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onContextmenu: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onKeydown: {
        type: PropType<(event: KeyboardEvent, preventDefault: () => void) => void>;
        default: (event: KeyboardEvent, preventDefault: () => void) => void;
    };
    role: StringConstructor;
    name: StringConstructor;
    autocomplete: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
        default: "ltr" | "rtl";
    };
    showToday: {
        type: BooleanConstructor;
        default: boolean;
    };
    locale: {
        type: PropType<PickerLocale>;
        default: PickerLocale;
    };
    size: {
        type: PropType<ButtonSize>;
        default: ButtonSize;
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabledDate: {
        type: PropType<(date: DateType) => boolean>;
        default: (date: DateType) => boolean;
    };
    picker: {
        type: PropType<PickerMode>;
        default: PickerMode;
    };
    valueFormat: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    disabledHours: {
        type: PropType<(() => number[]) | undefined>;
        default: (() => number[]) | undefined;
    };
    disabledMinutes: {
        type: PropType<((hour: number) => number[]) | undefined>;
        default: ((hour: number) => number[]) | undefined;
    };
    disabledSeconds: {
        type: PropType<((hour: number, minute: number) => number[]) | undefined>;
        default: ((hour: number, minute: number) => number[]) | undefined;
    };
} & ExtraProps ? {} : ExtractPropTypes<{
    allowEmpty: {
        type: PropType<[boolean, boolean]>;
        default: [boolean, boolean];
    };
    dateRender: {
        type: PropType<RangeDateRender<DateType>>;
        default: RangeDateRender<DateType>;
    };
    defaultPickerValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    defaultValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    value: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    presets: {
        type: PropType< PresetDate<DateType[]>[]>;
        default: PresetDate<DateType[]>[];
    };
    disabledTime: {
        type: PropType<(date: EventValue<DateType>, type: RangeType) => DisabledTimes>;
        default: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;
    };
    disabled: {
        type: PropType<boolean | [boolean, boolean]>;
        default: boolean | [boolean, boolean];
    };
    renderExtraFooter: {
        type: PropType<() => VueNode>;
        default: () => VueNode;
    };
    separator: {
        type: StringConstructor;
    };
    showTime: {
        type: PropType<boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        })>;
        default: boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        });
    };
    ranges: {
        type: PropType<Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>>;
        default: Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>;
    };
    placeholder: {
        type: PropType<string[]>;
        default: string[];
    };
    mode: {
        type: PropType<[PanelMode, PanelMode]>;
        default: [PanelMode, PanelMode];
    };
    onChange: {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void;
    };
    'onUpdate:value': {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    onCalendarChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void;
    };
    onPanelChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void;
    };
    onOk: {
        type: PropType<(dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    id: StringConstructor;
    dropdownClassName: StringConstructor;
    popupClassName: StringConstructor;
    popupStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    transitionName: StringConstructor;
    allowClear: {
        type: BooleanConstructor;
        default: boolean;
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    tabindex: NumberConstructor;
    open: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: boolean;
    };
    inputReadOnly: {
        type: BooleanConstructor;
        default: boolean;
    };
    format: {
        type: PropType<string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[]>;
        default: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
    };
    getPopupContainer: {
        type: PropType<(node: HTMLElement) => HTMLElement>;
        default: (node: HTMLElement) => HTMLElement;
    };
    panelRender: {
        type: PropType<(originPanel: VueNode) => VueNode>;
        default: (originPanel: VueNode) => VueNode;
    };
    onOpenChange: {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    'onUpdate:open': {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    onFocus: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onBlur: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onMousedown: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseup: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseenter: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseleave: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onClick: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onContextmenu: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onKeydown: {
        type: PropType<(event: KeyboardEvent, preventDefault: () => void) => void>;
        default: (event: KeyboardEvent, preventDefault: () => void) => void;
    };
    role: StringConstructor;
    name: StringConstructor;
    autocomplete: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
        default: "ltr" | "rtl";
    };
    showToday: {
        type: BooleanConstructor;
        default: boolean;
    };
    locale: {
        type: PropType<PickerLocale>;
        default: PickerLocale;
    };
    size: {
        type: PropType<ButtonSize>;
        default: ButtonSize;
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabledDate: {
        type: PropType<(date: DateType) => boolean>;
        default: (date: DateType) => boolean;
    };
    picker: {
        type: PropType<PickerMode>;
        default: PickerMode;
    };
    valueFormat: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    disabledHours: {
        type: PropType<(() => number[]) | undefined>;
        default: (() => number[]) | undefined;
    };
    disabledMinutes: {
        type: PropType<((hour: number) => number[]) | undefined>;
        default: ((hour: number) => number[]) | undefined;
    };
    disabledSeconds: {
        type: PropType<((hour: number, minute: number) => number[]) | undefined>;
        default: ((hour: number, minute: number) => number[]) | undefined;
    };
} & ExtraProps>> & Readonly<{}>, ExtractDefaultPropTypes<{
    allowEmpty: {
        type: PropType<[boolean, boolean]>;
        default: [boolean, boolean];
    };
    dateRender: {
        type: PropType<RangeDateRender<DateType>>;
        default: RangeDateRender<DateType>;
    };
    defaultPickerValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    defaultValue: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    value: {
        type: PropType<[ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null>;
        default: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null;
    };
    presets: {
        type: PropType< PresetDate<DateType[]>[]>;
        default: PresetDate<DateType[]>[];
    };
    disabledTime: {
        type: PropType<(date: EventValue<DateType>, type: RangeType) => DisabledTimes>;
        default: (date: EventValue<DateType>, type: RangeType) => DisabledTimes;
    };
    disabled: {
        type: PropType<boolean | [boolean, boolean]>;
        default: boolean | [boolean, boolean];
    };
    renderExtraFooter: {
        type: PropType<() => VueNode>;
        default: () => VueNode;
    };
    separator: {
        type: StringConstructor;
    };
    showTime: {
        type: PropType<boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        })>;
        default: boolean | (Omit< SharedTimeProps<DateType>, "defaultValue"> & {
            defaultValue?: DateType[] | undefined;
        });
    };
    ranges: {
        type: PropType<Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>>;
        default: Record<string, [ EventValue<DateType>, EventValue<DateType>] | (() => [ EventValue<DateType>, EventValue<DateType>])>;
    };
    placeholder: {
        type: PropType<string[]>;
        default: string[];
    };
    mode: {
        type: PropType<[PanelMode, PanelMode]>;
        default: [PanelMode, PanelMode];
    };
    onChange: {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, dateString: [string, string]) => void;
    };
    'onUpdate:value': {
        type: PropType<(value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (value: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    onCalendarChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, formatString: [string, string], info: RangeInfo) => void;
    };
    onPanelChange: {
        type: PropType<(values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void>;
        default: (values: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null, modes: [PanelMode, PanelMode]) => void;
    };
    onOk: {
        type: PropType<(dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void>;
        default: (dates: [ EventValue<string>, EventValue<string>] | [ EventValue<DateType>, EventValue<DateType>] | null) => void;
    };
    id: StringConstructor;
    dropdownClassName: StringConstructor;
    popupClassName: StringConstructor;
    popupStyle: {
        type: PropType<CSSProperties>;
        default: CSSProperties;
    };
    transitionName: StringConstructor;
    allowClear: {
        type: BooleanConstructor;
        default: boolean;
    };
    autofocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    tabindex: NumberConstructor;
    open: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: boolean;
    };
    inputReadOnly: {
        type: BooleanConstructor;
        default: boolean;
    };
    format: {
        type: PropType<string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[]>;
        default: string | CustomFormat<DateType> | (string | CustomFormat<DateType>)[];
    };
    getPopupContainer: {
        type: PropType<(node: HTMLElement) => HTMLElement>;
        default: (node: HTMLElement) => HTMLElement;
    };
    panelRender: {
        type: PropType<(originPanel: VueNode) => VueNode>;
        default: (originPanel: VueNode) => VueNode;
    };
    onOpenChange: {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    'onUpdate:open': {
        type: PropType<(open: boolean) => void>;
        default: (open: boolean) => void;
    };
    onFocus: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onBlur: {
        type: PropType<FocusEventHandler>;
        default: FocusEventHandler;
    };
    onMousedown: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseup: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseenter: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onMouseleave: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onClick: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onContextmenu: {
        type: PropType<MouseEventHandler>;
        default: MouseEventHandler;
    };
    onKeydown: {
        type: PropType<(event: KeyboardEvent, preventDefault: () => void) => void>;
        default: (event: KeyboardEvent, preventDefault: () => void) => void;
    };
    role: StringConstructor;
    name: StringConstructor;
    autocomplete: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
        default: "ltr" | "rtl";
    };
    showToday: {
        type: BooleanConstructor;
        default: boolean;
    };
    locale: {
        type: PropType<PickerLocale>;
        default: PickerLocale;
    };
    size: {
        type: PropType<ButtonSize>;
        default: ButtonSize;
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    disabledDate: {
        type: PropType<(date: DateType) => boolean>;
        default: (date: DateType) => boolean;
    };
    picker: {
        type: PropType<PickerMode>;
        default: PickerMode;
    };
    valueFormat: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    disabledHours: {
        type: PropType<(() => number[]) | undefined>;
        default: (() => number[]) | undefined;
    };
    disabledMinutes: {
        type: PropType<((hour: number) => number[]) | undefined>;
        default: ((hour: number) => number[]) | undefined;
    };
    disabledSeconds: {
        type: PropType<((hour: number, minute: number) => number[]) | undefined>;
        default: ((hour: number, minute: number) => number[]) | undefined;
    };
} & ExtraProps>, CustomSlotsType<{
    suffixIcon?: any;
    prevIcon?: any;
    nextIcon?: any;
    superPrevIcon?: any;
    superNextIcon?: any;
    dateRender?: any;
    renderExtraFooter?: any;
    default?: any;
    separator?: any;
    clearIcon?: any;
}>, {}, {}, string, ComponentProvideOptions, true, {}, any>;
