import { RawElement } from '../types/raw';
import { ModelNode, ModelNodeOptions } from '../base';
import { ParagraphStyle } from '../types/style';
import { Wstyles } from '../styles/Wstyles';
/**
 * 段落属性节点 - 保存 w:pPr 及其子元素
 *
 * 职责：
 * - 保存原始 XML 结构
 * - 提供 XML 元素操作接口
 * - 提取直接属性（不涉及样式继承）
 * - 查询样式引用
 *
 * 不负责：
 * - 样式继承计算
 * - 有效样式合并（由 ParagraphStyleResolver 处理）
 */
export declare class WpPr extends ModelNode {
    /** 节点名称 */
    name: 'w:pPr';
    /** 节点类型 */
    type: "element";
    elements: RawElement[];
    private _cachedWStyles?;
    constructor(options: ModelNodeOptions & {
        elements?: RawElement[];
    });
    /**
     * 获取样式引用 ID
     * @example
     * wpPr.styleId // "Heading1"
     */
    get styleId(): string | undefined;
    /**
     * 获取文档的样式表
     * 沿着 parent 链向上查找，直到找到 Wdocument
     */
    get wStyles(): Wstyles | undefined;
    /**
     * 提取当前 w:pPr 的直接属性（不含样式继承）
     * 仅从 XML 元素中读取，不进行样式合并
     *
     * @returns 直接定义的段落样式属性
     *
     * @example
     * // <w:pPr>
     * //   <w:jc w:val="center"/>
     * // </w:pPr>
     * wpPr.directStyle // { alignment: 'center' }
     */
    get directStyle(): ParagraphStyle;
    /**
     * 从原始 XML JSON 转换为 WpPr 实例
     */
    static fromXmlJson(json: RawElement): WpPr;
    /**
     * 将 WpPr 实例转换为原始 XML JSON
     */
    toXmlJson(): RawElement;
    /**
     * 获取指定名称的子元素（快速访问，避免遍历）
     *
     * @param name - 查找的元素名称，如 'w:pStyle'、'w:keepNext'
     * @returns 找到的第一个匹配元素，不存在则返回 undefined
     *
     * @example
     * const pStyle = wpPr.getElement('w:pStyle');
     */
    getElement(name: string): RawElement | undefined;
    /**
     * 获取指定名称的元素属性值
     *
     * @param elementName - 元素名称，如 'w:jc'
     * @param attrName - 属性名称，如 'w:val'
     * @returns 属性值
     *
     * @example
     * const align = wpPr.getAttrValue('w:jc', 'w:val'); // 'center'
     */
    getAttrValue(elementName: string, attrName: string): string | undefined;
    /**
     * 设置或更新指定名称的子元素
     *
     * @param element - 新的元素，应包含 name 和 type
     *
     * @example
     * wpPr.setElement({ name: 'w:pStyle', type: 'element', '@attrs': { 'w:val': 'Heading1' } });
     */
    setElement(element: RawElement): void;
    /**
     * 删除指定名称的子元素
     *
     * @param name - 要删除的元素名称
     * @returns 是否成功删除
     *
     * @example
     * wpPr.removeElement('w:keepNext');
     */
    removeElement(name: string): boolean;
}
