@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
@@ -5,7 +5,11 @@ import type { ChangeEventHandler, FocusEventHandler } from 'react';
5
5
  import { useRef, useState } from 'react';
6
6
  import { useTranslation } from 'react-i18next';
7
7
  import { useSettingMonitor } from '../../../hooks';
8
- import { useSettings, useSettingsStore } from '../../../stores';
8
+ import {
9
+ defaultSlippage,
10
+ useSettings,
11
+ useSettingsStore,
12
+ } from '../../../stores';
9
13
  import { formatSlippage } from '../../../utils';
10
14
  import { BadgedValue, SettingCardExpandable } from '../SettingsCard';
11
15
  import {
@@ -15,8 +19,6 @@ import {
15
19
  SlippageLimitsWarningContainer,
16
20
  } from './SlippageSettings.style';
17
21
 
18
- const slippageDefault = '0.5';
19
-
20
22
  export const SlippageSettings: React.FC = () => {
21
23
  const { t } = useTranslation();
22
24
  const { isSlippageOutsideRecommendedLimits, isSlippageChanged } =
@@ -27,7 +29,7 @@ export const SlippageSettings: React.FC = () => {
27
29
  const [focused, setFocused] = useState<'input' | 'button' | undefined>();
28
30
 
29
31
  const handleDefaultClick = () => {
30
- setValue('slippage', formatSlippage(slippageDefault, defaultValue.current));
32
+ setValue('slippage', formatSlippage(defaultSlippage, defaultValue.current));
31
33
  };
32
34
 
33
35
  const handleInputUpdate: ChangeEventHandler<HTMLInputElement> = (event) => {
@@ -35,7 +37,7 @@ export const SlippageSettings: React.FC = () => {
35
37
 
36
38
  setValue(
37
39
  'slippage',
38
- formatSlippage(value || slippageDefault, defaultValue.current, true),
40
+ formatSlippage(value || defaultSlippage, defaultValue.current, true),
39
41
  );
40
42
  };
41
43
 
@@ -46,12 +48,12 @@ export const SlippageSettings: React.FC = () => {
46
48
 
47
49
  setValue(
48
50
  'slippage',
49
- formatSlippage(value || slippageDefault, defaultValue.current),
51
+ formatSlippage(value || defaultSlippage, defaultValue.current),
50
52
  );
51
53
  };
52
54
 
53
55
  const customInputValue =
54
- !slippage || slippage === slippageDefault ? '' : slippage;
56
+ !slippage || slippage === defaultSlippage ? '' : slippage;
55
57
 
56
58
  const badgeColor = isSlippageOutsideRecommendedLimits
57
59
  ? 'warning'
@@ -73,7 +75,7 @@ export const SlippageSettings: React.FC = () => {
73
75
  <Box mt={1.5}>
74
76
  <SettingsFieldSet>
75
77
  <SlippageDefaultButton
76
- selected={slippageDefault === slippage && focused !== 'input'}
78
+ selected={defaultSlippage === slippage && focused !== 'input'}
77
79
  onFocus={() => {
78
80
  setFocused('button');
79
81
  }}
@@ -83,10 +85,10 @@ export const SlippageSettings: React.FC = () => {
83
85
  onClick={handleDefaultClick}
84
86
  disableRipple
85
87
  >
86
- {slippageDefault}
88
+ {defaultSlippage}
87
89
  </SlippageDefaultButton>
88
90
  <SlippageCustomInput
89
- selected={slippageDefault !== slippage && focused !== 'button'}
91
+ selected={defaultSlippage !== slippage && focused !== 'button'}
90
92
  placeholder={focused === 'input' ? '' : t('settings.custom')}
91
93
  inputProps={{
92
94
  inputMode: 'decimal',
@@ -3,6 +3,7 @@ import ErrorRoundedIcon from '@mui/icons-material/ErrorRounded';
3
3
  import InfoRoundedIcon from '@mui/icons-material/InfoRounded';
4
4
  import WarningRoundedIcon from '@mui/icons-material/WarningRounded';
5
5
  import { Box, Button, Typography } from '@mui/material';
6
+ import { useQueryClient } from '@tanstack/react-query';
6
7
  import { useEffect, useRef } from 'react';
7
8
  import { useTranslation } from 'react-i18next';
8
9
  import type { BottomSheetBase } from '../../components/BottomSheet';
@@ -36,7 +37,7 @@ export const StatusBottomSheet: React.FC<RouteExecution> = ({
36
37
  const { t } = useTranslation();
37
38
  const { navigateBack, navigate } = useNavigateBack();
38
39
  const ref = useRef<BottomSheetBase>(null);
39
- const { getChainById } = useAvailableChains();
40
+ const queryClient = useQueryClient();
40
41
  const { setFieldValue } = useFieldActions();
41
42
  const {
42
43
  subvariant,
@@ -44,6 +45,7 @@ export const StatusBottomSheet: React.FC<RouteExecution> = ({
44
45
  contractSecondaryComponent,
45
46
  contractCompactComponent,
46
47
  } = useWidgetConfig();
48
+ const { getChainById } = useAvailableChains();
47
49
 
48
50
  const toToken = {
49
51
  ...(route.steps.at(-1)?.execution?.toToken ?? route.toToken),
@@ -54,22 +56,25 @@ export const StatusBottomSheet: React.FC<RouteExecution> = ({
54
56
  ),
55
57
  };
56
58
 
59
+ const toChain = getChainById(toToken.chainId);
60
+
57
61
  const { token, refetch, refetchNewBalance, refetchAllBalances } =
58
- useTokenBalance(route.toAddress, toToken);
62
+ useTokenBalance(route.toAddress, toToken, toChain);
59
63
 
60
- const clearFromAmount = () => {
64
+ const invalidateQueries = () => {
61
65
  refetchAllBalances();
62
66
  setFieldValue('fromAmount', '');
63
67
  setFieldValue('toAmount', '');
68
+ queryClient.invalidateQueries({ queryKey: ['transaction-history'] });
64
69
  };
65
70
 
66
71
  const handleDone = () => {
67
- clearFromAmount();
72
+ invalidateQueries();
68
73
  navigateBack();
69
74
  };
70
75
 
71
76
  const handlePartialDone = () => {
72
- clearFromAmount();
77
+ invalidateQueries();
73
78
  if (
74
79
  toToken.chainId !== route.toToken.chainId &&
75
80
  toToken.address !== route.toToken.address
@@ -92,7 +97,7 @@ export const StatusBottomSheet: React.FC<RouteExecution> = ({
92
97
  };
93
98
 
94
99
  const handleClose = () => {
95
- clearFromAmount();
100
+ invalidateQueries();
96
101
  ref.current?.close();
97
102
  };
98
103
 
@@ -127,7 +132,7 @@ export const StatusBottomSheet: React.FC<RouteExecution> = ({
127
132
  primaryMessage = t('success.message.exchangeSuccessful', {
128
133
  amount: formatTokenAmount(token.amount, token.decimals),
129
134
  tokenSymbol: token.symbol,
130
- chainName: getChainById(token.chainId)?.name,
135
+ chainName: toChain?.name,
131
136
  walletAddress: shortenAddress(route.toAddress),
132
137
  });
133
138
  }
@@ -144,7 +149,7 @@ export const StatusBottomSheet: React.FC<RouteExecution> = ({
144
149
  secondaryMessage = t('success.message.exchangeSuccessful', {
145
150
  amount: formatTokenAmount(token.amount, token.decimals),
146
151
  tokenSymbol: token.symbol,
147
- chainName: getChainById(token.chainId)?.name,
152
+ chainName: toChain?.name,
148
153
  walletAddress: shortenAddress(route.toAddress),
149
154
  });
150
155
  }
@@ -161,7 +166,7 @@ export const StatusBottomSheet: React.FC<RouteExecution> = ({
161
166
  secondaryMessage = t('success.message.exchangeSuccessful', {
162
167
  amount: formatTokenAmount(token.amount, token.decimals),
163
168
  tokenSymbol: token.symbol,
164
- chainName: getChainById(token.chainId)?.name,
169
+ chainName: toChain?.name,
165
170
  walletAddress: shortenAddress(route.toAddress),
166
171
  });
167
172
  }
@@ -4,8 +4,8 @@ import { useMemo } from 'react';
4
4
  import { I18nextProvider, initReactI18next } from 'react-i18next';
5
5
  import * as supportedLanguages from '../../i18n';
6
6
  import { useSettings } from '../../stores';
7
- import { deepMerge } from '../../utils';
8
- import { isItemAllowed, useWidgetConfig } from '../WidgetProvider';
7
+ import { deepMerge, isItemAllowed } from '../../utils';
8
+ import { useWidgetConfig } from '../WidgetProvider';
9
9
  import type { LanguageKey, LanguageTranslationResources } from './types';
10
10
 
11
11
  export const I18nProvider: React.FC<React.PropsWithChildren> = ({
@@ -55,6 +55,7 @@ export const I18nProvider: React.FC<React.PropsWithChildren> = ({
55
55
  detection: {
56
56
  caches: [],
57
57
  },
58
+ returnEmptyString: false,
58
59
  });
59
60
 
60
61
  i18n.use(initReactI18next).init();
@@ -0,0 +1,130 @@
1
+ import {
2
+ alpha,
3
+ binance,
4
+ bitget,
5
+ bitpie,
6
+ block,
7
+ brave,
8
+ createCoinbaseConnector,
9
+ createWalletConnectConnector,
10
+ dcent,
11
+ exodus,
12
+ frame,
13
+ frontier,
14
+ gate,
15
+ hyperpay,
16
+ imtoken,
17
+ liquality,
18
+ okx,
19
+ oneinch,
20
+ ownbit,
21
+ rabby,
22
+ safepal,
23
+ status,
24
+ taho,
25
+ tokenary,
26
+ tokenpocket,
27
+ trust,
28
+ xdefi,
29
+ } from '@lifi/wallet-management';
30
+ import { useMemo, type FC, type PropsWithChildren } from 'react';
31
+ import type { Chain } from 'viem';
32
+ import { createClient } from 'viem';
33
+ import type { CreateConnectorFn } from 'wagmi';
34
+ import { WagmiProvider, createConfig, http } from 'wagmi';
35
+ import { mainnet } from 'wagmi/chains';
36
+ import { defaultWalletConnectProjectId } from '../../config/walletConnect';
37
+ import { useAvailableChains } from '../../hooks';
38
+ import { LiFiToolLogo } from '../../icons';
39
+ import { useWidgetConfig } from '../WidgetProvider';
40
+ import { formatChain } from './utils';
41
+
42
+ const connectors: Record<string, CreateConnectorFn | undefined> = {
43
+ walletConnect: undefined,
44
+ coinbase: undefined,
45
+ bitget,
46
+ gate,
47
+ exodus,
48
+ taho,
49
+ binance,
50
+ frontier,
51
+ okx,
52
+ trust,
53
+ status,
54
+ alpha,
55
+ block,
56
+ bitpie,
57
+ brave,
58
+ dcent,
59
+ frame,
60
+ hyperpay,
61
+ imtoken,
62
+ liquality,
63
+ ownbit,
64
+ tokenpocket,
65
+ xdefi,
66
+ oneinch,
67
+ tokenary,
68
+ safepal,
69
+ rabby,
70
+ };
71
+
72
+ export const EVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
73
+ const { walletConfig } = useWidgetConfig();
74
+ const { chains } = useAvailableChains();
75
+
76
+ const wagmiConfig = useMemo(() => {
77
+ const _chains: [Chain, ...Chain[]] = chains?.length
78
+ ? (chains.map(formatChain) as [Chain, ...Chain[]])
79
+ : [mainnet];
80
+ // Add ENS contracts
81
+ const _mainnet = _chains.find((chain) => chain.id === mainnet.id);
82
+ if (_mainnet) {
83
+ _mainnet.contracts = mainnet.contracts;
84
+ }
85
+
86
+ if (!connectors['walletConnect']) {
87
+ const params = walletConfig?.walletConnect ?? {
88
+ projectId: defaultWalletConnectProjectId,
89
+ };
90
+ connectors['walletConnect'] = createWalletConnectConnector(params);
91
+ }
92
+ if (!connectors['coinbase']) {
93
+ const params = walletConfig?.coinbase ?? {
94
+ appName: 'LI.FI',
95
+ appLogoUrl: LiFiToolLogo,
96
+ };
97
+ connectors['coinbase'] = createCoinbaseConnector(params);
98
+ }
99
+
100
+ const wagmiConfig = createConfig({
101
+ chains: _chains,
102
+ connectors: Object.values(connectors) as CreateConnectorFn[],
103
+ client({ chain }) {
104
+ return createClient({ chain, transport: http() });
105
+ },
106
+ // transports: _chains.reduce(
107
+ // (transports, chain) => {
108
+ // transports[chain.id] = http();
109
+ // return transports;
110
+ // },
111
+ // {} as Record<number, Transport>,
112
+ // ),
113
+
114
+ // Workaround for Wagmi config re-creation after we load chains.
115
+ // Internal Wagmi hydration logic doesn't allow the safe creation of new configs in runtime.
116
+ ssr: !chains?.length,
117
+ });
118
+
119
+ return wagmiConfig;
120
+ }, [chains, walletConfig?.coinbase, walletConfig?.walletConnect]);
121
+
122
+ return (
123
+ <WagmiProvider
124
+ config={wagmiConfig}
125
+ reconnectOnMount={Boolean(chains?.length)}
126
+ >
127
+ {children}
128
+ </WagmiProvider>
129
+ );
130
+ };
@@ -0,0 +1,3 @@
1
+ import { createContext } from 'react';
2
+
3
+ export const EVMExternalContext = createContext<boolean>(false);
@@ -1,119 +1,26 @@
1
- import {
2
- alpha,
3
- binance,
4
- bitget,
5
- bitpie,
6
- block,
7
- brave,
8
- coinbase,
9
- dcent,
10
- exodus,
11
- frame,
12
- frontier,
13
- gate,
14
- hyperpay,
15
- imtoken,
16
- liquality,
17
- okx,
18
- oneinch,
19
- ownbit,
20
- rabby,
21
- safepal,
22
- status,
23
- taho,
24
- tokenary,
25
- tokenpocket,
26
- trust,
27
- walletConnect,
28
- xdefi,
29
- } from '@lifi/wallet-management';
30
- import { useContext, useMemo, type FC, type PropsWithChildren } from 'react';
31
- import type { Chain } from 'viem';
32
- import { createClient } from 'viem';
33
- import { WagmiContext, WagmiProvider, createConfig, http } from 'wagmi';
34
- import { mainnet } from 'wagmi/chains';
35
- import { useAvailableChains } from '../../hooks';
36
- import { formatChain } from './utils';
1
+ import { ChainType } from '@lifi/sdk';
2
+ import { useContext, type FC, type PropsWithChildren } from 'react';
3
+ import { WagmiContext } from 'wagmi';
4
+ import { isItemAllowed } from '../../utils';
5
+ import { useWidgetConfig } from '../WidgetProvider';
6
+ import { EVMBaseProvider } from './EVMBaseProvider';
7
+ import { EVMExternalContext } from './EVMExternalContext';
37
8
 
38
- const connectors = [
39
- walletConnect,
40
- coinbase,
41
- bitget,
42
- gate,
43
- exodus,
44
- taho,
45
- binance,
46
- frontier,
47
- okx,
48
- trust,
49
- status,
50
- alpha,
51
- block,
52
- bitpie,
53
- brave,
54
- dcent,
55
- frame,
56
- hyperpay,
57
- imtoken,
58
- liquality,
59
- ownbit,
60
- tokenpocket,
61
- xdefi,
62
- oneinch,
63
- tokenary,
64
- safepal,
65
- rabby,
66
- ];
9
+ export function useInWagmiContext(): boolean {
10
+ const { chains } = useWidgetConfig();
11
+ const context = useContext(WagmiContext);
12
+
13
+ return Boolean(context) && isItemAllowed(ChainType.EVM, chains?.types);
14
+ }
67
15
 
68
16
  export const EVMProvider: FC<PropsWithChildren> = ({ children }) => {
69
17
  const inWagmiContext = useInWagmiContext();
18
+
70
19
  return inWagmiContext ? (
71
- children
20
+ <EVMExternalContext.Provider value={inWagmiContext}>
21
+ {children}
22
+ </EVMExternalContext.Provider>
72
23
  ) : (
73
24
  <EVMBaseProvider>{children}</EVMBaseProvider>
74
25
  );
75
26
  };
76
-
77
- export const EVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
78
- const { chains } = useAvailableChains();
79
-
80
- const wagmiConfig = useMemo(() => {
81
- const _chains: [Chain, ...Chain[]] = chains?.length
82
- ? (chains.map(formatChain) as [Chain, ...Chain[]])
83
- : [mainnet];
84
- // Add ENS contracts
85
- const _mainnet = _chains.find((chain) => chain.id === mainnet.id);
86
- if (_mainnet) {
87
- _mainnet.contracts = mainnet.contracts;
88
- }
89
- const wagmiConfig = createConfig({
90
- chains: _chains,
91
- connectors: connectors,
92
- client({ chain }) {
93
- return createClient({ chain, transport: http() });
94
- },
95
- // transports: _chains.reduce(
96
- // (transports, chain) => {
97
- // transports[chain.id] = http();
98
- // return transports;
99
- // },
100
- // {} as Record<number, Transport>,
101
- // ),
102
- });
103
- return wagmiConfig;
104
- }, [chains]);
105
-
106
- return (
107
- <WagmiProvider
108
- config={wagmiConfig}
109
- reconnectOnMount={Boolean(chains?.length)}
110
- >
111
- {children}
112
- </WagmiProvider>
113
- );
114
- };
115
-
116
- function useInWagmiContext(): boolean {
117
- const context = useContext(WagmiContext);
118
- return Boolean(context);
119
- }
@@ -1,17 +1,19 @@
1
- import { EVM, Solana, config } from '@lifi/sdk';
1
+ import { EVM, SDKProvider, Solana, config } from '@lifi/sdk';
2
2
  import type { WalletAdapter } from '@solana/wallet-adapter-base';
3
3
  import { useWallet } from '@solana/wallet-adapter-react';
4
4
  import { getWalletClient, switchChain } from '@wagmi/core';
5
5
  import { useEffect } from 'react';
6
6
  import { useConfig } from 'wagmi';
7
+ import { useWidgetConfig } from '../WidgetProvider';
7
8
 
8
9
  export const SDKProviders = () => {
10
+ const { sdkConfig } = useWidgetConfig();
9
11
  const { wallet } = useWallet();
10
12
  const wagmiConfig = useConfig();
11
13
 
12
14
  useEffect(() => {
13
15
  // Configure SDK Providers
14
- config.setProviders([
16
+ const providers: SDKProvider[] = [
15
17
  EVM({
16
18
  getWalletClient: () => getWalletClient(wagmiConfig),
17
19
  switchChain: async (chainId: number) => {
@@ -19,13 +21,21 @@ export const SDKProviders = () => {
19
21
  return getWalletClient(wagmiConfig, { chainId: chain.id });
20
22
  },
21
23
  }),
22
- Solana({
23
- async getWalletAdapter() {
24
- return wallet?.adapter as WalletAdapter;
25
- },
26
- }),
27
- ]);
28
- }, [wagmiConfig, wallet?.adapter]);
24
+ ];
25
+ if (wallet?.adapter) {
26
+ providers.push(
27
+ Solana({
28
+ async getWalletAdapter() {
29
+ return wallet?.adapter as WalletAdapter;
30
+ },
31
+ }),
32
+ );
33
+ }
34
+ if (sdkConfig?.providers?.length) {
35
+ providers.push(...sdkConfig?.providers);
36
+ }
37
+ config.setProviders(providers);
38
+ }, [sdkConfig?.providers, wagmiConfig, wallet?.adapter]);
29
39
 
30
40
  return null;
31
41
  };
@@ -1,12 +1,11 @@
1
1
  import type { Adapter } from '@solana/wallet-adapter-base';
2
2
  import { WalletAdapterNetwork } from '@solana/wallet-adapter-base';
3
3
  import {
4
- ConnectionContext,
5
4
  ConnectionProvider,
6
5
  WalletProvider,
7
6
  } from '@solana/wallet-adapter-react';
8
7
  import { clusterApiUrl } from '@solana/web3.js';
9
- import { useContext, type FC, type PropsWithChildren } from 'react';
8
+ import { type FC, type PropsWithChildren } from 'react';
10
9
 
11
10
  const endpoint = clusterApiUrl(WalletAdapterNetwork.Mainnet);
12
11
  /**
@@ -23,16 +22,7 @@ const endpoint = clusterApiUrl(WalletAdapterNetwork.Mainnet);
23
22
  */
24
23
  const wallets: Adapter[] = [];
25
24
 
26
- export const SolanaProvider: FC<PropsWithChildren> = ({ children }) => {
27
- const inSolanaContext = useInSolanaContext();
28
- return inSolanaContext ? (
29
- children
30
- ) : (
31
- <SolanaBaseProvider>{children}</SolanaBaseProvider>
32
- );
33
- };
34
-
35
- export const SolanaBaseProvider: FC<PropsWithChildren> = ({ children }) => {
25
+ export const SVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
36
26
  return (
37
27
  <ConnectionProvider endpoint={endpoint}>
38
28
  <WalletProvider wallets={wallets} autoConnect>
@@ -41,8 +31,3 @@ export const SolanaBaseProvider: FC<PropsWithChildren> = ({ children }) => {
41
31
  </ConnectionProvider>
42
32
  );
43
33
  };
44
-
45
- function useInSolanaContext(): boolean {
46
- const context = useContext(ConnectionContext);
47
- return Boolean(context?.connection);
48
- }
@@ -0,0 +1,3 @@
1
+ import { createContext } from 'react';
2
+
3
+ export const SVMExternalContext = createContext<boolean>(false);
@@ -0,0 +1,27 @@
1
+ import { ChainType } from '@lifi/sdk';
2
+ import { ConnectionContext } from '@solana/wallet-adapter-react';
3
+ import { useContext, type FC, type PropsWithChildren } from 'react';
4
+ import { isItemAllowed } from '../../utils';
5
+ import { useWidgetConfig } from '../WidgetProvider';
6
+ import { SVMBaseProvider } from './SVMBaseProvider';
7
+ import { SVMExternalContext } from './SVMExternalContext';
8
+
9
+ export function useInSolanaContext(): boolean {
10
+ const { chains } = useWidgetConfig();
11
+ const context = useContext(ConnectionContext);
12
+ return (
13
+ Boolean(context?.connection) || !isItemAllowed(ChainType.SVM, chains?.types)
14
+ );
15
+ }
16
+
17
+ export const SVMProvider: FC<PropsWithChildren> = ({ children }) => {
18
+ const inSolanaContext = useInSolanaContext();
19
+
20
+ return inSolanaContext ? (
21
+ <SVMExternalContext.Provider value={inSolanaContext}>
22
+ {children}
23
+ </SVMExternalContext.Provider>
24
+ ) : (
25
+ <SVMBaseProvider>{children}</SVMBaseProvider>
26
+ );
27
+ };
@@ -1,15 +1,15 @@
1
1
  import { type FC, type PropsWithChildren } from 'react';
2
2
  import { EVMProvider } from './EVMProvider';
3
3
  import { SDKProviders } from './SDKProviders';
4
- import { SolanaProvider } from './SolanaProvider';
4
+ import { SVMProvider } from './SVMProvider';
5
5
 
6
6
  export const WalletProvider: FC<PropsWithChildren> = ({ children }) => {
7
7
  return (
8
- <SolanaProvider>
9
- <EVMProvider>
8
+ <EVMProvider>
9
+ <SVMProvider>
10
10
  <SDKProviders />
11
11
  {children}
12
- </EVMProvider>
13
- </SolanaProvider>
12
+ </SVMProvider>
13
+ </EVMProvider>
14
14
  );
15
15
  };
@@ -1,2 +1,3 @@
1
1
  export * from './WalletProvider';
2
+ export * from './useHasExternalWalletProvider';
2
3
  export * from './utils';
@@ -0,0 +1,30 @@
1
+ import { ChainType } from '@lifi/sdk';
2
+ import { useContext, useMemo } from 'react';
3
+ import { EVMExternalContext } from './EVMExternalContext';
4
+ import { SVMExternalContext } from './SVMExternalContext';
5
+
6
+ interface ExternalWalletProvider {
7
+ hasExternalProvider: boolean;
8
+ providers: ChainType[];
9
+ }
10
+
11
+ export function useHasExternalWalletProvider(): ExternalWalletProvider {
12
+ const hasExternalEVMContext = useContext(EVMExternalContext);
13
+ const hasExternalSVMContext = useContext(SVMExternalContext);
14
+
15
+ const providers = useMemo(() => {
16
+ const providers = [];
17
+ if (hasExternalEVMContext) {
18
+ providers.push(ChainType.EVM);
19
+ }
20
+ if (hasExternalSVMContext) {
21
+ providers.push(ChainType.SVM);
22
+ }
23
+ return providers;
24
+ }, [hasExternalEVMContext, hasExternalSVMContext]);
25
+
26
+ return {
27
+ hasExternalProvider: hasExternalEVMContext || hasExternalSVMContext,
28
+ providers,
29
+ };
30
+ }
@@ -1,4 +1,4 @@
1
- import { config, createConfig, type SDKOptions } from '@lifi/sdk';
1
+ import { config, createConfig, type SDKConfig } from '@lifi/sdk';
2
2
  import { createContext, useContext, useId, useMemo } from 'react';
3
3
  import { version } from '../../config/version';
4
4
  import { setDefaultSettings } from '../../stores';
@@ -69,7 +69,7 @@ export const WidgetProvider: React.FC<
69
69
  setDefaultSettings(value);
70
70
 
71
71
  // Configure SDK
72
- const _config: SDKOptions = {
72
+ const _config: SDKConfig = {
73
73
  ...widgetConfig.sdkConfig,
74
74
  apiKey: widgetConfig.apiKey,
75
75
  integrator: widgetConfig.integrator ?? window?.location.hostname,
@@ -1,3 +1,2 @@
1
- export * from './types';
2
- export * from './utils';
3
1
  export * from './WidgetProvider';
2
+ export * from './types';