export type FileChangeHandler = (relativePath: string) => void; /** * Thin wrapper over fs.watch that fan-outs change events to interested managers. * * This service is managed as a singleton by the DI container. * Inject it via constructor injection rather than using a static getInstance() method. */ export declare class FileWatchService { private readonly watchers; private readonly debounceTimers; /** * Watch a directory for changes. If the directory doesn't exist, it will be created. * * @param dirPath - Path to directory to watch * @param handler - Callback function invoked when files change * @returns Cleanup function to stop watching * * @remarks * This method ensures the directory exists before setting up the watcher. * fs.watch throws ENOENT if the directory doesn't exist, so we create it * with recursive:true to handle test scenarios and edge cases gracefully. * * File watching is optional functionality. If fs.watch() fails due to permission * restrictions or platform limitations, a no-op cleanup function is returned and * the application continues without file watching for that directory. */ watchDirectory(dirPath: string, handler: FileChangeHandler): () => void; private detachHandler; /** * Dispose of all file watchers. Called during graceful shutdown. * This method is invoked by the DI container's dispose() method. */ dispose(): void; } //# sourceMappingURL=FileWatchService.d.ts.map