Loss Management

Reporting a Loss

Role Required: ROLE_POOL_FUNDS_MANAGER Function: LendingPoolManager.reportLoss()

The Pool Funds Manager declares an unrealized loss up to the total amount of capital owed to the lending pool. The doMintLossTokens parameter controls whether loss tokens are minted in the same transaction.

Steps

  1. Report the loss: Call LendingPoolManager.reportLoss() with the loss amount

  2. Stop the pool: The Pool Manager calls LendingPoolManager.stopLendingPool() to halt activity while loss tokens are issued

  3. Mint loss tokens: Either included in the reportLoss() call or by anyone calling LendingPoolTranche.batchMintLossTokens() — may require multiple batches for large pools

  4. Resume: The pool resumes after all loss tokens are issued

Repaying a Loss

Role Required: ROLE_POOL_FUNDS_MANAGER Function: LendingPoolManager.repayLoss()

After enforcement actions recover funds, the Pool Funds Manager repays any amount from a declared loss. No minimum or maximum amount is enforced.

Before calling, the Pool Funds Manager must approve the USDC amount to be spent by the LendingPoolManager contract.

Claiming Loss Recovery

Role Required: Liquidity Provider (must hold unrealized loss tokens) Function: LendingPoolManager.claimLoss()

Affected LPs claim their proportional share of recovered funds using their ERC-1155 unrealized loss tokens. Recovered funds are distributed outside the pool balance — they do not change the LP's pool position.

First Loss Capital

Role Required: ROLE_POOL_FUNDS_MANAGER

Function
Purpose

LendingPoolManager.depositFirstLossCapital()

Add First Loss Capital (USDC approval required first)

LendingPoolManager.withdrawFirstLossCapital()

Withdraw First Loss Capital (only after pool is stopped and all tranches are repaid)

First Loss Capital can be added at any time during pool operation (outside clearing periods). It absorbs losses before any tranche. It does not accrue interest.

Last updated