import type { Editor } from "../../editor/editor/Editor";
import type { EventBus } from "../../core/event/EventBus";
/** 在编辑器和预览面板之间按源行位置同步滚动。 */
export declare class ScrollSync {
    private readonly editor;
    private readonly eventBus;
    private currentBlocks;
    private isSyncingLeft;
    private isSyncingRight;
    private readonly editorScroll;
    private readonly previewScroll;
    /** 块 DOM 挂载点（`.penna-render`）；无内层时等于 `previewScroll` */
    private readonly previewContent;
    private readonly offs;
    private destroyed;
    private leftRaf;
    private rightRaf;
    private readonly releaseRightSync;
    private readonly releaseLeftSync;
    private readonly onEditorScroll;
    private readonly onPreviewScroll;
    /**
     * 创建双向滚动同步，并监听预览块索引和目录跳转事件。
     *
     * @param editor 提供 CodeMirror 滚动容器和文档行信息的编辑器实例。
     * @param previewEl 可滚动的预览容器。
     * @param eventBus 用于接收预览渲染和目录点击事件的事件总线。
     */
    constructor(editor: Editor, previewEl: HTMLElement, eventBus: EventBus);
    /** 取消未执行的滚动任务并注销所有事件监听。 */
    destroy(): void;
    /**
     * 查找与编辑器源行对应的预览块顶部位置。
     *
     * @param targetLine 编辑器中从零开始计数的目标源行。
     * @returns 预览容器应滚动到的垂直偏移量。
     */
    private getPreviewScrollTopForLine;
    /**
     * 查找当前预览滚动位置对应的源行。
     *
     * @returns 对应块的源行号；没有块时返回首行。
     */
    private getLineForPreviewScroll;
}
//# sourceMappingURL=ScrollSync.d.ts.map