@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,546 +0,0 @@
1
- import { ChainType } from "@0xsquid/squid-types";
2
- import { ChainNotConfiguredError } from "@wagmi/core";
3
- import getProperty from "lodash/get";
4
- import { isAddress, SwitchChainError } from "viem";
5
- import { chainTypeToDefaultChainIdMap } from "../../core/constants";
6
- import { walletStoreLinks } from "../../core/wallets";
7
- import { WidgetEvents } from "../../services/internal/eventService";
8
- import { isBitcoinAddressValid } from "./bitcoinService";
9
- import { connectCosmosWallet, isCosmosAddressValid } from "./cosmosService";
10
- import { isSolanaAddressValid } from "./solanaService";
11
- import { isSuiAddressValid } from "./suiService";
12
- import { isXrplAddressValid } from "./xrplService";
13
- const chainTypeToTrimLength = {
14
- // 0x1234...5678
15
- [ChainType.EVM]: {
16
- start: 6,
17
- end: 4,
18
- },
19
- // osmo1234...5678
20
- [ChainType.COSMOS]: {
21
- start: 8,
22
- end: 4,
23
- },
24
- // 1A1zP1eP...vfNa
25
- [ChainType.BTC]: {
26
- start: 8,
27
- end: 4,
28
- },
29
- // 6fq5...AmcC
30
- [ChainType.SOLANA]: {
31
- start: 4,
32
- end: 4,
33
- },
34
- // 0x1234...5678
35
- [ChainType.SUI]: {
36
- start: 6,
37
- end: 4,
38
- },
39
- // r9uP...s6mN
40
- [ChainType.XRPL]: {
41
- start: 4,
42
- end: 4,
43
- },
44
- };
45
- export const formatHash = ({ chainType, hash }) => {
46
- if (!hash)
47
- return "";
48
- let chainTypeFormat = chainType;
49
- if (!chainType) {
50
- if (hash?.startsWith("0x")) {
51
- chainTypeFormat = ChainType.EVM;
52
- }
53
- else {
54
- chainTypeFormat = ChainType.COSMOS;
55
- }
56
- }
57
- const trimLengthStart = chainTypeToTrimLength[chainTypeFormat].start;
58
- const trimLengthEnd = chainTypeToTrimLength[chainTypeFormat].end;
59
- // return the same hash if its length is less than the trim length
60
- if (hash.length <= trimLengthStart + trimLengthEnd)
61
- return hash;
62
- return (hash.slice(0, trimLengthStart) +
63
- "..." +
64
- hash.slice(hash.length - trimLengthEnd, hash.length));
65
- };
66
- export const isWalletAddressValid = (chainData, address) => {
67
- if (!address || !chainData?.chainType)
68
- return false;
69
- switch (chainData.chainType) {
70
- case ChainType.EVM:
71
- return isAddress(address);
72
- case ChainType.COSMOS:
73
- return isCosmosAddressValid(chainData.bech32Config.bech32PrefixAccAddr, address);
74
- case ChainType.BTC:
75
- return isBitcoinAddressValid(address);
76
- case ChainType.SOLANA:
77
- return isSolanaAddressValid(address);
78
- case ChainType.SUI:
79
- return isSuiAddressValid(address);
80
- case ChainType.XRPL:
81
- return isXrplAddressValid(address);
82
- }
83
- };
84
- export const redirectToExtensionsStore = (wallet) => {
85
- const { userAgent } = navigator;
86
- let link;
87
- if (userAgent.indexOf("Firefox") > -1) {
88
- link = walletStoreLinks[wallet.connectorId]?.firefox;
89
- }
90
- else if (userAgent.indexOf("Chrome") > -1) {
91
- link = walletStoreLinks[wallet.connectorId]?.chrome;
92
- }
93
- if (link && link !== "") {
94
- window?.open(link, "_blank")?.focus();
95
- }
96
- };
97
- /**
98
- * Dynamically accesses a nested property of an object based on a dot-separated string path.
99
- * Returns the value of the property if found, otherwise undefined.
100
- * e.g. "xfi.keplr" will return window.xfi.keplr
101
- */
102
- export const accessProperty = (object, path) => {
103
- const value = getProperty(object, path);
104
- if (value === undefined) {
105
- console.error(`Property "${path}" not found while reading object`, object);
106
- }
107
- return value;
108
- };
109
- const definedInWindow = (path, clientWindow) => {
110
- if (!path || !clientWindow)
111
- return false;
112
- const parts = path.split(".");
113
- let obj = clientWindow;
114
- for (const part of parts) {
115
- if (obj && typeof obj === "object" && part in obj) {
116
- obj = obj[part];
117
- }
118
- else {
119
- return false;
120
- }
121
- }
122
- return Boolean(obj);
123
- };
124
- export const populateWallets = (window, wallets) => {
125
- return wallets.map((wallet) => {
126
- if (!wallet.isInstalled) {
127
- return {
128
- ...wallet,
129
- isInstalled() {
130
- return definedInWindow(wallet.windowFlag, window);
131
- },
132
- };
133
- }
134
- return wallet;
135
- });
136
- };
137
- /**
138
- * Get the base chain to connect to
139
- * If only one chain type is selected, use that chain type
140
- * Otherwise, use the wallet's type
141
- * This is mainly used for Cosmos wallets, they need a reference chain to connect to (because addresses are different on each chain)
142
- * @param wallet
143
- * @param chain
144
- * @param selectedChainTypes
145
- * @param findChain
146
- * @returns
147
- */
148
- export const getDefaultChain = (wallet, chain, selectedChainTypes, findChain) => {
149
- // If a chain is provided, use that chain
150
- if (chain)
151
- return chain;
152
- let walletType = wallet.isMultiChain ? undefined : wallet.type;
153
- // If only one chain type is selected, use that chain type
154
- if (selectedChainTypes?.length === 1) {
155
- const chainType = selectedChainTypes[0];
156
- walletType = chainType;
157
- }
158
- if (!walletType)
159
- return undefined;
160
- return findChain(chainTypeToDefaultChainIdMap[walletType]);
161
- };
162
- /**
163
- * Sort order:
164
- * 1. Connected wallets
165
- * 2. Installed wallets
166
- * 3. Priority wallets
167
- * 4. The rest
168
- *
169
- * On mobile, Injected and WalletConnect are always on top,
170
- * after installed wallets.
171
- *
172
- * @returns The sorted wallets
173
- */
174
- export function sortWallets(a, b, { isMobile, connectedWallets, priorityList = [], }) {
175
- // Sort connected wallets first
176
- const aIsConnected = connectedWallets?.some((w) => w.connectorId === a.connectorId);
177
- const bIsConnected = connectedWallets?.some((w) => w.connectorId === b.connectorId);
178
- if (aIsConnected && !bIsConnected)
179
- return -1;
180
- if (!aIsConnected && bIsConnected)
181
- return 1;
182
- // Then sort installed wallets
183
- const aIsInstalled = a.isInstalled?.();
184
- const bIsInstalled = b.isInstalled?.();
185
- if (aIsInstalled && !bIsInstalled)
186
- return -1;
187
- if (!aIsInstalled && bIsInstalled)
188
- return 1;
189
- // Sort by priority list
190
- const aPriorityIndex = priorityList.indexOf(a.connectorId);
191
- const bPriorityIndex = priorityList.indexOf(b.connectorId);
192
- if (aPriorityIndex !== -1 || bPriorityIndex !== -1) {
193
- if (aPriorityIndex === -1)
194
- return 1;
195
- if (bPriorityIndex === -1)
196
- return -1;
197
- return aPriorityIndex - bPriorityIndex;
198
- }
199
- // Mobile-specific sorting
200
- if (isMobile) {
201
- if (a.connectorId === "injected" && b.connectorId !== "injected")
202
- return -1;
203
- if (a.connectorId !== "injected" && b.connectorId === "injected")
204
- return 1;
205
- if (a.connectorId === "walletConnect" && b.connectorId !== "walletConnect")
206
- return -1;
207
- if (a.connectorId !== "walletConnect" && b.connectorId === "walletConnect")
208
- return 1;
209
- }
210
- return 0;
211
- }
212
- export function areSameAddress(address1, address2) {
213
- if (!address1 || !address2)
214
- return false;
215
- return address1.trim().toLowerCase() === address2.trim().toLowerCase();
216
- }
217
- export function sortAddressBook(a, b, selectedAddress) {
218
- if (!selectedAddress)
219
- return 0;
220
- if (areSameAddress(a.address, selectedAddress)) {
221
- return -1;
222
- }
223
- if (areSameAddress(b.address, selectedAddress)) {
224
- return 1;
225
- }
226
- return 0;
227
- }
228
- export const calculateTotalUsdBalanceUSD = (tokens) => {
229
- const totalUsd = tokens.reduce((total, token) => {
230
- const balance = parseFloat(token.balance);
231
- const usdPrice = token.usdPrice ?? 0;
232
- const balanceUsd = balance * usdPrice;
233
- return total + balanceUsd;
234
- }, 0);
235
- // Convert to string with high precision
236
- const preciseTotal = totalUsd.toFixed(18);
237
- // Remove trailing zeros and decimal point if necessary
238
- const trimmedTotal = preciseTotal.replace(/\.?0+$/, "");
239
- return trimmedTotal;
240
- };
241
- export function addTokenToWallet({ token: { address, decimals, symbol, logoURI }, provider, }) {
242
- if (!address || !symbol || !decimals || !logoURI)
243
- return;
244
- try {
245
- return provider.request({
246
- method: "wallet_watchAsset",
247
- params: {
248
- type: "ERC20",
249
- options: {
250
- address,
251
- symbol,
252
- decimals,
253
- image: logoURI,
254
- },
255
- },
256
- });
257
- }
258
- catch (error) {
259
- console.debug("Error adding token to wallet:", error);
260
- }
261
- }
262
- export function isEvmChainNotSupportedError(error) {
263
- return (error instanceof ChainNotConfiguredError ||
264
- error instanceof SwitchChainError);
265
- }
266
- export const getWalletSupportedChainTypes = (wallet) => {
267
- if (!wallet.isMultiChain)
268
- return [];
269
- return wallet.supportedNetworks.map((config) => config.chainType);
270
- };
271
- export const getConnectorForChainType = (wallet, chainType) => {
272
- // For multi-chain wallets
273
- if (wallet.isMultiChain) {
274
- const networkConfig = wallet.supportedNetworks.find((config) => config.chainType === chainType);
275
- return networkConfig?.connector;
276
- }
277
- // For single-chain wallets, return the wallet's connector if chain type matches
278
- if (wallet.type === chainType) {
279
- return wallet.connector;
280
- }
281
- return undefined;
282
- };
283
- export function walletSupportsChainType(wallet, chainType) {
284
- if (wallet.isMultiChain) {
285
- return wallet.supportedNetworks.some((network) => network.chainType === chainType);
286
- }
287
- return wallet.type === chainType;
288
- }
289
- const connectByChainType = async (chainType, wallet, defaultChain, params) => {
290
- if (!chainType) {
291
- throw new Error(`Unsupported wallet type: ${chainType}`);
292
- }
293
- // Get connector for chain type if it's a multi-chain wallet
294
- const connector = getConnectorForChainType(wallet, chainType);
295
- switch (chainType) {
296
- case ChainType.EVM:
297
- return params.connectEvm.mutateAsync({
298
- wallet: {
299
- ...wallet,
300
- connector,
301
- },
302
- });
303
- case ChainType.COSMOS:
304
- return connectCosmosWallet({ ...wallet, connector }, defaultChain, {
305
- connectCosmos: params.connectCosmos,
306
- cosmosConnectedWallet: params.cosmosConnectedWallet,
307
- });
308
- case ChainType.SOLANA:
309
- return params.connectSolana.mutateAsync({
310
- wallet: {
311
- ...wallet,
312
- connector,
313
- },
314
- });
315
- case ChainType.BTC:
316
- return params.connectBitcoin.mutateAsync({
317
- wallet: {
318
- ...wallet,
319
- connector,
320
- },
321
- });
322
- case ChainType.XRPL:
323
- return params.connectXrpl.mutateAsync({
324
- wallet: {
325
- ...wallet,
326
- connector,
327
- },
328
- });
329
- case ChainType.SUI:
330
- return params.connectSui.mutateAsync({
331
- wallet: {
332
- ...wallet,
333
- connector,
334
- },
335
- });
336
- }
337
- };
338
- const getChainTypesToConnect = (selectedChainTypes, defaultChain, supportedChains) => {
339
- if (selectedChainTypes?.length) {
340
- return selectedChainTypes;
341
- }
342
- if (defaultChain) {
343
- return [defaultChain.chainType];
344
- }
345
- return supportedChains.map((chain) => chain.chainType);
346
- };
347
- const connectMultiChainWallet = async (params) => {
348
- if (!params.wallet.isMultiChain) {
349
- return null;
350
- }
351
- const results = [];
352
- // This should be defined, but in some cases (like widget connection) it's not
353
- const supportedChains = params.wallet.supportedNetworks;
354
- // Depending on params, we need to connect to specific chains or just one
355
- const chainTypesToConnect = getChainTypesToConnect(params.selectedChainTypes, params.selectedChain, supportedChains);
356
- // Connect to each chain type
357
- for (const chainConfig of supportedChains) {
358
- if (!chainTypesToConnect.includes(chainConfig.chainType)) {
359
- continue;
360
- }
361
- const defaultChain = getDefaultChain(params.wallet, params.selectedChain, [chainConfig.chainType], params.findChain);
362
- try {
363
- const result = await connectByChainType(chainConfig.chainType, params.wallet, defaultChain, {
364
- connectEvm: params.connectEvm,
365
- connectCosmos: params.connectCosmos,
366
- cosmosConnectedWallet: params.cosmosConnectedWallet,
367
- connectSolana: params.connectSolana,
368
- connectBitcoin: params.connectBitcoin,
369
- connectSui: params.connectSui,
370
- connectXrpl: params.connectXrpl,
371
- });
372
- if (result) {
373
- results.push({
374
- chainType: chainConfig.chainType,
375
- data: result,
376
- });
377
- }
378
- }
379
- catch (error) {
380
- console.error(`Failed to connect ${chainConfig.chainType}:`, error);
381
- }
382
- }
383
- return results.length > 0
384
- ? {
385
- wallet: params.wallet,
386
- addresses: results,
387
- }
388
- : null;
389
- };
390
- const connectSingleChainWallet = async (params) => {
391
- if (params.wallet.isMultiChain) {
392
- return null;
393
- }
394
- const defaultChain = params.selectedChain;
395
- const result = await connectByChainType(params.wallet.type, params.wallet, defaultChain, {
396
- connectEvm: params.connectEvm,
397
- connectCosmos: params.connectCosmos,
398
- cosmosConnectedWallet: params.cosmosConnectedWallet,
399
- connectSolana: params.connectSolana,
400
- connectBitcoin: params.connectBitcoin,
401
- connectSui: params.connectSui,
402
- connectXrpl: params.connectXrpl,
403
- });
404
- return result
405
- ? {
406
- wallet: params.wallet,
407
- addresses: [
408
- {
409
- chainType: params.wallet.type,
410
- data: result,
411
- },
412
- ],
413
- }
414
- : null;
415
- };
416
- export const connectWallet = async (params) => {
417
- try {
418
- const result = params.wallet.isMultiChain
419
- ? await connectMultiChainWallet(params)
420
- : await connectSingleChainWallet(params);
421
- if (result) {
422
- // Dispatch wallet connect event for each connected address
423
- result.addresses.forEach(({ chainType, data }) => {
424
- WidgetEvents.getInstance().dispatchWalletConnect({
425
- walletAddress: data.address,
426
- chainType: chainType,
427
- provider: params.wallet.connectorId,
428
- });
429
- });
430
- }
431
- return result;
432
- }
433
- catch (error) {
434
- // Dispatch wallet reject event
435
- if (params.selectedChain) {
436
- WidgetEvents.getInstance().dispatchWalletReject({
437
- chainId: params.selectedChain.chainId,
438
- provider: params.wallet.name,
439
- reason: error instanceof Error ? error.message : "Unknown error",
440
- });
441
- }
442
- throw error;
443
- }
444
- };
445
- /**
446
- * Wallets may have a cancelConnect method
447
- * This is used to cancel a pending connection and clean up resources
448
- * (e.g. network requests, event listeners, etc.)
449
- */
450
- export const cancelConnectWallet = (wallet) => {
451
- // TODO: implement cancel connect for multi-chain wallets
452
- if (wallet.isMultiChain) {
453
- return;
454
- }
455
- switch (wallet.type) {
456
- case ChainType.XRPL:
457
- return wallet.connector.cancelConnect?.();
458
- default:
459
- return;
460
- }
461
- };
462
- // Issues with Rabby wallet on some chains
463
- // we need to wait some time before getting transaction receipt
464
- // https://github.com/ethers-io/ethers.js/issues/4760
465
- export const isProblematicConnector = (connector) => {
466
- return (connector?.id != null &&
467
- // TODO: inconsistent connector ID behavior, investigate and debug Wagmi
468
- ["rabby", "io.rabby"].includes(connector.id));
469
- };
470
- export function mergeWallets({ multiChainWallets, singleChainWallets, }) {
471
- const mergedWallets = [...multiChainWallets, ...singleChainWallets];
472
- // if mergedWallets includes single-chain wallets with duplicate connector IDs
473
- // create a new multi-chain wallet with the same connector ID and add all supported networks
474
- const unifiedWallets = mergedWallets.reduce((acc, wallet) => {
475
- const existingWallet = acc.find((w) => w.connectorId === wallet.connectorId);
476
- if (existingWallet && !wallet.isMultiChain) {
477
- if (existingWallet.isMultiChain) {
478
- // if existing wallet is already a multi-chain wallet
479
- // we just need to add the new supported network
480
- if (existingWallet.supportedNetworks.every((network) => network.chainType !== wallet.type)) {
481
- // remove the existing wallet from the array
482
- acc.splice(acc.indexOf(existingWallet), 1);
483
- // add the new wallet with all supported networks
484
- acc.push({
485
- isMultiChain: true,
486
- supportedNetworks: [
487
- ...existingWallet.supportedNetworks,
488
- {
489
- chainType: wallet.type,
490
- connector: wallet.connector,
491
- },
492
- ],
493
- // add common properties
494
- connectorId: existingWallet.connectorId,
495
- name: existingWallet.name,
496
- icon: existingWallet.icon,
497
- windowFlag: existingWallet.windowFlag,
498
- connectorName: existingWallet.connectorName,
499
- isInstalled: existingWallet.isInstalled,
500
- skipInstallCheck: existingWallet.skipInstallCheck,
501
- isMobile: existingWallet.isMobile,
502
- rdns: existingWallet.rdns,
503
- });
504
- }
505
- }
506
- else {
507
- // otherwise, if existing wallet is a single-chain wallet
508
- // we need to create a new multi-chain wallet with the same connector ID
509
- // remove the existing wallet from the array
510
- acc.splice(acc.indexOf(existingWallet), 1);
511
- // add the new wallet with all supported networks
512
- if (existingWallet.type !== wallet.type) {
513
- acc.push({
514
- isMultiChain: true,
515
- supportedNetworks: [
516
- {
517
- chainType: existingWallet.type,
518
- connector: existingWallet.connector,
519
- },
520
- {
521
- chainType: wallet.type,
522
- connector: wallet.connector,
523
- },
524
- ],
525
- // add common properties
526
- connectorId: existingWallet.connectorId,
527
- name: existingWallet.name,
528
- icon: existingWallet.icon,
529
- windowFlag: existingWallet.windowFlag,
530
- connectorName: existingWallet.connectorName,
531
- isInstalled: existingWallet.isInstalled,
532
- skipInstallCheck: existingWallet.skipInstallCheck,
533
- isMobile: existingWallet.isMobile,
534
- rdns: existingWallet.rdns,
535
- });
536
- }
537
- }
538
- }
539
- else {
540
- acc.push(wallet);
541
- }
542
- return acc;
543
- }, []);
544
- return unifiedWallets;
545
- }
546
- //# sourceMappingURL=walletService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"walletService.js","sourceRoot":"","sources":["../../../src/services/internal/walletService.ts"],"names":[],"mappings":"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"}