An Oryn order has two sides:
source_intent: the side funded by the user
destination_intent: the side funded by the solver
Each side maps to an escrow vault address. The API stores transaction hashes as watchers observe events on-chain.
Lifecycle model
Display states
| State | Meaning | User action |
|---|
| Created | The order exists, but source funds are not indexed yet. | Initiate source side. |
| Source initiated | Source escrow is created or funded. | Wait for solver. |
| Destination initiated | Solver has prepared destination funds. | Claim destination side. |
| Destination claimed | User-side claim is indexed. | Wait for final settlement. |
| Source claimed | Solver has claimed the source side. | None. |
| Completed | Expected route events are indexed. | None. |
| Expired | A side passed its expiry without claim. | Cancel where applicable. |
| Cancelled | Cancel transaction is indexed. | None. |
API fields behind the states
| Field | Why it matters |
|---|
swap_id | Escrow vault address for the side. |
create_tx_hash | Initiation transaction. |
claim_tx_hash | Claim transaction. The API field is currently named claim. |
bridge_tx_hash | Hop-route bridge dispatch transaction. |
cancel_tx_hash | Cancel transaction. |
cancel_after | Expiry window in blocks. |
l1_hop | Whether the route uses Avalanche hop settlement. |
Do not infer completion from one field alone. A robust integration should read both sides and understand whether the route is direct or hop-based.