import { Node } from '../../core/models/Node';
/**
 * Interface defining a factory for creating AsyncAPI model nodes.
 * Useful for e.g. DataModelReader.
 * Common parameters:
 * - Node parent - parent node in the target model tree. You have to
 * attach the node to the parent node separately. (TODO?)
 * May be null.
 * - String key - if the node is attached to the parent as a member of a map field,
 * The child node should be aware of the key it has been referenced by.
 * This information is necessary for serialization and deserialization.
 * May be null, e.g. in case the node is reference directly via a field.
 *
 * @author Jakub Senko <jsenko@redhat.com>
 * @class
 */
export interface IAaiNodeFactory {
    createChannelItem(parent: Node, key: string): AaiChannelItem;
    createComponents(parent: Node): AaiComponents;
    createContact(parent: Node): AaiContact;
    createCorrelationId(parent: Node, key: string): AaiCorrelationId;
    createDocument(): AaiDocument;
    createExternalDocumentation(parent: Node): AaiExternalDocumentation;
    createHeaderItem(parent: Node): AaiHeaderItem;
    createInfo(parent: Node): AaiInfo;
    createLicense(parent: Node): AaiLicense;
    createMessage(parent: Node, key: string): AaiMessage;
    createMessageTrait(parent: Node, key: string): AaiMessageTrait;
    createOAuthFlows(parent: Node): AaiOAuthFlows;
    createOperation(parent: Node, key: string): AaiOperation;
    createOperationTrait(parent: Node, key: string): AaiOperationTrait;
    createParameter(parent: Node, key: string): AaiParameter;
    createSecurityRequirement(parent: Node): AaiSecurityRequirement;
    createSecurityScheme(parent: Node, key: string): AaiSecurityScheme;
    createServer(parent: Node, key: string): AaiServer;
    createServerVariable(parent: Node, key: string): AaiServerVariable;
    createTag(parent: Node): AaiTag;
    createServerBindings(parent: Node): AaiServerBindings;
    createServerBindingsDefinition(parent: Node, key: string): AaiServerBindingsDefinition;
    createOperationBindings(parent: Node): AaiOperationBindings;
    createOperationBindingsDefinition(parent: Node, key: string): AaiOperationBindingsDefinition;
    createMessageBindings(parent: Node): AaiMessageBindings;
    createMessageBindingsDefinition(parent: Node, key: string): AaiMessageBindingsDefinition;
    createChannelBindings(parent: Node): AaiChannelBindings;
    createChannelBindingsDefinition(parent: Node, key: string): AaiChannelBindingsDefinition;
    createOperationTraitDefinition(parent: Node, key: string): AaiOperationTraitDefinition;
    createMessageTraitDefinition(parent: Node, key: string): AaiMessageTraitDefinition;
}
import { AaiMessageTraitDefinition } from './AaiMessageTraitDefinition';
import { AaiOperationTraitDefinition } from './AaiOperationTraitDefinition';
import { AaiChannelBindingsDefinition } from './AaiChannelBindingsDefinition';
import { AaiChannelBindings } from './AaiChannelBindings';
import { AaiMessageBindingsDefinition } from './AaiMessageBindingsDefinition';
import { AaiMessageBindings } from './AaiMessageBindings';
import { AaiOperationBindingsDefinition } from './AaiOperationBindingsDefinition';
import { AaiOperationBindings } from './AaiOperationBindings';
import { AaiServerBindingsDefinition } from './AaiServerBindingsDefinition';
import { AaiServerBindings } from './AaiServerBindings';
import { AaiTag } from './AaiTag';
import { AaiServerVariable } from './AaiServerVariable';
import { AaiServer } from './AaiServer';
import { AaiSecurityScheme } from './AaiSecurityScheme';
import { AaiSecurityRequirement } from './AaiSecurityRequirement';
import { AaiParameter } from './AaiParameter';
import { AaiOperationTrait } from './AaiOperationTrait';
import { AaiOperation } from './AaiOperation';
import { AaiOAuthFlows } from './AaiOAuthFlows';
import { AaiMessageTrait } from './AaiMessageTrait';
import { AaiMessage } from './AaiMessage';
import { AaiLicense } from './AaiLicense';
import { AaiInfo } from './AaiInfo';
import { AaiHeaderItem } from './AaiHeaderItem';
import { AaiExternalDocumentation } from './AaiExternalDocumentation';
import { AaiDocument } from './AaiDocument';
import { AaiCorrelationId } from './AaiCorrelationId';
import { AaiContact } from './AaiContact';
import { AaiComponents } from './AaiComponents';
import { AaiChannelItem } from './AaiChannelItem';
