package dev.lions.unionflow.server.entity; import java.util.Set; /** * Devises supportées par UnionFlow. * *

UnionFlow vise prioritairement la zone UEMOA (XOF/XAF) mais s'ouvre à la diaspora * (EUR/USD/GBP/CAD). Le {@link ZoneDevise} permet de discriminer pour les règles * AML (transferts internationaux, due diligence renforcée). * * @since 2026-04-25 (P2-NEW-7) */ public enum Devise { // Zone UEMOA / CEMAC XOF("Franc CFA Ouest", ZoneDevise.UEMOA), XAF("Franc CFA Centrale", ZoneDevise.CEMAC), // Diaspora — Europe / Amérique EUR("Euro", ZoneDevise.EUROPE), USD("Dollar US", ZoneDevise.AMERIQUE), GBP("Livre Sterling", ZoneDevise.EUROPE), CAD("Dollar Canadien", ZoneDevise.AMERIQUE), CHF("Franc Suisse", ZoneDevise.EUROPE), // CEDEAO non-UEMOA (pour intégrations futures) GHS("Cédi Ghanéen", ZoneDevise.CEDEAO), NGN("Naira Nigérian", ZoneDevise.CEDEAO), // Maghreb MAD("Dirham Marocain", ZoneDevise.MAGHREB); private final String libelle; private final ZoneDevise zone; Devise(String libelle, ZoneDevise zone) { this.libelle = libelle; this.zone = zone; } public String libelle() { return libelle; } public ZoneDevise zone() { return zone; } /** Devise de référence UnionFlow / BCEAO. */ public static Devise reference() { return XOF; } /** Devises pour lesquelles un transfert depuis/vers UEMOA déclenche AML renforcé. */ public static final Set DEVISES_INTERNATIONALES = Set.of(EUR, USD, GBP, CAD, CHF); public boolean estInternationale() { return DEVISES_INTERNATIONALES.contains(this); } public enum ZoneDevise { UEMOA, CEMAC, CEDEAO, EUROPE, AMERIQUE, MAGHREB } }