import type { EditorLayoutMode } from "../../editor/Layout";
import type { EventBus } from "../../core/event/EventBus";
import type { StorageAPI } from "../../core/StorageAPI";
/** 分栏比例在本地存储中使用的键名 */
export declare const SPLIT_STORAGE_KEY = "penna-editor-split";
/** 分栏拖拽条：布局切换 + 左右宽度调整 */
export declare class Divider {
    private readonly mount;
    private readonly eventBus;
    private readonly storage;
    private readonly bodyEl;
    private readonly sidebarEl;
    private mode;
    private split;
    private dragging;
    private moved;
    private readonly onPointerDown;
    private readonly onPointerMove;
    private readonly onPointerUp;
    /**
     * 创建分栏拖拽条并初始化布局状态。
     *
     * @param mount 承载拖拽条的 DOM 元素。
     * @param eventBus 用于发布布局和分栏比例变化的事件总线。
     * @param storage 用于持久化分栏比例的存储 API。
     */
    constructor(mount: HTMLElement, eventBus: EventBus, storage?: StorageAPI);
    /** 获取当前编辑器布局模式。 */
    getLayout(): EditorLayoutMode;
    /**
     * 设置编辑器布局并通知订阅者。
     *
     * @param mode 要应用的布局模式。
     */
    setLayout(mode: EditorLayoutMode): void;
    /** 获取编辑区在双栏模式下所占的宽度比例。 */
    getSplit(): number;
    /**
     * 设置编辑区宽度比例，并在双栏模式下立即更新样式。
     *
     * @param ratio 编辑区相对于可用轨道宽度的目标比例。
     */
    setSplit(ratio: number): void;
    /** 结束可能进行中的拖拽并注销 DOM 事件监听。 */
    destroy(): void;
    /** 将当前布局模式同步到容器 CSS 类和分栏样式。 */
    private applyLayout;
    /** 利用 Flex 比例完美分摊剩余空间（无需 ResizeObserver） */
    private applySplit;
    /**
     * 计算拖拽可用轨道及侧边栏的尺寸。
     *
     * @returns 容器总宽度、可用轨道宽度和可见侧边栏宽度。
     */
    private getTrackMetrics;
    /**
     * 开始主指针拖拽，并注册文档级移动和结束监听。
     *
     * @param e 触发拖拽的指针事件。
     */
    private startDrag;
    /**
     * 根据指针当前位置更新分栏比例。
     *
     * @param e 当前指针移动事件。
     */
    private moveDrag;
    /**
     * 结束拖拽、释放指针捕获，并在位置变更后持久化比例。
     *
     * @param e 可选的结束指针事件，用于释放对应的指针捕获。
     */
    private endDrag;
    /** 将当前分栏比例写入存储。 */
    private persistSplit;
    /**
     * 将页面横坐标换算为分栏比例并应用。
     *
     * @param clientX 指针相对视口的横坐标。
     */
    private updateSplitFromPointer;
}
//# sourceMappingURL=Divider.d.ts.map