import type { Alignment as ScrollStrategy } from 'hongluan-ui/es/components/virtual-list';
import type { SetupContext } from 'vue';
import type { treeEmits } from '../virtual-tree';
import type { CheckboxValueType } from 'hongluan-ui/es/components/checkbox';
import type { TreeProps, TreeNodeData, TreeKey, TreeNode, TreeData, Tree } from '../types';
export declare function useTree(props: TreeProps, emit: SetupContext<typeof treeEmits>['emit']): {
    tree: import("vue").ShallowRef<Tree>;
    flattenTree: import("vue").ComputedRef<TreeNode[]>;
    isNotEmpty: import("vue").ComputedRef<boolean>;
    listRef: import("vue").Ref<import("vue").DefineComponent<{
        className: {
            type: (ObjectConstructor | StringConstructor | ArrayConstructor)[];
            default: string;
        };
        containerElement: {
            type: (ObjectConstructor | StringConstructor)[];
            default: string;
        };
        containerProps: {
            type: import("vue").PropType<import("hongluan-ui/es/utils").Indexable<any>>;
            default: () => {};
        };
        data: {
            type: import("vue").PropType<any[]>;
            default: () => any[];
        };
        direction: {
            type: import("vue").PropType<import("hongluan-ui/es/components/virtual-list").Direction>;
            default: string;
            validator: (val: import("hongluan-ui/es/components/virtual-list").Direction) => boolean;
        };
        height: {
            readonly type: import("vue").PropType<import("hongluan-ui/es/utils").EpPropMergeType<(StringConstructor | NumberConstructor)[], never, never>>;
            readonly required: true;
            readonly validator: (val: unknown) => boolean;
            __epPropKey: true;
        };
        innerElement: {
            type: (ObjectConstructor | StringConstructor)[];
            default: string;
        };
        innerElementProps: {
            type: import("vue").PropType<import("hongluan-ui/es/utils").Indexable<any>>;
            default: () => {};
        };
        style: {
            type: import("vue").PropType<import("hongluan-ui/es/utils").StyleValue>;
        };
        useIsScrolling: {
            type: BooleanConstructor;
            default: boolean;
        };
        width: {
            readonly type: import("vue").PropType<import("hongluan-ui/es/utils").EpPropMergeType<(StringConstructor | NumberConstructor)[], never, never>>;
            readonly required: false;
            readonly validator: (val: unknown) => boolean;
            __epPropKey: true;
        };
        perfMode: {
            type: BooleanConstructor;
            default: boolean;
        };
        scrollbarAlwaysOn: {
            type: BooleanConstructor;
            default: boolean;
        };
        cache: {
            type: import("vue").PropType<number>;
            default: number;
        };
        estimatedItemSize: {
            type: import("vue").PropType<number>;
        };
        layout: {
            type: import("vue").PropType<import("hongluan-ui/es/components/virtual-list").LayoutDirection>;
            default: string;
        };
        initScrollOffset: {
            type: NumberConstructor;
            default: number;
        };
        total: {
            readonly type: import("vue").PropType<number>;
            readonly required: true;
            readonly validator: (val: unknown) => boolean;
            __epPropKey: true;
        };
        itemSize: {
            type: import("vue").PropType<number | import("hongluan-ui/es/components/virtual-list").ItemSize>;
            required: boolean;
        };
    }, {
        clientSize: import("vue").ComputedRef<import("hongluan-ui/es/utils").EpPropMergeType<(StringConstructor | NumberConstructor)[], never, never>>;
        estimatedTotalSize: import("vue").ComputedRef<number>;
        windowStyle: import("vue").ComputedRef<unknown[]>;
        windowRef: import("vue").Ref<HTMLElement>;
        innerRef: import("vue").Ref<HTMLElement>;
        innerStyle: import("vue").ComputedRef<{
            height: string;
            pointerEvents: string;
            width: string;
        }>;
        itemsToRender: import("vue").ComputedRef<number[]>;
        scrollbarRef: import("vue").Ref<any>;
        states: import("vue").Ref<{
            isScrolling: boolean;
            scrollDir: string;
            scrollOffset: number;
            updateRequested: boolean;
            isScrollbarDragging: boolean;
            scrollbarAlwaysOn: boolean;
        }>;
        getItemStyle: (idx: number) => import("vue").CSSProperties;
        onScroll: (e: Event) => void;
        onScrollbarScroll: (distanceToGo: number, totalSteps: number) => void;
        onWheel: (e: WheelEvent) => void;
        scrollTo: (offset: number) => void;
        scrollToItem: (idx: number, alignment?: ScrollStrategy) => void;
        resetScrollTop: () => void;
    }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("scroll" | "itemRendered")[], "scroll" | "itemRendered", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
        className: {
            type: (ObjectConstructor | StringConstructor | ArrayConstructor)[];
            default: string;
        };
        containerElement: {
            type: (ObjectConstructor | StringConstructor)[];
            default: string;
        };
        containerProps: {
            type: import("vue").PropType<import("hongluan-ui/es/utils").Indexable<any>>;
            default: () => {};
        };
        data: {
            type: import("vue").PropType<any[]>;
            default: () => any[];
        };
        direction: {
            type: import("vue").PropType<import("hongluan-ui/es/components/virtual-list").Direction>;
            default: string;
            validator: (val: import("hongluan-ui/es/components/virtual-list").Direction) => boolean;
        };
        height: {
            readonly type: import("vue").PropType<import("hongluan-ui/es/utils").EpPropMergeType<(StringConstructor | NumberConstructor)[], never, never>>;
            readonly required: true;
            readonly validator: (val: unknown) => boolean;
            __epPropKey: true;
        };
        innerElement: {
            type: (ObjectConstructor | StringConstructor)[];
            default: string;
        };
        innerElementProps: {
            type: import("vue").PropType<import("hongluan-ui/es/utils").Indexable<any>>;
            default: () => {};
        };
        style: {
            type: import("vue").PropType<import("hongluan-ui/es/utils").StyleValue>;
        };
        useIsScrolling: {
            type: BooleanConstructor;
            default: boolean;
        };
        width: {
            readonly type: import("vue").PropType<import("hongluan-ui/es/utils").EpPropMergeType<(StringConstructor | NumberConstructor)[], never, never>>;
            readonly required: false;
            readonly validator: (val: unknown) => boolean;
            __epPropKey: true;
        };
        perfMode: {
            type: BooleanConstructor;
            default: boolean;
        };
        scrollbarAlwaysOn: {
            type: BooleanConstructor;
            default: boolean;
        };
        cache: {
            type: import("vue").PropType<number>;
            default: number;
        };
        estimatedItemSize: {
            type: import("vue").PropType<number>;
        };
        layout: {
            type: import("vue").PropType<import("hongluan-ui/es/components/virtual-list").LayoutDirection>;
            default: string;
        };
        initScrollOffset: {
            type: NumberConstructor;
            default: number;
        };
        total: {
            readonly type: import("vue").PropType<number>;
            readonly required: true;
            readonly validator: (val: unknown) => boolean;
            __epPropKey: true;
        };
        itemSize: {
            type: import("vue").PropType<number | import("hongluan-ui/es/components/virtual-list").ItemSize>;
            required: boolean;
        };
    }>> & {
        onScroll?: (...args: any[]) => any;
        onItemRendered?: (...args: any[]) => any;
    }, {
        data: any[];
        className: string | Record<string, any> | unknown[];
        layout: import("hongluan-ui/es/components/virtual-list").LayoutDirection;
        direction: import("hongluan-ui/es/components/virtual-list").Direction;
        scrollbarAlwaysOn: boolean;
        cache: number;
        useIsScrolling: boolean;
        perfMode: boolean;
        containerElement: string | Record<string, any>;
        containerProps: {};
        innerElement: string | Record<string, any>;
        innerElementProps: {};
        initScrollOffset: number;
    }>>;
    getKey: (node: TreeNodeData) => TreeKey;
    getChildren: (node: TreeNodeData) => TreeNodeData[];
    toggleExpand: (node: TreeNode) => void;
    toggleCheckbox: (node: TreeNode, isChecked: CheckboxValueType, nodeClick?: boolean) => void;
    isExpanded: (node: TreeNode) => boolean;
    isChecked: (node: TreeNode) => boolean;
    isIndeterminate: (node: TreeNode) => boolean;
    isDisabled: (node: TreeNode) => boolean;
    isCurrent: (node: TreeNode) => boolean;
    isForceHiddenExpandIcon: (node: TreeNode) => boolean;
    handleNodeClick: (node: TreeNode, e: MouseEvent) => void;
    handleNodeCheck: (node: TreeNode, checked: CheckboxValueType) => void;
    getCurrentNode: () => TreeNodeData | undefined;
    getCurrentKey: () => TreeKey | undefined;
    setCurrentKey: (key: TreeKey) => void;
    getCheckedKeys: (leafOnly?: boolean) => TreeKey[];
    getCheckedNodes: (leafOnly?: boolean) => TreeNodeData[];
    getHalfCheckedKeys: () => TreeKey[];
    getHalfCheckedNodes: () => TreeNodeData[];
    setChecked: (key: TreeKey, isChecked: boolean) => void;
    setCheckedKeys: (keys: TreeKey[]) => void;
    filter: (query: string) => void;
    setData: (data: TreeData) => void;
    getNode: (data: TreeKey | TreeNodeData) => TreeNode;
    expandNode: (node: TreeNode) => void;
    collapseNode: (node: TreeNode) => void;
    setExpandedKeys: (keys: TreeKey[]) => void;
    scrollToNode: (key: TreeKey, strategy?: ScrollStrategy) => void;
    scrollTo: (offset: number) => void;
};
