/**
 * Public-/Freemail-Provider-Domains.
 *
 * Diese Domains dürfen NIEMALS als Custom-Domain (web ODER mail) geblockt oder
 * in die kuratierte Country-Liste vorgeschlagen werden:
 *  - web:  icloud.com/gmail.com blocken würde die Webmail des Users sperren
 *  - mail: würde JEDE Mail von diesem Provider löschen (Kontakte, Banken, alles)
 *
 * Realer Vorfall: User hat eine Casino-Spam-Mail von `xyz@icloud.com` geöffnet,
 * die komplette Adresse kopiert + ins Add-Feld gepackt → wir extrahierten
 * `icloud.com` und hätten es geblockt/veröffentlicht. Das muss hart verhindert
 * werden — auf JEDER Ebene (Frontend-Hinweis + Backend-Reject).
 *
 * Spiegel-Liste im Frontend: `apps/rebreak-native/hooks/useCustomDomains.ts`
 * (PUBLIC_EMAIL_DOMAINS) — bei Änderungen beide synchron halten.
 */
export const PUBLIC_EMAIL_DOMAINS: ReadonlySet<string> = new Set([
  // Google
  "gmail.com", "googlemail.com",
  // Apple
  "icloud.com", "me.com", "mac.com",
  // Microsoft
  "outlook.com", "outlook.de", "hotmail.com", "hotmail.de", "hotmail.co.uk",
  "hotmail.fr", "live.com", "live.de", "msn.com",
  // Yahoo
  "yahoo.com", "yahoo.de", "yahoo.co.uk", "yahoo.fr", "ymail.com", "rocketmail.com",
  // GMX / United Internet (DACH)
  "gmx.de", "gmx.net", "gmx.at", "gmx.ch", "gmx.com", "web.de",
  // AOL
  "aol.com", "aim.com",
  // Proton / Tutanota / Posteo / Mailbox (privacy)
  "proton.me", "protonmail.com", "pm.me", "tutanota.com", "tutanota.de",
  "tuta.io", "posteo.de", "posteo.net", "mailbox.org", "hey.com",
  // Deutsche ISP-Freemail
  "t-online.de", "freenet.de", "arcor.de",
  // Generische Freemail
  "mail.com", "mail.de", "email.de", "zoho.com", "fastmail.com", "fastmail.fm",
  "hushmail.com",
  // Yandex / Mail.ru
  "yandex.com", "yandex.ru", "mail.ru",
  // Frankreich (FR-Markt)
  "laposte.net", "orange.fr", "free.fr", "sfr.fr", "wanadoo.fr",
  // Asien
  "qq.com", "163.com", "126.com", "naver.com", "daum.net",
]);

/**
 * True wenn die (bereits normalisierte, lowercase) Domain ein
 * Public-/Freemail-Provider ist und daher nicht blockbar/vorschlagbar.
 */
export function isPublicEmailDomain(domain: string): boolean {
  return PUBLIC_EMAIL_DOMAINS.has(domain.trim().toLowerCase());
}
