import { AbstractCommand } from '../AbstractCommand';
import { CombinedVisitorAdapter } from '../../combined/visitors/CombinedVisitorAdapter';
import { Document } from '../../core/models/Document';
import { NodePath } from '../../core/models/NodePath';
import { IDefinition } from '../../core/models/common/IDefinition';
import { Schema } from '../../core/models/common/Schema';
import { IOasPropertySchema } from '../../openapi/models/IOasPropertySchema';
import { OasDocument } from '../../openapi/models/OasDocument';
import { OasSchema } from '../../openapi/models/OasSchema';
/**
 * A command used to rename a schema definition, along with all references to it.
 * @author eric.wittmann@gmail.com
 * @extends AbstractCommand
 * @class
 */
export declare abstract class RenameSchemaDefinitionCommand 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 schema 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 _renameSchemaDefinition(document: OasDocument, fromName: string, toName: string): boolean;
}
export declare namespace RenameSchemaDefinitionCommand {
    /**
     * Constructor.
     * @param {string} reference
     * @class
     * @extends CombinedVisitorAdapter
     */
    class SchemaRefFinder extends CombinedVisitorAdapter {
        _reference: string;
        _schemas: Array<Schema>;
        constructor(reference: string);
        findIn(document: Document): Array<Schema>;
        _accept(schema: Schema): boolean;
        processSchema(schema: Schema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitSchema(io.apicurio.datamodels.core.models.common.Schema)
         * @param {Schema} node
         */
        visitSchema(node: Schema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitSchemaDefinition(io.apicurio.datamodels.core.models.common.IDefinition)
         * @param {*} node
         */
        visitSchemaDefinition(node: IDefinition): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitPropertySchema(io.apicurio.datamodels.openapi.models.IOasPropertySchema)
         * @param {*} node
         */
        visitPropertySchema(node: IOasPropertySchema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitAdditionalPropertiesSchema(io.apicurio.datamodels.openapi.models.OasSchema)
         * @param {OasSchema} node
         */
        visitAdditionalPropertiesSchema(node: OasSchema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitAllOfSchema(io.apicurio.datamodels.openapi.models.OasSchema)
         * @param {OasSchema} node
         */
        visitAllOfSchema(node: OasSchema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitItemsSchema(io.apicurio.datamodels.openapi.models.OasSchema)
         * @param {OasSchema} node
         */
        visitItemsSchema(node: OasSchema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitAnyOfSchema(io.apicurio.datamodels.openapi.v3.models.Oas30Schema.Oas30AnyOfSchema)
         * @param {Oas30Schema.Oas30AnyOfSchema} node
         */
        visitAnyOfSchema(node: Oas30Schema.Oas30AnyOfSchema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitOneOfSchema(io.apicurio.datamodels.openapi.v3.models.Oas30Schema.Oas30OneOfSchema)
         * @param {Oas30Schema.Oas30OneOfSchema} node
         */
        visitOneOfSchema(node: Oas30Schema.Oas30OneOfSchema): void;
        /**
         * @see io.apicurio.datamodels.combined.visitors.CombinedVisitorAdapter#visitNotSchema(io.apicurio.datamodels.openapi.v3.models.Oas30Schema.Oas30NotSchema)
         * @param {Oas30Schema.Oas30NotSchema} node
         */
        visitNotSchema(node: Oas30Schema.Oas30NotSchema): void;
    }
}
import { Oas30Schema } from '../../openapi/v3/models/Oas30Schema';
