import { document } from "./nodes.js";
import { ComponentInterface, Components, Document, NodeInterface, TransformerInterface, TransformType, LoggerType, ReferenceResolver } from "./types.js";
/**
 * Transformer class responsible for transforming document output
 */
declare class Transformer implements TransformerInterface {
    private logger;
    transforms: [string, TransformType, NodeInterface | null, Record<string, any>][];
    unknownReferenceResolvers: ReferenceResolver[];
    document: Document;
    applied: [string, TransformType, NodeInterface | null, Record<string, any>][];
    sorted: number;
    components: Components;
    serialno: number;
    /**
     * Create transformer class
     * @param {nodes.myDoc} myDoc - document to transform
     */
    constructor(myDoc: document, logger: LoggerType);
    /**
     * populateFromComponents
     */
    populateFromComponents(...components: (ComponentInterface | undefined)[]): void;
    /**
     * apply the transforms
     */
    applyTransforms(): void;
    /**
     * Store multiple transforms, with default priorities.
     * @param {Array} transformList - Array of transform classes (not instances).
     */
    addTransforms(transformList: TransformType[]): void;
    /**
     *
     * Return a string, `priority` combined with `self.serialno`.
     *
     * This ensures FIFO order on transforms with identical priority.
     */
    getPriorityString(class_: {}, priority: number): string;
    addPending(pending: NodeInterface, priority: number): void;
}
export default Transformer;
