/**
 * @file 预览区 DOM hash 对齐
 * @module renderer/incremental/DomReconciler
 *
 * 按 `data-hash` 复用 DOM 节点；仅对无法复用或内容变更的块调用 `renderBlock`。
 * reconcile 完成后输出与 `mount.children` 对齐的 {@link BlockIndex}[]。
 *
 * ## 复用策略
 *
 * 1. 精确 `data-hash` 匹配 pool 中旧节点
 * 2. 否则按 {@link contentHashPrefix} 匹配（reparse 随机后缀变化、内容未变）
 *
 * ## DOM 更新
 *
 * 使用 {@link syncMountOrder} 最小化 DOM 操作：顺序未变时不移动节点，
 * 避免 iframe/video 因 detach 重载。不可 parse 的块跳过（与全量渲染一致）。
 *
 * 定义块（`globalEffect`）编辑时由 {@link IncrementalSession} 降级全量渲染，本模块不做特判。
 */
import type { MarkdownNode } from "../../transformer/core/MarkdownNode.js";
import type { TransformerEngine } from "../../transformer/TransformerEngine.js";
import { BlockIndex } from "../../renderer/incremental/BlockIndex";
/** {@link reconcileDom} 的返回值。 */
export interface DomReconcileResult {
    /** 是否成功完成 reconcile */
    ok: boolean;
    /** 与 `mount.children` 顺序一致的块索引 */
    blocks: BlockIndex[];
    /** 新建/替换或行号漂移的块起始行（0-based，供 scroll-sync / 事件） */
    changedStartLines: number[];
    /** 失败原因（`ok === false` 时） */
    failReason?: string;
}
/** {@link reconcileDom} 的可选参数。 */
export interface DomReconcileOptions {
    /** 上次渲染的块索引，用于行号漂移检测 */
    prevBlocks?: BlockIndex[];
}
/**
 * hash 键 DOM reconcile：复用未变块，渲染变更块，重建 BlockIndex。
 *
 * @param mount       预览区挂载点
 * @param ast         增量 parse 后的 AST 根
 * @param transformer 渲染引擎
 * @param options     可选：上次块索引
 */
export declare function reconcileDom(mount: HTMLElement, ast: MarkdownNode, transformer: TransformerEngine, options?: DomReconcileOptions): DomReconcileResult;
//# sourceMappingURL=DomReconciler.d.ts.map