import React, { Key, ReactNode } from 'react';
import PropTypes from 'prop-types';
import TreeNode from './TreeNode';
import { Select, SelectProps } from '../select/Select';
import DataSet from '../data-set/DataSet';
import Record from '../data-set/Record';
import { CheckedStrategy } from '../data-set/enum';
export interface TreeSelectProps extends SelectProps {
    treeCheckable?: boolean;
    treeDefaultExpandAll?: boolean;
    treeDefaultExpandedKeys?: Key[];
    async?: boolean;
    loadData?: (node: any) => Promise<any>;
    showCheckedStrategy?: CheckedStrategy;
}
export default class TreeSelect extends Select<TreeSelectProps> {
    static displayName: string;
    static propTypes: {
        id: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<import("../core/enum").Size>;
        suffixCls: PropTypes.Requireable<string>;
        prefixCls: PropTypes.Requireable<string>;
        title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
        hidden: PropTypes.Requireable<boolean>;
        autoFocus: PropTypes.Requireable<boolean>;
        accessKey: PropTypes.Requireable<string | boolean>;
        dir: PropTypes.Requireable<string>;
        contentEditable: PropTypes.Requireable<string | boolean>;
        draggable: PropTypes.Requireable<string | boolean>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        lang: PropTypes.Requireable<string>;
        spellCheck: PropTypes.Requireable<boolean>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        dataSet: PropTypes.Requireable<object>;
        _inTable: PropTypes.Requireable<boolean>;
        type: PropTypes.Requireable<string>;
        name: PropTypes.Requireable<string>;
        value: PropTypes.Requireable<any>;
        defaultValue: PropTypes.Requireable<any>;
        required: PropTypes.Requireable<boolean>;
        readOnly: PropTypes.Requireable<boolean>;
        form: PropTypes.Requireable<string>;
        dataIndex: PropTypes.Requireable<number>;
        multiple: PropTypes.Requireable<boolean>;
        range: PropTypes.Requireable<boolean | (string | null | undefined)[]>;
        rowSpan: PropTypes.Requireable<number>;
        newLine: PropTypes.Requireable<boolean>;
        colSpan: PropTypes.Requireable<number>;
        validator: PropTypes.Requireable<(...args: any[]) => any>;
        onInvalid: PropTypes.Requireable<(...args: any[]) => any>;
        help: PropTypes.Requireable<string>;
        showHelp: PropTypes.Requireable<import("../field/enum").ShowHelp>;
        renderer: PropTypes.Requireable<(...args: any[]) => any>;
        validationRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        maxTagPlaceholder: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        maxTagCount: PropTypes.Requireable<number>;
        maxTagTextLength: PropTypes.Requireable<number>;
        pristine: PropTypes.Requireable<boolean>;
        trim: PropTypes.Requireable<import("../data-set/enum").FieldTrim>;
        onBeforeChange: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onInput: PropTypes.Requireable<(...args: any[]) => any>;
        onEnterDown: PropTypes.Requireable<(...args: any[]) => any>;
        fieldClassName: PropTypes.Requireable<string>;
        highlight: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        highlightRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        useColon: PropTypes.Requireable<boolean>;
        showValidation: PropTypes.Requireable<string>;
        placeholder: PropTypes.Requireable<string | (string | null | undefined)[]>;
        minLength: PropTypes.Requireable<number>;
        maxLength: PropTypes.Requireable<number>;
        pattern: PropTypes.Requireable<string | object>;
        autoComplete: PropTypes.Requireable<string>;
        prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        suffix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        clearButton: PropTypes.Requireable<boolean>;
        addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        addonBeforeStyle: PropTypes.Requireable<object>;
        addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        addonAfterStyle: PropTypes.Requireable<object>;
        restrict: PropTypes.Requireable<string | object>;
        isFlat: PropTypes.Requireable<boolean>;
        valueChangeAction: PropTypes.Requireable<import("../text-field/enum").ValueChangeAction>;
        wait: PropTypes.Requireable<number>;
        waitType: PropTypes.Requireable<import("../core/enum").WaitType>;
        groupClassName: PropTypes.Requireable<string>;
        showLengthInfo: PropTypes.Requireable<boolean>;
        border: PropTypes.Requireable<boolean>;
        popupContent: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        popupCls: PropTypes.Requireable<string>;
        popupStyle: PropTypes.Requireable<object>;
        popupPlacement: PropTypes.Requireable<string>;
        trigger: React.Requireable<any>;
        triggerShowDelay: PropTypes.Requireable<number>;
        triggerHiddenDelay: PropTypes.Requireable<number>;
        onPopupHiddenChange: PropTypes.Requireable<(...args: any[]) => any>;
        getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
        getPopupAlignTarget: PropTypes.Requireable<(...args: any[]) => any>;
        tabIntoPopupContent: PropTypes.Requireable<boolean>;
        viewMode: PropTypes.Requireable<string>;
        combo: PropTypes.Requireable<boolean>;
        commonItem: PropTypes.Requireable<any[]>;
        maxCommonTagPlaceholder: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        maxCommonTagCount: PropTypes.Requireable<number>;
        maxCommonTagTextLength: PropTypes.Requireable<number>;
        searchable: PropTypes.Requireable<boolean>;
        searchMatcher: PropTypes.Requireable<string | ((...args: any[]) => any)>;
        paramMatcher: PropTypes.Requireable<string | ((...args: any[]) => any)>;
        primitiveValue: PropTypes.Requireable<boolean>;
        optionRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        notFoundContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        pagingOptionContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        onOption: PropTypes.Requireable<(...args: any[]) => any>;
        noCache: PropTypes.Requireable<boolean>;
        dropdownMatchSelectWidth: PropTypes.Requireable<boolean>;
        selectAllButton: PropTypes.Requireable<boolean | ((...args: any[]) => any)>;
        reverse: PropTypes.Requireable<boolean>;
        optionTooltip: PropTypes.Requireable<string>;
        defaultActiveFirstOption: PropTypes.Requireable<boolean>; /**
         * fixed when ie the scroll width would cover the item width
         */
        treeCheckable: PropTypes.Requireable<boolean>;
        showCheckedStrategy: PropTypes.Requireable<string>;
        treeDefaultExpandAll: PropTypes.Requireable<boolean>;
        treeDefaultExpandedKeys: PropTypes.Requireable<(string | number | null | undefined)[]>;
    };
    static defaultProps: {
        suffixCls: string;
        dropdownMatchSelectWidth: boolean;
        showCheckedStrategy: string;
        reverse: boolean;
        combo: boolean;
        checkValueOnOptionsChange: boolean;
        onOption: ({ record }: {
            record: any;
        }) => {
            disabled: any;
        };
        selectAllButton: boolean;
        clearButton: boolean;
        popupPlacement: string;
        triggerShowDelay: number;
        triggerHiddenDelay: number;
        viewMode: string;
        multiple: boolean;
        border: boolean;
        valueChangeAction: import("../text-field/enum").ValueChangeAction;
        waitType: import("../core/enum").WaitType;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        trim: import("../data-set/enum").FieldTrim;
    };
    static TreeNode: typeof TreeNode;
    expandedKeys: string[] | undefined;
    get parentField(): string;
    get idField(): string;
    get options(): DataSet;
    get treeData(): Record[];
    get selectedKeys(): Key[];
    handleSearch(text?: string | string[] | undefined): void;
    handleExpand(keys: any): void;
    get multiple(): boolean;
    handleTreeSelect(_e: any, { node }: {
        node: any;
    }): void;
    handleTreeCheck(_e: any, { node }: {
        node: any;
    }): void;
    handleTreeNode(e: any): import("../option/Option").OptionProps;
    handleLoadData(event: any): Promise<any>;
    renderSelectAll(): void;
    getMenu(menuProps?: object): ReactNode;
}
