import { ICommand } from '../ICommand';
import { SimplifiedParameterType } from '../models/SimplifiedParameterType';
import { SimplifiedPropertyType } from '../models/SimplifiedPropertyType';
import { SimplifiedType } from '../models/SimplifiedType';
import { Document } from '../../core/models/Document';
import { DocumentType } from '../../core/models/DocumentType';
import { ExtensibleNode } from '../../core/models/ExtensibleNode';
import { Extension } from '../../core/models/Extension';
import { Node } from '../../core/models/Node';
import { NodePath } from '../../core/models/NodePath';
import { IDefinition } from '../../core/models/common/IDefinition';
import { IExampleParent } from '../../core/models/common/IExampleParent';
import { ISecurityRequirementParent } from '../../core/models/common/ISecurityRequirementParent';
import { IServerParent } from '../../core/models/common/IServerParent';
import { Info } from '../../core/models/common/Info';
import { Parameter } from '../../core/models/common/Parameter';
import { Schema } from '../../core/models/common/Schema';
import { SecurityRequirement } from '../../core/models/common/SecurityRequirement';
import { SecurityScheme } from '../../core/models/common/SecurityScheme';
import { Server } from '../../core/models/common/Server';
import { IOasParameterParent } from '../../openapi/models/IOasParameterParent';
import { IOasPropertySchema } from '../../openapi/models/IOasPropertySchema';
import { OasOperation } from '../../openapi/models/OasOperation';
import { OasParameter } from '../../openapi/models/OasParameter';
import { OasPathItem } from '../../openapi/models/OasPathItem';
import { OasResponse } from '../../openapi/models/OasResponse';
import { OasSchema } from '../../openapi/models/OasSchema';
import { Oas20Response } from '../../openapi/v2/models/Oas20Response';
import { Oas20ResponseDefinition } from '../../openapi/v2/models/Oas20ResponseDefinition';
import { IOas30MediaTypeParent } from '../../openapi/v3/models/IOas30MediaTypeParent';
import { Oas30Example } from '../../openapi/v3/models/Oas30Example';
import { Oas30MediaType } from '../../openapi/v3/models/Oas30MediaType';
import { Oas30Operation } from '../../openapi/v3/models/Oas30Operation';
import { Oas30Parameter } from '../../openapi/v3/models/Oas30Parameter';
/**
 * This factory is used to create an instance of {@link ICommand} given a "type" that was previously
 * serialized as part of the marshalling of a command to a JS object (and ultimately a JSON string).
 * The type of command is typically its short classname, but not always.
 * @author eric.wittmann@gmail.com
 * @class
 */
export declare class CommandFactory {
    /**
     * Called to create a command of a given type.
     * @param {string} cmdType
     * @return {*}
     */
    static create(cmdType: string): ICommand;
    static createAggregateCommand(name: string, info: any, commands: Array<ICommand>): ICommand;
    static createAddExampleCommand(mediaType: Oas30MediaType, example: any, exampleName: string, exampleSummary: string, exampleDescription: string): ICommand;
    static createAddParameterExampleCommand(parameter: Oas30Parameter, example: any, exampleName: string, exampleSummary: string, exampleDescription: string): ICommand;
    static createAddSchemaDefinitionCommand(docType: DocumentType, definitionName: string, from: any): ICommand;
    static createAddResponseDefinitionCommand(docType: DocumentType, definitionName: string, from: any): ICommand;
    static createAddPathItemCommand(pathItemName: string, from: any): ICommand;
    static createAddSecurityRequirementCommand(parent: ISecurityRequirementParent, requirement: SecurityRequirement): ICommand;
    static createAddChildSchemaCommand(schema: OasSchema, childSchema: OasSchema, childType: string): ICommand;
    static createChangePropertyCommand<T>(node: Node, property: string, newValue: T): ICommand;
    static createChangeTitleCommand(newTitle: string): ICommand;
    static createChangeDescriptionCommand(newDescription: string): ICommand;
    static createChangeVersionCommand(newVersion: string): ICommand;
    static createChangeLicenseCommand(name: string, url: string): ICommand;
    static createChangeSchemaInheritanceCommand(schema: OasSchema, inheritanceType: string): ICommand;
    static createChangeContactCommand(name: string, email: string, url: string): ICommand;
    static createChangeMediaTypeTypeCommand(mediaType: Oas30MediaType, newType: SimplifiedType): ICommand;
    static createChangeParameterTypeCommand(docType: DocumentType, parameter: Parameter, newType: SimplifiedParameterType): ICommand;
    static createChangeParameterDefinitionTypeCommand(docType: DocumentType, parameter: Parameter, newType: SimplifiedParameterType): ICommand;
    static createChangePropertyTypeCommand(property: IOasPropertySchema, newType: SimplifiedPropertyType): ICommand;
    static createChangeSchemaTypeCommand(schema: OasSchema, newType: SimplifiedType): ICommand;
    static createChangeResponseTypeCommand(response: Oas20Response, newType: SimplifiedType): ICommand;
    static createChangeResponseDefinitionTypeCommand(response: Oas20ResponseDefinition, newType: SimplifiedType): ICommand;
    static createChangeSecuritySchemeCommand(docType: DocumentType, scheme: SecurityScheme): ICommand;
    static createChangeServerCommand(server: Server): ICommand;
    static createDeleteContactCommand(info: Info): ICommand;
    static createDeleteChildSchemaCommand(schema: OasSchema): ICommand;
    static createDeleteAllExamplesCommand(mediaType: Oas30MediaType): ICommand;
    static createDeleteAllParameterExamplesCommand(parameter: Oas30Parameter): ICommand;
    static createDeleteAllOperationsCommand(pathItem: OasPathItem): ICommand;
    static createDeleteAllParametersCommand(parent: IOasParameterParent, type: string): ICommand;
    static createDeleteAllPropertiesCommand(schema: OasSchema): ICommand;
    static createDeleteAllResponsesCommand(operation: OasOperation): ICommand;
    static createDeleteAllSecurityRequirementsCommand(parent: ISecurityRequirementParent): ICommand;
    static createDeleteAllSecuritySchemesCommand(): ICommand;
    static createDeleteAllServersCommand(parent: IServerParent): ICommand;
    static createDeleteAllTagsCommand(): ICommand;
    static createDeleteAllChildSchemasCommand(parent: OasSchema, type: string): ICommand;
    static createDelete20ExampleCommand(response: Oas20Response, contentType: string): ICommand;
    static createDeleteExampleCommand(example: Oas30Example): ICommand;
    static createDeleteParameterExampleCommand(example: Oas30Example): ICommand;
    static createDeleteExtensionCommand(extension: Extension): ICommand;
    static createDeleteLicenseCommand(info: Info): ICommand;
    static createDeleteMediaTypeCommand(mediaType: Oas30MediaType): ICommand;
    static createDeleteOperationCommand(opMethod: string, pathItem: OasPathItem): ICommand;
    static createDeleteParameterCommand(parameter: OasParameter): ICommand;
    static createDeletePathCommand(path: string): ICommand;
    static createDeletePropertyCommand(property: IOasPropertySchema): ICommand;
    static createDeleteRequestBodyCommand(operation: Oas30Operation): ICommand;
    static createDeleteResponseCommand(response: OasResponse): ICommand;
    static createDeleteSchemaDefinitionCommand(docType: DocumentType, definitionName: string): ICommand;
    static createDeleteResponseDefinitionCommand(docType: DocumentType, definitionName: string): ICommand;
    static createDeleteSecurityRequirementCommand(parent: ISecurityRequirementParent, requirement: SecurityRequirement): ICommand;
    static createDeleteSecuritySchemeCommand(docType: DocumentType, schemeName: string): ICommand;
    static createDeleteServerCommand(server: Server): ICommand;
    static createDeleteTagCommand(tagName: string): ICommand;
    /**
     * New Commands
     * @param {*} parent
     * @param {string} newMediaType
     * @return {*}
     */
    static createNewMediaTypeCommand(parent: IOas30MediaTypeParent, newMediaType: string): ICommand;
    static createNewOperationCommand(path: string, method: string): ICommand;
    static createNewParamCommand(parent: IOasParameterParent, paramName: string, paramType: string, description: string, newType: SimplifiedParameterType, override: boolean): ICommand;
    static createNewPathCommand(newPath: string): ICommand;
    static createNewRequestBodyCommand(docType: DocumentType, operation: OasOperation): ICommand;
    static createNewResponseCommand(operation: OasOperation, statusCode: string, sourceResponse: OasResponse): ICommand;
    static createNewSchemaDefinitionCommand(docType: DocumentType, definitionName: string, example: any, description: string): ICommand;
    static createNewResponseDefinitionCommand(docType: DocumentType, definitionName: string, description: string): ICommand;
    static createNewSchemaPropertyCommand(schema: Schema, propertyName: string, description: string, newType: SimplifiedPropertyType): ICommand;
    static createNewSecuritySchemeCommand(docType: DocumentType, scheme: SecurityScheme): ICommand;
    static createNewServerCommand(parent: IServerParent, server: Server): ICommand;
    static createNewTagCommand(name: string, description: string): ICommand;
    /**
     * Rename Commands
     * @param {*} parent
     * @param {string} oldParamName
     * @param {string} newParamName
     * @param {string} paramIn
     * @return {*}
     */
    static createRenameParameterCommand(parent: IOasParameterParent, oldParamName: string, newParamName: string, paramIn: string): ICommand;
    static createRenamePathItemCommand(oldPath: string, newPath: string, alsoRenameSubpaths: boolean): ICommand;
    static createRenamePropertyCommand(parent: OasSchema, oldPropertyName: string, newPropertyName: string): ICommand;
    static createRenameSchemaDefinitionCommand(docType: DocumentType, oldName: string, newName: string): ICommand;
    static createRenameResponseDefinitionCommand(docType: DocumentType, oldName: string, newName: string): ICommand;
    static createRenameSecuritySchemeCommand(oldSchemeName: string, newSchemeName: string): ICommand;
    static createRenameTagDefinitionCommand(oldTag: string, newTag: string): ICommand;
    static createReplaceOperationCommand(old: OasOperation, replacement: OasOperation): ICommand;
    static createReplaceDocumentCommand(old: Document, replacement: Document): ICommand;
    static createReplacePathItemCommand(old: OasPathItem, replacement: OasPathItem): ICommand;
    static createReplaceSchemaDefinitionCommand(docType: DocumentType, old: IDefinition, replacement: IDefinition): ICommand;
    static createReplaceResponseDefinitionCommand(docType: DocumentType, old: IDefinition, replacement: IDefinition): ICommand;
    static createReplaceSecurityRequirementCommand(old: SecurityRequirement, replacement: SecurityRequirement): ICommand;
    /**
     * Set Commands
     * @param {NodePath} path
     * @param {string} property
     * @param {*} newValue
     * @return {*}
     */
    static createSetPropertyCommand<T>(path: NodePath, property: string, newValue: T): ICommand;
    static createSetExampleCommand(docType: DocumentType, parent: IExampleParent, example: any, nameOrContentType: string): ICommand;
    static createSetParameterExampleCommand(parent: IExampleParent, example: any, exampleName: string): ICommand;
    static createSetExtensionCommand(parent: ExtensibleNode, name: string, value: any): ICommand;
}
