UNPKG

@reservoir0x/relay-kit-ui

Version:

Relay is the Fastest and Cheapest Way to Bridge and Transact Across Chains.

99 lines 4.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const viem_1 = require("viem"); const RelayKitProvider_js_1 = require("../providers/RelayKitProvider.js"); const react_1 = require("react"); const react_query_1 = require("@tanstack/react-query"); const solana_js_1 = require("../utils/solana.js"); exports.default = (address, evmChainIds = 'mainnet', queryOptions) => { const providerOptions = (0, react_1.useContext)(RelayKitProvider_js_1.ProviderOptionsContext); const queryKey = ['useDuneBalances', address]; const isEvmAddress = (0, viem_1.isAddress)(address ?? ''); const isSvmAddress = (0, solana_js_1.isSolanaAddress)(address ?? ''); const response = react_query_1.useQuery({ queryKey: ['useDuneBalances', address], queryFn: () => { let url = `${providerOptions.duneConfig?.apiBaseUrl ?? 'https://api.sim.dune.com'}/v1/evm/balances/${address?.toLowerCase()}?chain_ids=${evmChainIds}&exclude_spam_tokens=true`; if (isSvmAddress) { url = `${providerOptions.duneConfig?.apiBaseUrl ?? 'https://api.sim.dune.com'}/beta/svm/balances/${address}?chain_ids=all&exclude_spam_tokens=true`; } if (!isSvmAddress && !isEvmAddress) { return null; } return fetch(url, { headers: providerOptions.duneConfig?.apiKey ? { 'X-Sim-Api-Key': providerOptions.duneConfig?.apiKey } : {} }) .then((response) => response.json()) .then((response) => { if (response.balances) { const balances = response.balances; if (balances) { balances .filter((balance) => { try { BigInt(balance.amount); return true; } catch (e) { return false; } }) .sort((a, b) => { if (a.value_usd !== undefined && b.value_usd !== undefined) { return a.value_usd - b.value_usd; } else if (a.value_usd !== undefined) { return -1; } else if (b.value_usd !== undefined) { return 1; } else { const amountA = parseFloat((0, viem_1.formatUnits)(BigInt(a.amount), a.decimals)); const amountB = parseFloat((0, viem_1.formatUnits)(BigInt(b.amount), b.decimals)); return amountA - amountB; } }); } } return response; }); }, ...queryOptions, enabled: address !== undefined && providerOptions.duneConfig?.apiKey !== undefined && queryOptions?.enabled && (isSvmAddress || isEvmAddress) }); response?.data?.balances?.forEach((balance) => { if (!balance.chain_id && balance.chain === 'solana') { balance.chain_id = solana_js_1.solana.id; } if (!balance.chain_id && balance.chain === 'eclipse') { balance.chain_id = solana_js_1.eclipse.id; } }); const balanceMap = response?.data?.balances?.reduce((balanceMap, balance) => { if (balance.address === 'native') { balance.address = balance.chain === 'solana' || balance.chain === 'eclipse' ? '11111111111111111111111111111111' : viem_1.zeroAddress; } let chainId = balance.chain_id; if (!chainId && balance.chain === 'solana') { chainId = solana_js_1.solana.id; } if (!chainId && balance.chain === 'eclipse') { chainId = solana_js_1.eclipse.id; } balanceMap[`${chainId}:${balance.address}`] = balance; return balanceMap; }, {}); return { ...response, balanceMap, queryKey }; }; //# sourceMappingURL=useDuneBalances.js.map