@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,38 @@
1
+ export var TransactionType;
2
+ (function (TransactionType) {
3
+ TransactionType["BRIDGE"] = "BRIDGE";
4
+ TransactionType["BRIDGE_CALL"] = "BRIDGE_CALL";
5
+ TransactionType["CALL_BRIDGE"] = "CALL_BRIDGE";
6
+ TransactionType["CALL_BRIDGE_CALL"] = "CALL_BRIDGE_CALL";
7
+ })(TransactionType || (TransactionType = {}));
8
+ export var AxelarStatusResponseType;
9
+ (function (AxelarStatusResponseType) {
10
+ AxelarStatusResponseType["GAS_PAID_NOT_ENOUGH_GAS"] = "gas_paid_not_enough_gas";
11
+ AxelarStatusResponseType["DESTINATION_EXECUTED"] = "destination_executed";
12
+ AxelarStatusResponseType["EXPRESS_EXECUTED"] = "express_executed";
13
+ AxelarStatusResponseType["CROSS_MULTICALL_EXECUTED"] = "CrossMulticallExecuted";
14
+ AxelarStatusResponseType["CROSS_MULTICALL_FAILED"] = "CrossMulticallFailed";
15
+ AxelarStatusResponseType["SRC_GATEWAY_CALLED"] = "source_gateway_called";
16
+ AxelarStatusResponseType["DEST_GATEWAY_APPROVED"] = "destination_gateway_approved";
17
+ AxelarStatusResponseType["DESTINATION_EXECUTE_ERROR"] = "destination_execute_error";
18
+ AxelarStatusResponseType["DESTINATION_EXECUTING"] = "executing";
19
+ AxelarStatusResponseType["UNKNOWN_ERROR"] = "unknown_error";
20
+ AxelarStatusResponseType["CANNOT_FETCH_STATUS"] = "cannot_fetch_status";
21
+ AxelarStatusResponseType["ERROR"] = "error";
22
+ })(AxelarStatusResponseType || (AxelarStatusResponseType = {}));
23
+ export var TransactionStatus;
24
+ (function (TransactionStatus) {
25
+ // Submitted transaction, returned by squid axelar
26
+ TransactionStatus["SUCCESS"] = "success";
27
+ TransactionStatus["NEEDS_GAS"] = "needs_gas";
28
+ TransactionStatus["ONGOING"] = "ongoing";
29
+ TransactionStatus["PARTIAL_SUCCESS"] = "partial_success";
30
+ TransactionStatus["NOT_FOUND"] = "not_found";
31
+ // Unsubmitted Transaction, can be status from wallet
32
+ TransactionStatus["INITIAL_LOADING"] = "initialLoading";
33
+ TransactionStatus["ERROR"] = "error";
34
+ TransactionStatus["WARNING"] = "warning";
35
+ TransactionStatus["PENDING"] = "pending";
36
+ TransactionStatus["REJECTED"] = "rejected";
37
+ })(TransactionStatus || (TransactionStatus = {}));
38
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/core/types/transaction.ts"],"names":[],"mappings":"AASA,MAAM,CAAN,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,8CAA2B,CAAA;IAC3B,8CAA2B,CAAA;IAC3B,wDAAqC,CAAA;AACvC,CAAC,EALW,eAAe,KAAf,eAAe,QAK1B;AAED,MAAM,CAAN,IAAY,wBAaX;AAbD,WAAY,wBAAwB;IAClC,+EAAmD,CAAA;IACnD,yEAA6C,CAAA;IAC7C,iEAAqC,CAAA;IACrC,+EAAmD,CAAA;IACnD,2EAA+C,CAAA;IAC/C,wEAA4C,CAAA;IAC5C,kFAAsD,CAAA;IACtD,mFAAuD,CAAA;IACvD,+DAAmC,CAAA;IACnC,2DAA+B,CAAA;IAC/B,uEAA2C,CAAA;IAC3C,2CAAe,CAAA;AACjB,CAAC,EAbW,wBAAwB,KAAxB,wBAAwB,QAanC;AAED,MAAM,CAAN,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IAC3B,kDAAkD;IAClD,wCAAmB,CAAA;IACnB,4CAAuB,CAAA;IACvB,wCAAmB,CAAA;IACnB,wDAAmC,CAAA;IACnC,4CAAuB,CAAA;IACvB,qDAAqD;IACrD,uDAAkC,CAAA;IAClC,oCAAe,CAAA;IACf,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;IACnB,0CAAqB,CAAA;AACvB,CAAC,EAbW,iBAAiB,KAAjB,iBAAiB,QAa5B"}
@@ -0,0 +1,30 @@
1
+ import type { Token } from "@0xsquid/sdk/dist/types";
2
+ export type SwapDirection = "from" | "to";
3
+ export type NextJsImg = {
4
+ src: string;
5
+ };
6
+ export type ImgType = string | NextJsImg;
7
+ export declare enum FeeType {
8
+ AXELAR_FEE = "Axelar Fee",
9
+ GAS_RECEIVER_FEE = "Cross-chain gas fees"
10
+ }
11
+ export type FeeCost = {
12
+ name: FeeType;
13
+ description: string;
14
+ percentage: string;
15
+ token: Token;
16
+ amount: string;
17
+ amountUSD: string;
18
+ };
19
+ export type ApiBasicResponse = {
20
+ error?: string;
21
+ errorType?: any;
22
+ };
23
+ export type TimeSpent = {
24
+ send_vote?: number;
25
+ type?: string;
26
+ destination_chain_type?: string;
27
+ source_chain_type?: string;
28
+ total?: number;
29
+ vote_ibc?: number;
30
+ };
@@ -0,0 +1,7 @@
1
+ // TODO: BELOW Are temporary types taken from api for development because SDK wasn't up to date
2
+ export var FeeType;
3
+ (function (FeeType) {
4
+ FeeType["AXELAR_FEE"] = "Axelar Fee";
5
+ FeeType["GAS_RECEIVER_FEE"] = "Cross-chain gas fees";
6
+ })(FeeType || (FeeType = {}));
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/types/types.ts"],"names":[],"mappings":"AASA,+FAA+F;AAC/F,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,oCAAyB,CAAA;IACzB,oDAAyC,CAAA;AAC3C,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB"}
@@ -0,0 +1,55 @@
1
+ import type { ChainType } from "@0xsquid/sdk/dist/types";
2
+ import type { Chain } from "wagmi";
3
+ export type TypedWindow = Window & typeof globalThis & {
4
+ [key in WindowWalletFlag]?: any;
5
+ };
6
+ export declare enum WindowWalletFlag {
7
+ Binance = "bbcSignTx",
8
+ Coinbase = "isCoinbaseWallet",
9
+ MetaMask = "isMetaMask",
10
+ WalletConnect = "walletConnect",
11
+ CosmostationEVM = "cosmostation",
12
+ BlockchainDotCom = "blockchaindotcom",
13
+ CosmostationCosmos = "cosmostation.providers.keplr",
14
+ Keplr = "keplr",
15
+ Leap = "leap",
16
+ Xdefi = "xfi",
17
+ XdefiCosmos = "xfi.keplr",
18
+ BitGet = "bitkeep",
19
+ TrustWallet = "trustwallet",
20
+ FetchAi = "keplr",// Sadly the same as the real Keplr wallet
21
+ Coin98 = "coin98",
22
+ Rabby = "isRabby",
23
+ OKX = "okxwallet",
24
+ Injected = "injected",
25
+ DefiConnect = "deficonnectProvider",// From crypto.com: https://github.com/crypto-com/deficonnect-monorepo/wiki/Chrome-Extension-Wallet-Integration
26
+ Zerion = "isZerion",
27
+ Snapper = "cosmos",
28
+ Exodus = "exodus"
29
+ }
30
+ export type ConnectorID = "metaMask" | "walletConnect" | "blockchaindotcom" | "coinbaseWallet" | "keplr" | "cosmostation" | "cosmostationCosmos" | "leap" | "xdefi" | "xdeficosmos" | "bitget" | "fetchai" | "coin98" | "rabby" | "okx" | "injected" | "zerion" | "deficonnect" | "snapper" | "trustwallet" | "exodus";
31
+ export interface Wallet {
32
+ name: string;
33
+ type: ChainType;
34
+ connectorId: ConnectorID;
35
+ connectorName: string;
36
+ connector?: (chains?: Chain[]) => any;
37
+ icon: string | undefined;
38
+ windowFlag: string;
39
+ canSwitchWallets: boolean;
40
+ direction?: "from" | "to";
41
+ connectedAddress?: string;
42
+ }
43
+ export interface AddEthereumChainParameter {
44
+ chainId: string;
45
+ chainName: string;
46
+ nativeCurrency: {
47
+ name: string;
48
+ symbol: string;
49
+ decimals: number;
50
+ icon: string;
51
+ };
52
+ rpcUrls: string[];
53
+ blockExplorerUrls?: string[];
54
+ iconUrls?: string[];
55
+ }
@@ -0,0 +1,26 @@
1
+ export var WindowWalletFlag;
2
+ (function (WindowWalletFlag) {
3
+ WindowWalletFlag["Binance"] = "bbcSignTx";
4
+ WindowWalletFlag["Coinbase"] = "isCoinbaseWallet";
5
+ WindowWalletFlag["MetaMask"] = "isMetaMask";
6
+ WindowWalletFlag["WalletConnect"] = "walletConnect";
7
+ WindowWalletFlag["CosmostationEVM"] = "cosmostation";
8
+ WindowWalletFlag["BlockchainDotCom"] = "blockchaindotcom";
9
+ WindowWalletFlag["CosmostationCosmos"] = "cosmostation.providers.keplr";
10
+ WindowWalletFlag["Keplr"] = "keplr";
11
+ WindowWalletFlag["Leap"] = "leap";
12
+ WindowWalletFlag["Xdefi"] = "xfi";
13
+ WindowWalletFlag["XdefiCosmos"] = "xfi.keplr";
14
+ WindowWalletFlag["BitGet"] = "bitkeep";
15
+ WindowWalletFlag["TrustWallet"] = "trustwallet";
16
+ WindowWalletFlag["FetchAi"] = "keplr";
17
+ WindowWalletFlag["Coin98"] = "coin98";
18
+ WindowWalletFlag["Rabby"] = "isRabby";
19
+ WindowWalletFlag["OKX"] = "okxwallet";
20
+ WindowWalletFlag["Injected"] = "injected";
21
+ WindowWalletFlag["DefiConnect"] = "deficonnectProvider";
22
+ WindowWalletFlag["Zerion"] = "isZerion";
23
+ WindowWalletFlag["Snapper"] = "cosmos";
24
+ WindowWalletFlag["Exodus"] = "exodus";
25
+ })(WindowWalletFlag || (WindowWalletFlag = {}));
26
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/core/types/wallet.ts"],"names":[],"mappings":"AASA,MAAM,CAAN,IAAY,gBAuBX;AAvBD,WAAY,gBAAgB;IAC1B,yCAAqB,CAAA;IACrB,iDAA6B,CAAA;IAC7B,2CAAuB,CAAA;IACvB,mDAA+B,CAAA;IAC/B,oDAAgC,CAAA;IAChC,yDAAqC,CAAA;IACrC,uEAAmD,CAAA;IACnD,mCAAe,CAAA;IACf,iCAAa,CAAA;IACb,iCAAa,CAAA;IACb,6CAAyB,CAAA;IACzB,sCAAkB,CAAA;IAClB,+CAA2B,CAAA;IAC3B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;IACrB,uDAAmC,CAAA;IACnC,uCAAmB,CAAA;IACnB,sCAAkB,CAAA;IAClB,qCAAiB,CAAA;AACnB,CAAC,EAvBW,gBAAgB,KAAhB,gBAAgB,QAuB3B"}
@@ -0,0 +1,12 @@
1
+ export declare const useSquidChains: () => {
2
+ supportedSourceChains: import("@0xsquid/squid-types").ChainData[];
3
+ supportedDestinationChains: import("@0xsquid/squid-types").ChainData[];
4
+ chains: import("@0xsquid/squid-types").ChainData[];
5
+ fuseSearchOptions: {
6
+ isCaseSensitive: boolean;
7
+ includeScore: boolean;
8
+ minMatchCharLength: number;
9
+ threshold: number;
10
+ keys: string[];
11
+ };
12
+ };
@@ -0,0 +1,45 @@
1
+ import { keys } from "./../../core/queries/queries-keys";
2
+ import { useSquidStore } from "./../../hooks/store/useSquidStore";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ import { useMemo } from "react";
5
+ export const useSquidChains = () => {
6
+ const { squid, config } = useSquidStore();
7
+ const fuseSearchOptions = {
8
+ isCaseSensitive: false,
9
+ includeScore: false,
10
+ minMatchCharLength: 1,
11
+ threshold: 0.1,
12
+ keys: ["networkName", "chainName", "nativeCurrency.symbol"],
13
+ };
14
+ const supportedChains = useQuery(keys({ apiUrl: config.apiUrl }).chains(), () => {
15
+ return squid?.chains ?? [];
16
+ }, {
17
+ enabled: squid !== undefined,
18
+ // cacheTime: 1000 * 60 * 60 * 24,
19
+ // staleTime: 1000 * 60 * 60 * 24,
20
+ });
21
+ const chains = useMemo(() => supportedChains.data ?? [], [supportedChains.data]);
22
+ const supportedSourceChains = useMemo(() => {
23
+ if (config.availableChains &&
24
+ config.availableChains?.source &&
25
+ config.availableChains.source.length > 0) {
26
+ return chains.filter((c) => config.availableChains?.source?.includes(c.chainId));
27
+ }
28
+ return chains;
29
+ }, [chains, config.availableChains]);
30
+ const supportedDestinationChains = useMemo(() => {
31
+ if (config.availableChains &&
32
+ config.availableChains?.destination &&
33
+ config.availableChains.destination.length > 0) {
34
+ return chains.filter((c) => config.availableChains?.destination?.includes(c.chainId));
35
+ }
36
+ return chains;
37
+ }, [chains, config.availableChains]);
38
+ return {
39
+ supportedSourceChains,
40
+ supportedDestinationChains,
41
+ chains,
42
+ fuseSearchOptions,
43
+ };
44
+ };
45
+ //# sourceMappingURL=useSquidChains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSquidChains.js","sourceRoot":"","sources":["../../../src/hooks/chains/useSquidChains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;IAE1C,MAAM,iBAAiB,GAAG;QACxB,eAAe,EAAE,KAAK;QACtB,YAAY,EAAE,KAAK;QACnB,kBAAkB,EAAE,CAAC;QACrB,SAAS,EAAE,GAAG;QACd,IAAI,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,uBAAuB,CAAC;KAC5D,CAAC;IAEF,MAAM,eAAe,GAAG,QAAQ,CAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EACxC,GAAG,EAAE;QACH,OAAO,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,EACD;QACE,OAAO,EAAE,KAAK,KAAK,SAAS;QAC5B,kCAAkC;QAClC,kCAAkC;KACnC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,eAAe,CAAC,IAAI,IAAI,EAAE,EAChC,CAAC,eAAe,CAAC,IAAI,CAAC,CACvB,CAAC;IAEF,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE;QACzC,IACE,MAAM,CAAC,eAAe;YACtB,MAAM,CAAC,eAAe,EAAE,MAAM;YAC9B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EACxC,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CACpD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAErC,MAAM,0BAA0B,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9C,IACE,MAAM,CAAC,eAAe;YACtB,MAAM,CAAC,eAAe,EAAE,WAAW;YACnC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAC7C,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,MAAM,CAAC,eAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CACzD,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IAErC,OAAO;QACL,qBAAqB;QACrB,0BAA0B;QAC1B,MAAM;QACN,iBAAiB;KAClB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ /// <reference types="react" />
2
+ import { Wallet } from "@/core/types/wallet";
3
+ import type { ChainData } from "@0xsquid/sdk/dist/types";
4
+ import type { Keplr, OfflineDirectSigner } from "@keplr-wallet/types";
5
+ export declare const useCosmos: () => {
6
+ connectCosmos: import("@tanstack/react-query").UseMutationResult<void, unknown, {
7
+ chain: ChainData;
8
+ wallet?: Wallet | undefined;
9
+ direction?: "from" | "to" | undefined;
10
+ }, unknown>;
11
+ cosmosChainId: string | undefined;
12
+ setCosmosChainId: import("react").Dispatch<import("react").SetStateAction<string | undefined>>;
13
+ isConnected: boolean;
14
+ setIsConnected: import("react").Dispatch<import("react").SetStateAction<boolean>>;
15
+ isInstalled: boolean;
16
+ setIsInstalled: import("react").Dispatch<import("react").SetStateAction<boolean>>;
17
+ clearData: () => void;
18
+ onCosmosChainChange: (newChainId: string) => void;
19
+ getAddress: ({ wallet, cosmosWalletObject, chainId, }: {
20
+ wallet: Wallet;
21
+ cosmosWalletObject: any;
22
+ chainId: string;
23
+ }) => Promise<string>;
24
+ cosmosConnectedWallet: Wallet | undefined;
25
+ keplrTypeWallet: Keplr;
26
+ cosmosSigner: OfflineDirectSigner | undefined;
27
+ getCosmosAddressForChain: (chainId?: string) => Promise<string | undefined>;
28
+ getCosmosWalletInfos: import("@tanstack/react-query").UseMutationResult<string | undefined, unknown, {
29
+ chainId: string;
30
+ cosmosWalletObject?: Keplr | undefined;
31
+ }, unknown>;
32
+ cosmosAddress: string | undefined;
33
+ };
@@ -0,0 +1,194 @@
1
+ import { wallets } from "./../../core/constants";
2
+ import { useSwapRoutePersistStore } from "./../../hooks/store/useSquidStore";
3
+ import { useSwap } from "./../../hooks/swap/useSwap";
4
+ import { accessProperty, getCosmosChainInfosObject, getDescendantProp, } from "./../../services/internal/walletService";
5
+ import { ChainType } from "@0xsquid/sdk/dist/types";
6
+ import { CosmosSnap, installSnap } from "@cosmsnap/snapper";
7
+ import { useMutation } from "@tanstack/react-query";
8
+ import { useCallback, useEffect, useMemo, useState } from "react";
9
+ export const useCosmos = () => {
10
+ const [cosmosAddress, setCosmosAddress] = useState();
11
+ const [cosmosSigner, setCosmosSigner] = useState(undefined);
12
+ const [cosmosConnectedWallet, setCosmosConnectedWallet] = useState();
13
+ const [cosmosChainId, setCosmosChainId] = useState();
14
+ const [isConnected, setIsConnected] = useState(false);
15
+ const [isInstalled, setIsInstalled] = useState(false);
16
+ const { swapRoute } = useSwapRoutePersistStore();
17
+ const { fromChain } = useSwap();
18
+ const keplrTypeWallet = useMemo(() => {
19
+ if (window && cosmosConnectedWallet?.windowFlag) {
20
+ return accessProperty(window, cosmosConnectedWallet.windowFlag);
21
+ }
22
+ // By default, return Cosmos wallet to be Keplr wallet
23
+ // Because like Metamask, some wallets will override the window.keplr Provider
24
+ // Meaning that this could be the current user wallet, so we can use it as a fallback
25
+ return window.keplr;
26
+ }, [cosmosConnectedWallet]);
27
+ // As soon as from chain changes, need to fetch the new signer
28
+ useEffect(() => {
29
+ if (fromChain?.chainType === ChainType.COSMOS && keplrTypeWallet) {
30
+ setCosmosSigner(keplrTypeWallet.getOfflineSigner(fromChain?.chainId.toString()));
31
+ }
32
+ }, [fromChain?.chainId, fromChain?.chainType, keplrTypeWallet]);
33
+ const getCosmosAddressForChain = useCallback(async (chainId) => {
34
+ if (!chainId || !keplrTypeWallet)
35
+ return undefined;
36
+ const key = await keplrTypeWallet?.getKey(chainId);
37
+ return key.bech32Address;
38
+ }, [keplrTypeWallet]);
39
+ const getCosmosWalletInfos = useMutation(async ({ chainId, cosmosWalletObject, }) => {
40
+ const walletObject = cosmosWalletObject ?? keplrTypeWallet;
41
+ if (walletObject) {
42
+ const address = await walletObject?.getKey(chainId);
43
+ if (address?.bech32Address) {
44
+ return address.bech32Address;
45
+ }
46
+ }
47
+ return undefined;
48
+ });
49
+ const getAddress = useCallback(async ({ wallet, cosmosWalletObject, chainId, }) => {
50
+ if (wallet.connectorId === "snapper") {
51
+ const { address: addressInfo } = await cosmosWalletObject.getBech32Address(chainId);
52
+ return addressInfo.address;
53
+ }
54
+ const address = await getCosmosWalletInfos.mutateAsync({
55
+ chainId,
56
+ cosmosWalletObject,
57
+ });
58
+ return address ?? "";
59
+ }, [getCosmosWalletInfos]);
60
+ const handleKeplrAccountChanged = useCallback(async () => {
61
+ if (cosmosChainId) {
62
+ const address = await getCosmosWalletInfos.mutateAsync({
63
+ chainId: cosmosChainId,
64
+ });
65
+ if (address) {
66
+ setIsConnected(true);
67
+ setCosmosAddress(address);
68
+ }
69
+ }
70
+ }, [cosmosChainId, getCosmosWalletInfos]);
71
+ useEffect(() => {
72
+ window.addEventListener("keplr_keystorechange", () => handleKeplrAccountChanged());
73
+ return () => {
74
+ window.removeEventListener("keplr_keystorechange", () => handleKeplrAccountChanged());
75
+ };
76
+ }, [handleKeplrAccountChanged]);
77
+ /**
78
+ * If needed, prepare the wallet object and return it
79
+ * Example: install Metamask snaps (Snapper)
80
+ * @param wallet
81
+ * @param cosmosWalletObject
82
+ * @returns
83
+ */
84
+ const prepareCosmosWallet = async (wallet, cosmosWalletObject) => {
85
+ let cwo = cosmosWalletObject;
86
+ switch (wallet.connectorId) {
87
+ case "snapper":
88
+ cwo = new CosmosSnap();
89
+ // await installSnap();
90
+ window[wallet?.windowFlag ?? ""] = cwo;
91
+ break;
92
+ }
93
+ return cwo;
94
+ };
95
+ const connectCosmos = useMutation(async ({ chain, wallet, direction, }) => {
96
+ const chainInfos = getCosmosChainInfosObject(chain);
97
+ const selectedWallet = wallet ??
98
+ cosmosConnectedWallet ??
99
+ wallets?.find((w) => w.connectorId === "keplr");
100
+ let cosmosWalletObject = selectedWallet
101
+ ? getDescendantProp(window, selectedWallet.windowFlag)
102
+ : undefined;
103
+ // Some wallets need to be installed | initialized
104
+ if (selectedWallet) {
105
+ cosmosWalletObject = await prepareCosmosWallet(selectedWallet, cosmosWalletObject);
106
+ }
107
+ if (cosmosWalletObject) {
108
+ setCosmosChainId(chainInfos.chainId.toString());
109
+ try {
110
+ if (selectedWallet?.connectorId === "snapper") {
111
+ await installSnap();
112
+ }
113
+ else {
114
+ await cosmosWalletObject.enable(chainInfos.chainId.toString());
115
+ }
116
+ const address = await getAddress({
117
+ chainId: chain.chainId.toString(),
118
+ cosmosWalletObject,
119
+ wallet: selectedWallet,
120
+ });
121
+ if (address) {
122
+ setCosmosConnectedWallet(selectedWallet);
123
+ setIsConnected(true);
124
+ setCosmosAddress(address);
125
+ useSwapRoutePersistStore.setState({
126
+ swapRoute: {
127
+ ...useSwapRoutePersistStore.getState().swapRoute,
128
+ destinationAddress: direction === "to"
129
+ ? address
130
+ : useSwapRoutePersistStore.getState().swapRoute
131
+ ?.destinationAddress,
132
+ },
133
+ });
134
+ }
135
+ }
136
+ catch (error) {
137
+ const e = error;
138
+ if (e.message !== "Request rejected" &&
139
+ e.message !== "User rejected the request.") {
140
+ // Maybe the chain is not supported ?
141
+ if (cosmosWalletObject.experimentalSuggestChain) {
142
+ try {
143
+ await cosmosWalletObject.experimentalSuggestChain(chainInfos);
144
+ // Now try to connect
145
+ connectCosmos.mutate({ chain });
146
+ }
147
+ catch (experimentalSuggestChainError) {
148
+ console.log("Failed to suggest chain", experimentalSuggestChainError);
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ else {
155
+ setIsInstalled(false);
156
+ }
157
+ });
158
+ const clearData = () => {
159
+ setIsConnected(false);
160
+ setCosmosChainId(undefined);
161
+ setCosmosAddress(undefined);
162
+ };
163
+ const onCosmosChainChange = (newChainId) => {
164
+ if (newChainId !== cosmosChainId) {
165
+ clearData();
166
+ }
167
+ useSwapRoutePersistStore.setState({
168
+ swapRoute: { ...swapRoute },
169
+ destinationAddressHasBeenUpdated: {
170
+ updated: false,
171
+ filledFromWallet: false,
172
+ },
173
+ });
174
+ };
175
+ return {
176
+ connectCosmos,
177
+ cosmosChainId,
178
+ setCosmosChainId,
179
+ isConnected,
180
+ setIsConnected,
181
+ isInstalled,
182
+ setIsInstalled,
183
+ clearData,
184
+ onCosmosChainChange,
185
+ getAddress,
186
+ cosmosConnectedWallet,
187
+ keplrTypeWallet,
188
+ cosmosSigner,
189
+ getCosmosAddressForChain,
190
+ getCosmosWalletInfos,
191
+ cosmosAddress,
192
+ };
193
+ };
194
+ //# sourceMappingURL=useCosmos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCosmos.js","sourceRoot":"","sources":["../../../src/hooks/cosmos/useCosmos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ChainData } from "@0xsquid/squid-types";
2
+ export declare const useCosmosForChain: (chainData?: ChainData) => {
3
+ cosmosAddress: string | undefined;
4
+ };
@@ -0,0 +1,22 @@
1
+ import { useCosmosContext } from "./../../core/providers/CosmosProvider";
2
+ import { ChainType } from "@0xsquid/squid-types";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ export const useCosmosForChain = (chainData) => {
5
+ const { cosmosChainId: chainId, cosmosAddress: userAddr, isConnected, } = useCosmosContext();
6
+ const { keplrTypeWallet } = useCosmosContext();
7
+ const cosmosAddress = useQuery(["cosmos-address", chainData?.chainId, userAddr, isConnected], async () => {
8
+ if (!isConnected)
9
+ return undefined;
10
+ const key = await keplrTypeWallet?.getKey(String(chainData?.chainId));
11
+ return key?.bech32Address;
12
+ }, {
13
+ enabled: !!keplrTypeWallet &&
14
+ !!chainId &&
15
+ !!userAddr &&
16
+ chainData?.chainType === ChainType.COSMOS,
17
+ });
18
+ return {
19
+ cosmosAddress: cosmosAddress.data,
20
+ };
21
+ };
22
+ //# sourceMappingURL=useCosmosForChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCosmosForChain.js","sourceRoot":"","sources":["../../../src/hooks/cosmos/useCosmosForChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAqB,EAAE,EAAE;IACzD,MAAM,EACJ,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,QAAQ,EACvB,WAAW,GACZ,GAAG,gBAAgB,EAAE,CAAC;IACvB,MAAM,EAAE,eAAe,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE/C,MAAM,aAAa,GAAG,QAAQ,CAC5B,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,EAC7D,KAAK,IAAI,EAAE;QACT,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACtE,OAAO,GAAG,EAAE,aAAa,CAAC;IAC5B,CAAC,EACD;QACE,OAAO,EACL,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,QAAQ;YACV,SAAS,EAAE,SAAS,KAAK,SAAS,CAAC,MAAM;KAC5C,CACF,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,aAAa,CAAC,IAAI;KAClC,CAAC;AACJ,CAAC,CAAC"}
@@ -3,15 +3,9 @@ export { useCosmos } from "./cosmos/useCosmos";
3
3
  export { useCosmosForChain } from "./cosmos/useCosmosForChain";
4
4
  export { useKeyboardNavigation } from "./navigation/useKeyboardNavigation";
5
5
  export { useSquidStore } from "./store/useSquidStore";
6
-
7
6
  export { useSwap } from "./swap/useSwap";
8
7
  export { useAllTokensWithBalance } from "./tokens/useAllTokensWithBalance";
9
- export {
10
- useCosmosBalance,
11
- useEvmBalance,
12
- useNativeTokenBalanceDestinationChain,
13
- useNativeTokenBalanceFromChain,
14
- } from "./tokens/useBalance";
8
+ export { useCosmosBalance, useEvmBalance, useNativeTokenBalanceDestinationChain, useNativeTokenBalanceFromChain, } from "./tokens/useBalance";
15
9
  export { useMultiChainBalance } from "./tokens/useMultiChainBalance";
16
10
  export { usePrices } from "./tokens/usePrices";
17
11
  export { useSingleTokenPrice } from "./tokens/useSingleTokenPrice";
@@ -0,0 +1,27 @@
1
+ export { useSquidChains } from "./chains/useSquidChains";
2
+ export { useCosmos } from "./cosmos/useCosmos";
3
+ export { useCosmosForChain } from "./cosmos/useCosmosForChain";
4
+ export { useKeyboardNavigation } from "./navigation/useKeyboardNavigation";
5
+ export { useSquidStore } from "./store/useSquidStore";
6
+ export { useSwap } from "./swap/useSwap";
7
+ export { useAllTokensWithBalance } from "./tokens/useAllTokensWithBalance";
8
+ export { useCosmosBalance, useEvmBalance, useNativeTokenBalanceDestinationChain, useNativeTokenBalanceFromChain, } from "./tokens/useBalance";
9
+ export { useMultiChainBalance } from "./tokens/useMultiChainBalance";
10
+ export { usePrices } from "./tokens/usePrices";
11
+ export { useSingleTokenPrice } from "./tokens/useSingleTokenPrice";
12
+ export { useSquidTokens } from "./tokens/useSquidTokens";
13
+ export { useAllTokensWithBalanceForChain } from "./tokens/useTokensWithBalance";
14
+ export { useEstimate } from "./transaction/useEstimate";
15
+ export { useEstimatePriceImpact } from "./transaction/useEstimatePriceImpact";
16
+ export { useExecuteTransaction } from "./transaction/useExecuteTransaction";
17
+ export { useGetRoute } from "./transaction/useGetRoute";
18
+ export { useSingleTransaction } from "./transaction/useSingleTransaction";
19
+ export { useTransaction } from "./transaction/useTransaction";
20
+ export { useUserParams } from "./user/useUserParams";
21
+ export { useAutoConnect } from "./wallet/useAutoConnect";
22
+ export { useGnosisContext } from "./wallet/useGnosisContext";
23
+ export { useIntegratorContext } from "./wallet/useIntegratorContext";
24
+ export { useMultiChainWallet } from "./wallet/useMultiChainWallet";
25
+ export { useWallet } from "./wallet/useWallet";
26
+ export { useSquidRouter } from "./webapp-router/useSquidRouter";
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,qCAAqC,EACrC,8BAA8B,GAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { RefObject } from "react";
2
+ type Props = {
3
+ itemsListRef: RefObject<HTMLElement>;
4
+ activeListItemClassName: string;
5
+ };
6
+ export declare const useKeyboardNavigation: (props?: Props) => void;
7
+ export {};
@@ -0,0 +1,69 @@
1
+ import { useSquidRouter } from "./../../hooks/webapp-router/useSquidRouter";
2
+ import { useCallback, useEffect } from "react";
3
+ export const useKeyboardNavigation = (props) => {
4
+ const { itemsListRef, activeListItemClassName = "" } = props ?? {};
5
+ const { previousRoute } = useSquidRouter();
6
+ const onKeyDown = useCallback((event) => {
7
+ if (event.key === "Escape") {
8
+ previousRoute();
9
+ return;
10
+ }
11
+ if (activeListItemClassName.trim() === "")
12
+ return;
13
+ const itemsList = itemsListRef?.current;
14
+ const separatedActiveItemClassNames = activeListItemClassName.split(" ");
15
+ const defaultActiveItem = itemsList?.querySelector(`.${separatedActiveItemClassNames.join(".")}`);
16
+ if (event.key === "ArrowUp") {
17
+ if (!itemsList)
18
+ return;
19
+ event.preventDefault();
20
+ const activeItem = defaultActiveItem ?? itemsList.lastElementChild;
21
+ if (!activeItem)
22
+ return;
23
+ const previousItem = activeItem.previousElementSibling;
24
+ if (previousItem) {
25
+ activeItem.classList.remove(...separatedActiveItemClassNames);
26
+ previousItem.classList.add(...separatedActiveItemClassNames);
27
+ // scroll to previous item
28
+ itemsList.scrollTo({
29
+ top: (previousItem.offsetTop ?? 0) -
30
+ itemsList.clientHeight,
31
+ behavior: "smooth",
32
+ });
33
+ }
34
+ }
35
+ else if (event.key === "ArrowDown") {
36
+ if (!itemsList)
37
+ return;
38
+ event.preventDefault();
39
+ const activeItem = defaultActiveItem ?? itemsList.firstElementChild;
40
+ if (!activeItem)
41
+ return;
42
+ const nextItem = activeItem.nextElementSibling;
43
+ if (nextItem) {
44
+ activeItem.classList.remove(...separatedActiveItemClassNames);
45
+ nextItem.classList.add(...separatedActiveItemClassNames);
46
+ // scroll to next item
47
+ itemsList.scrollTo({
48
+ top: (nextItem.offsetTop ?? 0) -
49
+ itemsList.clientHeight,
50
+ behavior: "smooth",
51
+ });
52
+ }
53
+ }
54
+ else if (event.key === "Enter") {
55
+ event.preventDefault();
56
+ if (defaultActiveItem) {
57
+ // select active item
58
+ defaultActiveItem.querySelector("button")?.click();
59
+ }
60
+ }
61
+ }, [previousRoute, itemsListRef, activeListItemClassName]);
62
+ useEffect(() => {
63
+ document.addEventListener("keydown", onKeyDown, false);
64
+ return () => {
65
+ document.removeEventListener("keydown", onKeyDown, false);
66
+ };
67
+ }, [onKeyDown]);
68
+ };
69
+ //# sourceMappingURL=useKeyboardNavigation.js.map