import { IBus, IStreamableBus } from "./base"; import { DuplexStream } from "../streams"; import { IteratorType } from "../utils"; export declare type FanoutBusTargetsParamType = IBus[] | ((message: T) => IBus[]); export declare class FanoutBus implements IStreamableBus { private _targets; private _iterator; private getTargets; constructor(_targets: FanoutBusTargetsParamType, _iterator: IteratorType>); dispatch(message: T): DuplexStream<{}, {}>; } export declare const createFanoutBus: (targets: FanoutBusTargetsParamType, iterator: IteratorType>) => FanoutBus; /** * Executes a message against all target busses in one after the other. */ export declare class SequenceBus extends FanoutBus { constructor(targets: FanoutBusTargetsParamType); } export declare const createSequenceBus: (targets: FanoutBusTargetsParamType) => SequenceBus; /** * Executes a message against all target busses at the same time. */ export declare class ParallelBus extends FanoutBus { constructor(targets: FanoutBusTargetsParamType); } export declare const createParallelBus: (targets: FanoutBusTargetsParamType) => ParallelBus; /** * Executes a message against one target bus that is rotated with each message. */ export declare class RoundRobinBus extends FanoutBus { constructor(targets: FanoutBusTargetsParamType); } export declare const createRoundRobinBus: (targets: FanoutBusTargetsParamType) => RoundRobinBus; /** * Executes a message against one target bus that is selected at random. */ export declare class RandomBus extends FanoutBus { constructor(targets: FanoutBusTargetsParamType, weights?: number[]); } export declare const createRandomBus: (targets: FanoutBusTargetsParamType, weights?: number[]) => RandomBus;