import type { PopupProps } from '../popup';
import type { TreeNodeModel, TreeProps } from '../tree';
import type { LNode, TreeOptionData } from '../../common.type';
export interface TypeTreeSelectProps<DataOption extends TreeOptionData = TreeOptionData> {
    clearable?: boolean;
    collapsedItems?: LNode<{
        value: DataOption[];
        collapsedSelectedItems: DataOption[];
        count: number;
    }>;
    data?: Array<DataOption>;
    disabled?: boolean;
    empty?: string | LNode;
    filter?: (filterWords: string, option: DataOption) => boolean;
    filterable?: boolean;
    loading?: boolean;
    loadingText?: string | LNode;
    max?: number;
    minCollapsedNum?: number;
    multiple?: boolean;
    placeholder?: string;
    popupProps?: PopupProps;
    prefixIcon?: LNode;
    showCheckAll?: boolean;
    size?: 'small' | 'medium' | 'large';
    treeProps?: TreeProps;
    value?: TreeSelectValue;
    defaultValue?: TreeSelectValue;
    valueDisplay?: LNode<{
        value: DataOption[];
        onClose: () => void;
    }>;
    valueType?: 'value' | 'object';
    onBlur?: (context: {
        value: TreeSelectValue;
        e: FocusEvent;
    }) => void;
    onChange?: (value: TreeSelectValue, context: {
        node: TreeNodeModel<DataOption>;
    }) => void;
    onClear?: (context: {
        e: MouseEvent;
    }) => void;
    onFocus?: (context: {
        value: TreeSelectValue;
        e: FocusEvent;
    }) => void;
    onRemove?: (options: RemoveOptions<DataOption>) => void;
    onSearch?: (filterWords: string) => void;
}
export declare type TreeSelectValue = string | number | object | Array<TreeSelectValue>;
export interface RemoveOptions<T> {
    value: string | number | object;
    data: T;
    e: MouseEvent;
}
export interface TreeSelectNodeValue {
    value: TreeSelectValue;
    label: string;
}
