AsyncSynthVault
EpochData
This structure contains all the informations needed to let user claim their request after we processed those. To avoid rounding errors we store the totalSupply and totalAssets at the time of the deposit/redeem for the deposit and the redeem. We also store the amount of assets and shares given by the user.
SettleValues
Hold the required values to settle the vault deposit and redeem requests.
AsyncSynthVault
Inherits: IERC7540, SyncSynthVault
State Variables
epochId
The epochId is used to keep track of the deposit and redeem requests. It is incremented every time the owner calls the settle
function.
pendingSilo
The lastSavedBalance is used to keep track of the assets in the vault at the time of the last settle
call.
claimableSilo
The claimableSilo is used to hold the assets/shares of the users that requested a deposit/redeem.
epochs
The epochs mapping is used to store the informations needed to let user claim their request after we processed those. To avoid rounding errors we store the totalSupply and totalAssets at the time of the deposit/redeem for the deposit and the redeem. We also store the amount of assets and shares given by the user.
lastDepositRequestId
The lastDepositRequestId is used to keep track of the last deposit request made by the user. It is used to let the user claim their request after we processed those.
lastRedeemRequestId
The lastRedeemRequestId is used to keep track of the last redeem request made by the user. It is used to let the user claim their request after we processed those.
Functions
constructor
initialize
claimAndRequestDeposit
Since we only allow one claimable request at a time, users must claim their request before making a new one. This function let users claim and request a deposit in one transaction.
This function is used to claim the pending deposit and request a new one in one transaction.
Parameters
claimAndRequestRedeem
Since we only allow one claimable request at a time, users must claim their request before making a new one. This function let users claim and request a redeem in one transaction.
This function is used to claim the pending redeem and request a new one in one transaction.
Parameters
decreaseDepositRequest
This function is used to decrease the amount of assets requested to deposit by the user. It can only be called by the user who made the request.
Parameters
decreaseRedeemRequest
This function is used to decrease the amount of shares requested to redeem by the user. It can only be called by the user who made the request.
Parameters
close
The close
function is used to close the vault. It can only be called by the owner of the contract (onlyOwner
modifier).
open
The open
function is used to end the lock period of the vault. It can only be called by the owner of the contract (onlyOwner
modifier) and only when the vault is locked. If there are profits, the performance fees are taken and sent to the owner of the contract.
The open
function is used to open the vault.
Parameters
claimAndRequestDepositWithPermit
claimAndRequestDepositWithPermit is used to claim the pending deposit and request a new one in one transaction using permit signatures.
Parameters
settle
The settle
function is used to settle the vault. It can only be called by the owner of the contract (onlyOwner
modifier). If there are profits, the performance fees are taken and sent to the owner of the contract. Since amphor strategies can be time sensitive, we must be able to switch epoch without needing to put all the funds back. Using _settle we can virtually put back the funds, check how much we owe to users that want to redeem and maybe take the extra funds from the deposit requests.
The settle
function is used to settle the vault.
Parameters
pendingRedeemRequest
pendingRedeemRequest is used to know how many shares are currently waiting to be redeemed for the user.
Parameters
claimableRedeemRequest
How many shares are virtually waiting for the user to be redeemed via the claimRedeem
function.
Parameters
pendingDepositRequest
How many assets are currently waiting to be deposited for the user.
Parameters
claimableDepositRequest
How many assets are virtually waiting for the user to be deposit via the claimDeposit
function.
Parameters
totalPendingDeposits
How many assets are currently waiting to be deposited for all users.
Returns
totalPendingRedeems
How many shares are waiting to be redeemed for all users.
Returns
totalClaimableShares
How many shares are virtually waiting for the user to be redeemed via the claimRedeem
function.
Returns
totalClaimableAssets
How many assets are virtually waiting for the user to be deposit via the claimDeposit
function.
Returns
requestDeposit
when the vault is closed, users can only request to deposit. By doing this funds will be sent and wait in the pendingSilo. When the owner will call the open
or settle
function, the funds will be deposited and the minted shares will be sent to the claimableSilo. Waiting for the users to claim them.
Parameters
requestRedeem
when the vault is closed, users can only request to redeem. By doing this shares will be sent and wait in the pendingSilo. When the owner will call the open
or settle
function, the shares will be redeemed and the assets will be sent to the claimableSilo. Waiting for the users to claim them.
Parameters
claimDeposit
This function let users claim the shares we owe them after we processed their deposit request, in the _settle function.
Parameters
claimRedeem
This function let users claim the assets we owe them after we processed their redeem request, in the _settle function.
Parameters
requestDepositWithPermit
This funciton let user request a deposit using permit signatures.
Parameters
maxDepositRequest
users can request deposit only when the vault is closed and not paused.
Returns
maxRedeemRequest
users can request redeem only when the vault is closed and not paused.
Parameters
Returns
previewClaimDeposit
This function let users preview how many shares they will get if they claim their deposit request.
This function let users preview how many shares they will get if they claim their deposit request.
Parameters
Returns
previewClaimRedeem
This function let users preview how many assets they will get if they claim their redeem request.
This function let users preview how many assets they will get if they claim their redeem request.
Parameters
Returns
convertToShares
This function convertToShares is used to convert the assets into shares.
Parameters
Returns
convertToAssets
This function convertToAssets is used to convert the shares into assets.
Parameters
Returns
claimableDepositBalanceInAsset
Utils function to convert the shares claimable into assets. It can be used in the front end to save an rpc call.
Using this the owner can know if he will have to send money to the claimableSilo (for users who want to leave the vault) or if he will receive money from it.
This function claimableDepositBalanceInAsset is used to know if the owner will have to send money to the claimableSilo (for users who want to leave the vault) or if he will receive money from it.
Parameters
Returns
previewSettle
Using this the owner can know if he will have to send money to the claimableSilo (for users who want to leave the vault) or if he will receive money from it.
This function claimableRedeemBalanceInShares is used to know if the owner will have to send money to the claimableSilo (for users who want to leave the vault) or if he will receive money from it.
Parameters
Returns
supportsInterface
see EIP
Parameters
Returns
_createDepositRequest
This function is used to update the balance of the user.
This function is used to update the balance of the user.
Parameters
_createRedeemRequest
This function is used to update the balance of the user.
_createRedeemRequest is used to update the balance of the user in order to create the redeem request.
Parameters
_claimDeposit
_claimDeposit is used to claim the pending deposit and request a new one in one transaction.
Parameters
Returns
_claimRedeem
_claimRedeem is used to claim the pending redeem and request a new one in one transaction.
Parameters
Returns
_settle
_settle is used to settle the vault.
Parameters
Returns
isCurrentEpoch
isCurrentEpoch is used to check if the request is the current epoch.
Parameters
_convertToShares
_convertToShares is used to convert the assets into shares for a specific epoch/request.
Parameters
_convertToAssets
_convertToAssets is used to convert the shares into assets for a specific epoch/request.
Parameters
_checkMaxDrawdown
_checkMaxDrawdown is used to check if the max drawdown is reached.
Parameters
_computeFees
Events
DecreaseDepositRequest
This event is emitted when a user request a deposit.
Parameters
DecreaseRedeemRequest
This event is emitted when a user request a redeem.
Parameters
ClaimDeposit
This event is emitted when a user request a redeem.
Parameters
ClaimRedeem
This event is emitted when a user request a redeem.
Parameters
Errors
ExceededMaxRedeemRequest
This error is emitted when the user request more shares than the maximum allowed.
Parameters
ExceededMaxDepositRequest
This error is emitted when the user request more assets than the maximum allowed.
Parameters
MustClaimFirst
This error is emitted when the user try to make a new request without claiming the previous one.
Parameters
ReceiverFailed
This error is emitted when the user try to make a new request without claiming the previous one.
NotOwner
This error is emitted when the user try to make a new request without claiming the previous one.
NullRequest
This error is emitted when the user try to make a new request without claiming the previous one.
ERC7540CantRequestDepositOnBehalfOf
This error is emitted when the user try to make a new request without claiming the previous one.
Last updated