import type { BetterSqlite3Database } from '../../../../types.js';
import type { PipelineContext } from '../context.js';
/**
 * Read-only pre-flight check for the native orchestrator.
 *
 * Returns true iff every collected source file has matching mtime+size in
 * `file_hashes` and no DB-tracked file has been removed. When true, the
 * caller can short-circuit before invoking the native orchestrator —
 * matching WASM's ~20 ms early-exit path and avoiding the ~2s flat
 * per-call native rebuild overhead seen in CI (#1054).
 *
 * Intentionally Tier-0/Tier-1 only (journal + mtime/size). Tier-2 content
 * hashing is left to the native side: when this returns false the caller
 * falls through to the orchestrator, which performs its own complete
 * detection and is the source of truth.
 *
 * Conservatively returns false when CFG or dataflow analysis is enabled
 * but the corresponding tables are empty — otherwise the fast-skip would
 * silently suppress the pending-analysis pass that the JS path runs via
 * `runPendingAnalysis`, and CFG/dataflow data would never populate on
 * repos where source files don't change between builds.
 *
 * Pure read of `db` and the filesystem — never mutates either.
 */
export declare function detectNoChanges(db: BetterSqlite3Database, allFiles: string[], rootDir: string, opts?: Record<string, unknown>): boolean;
export declare function detectChanges(ctx: PipelineContext): Promise<void>;
//# sourceMappingURL=detect-changes.d.ts.map