/**
 * chokidar shim - File watcher library used by Vite
 * Wraps our VirtualFS watch implementation
 */
import { EventEmitter } from './events';
import type { VirtualFS } from '../virtual-fs';
export declare function setVFS(vfs: VirtualFS): void;
export interface ChokidarOptions {
    persistent?: boolean;
    ignored?: string | RegExp | ((path: string) => boolean) | Array<string | RegExp | ((path: string) => boolean)>;
    ignoreInitial?: boolean;
    followSymlinks?: boolean;
    cwd?: string;
    disableGlobbing?: boolean;
    usePolling?: boolean;
    interval?: number;
    binaryInterval?: number;
    alwaysStat?: boolean;
    depth?: number;
    awaitWriteFinish?: boolean | {
        stabilityThreshold?: number;
        pollInterval?: number;
    };
    ignorePermissionErrors?: boolean;
    atomic?: boolean | number;
    /**
     * VFS to watch (internal). Per-runtime modules from
     * {@link createChokidarModule} inject it so a watcher always walks its
     * own container's tree; without it the watcher falls back to the
     * module-level setVFS() instance, which is last-write-wins when several
     * containers are live.
     */
    vfs?: VirtualFS;
}
export declare class FSWatcher extends EventEmitter {
    private vfs;
    private watched;
    private options;
    private closed;
    private ready;
    private _eventCounts?;
    constructor(options?: ChokidarOptions);
    private shouldIgnore;
    private normalizePath;
    add(paths: string | readonly string[]): this;
    private collectDirContents;
    private watchPath;
    private watchDirRecursive;
    unwatch(paths: string | readonly string[]): this;
    close(): Promise<void>;
    getWatched(): Record<string, string[]>;
}
/**
 * Watch files/directories for changes
 */
export declare function watch(paths: string | readonly string[], options?: ChokidarOptions): FSWatcher;
declare const _default: {
    watch: typeof watch;
    FSWatcher: typeof FSWatcher;
    setVFS: typeof setVFS;
};
export default _default;
/**
 * Per-runtime chokidar module bound to one VFS. The module-level setVFS()
 * binding is last-write-wins across containers — booting container B
 * rebinds it, so any watcher container A arms afterwards would walk B's
 * tree. Runtimes hand their code this bound module instead.
 */
export declare function createChokidarModule(vfs: VirtualFS): Record<string, unknown>;
//# sourceMappingURL=chokidar.d.ts.map