BLVaultManagerLusd
Inherits: Policy, IBLVaultManager, RolesConsumer
State Variables
MINTR
MINTRv1 public MINTR
TRSRY
TRSRYv1 public TRSRY
BLREG
BLREGv1 public BLREG
ohm
address public ohm
pairToken
address public pairToken
aura
address public aura
bal
address public bal
exchangeName
string public exchangeName
balancerData
BalancerData public balancerData
auraData
AuraData public auraData
auraMiningLib
IAuraMiningLib public auraMiningLib
ohmEthPriceFeed
OracleFeed public ohmEthPriceFeed
ethUsdPriceFeed
OracleFeed public ethUsdPriceFeed
lusdUsdPriceFeed
OracleFeed public lusdUsdPriceFeed
implementation
BLVaultLusd public implementation
vaultOwners
mapping(BLVaultLusd => address) public vaultOwners
userVaults
mapping(address => BLVaultLusd) public userVaults
totalLp
uint256 public totalLp
deployedOhm
uint256 public deployedOhm
circulatingOhmBurned
uint256 public circulatingOhmBurned
ohmLimit
uint256 public ohmLimit
currentFee
uint64 public currentFee
minWithdrawalDelay
uint48 public minWithdrawalDelay
isLusdBLVaultActive
bool public isLusdBLVaultActive
MAX_FEE
uint32 public constant MAX_FEE = 10_000
_ohmIndex
uint8 private constant _ohmIndex = 1
_lusdIndex
uint8 private constant _lusdIndex = 0
Functions
constructor
constructor(
Kernel kernel_,
TokenData memory tokenData_,
BalancerData memory balancerData_,
AuraData memory auraData_,
address auraMiningLib_,
OracleFeed memory ohmEthPriceFeed_,
OracleFeed memory ethUsdPriceFeed_,
OracleFeed memory lusdUsdPriceFeed_,
address implementation_,
uint256 ohmLimit_,
uint64 fee_,
uint48 minWithdrawalDelay_
) Policy(kernel_);
configureDependencies
Define module dependencies for this policy.
function configureDependencies() external override returns (Keycode[] memory dependencies);
Returns
| Name | Type | Description |
|---|---|---|
dependencies | Keycode[] | - Keycode array of module dependencies. |
requestPermissions
Function called by kernel to set module function permissions.
function requestPermissions() external view override returns (Permissions[] memory permissions);
Returns
| Name | Type | Description |
|---|---|---|
permissions | Permissions[] | requests - Array of keycodes and function selectors for requested permissions. |
onlyWhileActive
modifier onlyWhileActive() ;
onlyVault
modifier onlyVault() ;
deployVault
Deploys a personal single sided vault for the user
The vault is deployed with the user as the owner
function deployVault() external override onlyWhileActive returns (address vault);
Returns
| Name | Type | Description |
|---|---|---|
vault | address | The address of the deployed vault |
mintOhmToVault
Mints OHM to the caller
Can only be called by an approved vault
function mintOhmToVault(uint256 amount_) external override onlyWhileActive onlyVault;
Parameters
| Name | Type | Description |
|---|---|---|
amount_ | uint256 | The amount of OHM to mint |
burnOhmFromVault
Burns OHM from the caller
Can only be called by an approved vault. The caller must have an OHM approval for the MINTR.
function burnOhmFromVault(uint256 amount_) external override onlyWhileActive onlyVault;
Parameters
| Name | Type | Description |
|---|---|---|
amount_ | uint256 | The amount of OHM to burn |
increaseTotalLp
Increases the tracked value for totalLP
Can only be called by an approved vault
function increaseTotalLp(uint256 amount_) external override onlyWhileActive onlyVault;
Parameters
| Name | Type | Description |
|---|---|---|
amount_ | uint256 | The amount of LP tokens to add to the total |
decreaseTotalLp
Decreases the tracked value for totalLP
Can only be called by an approved vault
function decreaseTotalLp(uint256 amount_) external override onlyWhileActive onlyVault;
Parameters
| Name | Type | Description |
|---|---|---|
amount_ | uint256 | The amount of LP tokens to remove from the total |
canWithdraw
Returns whether enough time has passed since the last deposit for the user to be ale to withdraw
function canWithdraw(address user_) external view override returns (bool);
Parameters
| Name | Type | Description |
|---|---|---|
user_ | address | The user to check the vault of |
Returns
| Name | Type | Description |
|---|---|---|
<none> | bool | bool Whether enough time has passed since the last deposit for the user to be ale to withdraw |
getLpBalance
Returns the user's vault's LP balance
function getLpBalance(address user_) external view override returns (uint256);
Parameters
| Name | Type | Description |
|---|---|---|
user_ | address | The user to check the vault of |
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | uint256 The user's vault's LP balance |
getUserPairShare
Returns the user's vault's claim on the pair token
function getUserPairShare(address user_) external view override returns (uint256);
Parameters
| Name | Type | Description |
|---|---|---|
user_ | address | The user to check the vault of |
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | uint256 The user's vault's claim on the pair token |
getOutstandingRewards
Returns the user's vault's unclaimed rewards in Aura
function getOutstandingRewards(address user_) external view override returns (RewardsData[] memory);
Parameters
| Name | Type | Description |
|---|---|---|
user_ | address | The user to check the vault of |
Returns
| Name | Type | Description |
|---|---|---|
<none> | RewardsData[] | RewardsData[] The user's vault's unclaimed rewards in Aura |
getMaxDeposit
Calculates the max pair token deposit based on the limit and current amount of OHM minted
function getMaxDeposit() external view override returns (uint256);
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | uint256 The max pair token deposit |
getExpectedLpAmount
Calculates the amount of LP tokens that will be generated for a given amount of pair tokens
This is an external function but should only be used in a callstatic from an external source like the frontend.
function getExpectedLpAmount(uint256 amount_) external override returns (uint256 bptAmount);
Parameters
| Name | Type | Description |
|---|---|---|
amount_ | uint256 | The amount of pair tokens to calculate the LP tokens for |
Returns
| Name | Type | Description |
|---|---|---|
bptAmount | uint256 | uint256 The amount of LP tokens that will be generated |
getExpectedTokensOutProtocol
Calculates the amount of OHM and pair tokens that should be received by the vault for withdrawing a given amount of LP tokens
This is an external function but should only be used in a callstatic from an external source like the frontend.
function getExpectedTokensOutProtocol(uint256 lpAmount_)
external
override
returns (uint256[] memory expectedTokenAmounts);
Parameters
| Name | Type | Description |
|---|---|---|
lpAmount_ | uint256 | The amount of LP tokens to calculate the OHM and pair tokens for |
Returns
| Name | Type | Description |
|---|---|---|
expectedTokenAmounts | uint256[] | The amount of OHM and pair tokens that should be received |
getExpectedPairTokenOutUser
Calculates the amount of pair tokens that should be received by the user for withdrawing a given amount of LP tokens after the treasury takes any arbs
This is an external function but should only be used in a callstatic from an external source like the frontend.
function getExpectedPairTokenOutUser(uint256 lpAmount_) external override returns (uint256 expectedTknAmount);
Parameters
| Name | Type | Description |
|---|---|---|
lpAmount_ | uint256 | The amount of LP tokens to calculate the pair tokens for |
Returns
| Name | Type | Description |
|---|---|---|
expectedTknAmount | uint256 | The amount of pair tokens that should be received |
getRewardTokens
Gets all the reward tokens from the Aura pool
function getRewardTokens() external view override returns (address[] memory);
Returns
| Name | Type | Description |
|---|---|---|
<none> | address[] | address[] The addresses of the reward tokens |
getRewardRate
Gets the reward rate (tokens per second) of the passed reward token
function getRewardRate(address rewardToken_) external view override returns (uint256 rewardRate);
Returns
| Name | Type | Description |
|---|---|---|
rewardRate | uint256 | uint256 The reward rate (tokens per second) |
getPoolOhmShare
Returns the amount of OHM in the pool that is owned by this vault system.
function getPoolOhmShare() public view override returns (uint256);
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | uint256 The amount of OHM in the pool that is owned by this vault system. |
getOhmSupplyChangeData
Gets the net OHM emitted or removed by the system since inception
function getOhmSupplyChangeData()
external
view
override
returns (uint256 poolOhmShare, uint256 mintedOhm, uint256 netBurnedOhm);
Returns
| Name | Type | Description |
|---|---|---|
poolOhmShare | uint256 | uint256 Vault system's current claim on OHM from the Balancer pool |
mintedOhm | uint256 | |
netBurnedOhm | uint256 |
getOhmTknPrice
Gets the number of OHM per 1 pair token using oracle prices
function getOhmTknPrice() public view override returns (uint256);
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | uint256 OHM per 1 pair token (9 decimals) |
getTknOhmPrice
Gets the number of pair tokens per 1 OHM using oracle prices
function getTknOhmPrice() public view override returns (uint256);
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | uint256 Pair tokens per 1 OHM (18 decimals) |
getOhmTknPoolPrice
Gets the number of OHM per 1 pair token using pool prices
function getOhmTknPoolPrice() public view override returns (uint256);
Returns
| Name | Type | Description |
|---|---|---|
<none> | uint256 | uint256 OHM per 1 pair token (9 decimals) |
emergencyBurnOhm
Emergency burns OHM that has been sent to the manager in the event a user had to emergency withdraw
Can only be called by the admin
function emergencyBurnOhm(uint256 amount_) external override onlyRole("liquidityvault_admin");
Parameters
| Name | Type | Description |
|---|---|---|
amount_ | uint256 | The amount of OHM to burn |
setLimit
Updates the limit on minting OHM
Can only be called by the admin. Cannot be set lower than the current outstanding minted OHM.
function setLimit(uint256 newLimit_) external override onlyRole("liquidityvault_admin");
Parameters
| Name | Type | Description |
|---|---|---|
newLimit_ | uint256 | The new OHM limit (9 decimals) |
setFee
Updates the fee on reward tokens
Can only be called by the admin. Cannot be set beyond 10_000 (100%). Only is used by vaults deployed after the update.
function setFee(uint64 newFee_) external override onlyRole("liquidityvault_admin");
Parameters
| Name | Type | Description |
|---|---|---|
newFee_ | uint64 | The new fee (in basis points) |
setWithdrawalDelay
Updates the minimum holding period before a user can withdraw
Can only be called by the admin
function setWithdrawalDelay(uint48 newDelay_) external override onlyRole("liquidityvault_admin");
Parameters
| Name | Type | Description |
|---|---|---|
newDelay_ | uint48 | The new minimum holding period (in seconds) |
changeUpdateThresholds
function changeUpdateThresholds(
uint48 ohmEthUpdateThreshold_,
uint48 ethUsdUpdateThreshold_,
uint48 lusdUsdUpdateThreshold_
) external onlyRole("liquidityvault_admin");
activate
Activates the vault manager and all approved vaults
Can only be called by the admin
function activate() external override onlyRole("liquidityvault_admin");
deactivate
Deactivates the vault manager and all approved vaults
Can only be called by the admin
function deactivate() external override onlyRole("emergency_admin");
_validatePrice
function _validatePrice(AggregatorV3Interface priceFeed_, uint48 updateThreshold_) internal view returns (uint256);
Events
VaultDeployed
event VaultDeployed(address vault, address owner, uint64 fee);
Errors
BLManagerLusd_AlreadyActive
error BLManagerLusd_AlreadyActive();
BLManagerLusd_AlreadyInactive
error BLManagerLusd_AlreadyInactive();
BLManagerLusd_Inactive
error BLManagerLusd_Inactive();
BLManagerLusd_InvalidVault
error BLManagerLusd_InvalidVault();
BLManagerLusd_LimitViolation
error BLManagerLusd_LimitViolation();
BLManagerLusd_InvalidLpAmount
error BLManagerLusd_InvalidLpAmount();
BLManagerLusd_InvalidLimit
error BLManagerLusd_InvalidLimit();
BLManagerLusd_InvalidFee
error BLManagerLusd_InvalidFee();
BLManagerLusd_BadPriceFeed
error BLManagerLusd_BadPriceFeed();
BLManagerLusd_VaultAlreadyExists
error BLManagerLusd_VaultAlreadyExists();
BLManagerLusd_NoUserVault
error BLManagerLusd_NoUserVault();