use user balance

Fetches a connected user's position in a vault — shares and equivalent asset value.

const { position, isLoading, refetch } = useUserBalance('yoETH', address)

Usage

import { useUserBalance } from '@yo-protocol/react'
import { useAccount } from 'wagmi'
import { formatEther } from 'viem'

function UserPosition() {
  const { address } = useAccount()
  const { position, isLoading } = useUserBalance('yoETH', address)

  if (!address) return <p>Connect wallet to view position</p>
  if (isLoading) return <p>Loading position...</p>

  return (
    <dl>
      <dt>Shares</dt>
      <dd>{formatEther(position?.shares ?? 0n)}</dd>
      <dt>Assets</dt>
      <dd>{formatEther(position?.assets ?? 0n)}</dd>
    </dl>
  )
}

Parameters

Parameter
Type
Required
Description

vault

Address | VaultId

Yes

Vault address or named ID

account

Address | undefined

No

User address. Query is disabled when undefined.

Return Value

Field
Type
Description

position

UserVaultPosition | undefined

Full user position

isLoading

boolean

true while the initial fetch is in progress

isError

boolean

true if the query failed

error

Error | null

Error object if the query failed

refetch

() => void

Manually trigger a refetch

UserVaultPosition shape

Property
Type
Description

shares

bigint

Vault share balance

assets

bigint

Equivalent asset value at current exchange rate

Caching

Setting
Value
Description

staleTime

15s

Position data is considered fresh for 15 seconds

refetchInterval

30s

Background refetch every 30 seconds

circle-info

Automatic invalidation

Queries are automatically invalidated after a successful useDeposit, useRedeem, or useApprove transaction.