import type { Dirent } from "node:fs";
export declare const isFileNotFoundError: (e: unknown) => e is Error;
export declare const difference: (before: Set<string>, after: Set<string>) => [Set<string>, Set<string>];
export declare const findMatching: (watchDirectory: string, existingResults: Set<string>, match: (dirent: Dirent) => boolean, maximumDepth?: number) => Promise<void>;
interface WatchOptions {
    indexDelay?: number;
    abortController?: AbortController;
}
export interface Watcher {
    abort: (immediately?: boolean) => Promise<void>;
    initialScan: () => Promise<void>;
    watchEnd: () => Promise<void>;
}
interface WatchNewFilesOptions extends WatchOptions {
    recursive?: boolean;
    indexDelay?: number;
    ignoreInitial?: boolean;
    abortController?: AbortController;
}
export declare const newFilesInDirectoryWatcher: (directory: string, onNewFile: (file: string, dirent: Dirent) => Promise<void>, options?: WatchNewFilesOptions) => Watcher;
export declare const allureResultsDirectoriesWatcher: (directory: string, update: (newAllureResults: Set<string>, deletedAllureResults: Set<string>) => Promise<void>, options?: WatchOptions) => Watcher;
interface FileContentWatcherOptions extends WatchOptions {
    minProcessingDelay?: number;
    maxProcessingDelay?: number;
}
export declare const delayedFileProcessingWatcher: (processFile: (file: string) => Promise<void>, options?: FileContentWatcherOptions) => Watcher & {
    addFile: (file: string) => Promise<void>;
};
export declare const md5File: (path: string) => Promise<string>;
export {};
