CurveDeposit

Action that deposits tokens into liquidity pool via depositTarget receiving lpToken.

User needs to approve every token in tokens which has a nonzero deposit amount specified in amounts.

If one of the tokens == 0xEeee... the user needs to have an appropriate balance of WETH that will be used instead of native ETH. User needs to approve the its wallet to pull WETH.

Parameters:

  • address from - address where to pull tokens from.

  • address to - address that will receive the LP tokens.

  • address depositTarget - pool contract or zap deposit contract in which to deposit tokens.

  • uint256 burnAmount - minimum amount of LP tokens to accept.

  • uint8 flags - explained below

  • uint256[] amounts - amount of each token to deposit.

Flags parameter:

This parameter is the same for both deposit and withdraw actions.

It holds two flags: explicitUnderlying (1 << 2 bitmask), withdrawExact(1 << 3 bitmask), as well as depositTargetType enum which takes up the lower 2 bits.

  • bool explicitUnderlying - used when the curve pool doesn't have a dedicated deposit zap but has underlying tokens that we want to deposit or withdraw.

  • bool withdrawExact - explained here but relevant only for CurveWithdraw: if true - burnAmount specifies the MAXIMUM amount of lp tokens to burn, amounts specifies the EXACT amount of tokens to withdraw; if false - burnAmount specifies EXACT amount of lp tokens to burn, amounts specifies the MINIMUM amount of withdrawn tokens to accept;

  • uint2 depositTargetType: SWAP (=0) - target is pool swap contract ZAP_POOL - target is zap with the pool address view function signature pool() ZAP_CURVE - target is zap with the pool address view function signature curve()

Last updated