Learn how to query and monitor asset information across Aave v4.
Assets represent ERC20 tokens that can be supplied, borrowed, or traded within the Aave protocol.
Asset data provides comprehensive information about a specific token in the protocol, including:
Token identification: id, address, symbol, name, decimals
Aggregate metrics: total supplied, total borrowed, caps, and available amounts
Current price: exchange valuation for a specific currency
The following TypeScript interfaces illustrate the core Asset types:
interface Asset { __typename: "Asset"; id: AssetId; token: Erc20Token; summary: AssetSummary; price: ExchangeAmountWithChange;}
Query detailed information about a specific asset.
Use the useAsset hook to fetch asset information.
import { type AssetRequest, useAsset } from "@aave/react";
function AssetDetails({ request }: { request: AssetRequest }) { const { data, loading, error } = useAsset(request);
if (loading) return <div>Loading…</div>;
if (error) return <div>Error: {error.message}</div>;
if (!data) return <div>Asset not found</div>;
return ( <div> <h3>{data.token.name}</h3> <p>Chain: {data.token.chain.name}</p> </div> );}
See below for examples of AssetRequest objects.
import { chainId, evmAddress } from "@aave/react";
const request: AssetRequest = { query: { token: { address: evmAddress("0x123…"), chainId: chainId(1), }, },};
Finally, you can specify a different time window or currency for the data.
import { TimeWindow } from "@aave/react";
const { data, loading, error } = useAsset({ query: { }, timeWindow: TimeWindow.LastWeek,});
Asset price history data provides time-series price information for an asset.
Use the useAssetPriceHistory hook to fetch historical price data.
import { type AssetPriceHistoryRequest, useAssetPriceHistory,} from "@aave/react";
function AssetPrice({ request }: { request: AssetPriceHistoryRequest }) { const { data, loading, error } = useAssetPriceHistory(request);
if (loading) return <div>Loading…</div>;
if (error) return <div>Error: {error.message}</div>;
return ( <div> {data.map((sample) => ( <div key={sample.date.toString()}> <p> <small>{sample.date.toLocaleDateString()}</small>$ {sample.price.toFixed(2)} </p> </div> ))} </div> );}
See below for examples of AssetPriceHistoryRequest objects.
const request: AssetPriceHistoryRequest = { query: { assetId: asset.id, },};
Finally, you can specify a different currency or time window for the data.
import { Currency } from "@aave/react";
const { data, error, loading } = useAssetPriceHistory({ query: { }, currency: Currency.Eur,});
Asset supply history data provides time-series total supply information for an asset.
Use the useAssetSupplyHistory hook to fetch historical supply data.
import { type AssetSupplyHistoryRequest, useAssetSupplyHistory,} from "@aave/react";
function AssetSupply({ request }: { request: AssetSupplyHistoryRequest }) { const { data, loading, error } = useAssetSupplyHistory(request);
if (loading) return <div>Loading…</div>;
if (error) return <div>Error: {error.message}</div>;
return ( <div> {data.map((sample) => ( <div key={sample.date.toString()}> <p> <small>{sample.date.toLocaleDateString()}</small> {sample.amount.value.toDisplayString(2)} {sample.amount.symbol} </p> </div> ))} </div> );}
See below for examples of AssetSupplyHistoryRequest objects.
const request: AssetSupplyHistoryRequest = { query: { assetId: asset.id, },};
Finally, you can specify a different time window for the data.
import { TimeWindow } from "@aave/react";
const { data, error, loading } = useAssetSupplyHistory({ query: { }, window: TimeWindow.LastMonth,});
Asset borrow history data provides time-series total borrow information for an asset.
Use the useAssetBorrowHistory hook to fetch historical borrow data.
import { type AssetBorrowHistoryRequest, useAssetBorrowHistory,} from "@aave/react";
function AssetBorrow({ request }: { request: AssetBorrowHistoryRequest }) { const { data, loading, error } = useAssetBorrowHistory(request);
if (loading) return <div>Loading…</div>;
if (error) return <div>Error: {error.message}</div>;
return ( <div> {data.map((sample) => ( <div key={sample.date.toString()}> <p> <small>{sample.date.toLocaleDateString()}</small> {sample.amount.value.toDisplayString(2)} {sample.amount.symbol} </p> </div> ))} </div> );}
See below for examples of AssetBorrowHistoryRequest objects.
const request: AssetBorrowHistoryRequest = { query: { assetId: asset.id, },};
Finally, you can specify a different time window for the data.
import { TimeWindow } from "@aave/react";
const { data, error, loading } = useAssetBorrowHistory({ query: { }, window: TimeWindow.LastMonth,});
Fetch protocol-wide historical data (deposits, borrows).
Use the useProtocolHistory hook to fetch protocol-wide historical data.
import { type ProtocolHistoryRequest, useProtocolHistory } from "@aave/react";
function ProtocolHistory({ request }: { request: ProtocolHistoryRequest }) { const { data, loading, error } = useProtocolHistory(request);
if (loading) return <div>Loading…</div>;
if (error) return <div>Error: {error.message}</div>;
return ( <div> {data.map((sample) => ( <p key={sample.date.toString()}> <small>{sample.date.toLocaleDateString()}</small> <span> <strong>Deposits</strong> {sample.deposits.symbol} {sample.deposits.value.toDisplayString(2)} </span> <span> <strong>Borrows</strong> {sample.borrows.symbol} {sample.borrows.value.toDisplayString(2)} </span> </p> ))} </div> );}