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
Report the loss: Call
LendingPoolManager.reportLoss()with the loss amountStop the pool: The Pool Manager calls
LendingPoolManager.stopLendingPool()to halt activity while loss tokens are issuedMint loss tokens: Either included in the
reportLoss()call or by anyone callingLendingPoolTranche.batchMintLossTokens()— may require multiple batches for large poolsResume: 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
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