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:
Varible | Type | Description |
---|---|---|
| uint256 | The maximum amount of token0 to deposit. |
| uint256 | The maximum amount of token1 to deposit. |
| uint256 | Transaction will revert if the amount of token0 deposited is less than this. |
| uint256 | Transaction will revert if the amount of token1 deposited is less than this. |
| address | The recipient of vault shares minted by the vault. |
Returns:
Varible | Type | Description |
---|---|---|
| uint256 | The number of vault shares minted by the vault. |
| uint256 | The amount of token0 deposited into the vault. |
| 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:
Varible | Type | Description |
---|---|---|
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. |
| address | The recipient of the tokens withdrawn. |
Returns:
Varible | Type | Description |
---|---|---|
| uint256 | The amount of token0 sent to the recipient. |
| 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:
Varible | Type | Description |
---|---|---|
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:
Varible | Type | Description |
---|---|---|
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:
Varible | Type | Description |
---|---|---|
uint256 | The balance of token0 in the vault not used in any position. All of this balance minus the protocol and manager fees will be deposited into Uniswap when |
getBalance1
The amount of unused token1 held by the vault.
Returns:
Varible | Type | Description |
---|---|---|
uint256 | The balance of token1 in the vault not used in any position. All of this balance minus the protocol and manager fees will be deposited into Uniswap when rebalance is called. |
collectProtocol
Collects all the uncollected protocol fees accrued by the vault. Can only be called by Charm Governance.
Parameters:
Varible | Type | Description |
---|---|---|
| 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:
Varible | Type | Description |
---|---|---|
| address | The manager fees' recipient. |
sweep
Removes tokens accidentally sent to this vault. Can only be called by the vault manager.
Parameters:
Varible | Type | Description |
---|---|---|
| IERC20Upgradeable | |
| uint256 | amount of tokens to sweep. |
| address | The recipient of the token swept. |
setBaseThreshold
Setting the baseThreshold
. Can only be called by the vault manager.
Parameters:
Varible | Type | Description |
---|---|---|
_baseThreshold | int24 | The width of the base-order in ticks. |
setLimitThreshold
Setting the limitThreshold
. Can only be called by the vault manager.
Parameters:
Varible | Type | Description |
---|---|---|
_limitThreshold | int24 | The width of the limit-order in ticks. |
setFullRangeWeight
Setting the fullRangeWeight
. Can only be called by the vault manager.
Parameters:
Varible | Type | Description |
---|---|---|
_fullRangeWeight | uint256 | The maximum % of total liquidity deposited into a Full-Range Position, with 1 unit of |
setPeriod
Setting the rebalancing period
. Can only be called by the vault manager.
Parameters:
Varible | Type | Description |
---|---|---|
_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:
Varible | Type | Description |
---|---|---|
_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:
Variable | Type | Description |
---|---|---|
_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:
Variable | Type | Description |
---|---|---|
_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:
Variable | Type | Description |
---|---|---|
_maxTotalSupply | uint256 | The maximum shares the vault can mint. |
emergencyBurn
Removes the vault's liquidity in a given range. Can only be called by the vault manager.
Parameters:
Variable | Type | Description |
---|---|---|
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:
Variable | Type | Description |
---|---|---|
| address | The address of the new vault manager. The changes will not take effect until the new address calls |
acceptManager
The second step to change a vault manager. Can only be called by the address assigned to _manager.
State Changes:
Variable | Type | Description |
---|---|---|
| address | Setting the value of |
setManagerFee
Setting a fee for the vault manager, as a % of fees received from Uniswap. Can only be called by the vault manager.
Parameters:
Variable | Type | Description |
---|---|---|
| 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:
Variable | Type | Description |
---|---|---|
| address | Setting an address other than the Zero Address will switch on private rebalancing, which means only |
Getter functions for public variables
Getter functions are automatically generated for the following public variables:
Pool Variables
Variable | Type | Description |
---|---|---|
| IUniswapV3Pool | The pool for which the vault is managing the liquidity. |
| IERC20Upgradeable | The first ERC-20 token within the |
| IERC20Upgradeable | The second ERC-20 token within the |
| int24 | The distance between initializable ticks within the |
Vault Variables
Variable | Type | Description |
---|---|---|
| string | The name of the vault shares representing the vault |
| string | The symbol of the vault shares representing the vault |
| 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
Variable | Type | Description |
---|---|---|
| AlphaProVaultFactory | The Alpha Vaults factory contract used to create liquidity vaults |
| uint256 | The protocol fee applied to this vault. |
| uint256 | Total amount of uncollected protocol fees within the vault. |
| uint256 | Total amount of uncollected protocol fees within the vault. |
Strategy Variables
Variable | Type | Description |
---|---|---|
| uint256 | The maximum % of full range liquidity held by the vault, with 1 unit of |
| int24 | The width of the base-order in ticks. |
| int24 | The width of the limit-order in ticks. |
| uint256 | Rebalance will revert if the time interval (in seconds) between rebalances is less than period. |
| uint256 | The time stamp of the last rebalance. |
| int24 | The market price of the tokens within the pool at the latest rebalance. |
| int24 | The lower limit of a full range position. |
| int24 | The upper limit of a full range position. |
| int24 | The lower limit of the base-order selected by the vault at rebalance. |
| int24 | The upper limit of the base-order selected by the vault at rebalance. |
| int24 | The lower limit of the limit-order selected by the vault at rebalance. |
| int24 | The upper limit of the limit-order selected by the vault at rebalance. |
Security Variables
| int24 | Rebalance will revert if the spot price deviates from the TWAP by this amount. |
| uint32 | The time period in seconds over which the TWAP is calculated. |
Gas Optimization Variables
| int24 | Rebalance will revert if the price movements since the last rebalance is less than the _minTickMove. |
Vault Manager Variables
Variable | Type | Description |
---|---|---|
| address | The address of the vault manager. |
| address | The provisional address of the vault manager. Not finalised until |
| address | If |
| uint256 | The vault manager fee applied to this vault. |
| uint256 | The manager fee to be applied at the next rebalance, after the fee was changed using |
| uint256 | Total amount of uncollected manager fees within the vault. |
| uint256 | Total amount of uncollected manager fees within the vault. |
Last updated