import { Document } from '../../../core/models/Document';
import { Extension } from '../../../core/models/Extension';
import { IReferenceNode } from '../../../core/models/IReferenceNode';
import { Node } from '../../../core/models/Node';
import { ValidationProblem } from '../../../core/models/ValidationProblem';
import { Contact } from '../../../core/models/common/Contact';
import { ExternalDocumentation } from '../../../core/models/common/ExternalDocumentation';
import { IDefinition } from '../../../core/models/common/IDefinition';
import { IExample } from '../../../core/models/common/IExample';
import { Info } from '../../../core/models/common/Info';
import { License } from '../../../core/models/common/License';
import { Operation } from '../../../core/models/common/Operation';
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 { Tag } from '../../../core/models/common/Tag';
import { IOasPropertySchema } from '../../models/IOasPropertySchema';
import { OasHeader } from '../../models/OasHeader';
import { OasPathItem } from '../../models/OasPathItem';
import { OasPaths } from '../../models/OasPaths';
import { OasResponse } from '../../models/OasResponse';
import { OasResponses } from '../../models/OasResponses';
import { OasSchema } from '../../models/OasSchema';
import { OasXML } from '../../models/OasXML';
import { Oas20Definitions } from '../../v2/models/Oas20Definitions';
import { Oas20Headers } from '../../v2/models/Oas20Headers';
import { Oas20Items } from '../../v2/models/Oas20Items';
import { Oas20Operation } from '../../v2/models/Oas20Operation';
import { Oas20Parameter } from '../../v2/models/Oas20Parameter';
import { Oas20ParameterDefinitions } from '../../v2/models/Oas20ParameterDefinitions';
import { Oas20Response } from '../../v2/models/Oas20Response';
import { Oas20ResponseDefinitions } from '../../v2/models/Oas20ResponseDefinitions';
import { Oas20Scopes } from '../../v2/models/Oas20Scopes';
import { Oas20SecurityDefinitions } from '../../v2/models/Oas20SecurityDefinitions';
import { IOas20Visitor } from '../../v2/visitors/IOas20Visitor';
import { Oas30Components } from '../../v3/models/Oas30Components';
import { Oas30Document } from '../../v3/models/Oas30Document';
import { Oas30Parameter } from '../../v3/models/Oas30Parameter';
import { Oas30Response } from '../../v3/models/Oas30Response';
import { Oas30Schema } from '../../v3/models/Oas30Schema';
/**
 * A visitor used to transform an OpenAPI 2.0 document into an OpenAPI 3.0.x document.
 * @author eric.wittmann@gmail.com
 * @class
 */
export declare class Oas20to30TransformationVisitor implements IOas20Visitor {
    doc30: Oas30Document;
    _nodeMap: any;
    _postProcessResponses: Array<Oas30Response>;
    _postProcessingComplete: boolean;
    /**
     * Retrieves the final result.
     * @return {Oas30Document}
     */
    getResult(): Oas30Document;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitDocument(io.apicurio.datamodels.core.models.Document)
     * @param {Document} node
     */
    visitDocument(node: Document): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitInfo(io.apicurio.datamodels.core.models.common.Info)
     * @param {Info} node
     */
    visitInfo(node: Info): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitContact(io.apicurio.datamodels.core.models.common.Contact)
     * @param {Contact} node
     */
    visitContact(node: Contact): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitLicense(io.apicurio.datamodels.core.models.common.License)
     * @param {License} node
     */
    visitLicense(node: License): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitPaths(io.apicurio.datamodels.openapi.models.OasPaths)
     * @param {OasPaths} node
     */
    visitPaths(node: OasPaths): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitPathItem(io.apicurio.datamodels.openapi.models.OasPathItem)
     * @param {OasPathItem} node
     */
    visitPathItem(node: OasPathItem): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitOperation(io.apicurio.datamodels.core.models.common.Operation)
     * @param {Operation} node
     */
    visitOperation(node: Operation): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitParameter(io.apicurio.datamodels.core.models.common.Parameter)
     * @param {Parameter} node
     */
    visitParameter(node: Parameter): void;
    transformParam(node: Oas20Parameter, param30: Oas30Parameter): Oas30Parameter;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitParameterDefinition(io.apicurio.datamodels.core.models.common.IDefinition)
     * @param {*} node
     */
    visitParameterDefinition(node: IDefinition): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitExternalDocumentation(io.apicurio.datamodels.core.models.common.ExternalDocumentation)
     * @param {ExternalDocumentation} node
     */
    visitExternalDocumentation(node: ExternalDocumentation): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitSecurityRequirement(io.apicurio.datamodels.core.models.common.SecurityRequirement)
     * @param {SecurityRequirement} node
     */
    visitSecurityRequirement(node: SecurityRequirement): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitResponses(io.apicurio.datamodels.openapi.models.OasResponses)
     * @param {OasResponses} node
     */
    visitResponses(node: OasResponses): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitResponse(io.apicurio.datamodels.openapi.models.OasResponse)
     * @param {OasResponse} node
     */
    visitResponse(node: OasResponse): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitResponseDefinition(io.apicurio.datamodels.core.models.common.IDefinition)
     * @param {*} node
     */
    visitResponseDefinition(node: IDefinition): void;
    transformResponse(node: Oas20Response, response30: Oas30Response): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitSchema(io.apicurio.datamodels.core.models.common.Schema)
     * @param {Schema} node
     */
    visitSchema(node: Schema): void;
    /**
     * @see io.apicurio.datamodels.openapi.v2.visitors.IOas20Visitor#visitHeaders(io.apicurio.datamodels.openapi.v2.models.Oas20Headers)
     * @param {Oas20Headers} node
     */
    visitHeaders(node: Oas20Headers): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitHeader(io.apicurio.datamodels.openapi.models.OasHeader)
     * @param {OasHeader} node
     */
    visitHeader(node: OasHeader): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitExample(io.apicurio.datamodels.core.models.common.IExample)
     * @param {*} node
     */
    visitExample(node: IExample): void;
    /**
     * @see io.apicurio.datamodels.openapi.v2.visitors.IOas20Visitor#visitItems(io.apicurio.datamodels.openapi.v2.models.Oas20Items)
     * @param {Oas20Items} node
     */
    visitItems(node: Oas20Items): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitTag(io.apicurio.datamodels.core.models.common.Tag)
     * @param {Tag} node
     */
    visitTag(node: Tag): void;
    /**
     * @see io.apicurio.datamodels.openapi.v2.visitors.IOas20Visitor#visitSecurityDefinitions(io.apicurio.datamodels.openapi.v2.models.Oas20SecurityDefinitions)
     * @param {Oas20SecurityDefinitions} node
     */
    visitSecurityDefinitions(node: Oas20SecurityDefinitions): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitSecurityScheme(io.apicurio.datamodels.core.models.common.SecurityScheme)
     * @param {SecurityScheme} node
     */
    visitSecurityScheme(node: SecurityScheme): void;
    /**
     * @see io.apicurio.datamodels.openapi.v2.visitors.IOas20Visitor#visitScopes(io.apicurio.datamodels.openapi.v2.models.Oas20Scopes)
     * @param {Oas20Scopes} node
     */
    visitScopes(node: Oas20Scopes): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitXML(io.apicurio.datamodels.openapi.models.OasXML)
     * @param {OasXML} node
     */
    visitXML(node: OasXML): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitSchemaDefinition(io.apicurio.datamodels.core.models.common.IDefinition)
     * @param {*} node
     */
    visitSchemaDefinition(node: IDefinition): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitPropertySchema(io.apicurio.datamodels.openapi.models.IOasPropertySchema)
     * @param {*} node
     */
    visitPropertySchema(node: IOasPropertySchema): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitAdditionalPropertiesSchema(io.apicurio.datamodels.openapi.models.OasSchema)
     * @param {OasSchema} node
     */
    visitAdditionalPropertiesSchema(node: OasSchema): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitAllOfSchema(io.apicurio.datamodels.openapi.models.OasSchema)
     * @param {OasSchema} node
     */
    visitAllOfSchema(node: OasSchema): void;
    /**
     * @see io.apicurio.datamodels.openapi.visitors.IOasVisitor#visitItemsSchema(io.apicurio.datamodels.openapi.models.OasSchema)
     * @param {OasSchema} node
     */
    visitItemsSchema(node: OasSchema): void;
    /**
     * @see io.apicurio.datamodels.openapi.v2.visitors.IOas20Visitor#visitDefinitions(io.apicurio.datamodels.openapi.v2.models.Oas20Definitions)
     * @param {Oas20Definitions} node
     */
    visitDefinitions(node: Oas20Definitions): void;
    /**
     * @see io.apicurio.datamodels.openapi.v2.visitors.IOas20Visitor#visitParameterDefinitions(io.apicurio.datamodels.openapi.v2.models.Oas20ParameterDefinitions)
     * @param {Oas20ParameterDefinitions} node
     */
    visitParameterDefinitions(node: Oas20ParameterDefinitions): void;
    /**
     * @see io.apicurio.datamodels.openapi.v2.visitors.IOas20Visitor#visitResponseDefinitions(io.apicurio.datamodels.openapi.v2.models.Oas20ResponseDefinitions)
     * @param {Oas20ResponseDefinitions} node
     */
    visitResponseDefinitions(node: Oas20ResponseDefinitions): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitExtension(io.apicurio.datamodels.core.models.Extension)
     * @param {Extension} node
     */
    visitExtension(node: Extension): void;
    /**
     * @see io.apicurio.datamodels.core.visitors.IVisitor#visitValidationProblem(io.apicurio.datamodels.core.models.ValidationProblem)
     * @param {ValidationProblem} problem
     */
    visitValidationProblem(problem: ValidationProblem): void;
    mapNode(from: Node, to: Node): void;
    lookup(node: Node): Node;
    getOrCreateComponents(): Oas30Components;
    toSchema(from: Node, schema30: Oas30Schema, isSchema: boolean): Oas30Schema;
    findItemsParent(node: Oas20Items): Oas30Schema;
    findParentOperation(node: Parameter): Oas20Operation;
    findProduces(node: Node): Array<string>;
    findConsumes(node: Node): Array<string>;
    collectionFormatToStyleAndExplode(node: Oas20Parameter, param30: Oas30Parameter): void;
    isFormDataMimeType(mimetype: string): boolean;
    hasFormDataMimeType(mimetypes: Array<string>): boolean;
    isRef(node: IReferenceNode): boolean;
    updateRef($ref: string): string;
    /**
     * Called when visiting is complete.  Any additional processing of the result can
     * be done here.
     * @private
     */
    postProcess(): void;
    constructor();
}
