import { LayoutNode, LayoutNodeOptions } from '../base';
import { TextStyle } from '../../model/types/style';
import { default as Konva } from 'konva';
import { Doc } from '../Doc';
export type TextAlign = 'left' | 'center' | 'right' | 'justify';
/**
 * 字符度量信息
 */
export interface CharMetric {
    char: string;
    width: number;
    height: number;
}
/**
 * 文本运行接口
 */
export interface ITextRun {
    readonly id: string;
    /** 组件类型 */
    readonly component: string;
    /** 组件宽度 */
    readonly width: number;
    /** 组件高度 */
    readonly height: number;
    /** 组件坐标位置 */
    readonly x: number;
    /** 组件坐标位置 */
    readonly y: number;
    /** 文本内容 */
    text: string;
    /** 字号 */
    fontSize: number;
    /** 字体 */
    fontFamily: string;
    /** 文字颜色 */
    color: string;
    /** 加粗 */
    bold?: boolean;
    /** 斜体 */
    italic?: boolean;
    /** 下划线 */
    underline?: boolean;
    /** 删除线 */
    strike?: boolean;
    /** 字间距 */
    letterSpacing?: number;
    /** 文字对齐样式 */
    textAlign?: TextAlign;
    /** 字符度量信息 */
    charMetrics: CharMetric[];
    /** 是否为占位符 */
    isPlaceholder: boolean;
    /** 是否为组合输入 */
    isComposition: boolean;
}
export interface TextRunOptions extends LayoutNodeOptions {
    text: string;
    isPlaceholder?: boolean;
    isComposition?: boolean;
    valuePath?: string;
    ascent: number;
    descent: number;
    style?: TextStyle;
    charMetrics: CharMetric[];
}
export declare class TextRun extends LayoutNode implements ITextRun {
    component: "text";
    /** 文本内容 */
    text: string;
    /** 字号 */
    fontSize: number;
    /** 字体 */
    fontFamily: string;
    /** 文字颜色 */
    color: string;
    /** 加粗 */
    bold?: boolean;
    /** 斜体 */
    italic?: boolean;
    /** 下划线 */
    underline?: boolean;
    /** 删除线 */
    strike?: boolean;
    /** 字间距 */
    letterSpacing?: number;
    /** 文字对齐样式 */
    textAlign?: TextAlign;
    charMetrics: CharMetric[];
    isPlaceholder: boolean;
    isComposition: boolean;
    lineHeight: number;
    ascent: number;
    descent: number;
    style?: TextStyle;
    constructor(options: TextRunOptions);
    /**
     * 计算文字大小 度量
     * 优化版本
     * @param payload
     * @returns
     */
    static measureText(payload: Konva.TextConfig): {
        width: number;
        height: number;
        ascent: number;
        descent: number;
    };
    /**
     * 计算文字大小 度量
     * @param payload
     * @returns
     */
    static __measureText(payload: Konva.TextConfig): {
        width: number;
        height: number;
        ascent: number;
        descent: number;
    };
    static createEmptyRun(doc: Doc): TextRun;
    /**TextStyle（样式体系的样式）转换为 Layout 层的样式
     * @param textStyle 经过继承计算的有效字符样式
     * @returns TextRun 的样式属性
     */
    static textStyle2LayoutStyle(textStyle: TextStyle): Partial<TextRun>;
}
