import { BuiltinComponentType, BuiltinComponentTypeConst } from '../../constants';
import { LayoutNode } from '../base/LayoutNode';
import { BandContainer } from '../base/BandContainer';
import { OverlayContainer } from '../base/OverlayContainer';
import { OverlayLayout } from '../base/OverlayLayout';
import { Page } from '../Page';
import { Paragraph } from '../Paragraph';
import { Table } from '../Table';
import { TableRow } from '../TableRow';
import { TableCell } from '../TableCell';
import { TextRun } from '../runs/TextRun';
import { TextWidget } from '../runs/TextWidget';
import { ImageRun } from '../runs/ImageRun';
/** 内置 `component` 取值到画布节点类型的映射（用于 `getLayoutNodeById(id, component)` 等） */
export interface BuiltinComponentToLayoutNode {
    [BuiltinComponentTypeConst.Paper]: Page;
    [BuiltinComponentTypeConst.Header]: BandContainer;
    [BuiltinComponentTypeConst.Footer]: BandContainer;
    [BuiltinComponentTypeConst.OverlayContainer]: OverlayContainer;
    [BuiltinComponentTypeConst.OverlayLayout]: OverlayLayout;
    [BuiltinComponentTypeConst.Paragraph]: Paragraph;
    [BuiltinComponentTypeConst.Text]: TextRun;
    [BuiltinComponentTypeConst.InlineImage]: ImageRun;
    [BuiltinComponentTypeConst.Table]: Table;
    [BuiltinComponentTypeConst.TableRow]: TableRow;
    [BuiltinComponentTypeConst.TableCell]: TableCell;
}
export type LayoutNodeForComponent<C extends BuiltinComponentType> = C extends keyof BuiltinComponentToLayoutNode ? BuiltinComponentToLayoutNode[C] : LayoutNode;
export declare function isLayoutTextRun(node: LayoutNode | undefined | null): node is TextRun;
/** 字段/页面文本组件（`TextWidget` 子类）；普通纯文本 run 为 `TextRun` 而非此类 */
export declare function isLayoutTextWidget(node: LayoutNode | undefined | null): node is TextWidget;
export declare function isLayoutInlineImage(node: LayoutNode | undefined | null): node is ImageRun;
export declare function isLayoutParagraph(node: LayoutNode | undefined | null): node is Paragraph;
export declare function isLayoutTable(node: LayoutNode | undefined | null): node is Table;
export declare function isLayoutTableRow(node: LayoutNode | undefined | null): node is TableRow;
export declare function isLayoutTableCell(node: LayoutNode | undefined | null): node is TableCell;
export declare function isLayoutPage(node: LayoutNode | undefined | null): node is Page;
export declare function isLayoutOverlayLayout(node: LayoutNode | undefined | null): node is OverlayLayout;
