VaultManagercontract per collateral type for each stablecoin. The same collateral could also have different associated
VaultManagercontracts if different parameters are used.
createVault(): for a user to create a vault within the contract
angle(): for a user to compose actions with the contract. It can be used to create a vault, add collateral to it, borrow stablecoins against it, remove collateral from a vault, repay debt in a vault, approve the contract for a token through the
permitinterface for tokens that allow it, or even get debt in a vault from another vault
liquidate()function. They may call the
checkLiquidation()before that to simplify and pass the right parameters to the contract.
VaultManagercontracts implement the ERC-721 standard and have minting right on their corresponding AgToken.
VaultManagercontract. It allows users to (indirectly) deposit collateral in a
VaultManagerand borrow stablecoins from it which are then invested in yield strategies. Stablecoins borrowed from deposited collateral are never accessible to users, they just get a portion of the yield made on it.
mint: for a user to deposit collateral in the strategy
redeem(): for a user to redeem collateral from the strategy
claim(): to claim stablecoin rewards accruing from the strategy.
BaseReactorimplementation that all reactors should implement.
flashLoanModule. It has no minting rights over the stablecoin contracts.
VaultManagercontracts associated to a stablecoin. There is one such
Treasurycontract per stablecoin on mainnet.
Treasurycontract that profits and losses from
FlashLoancontracts are pooled before a portion is distributed (or not) to veANGLE holders.
Treasurycontract has the ability to grant minting rights on its associated AgToken: it is hence the contract granting permissions to each new
Settlementcontracts can be used to settle that is to say to remove a
VaultManagerfrom the protocol. Global settlement corresponds to the situation where all
VaultManagercontracts associated to one stablecoin are settled at the same time.
VaultManageris transferred to the
Settlementcontract to first allow owners of over-collateralized vault to claim their collateral upon repaying all their debt. Then owners of stablecoins can redeem collateral at oracle value (if there is enough left).
CoreBorrowcontract which maintains the integrity of the roles at the module-level.
CoreBorrowcontract whether the
msg.senderhas the correct role.
CoreBorrowcontract also introduces a
Treasurycontracts associated to stablecoins on which flash loans can be taken.