import { Page } from '../Page';
import { Doc } from '../Doc';
import { BuiltinComponentType } from '../../constants';
import { LayoutGroup } from './LayoutGroup';
import { OverlayLayout } from './OverlayLayout';
type ModelRef = {
    id: string;
    start?: number;
    end?: number;
};
/**
 * 布局节点配置
 */
export interface LayoutNodeOptions {
    id?: string;
    doc: Doc;
    x?: number;
    y?: number;
    width?: number;
    height?: number;
    modelRef?: ModelRef;
}
/**
 * 布局节点基类
 * 提供基础的位置、尺寸和唯一标识
 */
export declare abstract class LayoutNode {
    /** 唯一标识符 */
    id: string;
    /** 组件类型 */
    component: BuiltinComponentType;
    /** 所属文档 */
    doc: Doc;
    /** 父节点 */
    parent?: LayoutGroup;
    /** 在父容器中的相对 X 坐标 */
    x: number;
    /** 在父容器中的相对 Y 坐标 */
    y: number;
    /** 布局后的绝对 X 坐标 */
    layoutX: number;
    /** 布局后的绝对 Y 坐标 */
    layoutY: number;
    modelRef?: ModelRef;
    /** 宽度 */
    protected _width: number;
    /** 高度 */
    protected _height: number;
    constructor(options: LayoutNodeOptions);
    get width(): number;
    get height(): number;
    set width(value: number);
    set height(value: number);
    get page(): Page | undefined;
    get isWidgetRun(): boolean;
    get isPageWidgetRun(): boolean;
    get isSubRenderer(): boolean;
    get isPlaceholderRun(): boolean;
    /**
     * 获取实例对应的 page
     * tips 表格第一次初始化无 page，target 可能为空
     * @returns
     */
    getPage(): Page | undefined;
    getOverlayLayout(): OverlayLayout | undefined;
    /**
     * 布局方法：计算并设置节点的绝对位置
     * @param x 绝对 X 坐标
     * @param y 绝对 Y 坐标
     */
    layout(x?: number, y?: number): void;
}
export {};
