Overview​
Used for minting and redeeming prePO Collateral tokens. A
Collateral token is a share of a yield-bearing vault, its Base Token value
varying based on the current value of the vault's assets.
Functions​
deposit​
function deposit(
uint256 amount
) external returns (uint256)
Mints Collateral tokens for amount
Base Token.
Assumes approval has been given by the user for the
Collateral contract to spend their funds.
Parameters:​
Name | Type | Description |
---|
amount | uint256 | The amount of Base Token to deposit |
initiateWithdrawal​
function initiateWithdrawal(
uint256 amount
) external
Creates a request to allow a withdrawal for amount
Collateral
in a later block.
The user's balance must be >= the amount requested to
initiate a withdrawal. If this function is called when there is already
an existing withdrawal request, the existing request is overwritten
with the new amount
and current block number.
Parameters:​
Name | Type | Description |
---|
amount | uint256 | The amount of Collateral to withdraw |
uninitiateWithdrawal​
function uninitiateWithdrawal(
) external
Resets the existing withdrawal request on record for the caller.
This call will not revert if a user doesn't have an existing
request and will simply reset the user's already empty request record.
withdraw​
function withdraw(
uint256 amount
) external returns (uint256)
Burns amount
Collateral tokens in exchange for Base Token.
If delayedWithdrawalExpiry
is non-zero, a withdrawal request
must be initiated in a prior block no more than
delayedWithdrawalExpiry
blocks before. The amount specified in the
request must match the amount being withdrawn.
Parameters:​
Name | Type | Description |
---|
amount | uint256 | The amount of Collateral to burn |
setDepositsAllowed​
function setDepositsAllowed(
bool allowed
) external
Sets whether deposits to the Collateral vault are allowed.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
allowed | bool | Whether deposits are allowed |
setWithdrawalsAllowed​
function setWithdrawalsAllowed(
bool allowed
) external
Sets whether withdrawals from the Collateral vault are allowed.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
allowed | bool | Whether withdrawals are allowed |
setStrategyController​
function setStrategyController(
contract IStrategyController newController
) external
Sets the contract that controls which strategy funds are sent
to.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
newController | contract IStrategyController | Address of a contract implementing IStrategyController |
setDelayedWithdrawalExpiry​
function setDelayedWithdrawalExpiry(
uint256 expiry
) external
Sets the number of blocks to pass before expiring a withdrawal
request.
If this is set to zero, withdrawal requests are ignored.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
expiry | uint256 | Blocks before expiring a withdrawal request |
setMintingFee​
function setMintingFee(
uint256 newMintingFee
) external
Sets the fee for minting Collateral, must be a 4 decimal place
percentage value e.g. 4.9999% = 49999.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
newMintingFee | uint256 | The new fee for minting Collateral |
setRedemptionFee​
function setRedemptionFee(
uint256 newRedemptionFee
) external
Sets the fee for redeeming Collateral, must be a 4 decimal place
percentage value e.g. 4.9999% = 49999.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
newRedemptionFee | uint256 | The new fee for redeeming Collateral |
setDepositHook​
function setDepositHook(
contract IHook newDepositHook
) external
Sets the contract implementing IHook
that will be called
during the deposit()
function.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
newDepositHook | contract IHook | Address of a contract implementing IHook |
setWithdrawHook​
function setWithdrawHook(
contract IHook newWithdrawHook
) external
Sets the contract implementing IHook
that will be called
during the withdraw()
function.
Only callable by owner()
.
Parameters:​
Name | Type | Description |
---|
newWithdrawHook | contract IHook | Address of a contract implementing IHook |
getDepositsAllowed​
function getDepositsAllowed(
) external returns (bool)
getWithdrawalsAllowed​
function getWithdrawalsAllowed(
) external returns (bool)
getTreasury​
function getTreasury(
) external returns (address)
getMintingFee​
function getMintingFee(
) external returns (uint256)
Fee has four decimals places of percentage value precision
e.g. 4.9999% = 49999.
getRedemptionFee​
function getRedemptionFee(
) external returns (uint256)
Fee has four decimals places of percentage value precision
e.g. 4.9999% = 49999.
getBaseToken​
function getBaseToken(
) external returns (contract IERC20Upgradeable)
This asset will be required for minting Collateral, and
returned when redeeming Collateral.
getStrategyController​
function getStrategyController(
) external returns (contract IStrategyController)
The Strategy Controller intermediates any interactions between
this vault and a yield-earning strategy.
getDelayedWithdrawalExpiry​
function getDelayedWithdrawalExpiry(
) external returns (uint256)
getWithdrawalRequest​
function getWithdrawalRequest(
) external returns (struct ICollateral.WithdrawalRequest)
getDepositHook​
function getDepositHook(
) external returns (contract IHook)
getWithdrawHook​
function getWithdrawHook(
) external returns (contract IHook)
getAmountForShares​
function getAmountForShares(
uint256 shares
) external returns (uint256)
Gets the amount of Base Token received for redeeming shares
Collateral.
Parameters:​
Name | Type | Description |
---|
shares | uint256 | Amount of shares that would be redeemed |
getSharesForAmount​
function getSharesForAmount(
uint256 amount
) external returns (uint256)
Parameters:​
Name | Type | Description |
---|
amount | uint256 | Amount of Base Token that would be deposited |
totalAssets​
function totalAssets(
) external returns (uint256)
Returns the sum of the contract's latent Base Token balance and
the estimated Base Token value of the strategy's assets.
This call relies on the totalValue()
returned by the
Strategy Controller. The Collateral vault trusts the Strategy Controller
to relay an accurate value of the Strategy's assets.
getFeeDenominator​
function getFeeDenominator(
) external returns (uint256)
Returns the denominator for calculating fees from 4 decimal
place percentage values e.g. 4.9999% = 49999.
getFeeLimit​
function getFeeLimit(
) external returns (uint256)
Returns the fee limit of 5% represented as 4 decimal place
percentage value e.g. 4.9999% = 49999.
DepositsAllowedChanged​
event DepositsAllowedChanged(
bool allowed
)
Emitted via setDepositsAllowed()
.
Parameters:​
Name | Type | Description |
---|
allowed | bool | Whether deposits are allowed |
WithdrawalsAllowedChanged​
event WithdrawalsAllowedChanged(
bool allowed
)
Emitted via setWithdrawalsAllowed()
.
Parameters:​
Name | Type | Description |
---|
allowed | bool | Whether withdrawals are allowed |
StrategyControllerChanged​
event StrategyControllerChanged(
address controller
)
Emitted via setStrategyController()
.
Parameters:​
Name | Type | Description |
---|
controller | address | The address of the new Strategy Controller |
MintingFeeChanged​
event MintingFeeChanged(
uint256 fee
)
Emitted via setMintingFee()
.
Parameters:​
Name | Type | Description |
---|
fee | uint256 | The new fee |
RedemptionFeeChanged​
event RedemptionFeeChanged(
uint256 fee
)
Emitted via setRedemptionFee()
.
Parameters:​
Name | Type | Description |
---|
fee | uint256 | The new fee |
DelayedWithdrawalChanged​
event DelayedWithdrawalChanged(
bool enabled
)
Emitted via setDelayedWithdrawal()
.
Parameters:​
Name | Type | Description |
---|
enabled | bool | Whether or not delayed withdrawals are enabled |
DelayedWithdrawalExpiryChanged​
event DelayedWithdrawalExpiryChanged(
uint256 expiry
)
Emitted via setDelayedWithdrawalExpiry()
.
Parameters:​
Name | Type | Description |
---|
expiry | uint256 | The new expiry |
DepositHookChanged​
event DepositHookChanged(
address hook
)
Emitted via setDepositHook()
.
Parameters:​
Name | Type | Description |
---|
hook | address | The new deposit hook |
WithdrawHookChanged​
event WithdrawHookChanged(
address hook
)
Emitted via setWithdrawalHook()
.
Parameters:​
Name | Type | Description |
---|
hook | address | The new withdraw hook |