What it offers
- addLiquidity: Add liquidity to an Arrakis vault via router (tuple params)
- removeLiquidity: Remove liquidity from vault via router (tuple params)
Notes
- Manages UniV3 concentrated liquidity positions automatically
- Both addLiquidity and removeLiquidity take struct/tuple params via the router
- Approve both token0 and token1 to the router before adding liquidity
- Vault shares represent proportional ownership of the managed position
- gauge param can be zero address if not staking in a gauge
- The vault itself does not report its underlying amounts; ArrakisV2Helper’s
totalUnderlying(vault)does
Its names in a program
On Ethereum,Arrakis is a namespace: its contracts need no import.
Deployments
ABI
ArrakisRouterABI
import ArrakisRouterABI from "./protocols/arrakis/ArrakisRouterABI.json"; Speaks for: router.
addLiquidity((uint256 amount0Max, uint256 amount1Max, uint256 amount0Min, uint256 amount1Min, uint256 amountSharesMin, address vault, address receiver, address gauge) params) payable returns (uint256 amount0, uint256 amount1, uint256 sharesReceived)removeLiquidity((uint256 burnAmount, uint256 amount0Min, uint256 amount1Min, address vault, address receiver, address gauge, bool receiveETH) params) returns (uint256 amount0, uint256 amount1)
ArrakisVaultABI
import ArrakisVaultABI from "./protocols/arrakis/ArrakisVaultABI.json";
totalSupply() view returns (uint256)balanceOf(address account) view returns (uint256)token0() view returns (address)token1() view returns (address)
Next steps
- Protocols: the other protocols, by what they do.
- Protocols and tokens: calling a contract by its namespace, or through its ABI.
- Glossary: the words these pages use, in plain terms.
