export type Severity = 'error' | 'warning' | 'info'; export interface LintRule { name: string; severity: Severity; enabled: boolean; } export interface LintConfig { rules: { 'missing-translation'?: Severity | boolean; 'unused-translation'?: Severity | boolean; 'hardcoded-text'?: Severity | boolean; 'empty-translation'?: Severity | boolean; 'duplicate-translation'?: Severity | boolean; 'inconsistent-placeholders'?: Severity | boolean; 'missing-plural-forms'?: Severity | boolean; }; ignore?: string[]; ignorePatterns?: string[]; ignoredKeys?: string[]; maxWarnings?: number; maxErrors?: number; reportFormat?: 'stylish' | 'json' | 'compact' | string; fix?: boolean; } export interface LintIssue { rule: string; severity: Severity; message: string; file: string; line: number; column: number; endLine?: number; endColumn?: number; key?: string; suggestion?: string; fixable?: boolean; } export interface LintResult { filePath: string; issues: LintIssue[]; errorCount: number; warningCount: number; fixableCount: number; source?: string; } export interface LintReport { results: LintResult[]; totalErrors: number; totalWarnings: number; totalFixable: number; filesScanned: number; duration: number; } export interface LintFormatter { format(report: LintReport): string; }