import type { PropType, ExtractPropTypes } from 'vue';
import type { Arrayable, ComponentSize, JSXElement, StyleValue } from '../../_utils/types';
import type { IRecord, IFetch } from '../../table/src/table/types';
export type NodeKey = string | number;
type IFieldDefine = {
    textKey?: string;
    valueKey?: string;
    children?: string;
};
export declare const _props: {
    modelValue: {
        type: PropType<NodeKey[]>;
    };
    size: {
        type: PropType<ComponentSize>;
        validator: (val: string) => boolean;
    };
    filterable: {
        type: BooleanConstructor;
        default: boolean;
    };
    multiple: {
        type: BooleanConstructor;
    };
    draggable: {
        type: BooleanConstructor;
    };
    disabled: {
        type: BooleanConstructor;
    };
    defaultExpandAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    defaultExpandedKeys: {
        type: PropType<NodeKey[]>;
        default: () => never[];
    };
    defaultSelectedKeys: {
        type: PropType<NodeKey[]>;
        default: () => never[];
    };
    dataSource: {
        type: PropType<IRecord<any>[]>;
    };
    fetch: {
        type: PropType<IFetch>;
    };
    fieldsDefine: {
        type: PropType<IFieldDefine>;
    };
    autoFocus: {
        type: BooleanConstructor;
    };
    asyncLoad: {
        type: BooleanConstructor;
    };
    checkStrictly: {
        type: BooleanConstructor;
    };
    checkStrategy: {
        type: PropType<"SHOW_ALL" | "SHOW_PARENT" | "SHOW_CHILD">;
        default: string;
    };
    showSearchBar: {
        type: BooleanConstructor;
        default: boolean;
    };
    showCollapse: {
        type: BooleanConstructor;
        default: boolean;
    };
    placeholder: {
        type: StringConstructor;
    };
    titleRender: {
        type: PropType<(row: IRecord, node: any) => JSXElement>;
    };
    class: {
        type: PropType<string | Arrayable<Record<string, boolean>>>;
    };
    style: {
        type: PropType<StyleValue>;
    };
};
export declare const _emits: {
    "update:modelValue": (val: NodeKey[]) => boolean;
    selectChange: (record: IRecord) => boolean;
    checkChange: (records: IRecord[]) => boolean;
    dropChange: (...rest: any[]) => boolean;
    dragStart: (...rest: any[]) => boolean;
    expand: (expandKeys: NodeKey[], option: {
        expanded: boolean;
        node: any;
    }) => boolean;
};
export type SearchTreeRef = {
    INSERT_RECORD: (parentKey: NodeKey, record: IRecord | IRecord[]) => void;
    REMOVE_RECORD: (key: NodeKey) => void;
    UPDATE_RECORD: (key: NodeKey, record: IRecord) => void;
};
export type SearchTreeProps = ExtractPropTypes<typeof _props>;
export type SearchTreeEmits = typeof _emits;
export {};
