import { Doc } from '../view/Doc';
import { BaseMetaNode, LineInfo } from './types';
import { Wp, Wtbl, Wtr, Wtc, Wr } from '../model/document';
import { Page } from '../view/Page';
type ModelMode = Wp | Wtbl | Wtr | Wtc | Wr;
export declare class LayoutMapper {
    readonly doc: Doc;
    constructor(doc: Doc);
    /** 节点信息中心 */
    dataCenter: Map<string, BaseMetaNode>;
    /** page 内所有 widget 的顺序 id */
    widgetIds: string[];
    /** 行信息中心 */
    lineCenter: Map<string, LineInfo>;
    lineIdByPage: Map<string, string[]>;
    /** 组件信息中心 */
    widgetMetaMap: Map<string, any>;
    modelMap: Map<string, ModelMode>;
    modelSplitMap: Map<string, string[]>;
    /** 扁平处理 layout 数据 */
    buildLayoutIndex(): void;
    buildModelMap(): void;
    getBaseMetaNodeById<T extends BaseMetaNode>(id?: string): T | undefined;
    getBaseMetaNodeByIds<T extends BaseMetaNode>(ids: string[]): T[] | undefined;
    getLayoutNodeById(id: string): Page | import('../view/base').BandContainer | import('..').Paragraph | import('..').Table | import('../view/TableCell').TableCell | import('../view/TableRow').TableRow | import('..').OverlayLayout | import('../view/base').OverlayContainer | import('..').TextRun | import('..').ImageRun | undefined;
    getAllPageIds(): string[];
    getLineIdsByPageId(pageId: string): string[];
    getLineInfoById(lineId: string): LineInfo | undefined;
    getWidgetMetaListById(wId: string): any;
    /**
     * 获取某个节点下的所有子节点
     * @param rootId 父节点 id
     */
    getChildMetaNodes(rootId: string): BaseMetaNode[];
    /** 获取纸张最大宽度(两边带安全距离) */
    getPageMaxWidth(): number;
    /** 获取每页的偏移量 */
    getPageOffsets(): {
        [k: string]: {
            top: number;
            left: number;
            width: number;
        };
    };
    /** 获取每一页的偏移量 */
    private getPageOffsetX;
    /** 区间匹配 - 找到原始画布Y坐标值所在的区间 */
    private findRangeMatch;
    /**
     * 获取实际的画布坐标（移除安全距离偏移）
     * 移除 SAFE_DIST 后的画布坐标
     * @param canvasX 原始画布X坐标
     * @param canvasY 原始画布Y坐标
     * @returns 去除安全距离后的坐标
     */
    toStripSafeDist(canvasX: number, canvasY: number): {
        x: number;
        y: number;
    };
    /**
     * 获取到绝对位置 （需要补充上页面偏移量）（根据标识决定是否需要补充上安全距离）
     * 获取绝对画布坐标（包含 pageOffset）
     * @param pageId 页面 id
     * @param x 坐标
     * @param y 坐标
     * @param excludeSafeDist 是否需要移除安全距离
     * @returns
     */
    getAbsoluteCanvasPosition(pageId: string, x: number, y: number, excludeSafeDist?: boolean): {
        x: number;
        y: number;
    };
    /**
     * 获取原始节点
     * @param id
     */
    getModelNodeById<T extends ModelMode>(id: string): T | undefined;
    /**
     * 记录 model 拆分成的 runs
     * @param modelId 原始 model 的 ID
     * @param layoutIds 拆分后生成的 layout run ID 列表
     */
    recordModelSplit(modelId: string, layoutId: string): void;
    /**
     * 获取 model 拆分成的 runs
     * @param id 原始 model 的 ID
     * @returns run ID 列表
     */
    getModelSplitById(id: string): string[];
    getModelNodeByLayoutId<T extends ModelMode>(layoutId: string): T;
}
export {};
