import { FileWatcher, FileWatcherCallback, MultiMap, PollingInterval } from "./_namespaces/ts";
export interface TestFileWatcher {
    cb: FileWatcherCallback;
    pollingInterval: PollingInterval;
}
export interface TestFsWatcher<DirCallback> {
    cb: DirCallback;
    inode: number | undefined;
}
export interface WatchUtils<PollingWatcherData, FsWatcherData, Path extends string = string> {
    pollingWatches: MultiMap<Path, PollingWatcherData>;
    fsWatches: MultiMap<Path, FsWatcherData>;
    fsWatchesRecursive: MultiMap<Path, FsWatcherData>;
    pollingWatch(path: Path, data: PollingWatcherData): FileWatcher;
    fsWatch(path: Path, recursive: boolean, data: FsWatcherData): FileWatcher;
    serializeWatches(baseline?: string[]): string[];
    getHasWatchChanges(): boolean;
    setHasWatchChanges(): void;
}
export declare function createWatchUtils<PollingWatcherData, FsWatcherData, Path extends string = string>(pollingWatchesName: string, fsWatchesName: string): WatchUtils<PollingWatcherData, FsWatcherData, Path>;
export declare function serializeMultiMap<T>(baseline: string[], caption: string, multiMap: MultiMap<string, T>, serialized: Map<string, T[]> | undefined): Map<string, T[]> | undefined;
//# sourceMappingURL=watchUtils.d.ts.map