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 * @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';