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_000n
2

Preview shares

const amount = parseUnits(inputValue, decimals);
const { shares } = usePreviewDeposit(vaultId, amount);
// Show 'shares' to user before confirmation
3

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] });