import { FlowNode } from '../Base/index'; import { BpmnType } from '../Constants'; /** * Contains all possible Gateway directions. * * Mixed Gateways are currently not supported. * */ export declare enum GatewayDirection { Unspecified = "unspecified", Converging = "converging", Diverging = "diverging", Mixed = "mixed" } /** * The base type for gateways. */ export type Gateway = FlowNode & { /** * Determines the direction of the gateway. * * If no incoming and/or no outgoing SequenceFlows are associated with the * gateway, the direction will be 'unspecified', effectively rendering this * gateway non-executable. */ gatewayDirection: GatewayDirection; }; /** * Describes a ComplexGateway. * * Currently not supported. */ export type ComplexGateway = Gateway & { readonly bpmnType: BpmnType.complexGateway; }; /** * Describes an EventBasedGateway. * * These gateways are used to direct the Process across a specific path, based on annotated catch events. */ export type EventBasedGateway = Gateway & { readonly bpmnType: BpmnType.eventBasedGateway; }; /** * Describes an ExclusiveGateway. * * These gateways are used to direct the process to a specific conditional branch. */ export type ExclusiveGateway = Gateway & { readonly bpmnType: BpmnType.exclusiveGateway; /** * Optional: The ID of the Sequence Flow to take, if no other Sequence Flows have a fulfilled condition. */ defaultOutgoingSequenceFlowId?: string; }; /** * Describes an InclusiveGateway. * * They are used to run multiple conditional branches in parallel. */ export type InclusiveGateway = Gateway & { readonly bpmnType: BpmnType.inclusiveGateway; /** * Optional: The ID of the Sequence Flow to take, if no other Sequence Flows have a fulfilled condition. */ defaultOutgoingSequenceFlowId?: string; }; /** * Describes a ParallelGateway. * * These gateways are used to run multiple branches in parallel. */ export type ParallelGateway = Gateway & { readonly bpmnType: BpmnType.parallelGateway; };