export interface WatcherRef { end: Promise; data: T; on(cb: () => void): void; off(cb: () => void): void; } export interface WatcherContext { onClean(dispose: () => void | Promise): void; watch(file: string): void; dependOn(ref: WatcherRef): void; close(): void; status: 'initial' | 'reoccuring'; } export declare function watcherTask(cb: (watcherContext: WatcherContext) => Promise): Promise>;