import { EventEmitter } from 'events'; import { NativeTraceFormat } from './schemas/index.js'; export interface TraceFileWatcherOptions { traceDir: string; fileExtension?: string; debounceMs?: number; processExisting?: boolean; maxFileAgeMs?: number; onValidationError?: (file: string, errors: string[]) => void; } export interface TraceFileWatcherEvents { trace: (trace: NativeTraceFormat, filePath: string) => void; error: (error: Error, filePath: string) => void; start: (traceDir: string) => void; stop: () => void; fileDetected: (filePath: string) => void; } export declare class TraceFileWatcher extends EventEmitter { private readonly logger; private watcher; private readonly options; private processedFiles; private pendingFiles; private isWatching; constructor(options: TraceFileWatcherOptions); start(): Promise; stop(): void; isRunning(): boolean; getProcessedFiles(): string[]; clearProcessedFiles(): void; processFile(filePath: string): Promise; private handleFileEvent; private processExistingFiles; private processTraceFile; } export declare function createTraceFileWatcher(options: TraceFileWatcherOptions): TraceFileWatcher; declare module 'events' { interface EventEmitter { on(event: K, listener: TraceFileWatcherEvents[K]): this; emit(event: K, ...args: Parameters): boolean; off(event: K, listener: TraceFileWatcherEvents[K]): this; once(event: K, listener: TraceFileWatcherEvents[K]): this; } }