/**
 * Renames node attributes (`a` -> `b`) in both directions. Holds no per-application state, so
 * {@link RenameAttrs} builds a single instance and shares it across every `init`.
 *
 * @extends Transformer<any,any>
 */
export class RenameAttrsTransformer extends Transformer<any, any> {
    /**
     * @param {import('../../schema.js').Schema<delta.Delta<any>>} $in
     * @param {import('../../schema.js').Schema<delta.Delta<any>>} $out
     * @param {{[K:string|number]:string|number}} renames
     */
    constructor($in: import("../../schema.js").Schema<delta.Delta<any>>, $out: import("../../schema.js").Schema<delta.Delta<any>>, renames: {
        [K: string | number]: string | number;
    });
    arenames: {
        [K: string]: string | number;
        [K: number]: string | number;
    };
    /**
     * @type {{[K:string|number]:string|number}}
     */
    brenames: {
        [K: string | number]: string | number;
    };
    /**
     * @param {delta.DeltaAny} deltaA
     * @return {import('./core.js').TransformResultAny}
     */
    applyA(deltaA: delta.DeltaAny): import("./core.js").TransformResultAny;
    /**
     * @param {delta.DeltaAny} deltaB
     * @return {import('./core.js').TransformResultAny}
     */
    applyB(deltaB: delta.DeltaAny): import("./core.js").TransformResultAny;
}
/**
 * Template that renames node attributes (`a` -> `b`) in both directions.
 *
 * @template {{[K:string|number]:string|number}} Renames
 * @template {delta.DeltaConf} [IN=any]
 * @extends {Template<IN, ApplyRenameAttrs<Renames, IN>>}
 */
export class RenameAttrs<Renames extends {
    [K: string | number]: string | number;
}, IN extends delta.DeltaConf = any> extends Template<IN, delta.DeltaConfOverwrite<IN, {
    attrs: import("../../ts.js").PropsRename<import("../../ts.js").TypeIsAny<IN, {
        [K: string]: any;
        [K: number]: any;
    }, IN extends {
        attrs: infer Attrs;
    } ? Attrs extends undefined ? {} : Attrs : {}>, Renames>;
}>> {
    /**
     * @param {import('../../schema.js').Schema<delta.Delta<IN>>} $d
     * @param {Renames} renames
     */
    constructor($d: import("../../schema.js").Schema<delta.Delta<IN>>, renames: Renames);
    /**
     * @type {Renames}
     */
    renames: Renames;
}
export function renameAttrs<IN extends delta.DeltaConf, const Renames extends {
    [K: string | number]: string | number;
}>($d: import("../../schema.js").Schema<delta.Delta<IN>>, renames: Renames): RenameAttrs<Renames, IN>;
export type ApplyRenameAttrs<Renames extends {
    [K: string | number]: string | number;
}, IN extends delta.DeltaConf> = delta.DeltaConfOverwrite<IN, {
    attrs: import("../../ts.js").PropsRename<delta.DeltaConfGetAttrs<IN>, Renames>;
}>;
import { Transformer } from './core.js';
import * as delta from '../delta.js';
import { Template } from './core.js';
//# sourceMappingURL=rename-attrs.d.ts.map