/** * MHub pubsub fabric: nodes and bindings. * Provides the basic routing infrastructure to send and receive messages. */ import Hub from "./hub"; import { MatchSpec } from "./match"; import Message from "./message"; export interface Initializable { init?(hub: Hub): Promise; } export interface Destination extends Initializable { name: string; send(message: Message): void; } export interface Source extends Initializable { name: string; bind(destination: Destination, pattern?: MatchSpec): void; unbind(destination: Destination, pattern?: MatchSpec): void; } export declare function isDestination(node: BaseNode | undefined): node is Destination; export declare function isSource(node: BaseNode | undefined): node is Source; export declare type BaseNode = Source | Destination; export declare class BaseSource implements Source { name: string; private _bindings; constructor(name: string); bind(destination: Destination, pattern?: MatchSpec): void; unbind(destination: Destination, pattern?: MatchSpec): void; protected _broadcast(message: Message): void; }