/** * Stage 2 — Edge resolution. * * Walks every file's AST: for each function-shaped node we hash and * find the matching catalog entry. We then collect call sites in * that function's body (skipping nested functions, which own their * own bodies). For each call site, dispatch to the appropriate * resolver and append the CallEdge to the catalog entry's calls[]. * * Top-level statements (statements not inside any function-shaped * node) own a synthetic module-init occurrence (synthesized in stage * 1). */ import type { CrossPackageContext } from './edge-helpers/cross-package-context.js'; import type { CallSiteRecord } from './walk.js'; import type { Catalog, ResolutionStats } from '@opensip-cli/graph'; import type ts from 'typescript'; export { isReturnValueDiscarded } from './edges-dispatch.js'; export interface EdgeResolutionOutput { readonly catalog: Catalog; readonly resolutionStats: ResolutionStats; } export interface EdgeResolutionFromRecordsInput { readonly catalog: Catalog; readonly program: ts.Program; readonly projectDirAbs: string; readonly callSites: readonly CallSiteRecord[]; /** * The shared cross-package resolution context, built ONCE per exact resolve * stage by `resolveCallSitesExact` and threaded into both call and dependency * resolution (P2 Phase 0.4). Building it here would duplicate the manifest * read + export-index pass the caller already performed. */ readonly crossPackage: CrossPackageContext; } export declare function resolveEdgesFromRecords(input: EdgeResolutionFromRecordsInput): Promise; export interface EdgeResolutionSyntacticInput { readonly catalog: Catalog; readonly projectDirAbs: string; readonly callSites: readonly CallSiteRecord[]; } export declare function resolveEdgesSyntactic(input: EdgeResolutionSyntacticInput): Promise; //# sourceMappingURL=edges.d.ts.map