import { Ref } from 'vue';
import { NodeItem, NodesGroups, WrappedNode } from './type';

export type NodesUIContext = {
    /**shadow-host */
    shadowHost?: Ref<HTMLElement | null>;
    /**富文本的dom */
    containerRef: Ref<HTMLElement | null>;
    /**菜单的ref */
    contextMenuRef?: Ref<any>;
    /**渲染组件ref */
    htmlRenderRef: Ref<any>;
    /**选中的元素 */
    selectedNodes: Ref<NodeItem[]>;
    /**更新选中的元素 */
    setSelectedNodes: (elements: NodeItem[]) => void;
    /**当前聚焦元素 */
    focusedElement: Ref<HTMLElement | null>;
    /**光标位置 */
    cursorPosition: Ref<number>;
    /**当前聚焦元素的索引 */
    focusedNodeIndex: Ref<number>;
    /**上一个元素的索引 */
    preNodeNumber: Ref<number>;
    /**当前选中节点 */
    currentNodes?: Ref<(NodeItem & {
        color: string;
        dataGroupKey: string;
        activated?: boolean;
    })[]>;
    /**当前渲染节点 */
    currentRenderNodes: Ref<NodeItem[]>;
    renderNodes: Ref<WrappedNode[]>;
    /** html是否已经渲染 */
    uiReady: Ref<boolean>;
    nodesGroups?: Ref<NodesGroups[]>;
    isFocused: Ref<boolean>;
    /** 是否可选择 */
    selectable?: Ref<boolean>;
};
export declare const nodesUIKey: unique symbol;
export declare const useNodesUIContext: () => NodesUIContext;
