/** Labelled, filtered, bounded architecture orientation metrics. */ import { type Result } from '@opensip-cli/core'; import { type ReadGroupSummary } from './bounded-view.js'; import { type EffectiveGraphSourceFilter, type GeneratedPolicy, type GraphReadCoverage, type GraphSourceFilter, type GraphSymbolRef, 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'; /** Selectable architecture response families (P2 Phase 2.5). */ export type ArchitectureSection = 'metrics' | 'packageEdges' | 'hotspots'; export interface ArchitectureViewQuery { readonly filter: GraphSourceFilter; readonly limit: number; readonly afterPackageEdgeKey?: string; readonly afterHotspotKey?: string; readonly packageEdgesDone?: boolean; readonly hotspotsDone?: boolean; readonly groupBy?: 'none' | 'package' | 'file'; /** * Which row families to compute (P2 Phase 2.5). Default metrics-only. * Unselected families are not computed and are omitted from the response. */ readonly sections?: readonly ArchitectureSection[]; /** * Global top-N for each selected ranked family before page `limit` slices * inside that window. Default 20, max 100. */ readonly topN?: number; } export interface ArchitectureFamilySummary { readonly totalAvailable: number; readonly selectedCount: number; readonly pageReturned: number; } export interface LabelledNodeCount { readonly value: number; readonly nodeIdentity: 'occurrence' | 'body-hash'; readonly sourceScope: SourceScope; readonly generated: GeneratedPolicy; } export interface LabelledPackageCount { readonly value: number; readonly nodeIdentity: 'package'; readonly sourceScope: SourceScope; readonly generated: GeneratedPolicy; } export interface LabelledDistribution { readonly values: Readonly>; readonly countUnit: 'resolved-targets' | 'unresolved-call-sites'; } export interface CallEvidenceMetrics { readonly resolvedCallSites: number; readonly resolvedTargets: number; readonly unresolvedCallSites: number; /** Aggregate compatibility views; `distributionCountUnit` makes the mixed unit explicit. */ readonly confidence: Readonly>; readonly resolution: Readonly>; readonly distributionCountUnit: 'resolved-targets-plus-unresolved-call-sites'; readonly resolvedTargetConfidence: LabelledDistribution; readonly resolvedTargetResolution: LabelledDistribution; readonly unresolvedCallSiteConfidence: LabelledDistribution; readonly unresolvedCallSiteResolution: LabelledDistribution; readonly nodeIdentity: 'occurrence'; readonly sourceScope: SourceScope; readonly generated: GeneratedPolicy; readonly edgeKind: 'call'; readonly catalogResolutionMode: 'exact' | 'fast'; } export interface ArchitecturePackageEdgeRow { readonly fromPackage: string; readonly toPackage: string; readonly kind: 'call'; readonly count: number; readonly countUnit: 'resolved-targets'; readonly nodeIdentity: 'package'; readonly sourceScope: SourceScope; readonly generated: GeneratedPolicy; readonly catalogResolutionMode: 'exact' | 'fast'; } export interface ArchitectureHotspot { readonly symbol: GraphSymbolRef; readonly direct: number; readonly transitive: number; readonly score: number; readonly identityMode: 'body-twin-union'; readonly twinCount: number; readonly matchingTwinCount: number; readonly sourceScope: SourceScope; readonly generated: GeneratedPolicy; readonly edgeKind: 'call'; readonly catalogResolutionMode: 'exact' | 'fast'; } export interface ArchitectureView { readonly languages: readonly string[]; readonly occurrenceCount: LabelledNodeCount; readonly uniqueBodyCount: LabelledNodeCount; readonly callEvidence: CallEvidenceMetrics; readonly packageCount: LabelledPackageCount; readonly includedSections: readonly ArchitectureSection[]; readonly packageEdges?: readonly ArchitecturePackageEdgeRow[]; readonly packageEdgesHasMore: boolean; readonly packageEdgesSummary?: ArchitectureFamilySummary; readonly hotspots?: readonly ArchitectureHotspot[]; readonly hotspotsHasMore: boolean; readonly hotspotsSummary?: ArchitectureFamilySummary; readonly effectiveFilter: EffectiveGraphSourceFilter; readonly coverage: GraphReadCoverage; readonly groups?: readonly ReadGroupSummary[]; } export declare function packageEdgeStableKey(row: ArchitecturePackageEdgeRow): string; export declare function hotspotStableKey(row: ArchitectureHotspot): string; /** Internal deterministic top-K helper, exported only for direct regression tests. */ export declare function boundedArchitectureRows(rows: Iterable, cap: number, compare: (left: T, right: T) => number): { readonly rows: readonly T[]; readonly truncated: boolean; }; /** Build labelled architecture metrics for one filtered catalog generation. */ export declare function buildArchitectureView(catalog: Catalog, indexes: Indexes, query: ArchitectureViewQuery, matcher: SourceRoleMatcher, cachedFeatures?: FeatureTable): Result; //# sourceMappingURL=architecture-view.d.ts.map