import { RawElement } from '../types/raw';
import { ModelNode, ModelNodeOptions } from '../base';
import { TextStyle } from '../types/style';
/**
 * 字符属性节点 - 保存 w:rPr 及其子元素
 *
 * 职责：
 * - 保存原始 XML 结构
 * - 提供 XML 元素操作接口
 * - 提取直接属性（不涉及样式继承）
 * - 查询样式引用
 *
 * 不负责：
 * - 样式继承计算
 * - 有效样式合并（由 TextStyleResolver 处理）
 */
export declare class WrPr extends ModelNode {
    name: 'w:rPr';
    type: "element";
    elements: RawElement[];
    constructor(options: ModelNodeOptions & {
        elements?: RawElement[];
    });
    /**
     * 获取字符样式引用 ID
     * @example
     * wrPr.styleId // "Heading1Char"
     */
    get styleId(): string | undefined;
    /**
     * 提取当前 w:rPr 的直接属性（不含样式继承）
     * 仅从 XML 元素中读取，不进行样式合并
     *
     * @returns 直接定义的字符样式属性
     *
     * @example
     * // <w:rPr>
     * //   <w:b/>
     * //   <w:color w:val="FF0000"/>
     * // </w:rPr>
     * wrPr.directStyle // { b: true, color: 'FF0000' }
     */
    get directStyle(): TextStyle;
    /**
     * 从原始 XML JSON 转换为 WrPr 实例
     */
    static fromXmlJson(json: RawElement): WrPr;
    /**
     * 将 WrPr 实例转换为原始 XML JSON
     */
    toXmlJson(): RawElement;
    /**
     * 获取指定名称的子元素（快速访问，避免遍历）
     *
     * @param name - 查找的元素名称，如 'w:b'、'w:color'
     * @returns 找到的第一个匹配元素，不存在则返回 undefined
     *
     * @example
     * const bold = wrPr.getElement('w:b');
     */
    getElement(name: string): RawElement | undefined;
    /**
     * 获取指定名称的元素属性值
     *
     * @param elementName - 元素名称，如 'w:color'
     * @param attrName - 属性名称，如 'w:val'
     * @returns 属性值
     *
     * @example
     * const color = wrPr.getAttrValue('w:color', 'w:val'); // 'FF0000'
     */
    getAttrValue(elementName: string, attrName: string): string | undefined;
    /**
     * 设置或更新指定名称的子元素
     *
     * @param element - 新的元素，应包含 name 和 type
     *
     * @example
     * wrPr.setElement({ name: 'w:b', type: 'element' });
     */
    setElement(element: RawElement): void;
    /**
     * 设置或更新指定元素的属性值
     * 如果元素不存在则创建，如果属性已存在则更新
     *
     * @param elementName - 元素名称，如 'w:color'
     * @param attrName - 属性名称，如 'w:val'
     * @param value - 属性值
     *
     * @example
     * wrPr.setAttr('w:color', 'w:val', 'FF0000'); // 设置颜色为红色
     * wrPr.setAttr('w:sz', 'w:val', '24'); // 设置字体大小
     */
    setAttr(elementName: string, attrName: string, value: string): void;
    /**
     * 删除指定名称的子元素
     *
     * @param name - 要删除的元素名称
     * @returns 是否成功删除
     *
     * @example
     * wrPr.removeElement('w:b');
     */
    removeElement(name: string): boolean;
    /**
     * 设置或移除无属性值的元素（如 w:b, w:i, w:strike 等）
     * 仅通过元素的存在/不存在表示状态
     *
     * @param elementName - 元素名称，如 'w:b', 'w:i'
     * @param enabled - 是否启用（true: 创建/保留，false: 删除）
     *
     * @example
     * wrPr.setToggleElement('w:b', true);   // 添加 <w:b/>
     * wrPr.setToggleElement('w:b', false);  // 删除 <w:b/>
     */
    setToggleElement(elementName: string, enabled: boolean): void;
}
