docs / sdk / deposit
Deposit Flow
The deposit flow involves two on-chain transactions: an ERC-20 approval and the actual vault deposit. The useDeposit hook handles both sequentially.
1
Check balance
const { balance } = useTokenBalance(tokenAddress);
// balance is a bigint (raw units)
// For USDC: parseUnits("100", 6) = 100_000_000n2
Preview shares
const amount = parseUnits(inputValue, decimals);
const { shares } = usePreviewDeposit(vaultId, amount);
// Show 'shares' to user before confirmation3
Execute deposit
const { deposit, status } = useDeposit(vaultId);
await deposit({ amount });
// Watch status for UX feedback:
// "idle" → "approving" → "depositing" → "waiting" → "success"4
Invalidate queries
// After success, invalidate cached data so UI reflects
// updated share balance and position value
queryClient.invalidateQueries({ queryKey: ["userPosition", vaultId] });
queryClient.invalidateQueries({ queryKey: ["shareBalance", vaultId] });