useTradeAggregation
Fetch aggregated trade data for an asset pair in your React app using the Blux SDK.
The useTradeAggregation hook returns aggregated trade data for a base/counter asset pair over a configurable time window. All six arguments are required — the hook will not run without them. Import Asset from @bluxcc/react.
Import
import { useTradeAggregation, Asset } from "@bluxcc/react";Usage
Basic usage with required arguments:
import { useTradeAggregation, Asset } from "@bluxcc/react";
function App() {
const base = new Asset("USDC", "GA5Z....4KZVN");
const counter = Asset.native();
const start_time = 1622505600000; // ms
const end_time = 1622592000000; // ms
const resolution = 3600000; // 1 hour in ms
const offset = 0;
const { data } = useTradeAggregation([base, counter, start_time, end_time, resolution, offset]);
}root.render(
<BluxProvider
config={{
appName: "MyApp",
networks: [networks.testnet, networks.mainnet],
}}
>
<App />
</BluxProvider>
);With call-builder options and TanStack Query options:
import { useTradeAggregation, Asset } from "@bluxcc/react";
function App() {
const { data, refetch } = useTradeAggregation(
[ // Required arguments
new Asset("USDC", "GA5Z....KZVN"),
new Asset("EURT", "GAP5....ZPBR"),
1622505600000,
1622592000000,
3600000,
0,
],
{ cursor: "9876543210", limit: 200, order: "asc" }, // Core parameters
{ retry: 1, staleTime: 60000 }, // TanStack parameters
);
}root.render(
<BluxProvider
config={{
appName: "MyApp",
networks: [networks.testnet, networks.mainnet],
}}
>
<App />
</BluxProvider>
);Pass required arguments first, then core call-builder options, then TanStack Query options. The hook relies on this order to work correctly.
Parameters
base (required)
Asset
The base asset for the aggregation.
counter (required)
Asset
The counter asset for the aggregation.
start_time (required)
number
Unix timestamp in milliseconds for the start of the aggregation window.
end_time (required)
number
Unix timestamp in milliseconds for the end of the aggregation window.
resolution (required)
number
Bucket size in milliseconds for each aggregation point (e.g. 3600000 for 1 hour).
offset (required)
number
Offset in milliseconds added to the aggregation window start, used to align buckets. Pass 0 for no offset.
cursor
string | undefined
Pagination cursor for fetching the next or previous page.
limit
number | undefined
Number of records to return per page.
network
string | undefined
The network to query. Omit to use the active network.
order
'asc' | 'desc' | undefined
Sort order for the results.
Query Options
| Option | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Set to false to disable automatic fetching |
staleTime | number | Infinity | 0 | Time in ms before data is considered stale |
gcTime | number | Infinity | 300000 | Time in ms before inactive cache data is garbage collected |
retry | boolean | number | 3 | How many times to retry on failure |
retryDelay | number | function | — | Delay in ms between retry attempts |
refetchInterval | number | false | function | — | Continuously refetch at this interval in ms |
refetchOnMount | boolean | 'always' | true | Refetch on component mount if data is stale |
refetchOnWindowFocus | boolean | 'always' | true | Refetch when the window regains focus |
refetchOnReconnect | boolean | 'always' | true | Refetch when network reconnects |
refetchIntervalInBackground | boolean | — | Keep refetching even when tab is in background |
placeholderData | GetTradeAggregationResult | function | — | Placeholder data shown while query is pending (not persisted to cache) |
initialData | GetTradeAggregationResult | function | — | Initial data for the cache (persisted) |
initialDataUpdatedAt | number | function | — | Timestamp of when initialData was last updated |
select | function | — | Transform or select a subset of the returned data |
notifyOnChangeProps | string[] | 'all' | — | Limit re-renders to specific property changes |
structuralSharing | boolean | function | true | Retain references from old data for performance |
networkMode | 'online' | 'always' | 'offlineFirst' | 'online' | Controls when queries can run relative to network status |
meta | Record<string, unknown> | — | Attach arbitrary metadata to the query cache entry |
queryClient | QueryClient | — | Use a custom QueryClient instead of the nearest context one |
Return Type
data
GetTradeAggregationResult | undefined
type GetTradeAggregationResult = any;Status Booleans
| Property | Type | Description |
|---|---|---|
isPending | boolean | No cached data and no completed fetch yet |
isSuccess | boolean | Query resolved successfully |
isError | boolean | Query failed |
isLoading | boolean | First fetch in-flight (isFetching && isPending) |
isFetching | boolean | Query function is currently executing |
isRefetching | boolean | Background refetch in progress |
isFetched | boolean | Query has been fetched at least once |
isFetchedAfterMount | boolean | Query fetched after component mounted |
isStale | boolean | Cached data is stale or older than staleTime |
isPlaceholderData | boolean | Currently showing placeholder data |
isLoadingError | boolean | Failed on the first fetch |
isRefetchError | boolean | Failed during a background refetch |
isPaused | boolean | Query wanted to fetch but was paused |
Other Returns
| Property | Type | Description |
|---|---|---|
status | 'pending' | 'success' | 'error' | Current query status |
fetchStatus | 'fetching' | 'idle' | 'paused' | Current fetch status |
error | null | Error | Error object if the query failed |
dataUpdatedAt | number | Timestamp of last successful fetch |
errorUpdatedAt | number | Timestamp of last error |
errorUpdateCount | number | Total number of errors |
failureCount | number | Failures since last success |
failureReason | null | Error | Reason for last retry failure |
refetch | function | Manually trigger a refetch |