@0xsequence/hooks 5.1.1 → 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +17 -24
  2. package/dist/cjs/constants.d.ts +1 -1
  3. package/dist/cjs/constants.js +1 -1
  4. package/dist/cjs/constants.js.map +1 -1
  5. package/dist/cjs/hooks/Combination/useGetSwapQuote.d.ts.map +1 -1
  6. package/dist/cjs/hooks/Combination/useGetSwapQuote.js +7 -1
  7. package/dist/cjs/hooks/Combination/useGetSwapQuote.js.map +1 -1
  8. package/dist/cjs/hooks/Indexer/useGetTransactionHistory.d.ts +30 -29
  9. package/dist/cjs/hooks/Indexer/useGetTransactionHistory.d.ts.map +1 -1
  10. package/dist/cjs/hooks/Indexer/useGetTransactionHistory.js +28 -13
  11. package/dist/cjs/hooks/Indexer/useGetTransactionHistory.js.map +1 -1
  12. package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.d.ts +2 -2
  13. package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.d.ts.map +1 -1
  14. package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.js +4 -4
  15. package/dist/cjs/hooks/Indexer/useGetTransactionHistorySummary.js.map +1 -1
  16. package/dist/cjs/hooks/IndexerGateway/useGetNativeTokenBalance.d.ts +30 -2
  17. package/dist/cjs/hooks/IndexerGateway/useGetNativeTokenBalance.d.ts.map +1 -1
  18. package/dist/cjs/hooks/IndexerGateway/useGetNativeTokenBalance.js +35 -7
  19. package/dist/cjs/hooks/IndexerGateway/useGetNativeTokenBalance.js.map +1 -1
  20. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalance.d.ts +49 -0
  21. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalance.d.ts.map +1 -0
  22. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalance.js +82 -0
  23. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalance.js.map +1 -0
  24. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesByContract.d.ts +58 -4
  25. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesByContract.d.ts.map +1 -1
  26. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesByContract.js +68 -16
  27. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesByContract.js.map +1 -1
  28. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesDetails.d.ts +95 -3
  29. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesDetails.d.ts.map +1 -1
  30. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesDetails.js +110 -16
  31. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesDetails.js.map +1 -1
  32. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesSummary.d.ts +70 -3
  33. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesSummary.d.ts.map +1 -1
  34. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesSummary.js +85 -16
  35. package/dist/cjs/hooks/IndexerGateway/useGetTokenBalancesSummary.js.map +1 -1
  36. package/dist/cjs/hooks/IndexerGateway/useIndexerGatewayClient.d.ts +26 -0
  37. package/dist/cjs/hooks/IndexerGateway/useIndexerGatewayClient.d.ts.map +1 -1
  38. package/dist/cjs/hooks/IndexerGateway/useIndexerGatewayClient.js +26 -0
  39. package/dist/cjs/hooks/IndexerGateway/useIndexerGatewayClient.js.map +1 -1
  40. package/dist/cjs/hooks/Metadata/useGetContractInfo.d.ts +1 -1
  41. package/dist/cjs/hooks/Metadata/useGetContractInfo.d.ts.map +1 -1
  42. package/dist/cjs/hooks/Metadata/useGetContractInfo.js +6 -6
  43. package/dist/cjs/hooks/Metadata/useGetContractInfo.js.map +1 -1
  44. package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.d.ts +1 -1
  45. package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.d.ts.map +1 -1
  46. package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.js +5 -5
  47. package/dist/cjs/hooks/Metadata/useGetMultipleContractsInfo.js.map +1 -1
  48. package/dist/cjs/hooks/Metadata/useGetTokenMetadata.d.ts +1 -1
  49. package/dist/cjs/hooks/Metadata/useGetTokenMetadata.d.ts.map +1 -1
  50. package/dist/cjs/hooks/Metadata/useGetTokenMetadata.js +4 -4
  51. package/dist/cjs/hooks/Metadata/useGetTokenMetadata.js.map +1 -1
  52. package/dist/cjs/hooks/useClearCachedBalances.d.ts.map +1 -1
  53. package/dist/cjs/hooks/useClearCachedBalances.js +1 -17
  54. package/dist/cjs/hooks/useClearCachedBalances.js.map +1 -1
  55. package/dist/cjs/index.d.ts +1 -1
  56. package/dist/cjs/index.d.ts.map +1 -1
  57. package/dist/cjs/index.js +3 -3
  58. package/dist/cjs/index.js.map +1 -1
  59. package/dist/cjs/tests/Indexer/useGetTransactionHistory.test.js +3 -3
  60. package/dist/cjs/tests/Indexer/useGetTransactionHistory.test.js.map +1 -1
  61. package/dist/cjs/tests/Indexer/useGetTransactionHistorySummary.test.js +1 -1
  62. package/dist/cjs/tests/Indexer/useGetTransactionHistorySummary.test.js.map +1 -1
  63. package/dist/cjs/tests/IndexerGateway/useGetSingleTokenBalanceSummary.test.js +5 -5
  64. package/dist/cjs/tests/IndexerGateway/useGetSingleTokenBalanceSummary.test.js.map +1 -1
  65. package/dist/cjs/tests/IndexerGateway/useGetTokenBalancesByContract.test.js +1 -1
  66. package/dist/cjs/tests/IndexerGateway/useGetTokenBalancesByContract.test.js.map +1 -1
  67. package/dist/cjs/tests/IndexerGateway/useGetTokenBalancesDetails.test.js +1 -1
  68. package/dist/cjs/tests/IndexerGateway/useGetTokenBalancesDetails.test.js.map +1 -1
  69. package/dist/cjs/tests/IndexerGateway/useGetTokenBalancesSummary.test.js +1 -1
  70. package/dist/cjs/tests/IndexerGateway/useGetTokenBalancesSummary.test.js.map +1 -1
  71. package/dist/cjs/tests/handlers.d.ts.map +1 -1
  72. package/dist/cjs/tests/handlers.js +20 -0
  73. package/dist/cjs/tests/handlers.js.map +1 -1
  74. package/dist/cjs/types/hooks.d.ts +0 -3
  75. package/dist/cjs/types/hooks.d.ts.map +1 -1
  76. package/dist/esm/constants.d.ts +1 -1
  77. package/dist/esm/constants.js +1 -1
  78. package/dist/esm/constants.js.map +1 -1
  79. package/dist/esm/hooks/Combination/useGetSwapQuote.d.ts.map +1 -1
  80. package/dist/esm/hooks/Combination/useGetSwapQuote.js +7 -1
  81. package/dist/esm/hooks/Combination/useGetSwapQuote.js.map +1 -1
  82. package/dist/esm/hooks/Indexer/useGetTransactionHistory.d.ts +30 -29
  83. package/dist/esm/hooks/Indexer/useGetTransactionHistory.d.ts.map +1 -1
  84. package/dist/esm/hooks/Indexer/useGetTransactionHistory.js +28 -13
  85. package/dist/esm/hooks/Indexer/useGetTransactionHistory.js.map +1 -1
  86. package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.d.ts +2 -2
  87. package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.d.ts.map +1 -1
  88. package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.js +4 -4
  89. package/dist/esm/hooks/Indexer/useGetTransactionHistorySummary.js.map +1 -1
  90. package/dist/esm/hooks/IndexerGateway/useGetNativeTokenBalance.d.ts +30 -2
  91. package/dist/esm/hooks/IndexerGateway/useGetNativeTokenBalance.d.ts.map +1 -1
  92. package/dist/esm/hooks/IndexerGateway/useGetNativeTokenBalance.js +35 -7
  93. package/dist/esm/hooks/IndexerGateway/useGetNativeTokenBalance.js.map +1 -1
  94. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalance.d.ts +49 -0
  95. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalance.d.ts.map +1 -0
  96. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalance.js +78 -0
  97. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalance.js.map +1 -0
  98. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesByContract.d.ts +58 -4
  99. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesByContract.d.ts.map +1 -1
  100. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesByContract.js +69 -17
  101. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesByContract.js.map +1 -1
  102. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesDetails.d.ts +95 -3
  103. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesDetails.d.ts.map +1 -1
  104. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesDetails.js +111 -17
  105. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesDetails.js.map +1 -1
  106. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesSummary.d.ts +70 -3
  107. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesSummary.d.ts.map +1 -1
  108. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesSummary.js +86 -17
  109. package/dist/esm/hooks/IndexerGateway/useGetTokenBalancesSummary.js.map +1 -1
  110. package/dist/esm/hooks/IndexerGateway/useIndexerGatewayClient.d.ts +26 -0
  111. package/dist/esm/hooks/IndexerGateway/useIndexerGatewayClient.d.ts.map +1 -1
  112. package/dist/esm/hooks/IndexerGateway/useIndexerGatewayClient.js +26 -0
  113. package/dist/esm/hooks/IndexerGateway/useIndexerGatewayClient.js.map +1 -1
  114. package/dist/esm/hooks/Metadata/useGetContractInfo.d.ts +1 -1
  115. package/dist/esm/hooks/Metadata/useGetContractInfo.d.ts.map +1 -1
  116. package/dist/esm/hooks/Metadata/useGetContractInfo.js +6 -6
  117. package/dist/esm/hooks/Metadata/useGetContractInfo.js.map +1 -1
  118. package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.d.ts +1 -1
  119. package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.d.ts.map +1 -1
  120. package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.js +5 -5
  121. package/dist/esm/hooks/Metadata/useGetMultipleContractsInfo.js.map +1 -1
  122. package/dist/esm/hooks/Metadata/useGetTokenMetadata.d.ts +1 -1
  123. package/dist/esm/hooks/Metadata/useGetTokenMetadata.d.ts.map +1 -1
  124. package/dist/esm/hooks/Metadata/useGetTokenMetadata.js +4 -4
  125. package/dist/esm/hooks/Metadata/useGetTokenMetadata.js.map +1 -1
  126. package/dist/esm/hooks/useClearCachedBalances.d.ts.map +1 -1
  127. package/dist/esm/hooks/useClearCachedBalances.js +1 -17
  128. package/dist/esm/hooks/useClearCachedBalances.js.map +1 -1
  129. package/dist/esm/index.d.ts +1 -1
  130. package/dist/esm/index.d.ts.map +1 -1
  131. package/dist/esm/index.js +1 -1
  132. package/dist/esm/index.js.map +1 -1
  133. package/dist/esm/tests/Indexer/useGetTransactionHistory.test.js +4 -4
  134. package/dist/esm/tests/Indexer/useGetTransactionHistory.test.js.map +1 -1
  135. package/dist/esm/tests/Indexer/useGetTransactionHistorySummary.test.js +1 -1
  136. package/dist/esm/tests/Indexer/useGetTransactionHistorySummary.test.js.map +1 -1
  137. package/dist/esm/tests/IndexerGateway/useGetSingleTokenBalanceSummary.test.js +5 -5
  138. package/dist/esm/tests/IndexerGateway/useGetSingleTokenBalanceSummary.test.js.map +1 -1
  139. package/dist/esm/tests/IndexerGateway/useGetTokenBalancesByContract.test.js +1 -1
  140. package/dist/esm/tests/IndexerGateway/useGetTokenBalancesByContract.test.js.map +1 -1
  141. package/dist/esm/tests/IndexerGateway/useGetTokenBalancesDetails.test.js +1 -1
  142. package/dist/esm/tests/IndexerGateway/useGetTokenBalancesDetails.test.js.map +1 -1
  143. package/dist/esm/tests/IndexerGateway/useGetTokenBalancesSummary.test.js +1 -1
  144. package/dist/esm/tests/IndexerGateway/useGetTokenBalancesSummary.test.js.map +1 -1
  145. package/dist/esm/tests/handlers.d.ts.map +1 -1
  146. package/dist/esm/tests/handlers.js +20 -0
  147. package/dist/esm/tests/handlers.js.map +1 -1
  148. package/dist/esm/types/hooks.d.ts +0 -3
  149. package/dist/esm/types/hooks.d.ts.map +1 -1
  150. package/package.json +11 -11
  151. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.d.ts +0 -11
  152. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.d.ts.map +0 -1
  153. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.js +0 -46
  154. package/dist/cjs/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.js.map +0 -1
  155. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.d.ts +0 -11
  156. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.d.ts.map +0 -1
  157. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.js +0 -42
  158. package/dist/esm/hooks/IndexerGateway/useGetSingleTokenBalanceSummary.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useGetSingleTokenBalance = void 0;
4
+ const react_query_1 = require("@tanstack/react-query");
5
+ const constants_1 = require("../../constants");
6
+ const helpers_1 = require("../../utils/helpers");
7
+ const useIndexerGatewayClient_1 = require("./useIndexerGatewayClient");
8
+ const getSingleTokenBalance = async (args, indexerGatewayClient) => {
9
+ const balance = await indexerGatewayClient.getTokenBalancesDetails({
10
+ chainIds: [args.chainId],
11
+ filter: {
12
+ accountAddresses: [args.accountAddress],
13
+ contractWhitelist: [args.contractAddress],
14
+ omitNativeBalances: false
15
+ }
16
+ });
17
+ if ((0, helpers_1.compareAddress)(args.contractAddress, constants_1.ZERO_ADDRESS)) {
18
+ return (0, helpers_1.createNativeTokenBalance)(args.chainId, args.accountAddress, balance.nativeBalances[0].results[0].balance);
19
+ }
20
+ else {
21
+ if (args.tokenId) {
22
+ return balance.balances[0].results.find(result => result.tokenID === args.tokenId);
23
+ }
24
+ else {
25
+ return balance.balances[0].results[0];
26
+ }
27
+ }
28
+ };
29
+ /**
30
+ * Hook to fetch the balance of a specific token (native or ERC20) for an account on a specific chain.
31
+ * For native tokens, use ZERO_ADDRESS (0x0000...0000) as the contractAddress.
32
+ *
33
+ * @param args - Arguments for fetching the token balance
34
+ * @param args.chainId - The chain ID to fetch the balance from
35
+ * @param args.accountAddress - The address to fetch the balance for
36
+ * @param args.contractAddress - The token contract address (use ZERO_ADDRESS for native tokens)
37
+ * @param options - Optional configuration for the query behavior
38
+ * @param options.hideCollectibles - If true, filters out ERC721 and ERC1155 tokens
39
+ *
40
+ * @returns Query result containing the token balance
41
+ *
42
+ * @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetSingleTokenBalanceSummary} for more detailed documentation.
43
+ *
44
+ * @example
45
+ * ```tsx
46
+ * import { useGetSingleTokenBalanceSummary, ZERO_ADDRESS } from '@0xsequence/hooks'
47
+ *
48
+ * // Fetch native ETH balance
49
+ * function NativeBalance() {
50
+ * const { data: ethBalance } = useGetSingleTokenBalanceSummary({
51
+ * chainId: 1,
52
+ * accountAddress: '0x123...',
53
+ * contractAddress: ZERO_ADDRESS
54
+ * })
55
+ * return <div>ETH Balance: {ethBalance?.balance}</div>
56
+ * }
57
+ *
58
+ * // Fetch USDC balance
59
+ * function TokenBalance() {
60
+ * const { data: usdcBalance } = useGetSingleTokenBalanceSummary({
61
+ * chainId: 1,
62
+ * accountAddress: '0x123...',
63
+ * contractAddress: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' // USDC
64
+ * })
65
+ * return <div>USDC Balance: {usdcBalance?.balance}</div>
66
+ * }
67
+ * ```
68
+ */
69
+ const useGetSingleTokenBalance = (args, options) => {
70
+ const indexerGatewayClient = (0, useIndexerGatewayClient_1.useIndexerGatewayClient)();
71
+ return (0, react_query_1.useQuery)({
72
+ queryKey: [constants_1.QUERY_KEYS.useGetSingleTokenBalance, args, options],
73
+ queryFn: async () => {
74
+ return await getSingleTokenBalance(args, indexerGatewayClient);
75
+ },
76
+ retry: options?.retry ?? true,
77
+ staleTime: constants_1.time.oneSecond * 30,
78
+ enabled: !!args.chainId && !!args.accountAddress && !options?.disabled
79
+ });
80
+ };
81
+ exports.useGetSingleTokenBalance = useGetSingleTokenBalance;
82
+ //# sourceMappingURL=useGetSingleTokenBalance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGetSingleTokenBalance.js","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetSingleTokenBalance.ts"],"names":[],"mappings":";;;AACA,uDAAgD;AAEhD,+CAAgE;AAEhE,iDAA8E;AAE9E,uEAAmE;AASnE,MAAM,qBAAqB,GAAG,KAAK,EAAE,IAA+B,EAAE,oBAA4C,EAAE,EAAE;IACpH,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,CAAC;QACjE,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,MAAM,EAAE;YACN,gBAAgB,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;YACvC,iBAAiB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;YACzC,kBAAkB,EAAE,KAAK;SAC1B;KACF,CAAC,CAAA;IAEF,IAAI,IAAA,wBAAc,EAAC,IAAI,CAAC,eAAe,EAAE,wBAAY,CAAC,EAAE,CAAC;QACvD,OAAO,IAAA,kCAAwB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAClH,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA;QACpF,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACI,MAAM,wBAAwB,GAAG,CAAC,IAA+B,EAAE,OAAsB,EAAE,EAAE;IAClG,MAAM,oBAAoB,GAAG,IAAA,iDAAuB,GAAE,CAAA;IAEtD,OAAO,IAAA,sBAAQ,EAAC;QACd,QAAQ,EAAE,CAAC,sBAAU,CAAC,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC;QAC9D,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;QAChE,CAAC;QACD,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,gBAAI,CAAC,SAAS,GAAG,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,EAAE,QAAQ;KACvE,CAAC,CAAA;AACJ,CAAC,CAAA;AAZY,QAAA,wBAAwB,4BAYpC"}
@@ -1,7 +1,61 @@
1
- import { IndexerGateway, TokenBalance } from '@0xsequence/indexer';
2
- import { BalanceHookOptions } from '../../types';
1
+ import { IndexerGateway } from '@0xsequence/indexer';
2
+ import { HooksOptions } from '../../types';
3
3
  /**
4
- * @description Gets the token balances for a given list of contractAddresses
4
+ * Hook to fetch token balances by contract address.
5
+ * Can be used to fetch multiple token balances in a single request.
6
+ *
7
+ * @param getTokenBalancesByContractArgs - Arguments for fetching token balances
8
+ * @param getTokenBalancesByContractArgs.chainIds - Array of chain IDs to fetch balances from
9
+ * @param getTokenBalancesByContractArgs.filter - Filter criteria for the query
10
+ * @param getTokenBalancesByContractArgs.filter.contractAddresses - List of token contract addresses to fetch balances for
11
+ * @param getTokenBalancesByContractArgs.filter.accountAddresses - Optional list of account addresses to fetch balances for
12
+ * @param getTokenBalancesByContractArgs.filter.contractStatus - Optional filter for contract verification status
13
+ * @param options - Optional configuration for the query behavior
14
+ * @param options.hideCollectibles - If true, filters out ERC721 and ERC1155 tokens from the results
15
+ * @param options.disabled - If true, disables the query from automatically running
16
+ * @param options.retry - If true, retries failed queries
17
+ *
18
+ * @returns Query result containing an array of TokenBalance objects with the following properties:
19
+ * - `contractType`: Type of the token contract (ERC20, ERC721, ERC1155)
20
+ * - `contractAddress`: Address of the token contract
21
+ * - `accountAddress`: Address of the account holding the tokens
22
+ * - `tokenID`: (for ERC721/ERC1155) ID of the token
23
+ * - `balance`: Token balance as a string
24
+ * - `blockHash`: Hash of the block where this balance was last updated
25
+ * - `blockNumber`: Block number where this balance was last updated
26
+ * - `chainId`: Chain ID where the token exists
27
+ * - `contractInfo`: (optional) Additional token contract information including:
28
+ * - `name`: Token name
29
+ * - `symbol`: Token symbol
30
+ * - `decimals`: Number of decimals (for ERC20)
31
+ * - `logoURI`: URL of the token logo
32
+ *
33
+ * @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetTokenBalancesByContract} for more detailed documentation.
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * function TokenBalances() {
38
+ * const { data: balances } = useGetTokenBalancesByContract({
39
+ * chainIds: [1], // Ethereum mainnet
40
+ * filter: {
41
+ * contractAddresses: [
42
+ * '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
43
+ * '0xdac17f958d2ee523a2206206994597c13d831ec7' // USDT
44
+ * ],
45
+ * accountAddresses: ['0x123...']
46
+ * }
47
+ * })
48
+ *
49
+ * return balances?.map(balance => (
50
+ * <div key={balance.contractAddress}>
51
+ * {balance.contractInfo?.symbol}: {balance.balance}
52
+ * </div>
53
+ * ))
54
+ * }
55
+ * ```
5
56
  */
6
- export declare const useGetTokenBalancesByContract: (getTokenBalancesByContractArgs: IndexerGateway.GetTokenBalancesByContractArgs, options?: BalanceHookOptions) => import("@tanstack/react-query").UseQueryResult<TokenBalance[], Error>;
57
+ export declare const useGetTokenBalancesByContract: (args: IndexerGateway.GetTokenBalancesByContractArgs, options?: HooksOptions) => import("@tanstack/react-query").UseInfiniteQueryResult<import("@tanstack/react-query").InfiniteData<{
58
+ balances: IndexerGateway.TokenBalance[];
59
+ page: IndexerGateway.Page;
60
+ }, unknown>, Error>;
7
61
  //# sourceMappingURL=useGetTokenBalancesByContract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetTokenBalancesByContract.d.ts","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAA0B,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAsBhD;;GAEG;AACH,eAAO,MAAM,6BAA6B,GACxC,gCAAgC,cAAc,CAAC,8BAA8B,EAC7E,UAAU,kBAAkB,0EAiB7B,CAAA"}
1
+ {"version":3,"file":"useGetTokenBalancesByContract.d.ts","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,MAAM,qBAAqB,CAAA;AAIlF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAgB1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,eAAO,MAAM,6BAA6B,GAAI,MAAM,cAAc,CAAC,8BAA8B,EAAE,UAAU,YAAY;;;mBAgBxH,CAAA"}
@@ -1,32 +1,84 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useGetTokenBalancesByContract = void 0;
4
- const indexer_1 = require("@0xsequence/indexer");
5
4
  const react_query_1 = require("@tanstack/react-query");
6
5
  const constants_1 = require("../../constants");
7
6
  const useIndexerGatewayClient_1 = require("./useIndexerGatewayClient");
8
- const getTokenBalancesByContract = async (indexerGatewayClient, getTokenBalancesByContractArgs, hideCollectibles) => {
9
- const res = await indexerGatewayClient.getTokenBalancesByContract(getTokenBalancesByContractArgs);
10
- if (hideCollectibles) {
11
- for (const chainBalance of res.balances) {
12
- chainBalance.results = chainBalance.results.filter(result => result.contractType !== indexer_1.ContractType.ERC721 && result.contractType !== indexer_1.ContractType.ERC1155);
13
- }
14
- }
15
- return res.balances.flatMap(balance => balance.results);
7
+ const getTokenBalancesByContract = async (indexerGatewayClient, args) => {
8
+ const res = await indexerGatewayClient.getTokenBalancesByContract(args);
9
+ return {
10
+ balances: res.balances.flatMap(balance => balance.results),
11
+ page: res.page
12
+ };
16
13
  };
17
14
  /**
18
- * @description Gets the token balances for a given list of contractAddresses
15
+ * Hook to fetch token balances by contract address.
16
+ * Can be used to fetch multiple token balances in a single request.
17
+ *
18
+ * @param getTokenBalancesByContractArgs - Arguments for fetching token balances
19
+ * @param getTokenBalancesByContractArgs.chainIds - Array of chain IDs to fetch balances from
20
+ * @param getTokenBalancesByContractArgs.filter - Filter criteria for the query
21
+ * @param getTokenBalancesByContractArgs.filter.contractAddresses - List of token contract addresses to fetch balances for
22
+ * @param getTokenBalancesByContractArgs.filter.accountAddresses - Optional list of account addresses to fetch balances for
23
+ * @param getTokenBalancesByContractArgs.filter.contractStatus - Optional filter for contract verification status
24
+ * @param options - Optional configuration for the query behavior
25
+ * @param options.hideCollectibles - If true, filters out ERC721 and ERC1155 tokens from the results
26
+ * @param options.disabled - If true, disables the query from automatically running
27
+ * @param options.retry - If true, retries failed queries
28
+ *
29
+ * @returns Query result containing an array of TokenBalance objects with the following properties:
30
+ * - `contractType`: Type of the token contract (ERC20, ERC721, ERC1155)
31
+ * - `contractAddress`: Address of the token contract
32
+ * - `accountAddress`: Address of the account holding the tokens
33
+ * - `tokenID`: (for ERC721/ERC1155) ID of the token
34
+ * - `balance`: Token balance as a string
35
+ * - `blockHash`: Hash of the block where this balance was last updated
36
+ * - `blockNumber`: Block number where this balance was last updated
37
+ * - `chainId`: Chain ID where the token exists
38
+ * - `contractInfo`: (optional) Additional token contract information including:
39
+ * - `name`: Token name
40
+ * - `symbol`: Token symbol
41
+ * - `decimals`: Number of decimals (for ERC20)
42
+ * - `logoURI`: URL of the token logo
43
+ *
44
+ * @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetTokenBalancesByContract} for more detailed documentation.
45
+ *
46
+ * @example
47
+ * ```tsx
48
+ * function TokenBalances() {
49
+ * const { data: balances } = useGetTokenBalancesByContract({
50
+ * chainIds: [1], // Ethereum mainnet
51
+ * filter: {
52
+ * contractAddresses: [
53
+ * '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
54
+ * '0xdac17f958d2ee523a2206206994597c13d831ec7' // USDT
55
+ * ],
56
+ * accountAddresses: ['0x123...']
57
+ * }
58
+ * })
59
+ *
60
+ * return balances?.map(balance => (
61
+ * <div key={balance.contractAddress}>
62
+ * {balance.contractInfo?.symbol}: {balance.balance}
63
+ * </div>
64
+ * ))
65
+ * }
66
+ * ```
19
67
  */
20
- const useGetTokenBalancesByContract = (getTokenBalancesByContractArgs, options) => {
68
+ const useGetTokenBalancesByContract = (args, options) => {
21
69
  const indexerGatewayClient = (0, useIndexerGatewayClient_1.useIndexerGatewayClient)();
22
- return (0, react_query_1.useQuery)({
23
- queryKey: [constants_1.QUERY_KEYS.useGetTokenBalancesByContract, getTokenBalancesByContractArgs, options],
24
- queryFn: async () => {
25
- return await getTokenBalancesByContract(indexerGatewayClient, getTokenBalancesByContractArgs, options?.hideCollectibles ?? false);
70
+ return (0, react_query_1.useInfiniteQuery)({
71
+ queryKey: [constants_1.QUERY_KEYS.useGetTokenBalancesByContract, args, options],
72
+ queryFn: ({ pageParam }) => {
73
+ return getTokenBalancesByContract(indexerGatewayClient, { ...args, page: pageParam });
26
74
  },
75
+ getNextPageParam: ({ page }) => {
76
+ return page?.more ? page : undefined;
77
+ },
78
+ initialPageParam: { pageSize: args.page?.pageSize },
27
79
  retry: options?.retry ?? true,
28
80
  staleTime: constants_1.time.oneSecond * 30,
29
- enabled: !!getTokenBalancesByContractArgs.filter.accountAddresses?.[0] && !options?.disabled
81
+ enabled: args.filter.contractAddresses.length > 0 && !options?.disabled
30
82
  });
31
83
  };
32
84
  exports.useGetTokenBalancesByContract = useGetTokenBalancesByContract;
@@ -1 +1 @@
1
- {"version":3,"file":"useGetTokenBalancesByContract.js","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts"],"names":[],"mappings":";;;AAAA,iDAAwG;AACxG,uDAAgD;AAEhD,+CAAkD;AAGlD,uEAAmE;AAEnE,MAAM,0BAA0B,GAAG,KAAK,EACtC,oBAA4C,EAC5C,8BAA6E,EAC7E,gBAAyB,EACA,EAAE;IAC3B,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,0BAA0B,CAAC,8BAA8B,CAAC,CAAA;IAEjG,IAAI,gBAAgB,EAAE,CAAC;QACrB,KAAK,MAAM,YAAY,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxC,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAChD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,sBAAY,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,sBAAY,CAAC,OAAO,CACtG,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACzD,CAAC,CAAA;AAED;;GAEG;AACI,MAAM,6BAA6B,GAAG,CAC3C,8BAA6E,EAC7E,OAA4B,EAC5B,EAAE;IACF,MAAM,oBAAoB,GAAG,IAAA,iDAAuB,GAAE,CAAA;IAEtD,OAAO,IAAA,sBAAQ,EAAC;QACd,QAAQ,EAAE,CAAC,sBAAU,CAAC,6BAA6B,EAAE,8BAA8B,EAAE,OAAO,CAAC;QAC7F,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,0BAA0B,CACrC,oBAAoB,EACpB,8BAA8B,EAC9B,OAAO,EAAE,gBAAgB,IAAI,KAAK,CACnC,CAAA;QACH,CAAC;QACD,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,gBAAI,CAAC,SAAS,GAAG,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,8BAA8B,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ;KAC7F,CAAC,CAAA;AACJ,CAAC,CAAA;AAnBY,QAAA,6BAA6B,iCAmBzC"}
1
+ {"version":3,"file":"useGetTokenBalancesByContract.js","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesByContract.ts"],"names":[],"mappings":";;;AACA,uDAAwD;AAExD,+CAAkD;AAGlD,uEAAmE;AAEnE,MAAM,0BAA0B,GAAG,KAAK,EACtC,oBAA4C,EAC5C,IAAmD,EACnD,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;IAEvE,OAAO;QACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAC1D,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAA;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACI,MAAM,6BAA6B,GAAG,CAAC,IAAmD,EAAE,OAAsB,EAAE,EAAE;IAC3H,MAAM,oBAAoB,GAAG,IAAA,iDAAuB,GAAE,CAAA;IAEtD,OAAO,IAAA,8BAAgB,EAAC;QACtB,QAAQ,EAAE,CAAC,sBAAU,CAAC,6BAA6B,EAAE,IAAI,EAAE,OAAO,CAAC;QACnE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACzB,OAAO,0BAA0B,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACvF,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7B,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QACtC,CAAC;QACD,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAU;QAC3D,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,gBAAI,CAAC,SAAS,GAAG,EAAE;QAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ;KACxE,CAAC,CAAA;AACJ,CAAC,CAAA;AAhBY,QAAA,6BAA6B,iCAgBzC"}
@@ -1,7 +1,99 @@
1
1
  import { IndexerGateway, TokenBalance } from '@0xsequence/indexer';
2
- import { BalanceHookOptions } from '../../types';
2
+ import { HooksOptions } from '../../types';
3
3
  /**
4
- * @description Gets token balances, with individual token details
4
+ * Hook to fetch detailed token balances including individual token metadata.
5
+ *
6
+ * Key differences from other balance hooks:
7
+ * - useGetTokenBalancesSummary: Returns basic token info, faster but less detailed
8
+ * - useGetTokenBalancesByContract: Only fetches specific contracts
9
+ * - useGetSingleTokenBalanceSummary: Fetches a single token balance
10
+ *
11
+ * This hook is best used when you need full token details, especially for NFTs and collectibles
12
+ * where metadata is important (images, attributes, etc).
13
+ * Results are sorted by type: native tokens first, then ERC20s, then collectibles.
14
+ *
15
+ * @param getTokenBalancesDetailsArgs - Arguments for fetching token balances
16
+ * @param getTokenBalancesDetailsArgs.chainIds - Array of chain IDs to fetch balances from
17
+ * @param getTokenBalancesDetailsArgs.filter - Filter criteria for the query
18
+ * @param getTokenBalancesDetailsArgs.filter.accountAddresses - List of account addresses to fetch balances for
19
+ * @param getTokenBalancesDetailsArgs.filter.contractWhitelist - Optional list of contracts to include
20
+ * @param getTokenBalancesDetailsArgs.filter.contractBlacklist - Optional list of contracts to exclude
21
+ * @param getTokenBalancesDetailsArgs.filter.omitNativeBalances - If true, excludes native token balances
22
+ * @param getTokenBalancesDetailsArgs.filter.contractStatus - Optional filter for contract verification status
23
+ * @param options - Optional configuration for the query behavior
24
+ * @param options.hideCollectibles - If true, filters out ERC721 and ERC1155 tokens
25
+ * @param options.disabled - If true, disables the query from automatically running
26
+ * @param options.retry - If true (default), retries failed queries
27
+ *
28
+ * Query configuration:
29
+ * - Marks data as stale after 30 seconds
30
+ * - Retries failed requests by default
31
+ * - Only enabled when account address is present and not explicitly disabled
32
+ *
33
+ * @returns Query result containing an array of TokenBalance objects with detailed information:
34
+ * - `contractType`: Type of the token contract (NATIVE, ERC20, ERC721, ERC1155)
35
+ * - `contractAddress`: Address of the token contract
36
+ * - `accountAddress`: Address of the account holding the tokens
37
+ * - `tokenID`: (for NFTs) ID of the token
38
+ * - `balance`: Token balance as a string
39
+ * - `blockHash`: Hash of the block where this balance was last updated
40
+ * - `blockNumber`: Block number where this balance was last updated
41
+ * - `chainId`: Chain ID where the token exists
42
+ * - `contractInfo`: Additional token contract information including:
43
+ * - `name`: Token name
44
+ * - `symbol`: Token symbol
45
+ * - `decimals`: Number of decimals
46
+ * - `logoURI`: URL of the token logo
47
+ * - `tokenMetadata`: (for NFTs) Detailed token metadata including:
48
+ * - `name`: Token name
49
+ * - `description`: Token description
50
+ * - `image`: Token image URL
51
+ * - `attributes`: Array of token attributes
52
+ *
53
+ * @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetTokenBalancesDetails} for more detailed documentation.
54
+ *
55
+ * @example
56
+ * ```tsx
57
+ * import { useGetTokenBalancesDetails } from '@0xsequence/hooks'
58
+ *
59
+ * // Fetch all token balances with full details
60
+ * function TokenList() {
61
+ * const { data: tokens } = useGetTokenBalancesDetails({
62
+ * chainIds: [1], // Ethereum mainnet
63
+ * filter: {
64
+ * accountAddresses: ['0x123...'],
65
+ * omitNativeBalances: false,
66
+ * // Optional: only include specific tokens
67
+ * contractWhitelist: ['0x...', '0x...'],
68
+ * // Optional: exclude specific tokens
69
+ * contractBlacklist: ['0x...']
70
+ * }
71
+ * })
72
+ *
73
+ * return tokens?.map(token => (
74
+ * <div key={`${token.chainId}-${token.contractAddress}-${token.tokenID}`}>
75
+ * {token.contractType === 'ERC721' ? (
76
+ * // NFT display with metadata
77
+ * <NFTCard
78
+ * name={token.tokenMetadata?.name}
79
+ * image={token.tokenMetadata?.image}
80
+ * attributes={token.tokenMetadata?.attributes}
81
+ * />
82
+ * ) : (
83
+ * // Regular token display
84
+ * <TokenRow
85
+ * symbol={token.contractInfo?.symbol}
86
+ * balance={token.balance}
87
+ * decimals={token.contractInfo?.decimals}
88
+ * />
89
+ * )}
90
+ * </div>
91
+ * ))
92
+ * }
93
+ * ```
5
94
  */
6
- export declare const useGetTokenBalancesDetails: (getTokenBalancesDetailsArgs: IndexerGateway.GetTokenBalancesDetailsArgs, options?: BalanceHookOptions) => import("@tanstack/react-query").UseQueryResult<TokenBalance[], Error>;
95
+ export declare const useGetTokenBalancesDetails: (args: IndexerGateway.GetTokenBalancesDetailsArgs, options?: HooksOptions) => import("@tanstack/react-query").UseInfiniteQueryResult<import("@tanstack/react-query").InfiniteData<{
96
+ balances: TokenBalance[];
97
+ page: IndexerGateway.Page;
98
+ }, unknown>, Error>;
7
99
  //# sourceMappingURL=useGetTokenBalancesDetails.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetTokenBalancesDetails.d.ts","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAA0B,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAqChD;;GAEG;AACH,eAAO,MAAM,0BAA0B,GACrC,6BAA6B,cAAc,CAAC,2BAA2B,EACvE,UAAU,kBAAkB,0EAa7B,CAAA"}
1
+ {"version":3,"file":"useGetTokenBalancesDetails.d.ts","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIhG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAmC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM,cAAc,CAAC,2BAA2B,EAAE,UAAU,YAAY;;;mBAgBlH,CAAA"}
@@ -1,41 +1,135 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useGetTokenBalancesDetails = void 0;
4
- const indexer_1 = require("@0xsequence/indexer");
5
4
  const react_query_1 = require("@tanstack/react-query");
6
5
  const constants_1 = require("../../constants");
7
6
  const helpers_1 = require("../../utils/helpers");
8
7
  const useIndexerGatewayClient_1 = require("./useIndexerGatewayClient");
9
- const getTokenBalancesDetails = async (getTokenBalancesDetailsArgs, indexerGatewayClient, hideCollectibles) => {
8
+ const getTokenBalancesDetails = async (indexerGatewayClient, args) => {
10
9
  try {
11
- const res = await indexerGatewayClient.getTokenBalancesDetails(getTokenBalancesDetailsArgs);
12
- if (hideCollectibles) {
13
- for (const chainBalance of res.balances) {
14
- chainBalance.results = chainBalance.results.filter(result => result.contractType !== indexer_1.ContractType.ERC721 && result.contractType !== indexer_1.ContractType.ERC1155);
15
- }
16
- }
10
+ const res = await indexerGatewayClient.getTokenBalancesDetails(args);
17
11
  const nativeTokens = res.nativeBalances.flatMap(nativeChainBalance => nativeChainBalance.results.map(nativeTokenBalance => (0, helpers_1.createNativeTokenBalance)(nativeChainBalance.chainId, nativeTokenBalance.accountAddress, nativeTokenBalance.balance)));
18
12
  const tokens = res.balances.flatMap(chainBalance => chainBalance.results);
19
13
  const sortedBalances = (0, helpers_1.sortBalancesByType)([...nativeTokens, ...tokens]);
20
- return [...sortedBalances.nativeTokens, ...sortedBalances.erc20Tokens, ...sortedBalances.collectibles];
14
+ return {
15
+ balances: [
16
+ ...(res.page.after ? [] : [...sortedBalances.nativeTokens]),
17
+ ...sortedBalances.erc20Tokens,
18
+ ...sortedBalances.collectibles
19
+ ],
20
+ page: res.page
21
+ };
21
22
  }
22
23
  catch (e) {
23
24
  throw e;
24
25
  }
25
26
  };
26
27
  /**
27
- * @description Gets token balances, with individual token details
28
+ * Hook to fetch detailed token balances including individual token metadata.
29
+ *
30
+ * Key differences from other balance hooks:
31
+ * - useGetTokenBalancesSummary: Returns basic token info, faster but less detailed
32
+ * - useGetTokenBalancesByContract: Only fetches specific contracts
33
+ * - useGetSingleTokenBalanceSummary: Fetches a single token balance
34
+ *
35
+ * This hook is best used when you need full token details, especially for NFTs and collectibles
36
+ * where metadata is important (images, attributes, etc).
37
+ * Results are sorted by type: native tokens first, then ERC20s, then collectibles.
38
+ *
39
+ * @param getTokenBalancesDetailsArgs - Arguments for fetching token balances
40
+ * @param getTokenBalancesDetailsArgs.chainIds - Array of chain IDs to fetch balances from
41
+ * @param getTokenBalancesDetailsArgs.filter - Filter criteria for the query
42
+ * @param getTokenBalancesDetailsArgs.filter.accountAddresses - List of account addresses to fetch balances for
43
+ * @param getTokenBalancesDetailsArgs.filter.contractWhitelist - Optional list of contracts to include
44
+ * @param getTokenBalancesDetailsArgs.filter.contractBlacklist - Optional list of contracts to exclude
45
+ * @param getTokenBalancesDetailsArgs.filter.omitNativeBalances - If true, excludes native token balances
46
+ * @param getTokenBalancesDetailsArgs.filter.contractStatus - Optional filter for contract verification status
47
+ * @param options - Optional configuration for the query behavior
48
+ * @param options.hideCollectibles - If true, filters out ERC721 and ERC1155 tokens
49
+ * @param options.disabled - If true, disables the query from automatically running
50
+ * @param options.retry - If true (default), retries failed queries
51
+ *
52
+ * Query configuration:
53
+ * - Marks data as stale after 30 seconds
54
+ * - Retries failed requests by default
55
+ * - Only enabled when account address is present and not explicitly disabled
56
+ *
57
+ * @returns Query result containing an array of TokenBalance objects with detailed information:
58
+ * - `contractType`: Type of the token contract (NATIVE, ERC20, ERC721, ERC1155)
59
+ * - `contractAddress`: Address of the token contract
60
+ * - `accountAddress`: Address of the account holding the tokens
61
+ * - `tokenID`: (for NFTs) ID of the token
62
+ * - `balance`: Token balance as a string
63
+ * - `blockHash`: Hash of the block where this balance was last updated
64
+ * - `blockNumber`: Block number where this balance was last updated
65
+ * - `chainId`: Chain ID where the token exists
66
+ * - `contractInfo`: Additional token contract information including:
67
+ * - `name`: Token name
68
+ * - `symbol`: Token symbol
69
+ * - `decimals`: Number of decimals
70
+ * - `logoURI`: URL of the token logo
71
+ * - `tokenMetadata`: (for NFTs) Detailed token metadata including:
72
+ * - `name`: Token name
73
+ * - `description`: Token description
74
+ * - `image`: Token image URL
75
+ * - `attributes`: Array of token attributes
76
+ *
77
+ * @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetTokenBalancesDetails} for more detailed documentation.
78
+ *
79
+ * @example
80
+ * ```tsx
81
+ * import { useGetTokenBalancesDetails } from '@0xsequence/hooks'
82
+ *
83
+ * // Fetch all token balances with full details
84
+ * function TokenList() {
85
+ * const { data: tokens } = useGetTokenBalancesDetails({
86
+ * chainIds: [1], // Ethereum mainnet
87
+ * filter: {
88
+ * accountAddresses: ['0x123...'],
89
+ * omitNativeBalances: false,
90
+ * // Optional: only include specific tokens
91
+ * contractWhitelist: ['0x...', '0x...'],
92
+ * // Optional: exclude specific tokens
93
+ * contractBlacklist: ['0x...']
94
+ * }
95
+ * })
96
+ *
97
+ * return tokens?.map(token => (
98
+ * <div key={`${token.chainId}-${token.contractAddress}-${token.tokenID}`}>
99
+ * {token.contractType === 'ERC721' ? (
100
+ * // NFT display with metadata
101
+ * <NFTCard
102
+ * name={token.tokenMetadata?.name}
103
+ * image={token.tokenMetadata?.image}
104
+ * attributes={token.tokenMetadata?.attributes}
105
+ * />
106
+ * ) : (
107
+ * // Regular token display
108
+ * <TokenRow
109
+ * symbol={token.contractInfo?.symbol}
110
+ * balance={token.balance}
111
+ * decimals={token.contractInfo?.decimals}
112
+ * />
113
+ * )}
114
+ * </div>
115
+ * ))
116
+ * }
117
+ * ```
28
118
  */
29
- const useGetTokenBalancesDetails = (getTokenBalancesDetailsArgs, options) => {
119
+ const useGetTokenBalancesDetails = (args, options) => {
30
120
  const indexerGatewayClient = (0, useIndexerGatewayClient_1.useIndexerGatewayClient)();
31
- return (0, react_query_1.useQuery)({
32
- queryKey: [constants_1.QUERY_KEYS.useGetTokenBalancesDetails, getTokenBalancesDetailsArgs, options],
33
- queryFn: async () => {
34
- return await getTokenBalancesDetails(getTokenBalancesDetailsArgs, indexerGatewayClient, options?.hideCollectibles ?? false);
121
+ return (0, react_query_1.useInfiniteQuery)({
122
+ queryKey: [constants_1.QUERY_KEYS.useGetTokenBalancesDetails, args, options],
123
+ queryFn: ({ pageParam }) => {
124
+ return getTokenBalancesDetails(indexerGatewayClient, { ...args, page: pageParam });
35
125
  },
126
+ getNextPageParam: ({ page }) => {
127
+ return page?.more ? page : undefined;
128
+ },
129
+ initialPageParam: { pageSize: args.page?.pageSize },
36
130
  retry: options?.retry ?? true,
37
131
  staleTime: constants_1.time.oneSecond * 30,
38
- enabled: !!getTokenBalancesDetailsArgs.filter.accountAddresses[0] && !options?.disabled
132
+ enabled: args.filter.accountAddresses.length > 0 && !options?.disabled
39
133
  });
40
134
  };
41
135
  exports.useGetTokenBalancesDetails = useGetTokenBalancesDetails;
@@ -1 +1 @@
1
- {"version":3,"file":"useGetTokenBalancesDetails.js","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts"],"names":[],"mappings":";;;AAAA,iDAAwG;AACxG,uDAAgD;AAEhD,+CAAkD;AAElD,iDAAkF;AAElF,uEAAmE;AAEnE,MAAM,uBAAuB,GAAG,KAAK,EACnC,2BAAuE,EACvE,oBAA4C,EAC5C,gBAAyB,EACA,EAAE;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,CAAA;QAE3F,IAAI,gBAAgB,EAAE,CAAC;YACrB,KAAK,MAAM,YAAY,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACxC,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAChD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,sBAAY,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,KAAK,sBAAY,CAAC,OAAO,CACtG,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAmB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CACnF,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAClD,IAAA,kCAAwB,EAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,CAAC,OAAO,CAAC,CACpH,CACF,CAAA;QAED,MAAM,MAAM,GAAmB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAEzF,MAAM,cAAc,GAAG,IAAA,4BAAkB,EAAC,CAAC,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC,CAAA;QAEvE,OAAO,CAAC,GAAG,cAAc,CAAC,YAAY,EAAE,GAAG,cAAc,CAAC,WAAW,EAAE,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;IACxG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC,CAAA;AAED;;GAEG;AACI,MAAM,0BAA0B,GAAG,CACxC,2BAAuE,EACvE,OAA4B,EAC5B,EAAE;IACF,MAAM,oBAAoB,GAAG,IAAA,iDAAuB,GAAE,CAAA;IAEtD,OAAO,IAAA,sBAAQ,EAAC;QACd,QAAQ,EAAE,CAAC,sBAAU,CAAC,0BAA0B,EAAE,2BAA2B,EAAE,OAAO,CAAC;QACvF,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,OAAO,MAAM,uBAAuB,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,IAAI,KAAK,CAAC,CAAA;QAC7H,CAAC;QACD,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,gBAAI,CAAC,SAAS,GAAG,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,2BAA2B,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ;KACxF,CAAC,CAAA;AACJ,CAAC,CAAA;AAfY,QAAA,0BAA0B,8BAetC"}
1
+ {"version":3,"file":"useGetTokenBalancesDetails.js","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesDetails.ts"],"names":[],"mappings":";;;AACA,uDAAwD;AAExD,+CAAkD;AAElD,iDAAkF;AAElF,uEAAmE;AAEnE,MAAM,uBAAuB,GAAG,KAAK,EACnC,oBAA4C,EAC5C,IAAgD,EAChD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAA;QAEpE,MAAM,YAAY,GAAmB,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CACnF,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAClD,IAAA,kCAAwB,EAAC,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,CAAC,cAAc,EAAE,kBAAkB,CAAC,OAAO,CAAC,CACpH,CACF,CAAA;QAED,MAAM,MAAM,GAAmB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAEzF,MAAM,cAAc,GAAG,IAAA,4BAAkB,EAAC,CAAC,GAAG,YAAY,EAAE,GAAG,MAAM,CAAC,CAAC,CAAA;QAEvE,OAAO;YACL,QAAQ,EAAE;gBACR,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC3D,GAAG,cAAc,CAAC,WAAW;gBAC7B,GAAG,cAAc,CAAC,YAAY;aAC/B;YACD,IAAI,EAAE,GAAG,CAAC,IAAI;SACf,CAAA;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACI,MAAM,0BAA0B,GAAG,CAAC,IAAgD,EAAE,OAAsB,EAAE,EAAE;IACrH,MAAM,oBAAoB,GAAG,IAAA,iDAAuB,GAAE,CAAA;IAEtD,OAAO,IAAA,8BAAgB,EAAC;QACtB,QAAQ,EAAE,CAAC,sBAAU,CAAC,0BAA0B,EAAE,IAAI,EAAE,OAAO,CAAC;QAChE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;YACzB,OAAO,uBAAuB,CAAC,oBAAoB,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACpF,CAAC;QACD,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YAC7B,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QACtC,CAAC;QACD,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAU;QAC3D,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;QAC7B,SAAS,EAAE,gBAAI,CAAC,SAAS,GAAG,EAAE;QAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ;KACvE,CAAC,CAAA;AACJ,CAAC,CAAA;AAhBY,QAAA,0BAA0B,8BAgBtC"}
@@ -1,7 +1,74 @@
1
1
  import { IndexerGateway, TokenBalance } from '@0xsequence/indexer';
2
- import { BalanceHookOptions } from '../../types';
2
+ import { HooksOptions } from '../../types';
3
3
  /**
4
- * @description Gets the token balances, with summarized contract info but not individual token details for non-native contracts
4
+ * Hook to fetch token balances with summarized contract information.
5
+ * This is a lighter version of useGetTokenBalancesDetails - it returns basic token information
6
+ * without detailed metadata, making it faster and more suitable for token lists and balances display.
7
+ * Results are sorted by type: native tokens first, then ERC20s, then collectibles.
8
+ *
9
+ * @param getTokenBalancesSummaryArgs - Arguments for fetching token balances
10
+ * @param getTokenBalancesSummaryArgs.chainIds - Array of chain IDs to fetch balances from
11
+ * @param getTokenBalancesSummaryArgs.filter - Filter criteria for the query
12
+ * @param getTokenBalancesSummaryArgs.filter.accountAddresses - List of account addresses to fetch balances for
13
+ * @param getTokenBalancesSummaryArgs.filter.contractWhitelist - Optional list of contracts to include
14
+ * @param getTokenBalancesSummaryArgs.filter.contractBlacklist - Optional list of contracts to exclude
15
+ * @param getTokenBalancesSummaryArgs.filter.omitNativeBalances - If true, excludes native token balances
16
+ * @param getTokenBalancesSummaryArgs.filter.contractStatus - Optional filter for contract verification status
17
+ * @param options - Optional configuration for the query behavior
18
+ * @param options.hideCollectibles - If true, filters out ERC721 and ERC1155 tokens
19
+ * @param options.disabled - If true, disables the query from automatically running
20
+ * @param options.retry - If true (default), retries failed queries
21
+ *
22
+ * Query configuration:
23
+ * - Marks data as stale after 30 seconds
24
+ * - Retries failed requests by default
25
+ * - Only enabled when account address is present and not explicitly disabled
26
+ *
27
+ * @returns Query result containing an array of TokenBalance objects with basic information:
28
+ * - `contractType`: Type of the token contract (NATIVE, ERC20, ERC721, ERC1155)
29
+ * - `contractAddress`: Address of the token contract
30
+ * - `accountAddress`: Address of the account holding the tokens
31
+ * - `balance`: Token balance as a string
32
+ * - `chainId`: Chain ID where the token exists
33
+ * - `contractInfo`: Basic token contract information including:
34
+ * - `name`: Token name
35
+ * - `symbol`: Token symbol
36
+ * - `decimals`: Number of decimals
37
+ * - `logoURI`: URL of the token logo
38
+ *
39
+ * @see {@link https://docs.sequence.xyz/sdk/web/hooks/useGetTokenBalancesSummary} for more detailed documentation.
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * import { useGetTokenBalancesSummary } from '@0xsequence/hooks'
44
+ *
45
+ * // Fetch token balances for a wallet
46
+ * function TokenBalances() {
47
+ * const { data: tokens } = useGetTokenBalancesSummary({
48
+ * chainIds: [1, 137], // Ethereum and Polygon
49
+ * filter: {
50
+ * accountAddresses: ['0x123...'],
51
+ * omitNativeBalances: false,
52
+ * // Optional: filter specific tokens
53
+ * contractWhitelist: ['0x...', '0x...']
54
+ * }
55
+ * })
56
+ *
57
+ * return tokens?.map(token => (
58
+ * <div key={`${token.chainId}-${token.contractAddress}`}>
59
+ * <TokenRow
60
+ * symbol={token.contractInfo?.symbol}
61
+ * balance={token.balance}
62
+ * decimals={token.contractInfo?.decimals}
63
+ * logoURI={token.contractInfo?.logoURI}
64
+ * />
65
+ * </div>
66
+ * ))
67
+ * }
68
+ * ```
5
69
  */
6
- export declare const useGetTokenBalancesSummary: (getTokenBalancesSummaryArgs: IndexerGateway.GetTokenBalancesSummaryArgs, options?: BalanceHookOptions) => import("@tanstack/react-query").UseQueryResult<TokenBalance[], Error>;
70
+ export declare const useGetTokenBalancesSummary: (args: IndexerGateway.GetTokenBalancesSummaryArgs, options?: HooksOptions) => import("@tanstack/react-query").UseInfiniteQueryResult<import("@tanstack/react-query").InfiniteData<{
71
+ balances: TokenBalance[];
72
+ page: IndexerGateway.Page;
73
+ }, unknown>, Error>;
7
74
  //# sourceMappingURL=useGetTokenBalancesSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetTokenBalancesSummary.d.ts","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAA0B,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAqChD;;GAEG;AACH,eAAO,MAAM,0BAA0B,GACrC,6BAA6B,cAAc,CAAC,2BAA2B,EACvE,UAAU,kBAAkB,0EAa7B,CAAA"}
1
+ {"version":3,"file":"useGetTokenBalancesSummary.d.ts","sourceRoot":"","sources":["../../../../src/hooks/IndexerGateway/useGetTokenBalancesSummary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIhG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAmC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM,cAAc,CAAC,2BAA2B,EAAE,UAAU,YAAY;;;mBAgBlH,CAAA"}