import type { ExtractPropTypes, PropType } from 'vue';
import type { DataNode, ChangeEventExtra, DefaultValueType, FieldNames, FlattenDataNode, LabelValueType, LegacyDataNode, RawValueType, SimpleModeConfig } from './interface';
import type { FilterFunc } from '../vc-select/interface/generator';
import type { Key } from '../_util/type';
import type { CheckedStrategy } from './utils/strategyUtil';
export declare function optionListProps<OptionsType>(): {
    prefixCls: StringConstructor;
    id: StringConstructor;
    options: {
        type: PropType<OptionsType[]>;
    };
    flattenOptions: {
        type: PropType<FlattenDataNode[]>;
    };
    height: NumberConstructor;
    itemHeight: NumberConstructor;
    virtual: {
        type: BooleanConstructor;
        default: any;
    };
    values: {
        type: PropType<Set<RawValueType>>;
    };
    multiple: {
        type: BooleanConstructor;
        default: any;
    };
    open: {
        type: BooleanConstructor;
        default: any;
    };
    defaultActiveFirstOption: {
        type: BooleanConstructor;
        default: any;
    };
    notFoundContent: import("vue-types").VueTypeValidableDef<any>;
    menuItemSelectedIcon: import("vue-types").VueTypeValidableDef<any>;
    childrenAsData: {
        type: BooleanConstructor;
        default: any;
    };
    searchValue: StringConstructor;
    onSelect: {
        type: PropType<(value: RawValueType, option: {
            selected: boolean;
        }) => void>;
    };
    onToggleOpen: {
        type: PropType<(open?: boolean) => void>;
    };
    /** Tell Select that some value is now active to make accessibility work */
    onActiveValue: {
        type: PropType<(value: RawValueType, index: number) => void>;
    };
    onScroll: {
        type: PropType<(e: UIEvent) => void>;
    };
    onMouseenter: {
        type: PropType<() => void>;
    };
};
export declare function treeSelectProps<ValueType = DefaultValueType>(): {
    multiple: {
        type: BooleanConstructor;
        default: any;
    };
    showArrow: {
        type: BooleanConstructor;
        default: any;
    };
    showSearch: {
        type: BooleanConstructor;
        default: any;
    };
    open: {
        type: BooleanConstructor;
        default: any;
    };
    defaultOpen: {
        type: BooleanConstructor;
        default: any;
    };
    value: {
        type: PropType<ValueType>;
    };
    defaultValue: {
        type: PropType<ValueType>;
    };
    disabled: {
        type: BooleanConstructor;
        default: any;
    };
    placeholder: import("vue-types").VueTypeValidableDef<any>;
    /** @deprecated Use `searchValue` instead */
    inputValue: StringConstructor;
    searchValue: StringConstructor;
    autoClearSearchValue: {
        type: BooleanConstructor;
        default: any;
    };
    maxTagPlaceholder: {
        type: PropType<(omittedValues: LabelValueType[]) => any>;
    };
    fieldNames: {
        type: PropType<FieldNames>;
    };
    loadData: {
        type: PropType<(dataNode: LegacyDataNode) => Promise<unknown>>;
    };
    treeNodeFilterProp: StringConstructor;
    treeNodeLabelProp: StringConstructor;
    treeDataSimpleMode: {
        type: PropType<boolean | SimpleModeConfig>;
        default: any;
    };
    treeExpandedKeys: {
        type: PropType<Key[]>;
    };
    treeDefaultExpandedKeys: {
        type: PropType<Key[]>;
    };
    treeLoadedKeys: {
        type: PropType<Key[]>;
    };
    treeCheckable: {
        type: BooleanConstructor;
        default: any;
    };
    treeCheckStrictly: {
        type: BooleanConstructor;
        default: any;
    };
    showCheckedStrategy: {
        type: PropType<CheckedStrategy>;
    };
    treeDefaultExpandAll: {
        type: BooleanConstructor;
        default: any;
    };
    treeData: {
        type: PropType<DataNode[]>;
    };
    treeLine: {
        type: BooleanConstructor;
        default: any;
    };
    treeIcon: import("vue-types").VueTypeValidableDef<any>;
    showTreeIcon: {
        type: BooleanConstructor;
        default: any;
    };
    switcherIcon: import("vue-types").VueTypeValidableDef<any>;
    treeMotion: import("vue-types").VueTypeValidableDef<any>;
    children: ArrayConstructor;
    filterTreeNode: {
        type: PropType<boolean | FilterFunc<LegacyDataNode>>;
        default: any;
    };
    dropdownPopupAlign: import("vue-types").VueTypeValidableDef<any>;
    onSearch: {
        type: PropType<(value: string) => void>;
    };
    onChange: {
        type: PropType<(value: ValueType, labelList: any[], extra: ChangeEventExtra) => void>;
    };
    onTreeExpand: {
        type: PropType<(expandedKeys: Key[]) => void>;
    };
    onTreeLoad: {
        type: PropType<(loadedKeys: Key[]) => void>;
    };
    onDropdownVisibleChange: {
        type: PropType<(open: boolean) => void>;
    };
    /** `searchPlaceholder` has been removed since search box has been merged into input box */
    searchPlaceholder: import("vue-types").VueTypeValidableDef<any>;
    /** @private This is not standard API since we only used in `rc-cascader`. Do not use in your production */
    labelRender: {
        type: PropType<(entity: FlattenDataNode) => any>;
    };
};
declare class Helper<T> {
    ReturnOptionListProps: {
        prefixCls: StringConstructor;
        id: StringConstructor;
        options: {
            type: PropType<T[]>;
        };
        flattenOptions: {
            type: PropType<FlattenDataNode[]>;
        };
        height: NumberConstructor;
        itemHeight: NumberConstructor;
        virtual: {
            type: BooleanConstructor;
            default: any;
        };
        values: {
            type: PropType<Set<RawValueType>>;
        };
        multiple: {
            type: BooleanConstructor;
            default: any;
        };
        open: {
            type: BooleanConstructor;
            default: any;
        };
        defaultActiveFirstOption: {
            type: BooleanConstructor;
            default: any;
        };
        notFoundContent: import("vue-types").VueTypeValidableDef<any>;
        menuItemSelectedIcon: import("vue-types").VueTypeValidableDef<any>;
        childrenAsData: {
            type: BooleanConstructor;
            default: any;
        };
        searchValue: StringConstructor;
        onSelect: {
            type: PropType<(value: RawValueType, option: {
                selected: boolean;
            }) => void>;
        };
        onToggleOpen: {
            type: PropType<(open?: boolean) => void>;
        };
        /** Tell Select that some value is now active to make accessibility work */
        onActiveValue: {
            type: PropType<(value: RawValueType, index: number) => void>;
        };
        onScroll: {
            type: PropType<(e: UIEvent) => void>;
        };
        onMouseenter: {
            type: PropType<() => void>;
        };
    };
    ReturnTreeSelectProps: {
        multiple: {
            type: BooleanConstructor;
            default: any;
        };
        showArrow: {
            type: BooleanConstructor;
            default: any;
        };
        showSearch: {
            type: BooleanConstructor;
            default: any;
        };
        open: {
            type: BooleanConstructor;
            default: any;
        };
        defaultOpen: {
            type: BooleanConstructor;
            default: any;
        };
        value: {
            type: PropType<T>;
        };
        defaultValue: {
            type: PropType<T>;
        };
        disabled: {
            type: BooleanConstructor;
            default: any;
        };
        placeholder: import("vue-types").VueTypeValidableDef<any>;
        /** @deprecated Use `searchValue` instead */
        inputValue: StringConstructor;
        searchValue: StringConstructor;
        autoClearSearchValue: {
            type: BooleanConstructor;
            default: any;
        };
        maxTagPlaceholder: {
            type: PropType<(omittedValues: LabelValueType[]) => any>;
        };
        fieldNames: {
            type: PropType<FieldNames>;
        };
        loadData: {
            type: PropType<(dataNode: LegacyDataNode) => Promise<unknown>>;
        };
        treeNodeFilterProp: StringConstructor;
        treeNodeLabelProp: StringConstructor;
        treeDataSimpleMode: {
            type: PropType<boolean | SimpleModeConfig>;
            default: any;
        };
        treeExpandedKeys: {
            type: PropType<Key[]>;
        };
        treeDefaultExpandedKeys: {
            type: PropType<Key[]>;
        };
        treeLoadedKeys: {
            type: PropType<Key[]>;
        };
        treeCheckable: {
            type: BooleanConstructor;
            default: any;
        };
        treeCheckStrictly: {
            type: BooleanConstructor;
            default: any;
        };
        showCheckedStrategy: {
            type: PropType<CheckedStrategy>;
        };
        treeDefaultExpandAll: {
            type: BooleanConstructor;
            default: any;
        };
        treeData: {
            type: PropType<DataNode[]>;
        };
        treeLine: {
            type: BooleanConstructor;
            default: any;
        };
        treeIcon: import("vue-types").VueTypeValidableDef<any>;
        showTreeIcon: {
            type: BooleanConstructor;
            default: any;
        };
        switcherIcon: import("vue-types").VueTypeValidableDef<any>;
        treeMotion: import("vue-types").VueTypeValidableDef<any>;
        children: ArrayConstructor;
        filterTreeNode: {
            type: PropType<boolean | FilterFunc<LegacyDataNode>>;
            default: any;
        };
        dropdownPopupAlign: import("vue-types").VueTypeValidableDef<any>;
        onSearch: {
            type: PropType<(value: string) => void>;
        };
        onChange: {
            type: PropType<(value: T, labelList: any[], extra: ChangeEventExtra) => void>;
        };
        onTreeExpand: {
            type: PropType<(expandedKeys: Key[]) => void>;
        };
        onTreeLoad: {
            type: PropType<(loadedKeys: Key[]) => void>;
        };
        onDropdownVisibleChange: {
            type: PropType<(open: boolean) => void>;
        };
        /** `searchPlaceholder` has been removed since search box has been merged into input box */
        searchPlaceholder: import("vue-types").VueTypeValidableDef<any>;
        /** @private This is not standard API since we only used in `rc-cascader`. Do not use in your production */
        labelRender: {
            type: PropType<(entity: FlattenDataNode) => any>;
        };
    };
}
export declare type OptionListProps = Partial<ExtractPropTypes<Helper<DataNode>['ReturnOptionListProps']>>;
export declare type TreeSelectProps<T = DefaultValueType> = Partial<ExtractPropTypes<Helper<T>['ReturnTreeSelectProps']>>;
export {};
