import { useDeposit, useApprove, useVault } from '@yo-protocol/react'
import { useAccount } from 'wagmi'
import { parseUnits } from 'viem'
import { VAULTS, YO_GATEWAY_ADDRESS } from '@yo-protocol/core'
function DepositForm() {
const vault = VAULTS.yoUSD
const { address } = useAccount()
const { vault: vaultState } = useVault('yoUSD')
const { approve, isLoading: approving } = useApprove({
token: vault.underlying.address[8453],
spender: YO_GATEWAY_ADDRESS,
onSubmitted: () => console.log('Approved'),
})
const { deposit, isLoading: depositing, isSuccess } = useDeposit({
vault: 'yoUSD',
onSubmitted: (hash) => console.log('Deposited:', hash),
})
const handleDeposit = async () => {
const amount = parseUnits('100', 6) // 100 USDC
await approve(amount)
await deposit(amount)
}
return (
<div>
<h2>Deposit into {vaultState?.name}</h2>
<button onClick={handleDeposit} disabled={approving || depositing}>
{approving ? 'Approving...' : depositing ? 'Depositing...' : 'Deposit 100 USDC'}
</button>
{isSuccess && <p>Deposit confirmed!</p>}
</div>
)
}