import type { Capability } from './Capability.js'; import type { Finding } from '../findings/Finding.js'; export interface CapabilityEntry { grants?: Capability[]; requires?: Capability[]; /** * ATT&CK techniques for a granted capability where the capability's default * (`CAPABILITY_TECHNIQUES`) does not fit this finding. An empty list means no technique fits. */ techniques?: Partial>; } /** * The full attack model lives here: finding id → attacker capabilities it grants. * Keep this the single source of truth so the 92 checks stay untouched. * * Every key MUST correspond to a finding id some check can actually emit, and every id referenced * by a named chain must be emittable too — a typo in either place fails silently (a key that * matches nothing simply never grants, and a chain ingredient that matches nothing means the chain * never fires). `test/unit/chains/registryIntegrity.test.ts` enforces both directions. */ export declare const CAPABILITY_REGISTRY: Record; /** Resolve the effective capabilities for a finding (inline overrides registry; passed/inconclusive yield nothing). */ export declare function capabilitiesFor(finding: Finding): { grants: Capability[]; requires: Capability[]; }; //# sourceMappingURL=CapabilityRegistry.d.ts.map