Zap 3Crv LP into Convex Finance

This use case allows a user to stake Curve LP tokens in Convex for boosted rewards. Bundle Mechanics: This is a multi-step bundle
  • it redeems the 3Crv from curve-dex to get USDT.
  • it deposits the USDT back into curve-dex for a different LP token,
  • deposits the resulting token into the convex-lp protocol to get the final cvx3Crv token.
Try this route →
export async function deposit3crvToConvex(): Promise<{ route: any; tx: any }> {
  const ThreeCrv: Address = "0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490";
  const cvx3Crv: Address = "0xa1c3492b71938e144ad8be4c2fb6810b01a43dd8";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: ETHEREUM_CHAIN,
    amountIn: ["1000000000000000000"], // 1 3Crv
    tokenIn: [ThreeCrv],
    tokenOut: [cvx3Crv],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}

Zap into Infrared iETH on Berachain

This use case allows a user to zap into the Infrared liquid restaking token on Berachain. Try this route → Bundle Mechanics: The bundle consists of a single action:
  • a swap from BERA to iBERA using the ooga-booga protocol
export async function depositBeraToInfrared(): Promise<{ route: any; tx: any }> {
  const BERA: Address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  const iBERA: Address = "0x9b6761bf2397bb5a6624a856cc84a3a14dcd3fe5";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: BERACHAIN_CHAIN,
    amountIn: ["1000000000000000000"], // 1 BERA
    tokenIn: [BERA],
    tokenOut: [iBERA],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}

Stake PLUME for pETH on Dinero

This use case deposits native PLUME and converts it into the pETH liquid staking derivative on Dinero. Route Mechanics: The route consists of a single action, a swap from PLUME to pETH using the rooster protocol.
export async function depositPlumeToDinero(): Promise<{ route: any; tx: any }> {
  const PLUME: Address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  const pETH: Address = "0x39d1F90eF89C52dDA276194E9a832b484ee45574";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: PLUME_CHAIN,
    amountIn: ["1000000000000000000"], // 1 PLUME
    tokenIn: [PLUME],
    tokenOut: [pETH],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}

Zap ETH into Renzo’s ezETH

This use case allows a user to enter the Renzo liquid restaking ecosystem. Try this route → Bundle Mechanics: The bundle consists of a single action: a swap from ETH to ezETH using the barter protocol.
export async function depositEthToRenzo(): Promise<{ route: any; tx: any }> {
  const ETH: Address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  const ezETH: Address = "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: ETHEREUM_CHAIN,
    amountIn: ["1000000000000000000"], // 1 ETH
    tokenIn: [ETH],
    tokenOut: [ezETH],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}


Zap ETH into Swell’s swETH

This use case allows a user to enter the Swell liquid staking ecosystem. Try this route → Bundle Mechanics: The bundle consists of a single action: a swap from ETH to swETH using the odos protocol.
export async function depositEthToSwell(): Promise<{ route: any; tx: any }> {
  const ETH: Address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  const swETH: Address = "0xf951E335afb289353dc249e82926178EaC7DEd78";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: ETHEREUM_CHAIN,
    amountIn: ["1000000000000000000"], // 1 ETH
    tokenIn: [ETH],
    tokenOut: [swETH],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}

Zap ETH into Stakestone’s STONE

This use case allows a user to enter the StakeStone liquid staking ecosystem. Try this route → Bundle Mechanics: The bundle involves a two-step process:
  • a swap from ETH to an intermediate token using barter,
  • followed by a deposit into the stakestone-sbtc protocol to get the final STONE token.
export async function depositEthToStakestone(): Promise<{ route: any; tx: any }> {
  const ETH: Address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  const STONE: Address = "0x094c0e36210634c3cfa25dc11b96b562e0b07624";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: ETHEREUM_CHAIN,
    amountIn: ["1000000000000000000"], // 1 ETH
    tokenIn: [ETH],
    tokenOut: [STONE],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}


Zap ETH into Bedrock’s uniETH

This use case allows a user to enter the Bedrock liquid staking ecosystem. Try this route → Bundle Mechanics: The bundle consists of a single action: a swap from ETH to BRBTC using the barter protocol
export async function depositEthToBedrock(): Promise<{ route: any; tx: any }> {
  const ETH: Address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE";
  const BRBTC: Address = "0x2ec37d45fcae65d9787ecf71dc85a444968f6646";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: ETHEREUM_CHAIN,
    amountIn: ["1000000000000000000"], // 1 ETH
    tokenIn: [ETH],
    tokenOut: [BRBTC],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}

Zap Balancer LP into Aura Finance

This use case allows a user to stake Balancer LP tokens in Aura for boosted rewards. Try this route → Route mechanics:
  • Redeem the Balancer v2 LP position to get WETH
  • Redeem WETH using wrapped native protocol to get native ETH
  • Deposit native ETH back into wrapped native to get WETH
  • Deposit WETH into Balancer v2 to create FIXME (0xfd1cf6fd41f229ca86ada0584c63c49c3d66bbc9) LP
  • Deposit the LP into Aura protocol to receive the Aura staked position
export async function depositBalancerLpToAura(): Promise<{ route: any; tx: any }> {  
  const BPT_wstETH_WETH: Address = "0x32296969Ef14EB0c6d29669C550D4a0449130230";
  const auraBPT: Address = "0x08129a472dfb92a1596bbe31f27c53914a990563";

  const routeParams: RouteParams = {
    fromAddress: userAddress,
    receiver: userAddress,
    chainId: ETHEREUM_CHAIN,
    amountIn: ["1000000000000000000"], // 1 BPT
    tokenIn: [BPT_wstETH_WETH],
    tokenOut: [auraBPT],
    routingStrategy: 'router'
  };

  happyPathLog(routeParams);
  const route = await client.getRouteData(routeParams);
  await sendEoa(route.tx, route.gas);
  return route;
}

Zap WETH to Balancer stEUR/Eure LP on Gnosis

Zaps WETH into the Balancer stEUR/Eure liquidity pool on Gnosis. Try this route →
const WETH = "0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1" as Address;
const stEurEure = "0x06135A9Ae830476d3a941baE9010B63732a055F4" as Address;

const routeParams: RouteParams = {
  fromAddress: userAddress,
  receiver: userAddress,
  chainId: GNOSIS_CHAIN,
  amountIn: ["1000000000000000000"],
  tokenIn: [WETH],
  tokenOut: [stEurEure],
  routingStrategy: "router",
};


const route = await client.getRouteData(routeParams);
await sendEoa(client.getApprovalData(route)); // TODO fix
await sendEoa(route.tx, route.gas);
Route Mechanics:
  • Swap WETH to EURE via Enso.
  • Deposit EURE into Balancer v2 to get the LP token.

Provide Liquidity to Yearn Curve mUSD Vault with ETH

Deposit ETH and provide liquidity to the Yearn Curve mUSD Pool yVault on Ethereum. Try this route →
const ETH = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" as Address;
const CurveMUSD_yVault = "0x8cc94ccd0f3841a468184aca3cc478d2148e1757" as Address; // Yearn Curve mUSD Pool yVault

const routeParams: RouteParams = {
 fromAddress: userAddress,
 receiver: userAddress,
 chainId: ETHEREUM_CHAIN,
 amountIn: ["100000000000000000"], // 0.1 ETH
 tokenIn: [ETH],
 tokenOut: [CurveMUSD_yVault],
 routingStrategy: "delegate",
 slippage: "100", // 1% slippage
};

const route = await client.getRouteData(routeParams);
await sendSmartWallet(route.tx, route.gas);
Route Mechanics:
  • Swap ETH to DAI via Enso DEX Aggregator
  • Deposit DAI into Curve.fi 3pool ( 0xbebc44782c7db0a1a60cb6fe97d0b483032ff1c7 ) to receive Curve 3pool LP tokens
  • Deposit Curve 3pool LP tokens into Curve.fi mUSD Pool ( 0x8474ddbe98f5aa3179b3b3f5942d724afcdec9f6 ) to receive Curve mUSD LP tokens
  • Deposit Curve mUSD LP tokens into Yearn Curve mUSD yVault ( 0x8cc94ccd0f3841a468184aca3cc478d2148e1757 )

ETH to Curve stETH Factory yVault

Deposit ETH and provide liquidity to the Yearn Curve stETH Factory yVault on Ethereum. Try this route →
const ETH = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" as Address;
const CurveStETH_yVault = "0x5b8c556b8b2a78696f0b9b830b3d67623122e270" as Address; // Yearn Curve stETH Factory yVault

const routeParams: RouteParams = {
 fromAddress: userAddress,
 receiver: userAddress,
 chainId: ETHEREUM_CHAIN,
 amountIn: ["100000000000000000"], // 0.1 ETH
 tokenIn: [ETH],
 tokenOut: [CurveStETH_yVault],
 routingStrategy: "delegate",
 slippage: "100", // 1% slippage
};

const route = await client.getRouteData(routeParams);
await sendSmartWallet(route.tx, route.gas);
Route Mechanics:
  • Deposit ETH into Curve.fi stETH Pool ( 0xdc24316b9ae028f1497c275eb9192a3ea0f67022 ) to receive Curve stETH LP tokens
  • Deposit Curve stETH LP tokens into Yearn Curve stETH Factory yVault ( 0x5b8c556b8b2a78696f0b9b830b3d67623122e270 )

ETH to Balancer cbETH-wstETH Factory yVault

Deposit ETH and provide liquidity to the Yearn Balancer (cbETH/wstETH) yVault on Ethereum. Try this route →
const ETH = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" as Address;
const BalancerCBETHwstETH_yVault = "0xc325849908d482550b87f96ef60271b95f92c861" as Address; // Yearn Balancer cbETH-wstETH Factory yVault

const routeParams: RouteParams = {
 fromAddress: userAddress,
 receiver: userAddress,
 chainId: ETHEREUM_CHAIN,
 amountIn: ["100000000000000000"], // 0.1 ETH
 tokenIn: [ETH],
 tokenOut: [BalancerCBETHwstETH_yVault],
 routingStrategy: "delegate",
 slippage: "100", // 1% slippage
};

const route = await client.getRouteData(routeParams);
await sendSmartWallet(route.tx, route.gas);
Route Mechanics:
  • Split ETH:
  • Swap ETH to wstETH via Enso DEX Aggregator
  • Swap ETH to cbETH via Enso DEX Aggregator
  • Deposit wstETH and cbETH into Balancer V2 pool ( 0xba12222222228d8ba445958a75a0704d566bf2c8 ) to receive Balancer cbETH-wstETH LP tokens
  • Deposit Balancer cbETH-wstETH LP tokens into Yearn Balancer cbETH-wstETH Factory yVault ( 0xc325849908d482550b87f96ef60271b95f92c861 )

ETH to Curve TriCryptoLLAMA Factory yVault

Deposit ETH and provide liquidity to the Yearn Curve TriCryptoLLAMA yVault on Ethereum. Try this route →
const ETH = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" as Address;
const CurveTriCryptoLLAMA_yVault = "0xe2cad35cfd1a9b5acd557558f44b096ef8340c1b" as Address; // Yearn Curve TriCryptoLLAMA Factory yVault

const routeParams: RouteParams = {
 fromAddress: userAddress,
 receiver: userAddress,
 chainId: ETHEREUM_CHAIN,
 amountIn: ["100000000000000000"], // 0.1 ETH
 tokenIn: [ETH],
 tokenOut: [CurveTriCryptoLLAMA_yVault],
 routingStrategy: "delegate",
 slippage: "100", // 1% slippage
};

const route = await client.getRouteData(routeParams);
await sendSmartWallet(route.tx, route.gas);
Route Mechanics:
  • Swap ETH to tBTC via Enso DEX Aggregator
  • Deposit tBTC into Curve.fi TriCryptoLLAMA Pool ( 0x2889302a794da87fbf1d6db415c1492194663d13 ) to receive Curve TriCryptoLLAMA LP tokens
  • Deposit Curve TriCryptoLLAMA LP tokens into Yearn Curve TriCryptoLLAMA Factory yVault ( 0xe2cad35cfd1a9b5acd557558f44b096ef8340c1b )