import { globalEventBus, EventHandler } from '../shared/event-utils'; export interface EventBusConfig { /** Maximum listeners per event */ maxListeners?: number; /** Enable debug mode */ debug?: boolean; /** Enable event history */ enableHistory?: boolean; /** Maximum events in history */ maxHistorySize?: number; } export interface EventBusStats { /** Total events published */ totalPublished: number; /** Total events delivered */ totalDelivered: number; /** Active subscriptions */ activeSubscriptions: number; /** Events by type */ eventsByType: Map; } export interface ModuleEventMessage { /** Source module ID */ source: string; /** Target module ID (optional, broadcast if not specified) */ target?: string; /** Event type */ type: string; /** Event payload */ payload: T; /** Timestamp */ timestamp: number; } export type ModuleEventHandler = EventHandler>; export interface ModuleEventBusOptions { /** Enable security checks */ enableSecurity?: boolean; /** Maximum listeners per event */ maxListeners?: number; /** Enable debug mode */ debug?: boolean; /** Enable event history */ enableHistory?: boolean; /** Maximum events in history */ maxHistorySize?: number; } /** * Event bus for cross-module communication */ export declare class ModuleEventBus { private readonly emitter; private readonly moduleSubscriptions; constructor(options?: ModuleEventBusOptions); /** * Subscribe to events */ subscribe(eventType: string, handler: ModuleEventHandler, moduleId?: string): () => void; /** * Publish an event */ publish(eventType: string, payload: T, source: string, target?: string): void; /** * Unsubscribe all handlers for a module */ unsubscribeModule(moduleId: string): void; /** * Get statistics */ getStats(): EventBusStats; /** * Clear all subscriptions */ clear(): void; /** * Dispose the event bus */ dispose(): void; } /** * Get the default event bus instance */ export declare function getDefaultEventBus(): ModuleEventBus; /** * Set a custom default event bus */ export declare function setDefaultEventBus(bus: ModuleEventBus): void; /** * Reset the default event bus */ export declare function resetDefaultEventBus(): void; /** * Subscribe to an event on the default event bus */ export declare function subscribe(eventType: string, handler: ModuleEventHandler, moduleId?: string): () => void; /** * Publish an event on the default event bus */ export declare function publish(eventType: string, payload: T, source: string, target?: string): void; export { globalEventBus };