import { AaiChannelBindings } from '../models/AaiChannelBindings';
import { AaiChannelBindingsDefinition } from '../models/AaiChannelBindingsDefinition';
import { AaiChannelItem } from '../models/AaiChannelItem';
import { AaiCorrelationId } from '../models/AaiCorrelationId';
import { AaiHeaderItem } from '../models/AaiHeaderItem';
import { AaiMessage } from '../models/AaiMessage';
import { AaiMessageBase } from '../models/AaiMessageBase';
import { AaiMessageBindings } from '../models/AaiMessageBindings';
import { AaiMessageBindingsDefinition } from '../models/AaiMessageBindingsDefinition';
import { AaiMessageTrait } from '../models/AaiMessageTrait';
import { AaiMessageTraitDefinition } from '../models/AaiMessageTraitDefinition';
import { AaiOperationBase } from '../models/AaiOperationBase';
import { AaiOperationBindings } from '../models/AaiOperationBindings';
import { AaiOperationBindingsDefinition } from '../models/AaiOperationBindingsDefinition';
import { AaiOperationTrait } from '../models/AaiOperationTrait';
import { AaiOperationTraitDefinition } from '../models/AaiOperationTraitDefinition';
import { AaiParameter } from '../models/AaiParameter';
import { AaiServerBindings } from '../models/AaiServerBindings';
import { AaiServerBindingsDefinition } from '../models/AaiServerBindingsDefinition';
import { IAaiVisitor } from '../visitors/IAaiVisitor';
import { DataModelWriter } from '../../core/io/DataModelWriter';
import { Document } from '../../core/models/Document';
import { AuthorizationCodeOAuthFlow } from '../../core/models/common/AuthorizationCodeOAuthFlow';
import { ClientCredentialsOAuthFlow } from '../../core/models/common/ClientCredentialsOAuthFlow';
import { Components } from '../../core/models/common/Components';
import { ImplicitOAuthFlow } from '../../core/models/common/ImplicitOAuthFlow';
import { OAuthFlow } from '../../core/models/common/OAuthFlow';
import { OAuthFlows } from '../../core/models/common/OAuthFlows';
import { Operation } from '../../core/models/common/Operation';
import { PasswordOAuthFlow } from '../../core/models/common/PasswordOAuthFlow';
import { SecurityScheme } from '../../core/models/common/SecurityScheme';
import { Server } from '../../core/models/common/Server';
import { ServerVariable } from '../../core/models/common/ServerVariable';
/**
 * @author eric.wittmann@gmail.com
 * @author Jakub Senko <jsenko@redhat.com>
 * @class
 * @extends DataModelWriter
 */
export declare abstract class AaiDataModelWriter extends DataModelWriter implements IAaiVisitor {
    /**
     * @see io.apicurio.datamodels.core.io.DataModelWriter#writeDocument(io.apicurio.datamodels.core.models.Document, java.lang.Object)
     * @param {Document} node
     * @param {*} json
     */
    writeDocument(node: Document, json: any): void;
    /**
     *
     * @param {Server} node
     */
    visitServer(node: Server): void;
    writeServer(json: any, node: Server): void;
    /**
     *
     * @param {ServerVariable} node
     */
    visitServerVariable(node: ServerVariable): void;
    writeServerVariable(json: any, node: ServerVariable): void;
    /**
     *
     * @param {AuthorizationCodeOAuthFlow} node
     */
    visitAuthorizationCodeOAuthFlow(node: AuthorizationCodeOAuthFlow): void;
    /**
     *
     * @param {AaiChannelItem} node
     */
    visitChannelItem(node: AaiChannelItem): void;
    /**
     *
     * @param {ClientCredentialsOAuthFlow} node
     */
    visitClientCredentialsOAuthFlow(node: ClientCredentialsOAuthFlow): void;
    /**
     *
     * @param {Components} node
     */
    visitComponents(node: Components): void;
    /**
     *
     * @param {AaiCorrelationId} node
     */
    visitCorrelationId(node: AaiCorrelationId): void;
    /**
     *
     * @param {AaiHeaderItem} node
     */
    visitHeaderItem(node: AaiHeaderItem): void;
    doVisitOAuthFlow(node: OAuthFlow, flowName: string): void;
    /**
     *
     * @param {ImplicitOAuthFlow} node
     */
    visitImplicitOAuthFlow(node: ImplicitOAuthFlow): void;
    writeMessageBase(node: AaiMessageBase): any;
    /**
     *
     * @param {AaiMessage} node
     */
    visitMessage(node: AaiMessage): void;
    /**
     *
     * @param {AaiMessageTrait} node
     */
    visitMessageTrait(node: AaiMessageTrait): void;
    /**
     *
     * @param {OAuthFlows} node
     */
    visitOAuthFlows(node: OAuthFlows): void;
    /**
     *
     * @param {*} json
     * @param {Operation} node
     */
    writeOperation(json: any, node: Operation): void;
    writeOperationBase(node: AaiOperationBase): any;
    /**
     *
     * @param {Operation} node
     */
    visitOperation(node: Operation): void;
    /**
     *
     * @param {AaiOperationTrait} node
     */
    visitOperationTrait(node: AaiOperationTrait): void;
    /**
     *
     * @param {PasswordOAuthFlow} node
     */
    visitPasswordOAuthFlow(node: PasswordOAuthFlow): void;
    /**
     *
     * @param {AaiParameter} node
     */
    visitAaiParameter(node: AaiParameter): void;
    /**
     *
     * @param {*} parent
     * @param {*} json
     * @param {SecurityScheme} node
     */
    addSecuritySchemeToParent(parent: any, json: any, node: SecurityScheme): void;
    /**
     *
     * @param {*} json
     * @param {SecurityScheme} node
     */
    writeSecurityScheme(json: any, node: SecurityScheme): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitMessageTraitDefinition(io.apicurio.datamodels.asyncapi.models.AaiMessageTraitDefinition)
     * @param {AaiMessageTraitDefinition} node
     */
    visitMessageTraitDefinition(node: AaiMessageTraitDefinition): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitOperationTraitDefinition(io.apicurio.datamodels.asyncapi.models.AaiOperationTraitDefinition)
     * @param {AaiOperationTraitDefinition} node
     */
    visitOperationTraitDefinition(node: AaiOperationTraitDefinition): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitServerBindings(io.apicurio.datamodels.asyncapi.models.AaiServerBindings)
     * @param {AaiServerBindings} node
     */
    visitServerBindings(node: AaiServerBindings): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitServerBindingsDefinition(io.apicurio.datamodels.asyncapi.models.AaiServerBindingsDefinition)
     * @param {AaiServerBindingsDefinition} node
     */
    visitServerBindingsDefinition(node: AaiServerBindingsDefinition): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitOperationBindings(io.apicurio.datamodels.asyncapi.models.AaiOperationBindings)
     * @param {AaiOperationBindings} node
     */
    visitOperationBindings(node: AaiOperationBindings): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitOperationBindingsDefinition(io.apicurio.datamodels.asyncapi.models.AaiOperationBindingsDefinition)
     * @param {AaiOperationBindingsDefinition} node
     */
    visitOperationBindingsDefinition(node: AaiOperationBindingsDefinition): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitMessageBindings(io.apicurio.datamodels.asyncapi.models.AaiMessageBindings)
     * @param {AaiMessageBindings} node
     */
    visitMessageBindings(node: AaiMessageBindings): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitMessageBindingsDefinition(io.apicurio.datamodels.asyncapi.models.AaiMessageBindingsDefinition)
     * @param {AaiMessageBindingsDefinition} node
     */
    visitMessageBindingsDefinition(node: AaiMessageBindingsDefinition): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitChannelBindings(io.apicurio.datamodels.asyncapi.models.AaiChannelBindings)
     * @param {AaiChannelBindings} node
     */
    visitChannelBindings(node: AaiChannelBindings): void;
    /**
     * @see io.apicurio.datamodels.asyncapi.visitors.IAaiVisitor#visitChannelBindingsDefinition(io.apicurio.datamodels.asyncapi.models.AaiChannelBindingsDefinition)
     * @param {AaiChannelBindingsDefinition} node
     */
    visitChannelBindingsDefinition(node: AaiChannelBindingsDefinition): void;
    /**
     * Writes a Server/Channel/Operation/Message Bindings model to JSON.
     * @param node
     * @return {*}
     */
    writeNullBindings(): any;
    constructor();
}
