import { ExtractPropTypes, Plugin, PropType, CSSProperties, DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
import { CustomSlotsType, VueNode } from '../_util/type';
import { SizeType } from '../config-provider';
import { BaseSelectRef, OptGroup, Option } from '../vc-select';
import { OptionProps } from '../vc-select/Option';
import { BaseOptionType, DefaultOptionType, SelectHandler, FieldNames, FilterFunc } from '../vc-select/Select';
import { VueTypeValidableDef } from 'vue-types';
import { RenderDOMFunc, CustomTagProps, DropdownRender } from '../vc-select/BaseSelect';
import { AlignType } from '../vc-trigger/interface';
type RawValue = string | number;
export type OptionType = typeof Option;
export type { BaseOptionType, DefaultOptionType, OptionProps, BaseSelectRef as RefSelectProps };
export interface LabeledValue {
    key?: string;
    value: RawValue;
    label?: any;
}
export type SelectValue = RawValue | RawValue[] | LabeledValue | LabeledValue[] | undefined;
export declare const selectProps: () => {
    value: {
        type: PropType<SelectValue>;
        default: SelectValue;
    };
    defaultValue: {
        type: PropType<SelectValue>;
        default: SelectValue;
    };
    notFoundContent: VueTypeValidableDef<any>;
    suffixIcon: VueTypeValidableDef<any>;
    itemIcon: VueTypeValidableDef<any>;
    size: {
        type: PropType<SizeType>;
        default: SizeType;
    };
    mode: {
        type: PropType<"multiple" | "tags" | "SECRET_COMBOBOX_MODE_DO_NOT_USE">;
        default: "multiple" | "tags" | "SECRET_COMBOBOX_MODE_DO_NOT_USE";
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    transitionName: StringConstructor;
    choiceTransitionName: {
        type: PropType<"">;
        default: "";
    };
    popupClassName: StringConstructor;
    /** @deprecated Please use `popupClassName` instead */
    dropdownClassName: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    'onUpdate:value': {
        type: PropType<(val: SelectValue) => void>;
        default: (val: SelectValue) => void;
    };
    open: {
        type: BooleanConstructor;
        default: undefined;
    };
    animation: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
    };
    disabled: {
        type: BooleanConstructor;
        default: undefined;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onChange: PropType<(value: SelectValue, option: DefaultOptionType | DefaultOptionType[]) => void>;
    onKeydown: PropType<(e: KeyboardEvent) => void>;
    onKeyup: PropType<(e: KeyboardEvent) => void>;
    onMousedown: PropType<(e: MouseEvent) => void>;
    onMouseenter: PropType<(e: MouseEvent) => void>;
    onMouseleave: PropType<(e: MouseEvent) => void>;
    onSelect: PropType<SelectHandler<RawValue | LabeledValue | undefined, DefaultOptionType>>;
    onClick: PropType<(e: MouseEvent) => void>;
    children: PropType< VueNode[]>;
    prefixCls: StringConstructor;
    listHeight: NumberConstructor;
    id: StringConstructor;
    autofocus: BooleanConstructor;
    getPopupContainer: {
        type: PropType<RenderDOMFunc>;
    };
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    dropdownMatchSelectWidth: {
        type: PropType<boolean | number>;
        default: undefined;
    };
    loading: {
        type: BooleanConstructor;
        default: undefined;
    };
    tabindex: NumberConstructor;
    showAction: {
        type: PropType<("focus" | "click")[]>;
    };
    dropdownAlign: PropType<AlignType>;
    placeholder: VueTypeValidableDef<any>;
    allowClear: {
        type: BooleanConstructor;
        default: undefined;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: undefined;
    };
    clearIcon: VueTypeValidableDef<any>;
    showSearch: {
        type: BooleanConstructor;
        default: undefined;
    };
    optionLabelProp: StringConstructor;
    fieldNames: PropType<FieldNames>;
    tagRender: {
        type: PropType<(props: CustomTagProps) => any>;
    };
    optionLabelRender: {
        type: PropType<(option: Record<string, any>) => any>;
    };
    onClear: PropType<() => void>;
    onDropdownVisibleChange: {
        type: PropType<(open: boolean) => void>;
    };
    maxTagTextLength: NumberConstructor;
    maxTagCount: {
        type: PropType<number | "responsive">;
    };
    maxTagPlaceholder: VueTypeValidableDef<any>;
    tokenSeparators: {
        type: PropType<string[]>;
    };
    showArrow: {
        type: BooleanConstructor;
        default: undefined;
    };
    removeIcon: VueTypeValidableDef<any>;
    dropdownStyle: {
        type: PropType<CSSProperties>;
    };
    dropdownRender: {
        type: PropType<DropdownRender>;
    };
    onPopupScroll: PropType<(e: UIEvent) => void>;
    onInputKeyDown: PropType<(e: KeyboardEvent) => void>;
    searchValue: StringConstructor;
    onSearch: PropType<(value: string) => void>;
    menuItemSelectedIcon: VueTypeValidableDef<any>;
    listItemHeight: NumberConstructor;
    options: PropType<DefaultOptionType[]>;
    inputValue: StringConstructor;
    autoClearSearchValue: {
        type: BooleanConstructor;
        default: undefined;
    };
    onDeselect: PropType<SelectHandler<RawValue | LabeledValue | undefined, DefaultOptionType>>;
    filterOption: {
        type: PropType<boolean | FilterFunc<DefaultOptionType>>;
        default: undefined;
    };
    filterSort: PropType<(optionA: DefaultOptionType, optionB: DefaultOptionType) => number>;
    optionFilterProp: StringConstructor;
    defaultActiveFirstOption: {
        type: BooleanConstructor;
        default: undefined;
    };
    labelInValue: {
        type: BooleanConstructor;
        default: undefined;
    };
};
export type SelectProps = Partial<ExtractPropTypes<ReturnType<typeof selectProps>>>;
declare const Select: DefineComponent<ExtractPropTypes<{
    value: {
        type: PropType<SelectValue>;
        default: SelectValue;
    };
    defaultValue: {
        type: PropType<SelectValue>;
        default: SelectValue;
    };
    notFoundContent: VueTypeValidableDef<any>;
    suffixIcon: VueTypeValidableDef<any>;
    itemIcon: VueTypeValidableDef<any>;
    size: {
        type: PropType<SizeType>;
        default: SizeType;
    };
    mode: {
        type: PropType<"multiple" | "tags" | "SECRET_COMBOBOX_MODE_DO_NOT_USE">;
        default: "multiple" | "tags" | "SECRET_COMBOBOX_MODE_DO_NOT_USE";
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    transitionName: StringConstructor;
    choiceTransitionName: {
        type: PropType<"">;
        default: "";
    };
    popupClassName: StringConstructor;
    /** @deprecated Please use `popupClassName` instead */
    dropdownClassName: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    'onUpdate:value': {
        type: PropType<(val: SelectValue) => void>;
        default: (val: SelectValue) => void;
    };
    open: {
        type: BooleanConstructor;
        default: undefined;
    };
    animation: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
    };
    disabled: {
        type: BooleanConstructor;
        default: undefined;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onChange: PropType<(value: SelectValue, option: DefaultOptionType | DefaultOptionType[]) => void>;
    onKeydown: PropType<(e: KeyboardEvent) => void>;
    onKeyup: PropType<(e: KeyboardEvent) => void>;
    onMousedown: PropType<(e: MouseEvent) => void>;
    onMouseenter: PropType<(e: MouseEvent) => void>;
    onMouseleave: PropType<(e: MouseEvent) => void>;
    onSelect: PropType<SelectHandler<RawValue | LabeledValue | undefined, DefaultOptionType>>;
    onClick: PropType<(e: MouseEvent) => void>;
    children: PropType< VueNode[]>;
    prefixCls: StringConstructor;
    listHeight: NumberConstructor;
    id: StringConstructor;
    autofocus: BooleanConstructor;
    getPopupContainer: {
        type: PropType<RenderDOMFunc>;
    };
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    dropdownMatchSelectWidth: {
        type: PropType<boolean | number>;
        default: undefined;
    };
    loading: {
        type: BooleanConstructor;
        default: undefined;
    };
    tabindex: NumberConstructor;
    showAction: {
        type: PropType<("focus" | "click")[]>;
    };
    dropdownAlign: PropType<AlignType>;
    placeholder: VueTypeValidableDef<any>;
    allowClear: {
        type: BooleanConstructor;
        default: undefined;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: undefined;
    };
    clearIcon: VueTypeValidableDef<any>;
    showSearch: {
        type: BooleanConstructor;
        default: undefined;
    };
    optionLabelProp: StringConstructor;
    fieldNames: PropType<FieldNames>;
    tagRender: {
        type: PropType<(props: CustomTagProps) => any>;
    };
    optionLabelRender: {
        type: PropType<(option: Record<string, any>) => any>;
    };
    onClear: PropType<() => void>;
    onDropdownVisibleChange: {
        type: PropType<(open: boolean) => void>;
    };
    maxTagTextLength: NumberConstructor;
    maxTagCount: {
        type: PropType<number | "responsive">;
    };
    maxTagPlaceholder: VueTypeValidableDef<any>;
    tokenSeparators: {
        type: PropType<string[]>;
    };
    showArrow: {
        type: BooleanConstructor;
        default: undefined;
    };
    removeIcon: VueTypeValidableDef<any>;
    dropdownStyle: {
        type: PropType<CSSProperties>;
    };
    dropdownRender: {
        type: PropType<DropdownRender>;
    };
    onPopupScroll: PropType<(e: UIEvent) => void>;
    onInputKeyDown: PropType<(e: KeyboardEvent) => void>;
    searchValue: StringConstructor;
    onSearch: PropType<(value: string) => void>;
    menuItemSelectedIcon: VueTypeValidableDef<any>;
    listItemHeight: NumberConstructor;
    options: PropType<DefaultOptionType[]>;
    inputValue: StringConstructor;
    autoClearSearchValue: {
        type: BooleanConstructor;
        default: undefined;
    };
    onDeselect: PropType<SelectHandler<RawValue | LabeledValue | undefined, DefaultOptionType>>;
    filterOption: {
        type: PropType<boolean | FilterFunc<DefaultOptionType>>;
        default: undefined;
    };
    filterSort: PropType<(optionA: DefaultOptionType, optionB: DefaultOptionType) => number>;
    optionFilterProp: StringConstructor;
    defaultActiveFirstOption: {
        type: BooleanConstructor;
        default: undefined;
    };
    labelInValue: {
        type: BooleanConstructor;
        default: undefined;
    };
}>, () => VueNode, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<{
    value: {
        type: PropType<SelectValue>;
        default: SelectValue;
    };
    defaultValue: {
        type: PropType<SelectValue>;
        default: SelectValue;
    };
    notFoundContent: VueTypeValidableDef<any>;
    suffixIcon: VueTypeValidableDef<any>;
    itemIcon: VueTypeValidableDef<any>;
    size: {
        type: PropType<SizeType>;
        default: SizeType;
    };
    mode: {
        type: PropType<"multiple" | "tags" | "SECRET_COMBOBOX_MODE_DO_NOT_USE">;
        default: "multiple" | "tags" | "SECRET_COMBOBOX_MODE_DO_NOT_USE";
    };
    bordered: {
        type: BooleanConstructor;
        default: boolean;
    };
    transitionName: StringConstructor;
    choiceTransitionName: {
        type: PropType<"">;
        default: "";
    };
    popupClassName: StringConstructor;
    /** @deprecated Please use `popupClassName` instead */
    dropdownClassName: StringConstructor;
    placement: {
        type: PropType<"bottomLeft" | "bottomRight" | "topLeft" | "topRight">;
        default: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    };
    status: {
        type: PropType<"" | "error" | "warning">;
        default: "" | "error" | "warning";
    };
    'onUpdate:value': {
        type: PropType<(val: SelectValue) => void>;
        default: (val: SelectValue) => void;
    };
    open: {
        type: BooleanConstructor;
        default: undefined;
    };
    animation: StringConstructor;
    direction: {
        type: PropType<"ltr" | "rtl">;
    };
    disabled: {
        type: BooleanConstructor;
        default: undefined;
    };
    onFocus: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onBlur: {
        type: PropType<(e: FocusEvent) => void>;
    };
    onChange: PropType<(value: SelectValue, option: DefaultOptionType | DefaultOptionType[]) => void>;
    onKeydown: PropType<(e: KeyboardEvent) => void>;
    onKeyup: PropType<(e: KeyboardEvent) => void>;
    onMousedown: PropType<(e: MouseEvent) => void>;
    onMouseenter: PropType<(e: MouseEvent) => void>;
    onMouseleave: PropType<(e: MouseEvent) => void>;
    onSelect: PropType<SelectHandler<RawValue | LabeledValue | undefined, DefaultOptionType>>;
    onClick: PropType<(e: MouseEvent) => void>;
    children: PropType< VueNode[]>;
    prefixCls: StringConstructor;
    listHeight: NumberConstructor;
    id: StringConstructor;
    autofocus: BooleanConstructor;
    getPopupContainer: {
        type: PropType<RenderDOMFunc>;
    };
    virtual: {
        type: BooleanConstructor;
        default: undefined;
    };
    dropdownMatchSelectWidth: {
        type: PropType<boolean | number>;
        default: undefined;
    };
    loading: {
        type: BooleanConstructor;
        default: undefined;
    };
    tabindex: NumberConstructor;
    showAction: {
        type: PropType<("focus" | "click")[]>;
    };
    dropdownAlign: PropType<AlignType>;
    placeholder: VueTypeValidableDef<any>;
    allowClear: {
        type: BooleanConstructor;
        default: undefined;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: undefined;
    };
    clearIcon: VueTypeValidableDef<any>;
    showSearch: {
        type: BooleanConstructor;
        default: undefined;
    };
    optionLabelProp: StringConstructor;
    fieldNames: PropType<FieldNames>;
    tagRender: {
        type: PropType<(props: CustomTagProps) => any>;
    };
    optionLabelRender: {
        type: PropType<(option: Record<string, any>) => any>;
    };
    onClear: PropType<() => void>;
    onDropdownVisibleChange: {
        type: PropType<(open: boolean) => void>;
    };
    maxTagTextLength: NumberConstructor;
    maxTagCount: {
        type: PropType<number | "responsive">;
    };
    maxTagPlaceholder: VueTypeValidableDef<any>;
    tokenSeparators: {
        type: PropType<string[]>;
    };
    showArrow: {
        type: BooleanConstructor;
        default: undefined;
    };
    removeIcon: VueTypeValidableDef<any>;
    dropdownStyle: {
        type: PropType<CSSProperties>;
    };
    dropdownRender: {
        type: PropType<DropdownRender>;
    };
    onPopupScroll: PropType<(e: UIEvent) => void>;
    onInputKeyDown: PropType<(e: KeyboardEvent) => void>;
    searchValue: StringConstructor;
    onSearch: PropType<(value: string) => void>;
    menuItemSelectedIcon: VueTypeValidableDef<any>;
    listItemHeight: NumberConstructor;
    options: PropType<DefaultOptionType[]>;
    inputValue: StringConstructor;
    autoClearSearchValue: {
        type: BooleanConstructor;
        default: undefined;
    };
    onDeselect: PropType<SelectHandler<RawValue | LabeledValue | undefined, DefaultOptionType>>;
    filterOption: {
        type: PropType<boolean | FilterFunc<DefaultOptionType>>;
        default: undefined;
    };
    filterSort: PropType<(optionA: DefaultOptionType, optionB: DefaultOptionType) => number>;
    optionFilterProp: StringConstructor;
    defaultActiveFirstOption: {
        type: BooleanConstructor;
        default: undefined;
    };
    labelInValue: {
        type: BooleanConstructor;
        default: undefined;
    };
}>> & Readonly<{}>, {
    open: boolean;
    size: SizeType;
    value: SelectValue;
    disabled: boolean;
    mode: "multiple" | "tags" | "SECRET_COMBOBOX_MODE_DO_NOT_USE";
    autofocus: boolean;
    virtual: boolean;
    dropdownMatchSelectWidth: number | boolean;
    loading: boolean;
    bordered: boolean;
    status: "" | "error" | "warning";
    defaultValue: SelectValue;
    allowClear: boolean;
    defaultOpen: boolean;
    'onUpdate:value': (val: SelectValue) => void;
    placement: "bottomLeft" | "bottomRight" | "topLeft" | "topRight";
    showSearch: boolean;
    choiceTransitionName: "";
    showArrow: boolean;
    autoClearSearchValue: boolean;
    filterOption: boolean | FilterFunc<DefaultOptionType>;
    defaultActiveFirstOption: boolean;
    labelInValue: boolean;
}, CustomSlotsType<{
    notFoundContent: any;
    suffixIcon: any;
    itemIcon: any;
    removeIcon: any;
    clearIcon: any;
    dropdownRender: any;
    option: any;
    placeholder: any;
    tagRender: any;
    maxTagPlaceholder: any;
    optionLabel: any;
    default: any;
}>, {}, {}, string, ComponentProvideOptions, true, {}, any>;
export declare const SelectOption: any;
export declare const SelectOptGroup: any;
declare const _default: typeof Select & Plugin & {
    readonly Option: typeof Option;
    readonly OptGroup: typeof OptGroup;
    readonly SECRET_COMBOBOX_MODE_DO_NOT_USE: "SECRET_COMBOBOX_MODE_DO_NOT_USE";
};
export default _default;
