Model
available + locked. unsettled and quarantined
are reserved for future settlement modes and currently always zero.
Reading balances
All USDC amounts (
available, unsettled, locked, quarantined)
are decimal strings floored to 6 dp — USDC’s native on-chain
precision. They are never 18-scale wei and never carry more than 6
fraction digits, so you can parse them directly as USDC units. The
same 6-dp formatting applies to the cash breakdown in
GET /api/me/overview.How locked moves
SELL orders don’t move USDC
balances — they reserve the
outcome shares you are selling instead. After you place a
SELL, your available and locked USDC are unchanged; what does
change is the available-to-promise outcome-share balance for the
underlying token. When the SELL fills on-chain, USDC proceeds land
in available per the table above.Inspect outcome-share balances via GET /api/me/positions.
Each position row carries three quantity fields:quantity— mirror total (matches on-chain ERC-1155 balance). Use for “what do I own”.availableQuantity— post-encumbrance, the amount you can currently sell or burn. Use for “what can I trade”.encumberedQuantity— shares reserved by your open SELL orders and pending co-signed vault operations (such as a merge or convert) on the same(vault, tokenId).nullwhen nothing has ever been reserved on that token. ReadavailableQuantitydirectly rather than computingquantity − encumberedQuantity: it is floored at0.
Append-only ledger
Every balance change is recorded in an append-only balance-event ledger on the platform side. The conservation invariant holds for any(user, token):
SUM(deltaAvailable) + SUM(deltaLocked) === current(available) + current(locked)