/** * Exact-engine boundary recovery (Phase 3, Option A — "exact = the 1-shard case"). * * The single-program (exact) catalog IS the whole/merged catalog, so the cross- * package call sites its type-checker-driven inline pass captures inconsistently * (it only fires where `getSymbolAtLocation` succeeds and the reference kind * dispatches) are recovered by running the SAME post-merge linker the sharded * engine runs — `resolveCrossBoundaryCalls` — over the syntactic boundary calls * the exact build emitted. The extractor already skips sites resolved inline, so * a recovered edge never double-counts. This is what converges the two engines. */ import type { Catalog, CrossBoundaryCall } from '../../types.js'; /** * Link the syntactic boundary calls the exact build emitted against its own * (whole-program) catalog via the shared cross-shard linker. No-op when nothing * was emitted (e.g. an incremental rebuild that touched no cross-package site). */ export declare function recoverExactBoundaryEdges(built: { readonly catalog: Catalog; readonly boundaryCalls?: readonly CrossBoundaryCall[]; }, files: readonly string[], projectRoot: string): Catalog; /** * The distinct workspace package ROOTS (absolute) the source files belong to — * each file's nearest ancestor dir containing a `package.json`, up to the project * root. Feeds `buildPackageManifestIndexFromRoots` so the exact engine resolves a * `@scope/pkg` specifier to its package group exactly as the sharded engine does * (which derives the same set from its `Shard[]`). Memoized per directory. */ export declare function derivePackageRoots(files: readonly string[], projectRoot: string): string[]; /** Nearest ancestor dir of `startDir` (inclusive) containing a `package.json`, * up to `projectRoot`; `null` if none. */ export declare function findPackageRoot(startDir: string, projectRoot: string): string | null; //# sourceMappingURL=exact-boundary-recovery.d.ts.map