/**
 * Consent-Text-Versionierung — Art. 9 DSGVO (Gesundheitsdaten / Mail-Auto-Delete)
 *
 * WORKFLOW:
 *   1. Hans-Müller (DSB) gibt neuen Text frei.
 *   2. Neue Version hier eintragen, CURRENT_ART9_MAIL_VERSION bumpen.
 *   3. Nach Migration: alle MailConnection.consentVersion !== CURRENT werden
 *      als "Re-Consent pending" behandelt (consentAt bleibt, aber Daemon pausiert).
 *   4. Frontend zeigt Re-Consent-Modal beim App-Open (UI-Agent-Task).
 *
 * WICHTIG: Texts sind NICHT für LLM-Prompts — das ist reiner Compliance-Text.
 * Formulierung liegt bei Hans-Müller (DSB) + Anwalt-Review.
 * Dieser File ist Backend-Infrastruktur, kein Stil-File.
 */

export const CURRENT_ART9_MAIL_VERSION = "art9-mail-v1-2026-05-13";

interface ConsentTextEntry {
  de: string;
  en: string;
}

const CONSENT_TEXTS: Record<string, ConsentTextEntry> = {
  "art9-mail-v1-2026-05-13": {
    de: `Mit der Verbindung meines E-Mail-Postfachs willige ich ausdrücklich ein, dass Rebreak in meinem Postfach gezielt nach Glücksspiel-Werbemails sucht und diese löscht. Mir ist bewusst, dass aus dieser Verarbeitung Rückschlüsse auf eine Suchterkrankung möglich sind, und ich willige in diese Verarbeitung von Gesundheitsdaten gem. Art. 9 Abs. 2 lit. a DSGVO ausdrücklich ein. Diese Einwilligung kann ich jederzeit für die Zukunft widerrufen, indem ich die Mail-Verbindung in den Einstellungen trenne.`,
    en: `By connecting my email mailbox, I expressly consent to Rebreak searching my mailbox for gambling promotional emails and deleting them. I am aware that this processing may allow inferences about an addiction disorder, and I expressly consent to the processing of health data pursuant to Art. 9(2)(a) GDPR. I may revoke this consent at any time with future effect by disconnecting the mail connection in the settings.`,
  },
};

/**
 * Gibt den Consent-Text für eine gegebene Version zurück.
 * Wirft wenn die Version unbekannt ist — das ist ein Programmierfehler,
 * kein User-Fehler (Frontend sollte nie eine unbekannte Version schicken).
 */
export function getConsentText(version: string): ConsentTextEntry {
  const entry = CONSENT_TEXTS[version];
  if (!entry) {
    throw new Error(
      `Unknown consent version: "${version}". Known versions: ${Object.keys(CONSENT_TEXTS).join(", ")}`,
    );
  }
  return entry;
}

/**
 * Gibt alle bekannten Consent-Versionen zurück — für interne Konsistenz-Checks.
 */
export function getKnownConsentVersions(): string[] {
  return Object.keys(CONSENT_TEXTS);
}
