/** * Static-analysis bridge: maps each cycle pattern in the catalog to the * SwiftLint rule (or other static analyzer) that *would* have caught it * at parse time, OR explicitly notes when no static rule exists yet. * * Reinforces the differentiator: memorydetective sees the *runtime evidence* * (the actual cycle in a memgraph) where compilers and linters miss it * because the cycle's existence requires runtime conditions (closure * actually outlives owner, AsyncSequence actually never terminates, etc.). * * Sources: * - SwiftLint rules: https://realm.github.io/SwiftLint/rule-directory.html * - SwiftLint open-but-unshipped @escaping rule (8 years old): * https://github.com/realm/SwiftLint/issues/776 * - Swift compiler nested-closure [weak self] warning (partial fix): * https://github.com/swiftlang/swift/issues/72391 — PR #77063 */ export interface StaticAnalysisHint { /** SwiftLint rule identifier, or null when no rule exists. */ rule: string | null; /** URL to the rule docs OR the open issue tracking the gap. */ url: string | null; /** Plain-English explanation of the relationship. */ explanation: string; } /** Returns the static-analysis hint for a given pattern, or null if unknown. */ export declare function getStaticAnalysisHint(patternId: string): StaticAnalysisHint | null; /** All known pattern ids that have hints. Used in tests for coverage assertion. */ export declare function knownHintPatternIds(): string[];