/** * Event Emitter for NotebookLM MCP * * Central event bus for system-wide events. * Events can trigger webhook notifications, logging, or other actions. */ import type { SystemEvent, EventType } from "./event-types.js"; export type EventHandler = (event: SystemEvent) => void | Promise; declare class EventEmitter { private handlers; private eventHistory; private maxHistorySize; private handlerTimeoutMs; private maxHandlersPerType; private leakWarned; /** * Subscribe to an event type */ on(eventType: EventType | "*", handler: EventHandler): () => void; /** * Subscribe to an event type (one-time only) */ once(eventType: EventType | "*", handler: EventHandler): () => void; /** * Emit an event */ emit(event: SystemEvent): Promise; /** * Run a single handler with a timeout, catching and logging any error so * a rejected/hung handler can never produce an unhandled rejection or hang * emit() indefinitely. */ private runHandler; /** * Get recent events */ getHistory(limit?: number): SystemEvent[]; /** * Get events by type */ getEventsByType(eventType: EventType, limit?: number): SystemEvent[]; /** * Clear event history */ clearHistory(): void; /** * Get handler count for debugging */ getHandlerCount(): Record; } declare const eventEmitter: EventEmitter; export { eventEmitter }; export default eventEmitter;