import { AbstractCommand } from '../AbstractCommand';
import { CombinedVisitorAdapter } from '../../combined/visitors/CombinedVisitorAdapter';
import { Document } from '../../core/models/Document';
import { NodePath } from '../../core/models/NodePath';
import { OasDocument } from '../../openapi/models/OasDocument';
import { OasResponse } from '../../openapi/models/OasResponse';
/**
 * A command used to rename a response definition, along with all references to it.
 * @author eric.wittmann@gmail.com
 * @extends AbstractCommand
 * @class
 */
export declare abstract class RenameResponseDefinitionCommand extends AbstractCommand {
    _oldName: string;
    _newName: string;
    _references: Array<NodePath>;
    constructor(oldName?: any, newName?: 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;
    /**
     * Convert a simple name to a reference.  This will be different for 2.0 vs. 3.0
     * data models.
     * @param {string} name
     * @return {string}
     */
    abstract _nameToReference(name: string): string;
    /**
     * Called to actually change the name of the response definition.  This impl will vary
     * depending on the OAI data model version.  Returns true if the rename actually happened.
     * @param {OasDocument} document
     * @param {string} fromName
     * @param {string} toName
     * @return {boolean}
     */
    abstract _renameResponseDefinition(document: OasDocument, fromName: string, toName: string): boolean;
}
export declare namespace RenameResponseDefinitionCommand {
    /**
     * Constructor.
     * @param {string} reference
     * @class
     * @extends CombinedVisitorAdapter
     */
    class ResponseRefFinder extends CombinedVisitorAdapter {
        _reference: string;
        _responses: Array<OasResponse>;
        constructor(reference: string);
        findIn(document: Document): Array<OasResponse>;
        _accept(response: OasResponse): boolean;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitResponse(io.apicurio.datamodels.openapi.models.OasResponse)
         * @param {OasResponse} node
         */
        visitResponse(node: OasResponse): void;
    }
}
