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',
apiKey: process.env.LIFI_API_KEY!,
});
const builder = sdk.flow(1, {
name: 'split-usdc-to-two-vaults',
inputs: {
amountIn: resources.erc20(USDC, 1),
},
});
const [toAave, toMorpho] = builder.core.partition('split', {
bind: { source: builder.inputs.amountIn },
config: { bps: [6000, 4000] },
}).parts;
builder.lifi.zap('zap-aave', {
bind: { amountIn: toAave },
config: {
resourceOut: resources.erc20(A_ETH_USDC, 1),
},
guards: [guards.slippage({ port: 'amountOut', bps: 100 })],
});
builder.lifi.zap('zap-morpho', {
bind: { amountIn: toMorpho },
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,
});
console.log('Aave:', result.outputs['zap-aave.amountOut']?.amount);
console.log('Morpho:', result.outputs['zap-morpho.amountOut']?.amount);