@lifi/widget 4.3.1 → 4.5.0

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 (511) hide show
  1. package/dist/esm/App.d.ts +0 -1
  2. package/dist/esm/App.d.ts.map +1 -1
  3. package/dist/esm/App.js.map +1 -1
  4. package/dist/esm/AppDrawer.d.ts +1 -1
  5. package/dist/esm/AppDrawer.d.ts.map +1 -1
  6. package/dist/esm/AppDrawer.js.map +1 -1
  7. package/dist/esm/AppLayout.js.map +1 -1
  8. package/dist/esm/AppProvider.js.map +1 -1
  9. package/dist/esm/components/ActionRow/ActionRow.d.ts +13 -0
  10. package/dist/esm/components/ActionRow/ActionRow.d.ts.map +1 -0
  11. package/dist/esm/components/ActionRow/ActionRow.js.map +1 -1
  12. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  13. package/dist/esm/components/AmountInput/AmountInput.style.d.ts +9 -0
  14. package/dist/esm/components/AmountInput/AmountInput.style.d.ts.map +1 -0
  15. package/dist/esm/components/AmountInput/AmountInputEndAdornment.d.ts +7 -0
  16. package/dist/esm/components/AmountInput/AmountInputEndAdornment.d.ts.map +1 -0
  17. package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
  18. package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
  19. package/dist/esm/components/AmountInput/PriceFormHelperText.style.d.ts +7 -0
  20. package/dist/esm/components/AmountInput/PriceFormHelperText.style.d.ts.map +1 -0
  21. package/dist/esm/components/AmountInputCard/AmountInputCardPair.js.map +1 -1
  22. package/dist/esm/components/AmountInputCard/BalanceDisplay.js.map +1 -1
  23. package/dist/esm/components/AmountInputCard/FiatValueToggle.js.map +1 -1
  24. package/dist/esm/components/AmountInputCard/PercentageChips.js.map +1 -1
  25. package/dist/esm/components/AmountInputCard/ReceiveAmountCard.js.map +1 -1
  26. package/dist/esm/components/AmountInputCard/SendAmountCard.js.map +1 -1
  27. package/dist/esm/components/AppContainer.js.map +1 -1
  28. package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
  29. package/dist/esm/components/Avatar/Avatar.d.ts +12 -0
  30. package/dist/esm/components/Avatar/Avatar.d.ts.map +1 -0
  31. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  32. package/dist/esm/components/Avatar/ChainBadgeContent.js.map +1 -1
  33. package/dist/esm/components/Avatar/TokenAvatar.d.ts +14 -0
  34. package/dist/esm/components/Avatar/TokenAvatar.d.ts.map +1 -0
  35. package/dist/esm/components/Avatar/TokenAvatar.js.map +1 -1
  36. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.d.ts +6 -0
  37. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.d.ts.map +1 -0
  38. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  39. package/dist/esm/components/BaseTransactionButton/types.d.ts +14 -0
  40. package/dist/esm/components/BaseTransactionButton/types.d.ts.map +1 -0
  41. package/dist/esm/components/BottomSheet/types.d.ts +11 -0
  42. package/dist/esm/components/BottomSheet/types.d.ts.map +1 -0
  43. package/dist/esm/components/ButtonTertiary.d.ts +7 -0
  44. package/dist/esm/components/ButtonTertiary.d.ts.map +1 -0
  45. package/dist/esm/components/Card/Card.d.ts +12 -0
  46. package/dist/esm/components/Card/Card.d.ts.map +1 -0
  47. package/dist/esm/components/Card/CardButton.js.map +1 -1
  48. package/dist/esm/components/Card/CardIconButton.d.ts +7 -0
  49. package/dist/esm/components/Card/CardIconButton.d.ts.map +1 -0
  50. package/dist/esm/components/Card/CardTitle.d.ts +9 -0
  51. package/dist/esm/components/Card/CardTitle.d.ts.map +1 -0
  52. package/dist/esm/components/Card/InputCard.d.ts +7 -0
  53. package/dist/esm/components/Card/InputCard.d.ts.map +1 -0
  54. package/dist/esm/components/ChainSelect/ChainSelect.d.ts +7 -0
  55. package/dist/esm/components/ChainSelect/ChainSelect.d.ts.map +1 -0
  56. package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
  57. package/dist/esm/components/ChainSelect/ChainSelect.style.d.ts +10 -0
  58. package/dist/esm/components/ChainSelect/ChainSelect.style.d.ts.map +1 -0
  59. package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
  60. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  61. package/dist/esm/components/Chains/ChainListItem.js.map +1 -1
  62. package/dist/esm/components/Chains/ChainsExpanded.js.map +1 -1
  63. package/dist/esm/components/Chains/PinChainButton.js.map +1 -1
  64. package/dist/esm/components/Chains/SelectChainExpansionContent.js.map +1 -1
  65. package/dist/esm/components/Chains/SelectChainPageContent.js.map +1 -1
  66. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  67. package/dist/esm/components/ContextMenu.js.map +1 -1
  68. package/dist/esm/components/ContractComponent/ContractComponent.d.ts +7 -0
  69. package/dist/esm/components/ContractComponent/ContractComponent.d.ts.map +1 -0
  70. package/dist/esm/components/ContractComponent/ItemPrice.d.ts +0 -1
  71. package/dist/esm/components/ContractComponent/ItemPrice.d.ts.map +1 -1
  72. package/dist/esm/components/ContractComponent/NFT/NFT.d.ts +0 -1
  73. package/dist/esm/components/ContractComponent/NFT/NFT.d.ts.map +1 -1
  74. package/dist/esm/components/ContractComponent/NFT/NFTBase.d.ts +0 -1
  75. package/dist/esm/components/ContractComponent/NFT/NFTBase.d.ts.map +1 -1
  76. package/dist/esm/components/ContractComponent/NFT/NFTBase.js.map +1 -1
  77. package/dist/esm/components/ContractComponent/NFT/types.d.ts +0 -1
  78. package/dist/esm/components/ContractComponent/NFT/types.d.ts.map +1 -1
  79. package/dist/esm/components/ExecutionStatusCard/ExecutionChecklist.js.map +1 -1
  80. package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.d.ts +21 -0
  81. package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.d.ts.map +1 -0
  82. package/dist/esm/components/ExecutionStatusCard/ExecutionStatusCard.js.map +1 -1
  83. package/dist/esm/components/ExecutionStatusCard/StaggeredRevealTypography.js.map +1 -1
  84. package/dist/esm/components/ExecutionStatusCard/StatusIcon.d.ts +16 -0
  85. package/dist/esm/components/ExecutionStatusCard/StatusIcon.d.ts.map +1 -0
  86. package/dist/esm/components/ExecutionStatusCard/StatusIcon.js.map +1 -1
  87. package/dist/esm/components/ExecutionStatusCard/iconKey.js +1 -0
  88. package/dist/esm/components/ExecutionStatusCard/iconKey.js.map +1 -1
  89. package/dist/esm/components/Expansion/Expansion.js.map +1 -1
  90. package/dist/esm/components/Expansion/ExpansionTransition.js.map +1 -1
  91. package/dist/esm/components/FeeBreakdownTooltip.d.ts +13 -0
  92. package/dist/esm/components/FeeBreakdownTooltip.d.ts.map +1 -0
  93. package/dist/esm/components/FeeBreakdownTooltip.js.map +1 -1
  94. package/dist/esm/components/Header/ActivitiesButton.js.map +1 -1
  95. package/dist/esm/components/Header/BackButton.js.map +1 -1
  96. package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
  97. package/dist/esm/components/Header/DisconnectIconButton.js.map +1 -1
  98. package/dist/esm/components/Header/HeaderTabs.js.map +1 -1
  99. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  100. package/dist/esm/components/Header/SettingsButton.js.map +1 -1
  101. package/dist/esm/components/Header/WalletHeader.js.map +1 -1
  102. package/dist/esm/components/Header/WalletMenu.js.map +1 -1
  103. package/dist/esm/components/IconCircle/IconCircle.d.ts +11 -0
  104. package/dist/esm/components/IconCircle/IconCircle.d.ts.map +1 -0
  105. package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
  106. package/dist/esm/components/IconCircle/statusIcons.d.ts +6 -0
  107. package/dist/esm/components/IconCircle/statusIcons.d.ts.map +1 -0
  108. package/dist/esm/components/IconTypography.d.ts +7 -0
  109. package/dist/esm/components/IconTypography.d.ts.map +1 -0
  110. package/dist/esm/components/LimitOrderSettings/LimitOrderSettings.js.map +1 -1
  111. package/dist/esm/components/LimitPriceCard/LimitPriceCard.js.map +1 -1
  112. package/dist/esm/components/LimitPriceCard/LimitPricePresets.js.map +1 -1
  113. package/dist/esm/components/ListItem/ListItemButton.d.ts +7 -0
  114. package/dist/esm/components/ListItem/ListItemButton.d.ts.map +1 -0
  115. package/dist/esm/components/ListItemButton.d.ts +7 -0
  116. package/dist/esm/components/ListItemButton.d.ts.map +1 -0
  117. package/dist/esm/components/Messages/AccountDeployedMessage.js.map +1 -1
  118. package/dist/esm/components/Messages/AccountNotDeployedMessage.js.map +1 -1
  119. package/dist/esm/components/Messages/AlertMessage.js.map +1 -1
  120. package/dist/esm/components/Messages/FundsSufficiencyMessage.js.map +1 -1
  121. package/dist/esm/components/Messages/GasRefuelMessage.js.map +1 -1
  122. package/dist/esm/components/Messages/GasSufficiencyMessage.js.map +1 -1
  123. package/dist/esm/components/Messages/MinFromAmountUSDMessage.js.map +1 -1
  124. package/dist/esm/components/Messages/MissingRouteRequiredAccountMessage.js.map +1 -1
  125. package/dist/esm/components/Messages/WarningMessages.d.ts +11 -0
  126. package/dist/esm/components/Messages/WarningMessages.d.ts.map +1 -0
  127. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  128. package/dist/esm/components/NotFound.js.map +1 -1
  129. package/dist/esm/components/PageContainer.d.ts +12 -0
  130. package/dist/esm/components/PageContainer.d.ts.map +1 -0
  131. package/dist/esm/components/PoweredBy/PoweredBy.d.ts +5 -0
  132. package/dist/esm/components/PoweredBy/PoweredBy.d.ts.map +1 -0
  133. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  134. package/dist/esm/components/ProgressToNextUpdate.d.ts +10 -0
  135. package/dist/esm/components/ProgressToNextUpdate.d.ts.map +1 -0
  136. package/dist/esm/components/ProgressToNextUpdate.js.map +1 -1
  137. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  138. package/dist/esm/components/RouteCard/RouteCard.d.ts +7 -0
  139. package/dist/esm/components/RouteCard/RouteCard.d.ts.map +1 -0
  140. package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
  141. package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
  142. package/dist/esm/components/RouteCard/RouteCardSkeleton.d.ts +7 -0
  143. package/dist/esm/components/RouteCard/RouteCardSkeleton.d.ts.map +1 -0
  144. package/dist/esm/components/RouteCard/RouteCardSkeleton.js.map +1 -1
  145. package/dist/esm/components/RouteCard/RouteDetails.d.ts +10 -0
  146. package/dist/esm/components/RouteCard/RouteDetails.d.ts.map +1 -0
  147. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  148. package/dist/esm/components/RouteCard/RouteDetails.style.d.ts +12 -0
  149. package/dist/esm/components/RouteCard/RouteDetails.style.d.ts.map +1 -0
  150. package/dist/esm/components/RouteCard/RouteNotFoundCard.d.ts +5 -0
  151. package/dist/esm/components/RouteCard/RouteNotFoundCard.d.ts.map +1 -0
  152. package/dist/esm/components/RouteCard/RouteNotFoundCard.js.map +1 -1
  153. package/dist/esm/components/RouteCard/RouteProviderCard.js.map +1 -1
  154. package/dist/esm/components/RouteCard/RouteToken.js.map +1 -1
  155. package/dist/esm/components/RouteCard/RouteTokens.d.ts +11 -0
  156. package/dist/esm/components/RouteCard/RouteTokens.d.ts.map +1 -0
  157. package/dist/esm/components/RouteCard/RouteTokens.js +2 -2
  158. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  159. package/dist/esm/components/RouteCard/types.d.ts +14 -0
  160. package/dist/esm/components/RouteCard/types.d.ts.map +1 -0
  161. package/dist/esm/components/Routes/LimitOrderRoutes.js.map +1 -1
  162. package/dist/esm/components/Routes/Routes.js.map +1 -1
  163. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  164. package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
  165. package/dist/esm/components/Search/SearchInput.d.ts +17 -0
  166. package/dist/esm/components/Search/SearchInput.d.ts.map +1 -0
  167. package/dist/esm/components/Search/SearchInput.js.map +1 -1
  168. package/dist/esm/components/SelectChainAndToken.js.map +1 -1
  169. package/dist/esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  170. package/dist/esm/components/SendToWallet/SendToWalletButton.d.ts +10 -0
  171. package/dist/esm/components/SendToWallet/SendToWalletButton.d.ts.map +1 -0
  172. package/dist/esm/components/SendToWallet/SendToWalletButton.js +15 -6
  173. package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
  174. package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
  175. package/dist/esm/components/SettingsPanel/SettingsPanel.js.map +1 -1
  176. package/dist/esm/components/Skeleton/WidgetSkeleton.d.ts +1 -4
  177. package/dist/esm/components/Skeleton/WidgetSkeleton.d.ts.map +1 -1
  178. package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
  179. package/dist/esm/components/Step/StepActions.js.map +1 -1
  180. package/dist/esm/components/StepActions/SentToWalletRow.d.ts +9 -0
  181. package/dist/esm/components/StepActions/SentToWalletRow.d.ts.map +1 -0
  182. package/dist/esm/components/StepActions/SentToWalletRow.js.map +1 -1
  183. package/dist/esm/components/StepActions/StepActionRow.js.map +1 -1
  184. package/dist/esm/components/StepActions/StepActionRow.style.d.ts +7 -0
  185. package/dist/esm/components/StepActions/StepActionRow.style.d.ts.map +1 -0
  186. package/dist/esm/components/StepActions/StepActionsList.d.ts +12 -0
  187. package/dist/esm/components/StepActions/StepActionsList.d.ts.map +1 -0
  188. package/dist/esm/components/StepActions/StepActionsList.js.map +1 -1
  189. package/dist/esm/components/StepActions/executionRows.d.ts +26 -0
  190. package/dist/esm/components/StepActions/executionRows.d.ts.map +1 -0
  191. package/dist/esm/components/SwapButton/SwapButton.js.map +1 -1
  192. package/dist/esm/components/TextFitter/TextFitter.js.map +1 -1
  193. package/dist/esm/components/Timer/StepStatusTimer.js.map +1 -1
  194. package/dist/esm/components/Token/Token.d.ts +17 -0
  195. package/dist/esm/components/Token/Token.d.ts.map +1 -0
  196. package/dist/esm/components/Token/Token.js.map +1 -1
  197. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  198. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  199. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  200. package/dist/esm/components/TokenList/TokenList.js.map +1 -1
  201. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  202. package/dist/esm/components/TokenList/TokenNotFound.d.ts +6 -0
  203. package/dist/esm/components/TokenList/TokenNotFound.d.ts.map +1 -0
  204. package/dist/esm/components/TokenList/VirtualizedTokenList.d.ts +7 -0
  205. package/dist/esm/components/TokenList/VirtualizedTokenList.d.ts.map +1 -0
  206. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  207. package/dist/esm/components/TokenList/types.d.ts +20 -0
  208. package/dist/esm/components/TokenList/types.d.ts.map +1 -0
  209. package/dist/esm/components/TokenList/useTokenSelect.d.ts +6 -0
  210. package/dist/esm/components/TokenList/useTokenSelect.d.ts.map +1 -0
  211. package/dist/esm/components/TokenPillButton/TokenPillButton.js.map +1 -1
  212. package/dist/esm/components/TokenRate/TokenRate.d.ts +10 -0
  213. package/dist/esm/components/TokenRate/TokenRate.d.ts.map +1 -0
  214. package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
  215. package/dist/esm/components/Tools/ToolItem.js.map +1 -1
  216. package/dist/esm/components/Tools/Tools.js.map +1 -1
  217. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js +1 -0
  218. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  219. package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js +9 -0
  220. package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js.map +1 -1
  221. package/dist/esm/components/TransactionCard/TransactionCard.js.map +1 -1
  222. package/dist/esm/components/TransactionCard/TransactionCard.style.d.ts +8 -0
  223. package/dist/esm/components/TransactionCard/TransactionCard.style.d.ts.map +1 -0
  224. package/dist/esm/components/TransactionCard/TransactionCardSkeleton.js.map +1 -1
  225. package/dist/esm/config/constants.d.ts.map +1 -1
  226. package/dist/esm/config/version.d.ts +1 -1
  227. package/dist/esm/config/version.d.ts.map +1 -1
  228. package/dist/esm/config/version.js +1 -1
  229. package/dist/esm/config/version.js.map +1 -1
  230. package/dist/esm/hooks/useAccountsBalancesData.js +1 -14
  231. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  232. package/dist/esm/hooks/useAddressActivity.d.ts +11 -0
  233. package/dist/esm/hooks/useAddressActivity.d.ts.map +1 -0
  234. package/dist/esm/hooks/useAddressValidation.d.ts +28 -0
  235. package/dist/esm/hooks/useAddressValidation.d.ts.map +1 -0
  236. package/dist/esm/hooks/useAddressValidation.js +6 -1
  237. package/dist/esm/hooks/useAddressValidation.js.map +1 -1
  238. package/dist/esm/hooks/useAvailableChains.d.ts +12 -0
  239. package/dist/esm/hooks/useAvailableChains.d.ts.map +1 -0
  240. package/dist/esm/hooks/useChain.d.ts +10 -0
  241. package/dist/esm/hooks/useChain.d.ts.map +1 -0
  242. package/dist/esm/hooks/useContactSupport.d.ts +5 -0
  243. package/dist/esm/hooks/useContactSupport.d.ts.map +1 -0
  244. package/dist/esm/hooks/useDebouncedWatch.d.ts +6 -0
  245. package/dist/esm/hooks/useDebouncedWatch.d.ts.map +1 -0
  246. package/dist/esm/hooks/useDisplayedTokens.js +48 -0
  247. package/dist/esm/hooks/useDisplayedTokens.js.map +1 -0
  248. package/dist/esm/hooks/useExplorer.d.ts +14 -0
  249. package/dist/esm/hooks/useExplorer.d.ts.map +1 -0
  250. package/dist/esm/hooks/useHeader.d.ts +6 -0
  251. package/dist/esm/hooks/useHeader.d.ts.map +1 -0
  252. package/dist/esm/hooks/useListHeight.d.ts +12 -0
  253. package/dist/esm/hooks/useListHeight.d.ts.map +1 -0
  254. package/dist/esm/hooks/useListHeight.js +1 -0
  255. package/dist/esm/hooks/useListHeight.js.map +1 -1
  256. package/dist/esm/hooks/useNavigateBack.d.ts +5 -0
  257. package/dist/esm/hooks/useNavigateBack.d.ts.map +1 -0
  258. package/dist/esm/hooks/usePacedRouteExecution.js +1 -0
  259. package/dist/esm/hooks/usePacedRouteExecution.js.map +1 -1
  260. package/dist/esm/hooks/useRouteExecution.d.ts +18 -0
  261. package/dist/esm/hooks/useRouteExecution.d.ts.map +1 -0
  262. package/dist/esm/hooks/useRouteExecutionMessage.d.ts +10 -0
  263. package/dist/esm/hooks/useRouteExecutionMessage.d.ts.map +1 -0
  264. package/dist/esm/hooks/useRouteExecutionMessage.js +1 -0
  265. package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
  266. package/dist/esm/hooks/useRoutes.d.ts +32 -0
  267. package/dist/esm/hooks/useRoutes.d.ts.map +1 -0
  268. package/dist/esm/hooks/useRoutes.js +12 -8
  269. package/dist/esm/hooks/useRoutes.js.map +1 -1
  270. package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -1
  271. package/dist/esm/hooks/useToAddressRequirements.d.ts +16 -0
  272. package/dist/esm/hooks/useToAddressRequirements.d.ts.map +1 -0
  273. package/dist/esm/hooks/useToken.d.ts +9 -0
  274. package/dist/esm/hooks/useToken.d.ts.map +1 -0
  275. package/dist/esm/hooks/useTokenAddressBalance.d.ts +11 -0
  276. package/dist/esm/hooks/useTokenAddressBalance.d.ts.map +1 -0
  277. package/dist/esm/hooks/useTokenBalances.d.ts +14 -0
  278. package/dist/esm/hooks/useTokenBalances.d.ts.map +1 -0
  279. package/dist/esm/hooks/useTokenBalances.js +5 -45
  280. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  281. package/dist/esm/hooks/useTokenBalancesQueries.js +5 -3
  282. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  283. package/dist/esm/hooks/useTokenList.d.ts +16 -0
  284. package/dist/esm/hooks/useTokenList.d.ts.map +1 -0
  285. package/dist/esm/hooks/useTokenList.js +31 -0
  286. package/dist/esm/hooks/useTokenList.js.map +1 -0
  287. package/dist/esm/hooks/useTokens.js.map +1 -1
  288. package/dist/esm/hooks/useTools.d.ts +8 -0
  289. package/dist/esm/hooks/useTools.d.ts.map +1 -0
  290. package/dist/esm/hooks/useTransactionDetails.js +1 -3
  291. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  292. package/dist/esm/hooks/useTransactionList.js +1 -0
  293. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  294. package/dist/esm/hooks/useWidgetChains.d.ts +0 -1
  295. package/dist/esm/hooks/useWidgetChains.d.ts.map +1 -1
  296. package/dist/esm/hooks/useWidgetEvents.d.ts +0 -1
  297. package/dist/esm/hooks/useWidgetEvents.d.ts.map +1 -1
  298. package/dist/esm/i18n/en.json +321 -0
  299. package/dist/esm/index.d.ts +1 -0
  300. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js +1 -0
  301. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  302. package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js.map +1 -1
  303. package/dist/esm/pages/LanguagesPage.js.map +1 -1
  304. package/dist/esm/pages/MainPage/LimitPageContent.js.map +1 -1
  305. package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
  306. package/dist/esm/pages/MainPage/MainPageActions.js.map +1 -1
  307. package/dist/esm/pages/MainPage/MainWarningMessages.d.ts +10 -0
  308. package/dist/esm/pages/MainPage/MainWarningMessages.d.ts.map +1 -0
  309. package/dist/esm/pages/RoutePriorityPage.js.map +1 -1
  310. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  311. package/dist/esm/pages/RoutesPage/RoutesPage.style.d.ts +7 -0
  312. package/dist/esm/pages/RoutesPage/RoutesPage.style.d.ts.map +1 -0
  313. package/dist/esm/pages/SelectChainPage/SelectChainPage.d.ts +6 -0
  314. package/dist/esm/pages/SelectChainPage/SelectChainPage.d.ts.map +1 -0
  315. package/dist/esm/pages/SelectChainPage/types.d.ts +8 -0
  316. package/dist/esm/pages/SelectChainPage/types.d.ts.map +1 -0
  317. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  318. package/dist/esm/pages/SelectTokenPage/SearchTokenInput.d.ts +10 -0
  319. package/dist/esm/pages/SelectTokenPage/SearchTokenInput.d.ts.map +1 -0
  320. package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
  321. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  322. package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
  323. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  324. package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
  325. package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
  326. package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js.map +1 -1
  327. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  328. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  329. package/dist/esm/pages/SettingsPage/GasPriceSettings.js.map +1 -1
  330. package/dist/esm/pages/SettingsPage/LanguageSetting.js.map +1 -1
  331. package/dist/esm/pages/SettingsPage/ResetSettingsButton.js.map +1 -1
  332. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js.map +1 -1
  333. package/dist/esm/pages/SettingsPage/SettingsCard/BadgedValue.js.map +1 -1
  334. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  335. package/dist/esm/pages/SettingsPage/SettingsPage.js.map +1 -1
  336. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippagePage.js.map +1 -1
  337. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  338. package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
  339. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  340. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.d.ts +9 -0
  341. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.d.ts.map +1 -0
  342. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
  343. package/dist/esm/pages/TransactionDetailsPage/ReceiptsCard.js.map +1 -1
  344. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  345. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  346. package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js.map +1 -1
  347. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.d.ts +14 -0
  348. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.d.ts.map +1 -0
  349. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  350. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.d.ts +19 -0
  351. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.d.ts.map +1 -0
  352. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  353. package/dist/esm/pages/TransactionPage/ExecutionDoneCard.d.ts +12 -0
  354. package/dist/esm/pages/TransactionPage/ExecutionDoneCard.d.ts.map +1 -0
  355. package/dist/esm/pages/TransactionPage/ExecutionDoneCard.js +1 -0
  356. package/dist/esm/pages/TransactionPage/ExecutionDoneCard.js.map +1 -1
  357. package/dist/esm/pages/TransactionPage/RouteTracker.d.ts +11 -0
  358. package/dist/esm/pages/TransactionPage/RouteTracker.d.ts.map +1 -0
  359. package/dist/esm/pages/TransactionPage/StartTransactionButton.d.ts +6 -0
  360. package/dist/esm/pages/TransactionPage/StartTransactionButton.d.ts.map +1 -0
  361. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.d.ts +15 -0
  362. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.d.ts.map +1 -0
  363. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  364. package/dist/esm/pages/TransactionPage/TransactionContent.js +1 -0
  365. package/dist/esm/pages/TransactionPage/TransactionContent.js.map +1 -1
  366. package/dist/esm/pages/TransactionPage/TransactionDoneButtons.d.ts +12 -0
  367. package/dist/esm/pages/TransactionPage/TransactionDoneButtons.d.ts.map +1 -0
  368. package/dist/esm/pages/TransactionPage/TransactionDoneButtons.js +1 -0
  369. package/dist/esm/pages/TransactionPage/TransactionDoneButtons.js.map +1 -1
  370. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +1 -0
  371. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
  372. package/dist/esm/pages/TransactionPage/TransactionFailedButtons.js.map +1 -1
  373. package/dist/esm/pages/TransactionPage/TransactionPage.js +1 -0
  374. package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
  375. package/dist/esm/pages/TransactionPage/TransactionReview.js.map +1 -1
  376. package/dist/esm/pages/TransactionPage/types.d.ts +9 -0
  377. package/dist/esm/pages/TransactionPage/types.d.ts.map +1 -0
  378. package/dist/esm/pages/TransactionPage/utils.d.ts +6 -0
  379. package/dist/esm/pages/TransactionPage/utils.d.ts.map +1 -0
  380. package/dist/esm/providers/I18nProvider/I18nProvider.d.ts +5 -0
  381. package/dist/esm/providers/I18nProvider/I18nProvider.d.ts.map +1 -0
  382. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  383. package/dist/esm/providers/I18nProvider/types.d.ts +2 -3
  384. package/dist/esm/providers/I18nProvider/types.d.ts.map +1 -1
  385. package/dist/esm/providers/QueryClientProvider.d.ts +6 -0
  386. package/dist/esm/providers/QueryClientProvider.d.ts.map +1 -0
  387. package/dist/esm/providers/SDKClientProvider.d.ts +8 -0
  388. package/dist/esm/providers/SDKClientProvider.d.ts.map +1 -0
  389. package/dist/esm/providers/WalletProvider/WalletProvider.d.ts +10 -0
  390. package/dist/esm/providers/WalletProvider/WalletProvider.d.ts.map +1 -0
  391. package/dist/esm/providers/WalletProvider/WalletProvider.js +8 -3
  392. package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
  393. package/dist/esm/providers/WidgetProvider/WidgetProvider.d.ts +8 -0
  394. package/dist/esm/providers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
  395. package/dist/esm/providers/WidgetProvider/types.d.ts +11 -0
  396. package/dist/esm/providers/WidgetProvider/types.d.ts.map +1 -0
  397. package/dist/esm/shared.d.ts +107 -0
  398. package/dist/esm/shared.js +105 -0
  399. package/dist/esm/stores/StoreProvider.d.ts +7 -0
  400. package/dist/esm/stores/StoreProvider.d.ts.map +1 -0
  401. package/dist/esm/stores/StoreProvider.js.map +1 -1
  402. package/dist/esm/stores/bookmarks/BookmarkStore.d.ts +7 -0
  403. package/dist/esm/stores/bookmarks/BookmarkStore.d.ts.map +1 -0
  404. package/dist/esm/stores/bookmarks/types.d.ts +0 -1
  405. package/dist/esm/stores/bookmarks/types.d.ts.map +1 -1
  406. package/dist/esm/stores/chains/ChainOrderStore.d.ts +8 -0
  407. package/dist/esm/stores/chains/ChainOrderStore.d.ts.map +1 -0
  408. package/dist/esm/stores/chains/types.d.ts +27 -0
  409. package/dist/esm/stores/chains/types.d.ts.map +1 -0
  410. package/dist/esm/stores/form/FormStore.js.map +1 -1
  411. package/dist/esm/stores/form/FormUpdater.js.map +1 -1
  412. package/dist/esm/stores/form/createFormStore.js +1 -0
  413. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  414. package/dist/esm/stores/form/types.d.ts +7 -7
  415. package/dist/esm/stores/form/types.d.ts.map +1 -1
  416. package/dist/esm/stores/form/types.js.map +1 -1
  417. package/dist/esm/stores/form/useFieldActions.d.ts +0 -1
  418. package/dist/esm/stores/form/useFieldActions.d.ts.map +1 -1
  419. package/dist/esm/stores/form/useFieldValues.d.ts +0 -1
  420. package/dist/esm/stores/form/useFieldValues.d.ts.map +1 -1
  421. package/dist/esm/stores/header/types.d.ts +20 -0
  422. package/dist/esm/stores/header/types.d.ts.map +1 -0
  423. package/dist/esm/stores/header/useHeaderStore.d.ts +8 -0
  424. package/dist/esm/stores/header/useHeaderStore.d.ts.map +1 -0
  425. package/dist/esm/stores/inputMode/useInputModeStore.d.ts +13 -0
  426. package/dist/esm/stores/inputMode/useInputModeStore.d.ts.map +1 -0
  427. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js.map +1 -1
  428. package/dist/esm/stores/routes/RouteExecutionStore.d.ts +9 -0
  429. package/dist/esm/stores/routes/RouteExecutionStore.d.ts.map +1 -0
  430. package/dist/esm/stores/routes/createRouteExecutionStore.js +1 -0
  431. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  432. package/dist/esm/stores/routes/types.d.ts +24 -0
  433. package/dist/esm/stores/routes/types.d.ts.map +1 -0
  434. package/dist/esm/stores/routes/types.js +14 -0
  435. package/dist/esm/stores/routes/types.js.map +1 -0
  436. package/dist/esm/stores/routes/useRouteExecutionIndicator.js +1 -0
  437. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  438. package/dist/esm/stores/routes/utils.d.ts +9 -0
  439. package/dist/esm/stores/routes/utils.d.ts.map +1 -0
  440. package/dist/esm/stores/settings/SettingsStore.d.ts +8 -0
  441. package/dist/esm/stores/settings/SettingsStore.d.ts.map +1 -0
  442. package/dist/esm/stores/settings/types.d.ts +5 -2
  443. package/dist/esm/stores/settings/types.d.ts.map +1 -1
  444. package/dist/esm/stores/types.d.ts +9 -0
  445. package/dist/esm/stores/types.d.ts.map +1 -0
  446. package/dist/esm/themes/azureLight.d.ts +0 -1
  447. package/dist/esm/themes/azureLight.d.ts.map +1 -1
  448. package/dist/esm/themes/createTheme.d.ts +0 -1
  449. package/dist/esm/themes/createTheme.d.ts.map +1 -1
  450. package/dist/esm/themes/jumper.d.ts +0 -1
  451. package/dist/esm/themes/jumper.d.ts.map +1 -1
  452. package/dist/esm/themes/palettes.d.ts.map +1 -1
  453. package/dist/esm/themes/types.d.ts +0 -1
  454. package/dist/esm/themes/types.d.ts.map +1 -1
  455. package/dist/esm/themes/watermelonLight.d.ts +0 -1
  456. package/dist/esm/themes/watermelonLight.d.ts.map +1 -1
  457. package/dist/esm/themes/windows95.d.ts +0 -1
  458. package/dist/esm/themes/windows95.d.ts.map +1 -1
  459. package/dist/esm/types/events.d.ts +4 -3
  460. package/dist/esm/types/events.d.ts.map +1 -1
  461. package/dist/esm/types/token.d.ts +1 -2
  462. package/dist/esm/types/token.d.ts.map +1 -1
  463. package/dist/esm/types/widget.d.ts +72 -73
  464. package/dist/esm/types/widget.d.ts.map +1 -1
  465. package/dist/esm/utils/compactNumberFormatter.d.ts +8 -8
  466. package/dist/esm/utils/compactNumberFormatter.d.ts.map +1 -1
  467. package/dist/esm/utils/converters.d.ts +7 -0
  468. package/dist/esm/utils/converters.d.ts.map +1 -0
  469. package/dist/esm/utils/currencyExtendedFormatter.d.ts.map +1 -1
  470. package/dist/esm/utils/elements.d.ts +11 -0
  471. package/dist/esm/utils/elements.d.ts.map +1 -0
  472. package/dist/esm/utils/elements.js +8 -1
  473. package/dist/esm/utils/elements.js.map +1 -1
  474. package/dist/esm/utils/enum.d.ts +5 -0
  475. package/dist/esm/utils/enum.d.ts.map +1 -0
  476. package/dist/esm/utils/fees.d.ts +17 -0
  477. package/dist/esm/utils/fees.d.ts.map +1 -0
  478. package/dist/esm/utils/format.d.ts +14 -14
  479. package/dist/esm/utils/format.d.ts.map +1 -1
  480. package/dist/esm/utils/getPriceImpact.d.ts +1 -7
  481. package/dist/esm/utils/getPriceImpact.d.ts.map +1 -1
  482. package/dist/esm/utils/input.d.ts +5 -0
  483. package/dist/esm/utils/input.d.ts.map +1 -0
  484. package/dist/esm/utils/navigationRoutes.d.ts.map +1 -1
  485. package/dist/esm/utils/percentFormatter.d.ts +5 -5
  486. package/dist/esm/utils/percentFormatter.d.ts.map +1 -1
  487. package/dist/esm/utils/tokenList.js +3 -6
  488. package/dist/esm/utils/tokenList.js.map +1 -1
  489. package/dist/esm/utils/wallet.d.ts +5 -0
  490. package/dist/esm/utils/wallet.d.ts.map +1 -0
  491. package/package.json +29 -21
  492. package/src/components/RouteCard/RouteTokens.tsx +3 -2
  493. package/src/components/SendToWallet/SendToWalletButton.tsx +27 -5
  494. package/src/components/TransactionCard/ActiveTransactionCard.style.tsx +11 -0
  495. package/src/config/version.ts +1 -1
  496. package/src/hooks/useAccountsBalancesData.ts +4 -31
  497. package/src/hooks/useDisplayedTokens.ts +70 -0
  498. package/src/hooks/useListHeight.ts +4 -0
  499. package/src/hooks/useRoutes.ts +360 -325
  500. package/src/hooks/useTokenBalances.ts +8 -53
  501. package/src/hooks/useTokenBalancesQueries.ts +12 -4
  502. package/src/hooks/useTokenList.ts +59 -0
  503. package/src/hooks/useTransactionDetails.ts +1 -3
  504. package/src/providers/WalletProvider/WalletProvider.tsx +15 -3
  505. package/src/shared.ts +191 -0
  506. package/src/stores/form/createFormStore.ts +1 -0
  507. package/src/stores/form/types.ts +1 -0
  508. package/src/utils/tokenList.ts +4 -12
  509. package/dist/esm/hooks/useFilteredByTokenBalances.js +0 -74
  510. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +0 -1
  511. package/src/hooks/useFilteredByTokenBalances.ts +0 -145
@@ -1,14 +1,13 @@
1
1
  import { useMemo } from 'react'
2
2
  import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
3
3
  import type { FormType } from '../stores/form/types.js'
4
- import { usePinnedTokensStore } from '../stores/pinnedTokens/PinnedTokensStore.js'
5
4
  import { useSettings } from '../stores/settings/useSettings.js'
6
5
  import type { TokenAmount } from '../types/token.js'
7
6
  import { formatTokenPrice } from '../utils/format.js'
8
- import { isSearchMatch, processTokenBalances } from '../utils/tokenList.js'
7
+ import { isSearchMatch, processTokenList } from '../utils/tokenList.js'
9
8
  import { useAccountsBalancesData } from './useAccountsBalancesData.js'
9
+ import { useDisplayedTokens } from './useDisplayedTokens.js'
10
10
  import { useTokenBalancesQueries } from './useTokenBalancesQueries.js'
11
- import { useTokens } from './useTokens.js'
12
11
 
13
12
  export const useTokenBalances = (
14
13
  selectedChainId?: number,
@@ -23,12 +22,14 @@ export const useTokenBalances = (
23
22
  isSearchLoading: boolean
24
23
  isBalanceLoading: boolean
25
24
  } => {
26
- const { hiddenUI } = useWidgetConfig()
25
+ const { hiddenUI, tokens: configTokens } = useWidgetConfig()
27
26
  const {
28
27
  allTokens,
29
- isLoading: isTokensLoading,
28
+ displayedTokensList,
29
+ isPinnedToken,
30
+ isTokensLoading,
30
31
  isSearchLoading,
31
- } = useTokens(formType, search, isAllNetworks ? undefined : selectedChainId)
32
+ } = useDisplayedTokens(selectedChainId, formType, isAllNetworks, search)
32
33
 
33
34
  const { data: accountsWithAllTokens, isLoading: isAccountsLoading } =
34
35
  useAccountsBalancesData(selectedChainId, formType, isAllNetworks, allTokens)
@@ -39,58 +40,12 @@ export const useTokenBalances = (
39
40
  const { data: allTokensWithBalances, isLoading: isBalanceQueriesLoading } =
40
41
  useTokenBalancesQueries(accountsWithAllTokens, isBalanceLoadingEnabled)
41
42
 
42
- const { tokens: configTokens } = useWidgetConfig()
43
43
  const { smallBalanceThreshold } = useSettings(['smallBalanceThreshold'])
44
44
 
45
- const pinnedTokens = usePinnedTokensStore((state) => state.pinnedTokens)
46
-
47
45
  const isBalanceLoading =
48
46
  (isBalanceQueriesLoading || isAccountsLoading) &&
49
47
  !allTokensWithBalances?.length
50
48
 
51
- // Create function to check if token is pinned
52
- const isPinnedToken = useMemo(() => {
53
- if (isAllNetworks) {
54
- // For all networks, check all pinned tokens
55
- const allPinned: Array<{ chainId: number; tokenAddress: string }> = []
56
- Object.entries(pinnedTokens).forEach(([chainIdStr, addresses]) => {
57
- const chainId = Number.parseInt(chainIdStr, 10)
58
- addresses.forEach((address) => {
59
- allPinned.push({ chainId, tokenAddress: address })
60
- })
61
- })
62
- const pinnedSet = new Set(
63
- allPinned.map((p) => `${p.chainId}-${p.tokenAddress.toLowerCase()}`)
64
- )
65
- return (chainId: number, tokenAddress: string) => {
66
- const key = `${chainId}-${tokenAddress.toLowerCase()}`
67
- return pinnedSet.has(key)
68
- }
69
- } else if (selectedChainId) {
70
- // For single chain, check only selected chain
71
- const chainPinnedTokens = pinnedTokens[selectedChainId] || []
72
- const pinnedSet = new Set(
73
- chainPinnedTokens.map((addr) => addr.toLowerCase())
74
- )
75
- return (chainId: number, tokenAddress: string) => {
76
- return (
77
- chainId === selectedChainId &&
78
- pinnedSet.has(tokenAddress.toLowerCase())
79
- )
80
- }
81
- }
82
- return undefined
83
- }, [isAllNetworks, selectedChainId, pinnedTokens])
84
-
85
- const displayedTokensList = useMemo(() => {
86
- const tokensByChain = isAllNetworks
87
- ? Object.values(allTokens ?? {}).flat()
88
- : selectedChainId
89
- ? allTokens?.[selectedChainId]
90
- : undefined
91
- return tokensByChain?.filter((t) => isSearchMatch(t, search)) ?? []
92
- }, [allTokens, isAllNetworks, selectedChainId, search])
93
-
94
49
  const displayedTokensWithBalances = useMemo(() => {
95
50
  const balancesByChain = isAllNetworks
96
51
  ? allTokensWithBalances
@@ -160,7 +115,7 @@ export const useTokenBalances = (
160
115
  ])
161
116
 
162
117
  const { processedTokens, withCategories, withPinnedTokens } = useMemo(() => {
163
- return processTokenBalances(
118
+ return processTokenList(
164
119
  isBalanceLoading,
165
120
  isAllNetworks || !!search,
166
121
  configTokens,
@@ -1,5 +1,5 @@
1
1
  import { getTokenBalances, type TokenExtended } from '@lifi/sdk'
2
- import { useQueries } from '@tanstack/react-query'
2
+ import { keepPreviousData, useQueries } from '@tanstack/react-query'
3
3
  import { useMemo, useRef } from 'react'
4
4
  import { useSDKClient } from '../providers/SDKClientProvider.js'
5
5
  import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
@@ -7,6 +7,10 @@ import type { TokenAmount, TokenAmountExtended } from '../types/token.js'
7
7
  import { getQueryKey } from '../utils/queries.js'
8
8
 
9
9
  const defaultRefetchInterval = 32_000
10
+ // Max time to hold the skeleton before revealing balances in the multi-chain view.
11
+ // Sits just below the typical full-settle time so the list reveals once, sorted,
12
+ // instead of reordering as each chain streams in.
13
+ const balanceRevealTimeout = 2_000
10
14
 
11
15
  export const useTokenBalancesQueries = (
12
16
  accountsWithTokens?: Record<string, Record<number, TokenExtended[]>>,
@@ -44,7 +48,10 @@ export const useTokenBalancesQueries = (
44
48
  enabled: isBalanceLoadingEnabled,
45
49
  refetchInterval: defaultRefetchInterval,
46
50
  staleTime: defaultRefetchInterval,
47
- keepPreviousData: true,
51
+ placeholderData: keepPreviousData,
52
+ // Resolve a failed chain immediately instead of retrying past the reveal
53
+ // window (retries would pop the chain in late and re-sort the list).
54
+ retry: false,
48
55
  }
49
56
  })
50
57
  )
@@ -74,8 +81,9 @@ export const useTokenBalancesQueries = (
74
81
  ? now - firstLoadStartRef.current
75
82
  : 0
76
83
 
77
- // Return results if all complete OR if 500ms have passed since first query started
78
- const shouldReturnResults = allComplete || timeSinceStart >= 500
84
+ // Return results once all queries complete, or once the reveal timeout elapses
85
+ const shouldReturnResults =
86
+ allComplete || timeSinceStart >= balanceRevealTimeout
79
87
 
80
88
  if (shouldReturnResults) {
81
89
  const data: TokenAmount[] = results
@@ -0,0 +1,59 @@
1
+ import { useMemo } from 'react'
2
+ import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
3
+ import type { FormType } from '../stores/form/types.js'
4
+ import type { TokenAmount } from '../types/token.js'
5
+ import { processTokenList } from '../utils/tokenList.js'
6
+ import { useDisplayedTokens } from './useDisplayedTokens.js'
7
+
8
+ /**
9
+ * Token-selection list without wallet balances - No accounts are resolved and no balance queries are fired.
10
+ */
11
+ export const useTokenList = (
12
+ selectedChainId?: number,
13
+ formType?: FormType,
14
+ isAllNetworks?: boolean,
15
+ search?: string
16
+ ): {
17
+ tokens: TokenAmount[]
18
+ withCategories: boolean
19
+ withPinnedTokens: boolean
20
+ isTokensLoading: boolean
21
+ isSearchLoading: boolean
22
+ } => {
23
+ const { tokens: configTokens } = useWidgetConfig()
24
+ const {
25
+ displayedTokensList,
26
+ isPinnedToken,
27
+ isTokensLoading,
28
+ isSearchLoading,
29
+ } = useDisplayedTokens(selectedChainId, formType, isAllNetworks, search)
30
+
31
+ const { processedTokens, withCategories, withPinnedTokens } = useMemo(
32
+ () =>
33
+ processTokenList(
34
+ /* withoutBalances */ true,
35
+ isAllNetworks || !!search,
36
+ configTokens,
37
+ selectedChainId,
38
+ displayedTokensList,
39
+ undefined,
40
+ isPinnedToken
41
+ ),
42
+ [
43
+ isAllNetworks,
44
+ search,
45
+ configTokens,
46
+ selectedChainId,
47
+ displayedTokensList,
48
+ isPinnedToken,
49
+ ]
50
+ )
51
+
52
+ return {
53
+ tokens: processedTokens ?? [],
54
+ withCategories,
55
+ withPinnedTokens,
56
+ isTokensLoading,
57
+ isSearchLoading,
58
+ }
59
+ }
@@ -59,9 +59,7 @@ export const useTransactionDetails = (
59
59
  if (fromAddress) {
60
60
  queryClient.setQueryData<StatusResponse[]>(
61
61
  [transactionHistoryQueryKey, fromAddress],
62
- (data) => {
63
- return [...data!, transaction!]
64
- }
62
+ (data) => (data ? [...data, transaction!] : [transaction!])
65
63
  )
66
64
  }
67
65
 
@@ -10,6 +10,7 @@ import {
10
10
  import { useTranslation } from 'react-i18next'
11
11
  import { useAvailableChains } from '../../hooks/useAvailableChains.js'
12
12
  import { useInitializeSDKProviders } from '../../hooks/useInitializeSDKProviders.js'
13
+ import { getConfigItemSets, isItemAllowedForSets } from '../../utils/item.js'
13
14
  import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
14
15
  import { useExternalWalletProvider } from './useExternalWalletProvider.js'
15
16
 
@@ -21,12 +22,23 @@ export const WalletProvider = ({
21
22
  children,
22
23
  providers,
23
24
  }: PropsWithChildren<WalletProviderProps>): JSX.Element => {
24
- const { walletConfig } = useWidgetConfig()
25
+ const { walletConfig, chains: chainsConfig } = useWidgetConfig()
25
26
  const { chains } = useAvailableChains()
26
27
  const { i18n } = useTranslation()
27
28
  const { useExternalWalletProvidersOnly, internalChainTypes } =
28
29
  useExternalWalletProvider()
29
30
 
31
+ // Restrict offered wallets to the ecosystems allowed by chains.types config.
32
+ const enabledChainTypes = useMemo(() => {
33
+ const chainTypeSets = getConfigItemSets(
34
+ chainsConfig?.types,
35
+ (items) => new Set(items)
36
+ )
37
+ return internalChainTypes.filter((chainType) =>
38
+ isItemAllowedForSets(chainType, chainTypeSets)
39
+ )
40
+ }, [internalChainTypes, chainsConfig?.types])
41
+
30
42
  if (
31
43
  !providers.length &&
32
44
  !useExternalWalletProvidersOnly &&
@@ -40,12 +52,12 @@ export const WalletProvider = ({
40
52
  const walletManagementConfig = useMemo(
41
53
  () => ({
42
54
  locale: i18n.resolvedLanguage as never,
43
- enabledChainTypes: internalChainTypes,
55
+ enabledChainTypes,
44
56
  walletEcosystemsOrder: walletConfig?.walletEcosystemsOrder,
45
57
  }),
46
58
  [
47
59
  i18n.resolvedLanguage,
48
- internalChainTypes,
60
+ enabledChainTypes,
49
61
  walletConfig?.walletEcosystemsOrder,
50
62
  ]
51
63
  )
package/src/shared.ts ADDED
@@ -0,0 +1,191 @@
1
+ // ─────────────────────────────────────────────────────────────────────────────
2
+ // @lifi/widget/shared
3
+ //
4
+ // Internal surface shared with sibling packages (currently @lifi/widget-checkout).
5
+ // These exports are NOT part of the public widget API. They may change in any
6
+ // release without notice. Application code must not depend on this subpath.
7
+ // ─────────────────────────────────────────────────────────────────────────────
8
+
9
+ // Propagate widget's MUI theme augmentations (theme.vars, custom palette keys,
10
+ // component variants) to any consumer that imports through this subpath.
11
+ import type {} from '@mui/material/themeCssVarsAugmentation'
12
+ import type {} from './themes/types.js'
13
+
14
+ // ── components ───────────────────────────────────────────────────────────────
15
+ export { ActionRow } from './components/ActionRow/ActionRow.js'
16
+ export {
17
+ FormControl,
18
+ Input,
19
+ } from './components/AmountInput/AmountInput.style.js'
20
+ export { AmountInputEndAdornment } from './components/AmountInput/AmountInputEndAdornment.js'
21
+ export { InputPriceButton } from './components/AmountInput/PriceFormHelperText.style.js'
22
+ export { AvatarBadgedDefault } from './components/Avatar/Avatar.js'
23
+ export { TokenAvatar } from './components/Avatar/TokenAvatar.js'
24
+ export { BaseTransactionButton } from './components/BaseTransactionButton/BaseTransactionButton.js'
25
+ export type { BottomSheetBase } from './components/BottomSheet/types.js'
26
+ export { ButtonTertiary } from './components/ButtonTertiary.js'
27
+ export { Card } from './components/Card/Card.js'
28
+ export { CardIconButton } from './components/Card/CardIconButton.js'
29
+ export { CardTitle } from './components/Card/CardTitle.js'
30
+ export { InputCard } from './components/Card/InputCard.js'
31
+ export { ChainSelect } from './components/ChainSelect/ChainSelect.js'
32
+ export { ChainAvatar } from './components/ChainSelect/ChainSelect.style.js'
33
+ export { ContractComponent } from './components/ContractComponent/ContractComponent.js'
34
+ export { ExecutionStatusCard } from './components/ExecutionStatusCard/ExecutionStatusCard.js'
35
+ export { StatusIcon } from './components/ExecutionStatusCard/StatusIcon.js'
36
+ export { FeeBreakdownTooltip } from './components/FeeBreakdownTooltip.js'
37
+ export { IconCircle } from './components/IconCircle/IconCircle.js'
38
+ export { IconTypography } from './components/IconTypography.js'
39
+ export { ListItemButton } from './components/ListItem/ListItemButton.js'
40
+ export { WarningMessages } from './components/Messages/WarningMessages.js'
41
+ export { PageContainer } from './components/PageContainer.js'
42
+ export { PoweredBy } from './components/PoweredBy/PoweredBy.js'
43
+ export { ProgressToNextUpdate } from './components/ProgressToNextUpdate.js'
44
+ export { RouteCard } from './components/RouteCard/RouteCard.js'
45
+ export { RouteCardSkeleton } from './components/RouteCard/RouteCardSkeleton.js'
46
+ export { RouteDetails } from './components/RouteCard/RouteDetails.js'
47
+ export {
48
+ DetailInfoIcon,
49
+ DetailLabel,
50
+ DetailLabelContainer,
51
+ DetailRow,
52
+ DetailValue,
53
+ } from './components/RouteCard/RouteDetails.style.js'
54
+ export { RouteNotFoundCard } from './components/RouteCard/RouteNotFoundCard.js'
55
+ export { RouteTokens } from './components/RouteCard/RouteTokens.js'
56
+ export { SearchInput } from './components/Search/SearchInput.js'
57
+ export { SendToWalletButton } from './components/SendToWallet/SendToWalletButton.js'
58
+ export {
59
+ type ExecutionRow,
60
+ useExecutionRows,
61
+ } from './components/StepActions/executionRows.js'
62
+ export { SentToWalletRow } from './components/StepActions/SentToWalletRow.js'
63
+ export { ExternalLink } from './components/StepActions/StepActionRow.style.js'
64
+ export { StepActionsList } from './components/StepActions/StepActionsList.js'
65
+ export { Token } from './components/Token/Token.js'
66
+ export { TokenNotFound } from './components/TokenList/TokenNotFound.js'
67
+ export { useTokenSelect } from './components/TokenList/useTokenSelect.js'
68
+ export { VirtualizedTokenList } from './components/TokenList/VirtualizedTokenList.js'
69
+ export { TokenRate } from './components/TokenRate/TokenRate.js'
70
+ export {
71
+ DateLabelContainer,
72
+ DateLabelText,
73
+ } from './components/TransactionCard/TransactionCard.style.js'
74
+ // ── hooks ────────────────────────────────────────────────────────────────────
75
+ export { useAddressActivity } from './hooks/useAddressActivity.js'
76
+ export {
77
+ AddressType,
78
+ useAddressValidation,
79
+ } from './hooks/useAddressValidation.js'
80
+ export { useAvailableChains } from './hooks/useAvailableChains.js'
81
+ export { useChain } from './hooks/useChain.js'
82
+ export { useContactSupport } from './hooks/useContactSupport.js'
83
+ export { useDebouncedWatch } from './hooks/useDebouncedWatch.js'
84
+ export { useExplorer } from './hooks/useExplorer.js'
85
+ export { useHeader } from './hooks/useHeader.js'
86
+ export { useListHeight } from './hooks/useListHeight.js'
87
+ export { useNavigateBack } from './hooks/useNavigateBack.js'
88
+ export { useRouteExecution } from './hooks/useRouteExecution.js'
89
+ export { useRouteExecutionMessage } from './hooks/useRouteExecutionMessage.js'
90
+ export { useRoutes } from './hooks/useRoutes.js'
91
+ export { useToAddressRequirements } from './hooks/useToAddressRequirements.js'
92
+ export { useToken } from './hooks/useToken.js'
93
+ export { useTokenAddressBalance } from './hooks/useTokenAddressBalance.js'
94
+ export { useTokenBalances } from './hooks/useTokenBalances.js'
95
+ export { useTokenList } from './hooks/useTokenList.js'
96
+ export { useTools } from './hooks/useTools.js'
97
+ export { useWidgetEvents } from './hooks/useWidgetEvents.js'
98
+ // ── pages ────────────────────────────────────────────────────────────────────
99
+ export { MainWarningMessages } from './pages/MainPage/MainWarningMessages.js'
100
+ export { Stack } from './pages/RoutesPage/RoutesPage.style.js'
101
+ export { SelectChainPage } from './pages/SelectChainPage/SelectChainPage.js'
102
+ export { SearchTokenInput } from './pages/SelectTokenPage/SearchTokenInput.js'
103
+ export { ContactSupportButton } from './pages/TransactionDetailsPage/ContactSupportButton.js'
104
+ export { ConfirmToAddressSheet } from './pages/TransactionPage/ConfirmToAddressSheet.js'
105
+ export {
106
+ ExchangeRateBottomSheet,
107
+ type ExchangeRateBottomSheetBase,
108
+ } from './pages/TransactionPage/ExchangeRateBottomSheet.js'
109
+ export { ExecutionDoneCard } from './pages/TransactionPage/ExecutionDoneCard.js'
110
+ export { RouteTracker } from './pages/TransactionPage/RouteTracker.js'
111
+ export { StartTransactionButton } from './pages/TransactionPage/StartTransactionButton.js'
112
+ export { TokenValueBottomSheet } from './pages/TransactionPage/TokenValueBottomSheet.js'
113
+ export { TransactionDoneButtons } from './pages/TransactionPage/TransactionDoneButtons.js'
114
+ export {
115
+ calculateValueLossPercentage,
116
+ getTokenValueLossThreshold,
117
+ } from './pages/TransactionPage/utils.js'
118
+
119
+ // ── providers ────────────────────────────────────────────────────────────────
120
+ export { I18nProvider } from './providers/I18nProvider/I18nProvider.js'
121
+ export { QueryClientProvider } from './providers/QueryClientProvider.js'
122
+ export {
123
+ SDKClientProvider,
124
+ useSDKClient,
125
+ } from './providers/SDKClientProvider.js'
126
+ export { WalletProvider } from './providers/WalletProvider/WalletProvider.js'
127
+ export {
128
+ useWidgetConfig,
129
+ WidgetProvider,
130
+ } from './providers/WidgetProvider/WidgetProvider.js'
131
+
132
+ // ── stores ───────────────────────────────────────────────────────────────────
133
+ export { BookmarkStoreProvider } from './stores/bookmarks/BookmarkStore.js'
134
+ export { useChainOrderStore } from './stores/chains/ChainOrderStore.js'
135
+ export {
136
+ FormKeyHelper,
137
+ type FormType,
138
+ type FormTypeProps,
139
+ } from './stores/form/types.js'
140
+ export { useFieldActions } from './stores/form/useFieldActions.js'
141
+ export { useFieldValues } from './stores/form/useFieldValues.js'
142
+ export {
143
+ useHeaderStore,
144
+ useSetHeaderHeight,
145
+ } from './stores/header/useHeaderStore.js'
146
+ export { useInputModeStore } from './stores/inputMode/useInputModeStore.js'
147
+ export {
148
+ useRouteExecutionStore,
149
+ useRouteExecutionStoreContext,
150
+ } from './stores/routes/RouteExecutionStore.js'
151
+ export { RouteExecutionStatus } from './stores/routes/types.js'
152
+ export {
153
+ getSourceTxHash,
154
+ isRouteActive,
155
+ isRouteDone,
156
+ isRouteFailed,
157
+ } from './stores/routes/utils.js'
158
+ export { StoreProvider } from './stores/StoreProvider.js'
159
+ export {
160
+ SettingsStoreProvider,
161
+ useSettingsStoreContext,
162
+ } from './stores/settings/SettingsStore.js'
163
+
164
+ // ── themes ───────────────────────────────────────────────────────────────────
165
+ export { createTheme } from './themes/createTheme.js'
166
+
167
+ // ── types ────────────────────────────────────────────────────────────────────
168
+ export { WidgetEvent } from './types/events.js'
169
+ export type {
170
+ FormRef,
171
+ WidgetConfig,
172
+ WidgetTheme,
173
+ } from './types/widget.js'
174
+
175
+ // ── utils ────────────────────────────────────────────────────────────────────
176
+ export { buildRouteFromTxHistory } from './utils/converters.js'
177
+ export { createElementId, ElementId } from './utils/elements.js'
178
+ export { hasEnumFlag } from './utils/enum.js'
179
+ export { getAccumulatedFeeCostsBreakdown } from './utils/fees.js'
180
+ export {
181
+ formatDuration,
182
+ formatInputAmount,
183
+ formatTokenAmount,
184
+ formatTokenPrice,
185
+ priceToTokenAmount,
186
+ usdDecimals,
187
+ } from './utils/format.js'
188
+ export { getPriceImpact } from './utils/getPriceImpact.js'
189
+ export { fitInputText } from './utils/input.js'
190
+ export { navigationRoutes } from './utils/navigationRoutes.js'
191
+ export { shortenAddress } from './utils/wallet.js'
@@ -13,6 +13,7 @@ import type {
13
13
  export const formDefaultValues: DefaultValues = {
14
14
  fromAmount: '',
15
15
  toAmount: '',
16
+ cashFiatAmount: '',
16
17
  tokenSearchFilter: '',
17
18
  priceInverted: false,
18
19
  validUntil: DEFAULT_VALID_UNTIL_SECONDS,
@@ -12,6 +12,7 @@ export interface DefaultFieldValues {
12
12
  }
13
13
 
14
14
  export interface DefaultValues extends DefaultFieldValues {
15
+ cashFiatAmount: string
15
16
  contractCalls?: ContractCall[]
16
17
  tokenSearchFilter: string
17
18
  /** Limit-order: when true, the price is displayed/entered inverted. */
@@ -1,8 +1,4 @@
1
- import {
2
- formatUnits,
3
- type TokenExtended,
4
- type WalletTokenExtended,
5
- } from '@lifi/sdk'
1
+ import { formatUnits, type TokenExtended } from '@lifi/sdk'
6
2
  import type { TokenAmount, TokenAmountExtended } from '../types/token.js'
7
3
  import type { WidgetTokens } from '../types/widget.js'
8
4
 
@@ -15,8 +11,8 @@ const sortByBalances = (a: TokenAmount, b: TokenAmount) =>
15
11
  const sortByVolume = (a: TokenExtended, b: TokenExtended) =>
16
12
  (b.volumeUSD24H ?? 0) - (a.volumeUSD24H ?? 0)
17
13
 
18
- export const processTokenBalances = (
19
- isBalanceLoading: boolean,
14
+ export const processTokenList = (
15
+ withoutBalances: boolean,
20
16
  noCategories: boolean,
21
17
  configTokens?: WidgetTokens,
22
18
  selectedChainId?: number,
@@ -28,7 +24,7 @@ export const processTokenBalances = (
28
24
  withCategories: boolean
29
25
  withPinnedTokens: boolean
30
26
  } => {
31
- if (isBalanceLoading) {
27
+ if (withoutBalances) {
32
28
  if (noCategories) {
33
29
  const sortedTokens = [...(tokens ?? [])].sort(sortByVolume)
34
30
  // Separate pinned tokens
@@ -278,7 +274,3 @@ export const isSearchMatch = (
278
274
  token.address?.toLowerCase().includes(searchLowerCase)
279
275
  )
280
276
  }
281
-
282
- export const isSupportedToken = (token: WalletTokenExtended): boolean => {
283
- return Boolean(token.name && token.symbol && token.priceUSD && token.chainId)
284
- }
@@ -1,74 +0,0 @@
1
- import { getConfigItemSets, isFormItemAllowed } from "../utils/item.js";
2
- import { useWidgetConfig } from "../providers/WidgetProvider/WidgetProvider.js";
3
- import { useSDKClient } from "../providers/SDKClientProvider.js";
4
- import { getVerifiedTokensSets } from "../utils/token.js";
5
- import { isSupportedToken } from "../utils/tokenList.js";
6
- import { ChainType, getWalletBalances } from "@lifi/sdk";
7
- import { useMemo } from "react";
8
- import { useQuery } from "@tanstack/react-query";
9
- //#region src/hooks/useFilteredByTokenBalances.ts
10
- const useFilteredTokensByBalance = (accountsWithTokens, formType) => {
11
- const { tokens: configTokens } = useWidgetConfig();
12
- const sdkClient = useSDKClient();
13
- const evmAddress = useMemo(() => {
14
- return Object.entries(accountsWithTokens ?? {}).find(([_, { chainType }]) => chainType === ChainType.EVM)?.[0];
15
- }, [accountsWithTokens]);
16
- const { data: existingBalances, isLoading } = useQuery({
17
- queryKey: ["existing-evm-balances", evmAddress],
18
- queryFn: () => getWalletBalances(sdkClient, evmAddress ?? ""),
19
- enabled: !!evmAddress,
20
- refetchInterval: 3e4,
21
- staleTime: 3e4,
22
- retry: false
23
- });
24
- return {
25
- data: useMemo(() => {
26
- if (!accountsWithTokens) return;
27
- const result = {};
28
- if (!existingBalances) {
29
- for (const [address, { tokens }] of Object.entries(accountsWithTokens)) result[address] = tokens;
30
- return result;
31
- }
32
- const verifiedTokensSets = getVerifiedTokensSets(configTokens);
33
- for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {
34
- result[address] = {};
35
- for (const [chainIdStr, chainTokens] of Object.entries(tokens)) {
36
- const chainId = Number(chainIdStr);
37
- const verifiedAddresses = verifiedTokensSets?.get(chainId);
38
- const balances = existingBalances?.[chainId];
39
- if (!balances?.length) {
40
- if (chainTokens.length) result[address][chainId] = chainTokens;
41
- continue;
42
- }
43
- const balanceSet = new Set(balances.map((balance) => balance.address.toLowerCase()));
44
- const filteredTokens = chainTokens.filter((token) => {
45
- const tokenKey = token.address.toLowerCase();
46
- return balanceSet.has(tokenKey);
47
- });
48
- const chainTokenSet = new Set(chainTokens.map((token) => token.address.toLowerCase()));
49
- const allowedAddressesConfig = getConfigItemSets(configTokens, (tokens) => new Set(tokens.filter((t) => Number(t.chainId) === chainId).map((t) => t.address.toLowerCase())), formType);
50
- const additionalTokens = balances.filter((balance) => {
51
- const balanceKey = balance.address.toLowerCase();
52
- return !chainTokenSet.has(balanceKey) && isSupportedToken(balance) && isFormItemAllowed(balance, allowedAddressesConfig, formType, (t) => t.address.toLowerCase());
53
- }).map((token) => ({
54
- ...token,
55
- verified: verifiedAddresses?.has(token.address.toLowerCase()) ?? false
56
- }));
57
- const allTokens = [...filteredTokens, ...additionalTokens];
58
- if (allTokens.length) result[address][chainId] = allTokens;
59
- }
60
- }
61
- return result;
62
- }, [
63
- accountsWithTokens,
64
- existingBalances,
65
- configTokens,
66
- formType
67
- ]),
68
- isLoading
69
- };
70
- };
71
- //#endregion
72
- export { useFilteredTokensByBalance };
73
-
74
- //# sourceMappingURL=useFilteredByTokenBalances.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFilteredByTokenBalances.js","names":[],"sources":["../../../src/hooks/useFilteredByTokenBalances.ts"],"sourcesContent":["import {\n type BaseToken,\n ChainType,\n getWalletBalances,\n type TokenExtended,\n type WalletTokenExtended,\n} from '@lifi/sdk'\nimport { useQuery } from '@tanstack/react-query'\nimport { useMemo } from 'react'\nimport { useSDKClient } from '../providers/SDKClientProvider.js'\nimport { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'\nimport type { FormType } from '../stores/form/types.js'\nimport { getConfigItemSets, isFormItemAllowed } from '../utils/item.js'\nimport { getVerifiedTokensSets } from '../utils/token.js'\nimport { isSupportedToken } from '../utils/tokenList.js'\n\nexport const useFilteredTokensByBalance = (\n accountsWithTokens?: Record<\n string,\n { chainType: ChainType; tokens: Record<number, TokenExtended[]> }\n >,\n formType?: FormType\n): {\n data: Record<string, Record<number, TokenExtended[]>> | undefined\n isLoading: boolean\n} => {\n const { tokens: configTokens } = useWidgetConfig()\n const sdkClient = useSDKClient()\n\n const evmAddress = useMemo(() => {\n const evmAccount = Object.entries(accountsWithTokens ?? {}).find(\n ([_, { chainType }]) => chainType === ChainType.EVM\n )\n return evmAccount?.[0]\n }, [accountsWithTokens])\n\n const { data: existingBalances, isLoading } = useQuery({\n queryKey: ['existing-evm-balances', evmAddress],\n queryFn: () => getWalletBalances(sdkClient, evmAddress ?? ''),\n enabled: !!evmAddress,\n refetchInterval: 30_000, // 30 seconds\n staleTime: 30_000, // 30 seconds\n retry: false,\n })\n\n const accountsWithFilteredTokens = useMemo(() => {\n if (!accountsWithTokens) {\n return undefined\n }\n\n // Early return if no existing balances - return all tokens\n const result: Record<string, Record<number, TokenExtended[]>> = {}\n if (!existingBalances) {\n for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {\n result[address] = tokens\n }\n return result\n }\n\n const verifiedTokensSets = getVerifiedTokensSets(configTokens)\n\n for (const [address, { tokens }] of Object.entries(accountsWithTokens)) {\n result[address] = {}\n\n for (const [chainIdStr, chainTokens] of Object.entries(tokens)) {\n const chainId = Number(chainIdStr)\n const verifiedAddresses = verifiedTokensSets?.get(chainId)\n // Get balances for this specific chain\n const balances = existingBalances?.[chainId]\n // If no balances, RPC all tokens of the chain\n if (!balances?.length) {\n if (chainTokens.length) {\n result[address][chainId] = chainTokens\n }\n continue\n }\n\n // Optimize token matching with Set for O(1) lookup\n const balanceSet = new Set(\n balances.map((balance: WalletTokenExtended) =>\n balance.address.toLowerCase()\n )\n )\n\n // Get tokens that are in chainTokens and have balances\n const filteredTokens = chainTokens.filter((token) => {\n const tokenKey = token.address.toLowerCase()\n return balanceSet.has(tokenKey)\n })\n\n // Get tokens that are in balances but not in chainTokens\n const chainTokenSet = new Set(\n chainTokens.map((token) => token.address.toLowerCase())\n )\n\n // Get allowed addresses from config tokens\n const allowedAddressesConfig = getConfigItemSets(\n configTokens,\n (tokens: BaseToken[]) =>\n new Set(\n tokens\n .filter((t) => Number(t.chainId) === chainId)\n .map((t) => t.address.toLowerCase())\n ),\n formType\n )\n\n const additionalTokens = balances\n .filter((balance: WalletTokenExtended) => {\n const balanceKey = balance.address.toLowerCase()\n return (\n !chainTokenSet.has(balanceKey) &&\n isSupportedToken(balance) &&\n isFormItemAllowed(\n balance,\n allowedAddressesConfig,\n formType,\n (t) => t.address.toLowerCase()\n )\n )\n })\n // Mark tokens from wallet balances as unverified unless allowlisted\n .map((token: WalletTokenExtended) => ({\n ...token,\n verified:\n verifiedAddresses?.has(token.address.toLowerCase()) ?? false,\n })) as TokenExtended[]\n\n // Combine both sets of tokens - convert WalletTokenExtended to TokenAmount\n const allTokens = [\n ...filteredTokens,\n ...additionalTokens,\n ] as TokenExtended[]\n\n if (allTokens.length) {\n result[address][chainId] = allTokens\n }\n }\n }\n\n return result\n }, [accountsWithTokens, existingBalances, configTokens, formType])\n\n return { data: accountsWithFilteredTokens, isLoading }\n}\n"],"mappings":";;;;;;;;;AAgBA,MAAa,8BACX,oBAIA,aAIG;CACH,MAAM,EAAE,QAAQ,iBAAiB,gBAAgB;CACjD,MAAM,YAAY,aAAa;CAE/B,MAAM,aAAa,cAAc;EAI/B,OAHmB,OAAO,QAAQ,sBAAsB,CAAC,CAAC,CAAC,CAAC,MACzD,CAAC,GAAG,EAAE,iBAAiB,cAAc,UAAU,GAElC,CAAC,GAAG;CACtB,GAAG,CAAC,kBAAkB,CAAC;CAEvB,MAAM,EAAE,MAAM,kBAAkB,cAAc,SAAS;EACrD,UAAU,CAAC,yBAAyB,UAAU;EAC9C,eAAe,kBAAkB,WAAW,cAAc,EAAE;EAC5D,SAAS,CAAC,CAAC;EACX,iBAAiB;EACjB,WAAW;EACX,OAAO;CACT,CAAC;CAoGD,OAAO;EAAE,MAlG0B,cAAc;GAC/C,IAAI,CAAC,oBACH;GAIF,MAAM,SAA0D,CAAC;GACjE,IAAI,CAAC,kBAAkB;IACrB,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,OAAO,QAAQ,kBAAkB,GACnE,OAAO,WAAW;IAEpB,OAAO;GACT;GAEA,MAAM,qBAAqB,sBAAsB,YAAY;GAE7D,KAAK,MAAM,CAAC,SAAS,EAAE,aAAa,OAAO,QAAQ,kBAAkB,GAAG;IACtE,OAAO,WAAW,CAAC;IAEnB,KAAK,MAAM,CAAC,YAAY,gBAAgB,OAAO,QAAQ,MAAM,GAAG;KAC9D,MAAM,UAAU,OAAO,UAAU;KACjC,MAAM,oBAAoB,oBAAoB,IAAI,OAAO;KAEzD,MAAM,WAAW,mBAAmB;KAEpC,IAAI,CAAC,UAAU,QAAQ;MACrB,IAAI,YAAY,QACd,OAAO,QAAQ,CAAC,WAAW;MAE7B;KACF;KAGA,MAAM,aAAa,IAAI,IACrB,SAAS,KAAK,YACZ,QAAQ,QAAQ,YAAY,CAC9B,CACF;KAGA,MAAM,iBAAiB,YAAY,QAAQ,UAAU;MACnD,MAAM,WAAW,MAAM,QAAQ,YAAY;MAC3C,OAAO,WAAW,IAAI,QAAQ;KAChC,CAAC;KAGD,MAAM,gBAAgB,IAAI,IACxB,YAAY,KAAK,UAAU,MAAM,QAAQ,YAAY,CAAC,CACxD;KAGA,MAAM,yBAAyB,kBAC7B,eACC,WACC,IAAI,IACF,OACG,QAAQ,MAAM,OAAO,EAAE,OAAO,MAAM,OAAO,CAAC,CAC5C,KAAK,MAAM,EAAE,QAAQ,YAAY,CAAC,CACvC,GACF,QACF;KAEA,MAAM,mBAAmB,SACtB,QAAQ,YAAiC;MACxC,MAAM,aAAa,QAAQ,QAAQ,YAAY;MAC/C,OACE,CAAC,cAAc,IAAI,UAAU,KAC7B,iBAAiB,OAAO,KACxB,kBACE,SACA,wBACA,WACC,MAAM,EAAE,QAAQ,YAAY,CAC/B;KAEJ,CAAC,CAAC,CAED,KAAK,WAAgC;MACpC,GAAG;MACH,UACE,mBAAmB,IAAI,MAAM,QAAQ,YAAY,CAAC,KAAK;KAC3D,EAAE;KAGJ,MAAM,YAAY,CAChB,GAAG,gBACH,GAAG,gBACL;KAEA,IAAI,UAAU,QACZ,OAAO,QAAQ,CAAC,WAAW;IAE/B;GACF;GAEA,OAAO;EACT,GAAG;GAAC;GAAoB;GAAkB;GAAc;EAAQ,CAExB;EAAG;CAAU;AACvD"}