import type { CompositionKindMismatch, CompositionMembership, CompositionRelationship, DeclaredCompositionIndex, ResolvedCompositionDeclaration } from "./declared-composition.js"; import type { AssetKind, AssetStatus, Catalog, DependencyKind } from "./model.js"; import type { Evidence } from "./types/diagnostics.js"; export interface ImpactAsset { id: string; kind: AssetKind; sourcePath: string; status?: AssetStatus; statusReason?: string; statusChangedAt?: string; direct: boolean; } export interface ImpactProvenanceEdge { from: string; to: string; declaredTarget: string; kind: DependencyKind; relationship: CompositionRelationship; declarationIndex?: number; dependentMembership: CompositionMembership; direct: boolean; sourcePath: string; evidence?: Evidence; } export interface DeclaredImpactReport { focus: ImpactAsset; requiredDependents: ImpactAsset[]; optionalDependents: ImpactAsset[]; requiredSkills: ImpactAsset[]; optionalSkills: ImpactAsset[]; provenanceEdges: ImpactProvenanceEdge[]; invalidIncomingDeclarations: ImpactInvalidIncomingDeclaration[]; } export interface ImpactInvalidIncomingDeclaration extends CompositionKindMismatch { resolvedTargetId: string; resolvedTargetPath: string; dependentMembership: CompositionMembership; } export interface DeclaredImpactIndex extends DeclaredCompositionIndex { incomingByTargetId: ReadonlyMap; } /** Resolve reverse explicit composition without scanning or rendering. */ export declare function resolveDeclaredImpact(catalog: Catalog, focusReference: string): DeclaredImpactReport; /** Build forward composition lookups plus incoming declarations for impact. */ export declare function prepareDeclaredImpactIndex(catalog: Catalog): DeclaredImpactIndex; /** Resolve one reverse closure while reusing a prepared composition index. */ export declare function resolveDeclaredImpactFromIndex(index: DeclaredImpactIndex, focusReference: string): DeclaredImpactReport;