React Hooks
All hooks require a VaultProvider ancestor and return React Query-based state.
Data hooks
useVaultMetadata
Fetch vault metadata (asset, share token, decimals, type, TVL).
const { data, isLoading, error } = useVaultMetadata(vaultAddress);
Returns: VaultMetadata | undefined
interface VaultMetadata {
asset: Address;
share: Address;
assetDecimals: number;
shareDecimals: number;
assetSymbol: string;
shareSymbol: string;
poolId: bigint;
vaultKind: number;
vaultType: 'ASYNC' | 'SYNC_DEPOSIT_ASYNC_REDEEM';
totalAssets: bigint;
}
useVaultUserState
Fetch the connected user's position, pending operations, and claimable balances. Auto-refreshes every 10 seconds.
const userState = useVaultUserState(vaultAddress, shareToken, assetDecimals, vaultType);
Returns: VaultUserState
interface VaultUserState {
shareBalance: bigint;
positionValueFormatted: string;
// Redeem flow
pendingShares: bigint;
pendingAssetsFormatted: string;
hasPending: boolean;
claimableShares: bigint;
claimableAssetsFormatted: string;
hasClaimable: boolean;
// Cancel redeem
pendingCancelRedeem: boolean;
claimableCancelRedeemShares: bigint;
hasClaimableCancelRedeem: boolean;
// Async deposit (ASYNC vaults only)
pendingDepositAssets: bigint;
pendingDepositFormatted: string;
claimableDepositAssets: bigint;
claimableDepositFormatted: string;
hasPendingDeposit: boolean;
hasClaimableDeposit: boolean;
isLoading: boolean;
}
useUserAddress
Get the connected wallet address.
const address = useUserAddress(); // Address | null
Transaction hooks
All transaction hooks return:
{
txState: 'idle' | 'approving' | 'pending' | 'confirming' | 'success' | 'error';
txHash: Hash | undefined;
error: string | null;
reset: () => void;
}
useDeposit
Handles ERC-20 approval (if needed) and deposit in one call.
const { deposit, txState, txHash, error, reset } = useDeposit(vault, asset, decimals, vaultType);
// Deposit 1000 USDC
await deposit('1000');
useClaimDeposit
Claim shares after an async deposit completes (ASYNC vaults only).
const { claimDeposit, txState } = useClaimDeposit(vault);
await claimDeposit();
useRequestRedeem
Request an async redemption.
const { requestRedeem, txState } = useRequestRedeem(vault);
await requestRedeem('500'); // shares as string
useClaimRedeem
Claim assets after a redeem request completes.
const { claimRedeem, txState } = useClaimRedeem(vault);
await claimRedeem(claimableShares); // bigint
useCancelRedeem
Cancel a pending redeem request.
const { cancelRedeem, txState } = useCancelRedeem(vault);
await cancelRedeem();
useClaimCancelRedeem
Claim shares back after cancelling a redeem.
const { claimCancelRedeem, txState } = useClaimCancelRedeem(vault);
await claimCancelRedeem();