export interface IEventBus { on: (eventType: string, callback: (...args: any[]) => void) => void; off: (eventType: string, callback?: (...args: any[]) => void) => void; emit: (eventType: string, ...args: any[]) => void; once: (eventType: string, callback: (...args: any[]) => void) => void; removeAllListeners: (eventType?: string) => void; listenerCount: (eventType: string) => number; } export interface IEventManager> { on: (type: K, callback: (event: T[K]) => void) => void; off: (type: K, callback?: (event: T[K]) => void) => void; emit: (type: K, event: T[K]) => void; clearAllListeners: () => void; getListenerCount: (type?: keyof T) => number; } export interface IEventSource { getEventBus: () => IEventBus; } export interface IWorksheetEventSource extends IEventSource { readonly sheetKey: string; readonly sheetTitle: string; readonly tableInstance?: any; } export interface ISpreadsheetEventSource extends IEventSource { readonly workSheetInstances: Map; } export interface IEventValidator { validate: (event: T) => boolean; getErrorMessage: (event: T) => string; } export interface EventManagerConfig { enableValidation?: boolean; enablePerformanceMonitoring?: boolean; maxListeners?: number; enableErrorBoundary?: boolean; } export interface EventStatistics { totalEvents: number; listenersByType: Record; performanceMetrics?: Record; }