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

# Split Deposits

> Split USDC 60/40 and zap each portion into a different vault (Aave v3 and Morpho Steakhouse).

<Tip>
  **面向资产管理者的特色功能。** 在一笔已签名的交易中构建多策略收益组合，这是无需对每一步单独锁定资金即可构建投资组合的标准模式。
</Tip>

## Scenario

某用户希望将其 USDC 头寸分散配置到两个收益场所：60% 存入 Aave v3 的 `aEthUSDC`，40% 存入 Morpho 的 Steakhouse USDC。该 flow 使用 `core.split` 按固定的基点（basis-point）比例划分输入资源，将两个输出句柄分别接入独立的 `lifi.zap` 节点，并为每个 zap 输出附加一个滑点 guard。

这个 recipe 是**投资组合分散配置**的标准结构，适用于任何将单个输入资源拆分、并将各拆分部分路由到不同终端场所的模式。

## What this recipe demonstrates

* 使用单个基点比例的 `core.split`，`bps: 6000` 将 60% 发送到输出 `a`，其余 40% 发送到输出 `b`。
* 通过两个针对不同协议的 `lifi.zap` 节点并行消费两个拆分输出。
* 为每个 zap 的 `amountOut` port 独立附加一个 `slippage` guard。
* 多个终端资源（Aave 与 Morpho 的凭证代币）在单笔交易中被清扫（sweep）给发送方。

## Full example

改编自 `composer-sdk-examples` 仓库中的 [`splitAndZap.ts`](https://github.com/lifinance/composer-sdk-examples/blob/main/examples/splitAndZap.ts)。

```ts theme={"system"}
import {
  createComposeSdk,
  guards,
  materialisers,
  resources,
} from '@lifi/composer-sdk';

const USDC = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
// Aave v3 aEthUSDC receipt token on Ethereum mainnet
const A_ETH_USDC = '0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c';
// Steakhouse USDC (Morpho MetaMorpho vault) on Ethereum mainnet
const STEAKHOUSE_USDC = '0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB';

const sdk = createComposeSdk({ baseUrl: 'https://composer.li.quest' });

const builder = sdk.flow(1, {
  name: 'split-usdc-to-two-vaults',
  inputs: {
    amountIn: resources.erc20(USDC, 1),
  },
});

// Split USDC 60/40 — 6000 bps to `a`, remainder to `b`.
const { a, b } = builder.core.split('split', {
  bind: { source: builder.inputs.amountIn },
  config: { bps: 6000 },
});

// Zap 60% into Aave v3 aEthUSDC.
builder.lifi.zap('zap-aave', {
  bind: { amountIn: a },
  config: {
    resourceOut: resources.erc20(A_ETH_USDC, 1),
  },
  guards: [guards.slippage({ port: 'amountOut', bps: 100 })],
});

// Zap 40% into Steakhouse USDC (Morpho).
builder.lifi.zap('zap-morpho', {
  bind: { amountIn: b },
  config: {
    resourceOut: resources.erc20(STEAKHOUSE_USDC, 1),
  },
  guards: [guards.slippage({ port: 'amountOut', bps: 100 })],
});

const result = await builder.compile({
  signer: '0xYourSignerAddress',
  inputs: {
    amountIn: materialisers.directDeposit({ amount: '10000000000' }), // 10,000 USDC
  },
  sweepTo: builder.context.sender,
});
```

## What to observe

* **Inputs.** 一个资源输入（`amountIn: USDC`）。示例使用 `10,000` USDC。
* **Nodes.** 三个 op：一个 `core.split`，两个 `lifi.zap`。
* **Split wire format.** `flow.nodes[0].config === { bps: 6000 }`，其 `bind.source` 指向 `input.amountIn`。输出在解构返回值上命名为 `a` 和 `b`，它们成为引用 `split.a` 和 `split.b`。
* **Guards.** 每个 zap 在 `amountOut` 上都携带一个独立的、`100` bps（1%）的 `slippage` guard。
* **Terminal resources.** 两个：来自 Aave zap 的 `aEthUSDC`，以及来自 Morpho zap 的 Steakhouse vault 份额。两者都被清扫给发送方。
* **`producedResources[<name>].simulated?.amountOut`.** `producedResources` 中每个 zap 输出对应一个条目，各自带有独立的 `simulated?.amountOut` / `simulated?.amountOutMin`。
