Currency / PublicAPI / ValueObjects¶
Purpose¶
The ValueObjects folder contains lightweight, immutable data structures used by the Currency system.
These types represent structured data (such as costs and bundles) passed into service calls and helpers.
Important Notes¶
- These types contain data only
- No behaviour beyond validation is included
- They do not depend on internal systems
- Changes to underlying collections may affect wrapped data
What Lives Here¶
CostLine¶
- Represents a single currency requirement
-
Contains:
-
CurrencyId Moneyamount-
Validates:
-
currency identifier
- positive amount
CostBundle¶
- Wrapper around a collection of
CostLine -
Used for:
-
multi-currency costs
- rewards and grants
- affordability checks
- Does not copy the underlying collection
Usage Guidance¶
Mental model¶
- These are simple value containers
- They are passed into higher-level helpers and services
- They do not implement business logic
Example:
- "Spend 100 gold and 5 gems" →
CostBundle
Internal Use Only¶
These types are part of the public API surface.
Do not:
- Add behaviour or logic
- Depend on internal representations
Safe to Remove¶
This folder may be removed if multi-currency helpers are not required.
Currency will continue to operate using direct service calls.
Related Documentation¶
- PublicAPI / Transactions — uses
CostBundle - PublicAPI / Helpers — affordability helpers
- Abstractions —
CurrencyId,Money