# @hypnozbizo/syscohada-core

> Types et constantes communes pour la zone OHADA (17 pays)

[![npm version](https://img.shields.io/npm/v/@hypnozbizo/syscohada-core.svg)](https://www.npmjs.com/package/@hypnozbizo/syscohada-core)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## 📦 Installation

```bash
npm install @hypnozbizo/syscohada-core
# ou
pnpm add @hypnozbizo/syscohada-core
# ou
yarn add @hypnozbizo/syscohada-core
```

## 🚀 Utilisation

### Types de pays

```typescript
import type {
  OHADACountry,
  CFAZoneCountry,
  UEMOACountry,
  CEMACCountry
} from '@hypnozbizo/syscohada-core';

// Fonction acceptant uniquement les pays UEMOA
function processUEMOA(country: UEMOACountry) {
  // country est limité à: 'BJ' | 'BF' | 'CI' | 'GW' | 'ML' | 'NE' | 'SN' | 'TG'
}

// Fonction acceptant tous les pays OHADA
function processOHADA(country: OHADACountry) {
  // country inclut UEMOA + CEMAC + Comores + Guinée + RDC
}
```

### Constantes et utilitaires

```typescript
import {
  OHADA_COUNTRIES,
  UEMOA_COUNTRIES,
  CEMAC_COUNTRIES,
  COUNTRY_INFO,
  isOHADACountry,
  isUEMOACountry
} from '@hypnozbizo/syscohada-core';

// Liste des pays
console.log(UEMOA_COUNTRIES); // ['BJ', 'BF', 'CI', ...]

// Informations sur un pays
const senegal = COUNTRY_INFO['SN'];
// { code: 'SN', name: 'Sénégal', currency: 'XOF', zone: 'UEMOA', ... }

// Validation
if (isUEMOACountry('SN')) {
  console.log('Sénégal fait partie de l\'UEMOA');
}
```

### Types de zones

```typescript
import type {
  MonetaryZone,
  EconomicZone,
  CFACurrency,
  OHADACurrency
} from '@hypnozbizo/syscohada-core';

type PaymentConfig = {
  zone: MonetaryZone; // 'UEMOA' | 'CEMAC'
  currency: CFACurrency; // 'XOF' | 'XAF'
};
```

## 🌍 Pays couverts

### UEMOA (8 pays - XOF)
- 🇧🇯 Bénin
- 🇧🇫 Burkina Faso
- 🇨🇮 Côte d'Ivoire
- 🇬🇼 Guinée-Bissau
- 🇲🇱 Mali
- 🇳🇪 Niger
- 🇸🇳 Sénégal
- 🇹🇬 Togo

### CEMAC (6 pays - XAF)
- 🇨🇲 Cameroun
- 🇨🇫 Centrafrique
- 🇨🇬 Congo
- 🇬🇦 Gabon
- 🇬🇶 Guinée Équatoriale
- 🇹🇩 Tchad

### Autres OHADA (3 pays)
- 🇰🇲 Comores (KMF)
- 🇬🇳 Guinée Conakry (GNF)
- 🇨🇩 RD Congo (CDF)

## 📚 API

### Types

- `OHADACountry` - Les 17 États parties. C'est aussi le champ d'application du
  SYSCOHADA : l'AUDCIF institue « un système comptable unique, commun à tous les
  États parties » (art. 5). Un traitement comptable se type avec celui-ci.
- `CFAZoneCountry` - Les 14 pays des zones Franc CFA (UEMOA + CEMAC). Ensemble
  **monétaire**, pas comptable : il désigne les États où les montants sont en
  XOF ou XAF, et ne délimite pas le SYSCOHADA.
- `SyscohadaCountry` - ⚠️ **déprécié**, alias de `CFAZoneCountry`. Le nom
  laissait croire que le SYSCOHADA s'arrêtait aux pays CFA ; il couvre les 17.
- `OHADACountryInfo` - Forme d'une entrée de `COUNTRY_INFO`
- `UEMOACountry` - Pays UEMOA (8)
- `CEMACCountry` - Pays CEMAC (6)
- `MonetaryZone` - Zones monétaires
- `EconomicZone` - Zones économiques étendues
- `CFACurrency` - Devises CFA
- `OHADACurrency` - Toutes les devises OHADA
- `DataProvenance`, `ProvenanceStatus` - Traçabilité d'un jeu de données

### Constantes

- `OHADA_COUNTRIES` - Tableau des 17 États parties
- `CFA_ZONE_COUNTRIES` - Tableau des 14 pays des zones Franc CFA
- `SYSCOHADA_COUNTRIES` - ⚠️ **déprécié**, alias de `CFA_ZONE_COUNTRIES`
- `UEMOA_COUNTRIES` - Tableau des 8 pays UEMOA
- `CEMAC_COUNTRIES` - Tableau des 6 pays CEMAC
- `COUNTRY_INFO` - Informations détaillées sur chaque pays
- `CURRENCY_MINOR_UNITS` - Décimales de chaque devise OHADA (ISO 4217). Quatre
  des cinq n'ont pas de subdivision : un montant en XOF, XAF, KMF ou GNF
  s'exprime en unités entières, seul le CDF admet deux décimales.
- `PROVENANCE_REVIEW_MONTHS` - Délai de revérification d'une donnée (12 mois)

### Fonctions

- `isOHADACountry(code)` - Vérifie si un pays est membre OHADA
- `isUEMOACountry(code)` - Vérifie si un pays est membre UEMOA
- `isCEMACCountry(code)` - Vérifie si un pays est membre CEMAC

## 🔗 Packages liés

- [@hypnozbizo/syscohada-registry](https://www.npmjs.com/package/@hypnozbizo/syscohada-registry) - Gestion des immatriculations
- [@hypnozbizo/syscohada-banks](https://www.npmjs.com/package/@hypnozbizo/syscohada-banks) - Banques et systèmes de paiement OHADA

## 📄 License

MIT © Hypnoz Team
