import { CombinedVisitorAdapter } from '../../combined/visitors/CombinedVisitorAdapter';
import { Document } from '../../core/models/Document';
import { NodePath } from '../../core/models/NodePath';
import { OasSchema } from '../../openapi/models/OasSchema';
import { Oas30Schema } from '../../openapi/v3/models/Oas30Schema';
import { AbstractSchemaInhCommand } from './AbstractSchemaInhCommand';
/**
 * A command used to delete a single child schema from a parent schema.
 * @author eric.wittmann@gmail.com
 * @extends AbstractSchemaInhCommand
 * @class
 */
export declare class DeleteChildSchemaCommand extends AbstractSchemaInhCommand {
    _schemaPath: NodePath;
    _parentPath: NodePath;
    _oldSchema: any;
    _oldSchemaType: string;
    constructor(schema?: 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;
}
export declare namespace DeleteChildSchemaCommand {
    /**
     * Visitor used to remove a child schema from its parent.
     * @author eric.wittmann@gmail.com
     * @extends CombinedVisitorAdapter
     * @class
     */
    class SchemaRemoverVisitor extends CombinedVisitorAdapter {
        type: string;
        /**
         * @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#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;
        constructor();
    }
    /**
     * Visitor used to add a child schema to its parent.
     * @author eric.wittmann@gmail.com
     * @extends CombinedVisitorAdapter
     * @class
     */
    class SchemaAdderVisitor extends CombinedVisitorAdapter {
        /**
         * @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#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;
        constructor();
    }
}
