import { ElementNode } from '../types/element';
import { RawElement } from '../types/raw';
import { ImageRunSnapshot } from '../types/model';
import { Wp } from './Wp';
import { ModelNode } from '../base';
import { Wimages } from '../images';
import { WidgetMeta } from '../../widget/widget-meta';
/**
 * WrImage 构造参数
 */
export interface WrImageOptions {
    image: any;
    rawProperties?: ElementNode;
    extra?: any;
    widgetMeta?: any;
    id?: string;
    parent?: Wp;
}
/**
 * 图片块实例类
 */
export declare class WrImage extends ModelNode {
    image: {
        embedId?: string;
        descr?: string;
        name?: string;
        width?: number;
        height?: number;
        rawProperties?: ElementNode;
    };
    name: 'w:r';
    type: "element";
    handler: "image";
    widgetMeta?: WidgetMeta;
    valuePath?: string;
    /** 父节点引用 */
    parent?: Wp;
    constructor(options: WrImageOptions);
    /**
     * 调整图片尺寸
     * @param width 新宽度
     * @param height 新高度
     */
    resize(width: number, height: number): void;
    /**
     * 设置图片描述
     * @param description 描述文本
     */
    setDescription(description: string): void;
    /**
     * 将实例转换为快照对象
     */
    toSnapshot(): ImageRunSnapshot;
    /**
     * 从快照对象恢复实例
     */
    static fromSnapshot(snapshot: ImageRunSnapshot): WrImage;
    /**
     * 从原始 w:drawing XML JSON 解析图片信息
     */
    static fromDrawingXml(json: RawElement): {
        embedId?: string;
        descr?: string;
        name?: string;
        width?: number;
        height?: number;
        rawProperties?: ElementNode;
    };
    /**
     * 将图片信息转换为 w:drawing XML JSON
     */
    static toDrawingXml(imageData: {
        embedId?: string;
        descr?: string;
        name?: string;
        width?: number;
        height?: number;
        rawProperties?: ElementNode;
        elements?: any[];
    }): RawElement;
    /**
     * 图片是原子元素，无法拆分
     * @param index 拆分位置（被忽略）
     * @returns 对于原子元素，返回 [null, this] 或 [this, null] 表示无法拆分
     * @example
     * const [before, after] = image.splitAt(0);
     * // before: null，after: this（图片作为整体保留）
     */
    splitAt(index: number): [WrImage | null, WrImage | null];
    /**
     * 从原始 XML JSON 转换为 WrImage 实例
     * @param json w:r XML JSON 对象
     * @returns WrImage 实例
     */
    static fromXmlJson(json: any): WrImage;
    /**
     * 将实例转换为 XML JSON 格式
     * @returns XML JSON 对象
     */
    toXmlJson(): any;
    static fromTemplate(payload: {
        imageManager: Wimages;
        width: number;
        height: number;
        src: string;
    }): WrImage;
}
