import { AaiParameter } from '../../asyncapi/models/AaiParameter';
import { Document } from '../models/Document';
import { ExtensibleNode } from '../models/ExtensibleNode';
import { Node } from '../models/Node';
import { Contact } from '../models/common/Contact';
import { ExternalDocumentation } from '../models/common/ExternalDocumentation';
import { Info } from '../models/common/Info';
import { License } from '../models/common/License';
import { OAuthFlow } from '../models/common/OAuthFlow';
import { OAuthFlows } from '../models/common/OAuthFlows';
import { Operation } from '../models/common/Operation';
import { Parameter } from '../models/common/Parameter';
import { Schema } from '../models/common/Schema';
import { SecurityRequirement } from '../models/common/SecurityRequirement';
import { SecurityScheme } from '../models/common/SecurityScheme';
import { Server } from '../models/common/Server';
import { ServerVariable } from '../models/common/ServerVariable';
import { Tag } from '../models/common/Tag';
/**
 * Constructor.
 * @class
 * @author eric.wittmann@gmail.com
 */
export declare abstract class DataModelReader {
    constructor();
    /**
     * Reads the extension properties from the input and stores them in the extensible node.
     * @param {*} json
     * @param {ExtensibleNode} node
     */
    readExtensions(json: any, node: ExtensibleNode): void;
    /**
     * Reads all remaining properties.  Anything left is an "extra" (or unexpected) property.  These
     * are not extension properties - they are actually properties that SHOULD NOT have existed on
     * the node.  (all extension properties must start with "x-" and are consumed by "readExtensions".
     * @param {*} json
     * @param {Node} node
     */
    readExtraProperties(json: any, node: Node): void;
    /**
     * Reads the root document.
     * @param {*} json
     * @param {Document} node
     */
    readDocument(json: any, node: Document): void;
    /**
     * Reads an info object into a data model instance (info node).
     * @param {*} json
     * @param {Info} node
     */
    readInfo(json: any, node: Info): void;
    /**
     * Reads a contact object info into the data model.
     * @param {*} json
     * @param {Contact} node
     */
    readContact(json: any, node: Contact): void;
    /**
     * Reads a license object info into the data model.
     * @param {*} json
     * @param {License} node
     */
    readLicense(json: any, node: License): void;
    /**
     * Reads an tag object into a data model instance (tag node).
     * @param {*} json
     * @param {Tag} node
     */
    readTag(json: any, node: Tag): void;
    /**
     * Reads a server model.
     * @param {*} json
     * @param {Server} node
     */
    readServer(json: any, node: Server): void;
    /**
     * Reads a server variable into the data model.
     * @param {*} json
     * @param {ServerVariable} node
     */
    readServerVariable(json: any, node: ServerVariable): void;
    /**
     * Reads a security requirement.
     * @param {*} json
     * @param {SecurityRequirement} node
     */
    readSecurityRequirement(json: any, node: SecurityRequirement): void;
    /**
     * Reads a security scheme.
     * @param {*} json
     * @param {SecurityScheme} node
     */
    readSecurityScheme(json: any, node: SecurityScheme): void;
    /**
     * Reads an external documentation into the data model.
     * @param {*} json
     * @param {ExternalDocumentation} node
     */
    readExternalDocumentation(json: any, node: ExternalDocumentation): void;
    /**
     * Reads a schema.
     * @param {*} json
     * @param {Schema} node
     */
    readSchema(json: any, node: Schema): void;
    /**
     * Reads a single parameter.
     * @param {*} json
     * @param {AaiParameter} node
     */
    readAaiParameter(json: any, node: AaiParameter): void;
    /**
     * Reads a single parameter.
     * @param {*} json
     * @param {Parameter} node
     */
    readParameter(json: any, node: Parameter): void;
    /**
     * Reads a single operation.
     * @param {*} json
     * @param {Operation} node
     */
    readOperation(json: any, node: Operation): void;
    /**
     * Reads an OAS 3.0 OAuth Flows object from the given JS data.
     * @param {*} json
     * @param {OAuthFlows} node
     */
    readOAuthFlows(json: any, node: OAuthFlows): void;
    /**
     * Reads an OAS 3.0 OAuth Flow object from the given JS data.
     * @param {*} json
     * @param {OAuthFlow} node
     */
    readOAuthFlow(json: any, node: OAuthFlow): void;
}
