import { AbstractCommand } from '../AbstractCommand';
import { CombinedVisitorAdapter } from '../../combined/visitors/CombinedVisitorAdapter';
import { Document } from '../../core/models/Document';
import { Operation } from '../../core/models/common/Operation';
import { Tag } from '../../core/models/common/Tag';
/**
 * A command used to rename a tag, along with all references to it.
 * @author eric.wittmann@gmail.com
 * @extends AbstractCommand
 * @class
 */
export declare class RenameTagDefinitionCommand extends AbstractCommand {
    _oldTag: string;
    _newTag: string;
    constructor(oldTag?: any, newTag?: any);
    /**
     * @see io.apicurio.datamodels.cmd.ICommand#execute(io.apicurio.datamodels.core.models.Document)
     * @param {Document} document
     */
    execute(document: Document): void;
    /**
     * @see io.apicurio.datamodels.cmd.ICommand#undo(io.apicurio.datamodels.core.models.Document)
     * @param {Document} document
     */
    undo(document: Document): void;
    /**
     * Does the work of renaming a tag from one name to another.
     * @param {Document} document
     * @param {string} from
     * @param {string} to
     * @private
     * @private
     */
    _doTagRename(document: Document, from: string, to: string): void;
    /**
     * Finds a tag in the document by name.  Returns null if not found.
     * @param {Document} document
     * @param {string} tag
     * @private
     * @return {Tag}
     * @private
     */
    _findTag(document: Document, tag: string): Tag;
}
export declare namespace RenameTagDefinitionCommand {
    /**
     * Constructor.
     * @param {string} from
     * @param {string} to
     * @class
     * @extends CombinedVisitorAdapter
     */
    class TagRenameVisitor extends CombinedVisitorAdapter {
        from: string;
        to: string;
        constructor(from: string, to: string);
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitOperation(io.apicurio.datamodels.core.models.common.Operation)
         * @param {Operation} node
         */
        visitOperation(node: Operation): void;
    }
}
