/** * Operación de fix aplicable automáticamente por `ark fix`. * Solo presente en violations con fix determinístico (sin ambigüedad). */ export interface FixOp { /** Tipo de operación */ type: 'replace' | 'insert_after' | 'delete_line'; /** Línea 1-based donde aplicar el fix */ line: number; /** Substring a buscar en la línea (para type: 'replace') */ search?: string; /** Reemplazo (para type: 'replace') */ replace?: string; /** Contenido a insertar después de la línea (para type: 'insert_after') */ insert?: string; } export interface Violation { code: string; severity: 'error' | 'warning'; line: number; message: string; /** Sugerencia concreta de cómo arreglar la violación. Solo presente cuando el fix es determinístico. */ fix?: string; fixOp?: FixOp; } /** * Convención de co-ocurrencia de clases en el elemento raíz del template. * El framework NO conoce las clases concretas de un proyecto (son de su design * system) — por eso el proyecto declara sus convenciones y el analyzer las hace * cumplir de forma genérica. Ej: "si la raíz tiene `page` + `cliente-view` pero * no `bg-canvas` ni `mapa-page`, falta el fondo". */ export interface ClassConvention { /** Código de la violación (ej: 'PAGE_MISSING_BG') */ code: string; /** La raíz debe tener TODAS estas clases para que la convención aplique */ whenAll: string[]; /** Si la raíz tiene CUALQUIERA de estas, la convención se omite (escape hatch) */ unlessAny?: string[]; /** La raíz debe tener AL MENOS UNA de estas — si no, es violación */ requireAny: string[]; /** Mensaje explicativo mostrado al dev */ message: string; /** Severidad — por defecto 'warning' */ severity?: 'error' | 'warning'; } /** Configuración opcional del analyzer, inyectada por el plugin/CLI desde el proyecto. */ export interface AnalyzerConfig { /** Convenciones de clases definidas por el proyecto (no por el framework). */ classConventions?: ClassConvention[]; } export declare function analyze(source: string, filePath: string, config?: AnalyzerConfig): Violation[]; export declare function formatViolation(v: Violation, filePath: string, source: string): string; //# sourceMappingURL=analyzer.d.ts.map