import { type PropType, type VNodeChild } from 'vue';
import type { TreeNodeData } from '../Tree';
export type TreeSelectMode = 'single' | 'multiple' | 'checkbox';
export type TreeSelectValue<Mode extends TreeSelectMode> = Mode extends 'single' ? string | null : string[];
export type CheckedStrategy = 'all' | 'parent' | 'child';
export interface TreeSelectRenderNodePayload {
    node: TreeNodeData;
    level: number;
    expanded: boolean;
    hasChildren: boolean;
    selected: boolean;
    checked: boolean;
    indeterminate: boolean;
}
export interface TreeSelectChevronAriaLabels {
    expand?: string;
    collapse?: string;
}
export interface TreeSelectProps<Mode extends TreeSelectMode = 'single'> {
    data: TreeNodeData[];
    mode?: Mode;
    modelValue?: TreeSelectValue<Mode>;
    value?: TreeSelectValue<Mode>;
    defaultValue?: TreeSelectValue<Mode>;
    onChange?: (value: TreeSelectValue<Mode>) => void;
    checkStrictly?: boolean;
    checkedStrategy?: CheckedStrategy;
    defaultExpandedValues?: string[];
    defaultExpandAll?: boolean;
    expandedValues?: string[];
    onExpandedChange?: (values: string[]) => void;
    searchable?: boolean;
    searchValue?: string;
    defaultSearchValue?: string;
    onSearchChange?: (value: string) => void;
    [key: string]: any;
}
export declare const TreeSelectOption: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    node: {
        type: PropType<TreeNodeData>;
        required: true;
    };
    level: {
        type: NumberConstructor;
        required: true;
    };
    hasChildren: {
        type: BooleanConstructor;
        default: boolean;
    };
    expanded: {
        type: BooleanConstructor;
        default: boolean;
    };
    selected: {
        type: BooleanConstructor;
        default: boolean;
    };
    checked: {
        type: BooleanConstructor;
        default: boolean;
    };
    indeterminate: {
        type: BooleanConstructor;
        default: boolean;
    };
    showCheckbox: {
        type: BooleanConstructor;
        default: boolean;
    };
    isLastChild: {
        type: BooleanConstructor;
        default: boolean;
    };
    lineGuides: {
        type: PropType<boolean[]>;
        default: () => never[];
    };
    withLines: {
        type: BooleanConstructor;
        default: boolean;
    };
    onToggleExpand: PropType<(value: string) => void>;
    renderNode: PropType<(payload: TreeSelectRenderNodePayload) => VNodeChild>;
    chevronAriaLabels: PropType<TreeSelectChevronAriaLabels>;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    node: {
        type: PropType<TreeNodeData>;
        required: true;
    };
    level: {
        type: NumberConstructor;
        required: true;
    };
    hasChildren: {
        type: BooleanConstructor;
        default: boolean;
    };
    expanded: {
        type: BooleanConstructor;
        default: boolean;
    };
    selected: {
        type: BooleanConstructor;
        default: boolean;
    };
    checked: {
        type: BooleanConstructor;
        default: boolean;
    };
    indeterminate: {
        type: BooleanConstructor;
        default: boolean;
    };
    showCheckbox: {
        type: BooleanConstructor;
        default: boolean;
    };
    isLastChild: {
        type: BooleanConstructor;
        default: boolean;
    };
    lineGuides: {
        type: PropType<boolean[]>;
        default: () => never[];
    };
    withLines: {
        type: BooleanConstructor;
        default: boolean;
    };
    onToggleExpand: PropType<(value: string) => void>;
    renderNode: PropType<(payload: TreeSelectRenderNodePayload) => VNodeChild>;
    chevronAriaLabels: PropType<TreeSelectChevronAriaLabels>;
}>> & Readonly<{}>, {
    expanded: boolean;
    checked: boolean;
    indeterminate: boolean;
    hasChildren: boolean;
    withLines: boolean;
    selected: boolean;
    showCheckbox: boolean;
    isLastChild: boolean;
    lineGuides: boolean[];
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
export declare const TreeSelect: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
    data: {
        type: PropType<TreeNodeData[]>;
        required: true;
    };
    mode: {
        type: PropType<TreeSelectMode>;
        default: string;
    };
    modelValue: {
        type: PropType<any>;
        default: undefined;
    };
    value: {
        type: PropType<any>;
        default: undefined;
    };
    defaultValue: {
        type: PropType<any>;
        default: undefined;
    };
    onChange: PropType<(value: any) => void>;
    checkStrictly: BooleanConstructor;
    checkedStrategy: {
        type: PropType<CheckedStrategy>;
        default: string;
    };
    defaultExpandedValues: PropType<string[]>;
    defaultExpandAll: BooleanConstructor;
    expandedValues: PropType<string[]>;
    onExpandedChange: PropType<(values: string[]) => void>;
    expandOnClick: BooleanConstructor;
    searchable: BooleanConstructor;
    searchValue: StringConstructor;
    defaultSearchValue: StringConstructor;
    onSearchChange: PropType<(value: string) => void>;
    filter: PropType<(query: string, node: TreeNodeData) => boolean>;
    nothingFoundMessage: {
        type: PropType<any>;
        default: undefined;
    };
    allowDeselect: {
        type: BooleanConstructor;
        default: boolean;
    };
    clearable: BooleanConstructor;
    maxValues: {
        type: NumberConstructor;
        default: number;
    };
    maxDisplayedValues: NumberConstructor;
    maxDisplayedValuesContent: {
        type: PropType<any>;
        default: undefined;
    };
    onRemove: PropType<(value: string) => void>;
    onClear: PropType<() => void>;
    renderNode: PropType<any>;
    withLines: {
        type: BooleanConstructor;
        default: boolean;
    };
    hiddenInputProps: ObjectConstructor;
    hiddenInputValuesDivider: {
        type: StringConstructor;
        default: string;
    };
    maxDropdownHeight: {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
    };
    scrollAreaProps: ObjectConstructor;
    dropdownOpened: {
        type: BooleanConstructor;
        default: undefined;
    };
    defaultDropdownOpened: BooleanConstructor;
    onDropdownOpen: PropType<() => void>;
    onDropdownClose: PropType<() => void>;
    comboboxProps: ObjectConstructor;
    clearSearchOnChange: {
        type: BooleanConstructor;
        default: boolean;
    };
    openOnFocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    chevronAriaLabels: PropType<TreeSelectChevronAriaLabels>;
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
    [key: string]: any;
}>[], {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "update:searchValue")[], "update:modelValue" | "update:searchValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
    data: {
        type: PropType<TreeNodeData[]>;
        required: true;
    };
    mode: {
        type: PropType<TreeSelectMode>;
        default: string;
    };
    modelValue: {
        type: PropType<any>;
        default: undefined;
    };
    value: {
        type: PropType<any>;
        default: undefined;
    };
    defaultValue: {
        type: PropType<any>;
        default: undefined;
    };
    onChange: PropType<(value: any) => void>;
    checkStrictly: BooleanConstructor;
    checkedStrategy: {
        type: PropType<CheckedStrategy>;
        default: string;
    };
    defaultExpandedValues: PropType<string[]>;
    defaultExpandAll: BooleanConstructor;
    expandedValues: PropType<string[]>;
    onExpandedChange: PropType<(values: string[]) => void>;
    expandOnClick: BooleanConstructor;
    searchable: BooleanConstructor;
    searchValue: StringConstructor;
    defaultSearchValue: StringConstructor;
    onSearchChange: PropType<(value: string) => void>;
    filter: PropType<(query: string, node: TreeNodeData) => boolean>;
    nothingFoundMessage: {
        type: PropType<any>;
        default: undefined;
    };
    allowDeselect: {
        type: BooleanConstructor;
        default: boolean;
    };
    clearable: BooleanConstructor;
    maxValues: {
        type: NumberConstructor;
        default: number;
    };
    maxDisplayedValues: NumberConstructor;
    maxDisplayedValuesContent: {
        type: PropType<any>;
        default: undefined;
    };
    onRemove: PropType<(value: string) => void>;
    onClear: PropType<() => void>;
    renderNode: PropType<any>;
    withLines: {
        type: BooleanConstructor;
        default: boolean;
    };
    hiddenInputProps: ObjectConstructor;
    hiddenInputValuesDivider: {
        type: StringConstructor;
        default: string;
    };
    maxDropdownHeight: {
        type: (NumberConstructor | StringConstructor)[];
        default: number;
    };
    scrollAreaProps: ObjectConstructor;
    dropdownOpened: {
        type: BooleanConstructor;
        default: undefined;
    };
    defaultDropdownOpened: BooleanConstructor;
    onDropdownOpen: PropType<() => void>;
    onDropdownClose: PropType<() => void>;
    comboboxProps: ObjectConstructor;
    clearSearchOnChange: {
        type: BooleanConstructor;
        default: boolean;
    };
    openOnFocus: {
        type: BooleanConstructor;
        default: boolean;
    };
    chevronAriaLabels: PropType<TreeSelectChevronAriaLabels>;
}>> & Readonly<{
    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
    "onUpdate:searchValue"?: ((...args: any[]) => any) | undefined;
}>, {
    mode: TreeSelectMode;
    value: any;
    defaultValue: any;
    clearable: boolean;
    checkStrictly: boolean;
    expandOnClick: boolean;
    withLines: boolean;
    modelValue: any;
    maxDropdownHeight: string | number;
    nothingFoundMessage: any;
    searchable: boolean;
    allowDeselect: boolean;
    dropdownOpened: boolean;
    defaultDropdownOpened: boolean;
    openOnFocus: boolean;
    maxValues: number;
    clearSearchOnChange: boolean;
    hiddenInputValuesDivider: string;
    checkedStrategy: CheckedStrategy;
    defaultExpandAll: boolean;
    maxDisplayedValuesContent: any;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
