import { createYoClient } from '@yo-protocol/core'
const client = createYoClient({ chainId: 8453 })
// Build approve call data
const approveTx = client.prepareApprove({
token: underlyingTokenAddress,
amount: parseUnits('100', 6),
})
// Build deposit call data (needs RPC for preview quote)
const depositTx = await client.prepareDeposit({
vault: vaultAddress,
amount: parseUnits('100', 6),
})
// Build redeem call data
const redeemTx = await client.prepareRedeem({
vault: vaultAddress,
shares: parseEther('10'),
})
// Build approve + deposit bundle (checks allowance, returns 1 or 2 txs)
const bundle = await client.prepareDepositWithApproval({
vault: vaultAddress,
token: underlyingTokenAddress,
owner: accountAddress,
amount: parseUnits('100', 6),
})
// Send via AA wallet bundler
await bundler.sendBundle(bundle.map(tx => ({
to: tx.to,
data: tx.data,
value: tx.value,
})))