Aave Earn Vault Data

Retrieve your vaults.

Vault Structure

Aave Earn Vault data provides comprehensive information about ERC-4626 compliant yield-bearing vaults, including:

  • Vault identification (address, owner, share token details)

  • Reserve information (underlying asset, yield strategy)

  • Fee structure (performance fees, accumulated revenue, fee recipients)

  • Vault metrics (total balance, user shares)

If you include a user account address while fetching vaults, the response also returns user-specific data such as the vault shares owned under userShares.shares and the corresponding balance in the underlying asset under userShares.balance.

The following TypeScript interfaces illustrate the core Vault type and its related types:

interface Vault {  address: EvmAddress;  owner: EvmAddress;  shareName: string;  shareSymbol: string;  usedReserve: Reserve;  fee: PercentValue;  totalFeeRevenue: TokenAmount;  balance: TokenAmount;  feesBalance: TokenAmount;  chainId: ChainId;  userShares?: UserVaultShares;  feeRecipients?: RecipientPercent[];}

Fetch Vault Data

Retrieve detailed information about a specific vault including underlying reserve and user shares.

This is the most likely way you'll want to fetch vault data in your application.

Use the useVault hook to fetch detailed information about a specific vault.

const { data, loading, error } = useVault({  by: VaultRequestBy,  chainId: ChainId,  user: EvmAddress | undefined,});

Fetch a specific vault by address.

An Ethereum Vault
import { useVault, evmAddress, chainId } from "@aave/react";
// …
const { data, loading, error } = useVault({  by: {    address: evmAddress("0x1234567890abcdef1234567890abcdef12345678"),  },  chainId: chainId(1),});
if (loading) {  return <p>Loading vault...</p>;}
if (error) {  return <p>Error: {error.message}</p>;}
if (!data) {  return <p>Vault not found</p>;}
// data: Vault

Use a user address to include user-specific vault data.

With User State
import { useVault, evmAddress, chainId } from "@aave/react";
// …
const { data, loading, error } = useVault({  by: {    address: evmAddress("0x1234567890abcdef1234567890abcdef12345678"),  },  chainId: chainId(1),  user: evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234"),});

List Vaults

Fetch multiple vaults with filtering and pagination support.

Use the useVaults hook to fetch paginated vaults.

const { data, error, loading } = useVaults({  criteria: VaultsRequestFilterCriteria,  pageSize: PageSize | undefined,  user: EvmAddress | undefined,  cursor: Cursor | undefined,});

Fetch vaults owned by a specific address.

Owned Vaults
import { useVaults, evmAddress, PageSize } from "@aave/react";
// …
const { data, error, loading } = useVaults({  criteria: {    ownedBy: [evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234")],  },  pageSize: PageSize.TEN,});
if (loading) {  return <p>Loading…</p>;}
if (error) {  return <p>{error.message}</p>;}
// data.items: Vault[]// data.pageInfo.next: Cursor | null// data.pageInfo.prev: Cursor | null

Use a user address to include user-specific vault data.

With User State
import { useVaults, evmAddress, PageSize } from "@aave/react";
// …
const { data, loading, error } = useVaults({  criteria: {    ownedBy: [evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234")],  },  pageSize: PageSize.TEN,  user: evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234"),});

User Vault Positions

Track user vault positions and shares across Aave Earn Vaults.

Use the useUserVaults hook to fetch paginated vaults that a user has shares in.

const { data, loading, error } = useUserVaults({  user: EvmAddress,  filters: UserVaultsFilter | undefined,  orderBy: UserVaultsOrderBy | undefined,  pageSize: PageSize | undefined,  cursor: Cursor | undefined,});

Fetch user vaults ordered by shares amount.

User Vaults
import {  useUserVaults,  evmAddress,  PageSize,  OrderDirection,} from "@aave/react";
// …
const { data, error, loading } = useUserVaults({  user: evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234"),  orderBy: { shares: OrderDirection.DESC },  pageSize: PageSize.FIFTY,});
if (error) {  return <p>Error: {error.message}</p>;}
if (loading) {  return <p>Loading positions...</p>;}
// data.items: Vault[]// data.pageInfo.next: Cursor | null// data.pageInfo.prev: Cursor | null

User Vault Transaction History

Track user vault transaction history.

Use the useVaultUserTransactionHistory hook to fetch a paginated user's vault transaction history.

const { data, loading, error } = useVaultUserTransactionHistory({  user: EvmAddress,  vault: EvmAddress,  chainId: ChainId,  filters: VaultUserHistoryAction | undefined,  orderBy: VaultUserTransactionHistoryOrderBy | undefined,  pageSize: PageSize | undefined,  cursor: Cursor | undefined,});

Fetch user vault transaction history ordered by date.

User Vault Transactions
import {  useVaultUserTransactionHistory,  evmAddress,  PageSize,  OrderDirection,} from "@aave/react";
// …
const { data, error, loading } = useVaultUserTransactionHistory({  user: evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234"),  vault: evmAddress("0x1234567890abcdef1234567890abcdef12345678"),  chainId: chainId(1),  orderBy: { date: OrderDirection.DESC },  pageSize: PageSize.FIFTY,});
if (error) {  return <p>Error: {error.message}</p>;}
if (loading) {  return <p>Loading transactions...</p>;}
// data.items: VaultUserTransactionHistoryItem[]// data.pageInfo.next: Cursor | null// data.pageInfo.prev: Cursor | null

Vault User Activity

Return a user's activity for a vault, including earnings breakdowns over time.

Use the useVaultUserActivity hook to fetch the user's activity for a vault.

const { data, loading, error } = useVaultUserActivity({  user: EvmAddress,  vault: EvmAddress,  chainId: ChainId,  window: VaultUserActivityWindow,});

Fetch user's vault activity.

User Vault Activity
import {  useVaultUserActivity,  evmAddress,  chainId,  VaultUserActivityTimeWindow,} from "@aave/react";
// …
const { data, error, loading } = useVaultUserActivity({  user: evmAddress("0x742d35cc6e5c4ce3b69a2a8c7c8e5f7e9a0b1234"),  vault: evmAddress("0x1234567890abcdef1234567890abcdef12345678"),  chainId: chainId(1),  window: VaultUserActivityTimeWindow.LastWeek,});
if (error) {  return <p>Error: {error.message}</p>;}
if (loading) {  return <p>Loading transactions...</p>;}
// data: VaultUserActivityResult