/**
 * 渲染元素树，反应每个节点在渲染流程中的状态和位置
 *
 * @description
 * 该类依据下述流程进行工作：
 * 1. 初始化树：通过调用 initializeTree 传入整个 BlockSchema 进行初始化，遍历 BlockSchema 创建
 * 节点
 * 2. 节点创建：
 *   1. 判断该节点是否存在循环，或由循环节点创建 => 3
 *   2. 如果不存在循环，直接创建节点数据
 *   3. 如果存在循环，获取 loop 数据创建多个节点
 * 3. 创建 Schema 的缓存，用于树的更新
 * 4. 树的 diff：
 *    1. 遍历新的树，对比第 3 步创建的缓存，产生包含 ADD、REMOVE、UPDATE、MOVE 的事务
 *    2. 应用事务
 */
import type { ComponentSchema } from '@mo-fang/types';
import type { Store } from '../models';
import { Element, RenderTree } from './element';
/**
 * 需要追踪变化的部分组件 Schema
 */
export type TrackedComponentSchema = Pick<ComponentSchema, 'uuid' | 'name' | 'condition' | 'loop' | 'props' | 'useRef' | 'children' | 'slotName' | 'slotMap' | 'layout'>;
export declare class ElementTree {
    /**
     * 所属的 Store
     */
    store: Store;
    /**
     * 根元素
     */
    rootElement: Element;
    /**
     * 渲染树
     */
    renderTree: RenderTree;
    constructor(schema: ComponentSchema, store: Store);
    /**
     * 初始化树
     */
    initializeTree: (schema: ComponentSchema) => Element;
    /**
     * 设置渲染树
     *
     * @param nextTree
     */
    setRenderTree: (nextTree: RenderTree) => void;
    /**
     * 获取指定节点的作用域
     *
     * @param nodeId
     */
    getScopeFromNodeId: (nodeId: string) => Record<string, unknown> | undefined;
    /**
     * 根据节点 id 获取节点
     *
     * @param nodeId
     * @returns
     */
    getElementFromByNodeId: (nodeId: string) => Element | undefined;
    /**
     * 萃取组件 Schema 中需要追踪的部分
     *
     * @param componentSchema
     */
    pickComponentSchema: (componentSchema: ComponentSchema) => TrackedComponentSchema;
}
//# sourceMappingURL=element-tree.d.ts.map