import type { RuntimeAdapter } from "../../platform/adapters/base.js"; import type { RouteDiscovery } from "./route-discovery.js"; /** * Check if a path should be ignored for HMR purposes — either because it lives * in a generated/output directory or because it is a generated-artifact file. * * Exported for unit testing. */ export declare function shouldIgnorePath(path: string): boolean; /** * Whether a path lives inside a generated build-output directory, evaluated * relative to `projectDir` so directories *above* the project (which the user * cannot control, e.g. a checkout under `/some/dist/...`) are never matched. * * Exported for unit testing. */ export declare function isIgnoredOutputDir(projectDir: string, fullPath: string): boolean; export declare class FileWatchSetup { private projectDir; private adapter; private routeDiscovery; private debounceMs; private invalidateHandler; private rediscoverPrimitives?; private fileWatcher?; private watcherController?; private optimizedWatcher?; private batchCount; private primitiveDirs; /** Content hashes to skip re-renders when file content is unchanged */ private contentHashes; constructor(projectDir: string, adapter: RuntimeAdapter, routeDiscovery: RouteDiscovery, debounceMs: number, invalidateHandler?: () => void, rediscoverPrimitives?: (() => Promise) | undefined, primitiveDirNames?: string[]); setup(): Promise; private getWatchPaths; private processFileWatcher; private refreshAndReload; /** * Check if a path is inside a configured primitive directory (tools/, agents/, etc.) * Uses path segment matching to avoid false positives from substrings. */ private isPrimitivePath; /** * Check if a path is inside a runtime data directory (data/, etc.) * that contains generated content (embedding indices) rather than source code. */ private isRuntimeDataPath; /** FNV-1a hash for fast content comparison */ private hashContent; /** Filter out files whose content hasn't actually changed */ private filterChangedFiles; private handleBatchedFileChanges; private handleImmediateFileChange; getMetrics(): import("./types.js").FileWatcherMetrics | null; cleanup(): void; } //# sourceMappingURL=file-watch-setup.d.ts.map