cadrumo.domain.currency package

Currency normalization to euro, so aggregation works from one currency.

Inert namespace. Each contract is reached at its own defining module: models for MonetaryAmount, NormalizedAmount and CurrencyNormalizationStatus, service for CurrencyNormalizationService and the ExchangeRateProvider protocol it depends on, and errors for the refusal hierarchy.

The provider contract is original_amount * rate = eur_amount. ECB EUR-base quote inversion and most-recent-prior-publication fallback live in cadrumo.adapters.outbound.fx, not in this pure domain package – the service records a status rather than silently assuming EUR or writing zero into a filing-grade fact.

Submodules