import * as vscode from 'vscode'; export interface CustomRule { id: string; severity: Severity; description: string; message: string; languages?: string[]; excludeLanguages?: string[]; } export type Severity = 'error' | 'warning' | 'info'; export type AdapterStatus = 'ok' | 'tool-unavailable' | 'execution-failed'; export interface AiFixSnippet { originalText: string; newText: string; } export interface LinterFix { range: [number, number]; text: string; originalText?: string; } export interface LinterDiagnostic { severity: Severity; ruleId: string; message: string; range: vscode.Range; suggestion?: string; fix?: LinterFix; aiFix?: AiFixSnippet; } export interface AdapterResult { diagnostics: LinterDiagnostic[]; status: AdapterStatus; errorMessage?: string; } export interface LinterAdapter { id: string; supportedLanguages: string[]; check(document: vscode.TextDocument, workingDir: string): Promise; isAvailable(): boolean; }