import { VueNode } from '../../../utils';
import { NTree } from '../..';
import { ComputedRef, ShallowRef, PropType } from 'vue';
export interface TreeContextProps {
    selectable: boolean;
    showIcon: boolean;
    icon: NTree.TIconType;
    switcherIcon: NTree.TIconType;
    draggable: NTree.TDraggableConfig | false;
    draggingNodeKey?: NTree.TKey;
    checkable: boolean;
    customCheckable: () => any;
    checkStrictly: boolean;
    disabled: boolean;
    keyEntities: Record<NTree.TKey, NTree.IDataEntity<any>>;
    dropLevelOffset?: number;
    dropContainerKey: NTree.TKey | null;
    dropTargetKey: NTree.TKey | null;
    dropPosition: -1 | 0 | 1 | null;
    indent: number | null;
    dropIndicatorRender: (props: {
        dropPosition: -1 | 0 | 1 | null;
        dropLevelOffset?: number;
        indent: number | null;
        prefixCls: string;
    }) => VueNode;
    dragOverNodeKey: NTree.TKey | null;
    dragging: boolean;
    loadData?: (treeNode: NTree.IEventDataNode) => Promise<void>;
    filterTreeNode: (treeNode: NTree.IEventDataNode) => boolean;
    onNodeClick: NTree.TNodeMouseEventHandler;
    onNodeDoubleClick: NTree.TNodeMouseEventHandler;
    onNodeExpand: NTree.TNodeMouseEventHandler;
    onNodeSelect: NTree.TNodeMouseEventHandler;
    onNodeCheck: (e: MouseEvent, treeNode: NTree.IEventDataNode, checked: boolean) => void;
    onNodeLoad: (treeNode: NTree.IEventDataNode) => void;
    onNodeMouseEnter: NTree.TNodeMouseEventHandler;
    onNodeMouseLeave: NTree.TNodeMouseEventHandler;
    onNodeContextMenu: NTree.TNodeMouseEventHandler;
    onNodeDragStart: NTree.TNodeDragEventHandler;
    onNodeDragEnter: NTree.TNodeDragEventHandler;
    onNodeDragOver: NTree.TNodeDragEventHandler;
    onNodeDragLeave: NTree.TNodeDragEventHandler;
    onNodeDragEnd: NTree.TNodeDragEventHandler;
    onNodeDrop: NTree.TNodeDragEventHandler;
    slots: {
        title?: (data: any) => any;
        titleRender?: (data: any) => any;
        [key: string]: ((...args: any[]) => any) | undefined;
    };
}
export declare const TreeContext: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
    value: {
        type: PropType<TreeContextProps>;
    };
}>, () => import('vue').VNode<import('vue').RendererNode, import('vue').RendererElement, {
    [key: string]: any;
}>[] | undefined, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
    value: {
        type: PropType<TreeContextProps>;
    };
}>> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
export declare const useInjectTreeContext: () => ComputedRef<TreeContextProps>;
type KeysStateKeyType = {
    expandedKeysSet: ComputedRef<Set<NTree.TKey>>;
    selectedKeysSet: ComputedRef<Set<NTree.TKey>>;
    loadedKeysSet: ComputedRef<Set<NTree.TKey>>;
    loadingKeysSet: ComputedRef<Set<NTree.TKey>>;
    checkedKeysSet: ComputedRef<Set<NTree.TKey>>;
    halfCheckedKeysSet: ComputedRef<Set<NTree.TKey>>;
    expandedKeys: ShallowRef<NTree.TKey[]>;
    selectedKeys: ShallowRef<NTree.TKey[] | undefined>;
    loadedKeys: ShallowRef<NTree.TKey[]>;
    loadingKeys: ShallowRef<NTree.TKey[]>;
    checkedKeys: ShallowRef<NTree.TKey[]>;
    halfCheckedKeys: ShallowRef<NTree.TKey[]>;
    flattenNodes: ShallowRef<NTree.IFlattenNode[]>;
};
export declare const useProvideKeysState: (state: KeysStateKeyType) => void;
export declare const useInjectKeysState: () => KeysStateKeyType;
export {};
