@lifi/widget 3.0.0-alpha.12 → 3.0.0-alpha.13

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 (476) hide show
  1. package/App.tsx +30 -14
  2. package/AppDrawer.tsx +82 -91
  3. package/AppDrawerContext.ts +9 -0
  4. package/_cjs/App.js +16 -3
  5. package/_cjs/App.js.map +1 -1
  6. package/_cjs/AppDrawer.d.ts +4 -2
  7. package/_cjs/AppDrawer.js +20 -18
  8. package/_cjs/AppDrawer.js.map +1 -1
  9. package/_cjs/AppDrawerContext.d.ts +6 -0
  10. package/_cjs/AppDrawerContext.js +8 -0
  11. package/_cjs/AppDrawerContext.js.map +1 -0
  12. package/_cjs/components/ActiveTransactions/ActiveTransactions.js +1 -3
  13. package/_cjs/components/ActiveTransactions/ActiveTransactions.js.map +1 -1
  14. package/_cjs/components/BaseTransactionButton/BaseTransactionButton.js +6 -6
  15. package/_cjs/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  16. package/_cjs/components/ChainSelect/ChainSelect.js +7 -5
  17. package/_cjs/components/ChainSelect/ChainSelect.js.map +1 -1
  18. package/_cjs/components/ChainSelect/useChainSelect.d.ts +1 -1
  19. package/_cjs/components/ChainSelect/useChainSelect.js +3 -3
  20. package/_cjs/components/ChainSelect/useChainSelect.js.map +1 -1
  21. package/_cjs/components/Header/CloseDrawerButton.d.ts +1 -0
  22. package/_cjs/components/Header/CloseDrawerButton.js +16 -0
  23. package/_cjs/components/Header/CloseDrawerButton.js.map +1 -0
  24. package/_cjs/components/Header/EVMDisconnectIconButton.d.ts +4 -0
  25. package/_cjs/components/Header/EVMDisconnectIconButton.js +16 -0
  26. package/_cjs/components/Header/EVMDisconnectIconButton.js.map +1 -0
  27. package/_cjs/components/Header/Header.js +1 -6
  28. package/_cjs/components/Header/Header.js.map +1 -1
  29. package/_cjs/components/Header/Header.style.js +10 -4
  30. package/_cjs/components/Header/Header.style.js.map +1 -1
  31. package/_cjs/components/Header/NavigationHeader.d.ts +0 -1
  32. package/_cjs/components/Header/NavigationHeader.js +7 -11
  33. package/_cjs/components/Header/NavigationHeader.js.map +1 -1
  34. package/_cjs/components/Header/SVMDisconnectIconButton.d.ts +1 -0
  35. package/_cjs/components/Header/SVMDisconnectIconButton.js +16 -0
  36. package/_cjs/components/Header/SVMDisconnectIconButton.js.map +1 -0
  37. package/_cjs/components/Header/SettingsButton.style.js +18 -21
  38. package/_cjs/components/Header/SettingsButton.style.js.map +1 -1
  39. package/_cjs/components/Header/TransactionHistoryButton.d.ts +1 -0
  40. package/_cjs/components/Header/TransactionHistoryButton.js +17 -0
  41. package/_cjs/components/Header/TransactionHistoryButton.js.map +1 -0
  42. package/_cjs/components/Header/WalletHeader.d.ts +1 -0
  43. package/_cjs/components/Header/WalletHeader.js +21 -7
  44. package/_cjs/components/Header/WalletHeader.js.map +1 -1
  45. package/_cjs/components/Header/WalletMenu.js +5 -21
  46. package/_cjs/components/Header/WalletMenu.js.map +1 -1
  47. package/_cjs/components/SelectTokenButton/SelectTokenButton.js +7 -1
  48. package/_cjs/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  49. package/_cjs/components/SelectTokenButton/SelectTokenButton.style.js +4 -4
  50. package/_cjs/components/StepActions/StepFeeBreakdown.js +2 -2
  51. package/_cjs/components/StepActions/StepFeeBreakdown.js.map +1 -1
  52. package/_cjs/components/TokenList/TokenList.js +3 -4
  53. package/_cjs/components/TokenList/TokenList.js.map +1 -1
  54. package/_cjs/components/TokenList/VirtualizedTokenList.js +4 -2
  55. package/_cjs/components/TokenList/VirtualizedTokenList.js.map +1 -1
  56. package/_cjs/components/TokenList/types.d.ts +1 -2
  57. package/_cjs/components/TokenList/useTokenSelect.js +6 -4
  58. package/_cjs/components/TokenList/useTokenSelect.js.map +1 -1
  59. package/_cjs/config/queryClient.js +0 -1
  60. package/_cjs/config/queryClient.js.map +1 -1
  61. package/_cjs/config/version.d.ts +1 -1
  62. package/_cjs/config/version.js +1 -1
  63. package/_cjs/config/walletConnect.d.ts +1 -0
  64. package/_cjs/config/walletConnect.js +5 -0
  65. package/_cjs/config/walletConnect.js.map +1 -0
  66. package/_cjs/hooks/useAccount.d.ts +4 -1
  67. package/_cjs/hooks/useAccount.js +5 -16
  68. package/_cjs/hooks/useAccount.js.map +1 -1
  69. package/_cjs/hooks/useAvailableChains.js +12 -6
  70. package/_cjs/hooks/useAvailableChains.js.map +1 -1
  71. package/_cjs/hooks/useChains.d.ts +2 -1
  72. package/_cjs/hooks/useChains.js +7 -3
  73. package/_cjs/hooks/useChains.js.map +1 -1
  74. package/_cjs/hooks/useDebouncedWatch.d.ts +1 -2
  75. package/_cjs/hooks/useDebouncedWatch.js +1 -1
  76. package/_cjs/hooks/useDebouncedWatch.js.map +1 -1
  77. package/_cjs/hooks/useFromTokenSufficiency.js +8 -7
  78. package/_cjs/hooks/useFromTokenSufficiency.js.map +1 -1
  79. package/_cjs/hooks/useGasRecommendation.d.ts +1 -1
  80. package/_cjs/hooks/useGasRecommendation.js.map +1 -1
  81. package/_cjs/hooks/useGasRefuel.js +2 -2
  82. package/_cjs/hooks/useGasRefuel.js.map +1 -1
  83. package/_cjs/hooks/useGasSufficiency.js +7 -6
  84. package/_cjs/hooks/useGasSufficiency.js.map +1 -1
  85. package/_cjs/hooks/useRouteExecution.js +5 -5
  86. package/_cjs/hooks/useRouteExecution.js.map +1 -1
  87. package/_cjs/hooks/useRoutes.d.ts +1 -1
  88. package/_cjs/hooks/useRoutes.js +22 -15
  89. package/_cjs/hooks/useRoutes.js.map +1 -1
  90. package/_cjs/hooks/useTokenAddressBalance.d.ts +2 -1
  91. package/_cjs/hooks/useTokenAddressBalance.js +2 -1
  92. package/_cjs/hooks/useTokenAddressBalance.js.map +1 -1
  93. package/_cjs/hooks/useTokenBalance.d.ts +1 -1
  94. package/_cjs/hooks/useTokenBalance.js +8 -19
  95. package/_cjs/hooks/useTokenBalance.js.map +1 -1
  96. package/_cjs/hooks/useTokenBalances.d.ts +2 -1
  97. package/_cjs/hooks/useTokenBalances.js +1 -0
  98. package/_cjs/hooks/useTokenBalances.js.map +1 -1
  99. package/_cjs/hooks/useTools.js +3 -2
  100. package/_cjs/hooks/useTools.js.map +1 -1
  101. package/_cjs/hooks/useTransactionHistory.d.ts +2 -2
  102. package/_cjs/hooks/useTransactionHistory.js +32 -23
  103. package/_cjs/hooks/useTransactionHistory.js.map +1 -1
  104. package/_cjs/i18n/en.json +4 -3
  105. package/_cjs/pages/ActiveTransactionsPage/ActiveTransactionsPage.js +1 -3
  106. package/_cjs/pages/ActiveTransactionsPage/ActiveTransactionsPage.js.map +1 -1
  107. package/_cjs/pages/RoutesPage/RoutesPage.js +1 -1
  108. package/_cjs/pages/RoutesPage/RoutesPage.js.map +1 -1
  109. package/_cjs/pages/SettingsPage/SettingsCard/SettingCard.js +1 -1
  110. package/_cjs/pages/SettingsPage/SettingsCard/SettingCard.style.js +6 -5
  111. package/_cjs/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  112. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.js +6 -7
  113. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  114. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js +1 -1
  115. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  116. package/_cjs/pages/TransactionPage/StatusBottomSheet.js +13 -9
  117. package/_cjs/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  118. package/_cjs/providers/I18nProvider/I18nProvider.js +2 -1
  119. package/_cjs/providers/I18nProvider/I18nProvider.js.map +1 -1
  120. package/_cjs/providers/WalletProvider/EVMBaseProvider.d.ts +2 -0
  121. package/_cjs/providers/WalletProvider/EVMBaseProvider.js +91 -0
  122. package/_cjs/providers/WalletProvider/EVMBaseProvider.js.map +1 -0
  123. package/_cjs/providers/WalletProvider/EVMExternalContext.d.ts +2 -0
  124. package/_cjs/providers/WalletProvider/EVMExternalContext.js +6 -0
  125. package/_cjs/providers/WalletProvider/EVMExternalContext.js.map +1 -0
  126. package/_cjs/providers/WalletProvider/EVMProvider.d.ts +1 -1
  127. package/_cjs/providers/WalletProvider/EVMProvider.js +13 -70
  128. package/_cjs/providers/WalletProvider/EVMProvider.js.map +1 -1
  129. package/_cjs/providers/WalletProvider/SDKProviders.js +13 -5
  130. package/_cjs/providers/WalletProvider/SDKProviders.js.map +1 -1
  131. package/_cjs/providers/WalletProvider/SVMBaseProvider.d.ts +2 -0
  132. package/_cjs/providers/WalletProvider/{SolanaProvider.js → SVMBaseProvider.js} +4 -14
  133. package/_cjs/providers/WalletProvider/SVMBaseProvider.js.map +1 -0
  134. package/_cjs/providers/WalletProvider/SVMExternalContext.d.ts +2 -0
  135. package/_cjs/providers/WalletProvider/SVMExternalContext.js +6 -0
  136. package/_cjs/providers/WalletProvider/SVMExternalContext.js.map +1 -0
  137. package/_cjs/providers/WalletProvider/SVMProvider.d.ts +3 -0
  138. package/_cjs/providers/WalletProvider/SVMProvider.js +23 -0
  139. package/_cjs/providers/WalletProvider/SVMProvider.js.map +1 -0
  140. package/_cjs/providers/WalletProvider/WalletProvider.js +2 -2
  141. package/_cjs/providers/WalletProvider/WalletProvider.js.map +1 -1
  142. package/_cjs/providers/WalletProvider/index.d.ts +1 -0
  143. package/_cjs/providers/WalletProvider/index.js +1 -0
  144. package/_cjs/providers/WalletProvider/index.js.map +1 -1
  145. package/_cjs/providers/WalletProvider/useHasExternalWalletProvider.d.ts +7 -0
  146. package/_cjs/providers/WalletProvider/useHasExternalWalletProvider.js +27 -0
  147. package/_cjs/providers/WalletProvider/useHasExternalWalletProvider.js.map +1 -0
  148. package/_cjs/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  149. package/_cjs/providers/WidgetProvider/index.d.ts +1 -2
  150. package/_cjs/providers/WidgetProvider/index.js +1 -2
  151. package/_cjs/providers/WidgetProvider/index.js.map +1 -1
  152. package/_cjs/stores/StoreProvider.js +3 -3
  153. package/_cjs/stores/StoreProvider.js.map +1 -1
  154. package/_cjs/stores/chains/ChainOrderStore.js +19 -16
  155. package/_cjs/stores/chains/ChainOrderStore.js.map +1 -1
  156. package/_cjs/stores/chains/createChainOrderStore.js +34 -15
  157. package/_cjs/stores/chains/createChainOrderStore.js.map +1 -1
  158. package/_cjs/stores/chains/types.d.ts +11 -4
  159. package/_cjs/stores/chains/useChainOrder.d.ts +2 -1
  160. package/_cjs/stores/chains/useChainOrder.js +2 -2
  161. package/_cjs/stores/chains/useChainOrder.js.map +1 -1
  162. package/_cjs/stores/form/FormStore.d.ts +1 -1
  163. package/_cjs/stores/form/FormStore.js +4 -4
  164. package/_cjs/stores/form/FormStore.js.map +1 -1
  165. package/_cjs/stores/form/FormUpdater.d.ts +3 -3
  166. package/_cjs/stores/form/FormUpdater.js +4 -4
  167. package/_cjs/stores/form/FormUpdater.js.map +1 -1
  168. package/_cjs/stores/form/URLSearchParamsBuilder.js +3 -2
  169. package/_cjs/stores/form/URLSearchParamsBuilder.js.map +1 -1
  170. package/_cjs/stores/form/createFormStore.js.map +1 -1
  171. package/_cjs/stores/form/types.d.ts +20 -20
  172. package/_cjs/stores/form/types.js.map +1 -1
  173. package/_cjs/stores/form/useFieldActions.js +9 -10
  174. package/_cjs/stores/form/useFieldActions.js.map +1 -1
  175. package/_cjs/stores/form/useFieldController.d.ts +1 -1
  176. package/_cjs/stores/form/useFieldValues.d.ts +2 -2
  177. package/_cjs/stores/form/useFieldValues.js +3 -2
  178. package/_cjs/stores/form/useFieldValues.js.map +1 -1
  179. package/_cjs/stores/form/useTouchedFields.d.ts +14 -1
  180. package/_cjs/stores/form/useValidationActions.js +7 -11
  181. package/_cjs/stores/form/useValidationActions.js.map +1 -1
  182. package/_cjs/stores/routes/useExecutingRoutesIds.d.ts +1 -1
  183. package/_cjs/stores/routes/useExecutingRoutesIds.js +5 -2
  184. package/_cjs/stores/routes/useExecutingRoutesIds.js.map +1 -1
  185. package/_cjs/stores/settings/useSettingsStore.d.ts +1 -0
  186. package/_cjs/stores/settings/useSettingsStore.js +3 -2
  187. package/_cjs/stores/settings/useSettingsStore.js.map +1 -1
  188. package/_cjs/types/widget.d.ts +26 -23
  189. package/_cjs/types/widget.js +1 -0
  190. package/_cjs/types/widget.js.map +1 -1
  191. package/_cjs/utils/index.d.ts +1 -0
  192. package/_cjs/utils/index.js +1 -0
  193. package/_cjs/utils/index.js.map +1 -1
  194. package/_cjs/utils/item.d.ts +2 -0
  195. package/_cjs/{providers/WidgetProvider/utils.js → utils/item.js} +1 -1
  196. package/_cjs/utils/item.js.map +1 -0
  197. package/_esm/App.js +16 -3
  198. package/_esm/App.js.map +1 -1
  199. package/_esm/AppDrawer.d.ts +4 -2
  200. package/_esm/AppDrawer.js +21 -19
  201. package/_esm/AppDrawer.js.map +1 -1
  202. package/_esm/AppDrawerContext.d.ts +6 -0
  203. package/_esm/AppDrawerContext.js +4 -0
  204. package/_esm/AppDrawerContext.js.map +1 -0
  205. package/_esm/components/ActiveTransactions/ActiveTransactions.js +1 -3
  206. package/_esm/components/ActiveTransactions/ActiveTransactions.js.map +1 -1
  207. package/_esm/components/BaseTransactionButton/BaseTransactionButton.js +6 -6
  208. package/_esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  209. package/_esm/components/ChainSelect/ChainSelect.js +8 -6
  210. package/_esm/components/ChainSelect/ChainSelect.js.map +1 -1
  211. package/_esm/components/ChainSelect/useChainSelect.d.ts +1 -1
  212. package/_esm/components/ChainSelect/useChainSelect.js +4 -4
  213. package/_esm/components/ChainSelect/useChainSelect.js.map +1 -1
  214. package/_esm/components/Header/CloseDrawerButton.d.ts +1 -0
  215. package/_esm/components/Header/CloseDrawerButton.js +12 -0
  216. package/_esm/components/Header/CloseDrawerButton.js.map +1 -0
  217. package/_esm/components/Header/EVMDisconnectIconButton.d.ts +4 -0
  218. package/_esm/components/Header/EVMDisconnectIconButton.js +12 -0
  219. package/_esm/components/Header/EVMDisconnectIconButton.js.map +1 -0
  220. package/_esm/components/Header/Header.js +1 -6
  221. package/_esm/components/Header/Header.js.map +1 -1
  222. package/_esm/components/Header/Header.style.js +10 -4
  223. package/_esm/components/Header/Header.style.js.map +1 -1
  224. package/_esm/components/Header/NavigationHeader.d.ts +0 -1
  225. package/_esm/components/Header/NavigationHeader.js +8 -11
  226. package/_esm/components/Header/NavigationHeader.js.map +1 -1
  227. package/_esm/components/Header/SVMDisconnectIconButton.d.ts +1 -0
  228. package/_esm/components/Header/SVMDisconnectIconButton.js +12 -0
  229. package/_esm/components/Header/SVMDisconnectIconButton.js.map +1 -0
  230. package/_esm/components/Header/SettingsButton.style.js +18 -21
  231. package/_esm/components/Header/SettingsButton.style.js.map +1 -1
  232. package/_esm/components/Header/TransactionHistoryButton.d.ts +1 -0
  233. package/_esm/components/Header/TransactionHistoryButton.js +13 -0
  234. package/_esm/components/Header/TransactionHistoryButton.js.map +1 -0
  235. package/_esm/components/Header/WalletHeader.d.ts +1 -0
  236. package/_esm/components/Header/WalletHeader.js +20 -7
  237. package/_esm/components/Header/WalletHeader.js.map +1 -1
  238. package/_esm/components/Header/WalletMenu.js +4 -20
  239. package/_esm/components/Header/WalletMenu.js.map +1 -1
  240. package/_esm/components/SelectTokenButton/SelectTokenButton.js +7 -1
  241. package/_esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  242. package/_esm/components/SelectTokenButton/SelectTokenButton.style.js +4 -4
  243. package/_esm/components/StepActions/StepFeeBreakdown.js +2 -2
  244. package/_esm/components/StepActions/StepFeeBreakdown.js.map +1 -1
  245. package/_esm/components/TokenList/TokenList.js +4 -5
  246. package/_esm/components/TokenList/TokenList.js.map +1 -1
  247. package/_esm/components/TokenList/VirtualizedTokenList.js +4 -2
  248. package/_esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  249. package/_esm/components/TokenList/types.d.ts +1 -2
  250. package/_esm/components/TokenList/useTokenSelect.js +7 -5
  251. package/_esm/components/TokenList/useTokenSelect.js.map +1 -1
  252. package/_esm/config/queryClient.js +0 -1
  253. package/_esm/config/queryClient.js.map +1 -1
  254. package/_esm/config/version.d.ts +1 -1
  255. package/_esm/config/version.js +1 -1
  256. package/_esm/config/walletConnect.d.ts +1 -0
  257. package/_esm/config/walletConnect.js +2 -0
  258. package/_esm/config/walletConnect.js.map +1 -0
  259. package/_esm/hooks/useAccount.d.ts +4 -1
  260. package/_esm/hooks/useAccount.js +5 -15
  261. package/_esm/hooks/useAccount.js.map +1 -1
  262. package/_esm/hooks/useAvailableChains.js +12 -6
  263. package/_esm/hooks/useAvailableChains.js.map +1 -1
  264. package/_esm/hooks/useChains.d.ts +2 -1
  265. package/_esm/hooks/useChains.js +8 -4
  266. package/_esm/hooks/useChains.js.map +1 -1
  267. package/_esm/hooks/useDebouncedWatch.d.ts +1 -2
  268. package/_esm/hooks/useDebouncedWatch.js +1 -1
  269. package/_esm/hooks/useDebouncedWatch.js.map +1 -1
  270. package/_esm/hooks/useFromTokenSufficiency.js +8 -7
  271. package/_esm/hooks/useFromTokenSufficiency.js.map +1 -1
  272. package/_esm/hooks/useGasRecommendation.d.ts +1 -1
  273. package/_esm/hooks/useGasRecommendation.js.map +1 -1
  274. package/_esm/hooks/useGasRefuel.js +2 -2
  275. package/_esm/hooks/useGasRefuel.js.map +1 -1
  276. package/_esm/hooks/useGasSufficiency.js +7 -6
  277. package/_esm/hooks/useGasSufficiency.js.map +1 -1
  278. package/_esm/hooks/useRouteExecution.js +5 -5
  279. package/_esm/hooks/useRouteExecution.js.map +1 -1
  280. package/_esm/hooks/useRoutes.d.ts +1 -1
  281. package/_esm/hooks/useRoutes.js +23 -16
  282. package/_esm/hooks/useRoutes.js.map +1 -1
  283. package/_esm/hooks/useTokenAddressBalance.d.ts +2 -1
  284. package/_esm/hooks/useTokenAddressBalance.js +2 -1
  285. package/_esm/hooks/useTokenAddressBalance.js.map +1 -1
  286. package/_esm/hooks/useTokenBalance.d.ts +1 -1
  287. package/_esm/hooks/useTokenBalance.js +8 -19
  288. package/_esm/hooks/useTokenBalance.js.map +1 -1
  289. package/_esm/hooks/useTokenBalances.d.ts +2 -1
  290. package/_esm/hooks/useTokenBalances.js +1 -0
  291. package/_esm/hooks/useTokenBalances.js.map +1 -1
  292. package/_esm/hooks/useTools.js +2 -1
  293. package/_esm/hooks/useTools.js.map +1 -1
  294. package/_esm/hooks/useTransactionHistory.d.ts +2 -2
  295. package/_esm/hooks/useTransactionHistory.js +33 -24
  296. package/_esm/hooks/useTransactionHistory.js.map +1 -1
  297. package/_esm/i18n/en.json +4 -3
  298. package/_esm/pages/ActiveTransactionsPage/ActiveTransactionsPage.js +1 -3
  299. package/_esm/pages/ActiveTransactionsPage/ActiveTransactionsPage.js.map +1 -1
  300. package/_esm/pages/RoutesPage/RoutesPage.js +1 -1
  301. package/_esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  302. package/_esm/pages/SettingsPage/SettingsCard/SettingCard.js +1 -1
  303. package/_esm/pages/SettingsPage/SettingsCard/SettingCard.style.js +6 -5
  304. package/_esm/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  305. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js +7 -8
  306. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  307. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js +1 -1
  308. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  309. package/_esm/pages/TransactionPage/StatusBottomSheet.js +13 -9
  310. package/_esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  311. package/_esm/providers/I18nProvider/I18nProvider.js +3 -2
  312. package/_esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  313. package/_esm/providers/WalletProvider/EVMBaseProvider.d.ts +2 -0
  314. package/_esm/providers/WalletProvider/EVMBaseProvider.js +87 -0
  315. package/_esm/providers/WalletProvider/EVMBaseProvider.js.map +1 -0
  316. package/_esm/providers/WalletProvider/EVMExternalContext.d.ts +2 -0
  317. package/_esm/providers/WalletProvider/EVMExternalContext.js +3 -0
  318. package/_esm/providers/WalletProvider/EVMExternalContext.js.map +1 -0
  319. package/_esm/providers/WalletProvider/EVMProvider.d.ts +1 -1
  320. package/_esm/providers/WalletProvider/EVMProvider.js +13 -70
  321. package/_esm/providers/WalletProvider/EVMProvider.js.map +1 -1
  322. package/_esm/providers/WalletProvider/SDKProviders.js +13 -5
  323. package/_esm/providers/WalletProvider/SDKProviders.js.map +1 -1
  324. package/_esm/providers/WalletProvider/SVMBaseProvider.d.ts +2 -0
  325. package/_esm/providers/WalletProvider/{SolanaProvider.js → SVMBaseProvider.js} +3 -12
  326. package/_esm/providers/WalletProvider/SVMBaseProvider.js.map +1 -0
  327. package/_esm/providers/WalletProvider/SVMExternalContext.d.ts +2 -0
  328. package/_esm/providers/WalletProvider/SVMExternalContext.js +3 -0
  329. package/_esm/providers/WalletProvider/SVMExternalContext.js.map +1 -0
  330. package/_esm/providers/WalletProvider/SVMProvider.d.ts +3 -0
  331. package/_esm/providers/WalletProvider/SVMProvider.js +18 -0
  332. package/_esm/providers/WalletProvider/SVMProvider.js.map +1 -0
  333. package/_esm/providers/WalletProvider/WalletProvider.js +2 -2
  334. package/_esm/providers/WalletProvider/WalletProvider.js.map +1 -1
  335. package/_esm/providers/WalletProvider/index.d.ts +1 -0
  336. package/_esm/providers/WalletProvider/index.js +1 -0
  337. package/_esm/providers/WalletProvider/index.js.map +1 -1
  338. package/_esm/providers/WalletProvider/useHasExternalWalletProvider.d.ts +7 -0
  339. package/_esm/providers/WalletProvider/useHasExternalWalletProvider.js +23 -0
  340. package/_esm/providers/WalletProvider/useHasExternalWalletProvider.js.map +1 -0
  341. package/_esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  342. package/_esm/providers/WidgetProvider/index.d.ts +1 -2
  343. package/_esm/providers/WidgetProvider/index.js +1 -2
  344. package/_esm/providers/WidgetProvider/index.js.map +1 -1
  345. package/_esm/stores/StoreProvider.js +3 -3
  346. package/_esm/stores/StoreProvider.js.map +1 -1
  347. package/_esm/stores/chains/ChainOrderStore.js +18 -15
  348. package/_esm/stores/chains/ChainOrderStore.js.map +1 -1
  349. package/_esm/stores/chains/createChainOrderStore.js +34 -15
  350. package/_esm/stores/chains/createChainOrderStore.js.map +1 -1
  351. package/_esm/stores/chains/types.d.ts +11 -4
  352. package/_esm/stores/chains/useChainOrder.d.ts +2 -1
  353. package/_esm/stores/chains/useChainOrder.js +2 -2
  354. package/_esm/stores/chains/useChainOrder.js.map +1 -1
  355. package/_esm/stores/form/FormStore.d.ts +1 -1
  356. package/_esm/stores/form/FormStore.js +5 -5
  357. package/_esm/stores/form/FormStore.js.map +1 -1
  358. package/_esm/stores/form/FormUpdater.d.ts +3 -3
  359. package/_esm/stores/form/FormUpdater.js +4 -4
  360. package/_esm/stores/form/FormUpdater.js.map +1 -1
  361. package/_esm/stores/form/URLSearchParamsBuilder.js +3 -2
  362. package/_esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  363. package/_esm/stores/form/createFormStore.js.map +1 -1
  364. package/_esm/stores/form/types.d.ts +20 -20
  365. package/_esm/stores/form/types.js.map +1 -1
  366. package/_esm/stores/form/useFieldActions.js +9 -10
  367. package/_esm/stores/form/useFieldActions.js.map +1 -1
  368. package/_esm/stores/form/useFieldController.d.ts +1 -1
  369. package/_esm/stores/form/useFieldValues.d.ts +2 -2
  370. package/_esm/stores/form/useFieldValues.js +3 -2
  371. package/_esm/stores/form/useFieldValues.js.map +1 -1
  372. package/_esm/stores/form/useTouchedFields.d.ts +14 -1
  373. package/_esm/stores/form/useValidationActions.js +7 -11
  374. package/_esm/stores/form/useValidationActions.js.map +1 -1
  375. package/_esm/stores/routes/useExecutingRoutesIds.d.ts +1 -1
  376. package/_esm/stores/routes/useExecutingRoutesIds.js +5 -2
  377. package/_esm/stores/routes/useExecutingRoutesIds.js.map +1 -1
  378. package/_esm/stores/settings/useSettingsStore.d.ts +1 -0
  379. package/_esm/stores/settings/useSettingsStore.js +2 -1
  380. package/_esm/stores/settings/useSettingsStore.js.map +1 -1
  381. package/_esm/types/widget.d.ts +26 -23
  382. package/_esm/types/widget.js +1 -0
  383. package/_esm/types/widget.js.map +1 -1
  384. package/_esm/utils/index.d.ts +1 -0
  385. package/_esm/utils/index.js +1 -0
  386. package/_esm/utils/index.js.map +1 -1
  387. package/_esm/utils/item.d.ts +2 -0
  388. package/_esm/{providers/WidgetProvider/utils.js → utils/item.js} +1 -1
  389. package/_esm/utils/item.js.map +1 -0
  390. package/components/ActiveTransactions/ActiveTransactions.tsx +1 -3
  391. package/components/BaseTransactionButton/BaseTransactionButton.tsx +6 -6
  392. package/components/ChainSelect/ChainSelect.tsx +8 -6
  393. package/components/ChainSelect/useChainSelect.ts +5 -5
  394. package/components/Header/CloseDrawerButton.tsx +18 -0
  395. package/components/Header/EVMDisconnectIconButton.tsx +24 -0
  396. package/components/Header/Header.style.ts +10 -4
  397. package/components/Header/Header.tsx +1 -8
  398. package/components/Header/NavigationHeader.tsx +13 -30
  399. package/components/Header/SVMDisconnectIconButton.tsx +19 -0
  400. package/components/Header/SettingsButton.style.tsx +18 -22
  401. package/components/Header/TransactionHistoryButton.tsx +23 -0
  402. package/components/Header/WalletHeader.tsx +25 -6
  403. package/components/Header/WalletMenu.tsx +66 -100
  404. package/components/SelectTokenButton/SelectTokenButton.style.tsx +4 -4
  405. package/components/SelectTokenButton/SelectTokenButton.tsx +10 -2
  406. package/components/StepActions/StepFeeBreakdown.tsx +2 -2
  407. package/components/TokenList/TokenList.tsx +2 -5
  408. package/components/TokenList/VirtualizedTokenList.tsx +3 -2
  409. package/components/TokenList/types.ts +1 -2
  410. package/components/TokenList/useTokenSelect.ts +8 -6
  411. package/config/queryClient.ts +0 -1
  412. package/config/version.ts +1 -1
  413. package/config/walletConnect.ts +1 -0
  414. package/hooks/useAccount.ts +9 -17
  415. package/hooks/useAvailableChains.ts +13 -6
  416. package/hooks/useChains.ts +12 -6
  417. package/hooks/useDebouncedWatch.ts +6 -5
  418. package/hooks/useFromTokenSufficiency.ts +18 -9
  419. package/hooks/useGasRecommendation.ts +1 -1
  420. package/hooks/useGasRefuel.ts +2 -2
  421. package/hooks/useGasSufficiency.ts +11 -6
  422. package/hooks/useRouteExecution.ts +5 -5
  423. package/hooks/useRoutes.ts +31 -24
  424. package/hooks/useTokenAddressBalance.ts +2 -1
  425. package/hooks/useTokenBalance.ts +12 -22
  426. package/hooks/useTokenBalances.ts +1 -0
  427. package/hooks/useTools.ts +2 -1
  428. package/hooks/useTransactionHistory.ts +39 -29
  429. package/i18n/en.json +4 -3
  430. package/package.json +13 -13
  431. package/pages/ActiveTransactionsPage/ActiveTransactionsPage.tsx +1 -3
  432. package/pages/RoutesPage/RoutesPage.tsx +0 -1
  433. package/pages/SettingsPage/SettingsCard/SettingCard.style.tsx +6 -5
  434. package/pages/SettingsPage/SettingsCard/SettingCard.tsx +1 -1
  435. package/pages/SettingsPage/SlippageSettings/SlippageSettings.style.tsx +3 -2
  436. package/pages/SettingsPage/SlippageSettings/SlippageSettings.tsx +12 -10
  437. package/pages/TransactionPage/StatusBottomSheet.tsx +14 -9
  438. package/providers/I18nProvider/I18nProvider.tsx +3 -2
  439. package/providers/WalletProvider/EVMBaseProvider.tsx +130 -0
  440. package/providers/WalletProvider/EVMExternalContext.ts +3 -0
  441. package/providers/WalletProvider/EVMProvider.tsx +17 -110
  442. package/providers/WalletProvider/SDKProviders.tsx +19 -9
  443. package/providers/WalletProvider/{SolanaProvider.tsx → SVMBaseProvider.tsx} +2 -17
  444. package/providers/WalletProvider/SVMExternalContext.ts +3 -0
  445. package/providers/WalletProvider/SVMProvider.tsx +27 -0
  446. package/providers/WalletProvider/WalletProvider.tsx +5 -5
  447. package/providers/WalletProvider/index.ts +1 -0
  448. package/providers/WalletProvider/useHasExternalWalletProvider.ts +30 -0
  449. package/providers/WidgetProvider/WidgetProvider.tsx +2 -2
  450. package/providers/WidgetProvider/index.ts +1 -2
  451. package/stores/StoreProvider.tsx +12 -12
  452. package/stores/chains/ChainOrderStore.tsx +21 -17
  453. package/stores/chains/createChainOrderStore.ts +34 -15
  454. package/stores/chains/types.ts +12 -4
  455. package/stores/chains/useChainOrder.ts +5 -2
  456. package/stores/form/FormStore.tsx +7 -8
  457. package/stores/form/FormUpdater.tsx +10 -5
  458. package/stores/form/URLSearchParamsBuilder.tsx +3 -2
  459. package/stores/form/createFormStore.ts +3 -2
  460. package/stores/form/types.ts +24 -23
  461. package/stores/form/useFieldActions.ts +11 -20
  462. package/stores/form/useFieldValues.ts +6 -4
  463. package/stores/form/useValidationActions.ts +9 -17
  464. package/stores/routes/useExecutingRoutesIds.ts +5 -2
  465. package/stores/settings/useSettingsStore.ts +3 -1
  466. package/types/widget.ts +32 -24
  467. package/utils/index.ts +1 -0
  468. package/{providers/WidgetProvider/utils.ts → utils/item.ts} +3 -7
  469. package/_cjs/providers/WalletProvider/SolanaProvider.d.ts +0 -3
  470. package/_cjs/providers/WalletProvider/SolanaProvider.js.map +0 -1
  471. package/_cjs/providers/WidgetProvider/utils.d.ts +0 -4
  472. package/_cjs/providers/WidgetProvider/utils.js.map +0 -1
  473. package/_esm/providers/WalletProvider/SolanaProvider.d.ts +0 -3
  474. package/_esm/providers/WalletProvider/SolanaProvider.js.map +0 -1
  475. package/_esm/providers/WidgetProvider/utils.d.ts +0 -4
  476. package/_esm/providers/WidgetProvider/utils.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { useMemo } from 'react';
2
2
  import { useAvailableChains } from '.';
3
+ import { useFieldValues } from '../stores';
3
4
  import { useGasRecommendation } from './useGasRecommendation';
4
5
  import { useTokenBalance } from './useTokenBalance';
5
- import { useFieldValues } from '../stores';
6
6
 
7
7
  export const useGasRefuel = () => {
8
8
  const { getChainById } = useAvailableChains();
@@ -19,7 +19,7 @@ export const useGasRefuel = () => {
19
19
 
20
20
  const { token: nativeToken } = useTokenBalance(
21
21
  toAddress,
22
- toChainId && toChain?.nativeToken,
22
+ toChainId ? toChain?.nativeToken : undefined,
23
23
  toChain,
24
24
  );
25
25
 
@@ -17,16 +17,21 @@ export interface GasSufficiency {
17
17
  const refetchInterval = 30_000;
18
18
 
19
19
  export const useGasSufficiency = (route?: RouteExtended) => {
20
- const { account } = useAccount();
20
+ const { accounts } = useAccount();
21
21
  const { getChainById } = useAvailableChains();
22
22
 
23
23
  const { enabledAutoRefuel } = useSettings(['enabledAutoRefuel']);
24
24
  const { enabled, isLoading: isRefuelLoading } = useGasRefuel();
25
25
  const enabledRefuel = enabled && enabledAutoRefuel;
26
26
 
27
+ const account = accounts.find(
28
+ (account) =>
29
+ account.chainType === getChainById(route?.fromChainId)?.chainType,
30
+ );
31
+
27
32
  const { data: insufficientGas, isLoading } = useQuery({
28
- queryKey: ['gas-sufficiency-check', account.address, route?.id],
29
- queryFn: async () => {
33
+ queryKey: ['gas-sufficiency-check', account?.address, route?.id],
34
+ queryFn: async ({ queryKey: [, accountAddress] }) => {
30
35
  // TODO: include LI.Fuel into calculation once steps and tools are properly typed
31
36
  // const refuelSteps = route.steps
32
37
  // .flatMap((step) => step.includedSteps)
@@ -38,7 +43,7 @@ export const useGasSufficiency = (route?: RouteExtended) => {
38
43
  (groupedGasCosts, step) => {
39
44
  if (
40
45
  step.estimate.gasCosts &&
41
- (account.connector as Connector)?.id !== 'safe'
46
+ (account?.connector as Connector)?.id !== 'safe'
42
47
  ) {
43
48
  const { token } = step.estimate.gasCosts[0];
44
49
  const gasCostAmount = step.estimate.gasCosts.reduce(
@@ -82,7 +87,7 @@ export const useGasSufficiency = (route?: RouteExtended) => {
82
87
  }
83
88
 
84
89
  const tokenBalances = await getTokenBalancesWithRetry(
85
- account.address!,
90
+ accountAddress!,
86
91
  Object.values(gasCosts).map((item) => item.token),
87
92
  );
88
93
 
@@ -125,7 +130,7 @@ export const useGasSufficiency = (route?: RouteExtended) => {
125
130
  return gasCostResult;
126
131
  },
127
132
 
128
- enabled: Boolean(account.address && route),
133
+ enabled: Boolean(account?.address && route),
129
134
  refetchInterval,
130
135
  staleTime: refetchInterval,
131
136
  });
@@ -31,7 +31,7 @@ export const useRouteExecution = ({
31
31
  onAcceptExchangeRateUpdate,
32
32
  }: RouteExecutionProps) => {
33
33
  const queryClient = useQueryClient();
34
- const { account } = useAccount();
34
+ const { isConnected } = useAccount();
35
35
  const resumedAfterMount = useRef(false);
36
36
  const emitter = useWidgetEvents();
37
37
  const routeExecutionStoreContext = useRouteExecutionStoreContext();
@@ -87,7 +87,7 @@ export const useRouteExecution = ({
87
87
 
88
88
  const executeRouteMutation = useMutation({
89
89
  mutationFn: () => {
90
- if (!account.isConnected) {
90
+ if (!isConnected) {
91
91
  throw Error('Account is not connected.');
92
92
  }
93
93
  if (!routeExecution?.route) {
@@ -111,7 +111,7 @@ export const useRouteExecution = ({
111
111
 
112
112
  const resumeRouteMutation = useMutation({
113
113
  mutationFn: (resumedRoute?: Route) => {
114
- if (!account.isConnected) {
114
+ if (!isConnected) {
115
115
  throw Error('Account is not connected.');
116
116
  }
117
117
  if (!routeExecution?.route) {
@@ -170,14 +170,14 @@ export const useRouteExecution = ({
170
170
  // Check if route is eligible for automatic resuming
171
171
  if (
172
172
  isRouteActive(routeExecution?.route) &&
173
- account.isConnected &&
173
+ isConnected &&
174
174
  !resumedAfterMount.current
175
175
  ) {
176
176
  resumedAfterMount.current = true;
177
177
  _resumeRoute();
178
178
  }
179
179
  // eslint-disable-next-line react-hooks/exhaustive-deps
180
- }, [account.isConnected]);
180
+ }, [isConnected]);
181
181
 
182
182
  useEffect(() => {
183
183
  return () => {
@@ -8,7 +8,7 @@ import { normalize } from 'viem/ens';
8
8
  import { useConfig } from 'wagmi';
9
9
  import { useChain, useDebouncedWatch, useGasRefuel, useToken } from '.';
10
10
  import { useWidgetConfig } from '../providers';
11
- import { useFieldValues, useSettings } from '../stores';
11
+ import { defaultSlippage, useFieldValues, useSettings } from '../stores';
12
12
  import { isSVMAddress } from '../utils';
13
13
  import { useAccount } from './useAccount';
14
14
  import { useSwapOnly } from './useSwapOnly';
@@ -21,7 +21,7 @@ interface RoutesProps {
21
21
 
22
22
  export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
23
23
  const { subvariant, sdkConfig, insurance, contractTool } = useWidgetConfig();
24
- const { account } = useAccount();
24
+ const { accounts } = useAccount();
25
25
  const queryClient = useQueryClient();
26
26
  const config = useConfig();
27
27
  const swapOnly = useSwapOnly();
@@ -38,7 +38,7 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
38
38
  'enabledBridges',
39
39
  'enabledExchanges',
40
40
  ]);
41
- const [fromTokenAmount] = useDebouncedWatch(['fromAmount'], 320);
41
+ const [fromTokenAmount] = useDebouncedWatch(320, 'fromAmount');
42
42
  const [
43
43
  fromChainId,
44
44
  fromTokenAddress,
@@ -67,13 +67,21 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
67
67
  const { enabled: enabledRefuel, fromAmount: gasRecommendationFromAmount } =
68
68
  useGasRefuel();
69
69
 
70
- const hasAmount =
71
- (!isNaN(fromTokenAmount) && Number(fromTokenAmount) > 0) ||
72
- (!isNaN(toTokenAmount) && Number(toTokenAmount) > 0);
70
+ const accountAddress = fromChain?.chainType
71
+ ? accounts.find((account) => account.chainType === fromChain.chainType)
72
+ ?.address
73
+ : undefined;
74
+
75
+ const hasAmount = Number(fromTokenAmount) > 0 || Number(toTokenAmount) > 0;
73
76
 
74
77
  const contractCallQuoteEnabled: boolean =
75
78
  subvariant === 'nft'
76
- ? Boolean(toContractAddress && toContractCallData && toContractGasLimit)
79
+ ? Boolean(
80
+ toContractAddress &&
81
+ toContractCallData &&
82
+ toContractGasLimit &&
83
+ accountAddress,
84
+ )
77
85
  : true;
78
86
 
79
87
  // When we bridge between ecosystems we need to be sure toAddress is set
@@ -81,8 +89,8 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
81
89
  fromChain?.chainType !== toChain?.chainType ? Boolean(toAddress) : true;
82
90
 
83
91
  const isEnabled =
84
- !isNaN(fromChainId) &&
85
- !isNaN(toChainId) &&
92
+ Boolean(Number(fromChainId)) &&
93
+ Boolean(Number(toChainId)) &&
86
94
  Boolean(fromToken?.address) &&
87
95
  Boolean(toToken?.address) &&
88
96
  !Number.isNaN(slippage) &&
@@ -90,18 +98,16 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
90
98
  isChainTypeSatisfied &&
91
99
  contractCallQuoteEnabled;
92
100
 
93
- const accountAddress =
94
- fromChain?.chainType === account.chainType ? account.address : undefined;
95
-
101
+ // Some values should be strictly typed and isEnabled ensures that
96
102
  const queryKey = [
97
103
  'routes',
98
104
  accountAddress,
99
- fromChainId,
100
- fromToken?.address,
105
+ fromChainId as number,
106
+ fromToken?.address as string,
101
107
  fromTokenAmount,
102
108
  toAddress,
103
- toChainId,
104
- toToken?.address,
109
+ toChainId as number,
110
+ toToken?.address as string,
105
111
  toTokenAmount,
106
112
  toContractAddress,
107
113
  toContractCallData,
@@ -116,7 +122,7 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
116
122
  gasRecommendationFromAmount,
117
123
  insurance,
118
124
  insurableRoute?.id,
119
- ];
125
+ ] as const;
120
126
 
121
127
  const { data, isLoading, isFetching, isFetched, dataUpdatedAt, refetch } =
122
128
  useQuery({
@@ -135,7 +141,7 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
135
141
  toContractAddress,
136
142
  toContractCallData,
137
143
  toContractGasLimit,
138
- slippage,
144
+ slippage = defaultSlippage,
139
145
  enabledBridges,
140
146
  enabledExchanges,
141
147
  routePriority,
@@ -153,10 +159,10 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
153
159
  try {
154
160
  // FIXME: resolve address in one place
155
161
  toWalletAddress = !isAddress
156
- ? await getEnsAddress(config, {
162
+ ? (await getEnsAddress(config, {
157
163
  chainId: toChainId,
158
164
  name: normalize(toAddress),
159
- })
165
+ })) || undefined
160
166
  : isAddress
161
167
  ? toAddress
162
168
  : fromAddress;
@@ -188,7 +194,8 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
188
194
  if (subvariant === 'nft') {
189
195
  const contractCallQuote = await getContractCallQuote(
190
196
  {
191
- fromAddress,
197
+ // Contract calls are enabled only when fromAddress is set
198
+ fromAddress: fromAddress as string,
192
199
  fromChain: fromChainId,
193
200
  fromToken: fromTokenAddress,
194
201
  toAmount: toTokenAmount,
@@ -246,13 +253,13 @@ export const useRoutes = ({ insurableRoute }: RoutesProps = {}) => {
246
253
 
247
254
  const data = await getRoutes(
248
255
  {
249
- fromChainId,
256
+ fromAddress,
250
257
  fromAmount,
258
+ fromChainId,
251
259
  fromTokenAddress,
260
+ toAddress: toWalletAddress,
252
261
  toChainId,
253
262
  toTokenAddress,
254
- fromAddress,
255
- toAddress: toWalletAddress,
256
263
  fromAmountForGas:
257
264
  enabledRefuel && gasRecommendationFromAmount
258
265
  ? gasRecommendationFromAmount
@@ -5,7 +5,7 @@ export const useTokenAddressBalance = (
5
5
  chainId?: number,
6
6
  tokenAddress?: string,
7
7
  ) => {
8
- const { tokens, tokensWithBalance, isBalanceLoading, refetch } =
8
+ const { tokens, tokensWithBalance, chain, isBalanceLoading, refetch } =
9
9
  useTokenBalances(chainId);
10
10
 
11
11
  const token = useMemo(() => {
@@ -19,6 +19,7 @@ export const useTokenAddressBalance = (
19
19
 
20
20
  return {
21
21
  token,
22
+ chain,
22
23
  isLoading: isBalanceLoading,
23
24
  refetch,
24
25
  };
@@ -11,37 +11,27 @@ export const useTokenBalance = (
11
11
  token?: Token,
12
12
  chain?: ExtendedChain,
13
13
  ) => {
14
- const { account } = useAccount();
14
+ const { account, accounts } = useAccount();
15
15
  const queryClient = useQueryClient();
16
16
  const walletAddress =
17
17
  accountAddress ||
18
18
  // When we provide chain we want to be sure that account address used is from the same ecosystem as token
19
- !chain
20
- ? account.address
21
- : chain.chainType === account.chainType
22
- ? account.address
23
- : undefined;
19
+ (chain
20
+ ? accounts.find((account) => account.chainType === chain.chainType)
21
+ ?.address
22
+ : account.address);
24
23
 
25
24
  const tokenBalanceQueryKey = useMemo(
26
- () => ['token-balance', walletAddress, token?.chainId, token?.address],
25
+ () =>
26
+ ['token-balance', walletAddress, token?.chainId, token?.address] as const,
27
27
  [token?.address, token?.chainId, walletAddress],
28
28
  );
29
29
 
30
30
  const { data, isLoading, refetch } = useQuery({
31
31
  queryKey: tokenBalanceQueryKey,
32
- queryFn: async ({ queryKey: [, accountAddress] }) => {
33
- const cachedToken = queryClient
34
- .getQueryData<Token[]>([
35
- 'token-balances',
36
- accountAddress,
37
- token!.chainId,
38
- ])
39
- ?.find((t) => t.address === token!.address);
40
-
41
- if (cachedToken) {
42
- return cachedToken as TokenAmount;
43
- }
44
-
32
+ queryFn: async ({
33
+ queryKey: [, accountAddress, tokenChainId, tokenAddress],
34
+ }) => {
45
35
  const tokenBalances = await getTokenBalancesWithRetry(
46
36
  accountAddress as string,
47
37
  [token!],
@@ -64,12 +54,12 @@ export const useTokenBalance = (
64
54
  }
65
55
 
66
56
  queryClient.setQueriesData<TokenAmount[]>(
67
- { queryKey: ['token-balances', accountAddress, token!.chainId] },
57
+ { queryKey: ['token-balances', accountAddress, tokenChainId] },
68
58
  (data) => {
69
59
  if (data) {
70
60
  const clonedData = [...data];
71
61
  const index = clonedData.findIndex(
72
- (dataToken) => dataToken.address === token!.address,
62
+ (dataToken) => dataToken.address === tokenAddress,
73
63
  );
74
64
  clonedData[index] = {
75
65
  ...clonedData[index],
@@ -83,6 +83,7 @@ export const useTokenBalances = (selectedChainId?: number) => {
83
83
  tokens,
84
84
  tokensWithBalance,
85
85
  featuredTokens,
86
+ chain,
86
87
  isLoading,
87
88
  isBalanceLoading: isBalanceLoading && isBalanceLoadingEnabled,
88
89
  refetch,
package/hooks/useTools.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { getTools, type ToolsResponse } from '@lifi/sdk';
2
2
  import { useQuery } from '@tanstack/react-query';
3
- import { isItemAllowed, useWidgetConfig } from '../providers';
3
+ import { useWidgetConfig } from '../providers';
4
4
  import { useSettingsStore } from '../stores';
5
+ import { isItemAllowed } from '../utils';
5
6
 
6
7
  export const useTools = () => {
7
8
  const { bridges, exchanges } = useWidgetConfig();
@@ -1,49 +1,59 @@
1
+ import type { StatusResponse } from '@lifi/sdk';
1
2
  import { getTransactionHistory, type ExtendedTransactionInfo } from '@lifi/sdk';
2
- import { useQuery } from '@tanstack/react-query';
3
+ import type { QueryFunction } from '@tanstack/react-query';
4
+ import { useQueries } from '@tanstack/react-query';
3
5
  import { useAccount } from './useAccount';
4
6
 
5
7
  export const useTransactionHistory = () => {
6
- const { account } = useAccount();
8
+ const { accounts } = useAccount();
7
9
 
8
- const { data, isLoading, refetch } = useQuery({
9
- queryKey: ['transaction-history', account.address],
10
- queryFn: async ({ queryKey: [, accountAddress], signal }) => {
11
- if (!accountAddress) {
12
- return [];
13
- }
14
- const date = new Date();
15
- date.setFullYear(date.getFullYear() - 10);
10
+ const { data, isLoading } = useQueries({
11
+ queries: accounts.map((account) => ({
12
+ queryKey: ['transaction-history', account.address],
13
+ queryFn: (async ({ queryKey: [, accountAddress], signal }) => {
14
+ if (!accountAddress) {
15
+ return [];
16
+ }
17
+ const date = new Date();
18
+ date.setFullYear(date.getFullYear() - 10);
16
19
 
17
- const response = await getTransactionHistory(
18
- {
19
- wallet: accountAddress,
20
- fromTimestamp: date.getTime() / 1000,
21
- toTimestamp: Date.now() / 1000,
22
- },
23
- { signal },
24
- );
20
+ const response = await getTransactionHistory(
21
+ {
22
+ wallet: accountAddress,
23
+ fromTimestamp: date.getTime() / 1000,
24
+ toTimestamp: Date.now() / 1000,
25
+ },
26
+ { signal },
27
+ );
25
28
 
26
- const filteredTransactions = response.transfers
29
+ return response.transfers;
30
+ }) as QueryFunction<StatusResponse[], (string | undefined)[], never>,
31
+ refetchInterval: 300000,
32
+ enabled: Boolean(account.address),
33
+ })),
34
+ combine: (results) => {
35
+ const data = results
36
+ .filter((result) => result.data)
37
+ .flatMap((result) => result.data)
27
38
  .filter(
28
39
  (transaction) =>
29
- transaction.receiving.chainId && transaction.sending.chainId,
40
+ transaction?.receiving.chainId && transaction.sending.chainId,
30
41
  )
31
42
  .sort((a, b) => {
32
43
  return (
33
- ((b.sending as ExtendedTransactionInfo)?.timestamp ?? 0) -
34
- ((a.sending as ExtendedTransactionInfo)?.timestamp ?? 0)
44
+ ((b?.sending as ExtendedTransactionInfo)?.timestamp ?? 0) -
45
+ ((a?.sending as ExtendedTransactionInfo)?.timestamp ?? 0)
35
46
  );
36
- });
37
-
38
- return filteredTransactions;
47
+ }) as StatusResponse[];
48
+ return {
49
+ data: data,
50
+ isLoading: results.some((result) => result.isLoading),
51
+ };
39
52
  },
40
- refetchInterval: 300000,
41
- enabled: Boolean(account.address),
42
53
  });
43
54
 
44
55
  return {
45
- data: data ?? [],
56
+ data,
46
57
  isLoading,
47
- refetch,
48
58
  };
49
59
  };
package/i18n/en.json CHANGED
@@ -14,6 +14,7 @@
14
14
  "buyNow": "Buy now",
15
15
  "cancel": "Cancel",
16
16
  "changeWallet": "Change wallet",
17
+ "close": "Close",
17
18
  "connectWallet": "Connect wallet",
18
19
  "contactSupport": "Contact support",
19
20
  "continue": "Continue",
@@ -105,7 +106,7 @@
105
106
  "insufficientGas": "You don't have enough gas to complete the transaction. You need to add at least:",
106
107
  "rateChanged": "The exchange rate has changed. By continuing the transaction, you'll accept the new rate.",
107
108
  "resetSettings": "This will reset your route priority, slippage, gas price, enabled bridges and exchanges.",
108
- "slippageOutsideRecommendedLimits": "High tolerance may result in unfavorable trade caused by front running."
109
+ "slippageOutsideRecommendedLimits": "High slippage tolerance may result in unfavorable trade caused by front-running."
109
110
  },
110
111
  "title": {
111
112
  "deleteActiveTransactions": "Delete all active transactions?",
@@ -170,8 +171,8 @@
170
171
  "networkEstimated": "Estimated network fees:",
171
172
  "networkPaid": "Paid network fees:",
172
173
  "paid": "paid fees",
173
- "providerEstimated": "Bridge fees:",
174
- "providerPaid": "Bridge fees:"
174
+ "providerEstimated": "Estimated provider fees:",
175
+ "providerPaid": "Paid provider fees:"
175
176
  },
176
177
  "from": "From",
177
178
  "fromAmount": "You pay",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "3.0.0-alpha.12",
3
+ "version": "3.0.0-alpha.13",
4
4
  "description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
5
5
  "type": "module",
6
6
  "main": "./_cjs/index.js",
@@ -35,29 +35,29 @@
35
35
  "dependencies": {
36
36
  "@emotion/react": "^11.11.3",
37
37
  "@emotion/styled": "^11.11.0",
38
- "@lifi/sdk": "^3.0.0-alpha.42",
39
- "@lifi/wallet-management": "^3.0.0-alpha.8",
40
- "@mui/icons-material": "^5.15.2",
41
- "@mui/lab": "^5.0.0-alpha.158",
42
- "@mui/material": "^5.15.2",
38
+ "@lifi/sdk": "^3.0.0-alpha.47",
39
+ "@lifi/wallet-management": "^3.0.0-alpha.9",
40
+ "@mui/icons-material": "^5.15.4",
41
+ "@mui/lab": "^5.0.0-alpha.160",
42
+ "@mui/material": "^5.15.4",
43
43
  "@solana/wallet-adapter-base": "^0.9.23",
44
44
  "@solana/wallet-adapter-react": "^0.15.35",
45
- "@solana/wallet-adapter-wallets": "^0.19.24",
46
- "@solana/web3.js": "^1.87.6",
47
- "@tanstack/react-query": "^5.15.0",
45
+ "@solana/wallet-adapter-wallets": "^0.19.25",
46
+ "@solana/web3.js": "^1.89.0",
47
+ "@tanstack/react-query": "^5.17.12",
48
48
  "@tanstack/react-virtual": "^3.0.1",
49
- "i18next": "^23.7.11",
49
+ "i18next": "^23.7.16",
50
50
  "microdiff": "^1.3.2",
51
51
  "mitt": "^3.0.1",
52
52
  "react": "^18.2.0",
53
53
  "react-dom": "^18.2.0",
54
54
  "react-i18next": "^14.0.0",
55
55
  "react-intersection-observer": "^9.5.3",
56
- "react-router-dom": "^6.21.1",
56
+ "react-router-dom": "^6.21.2",
57
57
  "react-timer-hook": "^3.0.7",
58
58
  "uuid": "^9.0.1",
59
- "viem": "^2.0.0-rc.3",
60
- "wagmi": "^2.0.0-rc.2",
59
+ "viem": "^2.0.10",
60
+ "wagmi": "^2.2.1",
61
61
  "zustand": "^4.4.7"
62
62
  },
63
63
  "peerDependencies": {
@@ -13,7 +13,6 @@ import { useTranslation } from 'react-i18next';
13
13
  import { ActiveTransactionItem } from '../../components/ActiveTransactions';
14
14
  import { Dialog } from '../../components/Dialog';
15
15
  import { PageContainer } from '../../components/PageContainer';
16
- import { useAccount } from '../../hooks';
17
16
  import {
18
17
  useExecutingRoutesIds,
19
18
  useHeaderStoreContext,
@@ -23,8 +22,7 @@ import { ActiveTransactionsEmpty } from './ActiveTransactionsEmpty';
23
22
 
24
23
  export const ActiveTransactionsPage = () => {
25
24
  const { t } = useTranslation();
26
- const { account } = useAccount();
27
- const executingRoutes = useExecutingRoutesIds(account.address);
25
+ const executingRoutes = useExecutingRoutesIds();
28
26
  const deleteRoutes = useRouteExecutionStore((store) => store.deleteRoutes);
29
27
  const headerStoreContext = useHeaderStoreContext();
30
28
  const [open, setOpen] = useState(false);
@@ -46,7 +46,6 @@ export const RoutesPage: React.FC<BoxProps> = () => {
46
46
  onClick={() => refetch()}
47
47
  sx={{ marginRight: -1 }}
48
48
  size="medium"
49
- edge="end"
50
49
  />,
51
50
  );
52
51
  }, [dataUpdatedAt, headerStoreContext, isFetching, refetch, refetchTime]);
@@ -15,18 +15,18 @@ export const SummaryTitleContainer = styled(Box)(({ theme }) => ({
15
15
  gap: theme.spacing(1.5),
16
16
  }));
17
17
 
18
- export const SummaryRowContainer = styled(Box)({
18
+ export const SummaryRowContainer = styled(Box)(({ theme }) => ({
19
19
  display: 'flex',
20
20
  width: '100%',
21
21
  justifyContent: 'space-between',
22
22
  alignItems: 'center',
23
- });
23
+ padding: theme.spacing(1),
24
+ }));
24
25
 
25
- export const SummaryRowButton = styled(ButtonBase)({
26
+ export const SummaryRowButton = styled(ButtonBase)(({ theme }) => ({
26
27
  background: 'none',
27
28
  color: 'inherit',
28
29
  border: 'none',
29
- padding: 0,
30
30
  font: 'inherit',
31
31
  cursor: 'pointer',
32
32
  outline: 'inherit',
@@ -34,7 +34,8 @@ export const SummaryRowButton = styled(ButtonBase)({
34
34
  width: '100%',
35
35
  justifyContent: 'space-between',
36
36
  alignItems: 'center',
37
- });
37
+ padding: theme.spacing(1),
38
+ }));
38
39
 
39
40
  export const SummaryValue = styled(Typography)({
40
41
  lineHeight: '1.25',
@@ -7,7 +7,7 @@ export const SettingCard: React.FC<PropsWithChildren> = ({ children }) => {
7
7
  variant="default"
8
8
  selectionColor="primary"
9
9
  sx={{
10
- p: 2,
10
+ p: 1,
11
11
  }}
12
12
  >
13
13
  {children}
@@ -1,7 +1,7 @@
1
- import { alpha, styled } from '@mui/material/styles';
2
- import { Box, ButtonBase, InputBase } from '@mui/material';
3
1
  import type { Theme } from '@mui/material';
2
+ import { Box, ButtonBase, InputBase } from '@mui/material';
4
3
  import { inputBaseClasses } from '@mui/material/InputBase';
4
+ import { alpha, styled } from '@mui/material/styles';
5
5
  import { getCardFieldsetBackgroundColor } from '../../../utils';
6
6
 
7
7
  export const SettingsFieldSet = styled(Box)(({ theme }) => ({
@@ -28,6 +28,7 @@ const slippageControlSelected = (theme: Theme) => ({
28
28
  interface SlippageDefaultProps {
29
29
  selected?: boolean;
30
30
  }
31
+
31
32
  export const SlippageDefaultButton = styled(ButtonBase)<SlippageDefaultProps>(({
32
33
  theme,
33
34
  selected,