import type { PartnerFeeClaimAssetBalance } from '@sodax/sdk'; import { useQuery, type UseQueryResult } from '@tanstack/react-query'; import { useSodaxContext } from '../shared/useSodaxContext.js'; import type { ReadHookParams } from '../shared/types.js'; export type UseFetchAssetsBalancesParams = ReadHookParams< Map, { queryAddress: string | undefined; } >; /** * React hook to fetch hub-asset balances on Sonic for a given EVM address. Disabled when * `queryAddress` is missing. Throws on `!ok`. */ export function useFetchAssetsBalances({ params, queryOptions, }: UseFetchAssetsBalancesParams = {}): UseQueryResult, Error> { const { sodax } = useSodaxContext(); const queryAddress = params?.queryAddress; return useQuery, Error>({ queryKey: ['partner', 'feeClaim', 'assetsBalances', queryAddress], queryFn: async () => { if (!queryAddress) { throw new Error('queryAddress is required'); } const result = await sodax.partners.feeClaim.fetchAssetsBalances(queryAddress); if (!result.ok) throw result.error; return result.value; }, enabled: !!queryAddress, ...queryOptions, }); }