Abstractions / Escrow¶
Purpose¶
The Escrow folder defines the public escrow contracts and result types for the Currency system.
These types describe how hold-based currency flows are represented and interacted with. They do not define how holds are stored or internally managed (including expiry handling and cleanup behaviour).
Usage Guidance¶
Escrow abstractions are intended to:
- Define the public escrow lifecycle contract
- Provide machine-readable result codes for hold operations
- Expose read-only inspection for UI, debugging, and tooling
- Keep escrow consumers independent from concrete implementations
What Lives Here¶
ICurrencyEscrow¶
- Optional escrow capability for hold-based flows
-
Supports:
-
TryHold CommitReleaseExpireStale
ICurrencyEscrowReadOnly¶
- Optional non-mutating inspection surface
-
Supports:
-
active token checks
- time-to-expiry queries
- owner token enumeration
- hold info lookup
EscrowOpCode¶
- Machine-readable outcomes for escrow operations
- Includes hold/commit/release failures and token lifecycle states
EscrowOpResult¶
- Result type for escrow operations
-
Includes:
-
operation code
- optional message
- token for successful holds
EscrowHoldInfo¶
- Lightweight immutable snapshot of an active hold
- Intended for display/debug without exposing internals
Important Notes¶
- Escrow is an optional capability
- These abstractions do not guarantee that a service supports escrow
- They define how hold-based flows behave when escrow is composed
- Token lifecycle states are escrow-specific and do not map directly to currency operation results
- Cleanup and expiry behaviour are implementation-defined
Usage Guidance¶
Mental model¶
- Abstractions define the contract
- Implementations decide storage, retention, and expiry behaviour
- Consumers should depend only on available capabilities
If escrow is not present, a service may not implement:
ICurrencyEscrowICurrencyEscrowReadOnly
Internal Use Only¶
This folder defines contracts only.
Do not:
- Add storage or lifecycle management logic
- Assume token persistence or retention guarantees
- Depend on implementation details from other layers
Safe to Remove¶
This folder should not be removed if any escrow-based workflows are used.
Other systems may depend on these contracts when escrow capability is composed.
Related Documentation¶
- Abstractions / Primitives — shared result and value primitives
- PublicAPI / Transactions —
CurrencyHoldTxnuses escrow when available - PublicAPI / Helpers — factories can compose escrow-enabled stacks
- Internal — escrow implementation details (not part of the public contract)