import { EventHandler } from '../../Repositories/EventBus/EventBusRepositoryInterface'; export default class EventBusService { private eventBusRepository; private eventBusConfig; /** * Constructor */ constructor(); /** * Emit an event with optional data */ emit(event: string, data?: any, ttlMinutes?: number): Promise; /** * Emit an event synchronously (for memory driver only) */ emitSync(event: string, data?: any, ttlMinutes?: number): void; /** * Subscribe to an event */ on(eventPattern: string, handler: EventHandler): void; /** * Subscribe to an event with durable delivery (guaranteed delivery) * Supported in Redis driver * * Await the returned promise to know that past events were replayed and the * subscription is live, or ignore it to subscribe in fire and forget fashion */ onDurable(eventPattern: string, handler: EventHandler): Promise; /** * Unsubscribe from an event */ off(eventPattern: string, handler?: EventHandler): void; /** * Remove all listeners for an event or all events */ removeAllListeners(eventPattern?: string): void; /** * Get the count of listeners for a specific event */ listenerCount(eventPattern: string): number; /** * Get all event patterns that have listeners */ eventNames(): string[]; /** * Connect to the event bus (for distributed drivers) */ connect(): Promise; /** * Disconnect from the event bus (for distributed drivers) */ disconnect(): Promise; /** * Check if connected (for distributed drivers) */ isConnected(): boolean; /** * Get the current driver name */ getDriver(): string; }