///
import React from 'react';
import fs from 'fs-extra';
import chokidar from 'chokidar';
export interface Hooks {
onAdd?(args: Parameters[0]): void;
onAddDir?(args: Parameters[0]): void;
onChange?(args: Parameters[0]): void;
onError?(err: Error): void;
onReady?(watchedFiles: {
[directory: string]: string[];
} | undefined, watchCount: number): void;
onUnlink?(filepath: string): void;
onUnlinkDir?(filepath: string): void;
}
export interface onAddOrChangeFn {
(opts: {
isFile: boolean;
isFolder: boolean;
name: string;
path: string;
stats?: fs.Stats;
}): void;
}
export declare type Options = Hooks & {
watchOptions?: chokidar.WatchOptions;
};
declare function useWatcher({ watchOptions }: Options): {
tag: string;
watch: (opts?: Hooks & {
watchGlob?: string;
}) => void;
watcher: React.MutableRefObject;
watching: boolean;
setWatching: React.Dispatch>;
};
export default useWatcher;