import type { GraphBundle } from "audit-tools/shared"; /** An undirected weighted coupling edge (canonical `a < b`). */ export interface CouplingEdge { a: string; b: string; weight: number; } export interface DataStateCouplingOptions { /** * A target is "generic" (dropped) once its referrer count exceeds * max(genericAbsolute, genericFraction × universe). Ubiquitous targets carry no * grouping signal and would otherwise couple everything. */ genericFraction?: number; genericAbsolute?: number; /** Minimum shared-target count for an edge to be emitted. */ minSharedTargets?: number; } /** * Derive data/state coupling edges from a graph bundle's structural edges. Two * source files sharing K non-generic targets get one undirected edge of weight K. * Deterministic: edges are canonicalized (`a < b`) and sorted by (a, b). Degrades * to `[]` for an edgeless / malformed bundle (never throws). */ export declare function deriveDataStateCoupling(graphBundle: GraphBundle, options?: DataStateCouplingOptions): CouplingEdge[]; //# sourceMappingURL=dataStateCoupling.d.ts.map