import { FException } from "../exception/index.js"; import { FExecutionContext } from "../execution_context/index.js"; /** Define some kind of Publish-Subscribe pattern. See https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern */ export interface FChannelSubscriber< TData, TEvent extends FChannelSubscriber.Event = FChannelSubscriber.Event > { addHandler(cb: FChannelSubscriber.Callback): void; removeHandler(cb: FChannelSubscriber.Callback): void; } export namespace FChannelSubscriber { export interface Event { readonly data: TData; } export interface Callback = Event> { (executionContext: FExecutionContext, event: TEvent | FException): Promise; } }