ArrakisPrivateVaultRouter
Inherits: IArrakisPrivateVaultRouter, ReentrancyGuard, Ownable, Pausable
State Variables
nativeToken
address of the native token.
address public immutable nativeToken;
permit2
permit2 contract address.
IPermit2 public immutable permit2;
factory
arrakis meta vault factory contract address.
IArrakisMetaVaultFactory public immutable factory;
weth
wrapped eth contract address.
IWETH9 public immutable weth;
swapper
swap executor contract address.
IPrivateRouterSwapExecutor public swapper;
Functions
onlyPrivateVault
modifier onlyPrivateVault(
address vault_
);
onlyDepositor
modifier onlyDepositor(
address vault_
);
constructor
constructor(
address nativeToken_,
address permit2_,
address owner_,
address factory_,
address weth_
);
pause
function used to pause the router.
only callable by owner
function pause() external whenNotPaused onlyOwner;
unpause
function used to unpause the router.
only callable by owner
function unpause() external whenPaused onlyOwner;
updateSwapExecutor
function updateSwapExecutor(
address swapper_
) external whenNotPaused onlyOwner;
addLiquidity
addLiquidity adds liquidity to meta vault of iPnterest (mints L tokens)
function addLiquidity(
AddLiquidityData memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.vault)
onlyDepositor(params_.vault);
Parameters
Name | Type | Description |
---|---|---|
params_ | AddLiquidityData | AddLiquidityData struct containing data for adding liquidity |
swapAndAddLiquidity
swapAndAddLiquidity transfer tokens to and calls RouterSwapExecutor
function swapAndAddLiquidity(
SwapAndAddData memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.addData.vault)
onlyDepositor(params_.addData.vault)
returns (uint256 amount0Diff, uint256 amount1Diff);
Parameters
Name | Type | Description |
---|---|---|
params_ | SwapAndAddData | SwapAndAddData struct containing data for swap |
Returns
Name | Type | Description |
---|---|---|
amount0Diff | uint256 | token0 balance difference post swap |
amount1Diff | uint256 | token1 balance difference post swap |
addLiquidityPermit2
addLiquidityPermit2 adds liquidity to public vault of interest (mints LP tokens)
function addLiquidityPermit2(
AddLiquidityPermit2Data memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.addData.vault)
onlyDepositor(params_.addData.vault);
Parameters
Name | Type | Description |
---|---|---|
params_ | AddLiquidityPermit2Data | AddLiquidityPermit2Data struct containing data for adding liquidity |
swapAndAddLiquidityPermit2
swapAndAddLiquidityPermit2 transfer tokens to and calls RouterSwapExecutor
function swapAndAddLiquidityPermit2(
SwapAndAddPermit2Data memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.swapAndAddData.addData.vault)
onlyDepositor(params_.swapAndAddData.addData.vault)
returns (uint256 amount0Diff, uint256 amount1Diff);
Parameters
Name | Type | Description |
---|---|---|
params_ | SwapAndAddPermit2Data | SwapAndAddPermit2Data struct containing data for swap |
Returns
Name | Type | Description |
---|---|---|
amount0Diff | uint256 | token0 balance difference post swap |
amount1Diff | uint256 | token1 balance difference post swap |
wrapAndAddLiquidity
wrapAndAddLiquidity wrap eth and adds liquidity to meta vault of iPnterest (mints L tokens)
function wrapAndAddLiquidity(
AddLiquidityData memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.vault)
onlyDepositor(params_.vault);
Parameters
Name | Type | Description |
---|---|---|
params_ | AddLiquidityData | AddLiquidityData struct containing data for adding liquidity |
wrapAndSwapAndAddLiquidity
wrapAndSwapAndAddLiquidity wrap eth and transfer tokens to and calls RouterSwapExecutor
function wrapAndSwapAndAddLiquidity(
SwapAndAddData memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.addData.vault)
onlyDepositor(params_.addData.vault)
returns (uint256 amount0Diff, uint256 amount1Diff);
Parameters
Name | Type | Description |
---|---|---|
params_ | SwapAndAddData | SwapAndAddData struct containing data for swap |
Returns
Name | Type | Description |
---|---|---|
amount0Diff | uint256 | token0 balance difference post swap |
amount1Diff | uint256 | token1 balance difference post swap |
wrapAndAddLiquidityPermit2
wrapAndAddLiquidityPermit2 wrap eth and adds liquidity to private vault of interest (mints LP tokens)
function wrapAndAddLiquidityPermit2(
AddLiquidityPermit2Data memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.addData.vault)
onlyDepositor(params_.addData.vault);
Parameters
Name | Type | Description |
---|---|---|
params_ | AddLiquidityPermit2Data | AddLiquidityPermit2Data struct containing data for adding liquidity |
wrapAndSwapAndAddLiquidityPermit2
wrapAndSwapAndAddLiquidityPermit2 wrap eth and transfer tokens to and calls RouterSwapExecutor
function wrapAndSwapAndAddLiquidityPermit2(
SwapAndAddPermit2Data memory params_
)
external
payable
nonReentrant
whenNotPaused
onlyPrivateVault(params_.swapAndAddData.addData.vault)
onlyDepositor(params_.swapAndAddData.addData.vault)
returns (uint256 amount0Diff, uint256 amount1Diff);
Parameters
Name | Type | Description |
---|---|---|
params_ | SwapAndAddPermit2Data | SwapAndAddPermit2Data struct containing data for swap |
Returns
Name | Type | Description |
---|---|---|
amount0Diff | uint256 | token0 balance difference post swap |
amount1Diff | uint256 | token1 balance difference post swap |
receive
receive() external payable;
_addLiquidity
function _addLiquidity(
address vault_,
uint256 amount0_,
uint256 amount1_,
address token0_,
address token1_
) internal;
_swapAndAddLiquidity
function _swapAndAddLiquidity(
SwapAndAddData memory params_,
address token0_,
address token1_
) internal returns (uint256 amount0Diff, uint256 amount1Diff);
_permit2AddLengthOne
function _permit2AddLengthOne(
AddLiquidityPermit2Data memory params_,
address token0_,
address token1_,
uint256 amount0_,
uint256 amount1_
) internal;
_permit2AddLengthOneOrTwo
function _permit2AddLengthOneOrTwo(
AddLiquidityPermit2Data memory params_,
address token0_,
address token1_,
uint256 amount0_,
uint256 amount1_
) internal;
_permit2Add
function _permit2Add(
uint256 permittedLength_,
AddLiquidityPermit2Data memory params_,
address token0_,
address token1_,
uint256 amount0_,
uint256 amount1_
) internal;
_permit2SwapAndAddLengthOne
function _permit2SwapAndAddLengthOne(
SwapAndAddPermit2Data memory params_,
address token0_,
address token1_
) internal;
_permit2SwapAndAddLengthOneOrTwo
function _permit2SwapAndAddLengthOneOrTwo(
SwapAndAddPermit2Data memory params_,
address token0_,
address token1_
) internal;
_permit2SwapAndAdd
function _permit2SwapAndAdd(
uint256 permittedLength_,
SwapAndAddPermit2Data memory params_,
address token0_,
address token1_
) internal;