Withdrawal Pool
The WithdrawalPool
allows users to queue LST withdrawals if there is insufficient liquidity in the PriorityPool
to satisfy the withdrawal amount. LST withdrawals will be added to a FIFO queue and will be fulfilled as the PriorityPool
receives new deposits and/or as funds become available for withdrawal within the StakingPool
.
View Functions
token
Returns the address of the token this pool handles
function token() external view returns (address)
Return Values
token
address
address of token
lst
Returns the address of the liquid staking token this pool handles
function lst() external view returns (address)
Return Values
lst
address
address of lst
priorityPool
Returns the address of the priority pool
function priorityPool() external view returns (address)
Return Values
priorityPool
address
address of Priority Pool
indexOfNextWithdrawal
Returns the index of the withdrawal that's at the front of the queue
function indexOfNextWithdrawal() external view returns (uint256)
Return Values
indexOfNextwithdrawal
uint256
index of withdrawal at front of queue
withdrawalBatchIdCutoff
Returns the index where all batches before have had all withdrawal requests fully withdrawn
function withdrawalBatchIdCutoff() external view returns (uint128)
Return Values
withdrawalBatchIdCutoff
uint128
batch id cutoff
withdrawalIdCutoff
Returns the index where all requests before have been fully withdrawn
function withdrawalIdCutoff() external view returns (uint128)
Return Values
withdrawalIdCutoff
uint128
withdrawal id cutoff
minWithdrawalAmount
Returns the min amount of LSTs that can be queued for withdrawal
function minWithdrawalAmount() external view returns (uint256)
Return Values
minWithdrawalAmount
uint256
min withdrawal amount
minTimeBetweenWithdrawals
Returns the min amount of time between execution of withdrawals
function minTimeBetweenWithdrawals() external view returns (uint64)
Return Values
minTimeBetweenwithdrawals
uint64
min time between withdrawals
timeOfLastWithdrawal
Returns the time of last execution of withdrawals
function timeOfLastWithdrawal() external view returns (uint64)
Return Values
timeOfLastWithdrawal
uint64
time of last withdrawal
getTotalQueuedWithdrawals
Returns the total amount of liquid staking tokens queued for withdrawal
function getTotalQueuedWithdrawals() external view returns (uint256)
Return Values
totalQueuedWithdrawals
uint256
total amount queued for withdrawal
getAccountTotalQueuedWithdrawals
Returns the total amount of liquid staking tokens queued for withdrawal by an account
function getAccountTotalQueuedWithdrawals(address _account) external view returns (uint256)
Parameters
_account
address
address of account
Return Values
accountTotalQueuedWithdrawals
uint256
total amount queued across all withdrawals
getWithdrawals
Returns a list of withdrawals
function getWithdrawals(uint256[] _withdrawalIds) external view returns (struct WithdrawalPool.Withdrawal[])
Parameters
_withdrawalIds
uint256[]
list of withdrawal ids
Return Values
withdrawals
struct WithdrawalPool.Withdrawal[]
list of withdrawals corresponding to withdrawal ids
getBatchIds
Returns batch ids for a list of withdrawals
function getBatchIds(uint256[] _withdrawalIds) public view returns (uint256[])
Parameters
_withdrawalIds
uint256[]
list of withrawal ids
Return Values
batchIds
uint256[]
list of batch ids corresponding to withdrawal ids
getWithdrawalIdsByOwner
Returns a list of withdrawal ids owned by an account
function getWithdrawalIdsByOwner(address _account) public view returns (uint256[])
Parameters
_account
address
address of account
Return Values
withdrawalIds
uint256[]
list of withdrawal ids
getFinalizedWithdrawalIdsByOwner
Returns a list of finalized and partially finalized withdrawal ids owned by an account
These withdrawals have funds available for the owner to withdraw
function getFinalizedWithdrawalIdsByOwner(address _account) external view returns (uint256[], uint256)
Parameters
_account
address
address of account
Return Values
withdrawalIds
uint256[]
list of withdrawal ids
withdrawable
uint256
total withdrawable across all account's withdrawals
checkUpkeep
Returns whether withdrawals should be executed based on available withdrawal space
function checkUpkeep(bytes) external view returns (bool, bytes)
Return Values
upkeepNeeded
bool
true if withdrawal should be executed, false otherwise
bytes
Write Funcions
withdraw
Executes a group of fully and/or partially finalized withdrawals owned by the sender
function withdraw(uint256[] _withdrawalIds, uint256[] _batchIds) external
Parameters
_withdrawalIds
uint256[]
list of withdrawal ids to execute
_batchIds
uint256[]
list of batch ids corresponding to withdrawal ids
forceWithdraw
Executes a group of fully finalized withdrawals (owner-only)
function forceWithdraw(uint256[] _withdrawalIds, uint256[] _batchIds) external
Parameters
_withdrawalIds
uint256[]
list of withdrawal ids to execute
_batchIds
uint256[]
list of batch ids corresponding to withdrawal ids
queueWithdrawal
Queues a withdrawal of liquid staking tokens for an account
function queueWithdrawal(address _account, uint256 _amount) external
Parameters
_account
address
address of account
_amount
uint256
amount of LST
deposit
Deposits asset tokens in exchange for liquid staking tokens, finalizing withdrawals starting from the front of the queue
function deposit(uint256 _amount) external
Parameters
_amount
uint256
amount of tokens to deposit
performUpkeep
Executes withdrawals if there is sufficient available withdrawal space
function performUpkeep(bytes _performData) external
Parameters
_performData
bytes
encoded list of withdrawal data passed to staking pool strategies
updateWithdrawalBatchIdCutoff
Updates the withdrawalBatchIdCutoff
This value is used to more efficiently return data in getBatchIds by skipping old withdrawal batches
function updateWithdrawalBatchIdCutoff() external
setMinWithdrawalAmount
Sets the minimum amount of liquid staking tokens that can be queued for withdrawal
function setMinWithdrawalAmount(uint256 _minWithdrawalAmount) external
Parameters
_minWithdrawalAmount
uint256
minimum token amount
setMinTimeBetweenWithdrawals
Sets the minimum amount of of time between calls to performUpkeep to finalize withdrawals
function setMinTimeBetweenWithdrawals(uint64 _minTimeBetweenWithdrawals) external
Parameters
_minTimeBetweenWithdrawals
uint64
minimum time
Last updated