> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enso.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Zap to Deposit

> Maximize user deposits by accepting any token and zapping it directly into a staking or vault position

## 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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0x6c3F90f043a72FA612cbac8115EE7e52BDe6E490\&tokenOut=0xa1c3492b71938e144ad8be4c2fb6810b01a43dd8)

```mermaid theme={null}
flowchart LR
    3CRV((3CRV)) -->|curve-dex<br/>redeem| USDT((USDT))
    USDT -->|curve-dex<br/>deposit| STECRV((steCRV))
    STECRV -->|convex-lp<br/>deposit| cvxSTECRV((cvxsteCRV))
```

```ts theme={null}
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 →**](https://happypath.enso.build?chainId=80094\&tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\&tokenOut=0x9b6761bf2397bb5a6624a856cc84a3a14dcd3fe5)

**Bundle Mechanics:**
The bundle consists of a single action:

* a swap from BERA to iBERA using the ooga-booga protocol

```mermaid theme={null}
flowchart LR
    BERA((BERA)) -->|ooga-booga<br/>swap| iBERA((iBERA))
```

```ts theme={null}
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.

```mermaid theme={null}
flowchart LR
    PLUME((PLUME)) -->|rooster<br/>swap| DINERO((DINERO))
```

```ts theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\&tokenOut=0xbf5495Efe5DB9ce00f80364C8B423567e58d2110)

**Bundle Mechanics:** The bundle consists of a single action: a swap from ETH to ezETH using the barter protocol.

```mermaid theme={null}
flowchart LR
    ETH((ETH)) -->|barter<br/>swap| ezETH((ezETH))
```

```ts theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\&tokenOut=0xf951E335afb289353dc249e82926178EaC7DEd78)

**Bundle Mechanics:** The bundle consists of a single action: a swap from ETH to swETH using the odos protocol.

```mermaid theme={null}
flowchart LR
    ETH((ETH)) -->|odos<br/>swap| swETH((swETH))
```

```ts theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\&tokenOut=0x094c0e36210634c3cfa25dc11b96b562e0b07624)

**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.

```mermaid theme={null}
flowchart LR
    ETH((ETH)) -->|barter<br/>swap| SBTC((SBTC))
    SBTC -->|stakestone-sbtc<br/>deposit| STONE((STONE))
```

```ts theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\&tokenOut=0x2ec37d45fcae65d9787ecf71dc85a444968f6646)

**Bundle Mechanics:** The bundle consists of a single action: a swap from ETH to BRBTC using the barter protocol

```mermaid theme={null}
flowchart LR
    ETH((ETH)) -->|barter<br/>swap| uniBTC((uniBTC))
```

```ts theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0x32296969Ef14EB0c6d29669C550D4a0449130230\&tokenOut=0x08129a472dfb92a1596bbe31f27c53914a990563)

**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

```mermaid theme={null}
flowchart LR
    BAURA((B-AURA)) -->|balancer-v2<br/>redeem| WETH((WETH))
    WETH -->|wrapped-native<br/>redeem| ETH((ETH))
    ETH -->|wrapped-native<br/>deposit| WETH_new((WETH))
    WETH_new -->|balancer-v2<br/>deposit| WETHUSDC((WETH-USDC))
    WETHUSDC -->|aura<br/>deposit| auraWETHUSDC((auraWETH-USDC))
```

```ts theme={null}
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 →**](https://happypath.enso.build/?tokenIn=0x6A023CCd1ff6F2045C3309768eAd9E68F978f6e1\&outChainId=100\&chainId=100\&tokenOut=0x06135A9Ae830476d3a941baE9010B63732a055F4\&amountIn=1000000000000000000)

```javascript theme={null}
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)); 
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\&tokenOut=0x8cc94ccd0f3841a468184aca3cc478d2148e1757)

```mermaid theme={null}
flowchart LR
    ETH((ETH)) -->|enso<br/>route| DAI((DAI))
    DAI -->|curve<br/>deposit| 3CRV((3CRV LP))
    3CRV -->|curve<br/>deposit| mUSD_LP((mUSD LP))
    mUSD_LP -->|yearn-v2<br/>deposit| yvmUSD((yvmUSD))
```

```javascript theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\&tokenOut=0x5b8c556b8b2a78696f0b9b830b3d67623122e270)

```mermaid theme={null}
flowchart LR
    ETH((ETH)) -->|curve<br/>deposit| stETH_LP((stETH LP))
    stETH_LP -->|yearn-v2<br/>deposit| yvstETH((yvstETH))
```

```javascript theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\&tokenOut=0xc325849908d482550b87f96ef60271b95f92c861)

```mermaid theme={null}
flowchart LR
    ETH((ETH)) --> SPLIT{enso.split}
    
    SPLIT -->|enso<br/>route| wstETH((wstETH))
    SPLIT -->|enso<br/>route| cbETH((cbETH))
    
    wstETH -->|balancer-v2<br/>deposit| BAL_LP((cbETH/wstETH LP))
    cbETH -->|balancer-v2<br/>deposit| BAL_LP
    BAL_LP -->|yearn-v2<br/>deposit| yvBAL((yvBAL))
```

```javascript theme={null}
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 →**](https://happypath.enso.build?chainId=1\&tokenIn=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\&tokenOut=0xe2cad35cfd1a9b5acd557558f44b096ef8340c1b)

```mermaid theme={null}
flowchart LR
    ETH((ETH)) -->|enso<br/>route| tBTC((tBTC))
    tBTC -->|curve<br/>deposit| TRICRYPTO_LP((TriCrypto LP))
    TRICRYPTO_LP -->|yearn-v2<br/>deposit| yvTRICRYPTO((yvTriCrypto))
```

```javascript theme={null}
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` )

***
