/** Canonical package call/import evidence and edge-kind-specific package SCCs. */ import { type Result } from '@opensip-cli/core'; import { type CoverageFacet, type GeneratedPolicy, type GraphReadFacetCoverage, type GraphSourceFilter, type PackageCallEvidence, type PackageEdgeKind, type PackageImportEvidence, type SourceScope } from './query-contracts.js'; import { type SourceRoleMatcher } from './source-filter.js'; import type { GraphReadError } from './types.js'; import type { Catalog, FeatureTable, Indexes } from '../types.js'; export interface PackageEvidenceQuery { readonly edgeKind: PackageEdgeKind; readonly filter: GraphSourceFilter; readonly fromPackage?: string; readonly toPackage?: string; /** * Nested sample size per dependency row (P2 Phase 2.3/2.4). Default 5 for the * graph/read builder; MCP defaults to 0 (opt-in) at the tool boundary. */ readonly sampleLimit?: number; /** Max concrete evidence sites retained for why-depends style inventories. */ readonly evidenceLimit?: number; } interface PackageEvidenceLabels { readonly sourceScope: SourceScope; readonly generated: GeneratedPolicy; readonly catalogResolutionMode: 'exact' | 'fast'; } /** Per-row sample metadata: empty sample is not "no evidence exists". */ export interface PackageSampleMeta { readonly sampleReturned: number; readonly sampleAvailable: number; readonly sampleLimit: number; } export interface PackageCallEvidenceRow extends PackageEvidenceLabels, PackageSampleMeta { readonly fromPackage: string; readonly toPackage: string; readonly kind: 'call'; /** Canonical resolved static target edges (FeatureTable.edge parity by default). */ readonly count: number; readonly countUnit: 'resolved-targets'; /** Unique owner/call-site locations contributing to this package pair. */ readonly callSiteCount: number; readonly sample: readonly PackageCallEvidence[]; /** Inventory completeness for this row's count (not global evidence caps). */ readonly coverage: CoverageFacet; } export interface PackageImportEvidenceRow extends PackageEvidenceLabels, PackageSampleMeta { readonly fromPackage: string; readonly toPackage: string | null; /** Internal package name, otherwise the bounded external/unresolved specifier. */ readonly target: string; readonly kind: 'import'; readonly resolution: PackageImportEvidence['resolution']; readonly count: number; readonly countUnit: 'import-statements'; readonly sample: readonly PackageImportEvidence[]; /** Inventory completeness for this row's count (not global evidence caps). */ readonly coverage: CoverageFacet; } export interface PackageEvidenceView { readonly calls: readonly PackageCallEvidenceRow[]; readonly imports: readonly PackageImportEvidenceRow[]; readonly callEvidence: readonly PackageCallEvidence[]; readonly importEvidence: readonly PackageImportEvidence[]; /** Matching projectable call evidence before the representative-evidence cap. */ readonly totalCallEvidence: number; /** Matching projectable import evidence before the representative-evidence cap. */ readonly totalImportEvidence: number; /** Facet-specific coverage: inventory vs retained evidence are independent. */ readonly coverage: GraphReadFacetCoverage; } export declare function packageCallEvidenceStableKey(row: PackageCallEvidence): string; export declare function packageImportEvidenceStableKey(row: PackageImportEvidence): string; export declare function packageDependencyStableKey(row: PackageCallEvidenceRow | PackageImportEvidenceRow): string; /** Build package call/import rows plus bounded concrete evidence. */ export declare function buildPackageEvidence(catalog: Catalog, indexes: Indexes, query: PackageEvidenceQuery, matcher: SourceRoleMatcher, cachedFeatures?: FeatureTable): Result; export {}; //# sourceMappingURL=package-evidence.d.ts.map