// src/adapters/Adapter.ts

export interface SavingsDelta {
  bytesIn: number;
  bytesOut: number;
  tokensIn?: number;
  tokensOut?: number;
  hits: number;
}

export interface AbsoluteTotals {
  bytesIn: number;
  bytesOut: number;
  tokensIn: number;
  tokensOut: number;
  hits: number;
}

export interface RepairResult {
  performed: boolean;
  current: string | null;
  symlinked: string[];
  skipped: string[];
  errors: Array<{ name: string; msg: string }>;
}

export interface Adapter {
  readonly id: string;
  readonly displayLabel: string;
  isInstalled(): boolean;
  getCurrentVersion(): string | null;
  repair?(): RepairResult;
  readSavings?(): AbsoluteTotals | null;
}
