Skip to main content
Withdraw supplied assets from an account through the controller.

Withdrawing

  1. Confirm the account’s supply position
  2. Choose amount (0 = full position for that asset)
  3. Call withdraw
  4. Re-check health factor if debt remains

Call shape

Full-position sentinel: amount = 0 withdraws the entire post-accrual supply for that asset, and the zero is sticky across duplicate legs. The return value is the resolved figure — the only way to learn what a withdraw-all actually paid. There is no max_withdraw view; simulate the call instead.

Preconditions

  • Caller holds the account’s position NFT, or is an active delegate on it
  • Asset has a live supply position (#121 if not)
  • If debt remains: HF ≥ 1 WAD, the LTV gate holds, and LTV-weighted collateral stays above the minimum-borrow floor (#100, #126 otherwise)
  • Pool has enough cash (#112 if not)
  • A paused spoke asset blocks withdraw; a frozen one does not — freeze blocks entry only. Global protocol pause does not block withdraw either