@0xsquid/react-hooks 1.0.3 → 1.0.5

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 (316) hide show
  1. package/dist/assets/images/icons/wallets/index.d.ts +22 -0
  2. package/{src/assets/images/icons/wallets/index.ts → dist/assets/images/icons/wallets/index.js} +21 -21
  3. package/dist/assets/images/icons/wallets/index.js.map +1 -0
  4. package/dist/connectors/ExodusConnector.d.ts +4 -0
  5. package/{src/connectors/ExodusConnector.ts → dist/connectors/ExodusConnector.js} +3 -3
  6. package/dist/connectors/ExodusConnector.js.map +1 -0
  7. package/dist/connectors/LedgerLiveConnector.d.ts +40 -0
  8. package/dist/connectors/LedgerLiveConnector.js +177 -0
  9. package/dist/connectors/LedgerLiveConnector.js.map +1 -0
  10. package/dist/contracts/typechain/factories/ERC20__factory.js +324 -0
  11. package/dist/contracts/typechain/factories/ERC20__factory.js.map +1 -0
  12. package/dist/core/constants.d.ts +37 -0
  13. package/dist/core/constants.js +487 -0
  14. package/dist/core/constants.js.map +1 -0
  15. package/dist/core/externalLinks.d.ts +18 -0
  16. package/{src/core/externalLinks.ts → dist/core/externalLinks.js} +5 -9
  17. package/dist/core/externalLinks.js.map +1 -0
  18. package/dist/core/index.js +2 -0
  19. package/dist/core/index.js.map +1 -0
  20. package/dist/core/multicall3.d.ts +16 -0
  21. package/dist/core/multicall3.js +23 -0
  22. package/dist/core/multicall3.js.map +1 -0
  23. package/dist/core/numbers.d.ts +3 -0
  24. package/dist/core/numbers.js +28 -0
  25. package/dist/core/numbers.js.map +1 -0
  26. package/dist/core/providers/CosmosProvider.d.ts +34 -0
  27. package/dist/core/providers/CosmosProvider.js +12 -0
  28. package/dist/core/providers/CosmosProvider.js.map +1 -0
  29. package/dist/core/queries/queries-keys.d.ts +34 -0
  30. package/dist/core/queries/queries-keys.js +120 -0
  31. package/dist/core/queries/queries-keys.js.map +1 -0
  32. package/dist/core/queries/react-query-config.d.ts +3 -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/components.d.ts +14 -0
  36. package/dist/core/types/components.js +2 -0
  37. package/dist/core/types/components.js.map +1 -0
  38. package/dist/core/types/config.d.ts +47 -0
  39. package/dist/core/types/config.js +2 -0
  40. package/dist/core/types/config.js.map +1 -0
  41. package/dist/core/types/dex.d.ts +28 -0
  42. package/dist/core/types/dex.js +33 -0
  43. package/dist/core/types/dex.js.map +1 -0
  44. package/dist/core/types/error.d.ts +44 -0
  45. package/dist/core/types/error.js +12 -0
  46. package/dist/core/types/error.js.map +1 -0
  47. package/dist/core/types/event.d.ts +17 -0
  48. package/dist/core/types/event.js +2 -0
  49. package/dist/core/types/event.js.map +1 -0
  50. package/dist/core/types/route.d.ts +9 -0
  51. package/dist/core/types/route.js +4 -0
  52. package/dist/core/types/route.js.map +1 -0
  53. package/dist/core/types/swap.d.ts +8 -0
  54. package/dist/core/types/swap.js +2 -0
  55. package/dist/core/types/swap.js.map +1 -0
  56. package/dist/core/types/tokens.d.ts +29 -0
  57. package/dist/core/types/tokens.js +2 -0
  58. package/dist/core/types/tokens.js.map +1 -0
  59. package/dist/core/types/transaction.d.ts +68 -0
  60. package/dist/core/types/transaction.js +38 -0
  61. package/dist/core/types/transaction.js.map +1 -0
  62. package/dist/core/types/types.d.ts +30 -0
  63. package/dist/core/types/types.js +7 -0
  64. package/dist/core/types/types.js.map +1 -0
  65. package/dist/core/types/wallet.d.ts +55 -0
  66. package/dist/core/types/wallet.js +26 -0
  67. package/dist/core/types/wallet.js.map +1 -0
  68. package/dist/hooks/chains/useSquidChains.d.ts +12 -0
  69. package/dist/hooks/chains/useSquidChains.js +45 -0
  70. package/dist/hooks/chains/useSquidChains.js.map +1 -0
  71. package/dist/hooks/cosmos/useCosmos.d.ts +33 -0
  72. package/dist/hooks/cosmos/useCosmos.js +194 -0
  73. package/dist/hooks/cosmos/useCosmos.js.map +1 -0
  74. package/dist/hooks/cosmos/useCosmosForChain.d.ts +4 -0
  75. package/dist/hooks/cosmos/useCosmosForChain.js +22 -0
  76. package/dist/hooks/cosmos/useCosmosForChain.js.map +1 -0
  77. package/{src/hooks/index.ts → dist/hooks/index.d.ts} +1 -7
  78. package/dist/hooks/index.js +27 -0
  79. package/dist/hooks/index.js.map +1 -0
  80. package/dist/hooks/navigation/useKeyboardNavigation.d.ts +7 -0
  81. package/dist/hooks/navigation/useKeyboardNavigation.js +69 -0
  82. package/dist/hooks/navigation/useKeyboardNavigation.js.map +1 -0
  83. package/dist/hooks/store/useSquidStore.d.ts +105 -0
  84. package/dist/hooks/store/useSquidStore.js +35 -0
  85. package/dist/hooks/store/useSquidStore.js.map +1 -0
  86. package/dist/hooks/swap/useSwap.d.ts +25 -0
  87. package/dist/hooks/swap/useSwap.js +229 -0
  88. package/dist/hooks/swap/useSwap.js.map +1 -0
  89. package/dist/hooks/tokens/useAllTokensWithBalance.d.ts +11 -0
  90. package/dist/hooks/tokens/useAllTokensWithBalance.js +97 -0
  91. package/dist/hooks/tokens/useAllTokensWithBalance.js.map +1 -0
  92. package/dist/hooks/tokens/useBalance.d.ts +34 -0
  93. package/dist/hooks/tokens/useBalance.js +112 -0
  94. package/dist/hooks/tokens/useBalance.js.map +1 -0
  95. package/dist/hooks/tokens/useMultiChainBalance.d.ts +17 -0
  96. package/dist/hooks/tokens/useMultiChainBalance.js +36 -0
  97. package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -0
  98. package/dist/hooks/tokens/usePrices.d.ts +6 -0
  99. package/dist/hooks/tokens/usePrices.js +42 -0
  100. package/dist/hooks/tokens/usePrices.js.map +1 -0
  101. package/dist/hooks/tokens/useSingleTokenPrice.d.ts +10 -0
  102. package/dist/hooks/tokens/useSingleTokenPrice.js +32 -0
  103. package/dist/hooks/tokens/useSingleTokenPrice.js.map +1 -0
  104. package/dist/hooks/tokens/useSquidTokens.d.ts +13 -0
  105. package/dist/hooks/tokens/useSquidTokens.js +35 -0
  106. package/dist/hooks/tokens/useSquidTokens.js.map +1 -0
  107. package/dist/hooks/tokens/useTokensWithBalance.d.ts +7 -0
  108. package/dist/hooks/tokens/useTokensWithBalance.js +111 -0
  109. package/dist/hooks/tokens/useTokensWithBalance.js.map +1 -0
  110. package/dist/hooks/transaction/useEstimate.d.ts +44 -0
  111. package/dist/hooks/transaction/useEstimate.js +274 -0
  112. package/dist/hooks/transaction/useEstimate.js.map +1 -0
  113. package/dist/hooks/transaction/useEstimatePriceImpact.d.ts +7 -0
  114. package/dist/hooks/transaction/useEstimatePriceImpact.js +26 -0
  115. package/dist/hooks/transaction/useEstimatePriceImpact.js.map +1 -0
  116. package/dist/hooks/transaction/useExecuteTransaction.d.ts +20 -0
  117. package/dist/hooks/transaction/useExecuteTransaction.js +310 -0
  118. package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -0
  119. package/dist/hooks/transaction/useExpress.d.ts +5 -0
  120. package/dist/hooks/transaction/useExpress.js +31 -0
  121. package/dist/hooks/transaction/useExpress.js.map +1 -0
  122. package/dist/hooks/transaction/useGetRoute.d.ts +14 -0
  123. package/dist/hooks/transaction/useGetRoute.js +96 -0
  124. package/dist/hooks/transaction/useGetRoute.js.map +1 -0
  125. package/dist/hooks/transaction/useSingleTransaction.d.ts +8 -0
  126. package/dist/hooks/transaction/useSingleTransaction.js +99 -0
  127. package/dist/hooks/transaction/useSingleTransaction.js.map +1 -0
  128. package/dist/hooks/transaction/useTransaction.d.ts +25 -0
  129. package/dist/hooks/transaction/useTransaction.js +521 -0
  130. package/dist/hooks/transaction/useTransaction.js.map +1 -0
  131. package/dist/hooks/user/useUserParams.d.ts +6 -0
  132. package/dist/hooks/user/useUserParams.js +41 -0
  133. package/dist/hooks/user/useUserParams.js.map +1 -0
  134. package/dist/hooks/wallet/useAddToken.d.ts +4 -0
  135. package/dist/hooks/wallet/useAddToken.js +45 -0
  136. package/dist/hooks/wallet/useAddToken.js.map +1 -0
  137. package/dist/hooks/wallet/useAutoConnect.d.ts +6 -0
  138. package/dist/hooks/wallet/useAutoConnect.js +44 -0
  139. package/dist/hooks/wallet/useAutoConnect.js.map +1 -0
  140. package/dist/hooks/wallet/useGnosisContext.d.ts +7 -0
  141. package/dist/hooks/wallet/useGnosisContext.js +70 -0
  142. package/dist/hooks/wallet/useGnosisContext.js.map +1 -0
  143. package/dist/hooks/wallet/useIntegratorContext.d.ts +5 -0
  144. package/dist/hooks/wallet/useIntegratorContext.js +39 -0
  145. package/dist/hooks/wallet/useIntegratorContext.js.map +1 -0
  146. package/dist/hooks/wallet/useMultiChainWallet.d.ts +8 -0
  147. package/dist/hooks/wallet/useMultiChainWallet.js +113 -0
  148. package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -0
  149. package/dist/hooks/wallet/useWallet.d.ts +6 -0
  150. package/dist/hooks/wallet/useWallet.js +65 -0
  151. package/dist/hooks/wallet/useWallet.js.map +1 -0
  152. package/dist/hooks/webapp-router/useSquidRouter.d.ts +11 -0
  153. package/dist/hooks/webapp-router/useSquidRouter.js +33 -0
  154. package/dist/hooks/webapp-router/useSquidRouter.js.map +1 -0
  155. package/{src/index.ts → dist/index.d.ts} +0 -1
  156. package/dist/index.js.map +1 -0
  157. package/dist/provider/index.d.ts +10 -0
  158. package/dist/provider/index.js +71 -0
  159. package/dist/provider/index.js.map +1 -0
  160. package/dist/services/external/analyticsService.d.ts +18 -0
  161. package/dist/services/external/analyticsService.js +30 -0
  162. package/dist/services/external/analyticsService.js.map +1 -0
  163. package/dist/services/external/coingeckoService.d.ts +8 -0
  164. package/dist/services/external/coingeckoService.js +20 -0
  165. package/dist/services/external/coingeckoService.js.map +1 -0
  166. package/dist/services/external/rpcService.d.ts +4 -0
  167. package/dist/services/external/rpcService.js +145 -0
  168. package/dist/services/external/rpcService.js.map +1 -0
  169. package/dist/services/external/secretService.d.ts +28 -0
  170. package/dist/services/external/secretService.js +129 -0
  171. package/dist/services/external/secretService.js.map +1 -0
  172. package/dist/services/index.js +2 -0
  173. package/dist/services/index.js.map +1 -0
  174. package/dist/services/internal/apiService.d.ts +4 -0
  175. package/dist/services/internal/apiService.js +7 -0
  176. package/dist/services/internal/apiService.js.map +1 -0
  177. package/dist/services/internal/assetsService.d.ts +28 -0
  178. package/dist/services/internal/assetsService.js +46 -0
  179. package/dist/services/internal/assetsService.js.map +1 -0
  180. package/dist/services/internal/configService.d.ts +40 -0
  181. package/dist/services/internal/configService.js +119 -0
  182. package/dist/services/internal/configService.js.map +1 -0
  183. package/dist/services/internal/errorService.d.ts +30 -0
  184. package/{src/services/internal/errorService.ts → dist/services/internal/errorService.js} +35 -54
  185. package/dist/services/internal/errorService.js.map +1 -0
  186. package/dist/services/internal/eventService.d.ts +52 -0
  187. package/dist/services/internal/eventService.js +66 -0
  188. package/dist/services/internal/eventService.js.map +1 -0
  189. package/dist/services/internal/priceService.d.ts +1 -0
  190. package/dist/services/internal/priceService.js +7 -0
  191. package/dist/services/internal/priceService.js.map +1 -0
  192. package/dist/services/internal/transactionService.d.ts +43 -0
  193. package/dist/services/internal/transactionService.js +172 -0
  194. package/dist/services/internal/transactionService.js.map +1 -0
  195. package/dist/services/internal/transactionStatusService.d.ts +28 -0
  196. package/dist/services/internal/transactionStatusService.js +225 -0
  197. package/dist/services/internal/transactionStatusService.js.map +1 -0
  198. package/dist/services/internal/walletService.d.ts +28 -0
  199. package/dist/services/internal/walletService.js +123 -0
  200. package/dist/services/internal/walletService.js.map +1 -0
  201. package/dist/tests/assetsService.test.d.ts +1 -0
  202. package/dist/tests/assetsService.test.js +130 -0
  203. package/dist/tests/assetsService.test.js.map +1 -0
  204. package/dist/tests/configService.test.d.ts +1 -0
  205. package/dist/tests/configService.test.js +295 -0
  206. package/dist/tests/configService.test.js.map +1 -0
  207. package/dist/tests/fetchSquidData.d.ts +6 -0
  208. package/dist/tests/fetchSquidData.js +27 -0
  209. package/dist/tests/fetchSquidData.js.map +1 -0
  210. package/{src/tests/jest-svg-transform.ts → dist/tests/jest-svg-transform.js} +11 -9
  211. package/dist/tests/jest-svg-transform.js.map +1 -0
  212. package/dist/tests/sample.json +0 -0
  213. package/dist/tests/walletService.test.d.ts +1 -0
  214. package/dist/tests/walletService.test.js +74 -0
  215. package/dist/tests/walletService.test.js.map +1 -0
  216. package/package.json +6 -2
  217. package/.babelrc +0 -7
  218. package/.eslintignore +0 -1
  219. package/.eslintrc.json +0 -44
  220. package/CHANGELOG.md +0 -7
  221. package/jest.config.ts +0 -28
  222. package/scripts/copyAssets.js +0 -27
  223. package/scripts/removeBuildTestFolder.js +0 -28
  224. package/scripts/replacePaths.js +0 -37
  225. package/src/connectors/LedgerLiveConnector.ts +0 -226
  226. package/src/contracts/typechain/ERC20.d.ts +0 -441
  227. package/src/contracts/typechain/factories/ERC20__factory.ts +0 -340
  228. package/src/core/constants.ts +0 -549
  229. package/src/core/multicall3.ts +0 -22
  230. package/src/core/numbers.ts +0 -44
  231. package/src/core/providers/CosmosProvider.tsx +0 -55
  232. package/src/core/queries/queries-keys.ts +0 -156
  233. package/src/core/queries/react-query-config.ts +0 -13
  234. package/src/core/types/components.ts +0 -16
  235. package/src/core/types/config.ts +0 -52
  236. package/src/core/types/dex.ts +0 -31
  237. package/src/core/types/error.ts +0 -52
  238. package/src/core/types/event.ts +0 -16
  239. package/src/core/types/route.ts +0 -21
  240. package/src/core/types/swap.ts +0 -8
  241. package/src/core/types/tokens.ts +0 -30
  242. package/src/core/types/transaction.ts +0 -84
  243. package/src/core/types/types.ts +0 -37
  244. package/src/core/types/wallet.ts +0 -83
  245. package/src/hooks/chains/useSquidChains.ts +0 -66
  246. package/src/hooks/cosmos/useCosmos.ts +0 -279
  247. package/src/hooks/cosmos/useCosmosForChain.ts +0 -33
  248. package/src/hooks/navigation/useKeyboardNavigation.ts +0 -88
  249. package/src/hooks/store/useSquidStore.ts +0 -80
  250. package/src/hooks/swap/useSwap.ts +0 -359
  251. package/src/hooks/tokens/useAllTokensWithBalance.ts +0 -157
  252. package/src/hooks/tokens/useBalance.ts +0 -180
  253. package/src/hooks/tokens/useMultiChainBalance.ts +0 -59
  254. package/src/hooks/tokens/usePrices.ts +0 -52
  255. package/src/hooks/tokens/useSingleTokenPrice.ts +0 -45
  256. package/src/hooks/tokens/useSquidTokens.ts +0 -48
  257. package/src/hooks/tokens/useTokensWithBalance.ts +0 -169
  258. package/src/hooks/transaction/useEstimate.ts +0 -397
  259. package/src/hooks/transaction/useEstimatePriceImpact.ts +0 -39
  260. package/src/hooks/transaction/useExecuteTransaction.ts +0 -440
  261. package/src/hooks/transaction/useExpress.ts +0 -46
  262. package/src/hooks/transaction/useGetRoute.ts +0 -145
  263. package/src/hooks/transaction/useSingleTransaction.ts +0 -155
  264. package/src/hooks/transaction/useTransaction.ts +0 -734
  265. package/src/hooks/user/useUserParams.ts +0 -63
  266. package/src/hooks/wallet/useAddToken.ts +0 -53
  267. package/src/hooks/wallet/useAutoConnect.ts +0 -56
  268. package/src/hooks/wallet/useGnosisContext.ts +0 -84
  269. package/src/hooks/wallet/useIntegratorContext.ts +0 -44
  270. package/src/hooks/wallet/useMultiChainWallet.ts +0 -146
  271. package/src/hooks/wallet/useWallet.ts +0 -86
  272. package/src/hooks/webapp-router/useSquidRouter.ts +0 -42
  273. package/src/provider/index.tsx +0 -105
  274. package/src/react-app-env.d.ts +0 -2
  275. package/src/services/external/analyticsService.ts +0 -46
  276. package/src/services/external/coingeckoService.ts +0 -35
  277. package/src/services/external/rpcService.ts +0 -196
  278. package/src/services/external/secretService.ts +0 -178
  279. package/src/services/internal/apiService.ts +0 -6
  280. package/src/services/internal/assetsService.ts +0 -84
  281. package/src/services/internal/configService.ts +0 -261
  282. package/src/services/internal/eventService.ts +0 -93
  283. package/src/services/internal/priceService.ts +0 -10
  284. package/src/services/internal/transactionService.ts +0 -255
  285. package/src/services/internal/transactionStatusService.ts +0 -293
  286. package/src/services/internal/walletService.ts +0 -158
  287. package/src/tests/assetsService.test.ts +0 -176
  288. package/src/tests/configService.test.ts +0 -486
  289. package/src/tests/fetchSquidData.ts +0 -43
  290. package/src/tests/walletService.test.ts +0 -178
  291. package/tsconfig.json +0 -30
  292. /package/{src → dist}/assets/images/icons/wallets/binance.svg +0 -0
  293. /package/{src → dist}/assets/images/icons/wallets/bitget.svg +0 -0
  294. /package/{src → dist}/assets/images/icons/wallets/bitkeep.svg +0 -0
  295. /package/{src → dist}/assets/images/icons/wallets/blockchaindotcom.svg +0 -0
  296. /package/{src → dist}/assets/images/icons/wallets/brave.svg +0 -0
  297. /package/{src → dist}/assets/images/icons/wallets/c98.svg +0 -0
  298. /package/{src → dist}/assets/images/icons/wallets/coinbase.svg +0 -0
  299. /package/{src → dist}/assets/images/icons/wallets/cosmostation.svg +0 -0
  300. /package/{src → dist}/assets/images/icons/wallets/defiConnect.svg +0 -0
  301. /package/{src → dist}/assets/images/icons/wallets/exodus.svg +0 -0
  302. /package/{src → dist}/assets/images/icons/wallets/fetchai.svg +0 -0
  303. /package/{src → dist}/assets/images/icons/wallets/keplr.svg +0 -0
  304. /package/{src → dist}/assets/images/icons/wallets/leap.svg +0 -0
  305. /package/{src → dist}/assets/images/icons/wallets/metamask.svg +0 -0
  306. /package/{src → dist}/assets/images/icons/wallets/okx.svg +0 -0
  307. /package/{src → dist}/assets/images/icons/wallets/rabby.svg +0 -0
  308. /package/{src → dist}/assets/images/icons/wallets/trustwallet.svg +0 -0
  309. /package/{src → dist}/assets/images/icons/wallets/walletConnect.svg +0 -0
  310. /package/{src → dist}/assets/images/icons/wallets/wallet_icon.svg +0 -0
  311. /package/{src → dist}/assets/images/icons/wallets/xdefi.svg +0 -0
  312. /package/{src → dist}/assets/images/icons/wallets/zerion.svg +0 -0
  313. /package/{src → dist}/contracts/typechain/factories/ERC20__factory.d.ts +0 -0
  314. /package/{src/core/index.ts → dist/core/index.d.ts} +0 -0
  315. /package/{src/services/index.ts → dist/services/index.d.ts} +0 -0
  316. /package/{src/tests/sample.json → dist/tests/jest-svg-transform.d.ts} +0 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Auto connect to Safe provider if it's present
3
+ * Safe will always be the priority connector
4
+ * Because if it's present, this means the user is on a Safe app iframe
5
+ */
6
+ export declare const useAutoConnect: () => void;
@@ -0,0 +1,44 @@
1
+ import { PriorityConnectors } from "./../../core/constants";
2
+ import { useEffect } from "react";
3
+ import { useConnect } from "wagmi";
4
+ const PRIORITY_CONNECTOR_ID = [PriorityConnectors.Safe];
5
+ const WAGMI_LOCAL_STORAGE_WALLET_ID = "wagmi.wallet";
6
+ /**
7
+ * Auto connect to Safe provider if it's present
8
+ * Safe will always be the priority connector
9
+ * Because if it's present, this means the user is on a Safe app iframe
10
+ */
11
+ export const useAutoConnect = () => {
12
+ const { connect, connectors } = useConnect();
13
+ const wagmiLocalStorageWalletID = localStorage.getItem(WAGMI_LOCAL_STORAGE_WALLET_ID);
14
+ useEffect(() => {
15
+ const queryParameters = new URLSearchParams(window.location.search);
16
+ // TODO: At the moment gnosis was published without the embed parameter in the manifest,
17
+ // but we should ask gnosis to change our app url to https://app.squidrouter.com/?embed="safe"
18
+ // So we could remove the priority connector array and just use the embed parameter
19
+ const embedType = queryParameters.get("embed");
20
+ let priorityConnector;
21
+ if (embedType) {
22
+ priorityConnector = connectors.find((c) => c.id === embedType);
23
+ }
24
+ else {
25
+ priorityConnector = connectors.find((c) => PRIORITY_CONNECTOR_ID.includes(c.id) && c.ready);
26
+ }
27
+ // Connect priority provider if it's present
28
+ // Otherwise, connect to the last wallet used if authorized
29
+ if (priorityConnector) {
30
+ connect({ connector: priorityConnector });
31
+ }
32
+ else if (wagmiLocalStorageWalletID) {
33
+ const wagmiLocalStorageWalletConnector = connectors.find((c) => c.id === JSON.parse(wagmiLocalStorageWalletID) && c.ready);
34
+ // If we do not check this, the wallet will try to connect even if the user disconnected on purpose
35
+ // Checking this will prevent the wallet to popup at each page refresh if the user is disconnected
36
+ wagmiLocalStorageWalletConnector?.isAuthorized().then((isAuthorized) => {
37
+ if (isAuthorized) {
38
+ connect({ connector: wagmiLocalStorageWalletConnector });
39
+ }
40
+ });
41
+ }
42
+ }, [connect, connectors]);
43
+ };
44
+ //# 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,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,MAAM,qBAAqB,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAExD,MAAM,6BAA6B,GAAG,cAAc,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAE7C,MAAM,yBAAyB,GAAG,YAAY,CAAC,OAAO,CACpD,6BAA6B,CAC9B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,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,iBAAsB,CAAC;QAE3B,IAAI,SAAS,EAAE,CAAC;YACd,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,UAAU,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CACJ,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAwB,CAAC,IAAI,CAAC,CAAC,KAAK,CACxE,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,2DAA2D;QAC3D,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,yBAAyB,EAAE,CAAC;YACrC,MAAM,gCAAgC,GAAG,UAAU,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,CACjE,CAAC;YAEF,mGAAmG;YACnG,kGAAkG;YAClG,gCAAgC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;gBACrE,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,EAAE,SAAS,EAAE,gCAAgC,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import SafeAppsSDK from "@safe-global/safe-apps-sdk";
2
+ export declare const useGnosisContext: () => {
3
+ getGnosisSafeContext: () => Promise<SafeAppsSDK | undefined>;
4
+ isSameAddressAndGnosisContext: boolean;
5
+ isGnosisContext: boolean;
6
+ getGnosisTransactionHash: (initialHash: string) => Promise<string>;
7
+ };
@@ -0,0 +1,70 @@
1
+ import { useSwapRoutePersistStore } from "./../../hooks/store/useSquidStore";
2
+ import { useSwap } from "./../../hooks/swap/useSwap";
3
+ import { useMultiChainWallet } from "./../../hooks/wallet/useMultiChainWallet";
4
+ import SafeAppsSDK from "@safe-global/safe-apps-sdk";
5
+ import { TransactionStatus as GnosisTransactionStatus } from "@safe-global/safe-apps-sdk/dist/src/types";
6
+ import { useCallback, useEffect, useMemo, useState } from "react";
7
+ import { useAccount } from "wagmi";
8
+ export const useGnosisContext = () => {
9
+ const { connector } = useAccount();
10
+ const { fromChain } = useSwap();
11
+ const { swapRoute } = useSwapRoutePersistStore();
12
+ const { connectedAddress } = useMultiChainWallet(fromChain);
13
+ const [isGnosisContext, setisGnosisContext] = useState(false);
14
+ /**
15
+ * Method that will be used to send transaction
16
+ * TODO: could have loaded the sdk when app load and stored globally
17
+ */
18
+ const getGnosisSafeContext = useCallback(async () => {
19
+ const appsSdk = new SafeAppsSDK();
20
+ const safe = await appsSdk.safe.getInfo();
21
+ const isSafeContext = safe.chainId !== undefined &&
22
+ safe.safeAddress !== undefined &&
23
+ connector?.id === "safe";
24
+ setisGnosisContext(isSafeContext);
25
+ if (isSafeContext)
26
+ return appsSdk;
27
+ return undefined;
28
+ }, [connector]);
29
+ useEffect(() => {
30
+ getGnosisSafeContext();
31
+ }, [connector]);
32
+ /**
33
+ * Check if we are in a Gnosis Safe Context
34
+ * And if source wallet address = destination address
35
+ * If swapRoute.destinationAddress is not defined, it means that it's the same from the source
36
+ */
37
+ const isSameAddressAndGnosisContext = useMemo(() => {
38
+ const destAddressSameAsSource = connectedAddress === swapRoute?.destinationAddress ||
39
+ swapRoute?.destinationAddress === undefined;
40
+ return isGnosisContext && destAddressSameAsSource;
41
+ }, [connectedAddress, swapRoute, isGnosisContext]);
42
+ /**
43
+ * There's a specific way to get the transaction hash for the safe connector
44
+ * Using then initial hash received by the transaction, we can get the real hash
45
+ * @param hashReceived
46
+ * @returns
47
+ */
48
+ const getGnosisTransactionHash = async (initialHash) => {
49
+ const safeSdk = await getGnosisSafeContext();
50
+ const tx = await safeSdk?.txs.getBySafeTxHash(initialHash);
51
+ const status = tx?.txStatus;
52
+ if (status !== GnosisTransactionStatus.FAILED &&
53
+ status !== GnosisTransactionStatus.SUCCESS &&
54
+ status !== GnosisTransactionStatus.CANCELLED) {
55
+ // Workaround, Wait 2 seconds before checking the gnosis status again
56
+ // TODO: There might be a better way to do this
57
+ // eslint-disable-next-line no-promise-executor-return
58
+ await new Promise((res) => setTimeout(res, 2000));
59
+ return getGnosisTransactionHash(initialHash);
60
+ }
61
+ return tx?.txHash ?? initialHash;
62
+ };
63
+ return {
64
+ getGnosisSafeContext,
65
+ isSameAddressAndGnosisContext,
66
+ isGnosisContext,
67
+ getGnosisTransactionHash,
68
+ };
69
+ };
70
+ //# 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,5 @@
1
+ export declare const useIntegratorContext: () => {
2
+ walletHandledExternally: boolean;
3
+ isEmbed: boolean;
4
+ widgetInIframe: boolean;
5
+ };
@@ -0,0 +1,39 @@
1
+ import { PriorityConnectors } from "./../../core/constants";
2
+ import { useGnosisContext } from "./../../hooks/wallet/useGnosisContext";
3
+ import { useMemo } from "react";
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,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,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,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC9D,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ChainData } from "@0xsquid/sdk/dist/types";
2
+ export declare const useMultiChainWallet: (chainToCompare: ChainData | undefined) => {
3
+ changeNetwork: import("@tanstack/react-query").UseMutationResult<boolean, any, void, unknown>;
4
+ networkConnected: boolean | undefined;
5
+ networkConnectedOnRightChain: boolean;
6
+ connectedAddress: string | undefined;
7
+ parsedAddress: string;
8
+ };
@@ -0,0 +1,113 @@
1
+ import { useCosmosContext } from "./../../core/providers/CosmosProvider";
2
+ import { useCosmosForChain } from "./../../hooks/cosmos/useCosmosForChain";
3
+ import { formatWalletAddress } from "./../../services/internal/walletService";
4
+ import { ChainType } from "@0xsquid/sdk/dist/types";
5
+ import { useMutation } from "@tanstack/react-query";
6
+ import { AddChainError, UserRejectedRequestError } from "@wagmi/core";
7
+ import { ethers } from "ethers";
8
+ import { useMemo } from "react";
9
+ import { ChainNotConfiguredError, SwitchChainError, useAccount, useNetwork, useSwitchNetwork, } from "wagmi";
10
+ export const useMultiChainWallet = (chainToCompare) => {
11
+ const { chain: currentEvmChain } = useNetwork();
12
+ const { isConnected: isEvmConnected, connector, address } = useAccount();
13
+ const { isConnected: cosmosIsConnected } = useCosmosContext();
14
+ const { cosmosAddress } = useCosmosForChain(chainToCompare);
15
+ const { switchNetworkAsync } = useSwitchNetwork({
16
+ throwForSwitchChainNotSupported: true,
17
+ });
18
+ /**
19
+ * Get connected address, depends on chainType
20
+ */
21
+ const connectedAddress = useMemo(() => {
22
+ switch (chainToCompare?.chainType) {
23
+ case ChainType.EVM:
24
+ return address;
25
+ case ChainType.COSMOS:
26
+ return cosmosAddress;
27
+ default:
28
+ return address;
29
+ }
30
+ }, [address, chainToCompare?.chainType, cosmosAddress]);
31
+ const parsedAddress = useMemo(() => formatWalletAddress(connectedAddress), [connectedAddress]);
32
+ /**
33
+ * Change current network for desired chain
34
+ */
35
+ const changeNetwork = useMutation(async () => {
36
+ // throw for tenderly fork chain addition
37
+ if (chainToCompare?.rpc.includes("tenderly")) {
38
+ throw new SwitchChainError("Add tenderly chain");
39
+ }
40
+ if (chainToCompare?.chainType === ChainType.EVM) {
41
+ await switchNetworkAsync?.(+chainToCompare.chainId);
42
+ }
43
+ // Implement keplr change network
44
+ // Looks like there are no method to do that at the moment
45
+ return false;
46
+ }, {
47
+ onError: async (error) => {
48
+ if (error instanceof UserRejectedRequestError) {
49
+ return;
50
+ }
51
+ if ((error instanceof ChainNotConfiguredError ||
52
+ error instanceof SwitchChainError ||
53
+ error instanceof AddChainError) &&
54
+ chainToCompare) {
55
+ const provider = await connector?.getProvider();
56
+ const chainName = chainToCompare.rpc.includes("tenderly")
57
+ ? `${chainToCompare.networkName} Tenderly fork`
58
+ : chainToCompare.networkName;
59
+ const chainParameters = {
60
+ chainId: ethers.utils.hexValue(parseInt(chainToCompare.chainId, 10)),
61
+ chainName,
62
+ nativeCurrency: chainToCompare.nativeCurrency,
63
+ rpcUrls: [chainToCompare.rpc],
64
+ blockExplorerUrls: chainToCompare.blockExplorerUrls,
65
+ iconUrls: [chainToCompare.chainIconURI],
66
+ };
67
+ provider.request({
68
+ method: "wallet_addEthereumChain",
69
+ params: [chainParameters],
70
+ });
71
+ }
72
+ },
73
+ });
74
+ /**
75
+ * Handle multiple chains
76
+ */
77
+ const networkConnected = useMemo(() => {
78
+ switch (chainToCompare?.chainType) {
79
+ case ChainType.EVM:
80
+ return isEvmConnected;
81
+ case ChainType.COSMOS:
82
+ return cosmosIsConnected;
83
+ default:
84
+ return isEvmConnected;
85
+ }
86
+ }, [isEvmConnected, chainToCompare, cosmosIsConnected]);
87
+ /**
88
+ * Checks if Network is connected and with the right chain
89
+ */
90
+ const networkConnectedOnRightChain = useMemo(() => {
91
+ if (chainToCompare?.chainType === ChainType.EVM) {
92
+ // tenderly validation based on rpc
93
+ if (currentEvmChain?.rpcUrls?.default?.http?.length &&
94
+ currentEvmChain?.rpcUrls?.default?.http[0].includes("tenderly")) {
95
+ return (isEvmConnected &&
96
+ currentEvmChain?.rpcUrls?.default?.http[0].toLowerCase() ===
97
+ chainToCompare.rpc.toLowerCase());
98
+ }
99
+ return (isEvmConnected &&
100
+ currentEvmChain?.id.toString() === chainToCompare.chainId);
101
+ }
102
+ // TODO: Implement keplr check
103
+ return true;
104
+ }, [isEvmConnected, currentEvmChain, chainToCompare]);
105
+ return {
106
+ changeNetwork,
107
+ networkConnected,
108
+ networkConnectedOnRightChain,
109
+ connectedAddress,
110
+ parsedAddress,
111
+ };
112
+ };
113
+ //# sourceMappingURL=useMultiChainWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMultiChainWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useMultiChainWallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,gBAAgB,GACjB,MAAM,OAAO,CAAC;AAEf,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,cAAqC,EAAE,EAAE;IAC3E,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,CAAC;IAChD,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;IACzE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC9D,MAAM,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAE5D,MAAM,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,CAAC;QAC9C,+BAA+B,EAAE,IAAI;KACtC,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,QAAQ,cAAc,EAAE,SAAS,EAAE,CAAC;YAClC,KAAK,SAAS,CAAC,GAAG;gBAChB,OAAO,OAAO,CAAC;YACjB,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,aAAa,CAAC;YACvB;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC3C,CAAC,gBAAgB,CAAC,CACnB,CAAC;IAEF;;OAEG;IACH,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,IAAI,EAAE;QACT,yCAAyC;QACzC,IAAI,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,cAAc,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YAChD,MAAM,kBAAkB,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;QACD,iCAAiC;QACjC,0DAA0D;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC,EACD;QACE,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;YAC5B,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;gBAC9C,OAAO;YACT,CAAC;YACD,IACE,CAAC,KAAK,YAAY,uBAAuB;gBACvC,KAAK,YAAY,gBAAgB;gBACjC,KAAK,YAAY,aAAa,CAAC;gBACjC,cAAc,EACd,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,WAAW,EAAE,CAAC;gBAChD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACvD,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,gBAAgB;oBAC/C,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC;gBAC/B,MAAM,eAAe,GAA8B;oBACjD,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAC5B,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CACrC;oBACD,SAAS;oBACT,cAAc,EAAE,cAAc,CAAC,cAAc;oBAC7C,OAAO,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC;oBAC7B,iBAAiB,EAAE,cAAc,CAAC,iBAAiB;oBACnD,QAAQ,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC;iBACxC,CAAC;gBACF,QAAQ,CAAC,OAAO,CAAC;oBACf,MAAM,EAAE,yBAAyB;oBACjC,MAAM,EAAE,CAAC,eAAe,CAAC;iBAC1B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CACF,CAAC;IAEF;;OAEG;IACH,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,QAAQ,cAAc,EAAE,SAAS,EAAE,CAAC;YAClC,KAAK,SAAS,CAAC,GAAG;gBAChB,OAAO,cAAc,CAAC;YACxB,KAAK,SAAS,CAAC,MAAM;gBACnB,OAAO,iBAAiB,CAAC;YAC3B;gBACE,OAAO,cAAc,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAExD;;OAEG;IACH,MAAM,4BAA4B,GAAG,OAAO,CAAC,GAAG,EAAE;QAChD,IAAI,cAAc,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC;YAChD,mCAAmC;YACnC,IACE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;gBAC/C,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAC/D,CAAC;gBACD,OAAO,CACL,cAAc;oBACd,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;wBACtD,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,CACnC,CAAC;YACJ,CAAC;YAED,OAAO,CACL,cAAc;gBACd,eAAe,EAAE,EAAE,CAAC,QAAQ,EAAE,KAAK,cAAc,CAAC,OAAO,CAC1D,CAAC;QACJ,CAAC;QACD,8BAA8B;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;IAEtD,OAAO;QACL,aAAa;QACb,gBAAgB;QAChB,4BAA4B;QAC5B,gBAAgB;QAChB,aAAa;KACd,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Wallet } from "@/core/types/wallet";
2
+ import type { ChainData } from "@0xsquid/sdk/dist/types";
3
+ export declare const useWallet: (chain: ChainData | undefined) => {
4
+ currentWallet: Wallet | undefined;
5
+ connectWallet: (wallet: Wallet, redirect?: boolean, direction?: "from" | "to") => Promise<void>;
6
+ };
@@ -0,0 +1,65 @@
1
+ import { wallets } from "./../../core/constants";
2
+ import { useCosmosContext } from "./../../core/providers/CosmosProvider";
3
+ import { useSquidChains } from "./../../hooks/chains/useSquidChains";
4
+ import { useSquidRouter } from "./../../hooks/webapp-router/useSquidRouter";
5
+ import { formatChainsForWagmi, redirectExtensionStoreIfNotInstalled, } from "./../../services/internal/walletService";
6
+ import { ChainType } from "@0xsquid/sdk/dist/types";
7
+ import { useMemo } from "react";
8
+ import { useAccount, useConnect, useDisconnect } from "wagmi";
9
+ export const useWallet = (chain) => {
10
+ const { connector: activeConnector, isConnected: isEvmConnected } = useAccount();
11
+ const { disconnectAsync: disconnectEvm } = useDisconnect();
12
+ const { isConnected: cosmosIsConnected, connectCosmos, cosmosConnectedWallet, } = useCosmosContext();
13
+ const { connectAsync } = useConnect();
14
+ const { previousRoute } = useSquidRouter();
15
+ const { chains } = useSquidChains();
16
+ const connectWallet = async (wallet, redirect, direction) => {
17
+ redirectExtensionStoreIfNotInstalled(wallet);
18
+ try {
19
+ if (wallet && wallet.connector && wallet.type === ChainType.EVM) {
20
+ await disconnectEvm();
21
+ await connectAsync({
22
+ connector: wallet.connector(formatChainsForWagmi(chains)),
23
+ });
24
+ }
25
+ else if (wallet.type === ChainType.COSMOS && chain) {
26
+ await connectCosmos?.mutateAsync({ chain, wallet, direction });
27
+ }
28
+ if (redirect) {
29
+ previousRoute();
30
+ }
31
+ }
32
+ catch (error) {
33
+ console.error(error);
34
+ }
35
+ };
36
+ /**
37
+ * Get the connected wallet object
38
+ * @returns {Wallet | undefined}
39
+ */
40
+ const currentWallet = useMemo(() => {
41
+ if (chain?.chainType === ChainType.EVM) {
42
+ if (activeConnector?.id && isEvmConnected) {
43
+ const activeWallet = wallets.find((w) => w.connectorId === activeConnector.id);
44
+ return activeWallet;
45
+ }
46
+ }
47
+ if (chain?.chainType === ChainType.COSMOS) {
48
+ if (cosmosIsConnected) {
49
+ return wallets.find((w) => w.connectorId === cosmosConnectedWallet?.connectorId);
50
+ }
51
+ }
52
+ return undefined;
53
+ }, [
54
+ activeConnector?.id,
55
+ chain?.chainType,
56
+ cosmosConnectedWallet?.connectorId,
57
+ cosmosIsConnected,
58
+ isEvmConnected,
59
+ ]);
60
+ return {
61
+ currentWallet,
62
+ connectWallet,
63
+ };
64
+ };
65
+ //# sourceMappingURL=useWallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { WidgetRoute } from "@/core/types/route";
2
+ export declare const useSquidRouter: () => {
3
+ currentRoute: WidgetRoute;
4
+ switchRoute: (route: WidgetRoute, params?: {
5
+ [key: string]: any | undefined;
6
+ } | undefined, addRouteToHistory?: boolean) => void;
7
+ previousRoute: () => void;
8
+ currentRouteParams: {
9
+ [key: string]: any;
10
+ } | undefined;
11
+ };
@@ -0,0 +1,33 @@
1
+ import { useSquidRouterStore } from "./../../hooks/store/useSquidStore";
2
+ export const useSquidRouter = () => {
3
+ const { history } = useSquidRouterStore();
4
+ const switchRoute = (route, params, addRouteToHistory = true) => {
5
+ const currentHistory = useSquidRouterStore.getState().history;
6
+ if (addRouteToHistory) {
7
+ useSquidRouterStore.setState({
8
+ history: [...currentHistory, { route, params }],
9
+ });
10
+ }
11
+ else {
12
+ useSquidRouterStore.setState({
13
+ history: [...currentHistory.slice(0, -1), { route, params }],
14
+ });
15
+ }
16
+ };
17
+ const previousRoute = () => {
18
+ const currentHistory = useSquidRouterStore.getState().history;
19
+ currentHistory.pop();
20
+ useSquidRouterStore.setState({
21
+ history: currentHistory,
22
+ });
23
+ };
24
+ const currentRoute = history[history.length - 1].route;
25
+ const currentRouteParams = history[history.length - 1].params;
26
+ return {
27
+ currentRoute,
28
+ switchRoute,
29
+ previousRoute,
30
+ currentRouteParams,
31
+ };
32
+ };
33
+ //# sourceMappingURL=useSquidRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSquidRouter.js","sourceRoot":"","sources":["../../../src/hooks/webapp-router/useSquidRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE1C,MAAM,WAAW,GAAG,CAClB,KAAkB,EAClB,MAAuD,EACvD,iBAAiB,GAAG,IAAI,EACxB,EAAE;QACF,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QAC9D,IAAI,iBAAiB,EAAE,CAAC;YACtB,mBAAmB,CAAC,QAAQ,CAAC;gBAC3B,OAAO,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC;gBAC3B,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAC7D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QAC9D,cAAc,CAAC,GAAG,EAAE,CAAC;QAErB,mBAAmB,CAAC,QAAQ,CAAC;YAC3B,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9D,OAAO;QACL,YAAY;QACZ,WAAW;QACX,aAAa;QACb,kBAAkB;KACnB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,3 @@
1
- // src/index.tsx
2
1
  export * from "./hooks";
3
2
  export * from "./provider";
4
3
  export * from "./core";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ interface Config {
3
+ integratorId: string;
4
+ }
5
+ interface ISdkProviderProps {
6
+ children: React.ReactNode;
7
+ config: Config;
8
+ }
9
+ export declare const SquidProvider: React.FC<ISdkProviderProps>;
10
+ export {};
@@ -0,0 +1,71 @@
1
+ import { wallets } from "./../core/constants";
2
+ import { CosmosProvider } from "./../core/providers/CosmosProvider";
3
+ import { defaultOptions } from "./../core/queries/react-query-config";
4
+ import { useSquidStore } from "./../hooks/store/useSquidStore";
5
+ import { getConfigWithDefaults } from "./../services/internal/configService";
6
+ import { formatChainsForWagmi } from "./../services/internal/walletService";
7
+ import { Squid } from "@0xsquid/sdk";
8
+ import { ChainType } from "@0xsquid/squid-types";
9
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
10
+ import { createContext, useEffect, useState } from "react";
11
+ import React from "react";
12
+ import { WagmiConfig, configureChains, createClient } from "wagmi";
13
+ import { jsonRpcProvider } from "wagmi/providers/jsonRpc";
14
+ const SquidContext = createContext(undefined);
15
+ const verifyIntegratorIdValidity = (integratorId) => {
16
+ if (!integratorId) {
17
+ throw new Error("Integrator ID is required");
18
+ }
19
+ };
20
+ export const SquidProvider = ({ children, config, }) => {
21
+ console.log("SquidProvider");
22
+ verifyIntegratorIdValidity(config.integratorId);
23
+ const queryClient = new QueryClient({ defaultOptions });
24
+ const [wagmiClient, setWagmiClient] = useState(null);
25
+ /**
26
+ * Initialize Wagmi client
27
+ * @param chains
28
+ */
29
+ const initWagmiClient = (chains) => {
30
+ const { provider, chains: wagmiChains } = configureChains(formatChainsForWagmi(chains), [
31
+ jsonRpcProvider({
32
+ rpc: (chain) => ({
33
+ http: chain.rpcUrls.default.http[0] ?? "",
34
+ webSocket: undefined,
35
+ }),
36
+ }),
37
+ ]);
38
+ // Get formatted connectors from Squid supported wallets
39
+ const evmWalletConnectors = wallets
40
+ .filter((w) => w.type === ChainType.EVM)
41
+ .map((w) => w.connector?.(wagmiChains));
42
+ const wClient = createClient({
43
+ persister: null,
44
+ provider,
45
+ connectors: [...evmWalletConnectors],
46
+ });
47
+ setWagmiClient(wClient);
48
+ };
49
+ // Initialize Squid SDK & wagmi client
50
+ useEffect(() => {
51
+ const initializeSdk = async () => {
52
+ const squid = new Squid({
53
+ integratorId: config.integratorId,
54
+ baseUrl: "https://v2.api.squidrouter.com",
55
+ });
56
+ await squid.init();
57
+ useSquidStore.setState((_) => ({
58
+ config: getConfigWithDefaults({
59
+ integratorId: config.integratorId,
60
+ }),
61
+ squid,
62
+ }));
63
+ initWagmiClient(squid.chains);
64
+ };
65
+ initializeSdk();
66
+ }, []);
67
+ return (React.createElement(SquidContext.Provider, { value: undefined },
68
+ React.createElement(QueryClientProvider, { client: queryClient }, wagmiClient && (React.createElement(WagmiConfig, { client: wagmiClient },
69
+ React.createElement(CosmosProvider, null, children))))));
70
+ };
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ interface EventData {
2
+ event: string;
3
+ }
4
+ declare global {
5
+ interface Window {
6
+ dataLayer: Array<EventData> | undefined;
7
+ }
8
+ }
9
+ export declare class AnalyticsService {
10
+ private static pushEvent;
11
+ static submitButtonPushed(): void;
12
+ static givePermissionToUseTokenButton(): void;
13
+ static settingClicked(): void;
14
+ static historyClicked(): void;
15
+ static expressClicked(): void;
16
+ static regularClicked(): void;
17
+ }
18
+ export {};
@@ -0,0 +1,30 @@
1
+ export class AnalyticsService {
2
+ static pushEvent(eventData) {
3
+ if (window) {
4
+ const dataLayer = window.dataLayer || [];
5
+ const domain = window.location.hostname;
6
+ if (dataLayer && domain.includes("squidrouter.com")) {
7
+ dataLayer.push(eventData);
8
+ }
9
+ }
10
+ }
11
+ static submitButtonPushed() {
12
+ this.pushEvent({ event: "submitswap_cta_clicked" });
13
+ }
14
+ static givePermissionToUseTokenButton() {
15
+ this.pushEvent({ event: "permissiontoken_cta_clicked" });
16
+ }
17
+ static settingClicked() {
18
+ this.pushEvent({ event: "settings_clicked" });
19
+ }
20
+ static historyClicked() {
21
+ this.pushEvent({ event: "history_clicked" });
22
+ }
23
+ static expressClicked() {
24
+ this.pushEvent({ event: "expressTx_clicked" });
25
+ }
26
+ static regularClicked() {
27
+ this.pushEvent({ event: "regularTx_clicked" });
28
+ }
29
+ }
30
+ //# sourceMappingURL=analyticsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyticsService.js","sourceRoot":"","sources":["../../../src/services/external/analyticsService.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,SAAS,CAAC,SAAoB;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAExC,IAAI,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACpD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,kBAAkB;QAC9B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACtD,CAAC;IAEM,MAAM,CAAC,8BAA8B;QAC1C,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ interface CoingeckoPriceQuery {
2
+ apiUrl?: string;
3
+ chainId?: string;
4
+ tokenAddress?: string;
5
+ integratorId?: string;
6
+ }
7
+ export declare const fetchPriceForToken: ({ apiUrl, chainId, tokenAddress, integratorId, }: CoingeckoPriceQuery) => Promise<number>;
8
+ export {};