Currency / Policies¶
Purpose¶
The Policies layer provides authoring assets for currency rules such as caps and escrow requirements.
Policies are data-only configuration. They do not perform validation or mutation — enforcement is handled by composed currency services.
Important Notes¶
- Policies do not enforce behaviour
- Enforcement depends on the composed service stack
- Policies describe rules, not execution
- Removing this folder does not affect core Currency functionality
What Lives Here¶
CurrencyPolicy¶
ScriptableObject containing:
- Per-currency cap rules
- Global escrow requirement flag
TryGetCapRule¶
bool TryGetCapRule(CurrencyId id, out CurrencyCapRule rule);
- Returns a data-only rule (
min,max,mode) - Returns
falsewhen no rule exists
RequireEscrow¶
bool RequireEscrow { get; }
- Indicates whether debits and transfers should use escrow
- Does not provide escrow functionality
CurrencyRuleAuthoring¶
Inspector-facing authoring data:
idminmaxmode
Runtime systems should use CurrencyCapRule.
Usage Guidance¶
Lookup behaviour¶
- Currency identifiers are normalized
- Rules are cached for lookup
- Duplicate rules use the last entry
- Missing rules are treated as unbounded
Data sanitisation¶
During cache rebuild:
- Negative values are clamped to
0 - Invalid ranges are corrected
- Invalid identifiers are ignored
Runtime usage¶
Policies are consumed by composed services:
- Caps decorators apply
CurrencyCapRule - Escrow guards respect
RequireEscrow
Policies do not mutate balances or perform validation.
Escrow behaviour¶
When RequireEscrow is enabled:
- Debits and transfers must use escrow when supported
- Behaviour depends on the composed service stack
Internal Use Only¶
Policies define configuration only.
Do not:
- Implement logic here
- Depend on enforcement behaviour
- Assume rules are always applied
Safe to Remove¶
This folder may be removed if policy constraints are not required.
Currency will continue to operate without caps or escrow requirements.
Related Documentation¶
- Abstractions —
CurrencyCapRule,CapMode,ITransferPolicyProvider - Core — service composition and factories
- Exchange — currency conversion rules
- Persistence — save/load behaviour