@0xsquid/react-hooks 1.0.4 → 1.0.6

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 (317) 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 -1
  217. package/.babelrc +0 -7
  218. package/.eslintignore +0 -1
  219. package/.eslintrc.json +0 -44
  220. package/CHANGELOG.md +0 -9
  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.cjs.json +0 -8
  292. package/tsconfig.json +0 -31
  293. /package/{src → dist}/assets/images/icons/wallets/binance.svg +0 -0
  294. /package/{src → dist}/assets/images/icons/wallets/bitget.svg +0 -0
  295. /package/{src → dist}/assets/images/icons/wallets/bitkeep.svg +0 -0
  296. /package/{src → dist}/assets/images/icons/wallets/blockchaindotcom.svg +0 -0
  297. /package/{src → dist}/assets/images/icons/wallets/brave.svg +0 -0
  298. /package/{src → dist}/assets/images/icons/wallets/c98.svg +0 -0
  299. /package/{src → dist}/assets/images/icons/wallets/coinbase.svg +0 -0
  300. /package/{src → dist}/assets/images/icons/wallets/cosmostation.svg +0 -0
  301. /package/{src → dist}/assets/images/icons/wallets/defiConnect.svg +0 -0
  302. /package/{src → dist}/assets/images/icons/wallets/exodus.svg +0 -0
  303. /package/{src → dist}/assets/images/icons/wallets/fetchai.svg +0 -0
  304. /package/{src → dist}/assets/images/icons/wallets/keplr.svg +0 -0
  305. /package/{src → dist}/assets/images/icons/wallets/leap.svg +0 -0
  306. /package/{src → dist}/assets/images/icons/wallets/metamask.svg +0 -0
  307. /package/{src → dist}/assets/images/icons/wallets/okx.svg +0 -0
  308. /package/{src → dist}/assets/images/icons/wallets/rabby.svg +0 -0
  309. /package/{src → dist}/assets/images/icons/wallets/trustwallet.svg +0 -0
  310. /package/{src → dist}/assets/images/icons/wallets/walletConnect.svg +0 -0
  311. /package/{src → dist}/assets/images/icons/wallets/wallet_icon.svg +0 -0
  312. /package/{src → dist}/assets/images/icons/wallets/xdefi.svg +0 -0
  313. /package/{src → dist}/assets/images/icons/wallets/zerion.svg +0 -0
  314. /package/{src → dist}/contracts/typechain/factories/ERC20__factory.d.ts +0 -0
  315. /package/{src/core/index.ts → dist/core/index.d.ts} +0 -0
  316. /package/{src/services/index.ts → dist/services/index.d.ts} +0 -0
  317. /package/{src/tests/sample.json → dist/tests/jest-svg-transform.d.ts} +0 -0
@@ -1,293 +0,0 @@
1
- import { SquidStatusErrorType } from "@/core/types/error";
2
- import type {
3
- StepStatusGetterProps,
4
- TransactionParams,
5
- } from "@/core/types/transaction";
6
- import {
7
- AxelarStatusResponseType,
8
- TransactionStatus,
9
- TransactionType,
10
- } from "@/core/types/transaction";
11
- import type { ChainData, StatusResponse, Token } from "@0xsquid/sdk/dist/types";
12
- import type { UseQueryResult } from "@tanstack/react-query";
13
- import { isStatusError } from "./errorService";
14
- import { getMainExplorerUrl } from "./transactionService";
15
-
16
- /**
17
- * Get the steps for a transaction
18
- * First step and second step are always the same
19
- * @param transaction
20
- * @param statusResponse
21
- * @returns {TransactionStepStatus[]}
22
- */
23
- export const getStepStatuses = ({
24
- transaction,
25
- statusResponse,
26
- onlyFullStatusStep,
27
- }: StepStatusGetterProps): TransactionStatus[] => {
28
- let firstStepStatus: TransactionStatus;
29
-
30
- // "warning" state is a custom one indicating that
31
- // the user is taking too much time to validate the transaction
32
- // And can be set to loading
33
- switch (transaction?.sourceStatus) {
34
- case "error":
35
- case "success":
36
- case "ongoing":
37
- firstStepStatus = transaction.sourceStatus;
38
- break;
39
- case "warning":
40
- firstStepStatus = TransactionStatus.ONGOING;
41
- break;
42
- default:
43
- firstStepStatus = TransactionStatus.PENDING;
44
- }
45
-
46
- let middleStepStatus: TransactionStatus =
47
- !onlyFullStatusStep && firstStepStatus !== "success"
48
- ? TransactionStatus.PENDING
49
- : middleStepChecker(statusResponse);
50
-
51
- const lastStepStatus = getLastStepStatus(firstStepStatus, middleStepStatus);
52
-
53
- // Once we have the last step status,
54
- // we have to override the middle step for some states
55
- middleStepStatus =
56
- middleStepStatus === "needs_gas" || middleStepStatus === "partial_success"
57
- ? TransactionStatus.SUCCESS
58
- : middleStepStatus;
59
-
60
- return onlyFullStatusStep
61
- ? [middleStepStatus]
62
- : [firstStepStatus, middleStepStatus, lastStepStatus];
63
- };
64
-
65
- const getLastStepStatus = (
66
- first: TransactionStatus,
67
- middle: TransactionStatus
68
- ): TransactionStatus => {
69
- if (
70
- first === TransactionStatus.PENDING ||
71
- first === "ongoing" ||
72
- first === "error"
73
- ) {
74
- return TransactionStatus.PENDING;
75
- }
76
-
77
- switch (middle) {
78
- case "initialLoading":
79
- case "ongoing":
80
- return TransactionStatus.PENDING;
81
- default:
82
- return middle;
83
- }
84
- };
85
-
86
- export const getHalfSuccessState = (
87
- status?: TransactionStatus
88
- ): TransactionStatus | undefined => {
89
- switch (status) {
90
- case "success":
91
- return TransactionStatus.SUCCESS;
92
- case "partial_success": // Received axlUSDC
93
- return TransactionStatus.PARTIAL_SUCCESS;
94
- case "needs_gas":
95
- return TransactionStatus.NEEDS_GAS;
96
- default:
97
- return undefined;
98
- }
99
- };
100
-
101
- const middleStepChecker = (
102
- statusResponse?: UseQueryResult<any, unknown>
103
- ): TransactionStatus => {
104
- const squidStatus = statusResponse?.data;
105
- const successState = getHalfSuccessState(
106
- squidStatus?.squidTransactionStatus as TransactionStatus | undefined
107
- );
108
- if (successState) {
109
- return successState;
110
- }
111
- if (squidStatus?.status === AxelarStatusResponseType.ERROR) {
112
- const { error } = squidStatus;
113
- if (isStatusError(error)) {
114
- if (error.errorType === SquidStatusErrorType.NotFoundError) {
115
- return TransactionStatus.ERROR;
116
- }
117
- }
118
- return TransactionStatus.ERROR;
119
- }
120
-
121
- if (statusResponse?.isInitialLoading) {
122
- return TransactionStatus.INITIAL_LOADING;
123
- }
124
-
125
- return TransactionStatus.ONGOING;
126
- };
127
-
128
- export const getStepsInfos = ({
129
- fromChain,
130
- toChain,
131
- fromToken,
132
- toToken,
133
- amount,
134
- txType,
135
- transaction,
136
- statusResponse,
137
- }: {
138
- txType: TransactionType;
139
- amount: string;
140
- fromChain?: ChainData;
141
- toChain?: ChainData;
142
- fromToken?: Token;
143
- toToken?: Token;
144
- transaction?: TransactionParams;
145
- statusResponse?: UseQueryResult<StatusResponse, unknown>;
146
- }): {
147
- label: string;
148
- status: TransactionStatus;
149
- subTitle?: string;
150
- link?: string;
151
- }[] => {
152
- const [firstStepStatus, middleStepStatus, lastStepStatus] = getStepStatuses({
153
- transaction,
154
- statusResponse,
155
- });
156
-
157
- const payLabel = `Pay ${amount} ${fromToken?.symbol} on ${fromChain?.networkName}`;
158
- const swapForUSDCLabel = `Swap ${fromToken?.symbol} for axlUSDC`;
159
- const sendUSDCLabel = `Send axlUSDC to ${toChain?.networkName}`;
160
- const swapUSDCLabel = `Swap axlUSDC for ${toToken?.symbol}`;
161
- const receiveLabel = `Receive ${toToken?.symbol} on ${toChain?.networkName}`;
162
- const axelarUrl = getMainExplorerUrl(transaction);
163
- const sourceExplorerUrl = transaction?.sourceTxExplorerUrl;
164
- const destinationExplorerUrl = statusResponse?.data?.toChain?.transactionUrl;
165
-
166
- switch (txType) {
167
- case TransactionType.CALL_BRIDGE_CALL:
168
- return [
169
- {
170
- label: payLabel,
171
- status: firstStepStatus,
172
- link: sourceExplorerUrl,
173
- subTitle: "View on explorer",
174
- },
175
- {
176
- label: swapForUSDCLabel,
177
- status:
178
- firstStepStatus !== "success"
179
- ? TransactionStatus.PENDING
180
- : firstStepStatus,
181
- link: axelarUrl,
182
- subTitle: "View on Axelarscan",
183
- },
184
- {
185
- label: sendUSDCLabel,
186
- status: middleStepStatus,
187
- link: axelarUrl,
188
- subTitle: "View on Axelarscan",
189
- },
190
- {
191
- label: swapUSDCLabel,
192
- status:
193
- middleStepStatus !== "success"
194
- ? TransactionStatus.PENDING
195
- : middleStepStatus,
196
- link: axelarUrl,
197
- subTitle: "View on Axelarscan",
198
- },
199
- {
200
- label: receiveLabel,
201
- status: lastStepStatus,
202
- link: destinationExplorerUrl,
203
- subTitle: "View on explorer",
204
- },
205
- ];
206
- case TransactionType.CALL_BRIDGE:
207
- return [
208
- {
209
- label: payLabel,
210
- status: firstStepStatus,
211
- link: sourceExplorerUrl,
212
- subTitle: "View on explorer",
213
- },
214
- {
215
- label: swapForUSDCLabel,
216
- status:
217
- firstStepStatus !== "success"
218
- ? TransactionStatus.PENDING
219
- : firstStepStatus,
220
- link: axelarUrl,
221
- subTitle: "View on Axelarscan",
222
- },
223
- {
224
- label: sendUSDCLabel,
225
- status: middleStepStatus,
226
- link: axelarUrl,
227
- subTitle: "View on Axelarscan",
228
- },
229
- {
230
- label: receiveLabel,
231
- status: lastStepStatus,
232
- link: destinationExplorerUrl,
233
- subTitle: "View on explorer",
234
- },
235
- ];
236
- case TransactionType.BRIDGE:
237
- return [
238
- {
239
- label: payLabel,
240
- status: firstStepStatus,
241
- link: sourceExplorerUrl,
242
- subTitle: "View on explorer",
243
- },
244
- {
245
- label: sendUSDCLabel,
246
- status:
247
- firstStepStatus !== "success"
248
- ? TransactionStatus.PENDING
249
- : firstStepStatus,
250
- link: axelarUrl,
251
- subTitle: "View on Axelarscan",
252
- },
253
- {
254
- label: receiveLabel,
255
- status: lastStepStatus,
256
- link: destinationExplorerUrl,
257
- subTitle: "View on explorer",
258
- },
259
- ];
260
- case TransactionType.BRIDGE_CALL:
261
- return [
262
- {
263
- label: payLabel,
264
- status: firstStepStatus,
265
- link: sourceExplorerUrl,
266
- subTitle: "View on explorer",
267
- },
268
- {
269
- label: sendUSDCLabel,
270
- status:
271
- firstStepStatus !== "success"
272
- ? TransactionStatus.PENDING
273
- : firstStepStatus,
274
- link: axelarUrl,
275
- subTitle: "View on Axelarscan",
276
- },
277
- {
278
- label: swapUSDCLabel,
279
- status: middleStepStatus,
280
- link: axelarUrl,
281
- subTitle: "View on Axelarscan",
282
- },
283
- {
284
- label: receiveLabel,
285
- status: lastStepStatus,
286
- link: destinationExplorerUrl,
287
- subTitle: "View on explorer",
288
- },
289
- ];
290
- default:
291
- return [];
292
- }
293
- };
@@ -1,158 +0,0 @@
1
- import { walletStoreLinks, wallets } from "@/core/constants";
2
- import type { ConnectorID, TypedWindow, Wallet } from "@/core/types/wallet";
3
- import type { ChainData, CosmosChain } from "@0xsquid/sdk/dist/types";
4
- import { ChainType } from "@0xsquid/sdk/dist/types";
5
- import { fromBech32 } from "@cosmjs/encoding";
6
- import type { ChainInfo } from "@keplr-wallet/types";
7
- import { ethers } from "ethers";
8
- import getProperty from "lodash/get";
9
- import type { Chain } from "wagmi";
10
-
11
- export const formatWalletAddress = (
12
- walletAddress: string | undefined,
13
- trimLength: number = 5
14
- ) => {
15
- return walletAddress
16
- ? walletAddress?.length > trimLength
17
- ? `${walletAddress.slice(0, trimLength)}...${walletAddress.slice(
18
- walletAddress.length - (trimLength - 2), // -2 here because the start of wallet is 0x
19
- walletAddress.length
20
- )}`.toLowerCase()
21
- : walletAddress
22
- : "";
23
- };
24
-
25
- export const isCosmosAddressValid = (chainPrefix: string, address: string) => {
26
- try {
27
- if (!address.toLowerCase().startsWith(chainPrefix)) {
28
- throw new Error("Invalid address for this chain");
29
- }
30
- fromBech32(address);
31
- return true;
32
- } catch (error) {
33
- return false;
34
- }
35
- };
36
-
37
- export const isWalletAddressValid = (
38
- chainData?: ChainData,
39
- address?: string
40
- ) => {
41
- if (address) {
42
- if (chainData?.chainType === ChainType.EVM) {
43
- return ethers.utils.isAddress(address);
44
- }
45
- if (chainData?.chainType === ChainType.COSMOS) {
46
- return isCosmosAddressValid(
47
- (chainData as CosmosChain).bech32Config.bech32PrefixAccAddr,
48
- address
49
- );
50
- }
51
- }
52
- return false;
53
- };
54
-
55
- export const getWalletByConnectorID = (
56
- connectorID: ConnectorID
57
- ): Wallet | undefined => {
58
- return wallets.find((w) => w.connectorId === connectorID);
59
- };
60
-
61
- export const getCosmosChainInfosObject = (chain: ChainData): ChainInfo => {
62
- const cosmosChain = chain as CosmosChain;
63
- return {
64
- ...cosmosChain,
65
- chainName: cosmosChain.networkName,
66
- chainId: cosmosChain.chainId.toString(),
67
- rpc: cosmosChain.rpc.split("?chain")[0],
68
- feeCurrencies: cosmosChain.feeCurrencies.map((c) => ({
69
- ...c,
70
- gasPriceStep: cosmosChain.gasPriceStep,
71
- })),
72
- };
73
- };
74
-
75
- export const isWalletExtensionInstalled = (wallet: Wallet) => {
76
- if (
77
- (wallet.connectorId === "metaMask" && !window.ethereum) ||
78
- (wallet.connectorId === "keplr" && !(window as TypedWindow).keplr) ||
79
- (wallet.connectorId === "leap" && !(window as TypedWindow).leap) ||
80
- // Cosmostation has two different connectors for different extensions
81
- ((wallet.connectorId === "cosmostationCosmos" ||
82
- wallet.connectorId === "cosmostation") &&
83
- !(window as TypedWindow).cosmostation) ||
84
- (wallet.connectorId === "xdefi" && !(window as TypedWindow).xfi) ||
85
- (wallet.connectorId === "bitget" && !(window as TypedWindow).bitkeep) ||
86
- (wallet.connectorId === "exodus" && !(window as TypedWindow).exodus)
87
- ) {
88
- return false;
89
- }
90
- return true;
91
- };
92
-
93
- export const redirectExtensionStoreIfNotInstalled = (wallet: Wallet) => {
94
- const { userAgent } = navigator;
95
- let link;
96
-
97
- if (!isWalletExtensionInstalled(wallet)) {
98
- if (userAgent.indexOf("Firefox") > -1) {
99
- link = walletStoreLinks[wallet.connectorId].firefox;
100
- } else if (userAgent.indexOf("Chrome") > -1) {
101
- link = walletStoreLinks[wallet.connectorId].chrome;
102
- }
103
-
104
- if (link && link !== "") {
105
- (window as any)?.open(link, "_blank").focus();
106
- }
107
- }
108
- };
109
-
110
- /**
111
- * Get the value of an object property using a string path
112
- * E.G. window["cosmostation.providers.keplr"]
113
- * @param obj
114
- * @param path
115
- * @returns
116
- */
117
- export const getDescendantProp = (obj: any, path: string) => {
118
- return path.split(".").reduce((acc, part) => acc && acc[part], obj);
119
- };
120
-
121
- export const formatChainsForWagmi = (chains: ChainData[]): Chain[] => {
122
- return chains
123
- ?.filter((c) => c.chainType === ChainType.EVM)
124
- .map(
125
- (c) =>
126
- ({
127
- id: +c.chainId,
128
- name: c.networkName,
129
- network: c.networkName,
130
- contracts: {
131
- multicall3: {
132
- address: "0xcA11bde05977b3631167028862bE2a173976CA11",
133
- },
134
- },
135
- nativeCurrency: c.nativeCurrency,
136
- rpcUrls: { public: { http: [c.rpc] }, default: { http: [c.rpc] } },
137
- }) as Chain
138
- );
139
- };
140
-
141
- /**
142
- * Dynamically accesses a nested property of an object based on a dot-separated string path.
143
- * Returns the value of the property if found, otherwise undefined.
144
- * e.g. "xfi.keplr" will return window.xfi.keplr
145
- */
146
- export const accessProperty = (
147
- object: Record<string, any>,
148
- path: string
149
- ): any => {
150
- const value = getProperty(object, path);
151
- if (value === undefined) {
152
- console.error(`Property "${path}" not found while reading object`, object);
153
- }
154
- return value;
155
- };
156
-
157
- export const metamaskIcon = getWalletByConnectorID("metaMask")?.icon;
158
- export const EVMnetworkNotSupportedErrorCode = 4902;
@@ -1,176 +0,0 @@
1
- import {
2
- shareSubgraphId,
3
- sortTokensBySharedSubgraphIds,
4
- filterChains,
5
- } from "@/services/internal/assetsService";
6
- import { OnlineSquidData, fetchSquidData } from "./fetchSquidData";
7
-
8
- let squid: OnlineSquidData | undefined = undefined;
9
- let CHAINS: OnlineSquidData["chains"] = {};
10
- let TOKENS: OnlineSquidData["tokens"] = {};
11
-
12
- describe("assetsService", () => {
13
- beforeAll(async () => {
14
- squid = await fetchSquidData();
15
- CHAINS = squid?.chains;
16
- TOKENS = squid?.tokens;
17
- });
18
-
19
- describe("shareSubgraphId", () => {
20
- test("should return false when no token has subgraph ids", () => {
21
- expect(shareSubgraphId(TOKENS.BASE.USDBC, TOKENS.AVALANCHE.MAI)).toBe(
22
- false
23
- );
24
- });
25
-
26
- test("should return true when tokens share subgraph ids", () => {
27
- expect(shareSubgraphId(TOKENS.AVALANCHE.USDC, TOKENS.ETHEREUM.USDC)).toBe(
28
- true
29
- );
30
- });
31
-
32
- test("should return false when tokens do not share subgraph ids", () => {
33
- expect(shareSubgraphId(TOKENS.AVALANCHE.AVAX, TOKENS.ETHEREUM.ETH)).toBe(
34
- false
35
- );
36
- });
37
- });
38
-
39
- describe("sortTokensBySharedSubgraphIds", () => {
40
- test("should sort 'a' token first when it shares subgraph ids with the token to check", () => {
41
- expect(
42
- sortTokensBySharedSubgraphIds({
43
- a: TOKENS.AVALANCHE.USDC,
44
- b: TOKENS.ETHEREUM.WBTC,
45
- tokenToCheck: TOKENS.ETHEREUM.USDC,
46
- })
47
- ).toBe(-1);
48
- });
49
-
50
- test("should sort 'b' token first when it shares subgraph ids with the token to check", () => {
51
- expect(
52
- sortTokensBySharedSubgraphIds({
53
- a: TOKENS.AVALANCHE.USDC,
54
- b: TOKENS.ETHEREUM.ETH,
55
- tokenToCheck: TOKENS.ETHEREUM.WETH,
56
- })
57
- ).toBe(1);
58
- });
59
-
60
- test("should not change order when tokens do not share subgraph ids with the token to check", () => {
61
- expect(
62
- sortTokensBySharedSubgraphIds({
63
- a: TOKENS.AVALANCHE.AVAX,
64
- b: TOKENS.ETHEREUM.ETH,
65
- tokenToCheck: TOKENS.ETHEREUM.USDC,
66
- })
67
- ).toBe(0);
68
- });
69
-
70
- test("should not change the order when both tokens share subgraph ids with the token to check", () => {
71
- expect(
72
- sortTokensBySharedSubgraphIds({
73
- a: TOKENS.ETHEREUM.USDC,
74
- b: TOKENS.AVALANCHE.axlUSDC,
75
- tokenToCheck: TOKENS.AVALANCHE.USDC,
76
- })
77
- ).toBe(0);
78
- });
79
- });
80
-
81
- describe("filterChains", () => {
82
- test("return chains without changes when no chain is disabled or coming soon", () => {
83
- const chains = [CHAINS.AVALANCHE, CHAINS.ETHEREUM, CHAINS.NOBLE];
84
-
85
- expect(
86
- filterChains({
87
- chains,
88
- config: {
89
- comingSoonChainIds: undefined,
90
- disabledChains: undefined,
91
- },
92
- direction: "from",
93
- })
94
- ).toEqual(chains);
95
- });
96
-
97
- test("sorts disabled chains to the end", () => {
98
- expect(
99
- filterChains({
100
- chains: [CHAINS.MOONBEAM, CHAINS.POLYGON, CHAINS.BINANCE],
101
- config: {
102
- comingSoonChainIds: undefined,
103
- disabledChains: { source: [CHAINS.POLYGON.chainId] },
104
- },
105
- direction: "from",
106
- })
107
- ).toEqual([CHAINS.MOONBEAM, CHAINS.BINANCE, CHAINS.POLYGON]);
108
-
109
- expect(
110
- filterChains({
111
- chains: [CHAINS.POLYGON, CHAINS.CELO, CHAINS.BINANCE],
112
- config: {
113
- comingSoonChainIds: undefined,
114
- disabledChains: { destination: [CHAINS.CELO.chainId] },
115
- },
116
- direction: "to",
117
- })
118
- ).toEqual([CHAINS.POLYGON, CHAINS.BINANCE, CHAINS.CELO]);
119
- });
120
-
121
- test("sorts coming soon chains to the end", () => {
122
- expect(
123
- filterChains({
124
- chains: [CHAINS.LINEA, CHAINS.FANTOM, CHAINS.CELO],
125
- config: {
126
- disabledChains: undefined,
127
- comingSoonChainIds: [CHAINS.LINEA.chainId],
128
- },
129
- direction: "from",
130
- })
131
- ).toEqual([CHAINS.FANTOM, CHAINS.CELO, CHAINS.LINEA]);
132
-
133
- expect(
134
- filterChains({
135
- chains: [CHAINS.NOBLE, CHAINS.OPTIMISM, CHAINS.MANTLE],
136
- config: {
137
- disabledChains: undefined,
138
- comingSoonChainIds: [CHAINS.NOBLE.chainId],
139
- },
140
- direction: "to",
141
- })
142
- ).toEqual([CHAINS.OPTIMISM, CHAINS.MANTLE, CHAINS.NOBLE]);
143
- });
144
-
145
- test("sorts available chains first, then disabled chains, and finally coming soon chains", () => {
146
- const chains = [
147
- CHAINS.MOONBEAM,
148
- CHAINS.POLYGON,
149
- CHAINS.BINANCE,
150
- CHAINS.LINEA,
151
- CHAINS.FANTOM,
152
- CHAINS.CELO,
153
- ];
154
-
155
- expect(
156
- filterChains({
157
- chains,
158
- config: {
159
- disabledChains: {
160
- source: [CHAINS.MOONBEAM.chainId, CHAINS.LINEA.chainId],
161
- },
162
- comingSoonChainIds: [CHAINS.POLYGON.chainId],
163
- },
164
- direction: "from",
165
- })
166
- ).toEqual([
167
- CHAINS.BINANCE,
168
- CHAINS.FANTOM,
169
- CHAINS.CELO,
170
- CHAINS.MOONBEAM,
171
- CHAINS.LINEA,
172
- CHAINS.POLYGON,
173
- ]);
174
- });
175
- });
176
- });