import { RawElement } from '../types';
/** slot 类型（页眉页脚专用） */
export type RefSlotType = 'default' | 'first' | 'even';
/** 带 slot 的引用 */
export interface SlotRef {
    type: RefSlotType;
    rId: string;
}
/** 普通引用 */
export interface SimpleRef {
    /** 悬浮类引用 id */
    rId: string;
    /** 章节id */
    secId: string;
}
/** 通用 Ref 类型 */
type AnyRef = SlotRef | SimpleRef;
interface RefManagerOptions {
    /** XML tag 名 */
    tagName: string;
    /** 是否是 slot 类型 */
    withSlot: boolean;
    /** raw 数据 */
    raw: RawElement;
}
export declare class RefManager<T extends AnyRef> {
    private tagName;
    private withSlot;
    private raw;
    refs: T[];
    constructor(options: RefManagerOptions);
    /**
     * 从 JSON 中提取引用
     * @param json 原始JSON数据
     * @param tag 标签名
     * @returns 格式化后的引用列表
     */
    parse(): T[];
    /**
     * 重新计算引用，并写回 raw
     */
    normalize(refs: string[], secIds?: string[]): T[];
    private normalizeSlotRefs;
    private normalizeSimpleRefs;
    /**
     * 将引用写回 raw
     */
    syncToRaw(): void;
}
export {};
