@0xsquid/react-hooks 7.7.0 → 8.0.0-beta.0

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 (363) hide show
  1. package/dist/core/constants.d.ts +0 -2
  2. package/dist/core/queries/queries-keys.d.ts +2 -1
  3. package/dist/core/types/config.d.ts +27 -4
  4. package/dist/core/types/swap.d.ts +1 -0
  5. package/dist/hooks/chains/useSquidChains.d.ts +5 -8
  6. package/dist/hooks/swap/useSwap.d.ts +1 -1
  7. package/dist/hooks/tokens/useAllConnectedWalletBalances.d.ts +2 -1
  8. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.d.ts +2 -1
  9. package/dist/hooks/tokens/useSquidTokens.d.ts +5 -1
  10. package/dist/hooks/transaction/useEstimate.d.ts +0 -2
  11. package/dist/index-B3FG6tRj.js +6021 -0
  12. package/dist/index-B3FG6tRj.js.map +1 -0
  13. package/dist/index-CeIwio11.js +41015 -0
  14. package/dist/index-CeIwio11.js.map +1 -0
  15. package/dist/index-CjYMwYuT.js +41267 -0
  16. package/dist/index-CjYMwYuT.js.map +1 -0
  17. package/dist/index-CoxuUJzG.js +6021 -0
  18. package/dist/index-CoxuUJzG.js.map +1 -0
  19. package/dist/index.esm.js +36 -0
  20. package/dist/index.esm.js.map +1 -0
  21. package/dist/index.js +292 -6
  22. package/dist/index.js.map +1 -1
  23. package/dist/secretService-C6ack504.js +168 -0
  24. package/dist/secretService-C6ack504.js.map +1 -0
  25. package/dist/{services/external/secretService.js → secretService-CgLleYSR.js} +43 -8
  26. package/dist/secretService-CgLleYSR.js.map +1 -0
  27. package/dist/services/internal/assetsService.d.ts +18 -19
  28. package/dist/services/internal/configService.d.ts +8 -16
  29. package/dist/services/internal/estimateService.d.ts +0 -1
  30. package/package.json +18 -4
  31. package/dist/core/abis/ics20.json +0 -128
  32. package/dist/core/client/index.js +0 -38
  33. package/dist/core/client/index.js.map +0 -1
  34. package/dist/core/connectors/bitcoin/errors/index.js +0 -22
  35. package/dist/core/connectors/bitcoin/errors/index.js.map +0 -1
  36. package/dist/core/connectors/bitcoin/helpers.js +0 -91
  37. package/dist/core/connectors/bitcoin/helpers.js.map +0 -1
  38. package/dist/core/connectors/bitcoin/index.js +0 -2
  39. package/dist/core/connectors/bitcoin/index.js.map +0 -1
  40. package/dist/core/connectors/bitcoin/wallets/index.js +0 -4
  41. package/dist/core/connectors/bitcoin/wallets/index.js.map +0 -1
  42. package/dist/core/connectors/bitcoin/wallets/keplr.js +0 -28
  43. package/dist/core/connectors/bitcoin/wallets/keplr.js.map +0 -1
  44. package/dist/core/connectors/bitcoin/wallets/phantom.js +0 -56
  45. package/dist/core/connectors/bitcoin/wallets/phantom.js.map +0 -1
  46. package/dist/core/connectors/bitcoin/wallets/unisat.js +0 -28
  47. package/dist/core/connectors/bitcoin/wallets/unisat.js.map +0 -1
  48. package/dist/core/connectors/xrpl/CrossMark.js +0 -76
  49. package/dist/core/connectors/xrpl/CrossMark.js.map +0 -1
  50. package/dist/core/connectors/xrpl/WalletConnect.js +0 -194
  51. package/dist/core/connectors/xrpl/WalletConnect.js.map +0 -1
  52. package/dist/core/connectors/xrpl/Xaman.js +0 -71
  53. package/dist/core/connectors/xrpl/Xaman.js.map +0 -1
  54. package/dist/core/connectors/xrpl/XamanQr.js +0 -95
  55. package/dist/core/connectors/xrpl/XamanQr.js.map +0 -1
  56. package/dist/core/connectors/xrpl/XrplMetamaskSnap.js +0 -176
  57. package/dist/core/connectors/xrpl/XrplMetamaskSnap.js.map +0 -1
  58. package/dist/core/constants.js +0 -159
  59. package/dist/core/constants.js.map +0 -1
  60. package/dist/core/externalLinks.js +0 -21
  61. package/dist/core/externalLinks.js.map +0 -1
  62. package/dist/core/index.js +0 -4
  63. package/dist/core/index.js.map +0 -1
  64. package/dist/core/multicall3.js +0 -462
  65. package/dist/core/multicall3.js.map +0 -1
  66. package/dist/core/providers/BitcoinProvider.js +0 -15
  67. package/dist/core/providers/BitcoinProvider.js.map +0 -1
  68. package/dist/core/providers/CosmosProvider.js +0 -13
  69. package/dist/core/providers/CosmosProvider.js.map +0 -1
  70. package/dist/core/providers/EvmProvider.js +0 -15
  71. package/dist/core/providers/EvmProvider.js.map +0 -1
  72. package/dist/core/providers/SolanaProvider.js +0 -15
  73. package/dist/core/providers/SolanaProvider.js.map +0 -1
  74. package/dist/core/providers/SuiProvider.js +0 -15
  75. package/dist/core/providers/SuiProvider.js.map +0 -1
  76. package/dist/core/providers/XrplProvider.js +0 -15
  77. package/dist/core/providers/XrplProvider.js.map +0 -1
  78. package/dist/core/queries/queries-keys.js +0 -226
  79. package/dist/core/queries/queries-keys.js.map +0 -1
  80. package/dist/core/queries/react-query-config.js +0 -11
  81. package/dist/core/queries/react-query-config.js.map +0 -1
  82. package/dist/core/types/bitcoin.js +0 -2
  83. package/dist/core/types/bitcoin.js.map +0 -1
  84. package/dist/core/types/config.js +0 -2
  85. package/dist/core/types/config.js.map +0 -1
  86. package/dist/core/types/dex.d.ts +0 -28
  87. package/dist/core/types/dex.js +0 -33
  88. package/dist/core/types/dex.js.map +0 -1
  89. package/dist/core/types/error.js +0 -18
  90. package/dist/core/types/error.js.map +0 -1
  91. package/dist/core/types/event.js +0 -2
  92. package/dist/core/types/event.js.map +0 -1
  93. package/dist/core/types/evm.js +0 -2
  94. package/dist/core/types/evm.js.map +0 -1
  95. package/dist/core/types/history.js +0 -7
  96. package/dist/core/types/history.js.map +0 -1
  97. package/dist/core/types/index.js +0 -4
  98. package/dist/core/types/index.js.map +0 -1
  99. package/dist/core/types/onramps/index.js +0 -3
  100. package/dist/core/types/onramps/index.js.map +0 -1
  101. package/dist/core/types/onramps/onramp.js +0 -2
  102. package/dist/core/types/onramps/onramp.js.map +0 -1
  103. package/dist/core/types/onramps/revolut.js +0 -2
  104. package/dist/core/types/onramps/revolut.js.map +0 -1
  105. package/dist/core/types/rpc.js +0 -2
  106. package/dist/core/types/rpc.js.map +0 -1
  107. package/dist/core/types/solana.js +0 -2
  108. package/dist/core/types/solana.js.map +0 -1
  109. package/dist/core/types/sui.js +0 -2
  110. package/dist/core/types/sui.js.map +0 -1
  111. package/dist/core/types/swap.js +0 -2
  112. package/dist/core/types/swap.js.map +0 -1
  113. package/dist/core/types/tokens.js +0 -2
  114. package/dist/core/types/tokens.js.map +0 -1
  115. package/dist/core/types/transaction.js +0 -47
  116. package/dist/core/types/transaction.js.map +0 -1
  117. package/dist/core/types/wallet.js +0 -19
  118. package/dist/core/types/wallet.js.map +0 -1
  119. package/dist/core/types/xrpl.js +0 -32
  120. package/dist/core/types/xrpl.js.map +0 -1
  121. package/dist/core/wagmiConfig.js +0 -81
  122. package/dist/core/wagmiConfig.js.map +0 -1
  123. package/dist/core/wallets.js +0 -357
  124. package/dist/core/wallets.js.map +0 -1
  125. package/dist/hooks/analytics/useTrackSearchEmpty.js +0 -22
  126. package/dist/hooks/analytics/useTrackSearchEmpty.js.map +0 -1
  127. package/dist/hooks/bitcoin/useBitcoin.js +0 -18
  128. package/dist/hooks/bitcoin/useBitcoin.js.map +0 -1
  129. package/dist/hooks/chains/useSquidChains.js +0 -107
  130. package/dist/hooks/chains/useSquidChains.js.map +0 -1
  131. package/dist/hooks/client/useClient.js +0 -63
  132. package/dist/hooks/client/useClient.js.map +0 -1
  133. package/dist/hooks/cosmos/useCosmos.js +0 -167
  134. package/dist/hooks/cosmos/useCosmos.js.map +0 -1
  135. package/dist/hooks/cosmos/useCosmosForChain.js +0 -29
  136. package/dist/hooks/cosmos/useCosmosForChain.js.map +0 -1
  137. package/dist/hooks/evm/useEvm.js +0 -68
  138. package/dist/hooks/evm/useEvm.js.map +0 -1
  139. package/dist/hooks/evm/useEvmWallets.js +0 -13
  140. package/dist/hooks/evm/useEvmWallets.js.map +0 -1
  141. package/dist/hooks/index.js +0 -54
  142. package/dist/hooks/index.js.map +0 -1
  143. package/dist/hooks/navigation/useKeyboardNavigation.js +0 -67
  144. package/dist/hooks/navigation/useKeyboardNavigation.js.map +0 -1
  145. package/dist/hooks/onramp/useFiatToCrypto.js +0 -298
  146. package/dist/hooks/onramp/useFiatToCrypto.js.map +0 -1
  147. package/dist/hooks/query/useSquidQueryClient.js +0 -23
  148. package/dist/hooks/query/useSquidQueryClient.js.map +0 -1
  149. package/dist/hooks/solana/useSolana.js +0 -81
  150. package/dist/hooks/solana/useSolana.js.map +0 -1
  151. package/dist/hooks/solana/useSolanaWallets.js +0 -8
  152. package/dist/hooks/solana/useSolanaWallets.js.map +0 -1
  153. package/dist/hooks/squid/useSquid.js +0 -55
  154. package/dist/hooks/squid/useSquid.js.map +0 -1
  155. package/dist/hooks/store/useAddressBookStore.js +0 -30
  156. package/dist/hooks/store/useAddressBookStore.js.map +0 -1
  157. package/dist/hooks/store/useAssetsColorsStore.js +0 -7
  158. package/dist/hooks/store/useAssetsColorsStore.js.map +0 -1
  159. package/dist/hooks/store/useDepositAddressStore.js +0 -12
  160. package/dist/hooks/store/useDepositAddressStore.js.map +0 -1
  161. package/dist/hooks/store/useFavoriteTokensStore.js +0 -28
  162. package/dist/hooks/store/useFavoriteTokensStore.js.map +0 -1
  163. package/dist/hooks/store/useHistoryStore.js +0 -129
  164. package/dist/hooks/store/useHistoryStore.js.map +0 -1
  165. package/dist/hooks/store/useSendTransactionStore.js +0 -21
  166. package/dist/hooks/store/useSendTransactionStore.js.map +0 -1
  167. package/dist/hooks/store/useSquidStore.js +0 -53
  168. package/dist/hooks/store/useSquidStore.js.map +0 -1
  169. package/dist/hooks/store/useWalletStore.js +0 -61
  170. package/dist/hooks/store/useWalletStore.js.map +0 -1
  171. package/dist/hooks/sui/useSui.js +0 -81
  172. package/dist/hooks/sui/useSui.js.map +0 -1
  173. package/dist/hooks/sui/useSuiWallets.js +0 -23
  174. package/dist/hooks/sui/useSuiWallets.js.map +0 -1
  175. package/dist/hooks/swap/useDepositAddress.js +0 -63
  176. package/dist/hooks/swap/useDepositAddress.js.map +0 -1
  177. package/dist/hooks/swap/useSwap.js +0 -203
  178. package/dist/hooks/swap/useSwap.js.map +0 -1
  179. package/dist/hooks/tokens/useAllConnectedWalletBalances.js +0 -114
  180. package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +0 -1
  181. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +0 -130
  182. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +0 -1
  183. package/dist/hooks/tokens/useBalance.js +0 -157
  184. package/dist/hooks/tokens/useBalance.js.map +0 -1
  185. package/dist/hooks/tokens/useMultiChainBalance.js +0 -77
  186. package/dist/hooks/tokens/useMultiChainBalance.js.map +0 -1
  187. package/dist/hooks/tokens/useMultipleTokenPrices.js +0 -46
  188. package/dist/hooks/tokens/useMultipleTokenPrices.js.map +0 -1
  189. package/dist/hooks/tokens/useNativeBalance.js +0 -249
  190. package/dist/hooks/tokens/useNativeBalance.js.map +0 -1
  191. package/dist/hooks/tokens/useNativeTokenForChain.js +0 -30
  192. package/dist/hooks/tokens/useNativeTokenForChain.js.map +0 -1
  193. package/dist/hooks/tokens/useSingleTokenPrice.js +0 -38
  194. package/dist/hooks/tokens/useSingleTokenPrice.js.map +0 -1
  195. package/dist/hooks/tokens/useSquidTokens.js +0 -85
  196. package/dist/hooks/tokens/useSquidTokens.js.map +0 -1
  197. package/dist/hooks/tokens/useTokenHistoricalData.js +0 -23
  198. package/dist/hooks/tokens/useTokenHistoricalData.js.map +0 -1
  199. package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js +0 -58
  200. package/dist/hooks/transaction/send/useEstimateSendTransactionGas.js.map +0 -1
  201. package/dist/hooks/transaction/send/useSendTransaction.js +0 -245
  202. package/dist/hooks/transaction/send/useSendTransaction.js.map +0 -1
  203. package/dist/hooks/transaction/send/useSendTransactionGas.js +0 -73
  204. package/dist/hooks/transaction/send/useSendTransactionGas.js.map +0 -1
  205. package/dist/hooks/transaction/useAllTransactionsStatus.js +0 -127
  206. package/dist/hooks/transaction/useAllTransactionsStatus.js.map +0 -1
  207. package/dist/hooks/transaction/useApproval.js +0 -246
  208. package/dist/hooks/transaction/useApproval.js.map +0 -1
  209. package/dist/hooks/transaction/useErc20Allowance.js +0 -43
  210. package/dist/hooks/transaction/useErc20Allowance.js.map +0 -1
  211. package/dist/hooks/transaction/useEstimate.js +0 -118
  212. package/dist/hooks/transaction/useEstimate.js.map +0 -1
  213. package/dist/hooks/transaction/useEstimatePriceImpact.js +0 -31
  214. package/dist/hooks/transaction/useEstimatePriceImpact.js.map +0 -1
  215. package/dist/hooks/transaction/useExecuteTransaction.js +0 -678
  216. package/dist/hooks/transaction/useExecuteTransaction.js.map +0 -1
  217. package/dist/hooks/transaction/useGetRoute.js +0 -207
  218. package/dist/hooks/transaction/useGetRoute.js.map +0 -1
  219. package/dist/hooks/transaction/useIcs20Allowance.js +0 -46
  220. package/dist/hooks/transaction/useIcs20Allowance.js.map +0 -1
  221. package/dist/hooks/transaction/useRouteWarnings.js +0 -19
  222. package/dist/hooks/transaction/useRouteWarnings.js.map +0 -1
  223. package/dist/hooks/transaction/useSendTransactionStatus.js +0 -63
  224. package/dist/hooks/transaction/useSendTransactionStatus.js.map +0 -1
  225. package/dist/hooks/transaction/useSwapTransactionStatus.js +0 -114
  226. package/dist/hooks/transaction/useSwapTransactionStatus.js.map +0 -1
  227. package/dist/hooks/user/useAvatar.js +0 -40
  228. package/dist/hooks/user/useAvatar.js.map +0 -1
  229. package/dist/hooks/user/useHistory.js +0 -103
  230. package/dist/hooks/user/useHistory.js.map +0 -1
  231. package/dist/hooks/user/useUserParams.js +0 -33
  232. package/dist/hooks/user/useUserParams.js.map +0 -1
  233. package/dist/hooks/utils/useUtils.js +0 -20
  234. package/dist/hooks/utils/useUtils.js.map +0 -1
  235. package/dist/hooks/wallet/useAddToken.js +0 -49
  236. package/dist/hooks/wallet/useAddToken.js.map +0 -1
  237. package/dist/hooks/wallet/useAutoConnect.js +0 -92
  238. package/dist/hooks/wallet/useAutoConnect.js.map +0 -1
  239. package/dist/hooks/wallet/useEns.js +0 -57
  240. package/dist/hooks/wallet/useEns.js.map +0 -1
  241. package/dist/hooks/wallet/useGnosisContext.js +0 -74
  242. package/dist/hooks/wallet/useGnosisContext.js.map +0 -1
  243. package/dist/hooks/wallet/useIntegratorContext.js +0 -39
  244. package/dist/hooks/wallet/useIntegratorContext.js.map +0 -1
  245. package/dist/hooks/wallet/useMultiChainWallet.js +0 -210
  246. package/dist/hooks/wallet/useMultiChainWallet.js.map +0 -1
  247. package/dist/hooks/wallet/useSigner.js +0 -68
  248. package/dist/hooks/wallet/useSigner.js.map +0 -1
  249. package/dist/hooks/wallet/useStandardWallets.js +0 -26
  250. package/dist/hooks/wallet/useStandardWallets.js.map +0 -1
  251. package/dist/hooks/wallet/useWallet.js +0 -199
  252. package/dist/hooks/wallet/useWallet.js.map +0 -1
  253. package/dist/hooks/wallet/useWallets.js +0 -33
  254. package/dist/hooks/wallet/useWallets.js.map +0 -1
  255. package/dist/hooks/xrpl/useXrpl.js +0 -55
  256. package/dist/hooks/xrpl/useXrpl.js.map +0 -1
  257. package/dist/hooks/xrpl/useXrplTrustLine.js +0 -159
  258. package/dist/hooks/xrpl/useXrplTrustLine.js.map +0 -1
  259. package/dist/hooks/xrpl/useXrplWallets.js +0 -51
  260. package/dist/hooks/xrpl/useXrplWallets.js.map +0 -1
  261. package/dist/provider/index.js +0 -118
  262. package/dist/provider/index.js.map +0 -1
  263. package/dist/services/external/cosmosRestClient.js +0 -45
  264. package/dist/services/external/cosmosRestClient.js.map +0 -1
  265. package/dist/services/external/ens.js +0 -66
  266. package/dist/services/external/ens.js.map +0 -1
  267. package/dist/services/external/index.js +0 -3
  268. package/dist/services/external/index.js.map +0 -1
  269. package/dist/services/external/onrampAdapter.js +0 -52
  270. package/dist/services/external/onrampAdapter.js.map +0 -1
  271. package/dist/services/external/rpcService.js +0 -411
  272. package/dist/services/external/rpcService.js.map +0 -1
  273. package/dist/services/external/secretService.js.map +0 -1
  274. package/dist/services/external/suiRpcClient.js +0 -80
  275. package/dist/services/external/suiRpcClient.js.map +0 -1
  276. package/dist/services/external/tokenDataService.js +0 -108
  277. package/dist/services/external/tokenDataService.js.map +0 -1
  278. package/dist/services/external/websocket.js +0 -34
  279. package/dist/services/external/websocket.js.map +0 -1
  280. package/dist/services/external/xaman.js +0 -78
  281. package/dist/services/external/xaman.js.map +0 -1
  282. package/dist/services/external/xrplRpcClient.js +0 -167
  283. package/dist/services/external/xrplRpcClient.js.map +0 -1
  284. package/dist/services/index.js +0 -19
  285. package/dist/services/index.js.map +0 -1
  286. package/dist/services/internal/apiService.js +0 -21
  287. package/dist/services/internal/apiService.js.map +0 -1
  288. package/dist/services/internal/assetsService.js +0 -569
  289. package/dist/services/internal/assetsService.js.map +0 -1
  290. package/dist/services/internal/bitcoinService.js +0 -20
  291. package/dist/services/internal/bitcoinService.js.map +0 -1
  292. package/dist/services/internal/configService.js +0 -218
  293. package/dist/services/internal/configService.js.map +0 -1
  294. package/dist/services/internal/cosmosService.js +0 -141
  295. package/dist/services/internal/cosmosService.js.map +0 -1
  296. package/dist/services/internal/countryCurrencyMap.js +0 -1102
  297. package/dist/services/internal/countryCurrencyMap.js.map +0 -1
  298. package/dist/services/internal/errorService.js +0 -190
  299. package/dist/services/internal/errorService.js.map +0 -1
  300. package/dist/services/internal/estimateService.js +0 -227
  301. package/dist/services/internal/estimateService.js.map +0 -1
  302. package/dist/services/internal/eventService.js +0 -219
  303. package/dist/services/internal/eventService.js.map +0 -1
  304. package/dist/services/internal/evmService.js +0 -67
  305. package/dist/services/internal/evmService.js.map +0 -1
  306. package/dist/services/internal/fiatToCryptoService.js +0 -84
  307. package/dist/services/internal/fiatToCryptoService.js.map +0 -1
  308. package/dist/services/internal/fiatToCryptoService.test.js +0 -45
  309. package/dist/services/internal/fiatToCryptoService.test.js.map +0 -1
  310. package/dist/services/internal/numberService.js +0 -199
  311. package/dist/services/internal/numberService.js.map +0 -1
  312. package/dist/services/internal/priceService.js +0 -53
  313. package/dist/services/internal/priceService.js.map +0 -1
  314. package/dist/services/internal/searchService.js +0 -98
  315. package/dist/services/internal/searchService.js.map +0 -1
  316. package/dist/services/internal/sendTransaction.js +0 -191
  317. package/dist/services/internal/sendTransaction.js.map +0 -1
  318. package/dist/services/internal/sendTransactionStatus.js +0 -134
  319. package/dist/services/internal/sendTransactionStatus.js.map +0 -1
  320. package/dist/services/internal/solanaService.js +0 -142
  321. package/dist/services/internal/solanaService.js.map +0 -1
  322. package/dist/services/internal/suiService.js +0 -81
  323. package/dist/services/internal/suiService.js.map +0 -1
  324. package/dist/services/internal/transactionService.js +0 -210
  325. package/dist/services/internal/transactionService.js.map +0 -1
  326. package/dist/services/internal/transactionStatusService.js +0 -390
  327. package/dist/services/internal/transactionStatusService.js.map +0 -1
  328. package/dist/services/internal/walletService.js +0 -546
  329. package/dist/services/internal/walletService.js.map +0 -1
  330. package/dist/services/internal/walletStandardService.js +0 -128
  331. package/dist/services/internal/walletStandardService.js.map +0 -1
  332. package/dist/services/internal/xionService.js +0 -6
  333. package/dist/services/internal/xionService.js.map +0 -1
  334. package/dist/services/internal/xrplService.js +0 -52
  335. package/dist/services/internal/xrplService.js.map +0 -1
  336. package/dist/tests/apiService.test.js +0 -40
  337. package/dist/tests/apiService.test.js.map +0 -1
  338. package/dist/tests/assetsService.test.js +0 -487
  339. package/dist/tests/assetsService.test.js.map +0 -1
  340. package/dist/tests/configService.test.js +0 -673
  341. package/dist/tests/configService.test.js.map +0 -1
  342. package/dist/tests/estimateService.test.js +0 -429
  343. package/dist/tests/estimateService.test.js.map +0 -1
  344. package/dist/tests/fetchSquidData.js +0 -36
  345. package/dist/tests/fetchSquidData.js.map +0 -1
  346. package/dist/tests/jest-svg-transform.d.ts +0 -0
  347. package/dist/tests/jest-svg-transform.js +0 -21
  348. package/dist/tests/jest-svg-transform.js.map +0 -1
  349. package/dist/tests/numberService.test.js +0 -166
  350. package/dist/tests/numberService.test.js.map +0 -1
  351. package/dist/tests/priceService.test.js +0 -38
  352. package/dist/tests/priceService.test.js.map +0 -1
  353. package/dist/tests/sample.json +0 -0
  354. package/dist/tests/searchService.test.js +0 -86
  355. package/dist/tests/searchService.test.js.map +0 -1
  356. package/dist/tests/swapConfig.test.js +0 -332
  357. package/dist/tests/swapConfig.test.js.map +0 -1
  358. package/dist/tests/transactionService.test.js +0 -53
  359. package/dist/tests/transactionService.test.js.map +0 -1
  360. package/dist/tests/transactionStatusService.test.js +0 -165
  361. package/dist/tests/transactionStatusService.test.js.map +0 -1
  362. package/dist/tests/walletService.test.js +0 -488
  363. 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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"}