import { RenderText, TextCursorPosition } from "../../renderText";
import { EditTextInfo } from "../../input/EditTextInfo";
import { TextProps } from "../../graphics";
import { AppEventContext } from "../../app";
/**
 * 做文字输入编辑的worker
 */
export declare class TextInputWorker {
    private readonly richTextHelper;
    work(editTextInfo: EditTextInfo, eventCtx: AppEventContext, data: string): void;
    computeUpdateTextProps(editTextInfo: EditTextInfo, data: string): {
        updateTextProps: Partial<TextProps>;
    };
    editText(renderText: RenderText, textCursor: TextCursorPosition, data: string): string;
    getEditTextPrevNext(renderText: RenderText, textCursor: TextCursorPosition): {
        prev: string;
        next: string;
    };
    /**
     * 对选区添加样式，返回完整的富文本XML
     * @param renderText 渲染文本对象
     * @param startCursor 选区起始光标
     * @param endCursor 选区结束光标
     * @param styleAttrs 要应用的样式属性，如 { color: '#FF0000', bold: 'true', 'font-size': '20' }
     * @returns 完整的富文本XML字符串
     */
    applyStyleToSelection(renderText: RenderText, startCursor: TextCursorPosition, endCursor: TextCursorPosition, styleAttrs: Record<string, string>): string;
    /**
     * 规范化选区，确保start在end之前
     */
    private normalizeSelection;
    /**
     * 计算光标的全局位置（用于比较）
     */
    private getCursorPosition;
    /**
     * 生成样式字符串
     */
    private generateStyleString;
    /**
     * 合并样式属性，新样式会覆盖旧样式
     * @param baseStyleStr 基础样式字符串，如 "color='#FF0000' font-size='24'"
     * @param newStyleAttrs 新样式属性对象
     * @returns 合并后的样式字符串
     */
    private mergeStyles;
    /**
     * 同一行内应用样式
     * 注意：charIndex 指向字符的索引，光标在该字符之后
     * 选区是 (startCharIndex, endCharIndex]，即不包含 startCharIndex，包含 endCharIndex
     */
    private applyStyleSameLine;
    /**
     * 在一行内构建选区XML
     * @param startCharIndex -1 表示从行首开始
     * @param endCharIndex -1 表示到行首结束（通常不会出现这种情况）
     */
    private buildSelectionXMLInLine;
    /**
     * 获取文本块中指定范围的文本
     */
    private getTextRange;
    /**
     * 同一段落不同行应用样式
     * 选区是 (startCharIndex, endCharIndex]
     */
    private applyStyleSameParagraph;
    /**
     * 不同段落应用样式
     * 选区是 (startCharIndex, endCharIndex]
     */
    private applyStyleDifferentParagraphs;
}
//# sourceMappingURL=TextInputWorker.d.ts.map