import type { BrokerRegistryEvent, BrokerRegistryListener } from "../types"; import { Broker, type BrokerOptions } from "./broker"; /** * Error thrown when a broker is not found */ export declare class MissingBrokerError extends Error { readonly brokerName?: string; constructor(message: string, brokerName?: string); } /** * Broker Registry * * Maintains registry of named brokers. * Similar to DataSourceRegistry in @warlock.js/cascade * * @example * ```typescript * // Register a broker * brokerRegistry.register({ * name: "default", * driver: rabbitMQDriver, * isDefault: true, * }); * * // Get the default broker * const comm = brokerRegistry.get(); * * // Get a specific broker by name * const analytics = brokerRegistry.get("analytics"); * * // Listen for events * brokerRegistry.on("connected", (comm) => { * console.log(`${comm.name} connected`); * }); * ``` */ declare class BrokerRegistry { private readonly sources; private defaultSource?; private readonly events; /** * Register a new broker * * Sets up event forwarding from the driver to the registry. * * @param options - Broker configuration * @returns The registered broker instance * * @example * ```typescript * const broker = brokerRegistry.register({ * name: "primary", * driver: myDriver, * isDefault: true, * }); * ``` */ register(options: BrokerOptions): Broker; /** * Clear all registered brokers */ clear(): void; /** * Listen for registry events * * @param event - Event to listen for * @param listener - Callback function * * @example * ```typescript * brokerRegistry.on("registered", (comm) => { * console.log(`Broker "${comm.name}" registered`); * }); * * brokerRegistry.on("connected", (comm) => { * console.log(`Broker "${comm.name}" connected`); * }); * ``` */ on(event: BrokerRegistryEvent, listener: BrokerRegistryListener): void; /** * Listen for a registry event once * * @param event - Event to listen for * @param listener - Callback function */ once(event: BrokerRegistryEvent, listener: BrokerRegistryListener): void; /** * Remove an event listener * * @param event - Event to stop listening for * @param listener - Callback to remove */ off(event: BrokerRegistryEvent, listener: BrokerRegistryListener): void; /** * Get a broker by name or the default one * * @param name - Optional broker name * @returns Broker instance * @throws MissingBrokerError if not found * * @example * ```typescript * // Get default broker * const comm = brokerRegistry.get(); * * // Get specific broker * const analytics = brokerRegistry.get("analytics"); * ``` */ get(name?: string): Broker; /** * Check if a broker exists * * @param name - Broker name to check * @returns True if exists */ has(name: string): boolean; /** * Check if any brokers are registered */ hasAny(): boolean; /** * Get all registered brokers * * @returns Array of all brokers * * @example * ```typescript * // Disconnect all brokers * for (const comm of brokerRegistry.getAll()) { * await comm.disconnect(); * } * ``` */ getAll(): Broker[]; /** * Get all broker names * * @returns Array of broker names */ getNames(): string[]; /** * Get the default broker (if any) * * @returns Default broker or undefined */ getDefault(): Broker | undefined; } /** * Global broker registry instance */ export declare const brokerRegistry: BrokerRegistry; export {}; //# sourceMappingURL=broker-registry.d.ts.map