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

Name
Type
Description

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

Name
Type
Description

lst

address

address of lst

priorityPool

Returns the address of the priority pool

function priorityPool() external view returns (address)

Return Values

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

minWithdrawalAmount

uint256

min withdrawal amount

minTimeBetweenWithdrawals

Returns the min amount of time between execution of withdrawals

function minTimeBetweenWithdrawals() external view returns (uint64)

Return Values

Name
Type
Description

minTimeBetweenwithdrawals

uint64

min time between withdrawals

timeOfLastWithdrawal

Returns the time of last execution of withdrawals

function timeOfLastWithdrawal() external view returns (uint64)

Return Values

Name
Type
Description

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

Name
Type
Description

totalQueuedWithdrawals

uint256

total amount queued for withdrawal

getWithdrawals

Returns a list of withdrawals

function getWithdrawals(uint256[] _withdrawalIds) external view returns (struct WithdrawalPool.Withdrawal[])

Parameters

Name
Type
Description

_withdrawalIds

uint256[]

list of withdrawal ids

Return Values

Name
Type
Description

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

Name
Type
Description

_withdrawalIds

uint256[]

list of withrawal ids

Return Values

Name
Type
Description

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

Name
Type
Description

_account

address

address of account

Return Values

Name
Type
Description

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

Name
Type
Description

_account

address

address of account

Return Values

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

_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

Name
Type
Description

_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

Name
Type
Description

_amount

uint256

amount of tokens to deposit

performUpkeep

Executes withdrawals if there is sufficient available withdrawal space

function performUpkeep(bytes _performData) external

Parameters

Name
Type
Description

_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

Name
Type
Description

_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

Name
Type
Description

_minTimeBetweenWithdrawals

uint64

minimum time

Last updated