@0xsquid/react-hooks 7.8.0 → 8.0.0-beta.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 (348) hide show
  1. package/dist/core/types/index.d.ts +2 -2
  2. package/dist/index-BVNZiGCx.js +6021 -0
  3. package/dist/index-BVNZiGCx.js.map +1 -0
  4. package/dist/index-BeLuO1uo.js +6021 -0
  5. package/dist/index-BeLuO1uo.js.map +1 -0
  6. package/dist/index-CGkGzcT3.js +41015 -0
  7. package/dist/index-CGkGzcT3.js.map +1 -0
  8. package/dist/index-DDz-C-VC.js +41267 -0
  9. package/dist/index-DDz-C-VC.js.map +1 -0
  10. package/dist/index.esm.js +36 -0
  11. package/dist/index.esm.js.map +1 -0
  12. package/dist/index.js +296 -6
  13. package/dist/index.js.map +1 -1
  14. package/dist/{services/external/secretService.js → secretService-D49fXkda.js} +43 -8
  15. package/dist/secretService-D49fXkda.js.map +1 -0
  16. package/dist/secretService-DeXE4j0J.js +168 -0
  17. package/dist/secretService-DeXE4j0J.js.map +1 -0
  18. package/package.json +18 -4
  19. package/dist/core/abis/ics20.json +0 -128
  20. package/dist/core/client/index.js +0 -38
  21. package/dist/core/client/index.js.map +0 -1
  22. package/dist/core/connectors/bitcoin/errors/index.js +0 -22
  23. package/dist/core/connectors/bitcoin/errors/index.js.map +0 -1
  24. package/dist/core/connectors/bitcoin/helpers.js +0 -91
  25. package/dist/core/connectors/bitcoin/helpers.js.map +0 -1
  26. package/dist/core/connectors/bitcoin/index.js +0 -2
  27. package/dist/core/connectors/bitcoin/index.js.map +0 -1
  28. package/dist/core/connectors/bitcoin/wallets/index.js +0 -4
  29. package/dist/core/connectors/bitcoin/wallets/index.js.map +0 -1
  30. package/dist/core/connectors/bitcoin/wallets/keplr.js +0 -28
  31. package/dist/core/connectors/bitcoin/wallets/keplr.js.map +0 -1
  32. package/dist/core/connectors/bitcoin/wallets/phantom.js +0 -56
  33. package/dist/core/connectors/bitcoin/wallets/phantom.js.map +0 -1
  34. package/dist/core/connectors/bitcoin/wallets/unisat.js +0 -28
  35. package/dist/core/connectors/bitcoin/wallets/unisat.js.map +0 -1
  36. package/dist/core/connectors/xrpl/CrossMark.js +0 -76
  37. package/dist/core/connectors/xrpl/CrossMark.js.map +0 -1
  38. package/dist/core/connectors/xrpl/WalletConnect.js +0 -194
  39. package/dist/core/connectors/xrpl/WalletConnect.js.map +0 -1
  40. package/dist/core/connectors/xrpl/Xaman.js +0 -71
  41. package/dist/core/connectors/xrpl/Xaman.js.map +0 -1
  42. package/dist/core/connectors/xrpl/XamanQr.js +0 -95
  43. package/dist/core/connectors/xrpl/XamanQr.js.map +0 -1
  44. package/dist/core/connectors/xrpl/XrplMetamaskSnap.js +0 -176
  45. package/dist/core/connectors/xrpl/XrplMetamaskSnap.js.map +0 -1
  46. package/dist/core/constants.js +0 -157
  47. package/dist/core/constants.js.map +0 -1
  48. package/dist/core/externalLinks.js +0 -21
  49. package/dist/core/externalLinks.js.map +0 -1
  50. package/dist/core/index.js +0 -4
  51. package/dist/core/index.js.map +0 -1
  52. package/dist/core/multicall3.js +0 -462
  53. package/dist/core/multicall3.js.map +0 -1
  54. package/dist/core/providers/BitcoinProvider.js +0 -15
  55. package/dist/core/providers/BitcoinProvider.js.map +0 -1
  56. package/dist/core/providers/CosmosProvider.js +0 -13
  57. package/dist/core/providers/CosmosProvider.js.map +0 -1
  58. package/dist/core/providers/EvmProvider.js +0 -15
  59. package/dist/core/providers/EvmProvider.js.map +0 -1
  60. package/dist/core/providers/SolanaProvider.js +0 -15
  61. package/dist/core/providers/SolanaProvider.js.map +0 -1
  62. package/dist/core/providers/SuiProvider.js +0 -15
  63. package/dist/core/providers/SuiProvider.js.map +0 -1
  64. package/dist/core/providers/XrplProvider.js +0 -15
  65. package/dist/core/providers/XrplProvider.js.map +0 -1
  66. package/dist/core/queries/queries-keys.js +0 -232
  67. package/dist/core/queries/queries-keys.js.map +0 -1
  68. package/dist/core/queries/react-query-config.js +0 -11
  69. package/dist/core/queries/react-query-config.js.map +0 -1
  70. package/dist/core/types/bitcoin.js +0 -2
  71. package/dist/core/types/bitcoin.js.map +0 -1
  72. package/dist/core/types/config.js +0 -2
  73. package/dist/core/types/config.js.map +0 -1
  74. package/dist/core/types/error.js +0 -18
  75. package/dist/core/types/error.js.map +0 -1
  76. package/dist/core/types/event.js +0 -2
  77. package/dist/core/types/event.js.map +0 -1
  78. package/dist/core/types/evm.js +0 -2
  79. package/dist/core/types/evm.js.map +0 -1
  80. package/dist/core/types/history.js +0 -7
  81. package/dist/core/types/history.js.map +0 -1
  82. package/dist/core/types/index.js +0 -4
  83. package/dist/core/types/index.js.map +0 -1
  84. package/dist/core/types/onramps/index.js +0 -3
  85. package/dist/core/types/onramps/index.js.map +0 -1
  86. package/dist/core/types/onramps/onramp.js +0 -2
  87. package/dist/core/types/onramps/onramp.js.map +0 -1
  88. package/dist/core/types/onramps/revolut.js +0 -2
  89. package/dist/core/types/onramps/revolut.js.map +0 -1
  90. package/dist/core/types/rpc.js +0 -2
  91. package/dist/core/types/rpc.js.map +0 -1
  92. package/dist/core/types/solana.js +0 -2
  93. package/dist/core/types/solana.js.map +0 -1
  94. package/dist/core/types/sui.js +0 -2
  95. package/dist/core/types/sui.js.map +0 -1
  96. package/dist/core/types/swap.js +0 -2
  97. package/dist/core/types/swap.js.map +0 -1
  98. package/dist/core/types/tokens.js +0 -2
  99. package/dist/core/types/tokens.js.map +0 -1
  100. package/dist/core/types/transaction.js +0 -47
  101. package/dist/core/types/transaction.js.map +0 -1
  102. package/dist/core/types/wallet.js +0 -19
  103. package/dist/core/types/wallet.js.map +0 -1
  104. package/dist/core/types/xrpl.js +0 -32
  105. package/dist/core/types/xrpl.js.map +0 -1
  106. package/dist/core/wagmiConfig.js +0 -81
  107. package/dist/core/wagmiConfig.js.map +0 -1
  108. package/dist/core/wallets.js +0 -357
  109. package/dist/core/wallets.js.map +0 -1
  110. package/dist/hooks/analytics/useTrackSearchEmpty.js +0 -22
  111. package/dist/hooks/analytics/useTrackSearchEmpty.js.map +0 -1
  112. package/dist/hooks/bitcoin/useBitcoin.js +0 -18
  113. package/dist/hooks/bitcoin/useBitcoin.js.map +0 -1
  114. package/dist/hooks/chains/useSquidChains.js +0 -96
  115. package/dist/hooks/chains/useSquidChains.js.map +0 -1
  116. package/dist/hooks/client/useClient.js +0 -63
  117. package/dist/hooks/client/useClient.js.map +0 -1
  118. package/dist/hooks/cosmos/useCosmos.js +0 -167
  119. package/dist/hooks/cosmos/useCosmos.js.map +0 -1
  120. package/dist/hooks/cosmos/useCosmosForChain.js +0 -29
  121. package/dist/hooks/cosmos/useCosmosForChain.js.map +0 -1
  122. package/dist/hooks/evm/useEvm.js +0 -68
  123. package/dist/hooks/evm/useEvm.js.map +0 -1
  124. package/dist/hooks/evm/useEvmWallets.js +0 -13
  125. package/dist/hooks/evm/useEvmWallets.js.map +0 -1
  126. package/dist/hooks/index.js +0 -54
  127. package/dist/hooks/index.js.map +0 -1
  128. package/dist/hooks/navigation/useKeyboardNavigation.js +0 -67
  129. package/dist/hooks/navigation/useKeyboardNavigation.js.map +0 -1
  130. package/dist/hooks/onramp/useFiatToCrypto.js +0 -298
  131. package/dist/hooks/onramp/useFiatToCrypto.js.map +0 -1
  132. package/dist/hooks/query/useSquidQueryClient.js +0 -23
  133. package/dist/hooks/query/useSquidQueryClient.js.map +0 -1
  134. package/dist/hooks/solana/useSolana.js +0 -81
  135. package/dist/hooks/solana/useSolana.js.map +0 -1
  136. package/dist/hooks/solana/useSolanaWallets.js +0 -8
  137. package/dist/hooks/solana/useSolanaWallets.js.map +0 -1
  138. package/dist/hooks/squid/useSquid.js +0 -55
  139. package/dist/hooks/squid/useSquid.js.map +0 -1
  140. package/dist/hooks/store/useAddressBookStore.js +0 -30
  141. package/dist/hooks/store/useAddressBookStore.js.map +0 -1
  142. package/dist/hooks/store/useAssetsColorsStore.js +0 -7
  143. package/dist/hooks/store/useAssetsColorsStore.js.map +0 -1
  144. package/dist/hooks/store/useDepositAddressStore.js +0 -12
  145. package/dist/hooks/store/useDepositAddressStore.js.map +0 -1
  146. package/dist/hooks/store/useFavoriteTokensStore.js +0 -28
  147. package/dist/hooks/store/useFavoriteTokensStore.js.map +0 -1
  148. package/dist/hooks/store/useHistoryStore.js +0 -129
  149. package/dist/hooks/store/useHistoryStore.js.map +0 -1
  150. package/dist/hooks/store/useSendTransactionStore.js +0 -21
  151. package/dist/hooks/store/useSendTransactionStore.js.map +0 -1
  152. package/dist/hooks/store/useSquidStore.js +0 -54
  153. package/dist/hooks/store/useSquidStore.js.map +0 -1
  154. package/dist/hooks/store/useWalletStore.js +0 -61
  155. package/dist/hooks/store/useWalletStore.js.map +0 -1
  156. package/dist/hooks/sui/useSui.js +0 -81
  157. package/dist/hooks/sui/useSui.js.map +0 -1
  158. package/dist/hooks/sui/useSuiWallets.js +0 -23
  159. package/dist/hooks/sui/useSuiWallets.js.map +0 -1
  160. package/dist/hooks/swap/useDepositAddress.js +0 -63
  161. package/dist/hooks/swap/useDepositAddress.js.map +0 -1
  162. package/dist/hooks/swap/useSwap.js +0 -228
  163. package/dist/hooks/swap/useSwap.js.map +0 -1
  164. package/dist/hooks/tokens/useAllConnectedWalletBalances.js +0 -114
  165. package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +0 -1
  166. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +0 -130
  167. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +0 -1
  168. package/dist/hooks/tokens/useBalance.js +0 -157
  169. package/dist/hooks/tokens/useBalance.js.map +0 -1
  170. package/dist/hooks/tokens/useMultiChainBalance.js +0 -77
  171. package/dist/hooks/tokens/useMultiChainBalance.js.map +0 -1
  172. package/dist/hooks/tokens/useMultipleTokenPrices.js +0 -46
  173. package/dist/hooks/tokens/useMultipleTokenPrices.js.map +0 -1
  174. package/dist/hooks/tokens/useNativeBalance.js +0 -249
  175. package/dist/hooks/tokens/useNativeBalance.js.map +0 -1
  176. package/dist/hooks/tokens/useNativeTokenForChain.js +0 -30
  177. package/dist/hooks/tokens/useNativeTokenForChain.js.map +0 -1
  178. package/dist/hooks/tokens/useSingleTokenPrice.js +0 -38
  179. package/dist/hooks/tokens/useSingleTokenPrice.js.map +0 -1
  180. package/dist/hooks/tokens/useSquidTokens.js +0 -75
  181. package/dist/hooks/tokens/useSquidTokens.js.map +0 -1
  182. package/dist/hooks/tokens/useTokenHistoricalData.js +0 -23
  183. package/dist/hooks/tokens/useTokenHistoricalData.js.map +0 -1
  184. package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js +0 -58
  185. package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js.map +0 -1
  186. package/dist/hooks/transaction/send/useSendTransaction.js +0 -245
  187. package/dist/hooks/transaction/send/useSendTransaction.js.map +0 -1
  188. package/dist/hooks/transaction/send/useSendTransactionGas.js +0 -73
  189. package/dist/hooks/transaction/send/useSendTransactionGas.js.map +0 -1
  190. package/dist/hooks/transaction/useAllTransactionsStatus.js +0 -127
  191. package/dist/hooks/transaction/useAllTransactionsStatus.js.map +0 -1
  192. package/dist/hooks/transaction/useApproval.js +0 -246
  193. package/dist/hooks/transaction/useApproval.js.map +0 -1
  194. package/dist/hooks/transaction/useErc20Allowance.js +0 -43
  195. package/dist/hooks/transaction/useErc20Allowance.js.map +0 -1
  196. package/dist/hooks/transaction/useEstimate.js +0 -115
  197. package/dist/hooks/transaction/useEstimate.js.map +0 -1
  198. package/dist/hooks/transaction/useEstimatePriceImpact.js +0 -31
  199. package/dist/hooks/transaction/useEstimatePriceImpact.js.map +0 -1
  200. package/dist/hooks/transaction/useExecuteTransaction.js +0 -678
  201. package/dist/hooks/transaction/useExecuteTransaction.js.map +0 -1
  202. package/dist/hooks/transaction/useGetRoute.js +0 -207
  203. package/dist/hooks/transaction/useGetRoute.js.map +0 -1
  204. package/dist/hooks/transaction/useIcs20Allowance.js +0 -46
  205. package/dist/hooks/transaction/useIcs20Allowance.js.map +0 -1
  206. package/dist/hooks/transaction/useRouteWarnings.js +0 -19
  207. package/dist/hooks/transaction/useRouteWarnings.js.map +0 -1
  208. package/dist/hooks/transaction/useSendTransactionStatus.js +0 -63
  209. package/dist/hooks/transaction/useSendTransactionStatus.js.map +0 -1
  210. package/dist/hooks/transaction/useSwapTransactionStatus.js +0 -114
  211. package/dist/hooks/transaction/useSwapTransactionStatus.js.map +0 -1
  212. package/dist/hooks/user/useAvatar.js +0 -40
  213. package/dist/hooks/user/useAvatar.js.map +0 -1
  214. package/dist/hooks/user/useHistory.js +0 -103
  215. package/dist/hooks/user/useHistory.js.map +0 -1
  216. package/dist/hooks/user/useUserParams.js +0 -33
  217. package/dist/hooks/user/useUserParams.js.map +0 -1
  218. package/dist/hooks/utils/useUtils.js +0 -20
  219. package/dist/hooks/utils/useUtils.js.map +0 -1
  220. package/dist/hooks/wallet/useAddToken.js +0 -49
  221. package/dist/hooks/wallet/useAddToken.js.map +0 -1
  222. package/dist/hooks/wallet/useAutoConnect.js +0 -92
  223. package/dist/hooks/wallet/useAutoConnect.js.map +0 -1
  224. package/dist/hooks/wallet/useEns.js +0 -57
  225. package/dist/hooks/wallet/useEns.js.map +0 -1
  226. package/dist/hooks/wallet/useGnosisContext.js +0 -74
  227. package/dist/hooks/wallet/useGnosisContext.js.map +0 -1
  228. package/dist/hooks/wallet/useIntegratorContext.js +0 -39
  229. package/dist/hooks/wallet/useIntegratorContext.js.map +0 -1
  230. package/dist/hooks/wallet/useMultiChainWallet.js +0 -210
  231. package/dist/hooks/wallet/useMultiChainWallet.js.map +0 -1
  232. package/dist/hooks/wallet/useSigner.js +0 -68
  233. package/dist/hooks/wallet/useSigner.js.map +0 -1
  234. package/dist/hooks/wallet/useStandardWallets.js +0 -26
  235. package/dist/hooks/wallet/useStandardWallets.js.map +0 -1
  236. package/dist/hooks/wallet/useWallet.js +0 -199
  237. package/dist/hooks/wallet/useWallet.js.map +0 -1
  238. package/dist/hooks/wallet/useWallets.js +0 -33
  239. package/dist/hooks/wallet/useWallets.js.map +0 -1
  240. package/dist/hooks/xrpl/useXrpl.js +0 -55
  241. package/dist/hooks/xrpl/useXrpl.js.map +0 -1
  242. package/dist/hooks/xrpl/useXrplTrustLine.js +0 -159
  243. package/dist/hooks/xrpl/useXrplTrustLine.js.map +0 -1
  244. package/dist/hooks/xrpl/useXrplWallets.js +0 -51
  245. package/dist/hooks/xrpl/useXrplWallets.js.map +0 -1
  246. package/dist/provider/index.js +0 -118
  247. package/dist/provider/index.js.map +0 -1
  248. package/dist/services/external/cosmosRestClient.js +0 -45
  249. package/dist/services/external/cosmosRestClient.js.map +0 -1
  250. package/dist/services/external/ens.js +0 -66
  251. package/dist/services/external/ens.js.map +0 -1
  252. package/dist/services/external/index.js +0 -3
  253. package/dist/services/external/index.js.map +0 -1
  254. package/dist/services/external/onrampAdapter.js +0 -52
  255. package/dist/services/external/onrampAdapter.js.map +0 -1
  256. package/dist/services/external/rpcService.js +0 -411
  257. package/dist/services/external/rpcService.js.map +0 -1
  258. package/dist/services/external/secretService.js.map +0 -1
  259. package/dist/services/external/suiRpcClient.js +0 -80
  260. package/dist/services/external/suiRpcClient.js.map +0 -1
  261. package/dist/services/external/tokenDataService.js +0 -108
  262. package/dist/services/external/tokenDataService.js.map +0 -1
  263. package/dist/services/external/websocket.js +0 -34
  264. package/dist/services/external/websocket.js.map +0 -1
  265. package/dist/services/external/xaman.js +0 -78
  266. package/dist/services/external/xaman.js.map +0 -1
  267. package/dist/services/external/xrplRpcClient.js +0 -167
  268. package/dist/services/external/xrplRpcClient.js.map +0 -1
  269. package/dist/services/index.js +0 -19
  270. package/dist/services/index.js.map +0 -1
  271. package/dist/services/internal/apiService.js +0 -21
  272. package/dist/services/internal/apiService.js.map +0 -1
  273. package/dist/services/internal/assetsService.js +0 -575
  274. package/dist/services/internal/assetsService.js.map +0 -1
  275. package/dist/services/internal/bitcoinService.js +0 -20
  276. package/dist/services/internal/bitcoinService.js.map +0 -1
  277. package/dist/services/internal/configService.js +0 -198
  278. package/dist/services/internal/configService.js.map +0 -1
  279. package/dist/services/internal/cosmosService.js +0 -141
  280. package/dist/services/internal/cosmosService.js.map +0 -1
  281. package/dist/services/internal/countryCurrencyMap.js +0 -1102
  282. package/dist/services/internal/countryCurrencyMap.js.map +0 -1
  283. package/dist/services/internal/errorService.js +0 -190
  284. package/dist/services/internal/errorService.js.map +0 -1
  285. package/dist/services/internal/estimateService.js +0 -225
  286. package/dist/services/internal/estimateService.js.map +0 -1
  287. package/dist/services/internal/eventService.js +0 -219
  288. package/dist/services/internal/eventService.js.map +0 -1
  289. package/dist/services/internal/evmService.js +0 -67
  290. package/dist/services/internal/evmService.js.map +0 -1
  291. package/dist/services/internal/fiatToCryptoService.js +0 -84
  292. package/dist/services/internal/fiatToCryptoService.js.map +0 -1
  293. package/dist/services/internal/fiatToCryptoService.test.js +0 -45
  294. package/dist/services/internal/fiatToCryptoService.test.js.map +0 -1
  295. package/dist/services/internal/numberService.js +0 -199
  296. package/dist/services/internal/numberService.js.map +0 -1
  297. package/dist/services/internal/priceService.js +0 -53
  298. package/dist/services/internal/priceService.js.map +0 -1
  299. package/dist/services/internal/searchService.js +0 -98
  300. package/dist/services/internal/searchService.js.map +0 -1
  301. package/dist/services/internal/sendTransaction.js +0 -191
  302. package/dist/services/internal/sendTransaction.js.map +0 -1
  303. package/dist/services/internal/sendTransactionStatus.js +0 -134
  304. package/dist/services/internal/sendTransactionStatus.js.map +0 -1
  305. package/dist/services/internal/solanaService.js +0 -142
  306. package/dist/services/internal/solanaService.js.map +0 -1
  307. package/dist/services/internal/suiService.js +0 -81
  308. package/dist/services/internal/suiService.js.map +0 -1
  309. package/dist/services/internal/transactionService.js +0 -210
  310. package/dist/services/internal/transactionService.js.map +0 -1
  311. package/dist/services/internal/transactionStatusService.js +0 -390
  312. package/dist/services/internal/transactionStatusService.js.map +0 -1
  313. package/dist/services/internal/walletService.js +0 -546
  314. package/dist/services/internal/walletService.js.map +0 -1
  315. package/dist/services/internal/walletStandardService.js +0 -128
  316. package/dist/services/internal/walletStandardService.js.map +0 -1
  317. package/dist/services/internal/xionService.js +0 -6
  318. package/dist/services/internal/xionService.js.map +0 -1
  319. package/dist/services/internal/xrplService.js +0 -52
  320. package/dist/services/internal/xrplService.js.map +0 -1
  321. package/dist/tests/apiService.test.js +0 -40
  322. package/dist/tests/apiService.test.js.map +0 -1
  323. package/dist/tests/assetsService.test.js +0 -614
  324. package/dist/tests/assetsService.test.js.map +0 -1
  325. package/dist/tests/configService.test.js +0 -641
  326. package/dist/tests/configService.test.js.map +0 -1
  327. package/dist/tests/estimateService.test.js +0 -429
  328. package/dist/tests/estimateService.test.js.map +0 -1
  329. package/dist/tests/fetchSquidData.js +0 -36
  330. package/dist/tests/fetchSquidData.js.map +0 -1
  331. package/dist/tests/jest-svg-transform.d.ts +0 -0
  332. package/dist/tests/jest-svg-transform.js +0 -21
  333. package/dist/tests/jest-svg-transform.js.map +0 -1
  334. package/dist/tests/numberService.test.js +0 -166
  335. package/dist/tests/numberService.test.js.map +0 -1
  336. package/dist/tests/priceService.test.js +0 -38
  337. package/dist/tests/priceService.test.js.map +0 -1
  338. package/dist/tests/sample.json +0 -0
  339. package/dist/tests/searchService.test.js +0 -86
  340. package/dist/tests/searchService.test.js.map +0 -1
  341. package/dist/tests/swapConfig.test.js +0 -332
  342. package/dist/tests/swapConfig.test.js.map +0 -1
  343. package/dist/tests/transactionService.test.js +0 -53
  344. package/dist/tests/transactionService.test.js.map +0 -1
  345. package/dist/tests/transactionStatusService.test.js +0 -165
  346. package/dist/tests/transactionStatusService.test.js.map +0 -1
  347. package/dist/tests/walletService.test.js +0 -488
  348. package/dist/tests/walletService.test.js.map +0 -1
@@ -1,411 +0,0 @@
1
- import { ChainType, } from "@0xsquid/squid-types";
2
- import { StargateClient } from "@cosmjs/stargate";
3
- import { ethers, Interface, JsonRpcProvider } from "ethers";
4
- import { erc20Abi } from "viem";
5
- import { getClient } from "../../core/client";
6
- import { nativeEvmTokenAddress, nativeSolanaTokenAddress, SOLANA_RPC_URL, } from "../../core/constants";
7
- import { getMulticall3Address, multicallAbi } from "../../core/multicall3";
8
- import { normalizeIbcAddress } from "../internal/assetsService";
9
- import { isBitcoinAddressValid } from "../internal/bitcoinService";
10
- import { formatBNToReadable, parseToBigInt } from "../internal/numberService";
11
- import { CosmosRestClient } from "./cosmosRestClient";
12
- import { SuiRpcClient } from "./suiRpcClient";
13
- const isTokenNative = (token) => token.address.toLowerCase() === nativeEvmTokenAddress.toLowerCase();
14
- const getTokenAddressForMultiCall = (t) => {
15
- return isTokenNative(t)
16
- ? getMulticall3Address(t.chainId)
17
- : t.address;
18
- };
19
- const getTokenBalanceCall = (token, userAddress) => {
20
- const address = getTokenAddressForMultiCall(token);
21
- const abi = isTokenNative(token) ? multicallAbi : erc20Abi;
22
- const method = isTokenNative(token) ? "getEthBalance" : "balanceOf";
23
- const iface = new Interface(abi);
24
- const callData = iface.encodeFunctionData(method, [userAddress]);
25
- return [address, callData];
26
- };
27
- /**
28
- * Using Multicall3 contract, available on a lot of chains
29
- * @param multicall
30
- * @param calls
31
- * @param tokens
32
- * @returns
33
- */
34
- const executeMulticall = async (multicall, calls, tokens) => {
35
- try {
36
- const results = await multicall.tryAggregate.staticCall(false, calls);
37
- const tokenWithResult = tokens.map((token, index) => ({
38
- token,
39
- result: { success: results[index][0], returnData: results[index][1] },
40
- }));
41
- return tokenWithResult;
42
- }
43
- catch (error) {
44
- return tokens.map((token) => ({
45
- token,
46
- result: { success: false, returnData: "" },
47
- }));
48
- }
49
- };
50
- /**
51
- * Format balance using ethers, based on success of the call
52
- * If the call fails, we return 0 as balance
53
- * @param results
54
- * @returns
55
- */
56
- const formatBalanceForTokens = (results) => {
57
- return results.map((data) => {
58
- const token = data.token;
59
- const result = data.result;
60
- if (!result.success) {
61
- return { ...token, balance: "0" };
62
- }
63
- try {
64
- return {
65
- ...token,
66
- balance: formatBNToReadable(BigInt(result.returnData), token.decimals),
67
- };
68
- }
69
- catch {
70
- return {
71
- ...token,
72
- balance: "0",
73
- };
74
- }
75
- });
76
- };
77
- export const getTokensSupportingMultiCall = async (tokens, userAddress, chains) => {
78
- // Create providers for each chain
79
- const providers = {};
80
- chains.forEach((chain) => {
81
- providers[chain.chainId] = new JsonRpcProvider(chain.rpc);
82
- });
83
- const fetchBalancesForChain = async (chain) => {
84
- const tokensForChain = tokens.filter((t) => t.chainId === chain.chainId);
85
- if (tokensForChain.length === 0)
86
- return [];
87
- const provider = providers[chain.chainId];
88
- if (!provider) {
89
- return [
90
- ...tokensForChain.map((t) => ({
91
- ...t,
92
- balance: "0",
93
- })),
94
- ];
95
- }
96
- const multicallAddress = getMulticall3Address(chain.chainId);
97
- const multicall = new ethers.Contract(multicallAddress, multicallAbi, provider);
98
- const calls = tokensForChain.map((token) => getTokenBalanceCall(token, userAddress));
99
- const multicallResults = await executeMulticall(multicall, calls, tokensForChain);
100
- return formatBalanceForTokens(multicallResults);
101
- };
102
- const allResults = await Promise.all(chains.map((chain) => fetchBalancesForChain(chain)));
103
- return allResults.flat();
104
- };
105
- export const getAllEvmTokensBalance = async (evmTokens, userAddress, chains) => {
106
- const tokensMulticall = await getTokensSupportingMultiCall(evmTokens, userAddress, chains);
107
- return tokensMulticall;
108
- };
109
- /**
110
- * We'll get the current block of a given RPC to see if we can query it
111
- * Without getting CORS error or any other error
112
- * @param rpc
113
- * @returns
114
- */
115
- const testCosmosRpc = async (rpc) => {
116
- let rpcIsValid = false;
117
- try {
118
- const client = await StargateClient.connect(rpc);
119
- const block = await client.getBlock();
120
- rpcIsValid = !!block.id;
121
- }
122
- catch (error) {
123
- rpcIsValid = false;
124
- }
125
- return rpcIsValid;
126
- };
127
- export const getWorkingCosmosRpcUrl = async (chainData) => {
128
- const chain = chainData;
129
- const rpcList = chain.rpcList.length > 0 ? chain.rpcList : chain.rpc ? [chain.rpc] : [];
130
- // if rpcList is empty, use the default rpc
131
- if (rpcList.length === 0) {
132
- try {
133
- const isValid = await testCosmosRpc(chain.rpc);
134
- if (isValid) {
135
- return chain.rpc;
136
- }
137
- }
138
- catch (error) {
139
- console.error(`Error fetching rpc url: ${chain.rpc} - Error: ${error?.toString()}`);
140
- }
141
- }
142
- // if rpcList is not empty, try to fetch each rpc until we find a valid one
143
- for (const rpc of rpcList) {
144
- try {
145
- // eslint-disable-next-line no-await-in-loop
146
- const isValid = await timeout(5_000, testCosmosRpc(rpc));
147
- if (isValid) {
148
- return rpc;
149
- }
150
- }
151
- catch (error) {
152
- console.error(`Error fetching rpc url: ${chain.rpc} - Error: ${error?.toString()}`);
153
- }
154
- }
155
- // In the case that all rpcs are invalid, return the default rpc anyway
156
- return chain.rpc;
157
- };
158
- /**
159
- * Get the balance of a single token for a given address
160
- * @param chainRpc - rpc url
161
- * @param address - user address
162
- * @param tokenAddress - token address
163
- * @returns balance as string
164
- */
165
- export const getCosmosTokenBalance = async (chain, address, tokenAddress) => {
166
- if (chain.chainType !== ChainType.COSMOS)
167
- return "0";
168
- const cosmosChain = chain;
169
- const client = new CosmosRestClient(cosmosChain.rest);
170
- const balance = await client.getBalance(address, tokenAddress);
171
- return balance?.amount || "0";
172
- };
173
- /**
174
- * Fetches all Cosmos balances for a given address and RPC.
175
- *
176
- * @param {string} params.rpc - RPC URL to fetch balances from.
177
- * @param {string} params.address - user address to fetch balances for.
178
- * @param {Token[]} params.tokens - array of Cosmos tokens.
179
- * @returns {Promise<TokenWithBalance[]>} promise that resolves to an array of tokens with their balances.
180
- */
181
- export const getAllCosmosBalancesForChain = async ({ rest, address, tokens, }) => {
182
- const client = new CosmosRestClient(rest);
183
- const cosmosBalances = await client.getAllBalances(address);
184
- // Need to map tokens and put balance, based on denom
185
- const tokensWithBalance = tokens.map((t) => {
186
- const balanceCoin = cosmosBalances.find((c) => c.denom === normalizeIbcAddress(t.address));
187
- return {
188
- ...t,
189
- balance: balanceCoin
190
- ? formatBNToReadable(BigInt(balanceCoin?.amount), t?.decimals)
191
- : "0",
192
- };
193
- });
194
- return tokensWithBalance;
195
- };
196
- /**
197
- * Fetches all Cosmos balances for a given address and RPC.
198
- *
199
- * @param {object} params.addresses user addresses per cosmos network
200
- * @param {Token[]} params.cosmosTokens
201
- * @param {CosmosChain[]} params.cosmosChains
202
- * @returns {Promise<TokenWithBalance[]>} All tokens with their balances.
203
- */
204
- export const getAllCosmosBalances = async ({ addresses, cosmosTokens, cosmosChains, }) => {
205
- const tokensWithBalance = [];
206
- await Promise.all(cosmosChains.map(async (cosmosChain) => {
207
- const userAddress = addresses.find((a) => a.chainId === cosmosChain.chainId)?.address;
208
- const tokensForChain = cosmosTokens.filter((t) => t.chainId === cosmosChain.chainId);
209
- if (!userAddress) {
210
- tokensWithBalance.push(...tokensForChain.map((t) => ({ ...t, balance: "0" })));
211
- return;
212
- }
213
- try {
214
- const balances = await timeout(6_000, getAllCosmosBalancesForChain({
215
- rest: cosmosChain.rest,
216
- address: userAddress,
217
- tokens: tokensForChain,
218
- }));
219
- if (balances) {
220
- tokensWithBalance.push(...balances);
221
- }
222
- else {
223
- tokensWithBalance.push(...tokensForChain.map((t) => ({ ...t, balance: "0" })));
224
- }
225
- }
226
- catch (error) {
227
- console.warn(`Failed to fetch balances for chain ${cosmosChain.chainId}:`, error);
228
- tokensWithBalance.push(...tokensForChain.map((t) => ({ ...t, balance: "0" })));
229
- }
230
- }));
231
- return tokensWithBalance;
232
- };
233
- export const getSolanaNativeBalance = async (userAddress) => {
234
- const response = await fetch(SOLANA_RPC_URL, {
235
- method: "POST",
236
- headers: { "Content-Type": "application/json" },
237
- body: JSON.stringify({
238
- jsonrpc: "2.0",
239
- id: 1,
240
- method: "getBalance",
241
- params: [userAddress],
242
- }),
243
- });
244
- const data = await response.json();
245
- return BigInt(data.result?.value || 0);
246
- };
247
- export const getSolanaTokenBalance = async (userAddress, tokenAddress) => {
248
- if (tokenAddress.toLowerCase() === nativeSolanaTokenAddress.toLowerCase()) {
249
- return getSolanaNativeBalance(userAddress);
250
- }
251
- const response = await fetch(SOLANA_RPC_URL, {
252
- method: "POST",
253
- headers: { "Content-Type": "application/json" },
254
- body: JSON.stringify({
255
- jsonrpc: "2.0",
256
- id: 1,
257
- method: "getTokenAccountsByOwner",
258
- params: [
259
- userAddress,
260
- { programId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" },
261
- { encoding: "jsonParsed" },
262
- ],
263
- }),
264
- });
265
- const data = await response.json();
266
- const tokenAccount = data.result?.value?.find((acc) => acc.account.data.parsed.info.mint.toLowerCase() ===
267
- tokenAddress.toLowerCase());
268
- return BigInt(tokenAccount?.account.data.parsed.info.tokenAmount.amount || 0);
269
- };
270
- export const getSolanaTokensBalance = async (userAddress, tokenAddresses) => {
271
- const response = await fetch(SOLANA_RPC_URL, {
272
- method: "POST",
273
- headers: { "Content-Type": "application/json" },
274
- body: JSON.stringify({
275
- jsonrpc: "2.0",
276
- id: 1,
277
- method: "getTokenAccountsByOwner",
278
- params: [
279
- userAddress,
280
- { programId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" },
281
- { encoding: "jsonParsed" },
282
- ],
283
- }),
284
- });
285
- const data = await response.json();
286
- return tokenAddresses.reduce((acc, address) => {
287
- const tokenAccount = data.result?.value?.find((accountInfo) => accountInfo.account.data.parsed.info.mint.toLowerCase() ===
288
- address.toLowerCase());
289
- acc[address] = BigInt(tokenAccount?.account.data.parsed.info.tokenAmount.amount || 0);
290
- return acc;
291
- }, {});
292
- };
293
- export const getAllSolanaTokensBalance = async (solanaTokens, userAddress) => {
294
- try {
295
- const nativeToken = solanaTokens.find((t) => t.address === nativeEvmTokenAddress);
296
- const otherTokens = solanaTokens.filter((t) => t.address !== nativeEvmTokenAddress);
297
- const [nativeBalance, tokenBalances] = await Promise.all([
298
- nativeToken
299
- ? getSolanaNativeBalance(userAddress)
300
- : Promise.resolve(BigInt(0)),
301
- getSolanaTokensBalance(userAddress, otherTokens.map((t) => t.address)),
302
- ]);
303
- return solanaTokens.map((token) => ({
304
- ...token,
305
- balance: token.address === nativeEvmTokenAddress
306
- ? formatBNToReadable(nativeBalance, token.decimals)
307
- : formatBNToReadable(tokenBalances[token.address], token.decimals),
308
- }));
309
- }
310
- catch (error) {
311
- console.warn("Failed to fetch Solana balances:", error);
312
- return solanaTokens.map((t) => ({ ...t, balance: "0" }));
313
- }
314
- };
315
- export async function getBitcoinNativeBalance(address) {
316
- try {
317
- const isValidBitcoinAddress = isBitcoinAddressValid(address);
318
- if (!isValidBitcoinAddress) {
319
- throw new Error(`Invalid Bitcoin address: ${address}`);
320
- }
321
- const apiUrl = `https://blockchain.info/q/addressbalance/${address}?confirmations=6`;
322
- const response = await fetch(apiUrl);
323
- const balanceInSatoshis = await response.json();
324
- const isValidResponse = typeof balanceInSatoshis === "string" ||
325
- typeof balanceInSatoshis === "number";
326
- if (!isValidResponse) {
327
- throw new Error("Invalid balance response");
328
- }
329
- return String(balanceInSatoshis || "0");
330
- }
331
- catch (error) {
332
- console.error("Failed to fetch Bitcoin balance:", error);
333
- return "0";
334
- }
335
- }
336
- // TODO: implement fetching balances for all bitcoin tokens
337
- export const getAllBitcoinTokensBalance = async (userAddress, bitcoinTokens) => {
338
- const nativeBalance = await getBitcoinNativeBalance(userAddress);
339
- return Promise.all(bitcoinTokens.map(async (token) => {
340
- return {
341
- ...token,
342
- balance: formatBNToReadable(nativeBalance, token.decimals),
343
- };
344
- }));
345
- };
346
- /**
347
- * Returns the balance of a single Sui coin for a given address
348
- */
349
- export const getSuiTokenBalance = async (userAddress, tokenAddress, rpcUrl) => {
350
- const suiClient = new SuiRpcClient(rpcUrl);
351
- const { totalBalance } = await suiClient.getBalance(userAddress, tokenAddress);
352
- return BigInt(totalBalance || 0);
353
- };
354
- export const getAllSuiTokensBalance = async (userAddress, suiTokens, suiChains) => {
355
- const getBalancesForChain = async (chain) => {
356
- const tokensForChain = suiTokens.filter((t) => t.chainId === chain.chainId);
357
- const suiClient = new SuiRpcClient(chain.rpc);
358
- const foundBalances = await suiClient.getAllBalances(userAddress);
359
- const balanceMap = foundBalances.reduce((acc, balance) => {
360
- acc[balance.coinType] = balance.totalBalance;
361
- return acc;
362
- }, {});
363
- return tokensForChain.map((token) => {
364
- const balanceBn = BigInt(balanceMap[token.address] || 0);
365
- return {
366
- ...token,
367
- balance: formatBNToReadable(balanceBn, token.decimals),
368
- };
369
- });
370
- };
371
- const allResults = await Promise.all(suiChains.map(getBalancesForChain));
372
- return allResults.flat();
373
- };
374
- export const getXrplTokenBalance = async (userAddress, token, chain) => {
375
- const xrplClient = await getClient(chain);
376
- const balance = await xrplClient.getBalance(userAddress, token.address);
377
- return parseToBigInt(balance, token.decimals);
378
- };
379
- export const getAllXrplTokensBalance = async (userAddress, xrplTokens, xrplChains) => {
380
- const getBalancesForChain = async (chain) => {
381
- const tokensForChain = xrplTokens.filter((t) => t.chainId === chain.chainId);
382
- const xrplClient = await getClient(chain);
383
- const foundBalances = await xrplClient.getAllBalances(userAddress);
384
- const balanceMap = foundBalances.reduce((acc, { address, balance }) => {
385
- acc[address] = balance;
386
- return acc;
387
- }, {});
388
- return tokensForChain.map((token) => {
389
- return {
390
- ...token,
391
- balance: balanceMap[token.address] || 0,
392
- };
393
- });
394
- };
395
- const allResults = await Promise.all(xrplChains.map(getBalancesForChain));
396
- return allResults.flat();
397
- };
398
- /**
399
- * Returns a promise that resolves when the given promise resolves or after the given timeout
400
- * @param ms - timeout in milliseconds
401
- * @param promise - the promise to wait for
402
- */
403
- export function timeout(ms, promise) {
404
- const timeoutPromise = new Promise((resolve) => {
405
- setTimeout(() => {
406
- resolve(null);
407
- }, ms);
408
- });
409
- return Promise.race([promise, timeoutPromise]);
410
- }
411
- //# sourceMappingURL=rpcService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpcService.js","sourceRoot":"","sources":["../../../src/services/external/rpcService.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"secretService.js","sourceRoot":"","sources":["../../../src/services/external/secretService.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- export class SuiRpcClient {
2
- /**
3
- * Native Sui coin object type in long format.
4
- * This is the format used by the Squid UI and API
5
- */
6
- suiNativeCoinObjectTypeLong = "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";
7
- /**
8
- * Native Sui coin object type in short format.
9
- * This is the format used by RPC providers
10
- */
11
- suiNativeCoinObjectTypeShort = "0x2::sui::SUI";
12
- rpcUrl;
13
- constructor(rpcUrl) {
14
- this.rpcUrl = rpcUrl;
15
- }
16
- /**
17
- * Fetches the balance of a single Sui token for a given address.
18
- */
19
- async getBalance(userAddress, tokenAddress) {
20
- const response = await this.call("suix_getBalance", [
21
- userAddress,
22
- this.toShortCoinObjectType(tokenAddress),
23
- ]);
24
- return {
25
- ...response,
26
- coinType: this.toLongCoinObjectType(response.coinType),
27
- };
28
- }
29
- /**
30
- * Fetches all Sui coin balances for a given address.
31
- */
32
- async getAllBalances(userAddress) {
33
- const response = await this.call("suix_getAllBalances", [
34
- userAddress,
35
- ]);
36
- return response.map((balance) => ({
37
- ...balance,
38
- coinType: this.toLongCoinObjectType(balance.coinType),
39
- }));
40
- }
41
- async call(method, params) {
42
- const response = await fetch(this.rpcUrl, {
43
- method: "POST",
44
- headers: {
45
- "Content-Type": "application/json",
46
- },
47
- body: JSON.stringify({
48
- jsonrpc: "2.0",
49
- id: 1,
50
- method,
51
- params,
52
- }),
53
- });
54
- const data = await response.json();
55
- if (data.error) {
56
- throw new Error(`RPC Error (${method}): ${data.error.message}`);
57
- }
58
- if (!data.result) {
59
- throw new Error(`Invalid response from RPC (${method})`);
60
- }
61
- return data.result;
62
- }
63
- /**
64
- * Parse native coin object type from the long format to the short format.
65
- */
66
- toShortCoinObjectType(coinObjectType) {
67
- return coinObjectType === this.suiNativeCoinObjectTypeLong
68
- ? this.suiNativeCoinObjectTypeShort
69
- : coinObjectType;
70
- }
71
- /**
72
- * Parse native coin object type from the short format to the long format.
73
- */
74
- toLongCoinObjectType(coinObjectType) {
75
- return coinObjectType === this.suiNativeCoinObjectTypeShort
76
- ? this.suiNativeCoinObjectTypeLong
77
- : coinObjectType;
78
- }
79
- }
80
- //# sourceMappingURL=suiRpcClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suiRpcClient.js","sourceRoot":"","sources":["../../../src/services/external/suiRpcClient.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,YAAY;IACvB;;;OAGG;IACK,2BAA2B,GACjC,8EAA8E,CAAC;IAEjF;;;OAGG;IACK,4BAA4B,GAAG,eAAe,CAAC;IAE/C,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,YAAoB;QAEpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAiB,iBAAiB,EAAE;YAClE,WAAW;YACX,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC;SACzC,CAAC,CAAC;QAEH,OAAO;YACL,GAAG,QAAQ;YACX,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACvD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,WAAmB;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAmB,qBAAqB,EAAE;YACxE,WAAW;SACZ,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,OAAO;YACV,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;SACtD,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,MAAc,EAAE,MAAa;QACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,CAAC;gBACL,MAAM;gBACN,MAAM;aACP,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,IAAI,GAAuB,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEvD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACjE;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,GAAG,CAAC,CAAC;SAC1D;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,cAAsB;QAClD,OAAO,cAAc,KAAK,IAAI,CAAC,2BAA2B;YACxD,CAAC,CAAC,IAAI,CAAC,4BAA4B;YACnC,CAAC,CAAC,cAAc,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,cAAsB;QACjD,OAAO,cAAc,KAAK,IAAI,CAAC,4BAA4B;YACzD,CAAC,CAAC,IAAI,CAAC,2BAA2B;YAClC,CAAC,CAAC,cAAc,CAAC;IACrB,CAAC;CACF"}
@@ -1,108 +0,0 @@
1
- import { TOKEN_PRICE_API_URL } from "../../core/constants";
2
- import { formatUsdAmount } from "../internal/numberService";
3
- const MAX_COINGECKO_QUERY_TOKENS = 100;
4
- export const fetchHistoricalData = async (coingeckoId, timeFrame) => {
5
- const now = Math.floor(Date.now() / 1000);
6
- let from;
7
- switch (timeFrame) {
8
- case "1H":
9
- from = now - 3600;
10
- break;
11
- case "1D":
12
- from = now - 86400;
13
- break;
14
- case "1W":
15
- from = now - 604800;
16
- break;
17
- case "1Y":
18
- from = now - 31536000;
19
- break;
20
- }
21
- try {
22
- const response = await fetch(`${TOKEN_PRICE_API_URL}?action=getHistoricalData&id=${coingeckoId}&vs_currency=usd&from=${from}&to=${now}`);
23
- if (!response.ok) {
24
- throw new Error("Network response was not ok");
25
- }
26
- return await response.json();
27
- }
28
- catch (error) {
29
- console.error("Error fetching historical data:", error);
30
- return null;
31
- }
32
- };
33
- export const fetchTokensData = async (tokens) => {
34
- try {
35
- const coingeckoIds = Array.from(new Set(tokens.map((token) => token.coingeckoId).filter(Boolean)));
36
- if (!coingeckoIds.length) {
37
- throw new Error("No valid CoinGecko IDs provided");
38
- }
39
- if (coingeckoIds.length > MAX_COINGECKO_QUERY_TOKENS) {
40
- throw new Error(`Too many tokens requested. Maximum allowed is ${MAX_COINGECKO_QUERY_TOKENS}.`);
41
- }
42
- const response = await fetch(`${TOKEN_PRICE_API_URL}?action=getCoinData&ids=${coingeckoIds.join(",")}`);
43
- if (!response.ok) {
44
- throw new Error("Network response was not ok");
45
- }
46
- const data = await response.json();
47
- if (!data || data.length === 0) {
48
- throw new Error("No data returned from API");
49
- }
50
- const tokenDataMap = new Map(data.map((coinData) => [
51
- coinData.id,
52
- {
53
- price: coinData.current_price,
54
- priceChange: coinData.price_change_percentage_24h,
55
- volume24h: {
56
- formatted: formatUsdAmount(coinData.total_volume, {
57
- includeSign: false,
58
- }),
59
- value: coinData.total_volume,
60
- },
61
- marketCap: {
62
- formatted: formatUsdAmount(coinData.market_cap, {
63
- includeSign: false,
64
- }),
65
- value: coinData.market_cap,
66
- },
67
- totalSupply: {
68
- formatted: formatUsdAmount(coinData.total_supply, {
69
- includeSign: false,
70
- }),
71
- value: coinData.total_supply,
72
- },
73
- symbol: coinData.symbol,
74
- name: coinData.name,
75
- image: coinData.image,
76
- marketCapRank: coinData.market_cap_rank,
77
- fullyDilutedValuation: coinData.fully_diluted_valuation,
78
- high24h: coinData.high_24h,
79
- low24h: coinData.low_24h,
80
- priceChange24h: coinData.price_change_24h,
81
- marketCapChange24h: coinData.market_cap_change_24h,
82
- marketCapChangePercentage24h: coinData.market_cap_change_percentage_24h,
83
- circulatingSupply: coinData.circulating_supply,
84
- maxSupply: coinData.max_supply,
85
- ath: coinData.ath,
86
- athChangePercentage: coinData.ath_change_percentage,
87
- athDate: coinData.ath_date,
88
- atl: coinData.atl,
89
- atlChangePercentage: coinData.atl_change_percentage,
90
- atlDate: coinData.atl_date,
91
- roi: coinData.roi,
92
- lastUpdated: coinData.last_updated,
93
- priceChangePercentage24hInCurrency: coinData.price_change_percentage_24h_in_currency,
94
- },
95
- ]));
96
- return tokens.map((token) => ({
97
- ...token,
98
- tokenData: token.coingeckoId
99
- ? tokenDataMap.get(token.coingeckoId) || null
100
- : null,
101
- }));
102
- }
103
- catch (error) {
104
- console.error("Error fetching tokens data:", error);
105
- return tokens.map((token) => ({ ...token, tokenData: null }));
106
- }
107
- };
108
- //# sourceMappingURL=tokenDataService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenDataService.js","sourceRoot":"","sources":["../../../src/services/external/tokenDataService.ts"],"names":[],"mappings":"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"}