Skip to content

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

  1. Slot is in SETTLING status. markSettling() has been called; adapter.isSettled() is true.

  2. Operator calls vault.closePosition(slotIndex).

  3. Vault validates: positions[slotIndex].status == SETTLING.

  4. Vault calls adapter.claimSettlement().

  5. Adapter claims settlement from the prediction market venue — NO shares are redeemed at $1.00 each.

  6. Adapter returns USDC to the vault (the full settlement value).

  7. Vault adds returned USDC to idleReserve.

  8. Slot status set to EMPTY.

  9. PositionClosed(slotIndex, settledValue) emitted.

  10. 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.