/** * @nahisaho/musubix-codegraph - Event System * * Type-safe event emitter for CodeGraph events * * @packageDocumentation * @module @nahisaho/musubix-codegraph/events * * @see REQ-CG-API-006 * @see DES-CG-001 */ import type { CodeGraphEvents } from '../types.js'; /** * Type-safe event emitter for CodeGraph * * @example * ```typescript * const emitter = new TypedEventEmitter(); * * emitter.on('indexing:progress', (data) => { * console.log(`Progress: ${data.processed}/${data.total}`); * }); * * emitter.emit('indexing:progress', { processed: 10, total: 100, currentFile: 'src/index.ts' }); * ``` */ export declare class TypedEventEmitter> { private emitter; constructor(); /** * Register an event listener */ on(event: K, listener: (data: TEvents[K]) => void): this; /** * Register a one-time event listener */ once(event: K, listener: (data: TEvents[K]) => void): this; /** * Remove an event listener */ off(event: K, listener: (data: TEvents[K]) => void): this; /** * Remove all listeners for an event */ removeAllListeners(event?: K): this; /** * Emit an event */ emit(event: K, data: TEvents[K]): boolean; /** * Get listener count for an event */ listenerCount(event: K): number; /** * Get all listeners for an event */ listeners(event: K): ((data: TEvents[K]) => void)[]; /** * Wait for an event (Promise-based) */ waitFor(event: K, timeout?: number): Promise; } /** * CodeGraph event emitter with pre-defined event types */ export declare class CodeGraphEventEmitter extends TypedEventEmitter { /** * Emit indexing start event */ emitIndexingStart(path: string): void; /** * Emit indexing progress event */ emitIndexingProgress(processed: number, total: number, currentFile: string): void; /** * Emit indexing complete event */ emitIndexingComplete(result: CodeGraphEvents['indexing:complete']): void; /** * Emit indexing error event */ emitIndexingError(error: Error, file?: string): void; /** * Emit query start event */ emitQueryStart(query: CodeGraphEvents['query:start']['query']): void; /** * Emit query complete event */ emitQueryComplete(result: CodeGraphEvents['query:complete']['result'], durationMs: number): void; } export declare function createEventEmitter(): CodeGraphEventEmitter; //# sourceMappingURL=event-emitter.d.ts.map