@0xsquid/react-hooks 6.7.0-rollup-beta.1 → 6.7.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 (258) hide show
  1. package/dist/core/abis/ics20.json +128 -0
  2. package/dist/core/connectors/bitcoin/errors/index.js +22 -0
  3. package/dist/core/connectors/bitcoin/errors/index.js.map +1 -0
  4. package/dist/core/connectors/bitcoin/helpers.js +86 -0
  5. package/dist/core/connectors/bitcoin/helpers.js.map +1 -0
  6. package/dist/core/connectors/bitcoin/index.js +2 -0
  7. package/dist/core/connectors/bitcoin/index.js.map +1 -0
  8. package/dist/core/connectors/bitcoin/wallets/index.js +4 -0
  9. package/dist/core/connectors/bitcoin/wallets/index.js.map +1 -0
  10. package/dist/core/connectors/bitcoin/wallets/keplr.js +28 -0
  11. package/dist/core/connectors/bitcoin/wallets/keplr.js.map +1 -0
  12. package/dist/core/connectors/bitcoin/wallets/phantom.js +56 -0
  13. package/dist/core/connectors/bitcoin/wallets/phantom.js.map +1 -0
  14. package/dist/core/connectors/bitcoin/wallets/unisat.js +28 -0
  15. package/dist/core/connectors/bitcoin/wallets/unisat.js.map +1 -0
  16. package/dist/core/constants.js +144 -0
  17. package/dist/core/constants.js.map +1 -0
  18. package/dist/core/externalLinks.js +21 -0
  19. package/dist/core/externalLinks.js.map +1 -0
  20. package/dist/core/index.js +4 -0
  21. package/dist/core/index.js.map +1 -0
  22. package/dist/core/multicall3.js +442 -0
  23. package/dist/core/multicall3.js.map +1 -0
  24. package/dist/core/providers/CosmosProvider.js +13 -0
  25. package/dist/core/providers/CosmosProvider.js.map +1 -0
  26. package/dist/core/providers/SolanaProvider.js +15 -0
  27. package/dist/core/providers/SolanaProvider.js.map +1 -0
  28. package/dist/core/providers/SuiProvider.js +15 -0
  29. package/dist/core/providers/SuiProvider.js.map +1 -0
  30. package/dist/core/queries/queries-keys.d.ts +2 -2
  31. package/dist/core/queries/queries-keys.js +206 -0
  32. package/dist/core/queries/queries-keys.js.map +1 -0
  33. package/dist/core/queries/react-query-config.js +11 -0
  34. package/dist/core/queries/react-query-config.js.map +1 -0
  35. package/dist/core/types/config.d.ts +2 -0
  36. package/dist/core/types/config.js +2 -0
  37. package/dist/core/types/config.js.map +1 -0
  38. package/dist/core/types/dex.js +33 -0
  39. package/dist/core/types/dex.js.map +1 -0
  40. package/dist/core/types/error.js +12 -0
  41. package/dist/core/types/error.js.map +1 -0
  42. package/dist/core/types/event.d.ts +5 -0
  43. package/dist/core/types/event.js +2 -0
  44. package/dist/core/types/event.js.map +1 -0
  45. package/dist/core/types/index.js +2 -0
  46. package/dist/core/types/index.js.map +1 -0
  47. package/dist/core/types/rpc.js +2 -0
  48. package/dist/core/types/rpc.js.map +1 -0
  49. package/dist/core/types/sui.js +2 -0
  50. package/dist/core/types/sui.js.map +1 -0
  51. package/dist/core/types/swap.js +2 -0
  52. package/dist/core/types/swap.js.map +1 -0
  53. package/dist/core/types/tokens.js +2 -0
  54. package/dist/core/types/tokens.js.map +1 -0
  55. package/dist/core/types/transaction.js +41 -0
  56. package/dist/core/types/transaction.js.map +1 -0
  57. package/dist/core/types/wallet.js +26 -0
  58. package/dist/core/types/wallet.js.map +1 -0
  59. package/dist/core/wagmiConfig.js +60 -0
  60. package/dist/core/wagmiConfig.js.map +1 -0
  61. package/dist/core/wallets.js +549 -0
  62. package/dist/core/wallets.js.map +1 -0
  63. package/dist/hooks/analytics/useTrackSearchEmpty.d.ts +12 -0
  64. package/dist/hooks/analytics/useTrackSearchEmpty.js +22 -0
  65. package/dist/hooks/analytics/useTrackSearchEmpty.js.map +1 -0
  66. package/dist/hooks/chains/useSquidChains.js +107 -0
  67. package/dist/hooks/chains/useSquidChains.js.map +1 -0
  68. package/dist/hooks/client/useClient.js +6 -0
  69. package/dist/hooks/client/useClient.js.map +1 -0
  70. package/dist/hooks/cosmos/useCosmos.js +172 -0
  71. package/dist/hooks/cosmos/useCosmos.js.map +1 -0
  72. package/dist/hooks/cosmos/useCosmosForChain.js +33 -0
  73. package/dist/hooks/cosmos/useCosmosForChain.js.map +1 -0
  74. package/dist/hooks/index.d.ts +5 -5
  75. package/dist/hooks/index.js +45 -0
  76. package/dist/hooks/index.js.map +1 -0
  77. package/dist/hooks/navigation/useKeyboardNavigation.js +67 -0
  78. package/dist/hooks/navigation/useKeyboardNavigation.js.map +1 -0
  79. package/dist/hooks/query/useSquidQueryClient.js +23 -0
  80. package/dist/hooks/query/useSquidQueryClient.js.map +1 -0
  81. package/dist/hooks/solana/useSolana.js +104 -0
  82. package/dist/hooks/solana/useSolana.js.map +1 -0
  83. package/dist/hooks/squid/useSquid.js +55 -0
  84. package/dist/hooks/squid/useSquid.js.map +1 -0
  85. package/dist/hooks/store/useAddressBookStore.js +26 -0
  86. package/dist/hooks/store/useAddressBookStore.js.map +1 -0
  87. package/dist/hooks/store/useAssetsColorsStore.js +7 -0
  88. package/dist/hooks/store/useAssetsColorsStore.js.map +1 -0
  89. package/dist/hooks/store/useDepositAddressStore.js +12 -0
  90. package/dist/hooks/store/useDepositAddressStore.js.map +1 -0
  91. package/dist/hooks/store/useFavoriteTokensStore.js +28 -0
  92. package/dist/hooks/store/useFavoriteTokensStore.js.map +1 -0
  93. package/dist/hooks/store/useHistoryStore.js +41 -0
  94. package/dist/hooks/store/useHistoryStore.js.map +1 -0
  95. package/dist/hooks/store/useSquidStore.js +56 -0
  96. package/dist/hooks/store/useSquidStore.js.map +1 -0
  97. package/dist/hooks/store/useWalletStore.js +42 -0
  98. package/dist/hooks/store/useWalletStore.js.map +1 -0
  99. package/dist/hooks/sui/useSui.js +28 -0
  100. package/dist/hooks/sui/useSui.js.map +1 -0
  101. package/dist/hooks/sui/useSuiClient.js +16 -0
  102. package/dist/hooks/sui/useSuiClient.js.map +1 -0
  103. package/dist/hooks/sui/useSuiWallets.js +42 -0
  104. package/dist/hooks/sui/useSuiWallets.js.map +1 -0
  105. package/dist/hooks/swap/useDepositAddress.js +63 -0
  106. package/dist/hooks/swap/useDepositAddress.js.map +1 -0
  107. package/dist/hooks/swap/useSwap.js +209 -0
  108. package/dist/hooks/swap/useSwap.js.map +1 -0
  109. package/dist/hooks/tokens/useAllConnectedWalletBalances.js +103 -0
  110. package/dist/hooks/tokens/useAllConnectedWalletBalances.js.map +1 -0
  111. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js +119 -0
  112. package/dist/hooks/tokens/useAllTokensWithBalanceForChainType.js.map +1 -0
  113. package/dist/hooks/tokens/useBalance.js +136 -0
  114. package/dist/hooks/tokens/useBalance.js.map +1 -0
  115. package/dist/hooks/tokens/useMultiChainBalance.js +68 -0
  116. package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -0
  117. package/dist/hooks/tokens/useMultipleTokenPrices.js +46 -0
  118. package/dist/hooks/tokens/useMultipleTokenPrices.js.map +1 -0
  119. package/dist/hooks/tokens/useNativeBalance.js +217 -0
  120. package/dist/hooks/tokens/useNativeBalance.js.map +1 -0
  121. package/dist/hooks/tokens/useNativeTokenForChain.js +28 -0
  122. package/dist/hooks/tokens/useNativeTokenForChain.js.map +1 -0
  123. package/dist/hooks/tokens/useSingleTokenPrice.js +38 -0
  124. package/dist/hooks/tokens/useSingleTokenPrice.js.map +1 -0
  125. package/dist/hooks/tokens/useSquidTokens.js +80 -0
  126. package/dist/hooks/tokens/useSquidTokens.js.map +1 -0
  127. package/dist/hooks/tokens/useTokenHistoricalData.js +23 -0
  128. package/dist/hooks/tokens/useTokenHistoricalData.js.map +1 -0
  129. package/dist/hooks/transaction/useAllTransactionsStatus.js +68 -0
  130. package/dist/hooks/transaction/useAllTransactionsStatus.js.map +1 -0
  131. package/dist/hooks/transaction/useApproval.js +223 -0
  132. package/dist/hooks/transaction/useApproval.js.map +1 -0
  133. package/dist/hooks/transaction/useErc20Allowance.js +43 -0
  134. package/dist/hooks/transaction/useErc20Allowance.js.map +1 -0
  135. package/dist/hooks/transaction/useEstimate.js +118 -0
  136. package/dist/hooks/transaction/useEstimate.js.map +1 -0
  137. package/dist/hooks/transaction/useEstimatePriceImpact.js +31 -0
  138. package/dist/hooks/transaction/useEstimatePriceImpact.js.map +1 -0
  139. package/dist/hooks/transaction/useExecuteTransaction.js +605 -0
  140. package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -0
  141. package/dist/hooks/transaction/useGetRoute.d.ts +3 -0
  142. package/dist/hooks/transaction/useGetRoute.js +230 -0
  143. package/dist/hooks/transaction/useGetRoute.js.map +1 -0
  144. package/dist/hooks/transaction/useIcs20Allowance.js +40 -0
  145. package/dist/hooks/transaction/useIcs20Allowance.js.map +1 -0
  146. package/dist/hooks/transaction/useRouteWarnings.js +19 -0
  147. package/dist/hooks/transaction/useRouteWarnings.js.map +1 -0
  148. package/dist/hooks/transaction/useSingleTransaction.js +91 -0
  149. package/dist/hooks/transaction/useSingleTransaction.js.map +1 -0
  150. package/dist/hooks/user/useAvatar.js +34 -0
  151. package/dist/hooks/user/useAvatar.js.map +1 -0
  152. package/dist/hooks/user/useHistory.js +106 -0
  153. package/dist/hooks/user/useHistory.js.map +1 -0
  154. package/dist/hooks/user/useUserParams.js +33 -0
  155. package/dist/hooks/user/useUserParams.js.map +1 -0
  156. package/dist/hooks/wallet/useAddToken.js +49 -0
  157. package/dist/hooks/wallet/useAddToken.js.map +1 -0
  158. package/dist/hooks/wallet/useAutoConnect.js +74 -0
  159. package/dist/hooks/wallet/useAutoConnect.js.map +1 -0
  160. package/dist/hooks/wallet/useEns.js +69 -0
  161. package/dist/hooks/wallet/useEns.js.map +1 -0
  162. package/dist/hooks/wallet/useGnosisContext.js +78 -0
  163. package/dist/hooks/wallet/useGnosisContext.js.map +1 -0
  164. package/dist/hooks/wallet/useIntegratorContext.js +39 -0
  165. package/dist/hooks/wallet/useIntegratorContext.js.map +1 -0
  166. package/dist/hooks/wallet/useMultiChainWallet.js +175 -0
  167. package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -0
  168. package/dist/hooks/wallet/useSigner.js +76 -0
  169. package/dist/hooks/wallet/useSigner.js.map +1 -0
  170. package/dist/hooks/wallet/useWallet.js +206 -0
  171. package/dist/hooks/wallet/useWallet.js.map +1 -0
  172. package/dist/hooks/wallet/useWallets.js +36 -0
  173. package/dist/hooks/wallet/useWallets.js.map +1 -0
  174. package/dist/index.js +6 -17096
  175. package/dist/index.js.map +1 -1
  176. package/dist/provider/index.js +113 -0
  177. package/dist/provider/index.js.map +1 -0
  178. package/dist/services/external/ens.js +66 -0
  179. package/dist/services/external/ens.js.map +1 -0
  180. package/dist/services/external/rpcService.js +421 -0
  181. package/dist/services/external/rpcService.js.map +1 -0
  182. package/dist/{secretService-Cnn1_HQT.js → services/external/secretService.js} +8 -37
  183. package/dist/services/external/secretService.js.map +1 -0
  184. package/dist/services/external/suiRpcClient.js +80 -0
  185. package/dist/services/external/suiRpcClient.js.map +1 -0
  186. package/dist/services/external/tokenDataService.js +108 -0
  187. package/dist/services/external/tokenDataService.js.map +1 -0
  188. package/dist/services/index.js +16 -0
  189. package/dist/services/index.js.map +1 -0
  190. package/dist/services/internal/apiService.js +21 -0
  191. package/dist/services/internal/apiService.js.map +1 -0
  192. package/dist/services/internal/assetsService.js +586 -0
  193. package/dist/services/internal/assetsService.js.map +1 -0
  194. package/dist/services/internal/bitcoinService.js +51 -0
  195. package/dist/services/internal/bitcoinService.js.map +1 -0
  196. package/dist/services/internal/configService.js +218 -0
  197. package/dist/services/internal/configService.js.map +1 -0
  198. package/dist/services/internal/cosmosService.js +141 -0
  199. package/dist/services/internal/cosmosService.js.map +1 -0
  200. package/dist/services/internal/errorService.js +188 -0
  201. package/dist/services/internal/errorService.js.map +1 -0
  202. package/dist/services/internal/estimateService.js +221 -0
  203. package/dist/services/internal/estimateService.js.map +1 -0
  204. package/dist/services/internal/eventService.d.ts +5 -0
  205. package/dist/services/internal/eventService.js +163 -0
  206. package/dist/services/internal/eventService.js.map +1 -0
  207. package/dist/services/internal/evmService.js +42 -0
  208. package/dist/services/internal/evmService.js.map +1 -0
  209. package/dist/services/internal/numberService.js +171 -0
  210. package/dist/services/internal/numberService.js.map +1 -0
  211. package/dist/services/internal/priceService.js +53 -0
  212. package/dist/services/internal/priceService.js.map +1 -0
  213. package/dist/services/internal/searchService.js +98 -0
  214. package/dist/services/internal/searchService.js.map +1 -0
  215. package/dist/services/internal/solanaService.js +109 -0
  216. package/dist/services/internal/solanaService.js.map +1 -0
  217. package/dist/services/internal/suiService.js +119 -0
  218. package/dist/services/internal/suiService.js.map +1 -0
  219. package/dist/services/internal/transactionService.js +207 -0
  220. package/dist/services/internal/transactionService.js.map +1 -0
  221. package/dist/services/internal/transactionStatusService.js +315 -0
  222. package/dist/services/internal/transactionStatusService.js.map +1 -0
  223. package/dist/services/internal/walletService.js +464 -0
  224. package/dist/services/internal/walletService.js.map +1 -0
  225. package/dist/tests/apiService.test.js +40 -0
  226. package/dist/tests/apiService.test.js.map +1 -0
  227. package/dist/tests/assetsService.test.js +500 -0
  228. package/dist/tests/assetsService.test.js.map +1 -0
  229. package/dist/tests/configService.test.js +673 -0
  230. package/dist/tests/configService.test.js.map +1 -0
  231. package/dist/tests/estimateService.test.js +355 -0
  232. package/dist/tests/estimateService.test.js.map +1 -0
  233. package/dist/tests/fetchSquidData.js +36 -0
  234. package/dist/tests/fetchSquidData.js.map +1 -0
  235. package/dist/tests/jest-svg-transform.d.ts +0 -0
  236. package/dist/tests/jest-svg-transform.js +21 -0
  237. package/dist/tests/jest-svg-transform.js.map +1 -0
  238. package/dist/tests/numberService.test.js +135 -0
  239. package/dist/tests/numberService.test.js.map +1 -0
  240. package/dist/tests/priceService.test.js +38 -0
  241. package/dist/tests/priceService.test.js.map +1 -0
  242. package/dist/tests/sample.json +0 -0
  243. package/dist/tests/searchService.test.js +92 -0
  244. package/dist/tests/searchService.test.js.map +1 -0
  245. package/dist/tests/swapConfig.test.js +332 -0
  246. package/dist/tests/swapConfig.test.js.map +1 -0
  247. package/dist/tests/transactionService.test.js +53 -0
  248. package/dist/tests/transactionService.test.js.map +1 -0
  249. package/dist/tests/transactionStatusService.test.js +165 -0
  250. package/dist/tests/transactionStatusService.test.js.map +1 -0
  251. package/dist/tests/walletService.test.js +264 -0
  252. package/dist/tests/walletService.test.js.map +1 -0
  253. package/package.json +4 -18
  254. package/dist/index.esm.js +0 -16892
  255. package/dist/index.esm.js.map +0 -1
  256. package/dist/secretService-Cnn1_HQT.js.map +0 -1
  257. package/dist/secretService-DW4QetNp.js +0 -162
  258. package/dist/secretService-DW4QetNp.js.map +0 -1
@@ -0,0 +1,49 @@
1
+ import { ChainType } from "@0xsquid/squid-types";
2
+ import { useMutation } from "@tanstack/react-query";
3
+ import { useAccount, useSwitchChain } from "wagmi";
4
+ import { addEthereumChain, addTokenToWallet, isEvmChainNotSupportedError, } from "../../services";
5
+ export const useAddToken = (chainToCompare, tokenToCompare) => {
6
+ const { chain: currentEvmChain } = useAccount();
7
+ const { connector } = useAccount();
8
+ const { switchChainAsync } = useSwitchChain();
9
+ /**
10
+ * Add token to wallet
11
+ */
12
+ const addToken = useMutation(async ({ chain: _chain, token: _token, }) => {
13
+ const token = _token ?? tokenToCompare;
14
+ const chain = _chain ?? chainToCompare;
15
+ if (token && chain?.chainType === ChainType.EVM) {
16
+ const provider = await connector?.getProvider();
17
+ // Switch network if needed
18
+ if (currentEvmChain?.id.toString() !== token?.chainId) {
19
+ try {
20
+ await switchChainAsync({
21
+ chainId: +token.chainId,
22
+ });
23
+ }
24
+ catch (error) {
25
+ console.debug("Error switching network:", error);
26
+ if (isEvmChainNotSupportedError(error)) {
27
+ await addEthereumChain({
28
+ chain,
29
+ provider,
30
+ });
31
+ await switchChainAsync({
32
+ chainId: +token.chainId,
33
+ });
34
+ }
35
+ }
36
+ // Metamask is not popping the second modal if we don't wait a bit
37
+ // eslint-disable-next-line no-promise-executor-return
38
+ await new Promise((resolve) => setTimeout(resolve, 100));
39
+ }
40
+ await addTokenToWallet({ token, provider });
41
+ }
42
+ // TODO: Implement keplr add token
43
+ return false;
44
+ });
45
+ return {
46
+ addToken,
47
+ };
48
+ };
49
+ //# sourceMappingURL=useAddToken.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAddToken.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useAddToken.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,cAAqC,EACrC,cAAiC,EACjC,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAAC;IAChD,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,EAAE,CAAC;IACnC,MAAM,EAAE,gBAAgB,EAAE,GAAG,cAAc,EAAE,CAAC;IAE9C;;OAEG;IACH,MAAM,QAAQ,GAAG,WAAW,CAC1B,KAAK,EAAE,EACL,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAId,EAAE,EAAE;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,cAAc,CAAC;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,cAAc,CAAC;QAEvC,IAAI,KAAK,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,WAAW,EAAE,CAAC;YAEhD,2BAA2B;YAC3B,IAAI,eAAe,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAK,EAAE,OAAO,EAAE;gBACrD,IAAI;oBACF,MAAM,gBAAgB,CAAC;wBACrB,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO;qBACxB,CAAC,CAAC;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;oBAEjD,IAAI,2BAA2B,CAAC,KAAK,CAAC,EAAE;wBACtC,MAAM,gBAAgB,CAAC;4BACrB,KAAK;4BACL,QAAQ;yBACT,CAAC,CAAC;wBAEH,MAAM,gBAAgB,CAAC;4BACrB,OAAO,EAAE,CAAC,KAAK,CAAC,OAAO;yBACxB,CAAC,CAAC;qBACJ;iBACF;gBACD,kEAAkE;gBAClE,sDAAsD;gBACtD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;aAC1D;YAED,MAAM,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC7C;QACD,kCAAkC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC,CACF,CAAC;IAEF,OAAO;QACL,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { useCallback, useEffect, useRef } from "react";
2
+ import { useAccount, useConnect, useReconnect, } from "wagmi";
3
+ import { PriorityConnectors } from "../../core/constants";
4
+ import { useSquidChains } from "../chains/useSquidChains";
5
+ import { useConfigStore } from "../store/useSquidStore";
6
+ import { useEvmWalletListener } from "./useWallet";
7
+ const PRIORITY_CONNECTOR_ID = [PriorityConnectors.Safe];
8
+ /**
9
+ * Auto connect to Safe provider if it's present
10
+ * Safe will always be the priority connector
11
+ * Because if it's present, this means the user is on a Safe app iframe
12
+ */
13
+ export const useAutoConnect = () => {
14
+ const { connect, connectors } = useConnect();
15
+ const { isConnecting } = useAccount();
16
+ const { chains } = useSquidChains();
17
+ const { isInitialized } = useConfigStore();
18
+ const hasAttemptedReconnect = useRef(false);
19
+ const { reconnect } = useReconnect();
20
+ useEvmWalletListener();
21
+ const autoConnect = useCallback(async () => {
22
+ const queryParameters = new URLSearchParams(window.location.search);
23
+ // TODO: At the moment gnosis was published without the embed parameter in the manifest,
24
+ // but we should ask gnosis to change our app url to https://app.squidrouter.com/?embed="safe"
25
+ // So we could remove the priority connector array and just use the embed parameter
26
+ const embedType = queryParameters.get("embed");
27
+ let priorityConnector;
28
+ if (embedType) {
29
+ priorityConnector = connectors.find((c) => c.id === embedType);
30
+ }
31
+ else {
32
+ for await (const c of connectors) {
33
+ if (PRIORITY_CONNECTOR_ID.includes(c.id)) {
34
+ if (await c.isAuthorized()) {
35
+ priorityConnector = c;
36
+ break;
37
+ }
38
+ }
39
+ }
40
+ }
41
+ // Connect priority provider if it's present
42
+ if (priorityConnector) {
43
+ connect({ connector: priorityConnector });
44
+ }
45
+ else {
46
+ if (chains.length > 0 &&
47
+ isInitialized &&
48
+ !isConnecting &&
49
+ !hasAttemptedReconnect.current) {
50
+ try {
51
+ reconnect();
52
+ }
53
+ catch (error) {
54
+ console.error("Error auto connecting wallet:", error);
55
+ }
56
+ finally {
57
+ hasAttemptedReconnect.current = true;
58
+ }
59
+ }
60
+ }
61
+ }, [
62
+ connectors,
63
+ connect,
64
+ chains.length,
65
+ isInitialized,
66
+ isConnecting,
67
+ reconnect,
68
+ ]);
69
+ useEffect(() => {
70
+ autoConnect();
71
+ }, [autoConnect]);
72
+ return { autoConnect };
73
+ };
74
+ //# sourceMappingURL=useAutoConnect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAutoConnect.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useAutoConnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAGL,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,qBAAqB,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAExD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAEpC,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAAC;IAC3C,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,EAAE,CAAC;IACrC,oBAAoB,EAAE,CAAC;IAEvB,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzC,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,wFAAwF;QACxF,8FAA8F;QAC9F,mFAAmF;QACnF,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;QACrE,IAAI,iBAA4D,CAAC;QAEjE,IAAI,SAAS,EAAE;YACb,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;SAChE;aAAM;YACL,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,UAAU,EAAE;gBAChC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAwB,CAAC,EAAE;oBAC9D,IAAI,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;wBAC1B,iBAAiB,GAAG,CAAC,CAAC;wBACtB,MAAM;qBACP;iBACF;aACF;SACF;QAED,4CAA4C;QAC5C,IAAI,iBAAiB,EAAE;YACrB,OAAO,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;SAC3C;aAAM;YACL,IACE,MAAM,CAAC,MAAM,GAAG,CAAC;gBACjB,aAAa;gBACb,CAAC,YAAY;gBACb,CAAC,qBAAqB,CAAC,OAAO,EAC9B;gBACA,IAAI;oBACF,SAAS,EAAE,CAAC;iBACb;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;iBACvD;wBAAS;oBACR,qBAAqB,CAAC,OAAO,GAAG,IAAI,CAAC;iBACtC;aACF;SACF;IACH,CAAC,EAAE;QACD,UAAU;QACV,OAAO;QACP,MAAM,CAAC,MAAM;QACb,aAAa;QACb,YAAY;QACZ,SAAS;KACV,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,EAAE,CAAC;IAChB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { useQuery, } from "@tanstack/react-query";
2
+ import { useEffect, useState } from "react";
3
+ import { keys } from "../../core/queries/queries-keys";
4
+ import { EnsService } from "../../services/external/ens";
5
+ /**
6
+ * Returns the ENS data of the given address
7
+ *
8
+ * @param address - the address to get the ENS name of
9
+ * @returns the ENS data of the given address
10
+ */
11
+ export function useEnsDataForAddress({ address, options, }) {
12
+ const ensQuery = useQuery(keys().ensData(address?.toLowerCase()), () => EnsService.getEnsDataFromAddress(address), {
13
+ ...options,
14
+ enabled: Boolean(address?.trim()) &&
15
+ (options?.enabled === undefined ? true : options.enabled),
16
+ cacheTime: Infinity,
17
+ });
18
+ return ensQuery;
19
+ }
20
+ export function useDebouncedValue(value, delay) {
21
+ const [debouncedValue, setDebouncedValue] = useState(value);
22
+ useEffect(() => {
23
+ const timeoutId = setTimeout(() => {
24
+ setDebouncedValue(value);
25
+ }, delay);
26
+ return () => {
27
+ clearTimeout(timeoutId);
28
+ };
29
+ }, [value, delay]);
30
+ return debouncedValue;
31
+ }
32
+ /**
33
+ * Search for ENS names.
34
+ * Returns an exact match if the name is an ENS name, and multiple matches otherwise.
35
+ *
36
+ * @param name - the name to search for
37
+ * @param enabled - whether the search is enabled or not
38
+ * @param delayMs - the debounce delay in milliseconds
39
+ *
40
+ * @returns the ENS search query
41
+ */
42
+ export function useEnsSearch({ name, enabled = true, delayMs = 500, }) {
43
+ const debouncedName = useDebouncedValue(enabled ? name : undefined, delayMs);
44
+ const ensSearchQuery = useQuery(keys().ensSearch(debouncedName), () => {
45
+ const isExactEnsSearch = checkIsExactEns(debouncedName);
46
+ return isExactEnsSearch
47
+ ? EnsService.getExactEns(debouncedName)
48
+ : EnsService.searchEnsNames(debouncedName);
49
+ }, {
50
+ enabled: Boolean(debouncedName?.trim()) && enabled,
51
+ cacheTime: Infinity,
52
+ });
53
+ return ensSearchQuery;
54
+ }
55
+ const ENS_DOMAINS = ["eth", "cb.id", "xyz", "app", "link", "bit", "crypto"];
56
+ /**
57
+ * Checks if the given name is an exact ens name
58
+ * like "smth.eth", "smth.cb.id", "smth.xyz", etc...
59
+ */
60
+ function checkIsExactEns(name = "") {
61
+ if (!name)
62
+ return false;
63
+ const nameParts = name.split(".");
64
+ if (nameParts.length < 2)
65
+ return false;
66
+ const tld = nameParts[nameParts.length - 1];
67
+ return ENS_DOMAINS.includes(tld);
68
+ }
69
+ //# sourceMappingURL=useEns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEns.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useEns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import SafeAppsSDK, { TransactionStatus as GnosisTransactionStatus, } from "@safe-global/safe-apps-sdk";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ import { useAccount } from "wagmi";
4
+ import { useSwapRoutePersistStore } from "../store/useSquidStore";
5
+ import { useSwap } from "../swap/useSwap";
6
+ import { useMultiChainWallet } from "./useMultiChainWallet";
7
+ export const useGnosisContext = () => {
8
+ const { connector, isConnected, address } = useAccount();
9
+ const [isGnosisContext, setIsGnosisContext] = useState(false);
10
+ const [gnosisSafeInfo, setGnosisSafeInfo] = useState();
11
+ /**
12
+ * Method that will be used to send transaction
13
+ * TODO: could have loaded the sdk when app load and stored globally
14
+ */
15
+ const getGnosisSafeContext = useCallback(async () => {
16
+ const appsSdk = new SafeAppsSDK();
17
+ const safe = await appsSdk.safe.getInfo();
18
+ const isSafeContext = safe.chainId !== undefined &&
19
+ safe.safeAddress !== undefined &&
20
+ connector?.id === "safe";
21
+ setGnosisSafeInfo(safe);
22
+ setIsGnosisContext(isSafeContext);
23
+ if (isSafeContext)
24
+ return appsSdk;
25
+ return undefined;
26
+ }, [connector]);
27
+ useEffect(() => {
28
+ getGnosisSafeContext();
29
+ }, [getGnosisSafeContext]);
30
+ /**
31
+ * There's a specific way to get the transaction hash for the safe connector
32
+ * Using then initial hash received by the transaction, we can get the real hash
33
+ * @param hashReceived
34
+ * @returns
35
+ */
36
+ const getGnosisTransactionHash = async (initialHash) => {
37
+ const safeSdk = await getGnosisSafeContext();
38
+ const tx = await safeSdk?.txs.getBySafeTxHash(initialHash);
39
+ const status = tx?.txStatus;
40
+ if (status !== GnosisTransactionStatus.FAILED &&
41
+ status !== GnosisTransactionStatus.SUCCESS &&
42
+ status !== GnosisTransactionStatus.CANCELLED) {
43
+ // Workaround, Wait 2 seconds before checking the gnosis status again
44
+ // TODO: There might be a better way to do this
45
+ // eslint-disable-next-line no-promise-executor-return
46
+ await new Promise((res) => setTimeout(res, 2000));
47
+ return getGnosisTransactionHash(initialHash);
48
+ }
49
+ return tx?.txHash ?? initialHash;
50
+ };
51
+ const isGnosisConnected = connector?.id === "safe" && isConnected;
52
+ return {
53
+ gnosisSafeInfo,
54
+ isGnosisContext,
55
+ getGnosisTransactionHash,
56
+ isGnosisConnected,
57
+ gnosisAddress: isGnosisConnected ? address : undefined,
58
+ };
59
+ };
60
+ export const useIsSameAddressAndGnosisContext = () => {
61
+ const { isGnosisContext } = useGnosisContext();
62
+ const { fromChain } = useSwap();
63
+ const { connectedAddress: sourceAddress } = useMultiChainWallet(fromChain);
64
+ const destinationAddress = useSwapRoutePersistStore((store) => store.swapRoute?.destinationAddress?.address);
65
+ /**
66
+ * Check if we are in a Gnosis Safe Context
67
+ * And if source wallet address = destination address
68
+ * If destinationAddress is not defined, it means that it's the same from the source
69
+ */
70
+ const isSameAddressAndGnosisContext = useMemo(() => {
71
+ const destAddressSameAsSource = sourceAddress === destinationAddress || destinationAddress === undefined;
72
+ return isGnosisContext && destAddressSameAsSource;
73
+ }, [sourceAddress, destinationAddress, isGnosisContext]);
74
+ return {
75
+ isSameAddressAndGnosisContext,
76
+ };
77
+ };
78
+ //# sourceMappingURL=useGnosisContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGnosisContext.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useGnosisContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { useMemo } from "react";
2
+ import { PriorityConnectors } from "../../core/constants";
3
+ import { useGnosisContext } from "./useGnosisContext";
4
+ export const useIntegratorContext = () => {
5
+ const { isGnosisContext } = useGnosisContext();
6
+ /**
7
+ * Check if the wallet is handled externally
8
+ * Example: Ledger or Gnosis Safe
9
+ * Either by the embed parameter or by Gnosis context
10
+ */
11
+ const walletHandledExternally = useMemo(() => {
12
+ const embedTypesHavingExternalWallet = [
13
+ PriorityConnectors.LedgerLive,
14
+ PriorityConnectors.Safe,
15
+ ];
16
+ const queryParameters = new URLSearchParams(window.location.search);
17
+ const embedType = queryParameters.get("embed");
18
+ return (isGnosisContext || embedTypesHavingExternalWallet.includes(embedType));
19
+ }, [isGnosisContext]);
20
+ const isEmbed = useMemo(() => {
21
+ const queryParameters = new URLSearchParams(window.location.search);
22
+ const embedType = queryParameters.get("embed");
23
+ return !!embedType;
24
+ }, []);
25
+ /**
26
+ * It's important to know if we can use certain features such as
27
+ * the clipboard reading
28
+ */
29
+ const widgetInIframe = useMemo(() => {
30
+ try {
31
+ return window.self !== window.top;
32
+ }
33
+ catch (e) {
34
+ return false;
35
+ }
36
+ }, []);
37
+ return { walletHandledExternally, isEmbed, widgetInIframe };
38
+ };
39
+ //# sourceMappingURL=useIntegratorContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIntegratorContext.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useIntegratorContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,EAAE,eAAe,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC/C;;;;OAIG;IACH,MAAM,uBAAuB,GAAY,OAAO,CAAC,GAAG,EAAE;QACpD,MAAM,8BAA8B,GAAyB;YAC3D,kBAAkB,CAAC,UAAU;YAC7B,kBAAkB,CAAC,IAAI;SACxB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;QAErE,OAAO,CACL,eAAe,IAAI,8BAA8B,CAAC,QAAQ,CAAC,SAAS,CAAC,CACtE,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;QACrE,OAAO,CAAC,CAAC,SAAS,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP;;;OAGG;IACH,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI;YACF,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC;SACnC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC9D,CAAC,CAAC"}
@@ -0,0 +1,175 @@
1
+ import { ChainType } from "@0xsquid/squid-types";
2
+ import { useMutation } from "@tanstack/react-query";
3
+ import { useCallback, useMemo } from "react";
4
+ import { UserRejectedRequestError } from "viem";
5
+ import { useAccount, useSwitchChain } from "wagmi";
6
+ import { addEthereumChain } from "../../services/internal/evmService";
7
+ import { formatHash, isEvmChainNotSupportedError, } from "../../services/internal/walletService";
8
+ import { useSquidChains } from "../chains/useSquidChains";
9
+ import { useCosmosForChain } from "../cosmos/useCosmosForChain";
10
+ import { useEnsDataForAddress } from "./useEns";
11
+ import { useGnosisContext } from "./useGnosisContext";
12
+ import { useWallet } from "./useWallet";
13
+ export const useMultiChainWallet = (chain) => {
14
+ const { connectedAddresses, connectedWalletsByChainType } = useWallet();
15
+ const { chain: currentEvmChain, connector: evmConnector } = useAccount();
16
+ const { chains } = useSquidChains();
17
+ const { isGnosisConnected } = useGnosisContext();
18
+ const { switchChainAsync } = useSwitchChain();
19
+ const evmAddress = connectedAddresses[ChainType.EVM];
20
+ const bitcoinAddress = connectedAddresses[ChainType.BTC];
21
+ const solanaAddress = connectedAddresses[ChainType.SOLANA];
22
+ const suiAddress = connectedAddresses[ChainType.SUI];
23
+ // Cosmos is a special case because the address changes on every chain
24
+ // so we can't use the default cosmos connected address
25
+ const { data: cosmosAddress } = useCosmosForChain(chain);
26
+ const evmEnsData = useEnsDataForAddress({
27
+ address: evmAddress,
28
+ options: {
29
+ enabled: chain?.chainType === ChainType.EVM,
30
+ },
31
+ });
32
+ /**
33
+ * Get connected address, depends on chainType
34
+ */
35
+ const connectedAddress = useMemo(() => {
36
+ if (!chain?.chainType)
37
+ return {};
38
+ switch (chain.chainType) {
39
+ case ChainType.EVM:
40
+ if (!evmAddress)
41
+ return {};
42
+ return {
43
+ address: evmAddress,
44
+ formatted: formatHash({
45
+ hash: evmAddress,
46
+ chainType: chain.chainType,
47
+ }),
48
+ ens: evmEnsData.data,
49
+ };
50
+ case ChainType.COSMOS:
51
+ if (!cosmosAddress)
52
+ return {};
53
+ return {
54
+ address: cosmosAddress,
55
+ formatted: formatHash({
56
+ hash: cosmosAddress,
57
+ chainType: chain.chainType,
58
+ }),
59
+ };
60
+ case ChainType.BTC:
61
+ if (!bitcoinAddress)
62
+ return {};
63
+ return {
64
+ address: bitcoinAddress,
65
+ formatted: formatHash({
66
+ hash: bitcoinAddress,
67
+ chainType: chain.chainType,
68
+ }),
69
+ };
70
+ case ChainType.SOLANA:
71
+ if (!solanaAddress)
72
+ return {};
73
+ return {
74
+ address: solanaAddress,
75
+ formatted: formatHash({
76
+ hash: solanaAddress,
77
+ chainType: chain.chainType,
78
+ }),
79
+ };
80
+ case ChainType.SUI:
81
+ if (!suiAddress)
82
+ return {};
83
+ return {
84
+ address: suiAddress,
85
+ formatted: formatHash({
86
+ hash: suiAddress,
87
+ chainType: chain.chainType,
88
+ }),
89
+ };
90
+ }
91
+ }, [
92
+ chain?.chainType,
93
+ evmAddress,
94
+ evmEnsData.data,
95
+ cosmosAddress,
96
+ bitcoinAddress,
97
+ solanaAddress,
98
+ suiAddress,
99
+ ]);
100
+ /**
101
+ * Change current network for desired chain
102
+ */
103
+ const changeNetworkIfNeeded = useMutation(async () => {
104
+ const isNotOnDesiredChain = chain?.chainType === ChainType.EVM &&
105
+ currentEvmChain?.id !== Number(chain.chainId);
106
+ if (isNotOnDesiredChain) {
107
+ await switchChainAsync({
108
+ chainId: Number(chain.chainId),
109
+ });
110
+ }
111
+ // Implement keplr change network
112
+ // Looks like there are no method to do that at the moment
113
+ return false;
114
+ }, {
115
+ onError: async (error) => {
116
+ if (error instanceof UserRejectedRequestError) {
117
+ return;
118
+ }
119
+ if (isEvmChainNotSupportedError(error) && chain && evmConnector) {
120
+ const provider = await evmConnector.getProvider();
121
+ addEthereumChain({
122
+ chain: chain,
123
+ provider,
124
+ });
125
+ }
126
+ },
127
+ });
128
+ const isChainTypeConnected = useCallback((chainType) => {
129
+ if (isGnosisConnected && chainType === ChainType.EVM) {
130
+ return true;
131
+ }
132
+ const connectedWallet = connectedWalletsByChainType[chainType];
133
+ return !!connectedWallet?.wallet && !!connectedWallet?.address;
134
+ }, [connectedWalletsByChainType, isGnosisConnected]);
135
+ /**
136
+ * Handle multiple chains
137
+ */
138
+ const networkConnected = useMemo(() => {
139
+ if (!chain?.chainType)
140
+ return false;
141
+ return isChainTypeConnected(chain.chainType);
142
+ }, [chain?.chainType, isChainTypeConnected]);
143
+ const connectedEvmChain = useMemo(() => {
144
+ if (!currentEvmChain)
145
+ return undefined;
146
+ const squidChain = chains.find((c) => c.chainId === currentEvmChain.id.toString());
147
+ return squidChain;
148
+ }, [currentEvmChain, chains]);
149
+ /**
150
+ * Checks if Network is connected and with the right chain
151
+ */
152
+ const networkConnectedOnRightChain = useMemo(() => {
153
+ if (chain?.chainType === ChainType.EVM) {
154
+ // tenderly validation based on rpc
155
+ if (currentEvmChain?.rpcUrls?.default?.http?.length &&
156
+ currentEvmChain?.rpcUrls?.default?.http[0].includes("tenderly")) {
157
+ return (isChainTypeConnected(ChainType.EVM) &&
158
+ currentEvmChain?.rpcUrls?.default?.http[0].toLowerCase() ===
159
+ chain.rpc.toLowerCase());
160
+ }
161
+ return (isChainTypeConnected(ChainType.EVM) &&
162
+ currentEvmChain?.id.toString() === chain.chainId);
163
+ }
164
+ return true;
165
+ }, [isChainTypeConnected, currentEvmChain, chain]);
166
+ return {
167
+ changeNetworkIfNeeded,
168
+ networkConnected,
169
+ networkConnectedOnRightChain,
170
+ connectedAddress,
171
+ connectedEvmChain,
172
+ evmAddress,
173
+ };
174
+ };
175
+ //# sourceMappingURL=useMultiChainWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMultiChainWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useMultiChainWallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { ChainType } from "@0xsquid/squid-types";
2
+ import { useMemo } from "react";
3
+ import { useAccount, useWalletClient } from "wagmi";
4
+ import { KeplrConnector, PhantomConnector, UnisatConnector, } from "../../core/connectors/bitcoin";
5
+ import { useCosmosContext } from "../../core/providers/CosmosProvider";
6
+ import { useSolanaContext } from "../../core/providers/SolanaProvider";
7
+ import { useSuiContext } from "../../core/providers/SuiProvider";
8
+ import { clientToSigner } from "../../core/wagmiConfig";
9
+ import { useSwap } from "../swap/useSwap";
10
+ import { useWallet } from "./useWallet";
11
+ export function useEthersSigner({ chainId } = {}) {
12
+ const { connector } = useAccount();
13
+ const { data: client } = useWalletClient({ chainId, connector });
14
+ return useMemo(() => (client ? clientToSigner(client) : undefined), [client]);
15
+ }
16
+ export const useSigner = () => {
17
+ const { fromChain } = useSwap();
18
+ const evmSigner = useEthersSigner({ chainId: Number(fromChain?.chainId) });
19
+ const { cosmosSigner } = useCosmosContext();
20
+ const { signer: solanaSigner } = useSolanaContext();
21
+ const { signer: suiSigner } = useSuiContext();
22
+ const { connectedWalletsByChainType } = useWallet();
23
+ const connectedSourceWallet = fromChain?.chainType
24
+ ? connectedWalletsByChainType[fromChain.chainType]
25
+ : undefined;
26
+ const bitcoinSigner = useMemo(() => {
27
+ switch (connectedSourceWallet?.wallet?.connectorId) {
28
+ case "unisat": {
29
+ return new UnisatConnector();
30
+ }
31
+ case "phantom": {
32
+ return new PhantomConnector();
33
+ }
34
+ case "keplr": {
35
+ return new KeplrConnector();
36
+ }
37
+ }
38
+ }, [connectedSourceWallet?.wallet?.connectorId]);
39
+ const isEvmSignerReady = !!evmSigner;
40
+ const isCosmosSignerReady = !!cosmosSigner;
41
+ const isSolanaSignerReady = !!solanaSigner;
42
+ const isBitcoinSignerReady = !!bitcoinSigner;
43
+ const isSuiSignerReady = !!suiSigner;
44
+ const isSignerReady = useMemo(() => {
45
+ if (!fromChain?.chainType)
46
+ return false;
47
+ switch (fromChain.chainType) {
48
+ case ChainType.EVM:
49
+ return isEvmSignerReady;
50
+ case ChainType.COSMOS:
51
+ return isCosmosSignerReady;
52
+ case ChainType.BTC:
53
+ return isBitcoinSignerReady;
54
+ case ChainType.SOLANA:
55
+ return isSolanaSignerReady;
56
+ case ChainType.SUI:
57
+ return isSuiSignerReady;
58
+ }
59
+ }, [
60
+ fromChain?.chainType,
61
+ isEvmSignerReady,
62
+ isCosmosSignerReady,
63
+ isBitcoinSignerReady,
64
+ isSolanaSignerReady,
65
+ isSuiSignerReady,
66
+ ]);
67
+ return {
68
+ isSignerReady,
69
+ evmSigner,
70
+ cosmosSigner,
71
+ bitcoinSigner,
72
+ solanaSigner,
73
+ suiSigner,
74
+ };
75
+ };
76
+ //# sourceMappingURL=useSigner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSigner.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useSigner.ts"],"names":[],"mappings":"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"}