@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,194 +0,0 @@
1
- import { WalletConnectModal, } from "@walletconnect/modal";
2
- import UniversalProvider from "@walletconnect/universal-provider";
3
- import { getSdkError } from "@walletconnect/utils";
4
- import { XRPL_METHOD, XrplCAIP2ChainId, XrplNetwork, XrplTxStatus, } from "../../../core/types/xrpl";
5
- import { isXrplAddressValid } from "../../../services/internal/xrplService";
6
- const chains = [XrplCAIP2ChainId.MAINNET, XrplCAIP2ChainId.TESTNET];
7
- export class XrplWalletConnect {
8
- provider = null;
9
- session = null;
10
- modal = null;
11
- projectId;
12
- metadata;
13
- recommendedWalletId;
14
- listeners = {};
15
- constructor({ projectId, metadata, recommendedWalletId, }) {
16
- this.metadata = metadata;
17
- this.projectId = projectId;
18
- this.recommendedWalletId = recommendedWalletId;
19
- }
20
- validateInitialized() {
21
- if (!this.provider) {
22
- throw new Error("Provider is not initialized");
23
- }
24
- }
25
- /**
26
- * Sets up providers and event listeners, must be called before connecting
27
- *
28
- * - initializes WalletConnect UniversalProvider
29
- * - initializes WalletConnectModal
30
- * - attaches event listeners
31
- */
32
- async initialize() {
33
- if (this.provider)
34
- return;
35
- this.provider = await UniversalProvider.init({
36
- projectId: this.projectId,
37
- // logger: "debug",
38
- metadata: this.metadata,
39
- // We need to specify a custom storage prefix to avoid conflicts with Wagmi's walletConnect instance
40
- // https://docs.reown.com/walletkit/web/usage#core-instance-sharing
41
- customStoragePrefix: "squid-xrpl",
42
- });
43
- this.provider.client.on("session_delete", () => {
44
- this.emit("disconnect", undefined);
45
- });
46
- const options = this.recommendedWalletId
47
- ? {
48
- explorerRecommendedWalletIds: [this.recommendedWalletId],
49
- explorerExcludedWalletIds: "ALL",
50
- }
51
- : {};
52
- this.modal = new WalletConnectModal({
53
- projectId: this.projectId,
54
- chains,
55
- ...options,
56
- });
57
- }
58
- /**
59
- * Initializes WalletConnect and silently connects to the last session if it exists
60
- */
61
- async autoConnect() {
62
- await this.initialize();
63
- this.validateInitialized();
64
- const sessions = this.provider.client.session.getAll();
65
- if (sessions.length === 0) {
66
- this.emit("disconnect", undefined);
67
- return null;
68
- }
69
- const lastKeyIndex = sessions.length - 1;
70
- const lastSession = sessions[lastKeyIndex];
71
- return this.onSessionConnected(lastSession);
72
- }
73
- /**
74
- * Initializes WalletConnect and prompts the user to connect to a new session
75
- */
76
- async connect() {
77
- await this.initialize();
78
- this.validateInitialized();
79
- const { uri, approval } = await this.provider.client.connect({
80
- requiredNamespaces: {
81
- xrpl: {
82
- chains: [XrplCAIP2ChainId.MAINNET],
83
- methods: [XRPL_METHOD.SIGN_TRANSACTION],
84
- events: ["accountsChanged"],
85
- },
86
- },
87
- });
88
- let modalClosed = () => { };
89
- const modalClosedPromise = new Promise((_, reject) => {
90
- modalClosed = reject;
91
- });
92
- let unsubscribe = () => { };
93
- if (uri) {
94
- this.modal.openModal({ uri });
95
- unsubscribe = this.modal.subscribeModal((state) => {
96
- if (state.open === false) {
97
- // propagate the error by rejecting the promise
98
- // to avoid connect() from running forever
99
- modalClosed(new Error("User closed the modal"));
100
- }
101
- });
102
- }
103
- try {
104
- const session = await Promise.race([approval(), modalClosedPromise]);
105
- const address = await this.onSessionConnected(session);
106
- return address;
107
- }
108
- finally {
109
- unsubscribe();
110
- this.modal.closeModal();
111
- }
112
- }
113
- /**
114
- * Disconnects from the current session
115
- */
116
- async disconnect() {
117
- if (!this.session)
118
- throw new Error("Session is not connected");
119
- this.validateInitialized();
120
- await this.provider.client.disconnect({
121
- topic: this.session.topic,
122
- reason: getSdkError("USER_DISCONNECTED"),
123
- });
124
- }
125
- /**
126
- * Prompts the user to sign and submit a transaction
127
- */
128
- async signAndSubmit({ network, tx, }) {
129
- if (!this.session)
130
- throw new Error("Session is not connected");
131
- this.validateInitialized();
132
- const result = await this.provider.client.request({
133
- chainId: this.getWcChainId(network),
134
- topic: this.session.topic,
135
- request: {
136
- method: XRPL_METHOD.SIGN_TRANSACTION,
137
- params: {
138
- tx_json: tx,
139
- autofill: true,
140
- submit: true,
141
- },
142
- },
143
- });
144
- const { hash } = result.tx_json;
145
- if (!hash) {
146
- throw new Error("Invalid transaction hash");
147
- }
148
- return {
149
- hash,
150
- // Wallet side handles submitting and validating the transaction
151
- status: XrplTxStatus.SUCCESS,
152
- };
153
- }
154
- /**
155
- * Maps the given network to the WalletConnect chain ID format
156
- */
157
- getWcChainId(network) {
158
- switch (network) {
159
- case XrplNetwork.MAINNET:
160
- return XrplCAIP2ChainId.MAINNET;
161
- case XrplNetwork.TESTNET:
162
- return XrplCAIP2ChainId.TESTNET;
163
- default:
164
- throw new Error(`Network ${network} is not supported`);
165
- }
166
- }
167
- /**
168
- * Stores the provided session and returns the user's address
169
- */
170
- async onSessionConnected(session) {
171
- this.session = session;
172
- const allNamespaceAccounts = Object.values(session.namespaces).flatMap((namespace) => namespace.accounts);
173
- const [firstAccount] = allNamespaceAccounts;
174
- const address = firstAccount?.split(":")?.at(-1);
175
- if (address && isXrplAddressValid(address)) {
176
- return address;
177
- }
178
- throw new Error("No address found in session");
179
- }
180
- on(event, listener) {
181
- if (this.listeners[event])
182
- this.listeners[event]?.push(listener);
183
- else
184
- this.listeners[event] = [listener];
185
- return () => this.off(event, listener);
186
- }
187
- emit(event, args) {
188
- this.listeners[event]?.forEach((listener) => listener.apply(null, [args]));
189
- }
190
- off(event, listener) {
191
- this.listeners[event] = this.listeners[event]?.filter((existingListener) => listener !== existingListener);
192
- }
193
- }
194
- //# sourceMappingURL=WalletConnect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WalletConnect.js","sourceRoot":"","sources":["../../../../src/core/connectors/xrpl/WalletConnect.ts"],"names":[],"mappings":"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"}
@@ -1,71 +0,0 @@
1
- import { getXummClient, XamanClient } from "../../../services/external/xaman";
2
- import { XrplTxStatus, } from "../../types/xrpl";
3
- export class XamanConnector {
4
- xumm = null;
5
- validateXummInitialized() {
6
- if (!this.xumm) {
7
- throw new Error("Xumm is not initialized");
8
- }
9
- }
10
- async initializeXumm() {
11
- if (!this.xumm) {
12
- this.xumm = await getXummClient();
13
- }
14
- }
15
- async connect() {
16
- await this.initializeXumm();
17
- this.validateXummInitialized();
18
- const connectedAddress = await this.xumm.user.account;
19
- if (!connectedAddress) {
20
- throw new Error("User not connected");
21
- }
22
- return connectedAddress;
23
- }
24
- async signAndSubmit({ network, tx, }) {
25
- this.validateXummInitialized();
26
- if (!this.xumm.xapp) {
27
- throw new Error("Not in xApp context");
28
- }
29
- if (!this.xumm.payload) {
30
- throw new Error("Payload not available");
31
- }
32
- const xamanNetwork = XamanClient.getXamanNetwork(network);
33
- const txPayload = await this.xumm.payload.create({
34
- TransactionType: "Payment",
35
- options: {
36
- force_network: xamanNetwork,
37
- },
38
- txjson: tx,
39
- });
40
- await this.xumm.xapp.openSignRequest(txPayload);
41
- const response = await new Promise((resolve, reject) => {
42
- this.validateXummInitialized();
43
- if (!this.xumm.xapp) {
44
- reject(new Error("Not in xApp context"));
45
- }
46
- this.xumm.on("payload", async (data) => {
47
- this.validateXummInitialized();
48
- if (data && data.reason === "DECLINED") {
49
- reject(new Error("User rejected the request."));
50
- }
51
- if (data && data.reason === "SIGNED") {
52
- if (!this.xumm.payload) {
53
- throw new Error("Payload not available");
54
- }
55
- const fullPayload = await this.xumm.payload.get(data.uuid);
56
- if (fullPayload?.response.txid) {
57
- resolve({
58
- hash: fullPayload.response.txid,
59
- status: XrplTxStatus.SUCCESS,
60
- });
61
- }
62
- else {
63
- reject(new Error("Transaction hash not found"));
64
- }
65
- }
66
- });
67
- });
68
- return response;
69
- }
70
- }
71
- //# sourceMappingURL=Xaman.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Xaman.js","sourceRoot":"","sources":["../../../../src/core/connectors/xrpl/Xaman.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
1
- import { QrCodeGenerationError } from "../../../core/types/error";
2
- import { WidgetEvents } from "../../../services";
3
- import { websocket } from "../../../services/external/websocket";
4
- import { XamanClient } from "../../../services/external/xaman";
5
- import { XrplTxStatus, } from "../../types/xrpl";
6
- const genericXamanQrErrorMessage = "Failed to generate Xaman QR code";
7
- export class XamanQrConnector {
8
- cancelConnectQr = null;
9
- cancelSignAndSubmitQr = null;
10
- cancelConnect() {
11
- this.cancelConnectQr?.();
12
- }
13
- cancelSignAndSubmit() {
14
- this.cancelSignAndSubmitQr?.();
15
- }
16
- async connect() {
17
- const controller = new AbortController();
18
- this.cancelConnectQr = () => {
19
- controller.abort("User canceled the connection process");
20
- };
21
- let response;
22
- try {
23
- response = await XamanClient.signIn(controller.signal);
24
- }
25
- catch (error) {
26
- throw new QrCodeGenerationError(genericXamanQrErrorMessage);
27
- }
28
- WidgetEvents.getInstance().dispatchQrCodeGeneratedForConnect({
29
- matrix: response.qrMatrix,
30
- deepLinkUrl: response.deepLinkUrl,
31
- });
32
- const { promise, close } = websocket(response.wsStatusUrl, (event, resolve, reject) => {
33
- const msg = JSON.parse(event.data);
34
- if (msg.signed === true) {
35
- XamanClient.userSession(msg.payload_uuidv4).then((data) => {
36
- resolve(data.response.account);
37
- });
38
- }
39
- else if (msg.signed === false) {
40
- reject(new Error("User rejected the request."));
41
- }
42
- });
43
- this.cancelConnectQr = () => {
44
- close();
45
- };
46
- const address = await promise;
47
- return address;
48
- }
49
- async signAndSubmit({ tx, network, }) {
50
- const controller = new AbortController();
51
- this.cancelSignAndSubmitQr = () => {
52
- controller.abort("User canceled the transaction");
53
- };
54
- let response;
55
- try {
56
- response = await XamanClient.sendTx({
57
- tx,
58
- network,
59
- signal: controller.signal,
60
- });
61
- }
62
- catch (error) {
63
- WidgetEvents.getInstance().dispatchQrCodeGenerationFailedForSign(undefined);
64
- throw new QrCodeGenerationError(genericXamanQrErrorMessage);
65
- }
66
- WidgetEvents.getInstance().dispatchQrCodeGeneratedForSign({
67
- matrix: response.qrMatrix,
68
- deepLinkUrl: response.deepLinkUrl,
69
- });
70
- const { promise, close } = websocket(response.wsStatusUrl, (event, resolve, reject) => {
71
- const msg = JSON.parse(event.data);
72
- if (msg.opened === true) {
73
- // User has scanned the QR code
74
- WidgetEvents.getInstance().dispatchQrTxScannedAwaitingApproval(undefined);
75
- }
76
- else if (msg.signed === true) {
77
- // Tx has been signed
78
- resolve({
79
- hash: msg.txid,
80
- status: XrplTxStatus.SUCCESS,
81
- });
82
- }
83
- else if (msg.signed === false) {
84
- // User rejected the transaction
85
- reject(new Error("User rejected the request."));
86
- }
87
- });
88
- this.cancelSignAndSubmitQr = () => {
89
- close();
90
- };
91
- const result = await promise;
92
- return result;
93
- }
94
- }
95
- //# sourceMappingURL=XamanQr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XamanQr.js","sourceRoot":"","sources":["../../../../src/core/connectors/xrpl/XamanQr.ts"],"names":[],"mappings":"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"}
@@ -1,176 +0,0 @@
1
- import { XrplNetwork } from "../../types/xrpl";
2
- var EIP6963EventNames;
3
- (function (EIP6963EventNames) {
4
- EIP6963EventNames["Announce"] = "eip6963:announceProvider";
5
- EIP6963EventNames["Request"] = "eip6963:requestProvider";
6
- })(EIP6963EventNames || (EIP6963EventNames = {}));
7
- var NetworkChainId;
8
- (function (NetworkChainId) {
9
- NetworkChainId[NetworkChainId["MAINNET"] = 0] = "MAINNET";
10
- NetworkChainId[NetworkChainId["TESTNET"] = 1] = "TESTNET";
11
- NetworkChainId[NetworkChainId["DEVNET"] = 2] = "DEVNET";
12
- })(NetworkChainId || (NetworkChainId = {}));
13
- const snapId = "npm:xrpl-snap";
14
- export class XrplMetamaskSnapConnector {
15
- provider;
16
- async connect() {
17
- await this.initialize();
18
- await this.requestSnap(snapId);
19
- const { account } = await this.getAccount();
20
- return account;
21
- }
22
- async signAndSubmit({ network, tx, }) {
23
- if (!this.provider)
24
- throw new Error("Provider not initialized");
25
- const activeNetwork = await this.getActiveNetwork();
26
- const targetChainId = this.getNetworkChainId(network);
27
- if (activeNetwork.chainId !== targetChainId) {
28
- await this.changeNetwork(targetChainId);
29
- }
30
- const res = await this.invokeSnap({
31
- method: "xrpl_signAndSubmit",
32
- params: tx,
33
- });
34
- if (!res?.result) {
35
- throw new Error("Invalid transaction result");
36
- }
37
- const txResponse = res.result.tx_json;
38
- const txStatus = res.result.engine_result;
39
- return {
40
- hash: txResponse.hash,
41
- status: txStatus,
42
- };
43
- }
44
- // Cannot use constructor because of the async initialization
45
- async initialize() {
46
- this.provider = await this.getProvider();
47
- }
48
- async requestSnap(id) {
49
- await this.request({
50
- method: "wallet_requestSnaps",
51
- params: {
52
- [id]: {},
53
- },
54
- });
55
- }
56
- async getAccount() {
57
- return this.invokeSnap({
58
- method: "xrpl_getAccount",
59
- params: undefined,
60
- });
61
- }
62
- async getActiveNetwork() {
63
- return this.invokeSnap({
64
- method: "xrpl_getActiveNetwork",
65
- params: undefined,
66
- });
67
- }
68
- async changeNetwork(chainId) {
69
- try {
70
- return await this.invokeSnap({
71
- method: "xrpl_changeNetwork",
72
- params: { chainId },
73
- });
74
- }
75
- catch (error) {
76
- // changeNetwork may fail if the user is already on the correct network
77
- // so we don't need to handle the error here
78
- return null;
79
- }
80
- }
81
- async invokeSnap({ params, method, }) {
82
- return this.request({
83
- method: "wallet_invokeSnap",
84
- params: {
85
- snapId,
86
- request: {
87
- method,
88
- params,
89
- },
90
- },
91
- });
92
- }
93
- async getProvider() {
94
- if (typeof window === "undefined") {
95
- return null;
96
- }
97
- if (await this.hasSnapsSupport(window.ethereum)) {
98
- return window.ethereum;
99
- }
100
- if (window.ethereum?.detected) {
101
- for (const provider of window.ethereum.detected) {
102
- if (await this.hasSnapsSupport(provider)) {
103
- return provider;
104
- }
105
- }
106
- }
107
- if (window.ethereum?.providers) {
108
- for (const provider of window.ethereum.providers) {
109
- if (await this.hasSnapsSupport(provider)) {
110
- return provider;
111
- }
112
- }
113
- }
114
- // Need to use EIP-6963 provider discovery because we need Metamask to be installed
115
- // other wallets overriding Metamask won't work here because they don't support Metamask snaps
116
- const eip6963Provider = await this.getMetamaskEIP6963Provider();
117
- if (eip6963Provider && (await this.hasSnapsSupport(eip6963Provider))) {
118
- return eip6963Provider;
119
- }
120
- return null;
121
- }
122
- async hasSnapsSupport(provider = window.ethereum) {
123
- try {
124
- await provider.request({
125
- method: "wallet_getSnaps",
126
- });
127
- return true;
128
- }
129
- catch {
130
- return false;
131
- }
132
- }
133
- async getMetamaskEIP6963Provider() {
134
- return new Promise((rawResolve) => {
135
- // Timeout looking for providers after 500ms
136
- const timeout = setTimeout(() => {
137
- resolve(null);
138
- }, 500);
139
- function resolve(provider) {
140
- // Resolve the promise with a Metamask provider and clean up the timeout.
141
- window.removeEventListener(EIP6963EventNames.Announce, onAnnounceProvider);
142
- clearTimeout(timeout);
143
- rawResolve(provider);
144
- }
145
- /**
146
- * Listener for the EIP6963 announceProvider event.
147
- * Resolves the promise if a Metamask provider is found.
148
- */
149
- function onAnnounceProvider({ detail }) {
150
- const { info, provider } = detail;
151
- if (info.rdns.includes("io.metamask")) {
152
- resolve(provider);
153
- }
154
- }
155
- window.addEventListener(EIP6963EventNames.Announce, onAnnounceProvider);
156
- window.dispatchEvent(new Event(EIP6963EventNames.Request));
157
- });
158
- }
159
- async request({ method, params }) {
160
- if (!this.provider) {
161
- throw new Error("XRPL Metamask provider not initialized");
162
- }
163
- return this.provider.request({ method, params });
164
- }
165
- getNetworkChainId(network) {
166
- switch (network) {
167
- case XrplNetwork.MAINNET:
168
- return NetworkChainId.MAINNET;
169
- case XrplNetwork.TESTNET:
170
- return NetworkChainId.TESTNET;
171
- default:
172
- throw new Error(`Network ${network} is not supported`);
173
- }
174
- }
175
- }
176
- //# sourceMappingURL=XrplMetamaskSnap.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XrplMetamaskSnap.js","sourceRoot":"","sources":["../../../../src/core/connectors/xrpl/XrplMetamaskSnap.ts"],"names":[],"mappings":"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"}