ArrakisPrivateVaultRouter

Git Source

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

NameTypeDescription
params_AddLiquidityDataAddLiquidityData 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

NameTypeDescription
params_SwapAndAddDataSwapAndAddData struct containing data for swap

Returns

NameTypeDescription
amount0Diffuint256token0 balance difference post swap
amount1Diffuint256token1 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

NameTypeDescription
params_AddLiquidityPermit2DataAddLiquidityPermit2Data 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

NameTypeDescription
params_SwapAndAddPermit2DataSwapAndAddPermit2Data struct containing data for swap

Returns

NameTypeDescription
amount0Diffuint256token0 balance difference post swap
amount1Diffuint256token1 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

NameTypeDescription
params_AddLiquidityDataAddLiquidityData 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

NameTypeDescription
params_SwapAndAddDataSwapAndAddData struct containing data for swap

Returns

NameTypeDescription
amount0Diffuint256token0 balance difference post swap
amount1Diffuint256token1 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

NameTypeDescription
params_AddLiquidityPermit2DataAddLiquidityPermit2Data 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

NameTypeDescription
params_SwapAndAddPermit2DataSwapAndAddPermit2Data struct containing data for swap

Returns

NameTypeDescription
amount0Diffuint256token0 balance difference post swap
amount1Diffuint256token1 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;