/** * Anti-pattern validator (#1888). * * Runs the graph's `anti-patterns.json` selectors over Eddie markup and * reports each hit with the reason and the fix the owning component's * `@antipattern` tag authored. Structural rules like "a hero never sits in a * layout container" and "every grid child is a grid item" used to live only * in realtime-ui's prompt and CLAUDE.md's Common Mistakes; this is the * mechanism that makes them refusable. * * Scope mirrors `SlotContractValidator`: `.html` files whole, and the Lit * `html\`…\`` template regions of `.ts` / `.tsx` files. `.njk` / `.vue` reach * it as `.html` virtual documents from `eddie_validate_file`. */ import type { AntiPattern, HealthIssue } from '../types.js'; export declare class AntiPatternValidator { private readonly patterns; constructor(patterns: AntiPattern[]); validateFile(filePath: string): Promise; /** * Validate one chunk of markup. `startLine` is the 0-based line offset of * the chunk within the file, so issue lines are file-relative. */ validateMarkup(filePath: string, markup: string, startLine: number): HealthIssue[]; } //# sourceMappingURL=anti-pattern-validator.d.ts.map