@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
@@ -1,486 +0,0 @@
1
- import { nativeEvmTokenAddress } from "@/core/constants";
2
- import {
3
- filterTokensForDestination,
4
- getDefaultTokenAddressForChain,
5
- getFirstAvailableChainId,
6
- getInitialOrDefaultTokenAddressForChain,
7
- } from "../services/internal/configService";
8
- import { OnlineSquidData, fetchSquidData } from "./fetchSquidData";
9
-
10
- let squid: OnlineSquidData | undefined = undefined;
11
- let CHAINS: OnlineSquidData["chains"] = {};
12
- let TOKENS: OnlineSquidData["tokens"] = {};
13
-
14
- describe("config service", () => {
15
- beforeAll(async () => {
16
- squid = await fetchSquidData();
17
- CHAINS = squid?.chains;
18
- TOKENS = squid?.tokens;
19
- });
20
- describe("getFirstAvailableChainId", () => {
21
- test("returns chain id of first chain when no initialAssets or comingSoonChainIds are specified", () => {
22
- expect(
23
- getFirstAvailableChainId({ integratorId: "" }, "from", [
24
- CHAINS.ETHEREUM,
25
- CHAINS.ARBITRUM,
26
- CHAINS.POLYGON,
27
- ])
28
- ).toBe(CHAINS.ETHEREUM.chainId);
29
-
30
- expect(
31
- getFirstAvailableChainId(
32
- {
33
- integratorId: "",
34
- comingSoonChainIds: [],
35
- initialAssets: {},
36
- },
37
- "from",
38
- [CHAINS.ETHEREUM, CHAINS.ARBITRUM, CHAINS.POLYGON]
39
- )
40
- ).toBe(CHAINS.ETHEREUM.chainId);
41
- });
42
-
43
- test("returns undefined when no chains are provided", () => {
44
- expect(getFirstAvailableChainId({ integratorId: "" }, "from", [])).toBe(
45
- undefined
46
- );
47
-
48
- expect(
49
- getFirstAvailableChainId({ integratorId: "" }, "from", undefined)
50
- ).toBe(undefined);
51
- });
52
-
53
- test("filters by a single comingSoonChainId", () => {
54
- expect(
55
- getFirstAvailableChainId(
56
- {
57
- integratorId: "",
58
- comingSoonChainIds: [CHAINS.CELO.chainId],
59
- },
60
- "from",
61
- [CHAINS.CELO, CHAINS.BASE, CHAINS.AVALANCHE]
62
- )
63
- ).toBe(CHAINS.BASE.chainId);
64
- });
65
-
66
- test("filters by multiple comingSoonChainIds", () => {
67
- expect(
68
- getFirstAvailableChainId(
69
- {
70
- integratorId: "",
71
- comingSoonChainIds: [
72
- CHAINS.AVALANCHE.chainId,
73
- CHAINS.POLYGON.chainId,
74
- ],
75
- },
76
- "from",
77
- [
78
- CHAINS.POLYGON,
79
- CHAINS.ARBITRUM,
80
- CHAINS.AVALANCHE,
81
- CHAINS.OPTIMISM,
82
- CHAINS.ETHEREUM,
83
- ]
84
- )
85
- ).toBe(CHAINS.ARBITRUM.chainId);
86
- });
87
-
88
- test("returns undefined if all chain ids are also comingSoonChainIds", () => {
89
- const allChains = Object.values(CHAINS);
90
- const comingSoonChainIds = allChains.map((chain) => chain.chainId);
91
-
92
- expect(
93
- getFirstAvailableChainId(
94
- {
95
- integratorId: "",
96
- comingSoonChainIds,
97
- },
98
- "from",
99
- allChains
100
- )
101
- ).toBe(undefined);
102
- });
103
-
104
- test("returns chain id of initialAssets when its ids are present in chains provided", () => {
105
- expect(
106
- getFirstAvailableChainId(
107
- {
108
- integratorId: "",
109
- initialAssets: {
110
- from: {
111
- address: nativeEvmTokenAddress,
112
- chainId: CHAINS.POLYGON.chainId,
113
- },
114
- },
115
- },
116
- "from",
117
- [CHAINS.OPTIMISM, CHAINS.BINANCE, CHAINS.POLYGON, CHAINS.ETHEREUM]
118
- )
119
- ).toBe(CHAINS.POLYGON.chainId);
120
-
121
- expect(
122
- getFirstAvailableChainId(
123
- {
124
- integratorId: "",
125
- initialAssets: {
126
- to: {
127
- address: nativeEvmTokenAddress,
128
- chainId: CHAINS.AVALANCHE.chainId,
129
- },
130
- },
131
- },
132
- "to",
133
- [CHAINS.MANTLE, CHAINS.BASE, CHAINS.AVALANCHE, CHAINS.MOONBEAM]
134
- )
135
- ).toBe(CHAINS.AVALANCHE.chainId);
136
- });
137
-
138
- test("returns chain id of first chain when initialAssets chain ids are not present in chains provided", () => {
139
- expect(
140
- getFirstAvailableChainId(
141
- {
142
- integratorId: "",
143
- initialAssets: {
144
- from: {
145
- address: nativeEvmTokenAddress,
146
- chainId: CHAINS.ARBITRUM.chainId,
147
- },
148
- },
149
- },
150
- "from",
151
- [CHAINS.BINANCE, CHAINS.ETHEREUM, CHAINS.POLYGON]
152
- )
153
- ).toBe(CHAINS.BINANCE.chainId);
154
-
155
- expect(
156
- getFirstAvailableChainId(
157
- {
158
- integratorId: "",
159
- initialAssets: {
160
- to: {
161
- address: nativeEvmTokenAddress,
162
- chainId: CHAINS.MOONBEAM.chainId,
163
- },
164
- },
165
- },
166
- "to",
167
- [CHAINS.ARBITRUM, CHAINS.AVALANCHE, CHAINS.LINEA]
168
- )
169
- ).toBe(CHAINS.ARBITRUM.chainId);
170
- });
171
-
172
- test("returns chain id of second chain when initial asset chain is a coming soon chain", () => {
173
- expect(
174
- getFirstAvailableChainId(
175
- {
176
- integratorId: "",
177
- comingSoonChainIds: [CHAINS.ARBITRUM.chainId],
178
- initialAssets: {
179
- from: {
180
- address: nativeEvmTokenAddress,
181
- chainId: CHAINS.ARBITRUM.chainId,
182
- },
183
- },
184
- },
185
- "from",
186
- [CHAINS.ARBITRUM, CHAINS.FANTOM, CHAINS.MANTLE]
187
- )
188
- ).toBe(CHAINS.FANTOM.chainId);
189
-
190
- expect(
191
- getFirstAvailableChainId(
192
- {
193
- integratorId: "",
194
- comingSoonChainIds: [CHAINS.POLYGON.chainId],
195
- initialAssets: {
196
- to: {
197
- address: nativeEvmTokenAddress,
198
- chainId: CHAINS.POLYGON.chainId,
199
- },
200
- },
201
- },
202
- "to",
203
- [CHAINS.POLYGON, CHAINS.BASE, CHAINS.AVALANCHE]
204
- )
205
- ).toBe(CHAINS.BASE.chainId);
206
- });
207
-
208
- test("returns chain id of second chain when first chain is disabled", () => {
209
- expect(
210
- getFirstAvailableChainId(
211
- {
212
- integratorId: "",
213
- disabledChains: {
214
- source: [CHAINS.ARBITRUM.chainId],
215
- },
216
- },
217
- "from",
218
- [CHAINS.ARBITRUM, CHAINS.FANTOM, CHAINS.MANTLE]
219
- )
220
- ).toBe(CHAINS.FANTOM.chainId);
221
-
222
- expect(
223
- getFirstAvailableChainId(
224
- {
225
- integratorId: "",
226
- disabledChains: {
227
- destination: [CHAINS.NOBLE.chainId],
228
- },
229
- },
230
- "to",
231
- [CHAINS.NOBLE, CHAINS.AVALANCHE, CHAINS.SCROLL]
232
- )
233
- ).toBe(CHAINS.AVALANCHE.chainId);
234
- });
235
-
236
- test("returns chain id of second chain when initial asset chain is disabled", () => {
237
- expect(
238
- getFirstAvailableChainId(
239
- {
240
- integratorId: "",
241
- disabledChains: {
242
- source: [CHAINS.OPTIMISM.chainId],
243
- },
244
- initialAssets: {
245
- from: {
246
- address: nativeEvmTokenAddress,
247
- chainId: CHAINS.OPTIMISM.chainId,
248
- },
249
- },
250
- },
251
- "from",
252
- [CHAINS.OPTIMISM, CHAINS.MOONBEAM, CHAINS.NOBLE]
253
- )
254
- ).toBe(CHAINS.MOONBEAM.chainId);
255
-
256
- expect(
257
- getFirstAvailableChainId(
258
- {
259
- integratorId: "",
260
- disabledChains: {
261
- destination: [CHAINS.LINEA.chainId],
262
- },
263
- initialAssets: {
264
- to: {
265
- address: nativeEvmTokenAddress,
266
- chainId: CHAINS.LINEA.chainId,
267
- },
268
- },
269
- },
270
- "to",
271
- [CHAINS.LINEA, CHAINS.BASE, CHAINS.MANTLE]
272
- )
273
- ).toBe(CHAINS.BASE.chainId);
274
- });
275
- });
276
-
277
- describe("getDefaultTokenAddressForChain", () => {
278
- test("returns first token address if no special config is specified", () => {
279
- expect(
280
- getDefaultTokenAddressForChain(
281
- [TOKENS.ETHEREUM.USDT, TOKENS.ETHEREUM.ETH, TOKENS.ETHEREUM.WETH],
282
- {
283
- integratorId: "",
284
- },
285
- CHAINS.ETHEREUM.chainId
286
- )
287
- ).toBe(TOKENS.ETHEREUM.USDT.address);
288
-
289
- expect(
290
- getDefaultTokenAddressForChain(
291
- [TOKENS.ETHEREUM.WBTC, TOKENS.ETHEREUM.USDC, TOKENS.ETHEREUM.ETH],
292
- {
293
- defaultTokensPerChain: [],
294
- integratorId: "",
295
- },
296
- CHAINS.ETHEREUM.chainId
297
- )
298
- ).toBe(TOKENS.ETHEREUM.WBTC.address);
299
- });
300
-
301
- test("returns undefined if no tokens are found for specified chain id", () => {
302
- expect(
303
- getDefaultTokenAddressForChain(
304
- [TOKENS.BASE.USDbC, TOKENS.BASE.axlUSDC, TOKENS.BASE.WETH],
305
- {
306
- integratorId: "",
307
- },
308
- CHAINS.ETHEREUM.chainId
309
- )
310
- ).toBe(undefined);
311
- });
312
-
313
- test("filters by defaultTokensPerChain config", () => {
314
- expect(
315
- getDefaultTokenAddressForChain(
316
- [TOKENS.BASE.USDC, TOKENS.BASE.WETH, TOKENS.ETHEREUM.USDT],
317
- {
318
- defaultTokensPerChain: [
319
- {
320
- address: TOKENS.ETHEREUM.USDT.address,
321
- chainId: TOKENS.ETHEREUM.USDT.chainId,
322
- },
323
- ],
324
- integratorId: "",
325
- },
326
- CHAINS.ETHEREUM.chainId
327
- )
328
- ).toBe(TOKENS.ETHEREUM.USDT.address);
329
-
330
- expect(
331
- getDefaultTokenAddressForChain(
332
- [TOKENS.ETHEREUM.WBTC, TOKENS.BASE.axlUSDC, TOKENS.BASE.ETH],
333
- {
334
- defaultTokensPerChain: [
335
- {
336
- address: TOKENS.BASE.axlUSDC.address,
337
- chainId: TOKENS.BASE.axlUSDC.chainId,
338
- },
339
- ],
340
- integratorId: "",
341
- },
342
- CHAINS.BASE.chainId
343
- )
344
- ).toBe(TOKENS.BASE.axlUSDC.address);
345
- });
346
-
347
- test("filters by unavailableTokenAddress", () => {
348
- expect(
349
- getDefaultTokenAddressForChain(
350
- [TOKENS.ETHEREUM.WBTC, TOKENS.BASE.axlUSDC, TOKENS.BASE.USDbC],
351
- {
352
- integratorId: "",
353
- },
354
- CHAINS.BASE.chainId,
355
- TOKENS.BASE.axlUSDC.address // unavailableTokenAddress
356
- )
357
- ).toBe(TOKENS.BASE.USDbC.address);
358
- });
359
-
360
- test("filters when unavailableTokenAddress and default token are the same", () => {
361
- expect(
362
- getDefaultTokenAddressForChain(
363
- [
364
- TOKENS.BASE.WETH,
365
- TOKENS.ETHEREUM.ETH,
366
- TOKENS.BASE.USDC,
367
- TOKENS.ETHEREUM.USDT,
368
- ],
369
- {
370
- integratorId: "",
371
- defaultTokensPerChain: [
372
- {
373
- address: TOKENS.ETHEREUM.ETH.address,
374
- chainId: TOKENS.ETHEREUM.ETH.chainId,
375
- },
376
- ],
377
- },
378
- CHAINS.ETHEREUM.chainId,
379
- TOKENS.ETHEREUM.ETH.address // unavailableTokenAddress
380
- )
381
- ).toBe(TOKENS.ETHEREUM.USDT.address);
382
- });
383
- });
384
-
385
- describe("filterTokensForDestination", () => {
386
- test("returns different tokens than source token when from and to chains are the same", () => {
387
- expect(
388
- filterTokensForDestination(
389
- [TOKENS.ETHEREUM.ETH, TOKENS.ETHEREUM.USDC, TOKENS.ETHEREUM.WETH],
390
- CHAINS.ETHEREUM, // destination chain
391
- TOKENS.ETHEREUM.ETH // source token
392
- )
393
- ).toStrictEqual([TOKENS.ETHEREUM.USDC, TOKENS.ETHEREUM.WETH]);
394
-
395
- expect(
396
- filterTokensForDestination(
397
- [TOKENS.BASE.USDbC, TOKENS.BASE.WETH, TOKENS.BASE.axlUSDC],
398
- CHAINS.BASE, // destination chain
399
- TOKENS.BASE.axlUSDC // source token
400
- )
401
- ).toStrictEqual([TOKENS.BASE.USDbC, TOKENS.BASE.WETH]);
402
- });
403
-
404
- test("returns only tokens of same chain as destination chain", () => {
405
- expect(
406
- filterTokensForDestination(
407
- [
408
- TOKENS.ETHEREUM.USDC,
409
- TOKENS.BASE.USDbC,
410
- TOKENS.ETHEREUM.WETH,
411
- TOKENS.BASE.ETH,
412
- ],
413
- CHAINS.ETHEREUM, // destination chain
414
- TOKENS.BASE.USDC // source token
415
- )
416
- ).toStrictEqual([TOKENS.ETHEREUM.USDC, TOKENS.ETHEREUM.WETH]);
417
- });
418
- });
419
-
420
- // we only test initialAssets here, as the rest of the logic is tested in getDefaultTokenAddressForChain
421
- describe("getInitialOrDefaultTokenAddressForChain", () => {
422
- test("returns initial assets when chain id matches", () => {
423
- const fromInitialAsset = TOKENS.ETHEREUM.WETH;
424
-
425
- expect(
426
- getInitialOrDefaultTokenAddressForChain({
427
- chainId: CHAINS.ETHEREUM.chainId,
428
- config: {
429
- integratorId: "",
430
- initialAssets: {
431
- from: fromInitialAsset,
432
- },
433
- },
434
- direction: "from",
435
- tokens: [TOKENS.ETHEREUM.USDT, fromInitialAsset],
436
- })
437
- ).toBe(fromInitialAsset.address);
438
-
439
- const toInitialAsset = TOKENS.AVALANCHE.MAI;
440
-
441
- expect(
442
- getInitialOrDefaultTokenAddressForChain({
443
- chainId: CHAINS.AVALANCHE.chainId,
444
- config: {
445
- integratorId: "",
446
- initialAssets: {
447
- to: toInitialAsset,
448
- },
449
- },
450
- direction: "to",
451
- tokens: [TOKENS.AVALANCHE.axlUSDC, toInitialAsset],
452
- })
453
- ).toBe(toInitialAsset.address);
454
- });
455
-
456
- test("returns first token when initial asset does not match chain id", () => {
457
- expect(
458
- getInitialOrDefaultTokenAddressForChain({
459
- chainId: CHAINS.ETHEREUM.chainId, // we want to get Ethereum tokens
460
- config: {
461
- integratorId: "",
462
- initialAssets: {
463
- from: TOKENS.BASE.USDbC, // initial asset is a Base token, but we want to get Ethereum tokens
464
- },
465
- },
466
- direction: "from",
467
- tokens: [TOKENS.ETHEREUM.USDT, TOKENS.ETHEREUM.WETH],
468
- })
469
- ).toBe(TOKENS.ETHEREUM.USDT.address);
470
-
471
- expect(
472
- getInitialOrDefaultTokenAddressForChain({
473
- chainId: CHAINS.BASE.chainId, // we want to get Base tokens
474
- config: {
475
- integratorId: "",
476
- initialAssets: {
477
- to: TOKENS.AVALANCHE.AVAX, // initial asset is an Avalanche token, but we want to get Base tokens
478
- },
479
- },
480
- direction: "from",
481
- tokens: [TOKENS.BASE.ETH, TOKENS.BASE.axlUSDC],
482
- })
483
- ).toBe(TOKENS.BASE.ETH.address);
484
- });
485
- });
486
- });
@@ -1,43 +0,0 @@
1
- import { Squid } from "@0xsquid/sdk";
2
- import { ChainData, Token } from "@0xsquid/squid-types";
3
-
4
- const INTEGRATOR_ID = "squid-react-hooks";
5
-
6
- export interface OnlineSquidData {
7
- tokens: Record<string, Record<string, Token>>;
8
- chains: Record<string, ChainData>;
9
- }
10
-
11
- const remapSquidData = (squidData: Squid) => {
12
- const tokens: Record<string, Record<string, Token>> = {};
13
- const chains: Record<string, ChainData> = {};
14
-
15
- squidData.chains.forEach((chain) => {
16
- const chainName = chain.networkIdentifier.toUpperCase();
17
-
18
- tokens[chainName] = squidData.tokens
19
- .filter((token) => token.chainId === chain.chainId)
20
- .reduce(
21
- (acc, token) => {
22
- const tokenSymbol = token.symbol;
23
- acc[tokenSymbol] = token;
24
- return acc;
25
- },
26
- {} as Record<string, Token>
27
- );
28
-
29
- chains[chainName] = chain;
30
- });
31
-
32
- return { tokens, chains };
33
- };
34
-
35
- export const fetchSquidData = async (): Promise<OnlineSquidData> => {
36
- const squid = new Squid({
37
- integratorId: INTEGRATOR_ID,
38
- baseUrl: "https://v2.api.squidrouter.com",
39
- });
40
- await squid.init();
41
-
42
- return remapSquidData(squid);
43
- };
@@ -1,178 +0,0 @@
1
- import {
2
- isWalletAddressValid,
3
- formatWalletAddress,
4
- } from "@/services/internal/walletService";
5
- import { OnlineSquidData, fetchSquidData } from "./fetchSquidData";
6
-
7
- let squid: OnlineSquidData | undefined = undefined;
8
- let CHAINS: OnlineSquidData["chains"] = {};
9
-
10
- describe("walletService", () => {
11
- beforeAll(async () => {
12
- squid = await fetchSquidData();
13
- CHAINS = squid?.chains;
14
- });
15
- describe("isWalletAddressValid", () => {
16
- test("returns true when address is a valid EVM address for an EVM chain", () => {
17
- expect(
18
- isWalletAddressValid(
19
- CHAINS.BASE,
20
- "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664"
21
- )
22
- ).toBe(true);
23
-
24
- expect(
25
- isWalletAddressValid(
26
- CHAINS.BINANCE,
27
- "0x6f1c3f578ef3f0d2cf9b1ec712d9654f143ea4d1"
28
- )
29
- ).toBe(true);
30
-
31
- expect(
32
- isWalletAddressValid(
33
- CHAINS.POLYGON,
34
- "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d"
35
- )
36
- ).toBe(true);
37
- });
38
-
39
- test("returns false when address is not a valid EVM address for an EVM chain", () => {
40
- expect(
41
- isWalletAddressValid(
42
- CHAINS.BASE,
43
- "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C66" // missing last character
44
- )
45
- ).toBe(false);
46
-
47
- expect(
48
- isWalletAddressValid(
49
- CHAINS.BINANCE,
50
- "e43f1c3f578ef3f0d2cf9b1ec712d9654f143ea4d1" // missing 0x prefix
51
- )
52
- ).toBe(false);
53
-
54
- expect(
55
- isWalletAddressValid(
56
- CHAINS.POLYGON,
57
- "cosmos1w3jhx7w3jhx7w3jhx7w3jhx7w3jhx7w3jhx7w3j" // cosmos address
58
- )
59
- ).toBe(false);
60
- });
61
-
62
- test("returns true when address is a valid Cosmos address for a Cosmos chain", () => {
63
- expect(
64
- isWalletAddressValid(
65
- CHAINS.NOBLE,
66
- "noble1awrua7e2kj69d7vn5qt5tccrhavmj9xa6up0eq"
67
- )
68
- ).toBe(true);
69
-
70
- expect(
71
- isWalletAddressValid(
72
- CHAINS.NOBLE,
73
- "noble1qe8uuf5x69c526h4nzxwv4ltftr73v7qgk33qz"
74
- )
75
- ).toBe(true);
76
-
77
- expect(
78
- isWalletAddressValid(
79
- CHAINS.NOBLE,
80
- "noble1zttnm2cl60m5ffsrfeqtzkmtvepl4hwnsqg9fd"
81
- )
82
- ).toBe(true);
83
- });
84
-
85
- test("returns false when address is not a valid Cosmos address for a Cosmos chain", () => {
86
- expect(
87
- isWalletAddressValid(
88
- CHAINS.NOBLE,
89
- "noble1qe8uuf5x69c526h4nzxwv4ltftr73v7qgk33" // missing last character
90
- )
91
- ).toBe(false);
92
-
93
- expect(
94
- isWalletAddressValid(
95
- CHAINS.NOBLE,
96
- "1qe8uuf5x69c526h4nzxwv4ltftr73v7qgk33q" // missing chain prefix
97
- )
98
- ).toBe(false);
99
-
100
- expect(
101
- isWalletAddressValid(
102
- CHAINS.NOBLE,
103
- "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664" // EVM address
104
- )
105
- ).toBe(false);
106
- });
107
- });
108
-
109
- describe("formatWalletAddress", () => {
110
- test("formats EVM addresses correctly", () => {
111
- expect(
112
- formatWalletAddress("0x6f1c3f578ef3f0d2cf9b1ec712d9654f143ea4d1", 5)
113
- ).toBe("0x6f1...4d1");
114
-
115
- expect(
116
- formatWalletAddress("0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d", 8)
117
- ).toBe("0xbc4ca0...36f13d");
118
-
119
- expect(
120
- formatWalletAddress("0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", 3)
121
- ).toBe("0xa...4");
122
- });
123
-
124
- test("formats Cosmos addresses correctly", () => {
125
- expect(
126
- formatWalletAddress("noble1awrua7e2kj69d7vn5qt5tccrhavmj9xa6up0eq", 5)
127
- ).toBe("noble...0eq");
128
-
129
- expect(
130
- formatWalletAddress("noble1qe8uuf5x69c526h4nzxwv4ltftr73v7qgk33qz", 8)
131
- ).toBe("noble1qe...gk33qz");
132
-
133
- expect(
134
- formatWalletAddress("noble1zttnm2cl60m5ffsrfeqtzkmtvepl4hwnsqg9fd", 3)
135
- ).toBe("nob...d");
136
- });
137
-
138
- test("returns empty string when address is undefined or empty string", () => {
139
- expect(formatWalletAddress(undefined)).toBe("");
140
-
141
- expect(formatWalletAddress("")).toBe("");
142
-
143
- expect(formatWalletAddress("", 0)).toBe("");
144
-
145
- expect(formatWalletAddress(undefined, 0)).toBe("");
146
- });
147
-
148
- test("handles trim length smaller than or equal to 2", () => {
149
- expect(formatWalletAddress("0x123", 1)).toBe("0...");
150
-
151
- expect(formatWalletAddress("0x123", 2)).toBe("0x...");
152
- });
153
-
154
- test("for negative trim length, removes its absolute value and adds three dots at the end", () => {
155
- expect(formatWalletAddress("0x123", -1)).toBe("0x12..."); // trims 1 characters and adds three dots
156
-
157
- expect(
158
- formatWalletAddress("0x6f1c3f578ef3f0d2cf9b1ec712d9654f143ea4d1", -5)
159
- ).toBe(
160
- "0x6f1c3f578ef3f0d2cf9b1ec712d9654f143..." // trims 5 characters and adds three dots
161
- );
162
-
163
- expect(
164
- formatWalletAddress("noble1awrua7e2kj69d7vn5qt5tccrhavmj9xa6up0eq", -9)
165
- ).toBe(
166
- "noble1awrua7e2kj69d7vn5qt5tccrhavmj..." // trims 9 characters and adds three dots
167
- );
168
- });
169
-
170
- test("returns full address when its length is smaller than trim length", () => {
171
- const evmAddress = "0x6f1c3f578ef3f0d2cf9b1ec712d9654f143ea4d1";
172
- expect(formatWalletAddress(evmAddress, 100)).toBe(evmAddress);
173
-
174
- const cosmosAddress = "noble1awrua7e2kj69d7vn5qt5tccrhavmj9xa6up0eq";
175
- expect(formatWalletAddress(cosmosAddress, 100)).toBe(cosmosAddress);
176
- });
177
- });
178
- });