import { Token } from '../engine/Token'; import { NODE_ACTION } from '../'; import { Node } from '.'; import { Item } from '../engine/Item'; declare class Gateway extends Node { /** * * @param item */ getOutbounds(item: Item): Promise; getPotentialPath(node: any, path?: any): any; canReach(node: any, target: any): any; getRelatedTokens(item: Item): any[]; analyzeConvergingTokens(item: Item): { pendingTokens: Token[]; waitingTokens: Token[]; }; start(item: Item): Promise; } /** * ExclusiveGatway: * outbounds: only 1 * inbound: only 1 - * */ declare class XORGateway extends Gateway { getOutbounds(item: any): Promise; } /** * trick here is once one event is met all others must be cancelled * * How will I know? * when one of my events is fired shoudl I subscribe to the event or get directly notified? * */ declare class EventBasedGateway extends Gateway { working: boolean; listener: any; restored(item: Item): void; run(item: Item): Promise; cancelAllBranched(endingItem: Item): Promise; } export { Gateway, XORGateway, EventBasedGateway };