import { BuiltinComponentType } from '../../constants';
import { LayoutNode } from '../../view/base';
import { TextRun } from '../../view/runs/TextRun';
export type LineType = 'paragraph' | 'tablerow' | undefined;
export interface BuildCtx {
    currentPageId: string;
    lineId?: string;
    lineIndex: number;
    lineType?: LineType;
    tableId?: string;
    tableRowId?: string;
    tableRowIndex?: number;
    tableCellId?: string;
    tableCellIndex?: number;
    /** 内部使用：当前表格行计数 */
    __rowCounter: number;
    /** 内部使用：当前表格行内 cell 计数 */
    __cellCounter: number;
}
/** 记录一行的基础信息 */
export interface LineInfo {
    /** 节点 id */
    id: string;
    type: 'tablerow' | 'paragraph';
    /** 纸张 id */
    pageId: string;
    /** 排序 */
    sort: number;
    nextIds: string[];
    size: Array<{
        /** 布局后的文字的绝对位置 - 左边 */
        left: number;
        /** 布局后的文字的绝对位置 - 上边 */
        top: number;
        /** 布局后的文字的绝对位置 - 右边 */
        right: number;
        /** 布局后的文字的绝对位置 - 下边 */
        bottom: number;
        /** 当前行的绝对位置 - 上边 */
        lineTop: number;
        /** 当前行的绝对位置 - 下边 */
        lineBottom: number;
    }>;
}
export interface Bounds {
    left: number;
    top: number;
    right: number;
    bottom: number;
}
export type TableSelectionMode = 'none' | 'mixed' | 'row-range' | 'cell-range' | 'cell-full' | 'cell-inner';
export interface BaseMetaNode {
    /** 节点 id */
    id: string;
    /** 组件类型 */
    component: BuiltinComponentType;
    /** 组件节点信息 */
    raw?: LayoutNode;
    /** 纸张 id */
    pageId: string;
    /** 上级节点 id */
    preId: string;
    /** 宽度 */
    width: number;
    /** 高度 */
    height: number;
    /** 布局后的绝对位置 */
    absbox: {
        /** 布局后的绝对位置 - 左边 */
        left: number;
        /** 布局后的绝对位置 - 上边 */
        top: number;
        /** 布局后的绝对位置 - 右边 */
        right: number;
        /** 布局后的绝对位置 - 下边 */
        bottom: number;
    };
    /** 布局后的在父容器中的相对位置 */
    relbox: {
        /** 布局后的在父容器中的相对位置 - 左边 */
        left: number;
        /** 布局后的在父容器中的相对位置 - 上边 */
        top: number;
        /** 布局后的在父容器中的相对位置 - 右边 */
        right: number;
        /** 布局后的在父容器中的相对位置 - 下边 */
        bottom: number;
    };
    /** 组件字符长度 */
    charLength: number;
    /** 组件在全局文档的开始位置 */
    globalPosStart: number;
    /** 组件在全局文档的结束位置 */
    globalPosEnd: number;
    /** 路径 id 链路 */
    path: string[];
    /** 路径下标链路 */
    pathIndex: number[];
    /** 线性索引 */
    runIndex: number;
    /** 行信息 */
    line?: {
        /** 行类型 */
        lineType: LineType;
        /** 段落 id / 表格行 id  */
        lineId?: string;
        /** 行下标, 在 page 内第几行 */
        lineIndex?: number;
        /** 如果在表格内，表格 id */
        tableId?: string | undefined;
        tableRowId?: string | undefined;
        tableRowIndex?: number | undefined;
        tableCellId?: string | undefined;
        tableCellIndex?: number | undefined;
    };
    charMetrics?: TextRun['charMetrics'];
    charOffsets?: number[] | undefined;
    text?: string;
    lineTop?: number;
    lineBottom?: number;
}
