DexSwapperUManager

Git Sourcearrow-up-right

Inherits: UManager

Required Merkle Root Leaves

  • ERC20 approves with router spender.

  • IUniswapV3Router.exactInput(params), with all desired paths.

State Variables

MAX_SLIPPAGE

uint256 internal constant MAX_SLIPPAGE = 0.1e4;

allowedSlippage

Slippage check enforced after swaps.

uint16 public allowedSlippage = 0.0005e4;

router

The UniswapV3 Router.

IUniswapV3Router internal immutable router;

balancerVault

The BalancerVault this uManager works with.

priceRouter

The PriceRouter contract used to check slippage.

Functions

constructor

setAllowedSlippage

Sets the maximum allowed slippage during a swap.

Callable by MULTISIG_ROLE.

swapWithUniswapV3

Performs a swap using the UniswapV3 Router, and enforces a slippage check.

Callable by STRATEGIST_ROLE.

Parameters

Name
Type
Description

manageProofs

bytes32[][]

2 manage proofs, the first one for the ERC20 approval, and the second for the router exactInput call

decodersAndSanitizers

address[]

2 DecodersAndSanitizers one that implements ERC20 approve, and one that implements IUniswapV3Router.exactInput(params)

path

ERC20[]

the ERC20 token swap path

fees

uint24[]

the fees to specify which pools to swap with

amountIn

uint256

the amount of path[0] to swap

amountOutMinimum

uint256

the minimum amount of path[path.length - 1] to get out from the swap

deadline

uint256

the swap deadline

swapWithBalancerV2

Performs a swap using the BalancerV2 Vault, and enforces a slippage check.

Callable by STRATEGIST_ROLE.

Parameters

Name
Type
Description

manageProofs

bytes32[][]

2 manage proofs, the first one for the ERC20 approval, and the second for the swap

decodersAndSanitizers

address[]

2 DecodersAndSanitizers one that implements ERC20 approve, and one that implements BalancerV2Vault.swap

singleSwap

DecoderCustomTypes.SingleSwap

the swap data

funds

DecoderCustomTypes.FundManagement

the fund management data

limit

uint256

the maximum amount of assetIn to swap, or the minimum amount of assets out to receive

deadline

uint256

the swap deadline

swapWithCurve

Performs a swap using a Curve pool, and enforces a slippage check.

Callable by STRATEGIST_ROLE.

Parameters

Name
Type
Description

manageProofs

bytes32[][]

2 manage proofs, the first one for the ERC20 approval, and the second for the swap

decodersAndSanitizers

address[]

2 DecodersAndSanitizers one that implements ERC20 approve, and one that implements CurvePool.exchange

info

CurveInfo

the Curve pool info

i

uint256

the index of the token to swap from

j

uint256

the index of the token to swap to

dx

uint256

the amount of token i to swap

min_dy

uint256

the minimum amount of token j to receive

Events

SlippageUpdated

Errors

DexSwapperUManager__Slippage

DexSwapperUManager__NewSlippageTooLarge

DexSwapperUManager__UniswapV3BadPathOrFees

Structs

CurveInfo

Data needed to swap in a Curve pool

This was made into a struct to prevent stack too deep errors.

Was this helpful?