import type { IWatchmanClient, IWatchmanConfigManager } from '../interfaces.js'; import type { Logger } from '../logger.js'; import type { PoltergeistConfig } from '../types.js'; import type { TargetState } from './target-state.js'; interface WatchServiceDeps { projectRoot: string; config: PoltergeistConfig; logger: Logger; watchman?: IWatchmanClient; watchmanConfigManager: IWatchmanConfigManager; onFilesChanged: (files: Array<{ name: string; exists: boolean; type?: string; }>, targetNames: string[]) => void; } /** * Encapsulates Watchman subscriptions and config-file watching. */ export declare class WatchService { private readonly projectRoot; private readonly config; private readonly logger; private watchman?; private readonly watchmanConfigManager; private readonly onFilesChanged; private readonly subscriptions; constructor({ projectRoot, config, logger, watchman, watchmanConfigManager, onFilesChanged, }: WatchServiceDeps); attachHandlersTo(_watchman?: IWatchmanClient): void; subscribeTargets(targetStates: Map): Promise; subscribeConfig(configPath: string | undefined, onChange: (files: Array<{ name: string; exists: boolean; }>) => void): Promise; stop(): Promise; refreshTargets(targetStates: Map): Promise; unsubscribeTargets(targetNames: string[]): Promise; private unsubscribeAll; } export {}; //# sourceMappingURL=watch-service.d.ts.map