AlphaProVault
The contract that manages liquidity, and processes deposits and withdrawals.
deposit
Deposit tokens in proportion to the vault's current holdings. These tokens will remain in the vault, and are not used for liquidity until the next rebalance.
Parameters:
amount0Desired
uint256
The maximum amount of token0 to deposit.
amount1Desired
uint256
The maximum amount of token1 to deposit.
amount0Min
uint256
Transaction will revert if the amount of token0 deposited is less than this.
amount1Min
uint256
Transaction will revert if the amount of token1 deposited is less than this.
to
address
The recipient of vault shares minted by the vault.
Returns:
shares
uint256
The number of vault shares minted by the vault.
amount0
uint256
The amount of token0 deposited into the vault.
amount1
uint256
The amount of token1 deposited into the vault.
withdraw
Withdraws tokens in proportion to the vault's current holdings and the fees earned by the vault.
Parameters:
shares
uint256
The amount of shares to be burned.
amount0Min
uint256
Transaction will revert if the amount of token0 received by the withdrawer is smaller than this.
amount1Min
uint256
Transaction will revert if the amount of token1 received by the withdrawer is smaller than this.
to
address
The recipient of the tokens withdrawn.
Returns:
amount0
uint256
The amount of token0 sent to the recipient.
amount1
uint256
The amount of token1 sent to the recipient.
rebalance
Updates the vault's positions. Anyone can call rebalance, unless the vault manager calls setRebalanceDelegate
to nominate a specific wallet to rebalance.
checkCanRebalance
Check whether the vault can rebalance. Revert with an error code if it cannot.
getTwap
Fetches the time-weighted average price in ticks from Uniswap pool.
Returns:
int24
the time-weighted average price in ticks.
getTotalAmounts
Calculates the vault's total holdings of token0 and token1 - ie how much of each token the vault would hold if it withdrew all its liquidity from Uniswap. Includes owed fees but excludes the proportion of fees that will be paid to the protocol and vault manager.
Returns:
total0
uint256
The total amount of total0 held by the vault.
total1
uint256
The total amount of total1 held by the vault.
getBalance0
The amount of unused token0 held by the vault.
Returns:
uint256
getBalance1
The amount of unused token1 held by the vault.
Returns:
uint256
collectProtocol
Collects all the uncollected protocol fees accrued by the vault. Can only be called by Charm Governance.
Parameters:
to
address
The protocol fees' recipient.
collectManager
Collects all the uncollected manager fees accrued by the vault. Can only be called by the vault manager.
Parameters:
to
address
The manager fees' recipient.
sweep
Removes tokens accidentally sent to this vault. Can only be called by the vault manager.
Parameters:
token
IERC20Upgradeable
amount
uint256
amount of tokens to sweep.
to
address
The recipient of the token swept.
setBaseThreshold
Setting the baseThreshold
. Can only be called by the vault manager.
Parameters:
_baseThreshold
int24
setLimitThreshold
Setting the limitThreshold
. Can only be called by the vault manager.
Parameters:
_limitThreshold
int24
setFullRangeWeight
Setting the fullRangeWeight
. Can only be called by the vault manager.
Parameters:
_fullRangeWeight
uint256
setPeriod
Setting the rebalancing period
. Can only be called by the vault manager.
Parameters:
_period
uint256
Rebalance will revert if the time interval (in seconds) between rebalances is less than _period.
setMinTickMove
Setting the minimum tick movement between rebalance. Can only be called by the vault manager.
Parameters:
_minTickMove
int24
Rebalance will revert if the price difference since the last rebalance is less than the _minTickMove.
setTwapDuration
Setting the Security Parameter to calculate the TWAP. Can only be called by the vault manager.
Parameters:
_twapDuration
uint32
The time period in seconds over which the TWAP is calculated.
setMaxTwapDeviation
Setting the Security Parameter that determines the maximum TWAP deviation. Can only be called by the vault manager.
Parameters:
_maxTwapDeviation
int24
Rebalance will revert if the spot price deviates from the TWAP by at least this amount.
setMaxTotalSupply
Setting the Information Parameter that determines a vault's maximum capacity. Can only be called by the vault manager.
Parameters:
_maxTotalSupply
uint256
The maximum shares the vault can mint. Deposit
will revert if the total amount of vault shares after a deposit is more than the_maxTotalSupply.
emergencyBurn
Removes the vault's liquidity in a given range. Can only be called by the vault manager.
Parameters:
tickLower
int24
The lower limit of the range to remove liquidity.
tickUpper
int24
The upper limit of the range to remove liquidity.
liquidity
uint128
The amount of liquidity to remove.
setManager
The first step to change a vault's manager. Can only called by the vault manager.
Parameters:
_manager
address
acceptManager
The second step to change a vault manager. Can only be called by the address assigned to _manager.
State Changes:
manager
address
Setting the value of manager
as the address of the new vault manager.
setManagerFee
Setting a fee for the vault manager, as a % of fees received from Uniswap. Can only be called by the vault manager.
Parameters:
_pendingManagerFee
uint256
The amount of manager fees as a % of fees earned by the vault, with 1 unit of fees = 1e-4 % of fees earned.
The maximum manager fee is 20000 units (20%). The fee will take effect from the next rebalance.
setRebalanceDelegate
Switch on/off private rebalancing. Can only be called by the vault manager.
Parameters:
_rebalanceDelegate
address
Setting an address other than the Zero Address will switch on private rebalancing, which means only rebalanceDelegate
and the vault manager's address can call rebalance.
Getter functions for public variables
Getter functions are automatically generated for the following public variables:
Pool Variables
pool
IUniswapV3Pool
The pool for which the vault is managing the liquidity.
token0
IERC20Upgradeable
The first ERC-20 token within the pool.
token1
IERC20Upgradeable
The second ERC-20 token within the pool.
tickSpacing
int24
The distance between initializable ticks within the pool
Vault Variables
name
string
The name of the vault shares representing the vault
symbol
string
The symbol of the vault shares representing the vault
maxTotalSupply
uint256
The maximum vault shares that can be mined by the vault.
MINIMUM_LIQUIDITY
uint256
The minimum vault shares minted by the vault.
Protocol Variables
factory
AlphaProVaultFactory
The Alpha Vaults factory contract used to create liquidity vaults
protocolFee
uint256
The protocol fee applied to this vault.
accruedProtocolFees0
uint256
Total amount of uncollected protocol fees within the vault.
accruedProtocolFees1
uint256
Total amount of uncollected protocol fees within the vault.
Strategy Variables
fullRangeWeight
uint256
The maximum % of full range liquidity held by the vault, with 1 unit of fullRangeWeight
= 1e-4 % full-range liquidity.
baseThreshold
int24
limitThreshold
int24
period
uint256
Rebalance will revert if the time interval (in seconds) between rebalances is less than period.
lastTimestamp
uint256
The time stamp of the last rebalance.
lastTick
int24
The market price of the tokens within the pool at the latest rebalance.
fullLower
int24
The lower limit of a full range position.
fullUpper
int24
The upper limit of a full range position.
baseLower
int24
baseUpper
int24
limitLower
int24
limitUpper
int24
Security Variables
maxTwapDeviation
int24
Rebalance will revert if the spot price deviates from the TWAP by this amount.
twapDuration
uint32
The time period in seconds over which the TWAP is calculated.
Gas Optimization Variables
minTickMove
int24
Rebalance will revert if the price movements since the last rebalance is less than the _minTickMove.
Vault Manager Variables
manager
address
The address of the vault manager.
pendingManager
address
rebalanceDelegate
address
IfrebalanceDelegate
is the Zero Address, anyone can call rebalance.
Otherwise, only rebalanceDelegate
and the vault manager's address can call rebalance.
managerFee
uint256
The vault manager fee applied to this vault.
pendingManagerFee
uint256
accruedManagerFees0
uint256
Total amount of uncollected manager fees within the vault.
accruedManagerFees1
uint256
Total amount of uncollected manager fees within the vault.
Last updated