Position Settlement Flow¶
Trigger: A prediction market resolves with outcome NO (the vault wins). markSettling() has already been called.
Caller: Governance (operator)
This flow covers the second step of the two-step settlement sequence. Call Mark Settling first.
Steps¶
-
Slot is in
SETTLINGstatus.markSettling()has been called;adapter.isSettled()istrue. -
Operator calls
vault.closePosition(slotIndex). -
Vault validates:
positions[slotIndex].status == SETTLING. -
Vault calls
adapter.claimSettlement(). -
Adapter claims settlement from the prediction market venue — NO shares are redeemed at $1.00 each.
-
Adapter returns USDC to the vault (the full settlement value).
-
Vault adds returned USDC to
idleReserve. -
Slot status set to
EMPTY. -
PositionClosed(slotIndex, settledValue)emitted. -
Capital is now available for redeployment via
openPosition()on the same or different slot.
Accounting Impact¶
Because markSettling() already froze the modeled value at market value, there is no gap at the point of closePosition() — the slot's modeled and market NAV were already equal.
Before closePosition() (slot is SETTLING, market at $1.00):
positionModeledValue(slot) = adapter.positionValue() = allocatedAssets × ~$1.00
positionMarketValue(slot) = adapter.positionValue() = allocatedAssets × ~$1.00
gap = 0
After closePosition():
slot removed from both NAVs
idleReserve += settledValue
Net NAV change: ~$0 (modeled value converts to cash)
Redeployment¶
After settlement, the operator should redeploy within 7 days. See Capital Rollover for the full redeployment sequence.
Settlement vs. write-off
This flow covers NO wins (vault profits). For YES wins (vault loses), see the Write-Off Flow.