/** * @angular-modernizer/plugin-angular - Interface Duplication Analysis Rule * * Detects two kinds of type-system duplication across a TypeScript project: * * 1. **Interface family duplication** — groups of 3+ interfaces sharing the same * conceptual suffix (e.g. DialogRequest, Config, Data) whose property sets have * non-zero Jaccard similarity. One violation is emitted per group. * * 2. **ID type mixing** — functions or methods with 2+ parameters whose names end * with `Id` and whose declared type is `string` (i.e. unbranded string IDs). * * Skips `.d.ts` declaration files and anything under `node_modules/`. * * @example * ```typescript * const rule = new InterfaceDuplicationAnalysisRule(); * const results = await rule.analyze(context); * ``` */ import type { AnalysisRule, AnalysisContext, AnalysisResult } from '@angular-modernizer/plugin-system'; export declare class InterfaceDuplicationAnalysisRule implements AnalysisRule { readonly id = "angular:interface-duplication"; readonly name = "Interface Duplication"; readonly description: string; readonly severity = "warning"; readonly category = "angular-typescript"; readonly tags: string[]; analyze(context: AnalysisContext): Promise; private getSourceFiles; private collectInterfaces; private matchSuffix; /** * Returns all property names for an interface, including inherited ones. * Uses the TypeScript type system (`getType().getProperties()`) for accuracy * and falls back to own properties only if type resolution fails. */ private getPropertyNames; private detectInterfaceDuplication; private detectIdTypeMixing; private intersect; private union; } //# sourceMappingURL=interface-duplication-analysis.rule.d.ts.map