@velora-dex/widget 0.8.1 → 0.8.3-dev.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 (692) hide show
  1. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  2. package/dist/components/ui/accordion.js.map +1 -1
  3. package/dist/components/ui/button.js.map +1 -1
  4. package/dist/components/ui/card.js.map +1 -1
  5. package/dist/components/ui/drawer.js.map +1 -1
  6. package/dist/components/ui/dropdown-menu.js.map +1 -1
  7. package/dist/components/ui/input.js.map +1 -1
  8. package/dist/components/ui/progress.js.map +1 -1
  9. package/dist/components/ui/skeleton.js.map +1 -1
  10. package/dist/components/ui/sonner.js.map +1 -1
  11. package/dist/components/ui/switch.js.map +1 -1
  12. package/dist/components/ui/tooltip.js.map +1 -1
  13. package/dist/components/web3/AccountButton.js.map +1 -1
  14. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
  15. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -1
  16. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js.map +1 -1
  17. package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
  18. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
  19. package/dist/components/web3/ConnectWallets/index.js +1 -1
  20. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  21. package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
  22. package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
  23. package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
  24. package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
  25. package/dist/components/web3/ConnectWallets/walletFlags.js.map +1 -1
  26. package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
  27. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
  28. package/dist/components/web3/providers.js.map +1 -1
  29. package/dist/components/widget/AppHeader/Activities/Activities.js.map +1 -1
  30. package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js.map +1 -1
  31. package/dist/components/widget/AppHeader/Activities/ActivityItems.js.map +1 -1
  32. package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
  33. package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
  34. package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
  35. package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
  36. package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
  37. package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
  38. package/dist/components/widget/AppHeader/state/showMoreAtom.js.map +1 -1
  39. package/dist/components/widget/BridgeList/BridgeListItem.js.map +1 -1
  40. package/dist/components/widget/BridgeList/BridgeProtocolsList.js.map +1 -1
  41. package/dist/components/widget/BridgeList/BridgesList.js.map +1 -1
  42. package/dist/components/widget/BridgeList/hooks.d.ts +2 -2
  43. package/dist/components/widget/BridgeList/hooks.d.ts.map +1 -1
  44. package/dist/components/widget/BridgeList/hooks.js +79 -73
  45. package/dist/components/widget/BridgeList/hooks.js.map +1 -1
  46. package/dist/components/widget/BridgePreferences/BridgePreferences.js.map +1 -1
  47. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts +2 -2
  48. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.d.ts.map +1 -1
  49. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
  50. package/dist/components/widget/Button/CancelButton/CancelButton.js.map +1 -1
  51. package/dist/components/widget/Button/CancelButton/CancelButtonWithDrawer.js.map +1 -1
  52. package/dist/components/widget/Button/DismissButton.js.map +1 -1
  53. package/dist/components/widget/Button/RefreshButton.js.map +1 -1
  54. package/dist/components/widget/CompareQuotes/CompareQuotes.js.map +1 -1
  55. package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
  56. package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
  57. package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
  58. package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
  59. package/dist/components/widget/DexesList/DexItem.js.map +1 -1
  60. package/dist/components/widget/DexesList/DexesList.js.map +1 -1
  61. package/dist/components/widget/DexesList/getDexProps.js.map +1 -1
  62. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
  63. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
  64. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  65. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  66. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
  67. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -1
  68. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
  69. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
  70. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
  71. package/dist/components/widget/Drawer/Overlay.js.map +1 -1
  72. package/dist/components/widget/Drawer/index.js.map +1 -1
  73. package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
  74. package/dist/components/widget/Duration/Duration.js.map +1 -1
  75. package/dist/components/widget/Duration/utils.js.map +1 -1
  76. package/dist/components/widget/EnabledExchanges/EnabledExchanges.js.map +1 -1
  77. package/dist/components/widget/EnabledExchanges/EnabledExchangesList.js.map +1 -1
  78. package/dist/components/widget/EnabledList/EnabledList.js.map +1 -1
  79. package/dist/components/widget/FetchingQuotes/FetchingQuotes.js.map +1 -1
  80. package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
  81. package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
  82. package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
  83. package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
  84. package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
  85. package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
  86. package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
  87. package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
  88. package/dist/components/widget/ImportToken/useImportTokenDrawer.js.map +1 -1
  89. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
  90. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
  91. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
  92. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +5 -8
  93. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
  94. package/dist/components/widget/LimitOrderItem/constants.js.map +1 -1
  95. package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
  96. package/dist/components/widget/LimitPriceInput/index.js +6 -6
  97. package/dist/components/widget/LimitPriceInput/index.js.map +1 -1
  98. package/dist/components/widget/Line/Line.js.map +1 -1
  99. package/dist/components/widget/ListItem/ListItemWithSwitch.js.map +1 -1
  100. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
  101. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
  102. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
  103. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.js.map +1 -1
  104. package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.js.map +1 -1
  105. package/dist/components/widget/NetworkSwitcher/common/NetworkItem.js.map +1 -1
  106. package/dist/components/widget/NetworkSwitcher/utils/items.js.map +1 -1
  107. package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
  108. package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
  109. package/dist/components/widget/NumberInput/NumberInput.js.map +1 -1
  110. package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
  111. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
  112. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
  113. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/utils.js.map +1 -1
  114. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +5 -8
  115. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js.map +1 -1
  116. package/dist/components/widget/OtcOrderItem/constants.js.map +1 -1
  117. package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
  118. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
  119. package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
  120. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
  121. package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
  122. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  123. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
  124. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
  125. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
  126. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
  127. package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
  128. package/dist/components/widget/Screen/ScreenContainer.js.map +1 -1
  129. package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
  130. package/dist/components/widget/SettingsButton/SettingsButton.js.map +1 -1
  131. package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
  132. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
  133. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
  134. package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
  135. package/dist/components/widget/SwapRate/SwapRateWithTooltip.js.map +1 -1
  136. package/dist/components/widget/SwapRate/utils.js.map +1 -1
  137. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js.map +1 -1
  138. package/dist/components/widget/Tabs/Tabs.js.map +1 -1
  139. package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
  140. package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
  141. package/dist/components/widget/TokenBadge/TokenLink.js.map +1 -1
  142. package/dist/components/widget/TokenInput/InputContainer.js.map +1 -1
  143. package/dist/components/widget/TokenInput/InputField.js.map +1 -1
  144. package/dist/components/widget/TokenInput/InputFooter.js.map +1 -1
  145. package/dist/components/widget/TokenInput/InputHeader.js.map +1 -1
  146. package/dist/components/widget/TokenInput/common/Balance.js.map +1 -1
  147. package/dist/components/widget/TokenInput/common/MaxButtons.js.map +1 -1
  148. package/dist/components/widget/TokenInput/index.js.map +1 -1
  149. package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
  150. package/dist/components/widget/TradeOverview/CancelButtonWithDrawer.js.map +1 -1
  151. package/dist/components/widget/TradeOverview/CancelOrder/ConfirmCancel.js.map +1 -1
  152. package/dist/components/widget/TradeOverview/CancelOrder/utils.js.map +1 -1
  153. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  154. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  155. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +2 -2
  156. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  157. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
  158. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
  159. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  160. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
  161. package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
  162. package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
  163. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  164. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
  165. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
  166. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
  167. package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
  168. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  169. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  170. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  171. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  172. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -1
  173. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
  174. package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
  175. package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
  176. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  177. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  178. package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
  179. package/dist/components/widget/TradeOverview/TradeOverviewScreen.js.map +1 -1
  180. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts +2 -2
  181. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.d.ts.map +1 -1
  182. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  183. package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
  184. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  185. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -1
  186. package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
  187. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts +4 -1
  188. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.d.ts.map +1 -1
  189. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js +1 -1
  190. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
  191. package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js.map +1 -1
  192. package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js.map +1 -1
  193. package/dist/components/widget/TradeParameters/DegenModeConfirmation.js.map +1 -1
  194. package/dist/components/widget/TradeParameters/DegenModeParameter.js.map +1 -1
  195. package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
  196. package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -1
  197. package/dist/components/widget/TradeParameters/EnabledExchangesParameters/EnabledExchangesParameters.js.map +1 -1
  198. package/dist/components/widget/TradeParameters/EnabledExchangesParameters/useDraftEnabledExchangesState.js.map +1 -1
  199. package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
  200. package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
  201. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
  202. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
  203. package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
  204. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
  205. package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
  206. package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js.map +1 -1
  207. package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js.map +1 -1
  208. package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js.map +1 -1
  209. package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js.map +1 -1
  210. package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.js.map +1 -1
  211. package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js.map +1 -1
  212. package/dist/components/widget/TradeParameters/state/deltaParamActionsAtom.js.map +1 -1
  213. package/dist/components/widget/TradeParameters/state/enabledExchanges/disabledDexesAtomFamily.js.map +1 -1
  214. package/dist/components/widget/TradeParameters/state/enabledExchanges/useDisabledDexes.js.map +1 -1
  215. package/dist/components/widget/TradeParameters/state/slippageParamAtom.js.map +1 -1
  216. package/dist/components/widget/TradeParameters/state/tradePreferencesAtom.js.map +1 -1
  217. package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
  218. package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
  219. package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
  220. package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
  221. package/dist/components/widget/TransactionDetails/TransactionListItem.js.map +1 -1
  222. package/dist/components/widget/TransactionDetails/utils.js.map +1 -1
  223. package/dist/components/widget/Twap/CustomDurationDrawer.js.map +1 -1
  224. package/dist/components/widget/Twap/OrderDuration.js.map +1 -1
  225. package/dist/components/widget/Twap/OrderSplit.js.map +1 -1
  226. package/dist/components/widget/Twap/RateProtection.js.map +1 -1
  227. package/dist/components/widget/Twap/TwapDetailWithTooltip.js.map +1 -1
  228. package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
  229. package/dist/components/widget/Warning/Warning.js.map +1 -1
  230. package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
  231. package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
  232. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
  233. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
  234. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  235. package/dist/components/widget/YouGet/YouGet.js.map +1 -1
  236. package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
  237. package/dist/core/LimitOrderButton.d.ts.map +1 -1
  238. package/dist/core/LimitOrderButton.js +46 -52
  239. package/dist/core/LimitOrderButton.js.map +1 -1
  240. package/dist/core/LimitOrderDetails.js.map +1 -1
  241. package/dist/core/OtcOrderButton.js.map +1 -1
  242. package/dist/core/OtcOrderDetails.js.map +1 -1
  243. package/dist/core/Toaster.js.map +1 -1
  244. package/dist/core/TradeFlowScreenButton.d.ts +3 -4
  245. package/dist/core/TradeFlowScreenButton.d.ts.map +1 -1
  246. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  247. package/dist/core/TwapDetails.js.map +1 -1
  248. package/dist/core/Updaters.js.map +1 -1
  249. package/dist/core/Warnings.js.map +1 -1
  250. package/dist/core/across/isCrosschainPossible.js.map +1 -1
  251. package/dist/core/across/utils.js.map +1 -1
  252. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  253. package/dist/core/button/hooks/useWidgetButtonExtraProps.js +1 -4
  254. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  255. package/dist/core/index.js.map +1 -1
  256. package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
  257. package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
  258. package/dist/core/inputs/hooks/useTokenFromInputProps.js +2 -2
  259. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  260. package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
  261. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  262. package/dist/core/inputs/hooks/useTokenToInputProps.js +2 -2
  263. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  264. package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
  265. package/dist/core/inputs/hooks/utils.d.ts.map +1 -1
  266. package/dist/core/inputs/hooks/utils.js +7 -5
  267. package/dist/core/inputs/hooks/utils.js.map +1 -1
  268. package/dist/core/inputs/state/common.js.map +1 -1
  269. package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
  270. package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
  271. package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
  272. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  273. package/dist/core/inputs/state/subscriptions.js.map +1 -1
  274. package/dist/core/limit/state/deadlineAtom.js.map +1 -1
  275. package/dist/core/limit/state/isCrosschainAtom.js.map +1 -1
  276. package/dist/core/limit/state/limitInputActionsAtom.js.map +1 -1
  277. package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
  278. package/dist/core/limit/state/receiverAddressAtom.js.map +1 -1
  279. package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
  280. package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
  281. package/dist/core/limit/state/utils.js.map +1 -1
  282. package/dist/core/limit/useLimitDetailsListProps.js.map +1 -1
  283. package/dist/core/limit/useLimitNotSupported.js.map +1 -1
  284. package/dist/core/limit/useLimitPriceDifference.js.map +1 -1
  285. package/dist/core/limit/useLimitPriceInputProps.js.map +1 -1
  286. package/dist/core/limit/useLimitRate.d.ts +2 -3
  287. package/dist/core/limit/useLimitRate.d.ts.map +1 -1
  288. package/dist/core/limit/useLimitRate.js +54 -110
  289. package/dist/core/limit/useLimitRate.js.map +1 -1
  290. package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
  291. package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
  292. package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
  293. package/dist/core/limit/useLimitTokenToInputProps.js +1 -4
  294. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  295. package/dist/core/logger.js.map +1 -1
  296. package/dist/core/otc/state/deadlineAtom.js.map +1 -1
  297. package/dist/core/otc/state/otcInputActionsAtom.js.map +1 -1
  298. package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
  299. package/dist/core/otc/state/receiverAddressAtom.js.map +1 -1
  300. package/dist/core/otc/state/selectedTokenActionsAtom.js.map +1 -1
  301. package/dist/core/otc/state/selectedTokenAtom.js.map +1 -1
  302. package/dist/core/otc/useOtcDetailsListProps.js.map +1 -1
  303. package/dist/core/otc/useOtcNotSupported.js.map +1 -1
  304. package/dist/core/otc/useOtcPriceDifference.js.map +1 -1
  305. package/dist/core/otc/useOtcPriceInputProps.js.map +1 -1
  306. package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
  307. package/dist/core/otc/useOtcTokenSwitcherProps.js.map +1 -1
  308. package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
  309. package/dist/core/screen/hooks/useInitialValue.js.map +1 -1
  310. package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
  311. package/dist/core/screen/hooks/useResizeObserver.js.map +1 -1
  312. package/dist/core/screen/hooks/useRunOnMount.js.map +1 -1
  313. package/dist/core/screen/state/hooks/useScreen.js.map +1 -1
  314. package/dist/core/screen/state/hooks/useScreenValue.js.map +1 -1
  315. package/dist/core/screen/state/hooks/useSetScreen.js.map +1 -1
  316. package/dist/core/screen/state/screenAtom.js.map +1 -1
  317. package/dist/core/state/apiConfigAtom.js.map +1 -1
  318. package/dist/core/state/chainToAtom.js.map +1 -1
  319. package/dist/core/state/configActionsAtom.js.map +1 -1
  320. package/dist/core/state/configEffectAtom.js.map +1 -1
  321. package/dist/core/state/containerAtom.js.map +1 -1
  322. package/dist/core/state/enabledChainsAtom.js.map +1 -1
  323. package/dist/core/state/enabledTradeModesAtom.js.map +1 -1
  324. package/dist/core/state/externalProviderAtom.js.map +1 -1
  325. package/dist/core/state/getSelectableDestChains.js.map +1 -1
  326. package/dist/core/state/isCrosschainAtom.js.map +1 -1
  327. package/dist/core/state/tradeModeAtom.js.map +1 -1
  328. package/dist/core/state/validatedPartnerConfigAtom.js.map +1 -1
  329. package/dist/core/state/validatedReferrerConfigAtom.js.map +1 -1
  330. package/dist/core/state/widgetEventsAtom.js.map +1 -1
  331. package/dist/core/subscriptions.js.map +1 -1
  332. package/dist/core/swapDetails/fees.d.ts.map +1 -1
  333. package/dist/core/swapDetails/fees.js +16 -11
  334. package/dist/core/swapDetails/fees.js.map +1 -1
  335. package/dist/core/swapDetails/maxToPay.d.ts.map +1 -1
  336. package/dist/core/swapDetails/maxToPay.js +18 -17
  337. package/dist/core/swapDetails/maxToPay.js.map +1 -1
  338. package/dist/core/swapDetails/orderRouting.js.map +1 -1
  339. package/dist/core/swapDetails/priceImpact.js.map +1 -1
  340. package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
  341. package/dist/core/swapDetails/youGet.js.map +1 -1
  342. package/dist/core/twap/state/isCrosschainAtom.js.map +1 -1
  343. package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -1
  344. package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
  345. package/dist/core/twap/state/twapParamsAtom.js.map +1 -1
  346. package/dist/core/twap/state/twapSideAtom.js.map +1 -1
  347. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts +2 -2
  348. package/dist/core/twap/twapDetails/minimumReceiveable.d.ts.map +1 -1
  349. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
  350. package/dist/core/twap/useTwapDetailsListProps.js.map +1 -1
  351. package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -1
  352. package/dist/core/twap/useTwapTokenSwitcherProps.js.map +1 -1
  353. package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -1
  354. package/dist/events/effects/formInput.js.map +1 -1
  355. package/dist/events/effects/price.js.map +1 -1
  356. package/dist/events/effects/swapMode.js.map +1 -1
  357. package/dist/events/getters/limit.js.map +1 -1
  358. package/dist/events/getters/otc.js.map +1 -1
  359. package/dist/events/getters/settings.js.map +1 -1
  360. package/dist/events/getters/swap.js.map +1 -1
  361. package/dist/events/getters/twap.js.map +1 -1
  362. package/dist/events/getters/widgetState.js.map +1 -1
  363. package/dist/events/hooks/useActivateEffects.js.map +1 -1
  364. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
  365. package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
  366. package/dist/events/types/priceChange.d.ts +2 -2
  367. package/dist/events/types/priceChange.d.ts.map +1 -1
  368. package/dist/events/types/swap.d.ts +2 -2
  369. package/dist/events/types/swap.d.ts.map +1 -1
  370. package/dist/events/types/twap.d.ts +2 -2
  371. package/dist/events/types/twap.d.ts.map +1 -1
  372. package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__6feb48fe37bd41e9af5c8e81d5a6f4e1/external/vaul/dist/index.js.map +1 -1
  373. package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
  374. package/dist/hooks/batch/useBatchWithApproveTxs.js.map +1 -1
  375. package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
  376. package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
  377. package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
  378. package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
  379. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
  380. package/dist/hooks/gas/useGasPrices.js.map +1 -1
  381. package/dist/hooks/gas/utils.js.map +1 -1
  382. package/dist/hooks/getCode/query.js.map +1 -1
  383. package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
  384. package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
  385. package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
  386. package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
  387. package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
  388. package/dist/hooks/otc/mutations/utils.js.map +1 -1
  389. package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
  390. package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
  391. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
  392. package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
  393. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
  394. package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
  395. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
  396. package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
  397. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
  398. package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
  399. package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
  400. package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -1
  401. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
  402. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
  403. package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
  404. package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
  405. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
  406. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -1
  407. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
  408. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2Allowance.js.map +1 -1
  409. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
  410. package/dist/hooks/permit/utils/constants.js.map +1 -1
  411. package/dist/hooks/permit/utils/construct.js.map +1 -1
  412. package/dist/hooks/permit/utils/deadlines.js.map +1 -1
  413. package/dist/hooks/permit/utils/detect.js.map +1 -1
  414. package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
  415. package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
  416. package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
  417. package/dist/hooks/permit/utils/utils.js.map +1 -1
  418. package/dist/hooks/sdk/useGetContracts.js.map +1 -1
  419. package/dist/hooks/sdk/useSpender.js.map +1 -1
  420. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts +3 -4
  421. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.d.ts.map +1 -1
  422. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
  423. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts +6 -3
  424. package/dist/hooks/swap/prices/delta/bridge/utils.d.ts.map +1 -1
  425. package/dist/hooks/swap/prices/delta/bridge/utils.js +20 -17
  426. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  427. package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js.map +1 -1
  428. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts +2 -2
  429. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.d.ts.map +1 -1
  430. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js +5 -5
  431. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  432. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -1
  433. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts +2 -2
  434. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.d.ts.map +1 -1
  435. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js +2 -2
  436. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  437. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -1
  438. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.d.ts.map +1 -1
  439. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js +27 -28
  440. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  441. package/dist/hooks/swap/prices/delta/mutations/types.d.ts +3 -3
  442. package/dist/hooks/swap/prices/delta/mutations/types.d.ts.map +1 -1
  443. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js +2 -2
  444. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  445. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
  446. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  447. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts +2 -2
  448. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.d.ts.map +1 -1
  449. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +5 -5
  450. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  451. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
  452. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.d.ts.map +1 -1
  453. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js +27 -28
  454. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  455. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
  456. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts +2 -2
  457. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.d.ts.map +1 -1
  458. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js +2 -2
  459. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  460. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js +1 -1
  461. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  462. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js +1 -1
  463. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  464. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts +5 -6
  465. package/dist/hooks/swap/prices/delta/mutations/utils.d.ts.map +1 -1
  466. package/dist/hooks/swap/prices/delta/mutations/utils.js +6 -6
  467. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  468. package/dist/hooks/swap/prices/delta/orders/types.d.ts +2 -1
  469. package/dist/hooks/swap/prices/delta/orders/types.d.ts.map +1 -1
  470. package/dist/hooks/swap/prices/delta/orders/unposted/effect.js.map +1 -1
  471. package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
  472. package/dist/hooks/swap/prices/delta/orders/unposted/storage.js.map +1 -1
  473. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts +11 -14
  474. package/dist/hooks/swap/prices/delta/orders/unposted/utils.d.ts.map +1 -1
  475. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js +3 -3
  476. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  477. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +2 -2
  478. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  479. package/dist/hooks/swap/prices/delta/orders/utils.js +6 -3
  480. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  481. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -1
  482. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
  483. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -1
  484. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
  485. package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
  486. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  487. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
  488. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js.map +1 -1
  489. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
  490. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +17 -34
  491. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  492. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +6 -6
  493. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  494. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
  495. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  496. package/dist/hooks/swap/prices/factory.d.ts.map +1 -1
  497. package/dist/hooks/swap/prices/factory.js +1 -1
  498. package/dist/hooks/swap/prices/factory.js.map +1 -1
  499. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
  500. package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
  501. package/dist/hooks/swap/prices/market/queries/dexesList/useDexesList.js.map +1 -1
  502. package/dist/hooks/swap/prices/market/queries/errors.js.map +1 -1
  503. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +1 -1
  504. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  505. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
  506. package/dist/hooks/swap/prices/types.d.ts +2 -3
  507. package/dist/hooks/swap/prices/types.d.ts.map +1 -1
  508. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  509. package/dist/hooks/swap/prices/useSwapPrices.d.ts +3 -3
  510. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  511. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  512. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +3 -3
  513. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  514. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts +2 -2
  515. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.d.ts.map +1 -1
  516. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
  517. package/dist/hooks/swap/prices/useTwapPrices.d.ts +4 -5
  518. package/dist/hooks/swap/prices/useTwapPrices.d.ts.map +1 -1
  519. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
  520. package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
  521. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts +10 -17
  522. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.d.ts.map +1 -1
  523. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js +6 -6
  524. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
  525. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
  526. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
  527. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermitEvents.js.map +1 -1
  528. package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.js.map +1 -1
  529. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
  530. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
  531. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  532. package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -1
  533. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
  534. package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
  535. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +5 -5
  536. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  537. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +119 -124
  538. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  539. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  540. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts +2 -2
  541. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.d.ts.map +1 -1
  542. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +159 -196
  543. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  544. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
  545. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  546. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  547. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts +5 -5
  548. package/dist/hooks/swap/tradeFlow/useTwapFlow.d.ts.map +1 -1
  549. package/dist/hooks/swap/tradeFlow/useTwapFlow.js +217 -229
  550. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  551. package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js.map +1 -1
  552. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
  553. package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
  554. package/dist/hooks/tokens/allowance/utils.js.map +1 -1
  555. package/dist/hooks/tokens/balances/queries.js.map +1 -1
  556. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
  557. package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
  558. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
  559. package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
  560. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
  561. package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -1
  562. package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
  563. package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
  564. package/dist/hooks/tokens/data/useFetchTokens.js.map +1 -1
  565. package/dist/hooks/tokens/data/useMultichainTokensData.js.map +1 -1
  566. package/dist/hooks/tokens/prices/queries.js.map +1 -1
  567. package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
  568. package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
  569. package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
  570. package/dist/hooks/tokens/useNativeToken.js.map +1 -1
  571. package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
  572. package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
  573. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  574. package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
  575. package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
  576. package/dist/hooks/txs/mutations/useReplaceTx.js.map +1 -1
  577. package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
  578. package/dist/hooks/txs/queries/useAccountNonce.js.map +1 -1
  579. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  580. package/dist/hooks/txs/queries/useTxFees.js.map +1 -1
  581. package/dist/hooks/txs/queries/useTxHistory.js.map +1 -1
  582. package/dist/hooks/txs/queries/useTxResponse.js.map +1 -1
  583. package/dist/hooks/txs/queries/useWalletCanReplaceTx.js.map +1 -1
  584. package/dist/hooks/txs/queries/utils.js.map +1 -1
  585. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  586. package/dist/hooks/useBreakpoints.js.map +1 -1
  587. package/dist/hooks/useBridgeInfo.js.map +1 -1
  588. package/dist/hooks/useBridgeProtocols.js.map +1 -1
  589. package/dist/hooks/useCachedQueryError.js.map +1 -1
  590. package/dist/hooks/useChainMatches.js.map +1 -1
  591. package/dist/hooks/useClickOutside.js.map +1 -1
  592. package/dist/hooks/useCurrentChain.js.map +1 -1
  593. package/dist/hooks/useDebouncedInputState.js.map +1 -1
  594. package/dist/hooks/useEIP1559Enabled.js.map +1 -1
  595. package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
  596. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  597. package/dist/hooks/useMinViemClient.js.map +1 -1
  598. package/dist/hooks/useSDK.d.ts +19 -3
  599. package/dist/hooks/useSDK.d.ts.map +1 -1
  600. package/dist/hooks/useSDK.js +65 -35
  601. package/dist/hooks/useSDK.js.map +1 -1
  602. package/dist/hooks/useSelectableDestChains.js.map +1 -1
  603. package/dist/hooks/useSlippage.js.map +1 -1
  604. package/dist/hooks/useSwitchChainWithGuard.js.map +1 -1
  605. package/dist/lib/constants/urls.js.map +1 -1
  606. package/dist/lib/ipfs.js.map +1 -1
  607. package/dist/lib/queryClient.js +1 -1
  608. package/dist/lib/queryClient.js.map +1 -1
  609. package/dist/lib/tradeMode.js.map +1 -1
  610. package/dist/lib/utils/approval.js.map +1 -1
  611. package/dist/lib/utils/atomWithCompare.js.map +1 -1
  612. package/dist/lib/utils/copyToClipboard.js.map +1 -1
  613. package/dist/lib/utils/delta.js.map +1 -1
  614. package/dist/lib/utils/dexes.js.map +1 -1
  615. package/dist/lib/utils/explorer.js.map +1 -1
  616. package/dist/lib/utils/fee.js.map +1 -1
  617. package/dist/lib/utils/formatFiatPrice.js.map +1 -1
  618. package/dist/lib/utils/formatPercent.js.map +1 -1
  619. package/dist/lib/utils/formatTokenBalance.js.map +1 -1
  620. package/dist/lib/utils/index.js.map +1 -1
  621. package/dist/lib/utils/logger.js.map +1 -1
  622. package/dist/lib/utils/metabase.js.map +1 -1
  623. package/dist/lib/utils/mobile.js.map +1 -1
  624. package/dist/lib/utils/price.d.ts +5 -2
  625. package/dist/lib/utils/price.d.ts.map +1 -1
  626. package/dist/lib/utils/price.js +8 -5
  627. package/dist/lib/utils/price.js.map +1 -1
  628. package/dist/lib/utils/priceImpact.js.map +1 -1
  629. package/dist/lib/utils/providerErrors.js.map +1 -1
  630. package/dist/lib/utils/rate.js.map +1 -1
  631. package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
  632. package/dist/lib/utils/savedAmountUSD.js.map +1 -1
  633. package/dist/lib/utils/scaleFactor.js.map +1 -1
  634. package/dist/lib/utils/slippage.js.map +1 -1
  635. package/dist/lib/utils/time.js.map +1 -1
  636. package/dist/lib/utils/toDecimal.js.map +1 -1
  637. package/dist/lib/utils/toasts.js.map +1 -1
  638. package/dist/lib/utils/tradeFlow.js.map +1 -1
  639. package/dist/lib/utils/transactionHandlers.js.map +1 -1
  640. package/dist/lib/utils/tuple.js.map +1 -1
  641. package/dist/lib/utils/twap.d.ts +2 -2
  642. package/dist/lib/utils/twap.d.ts.map +1 -1
  643. package/dist/lib/utils/twap.js +2 -2
  644. package/dist/lib/utils/twap.js.map +1 -1
  645. package/dist/lib/utils/useDateNow.js.map +1 -1
  646. package/dist/lib/web3/wagmi/config.js.map +1 -1
  647. package/dist/lib/web3/wagmi/external.js.map +1 -1
  648. package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
  649. package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
  650. package/dist/lib/web3/wagmi/utils.js.map +1 -1
  651. package/dist/tokens/blacklist.js.map +1 -1
  652. package/dist/tokens/constructor.js.map +1 -1
  653. package/dist/tokens/defaultTokens.js.map +1 -1
  654. package/dist/tokens/hooks.js.map +1 -1
  655. package/dist/tokens/lists/constants.js.map +1 -1
  656. package/dist/tokens/lists/download.js.map +1 -1
  657. package/dist/tokens/lists/state/effects.js.map +1 -1
  658. package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
  659. package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
  660. package/dist/tokens/overrides.js.map +1 -1
  661. package/dist/tokens/queries.js.map +1 -1
  662. package/dist/tokens/stabeCoins/hooks.js.map +1 -1
  663. package/dist/tokens/stabeCoins/index.js.map +1 -1
  664. package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
  665. package/dist/tokens/state/allTokensByChainAtom.js.map +1 -1
  666. package/dist/tokens/state/constructTokens.js.map +1 -1
  667. package/dist/tokens/state/fromListsAtom.js.map +1 -1
  668. package/dist/tokens/utils/areTokensSame.js.map +1 -1
  669. package/dist/tokens/utils/brand.js.map +1 -1
  670. package/dist/tokens/utils/eth.js.map +1 -1
  671. package/dist/tokens/utils/filtering.js.map +1 -1
  672. package/dist/tokens/utils/sets.js.map +1 -1
  673. package/dist/tokens/utils/sorting.js.map +1 -1
  674. package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -1
  675. package/dist/transactions/hash.js.map +1 -1
  676. package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
  677. package/dist/transactions/queries/ensureEstimateFeesPerGas.js.map +1 -1
  678. package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
  679. package/dist/transactions/queries/ensureTxResponse.js.map +1 -1
  680. package/dist/transactions/state/effects/finalize.js.map +1 -1
  681. package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
  682. package/dist/transactions/state/hooks/useMarkTxAsDropped.js.map +1 -1
  683. package/dist/transactions/state/hooks/useTransactions.js.map +1 -1
  684. package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
  685. package/dist/transactions/state/transactionsAtom.js.map +1 -1
  686. package/dist/transactions/status.js.map +1 -1
  687. package/dist/transactions/utils.js.map +1 -1
  688. package/package.json +6 -6
  689. package/dist/hooks/swap/prices/delta/bridge/const.d.ts +0 -8
  690. package/dist/hooks/swap/prices/delta/bridge/const.d.ts.map +0 -1
  691. package/dist/hooks/swap/prices/delta/bridge/const.js +0 -13
  692. package/dist/hooks/swap/prices/delta/bridge/const.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"twap.js","names":["DeltaOrBridgePrice","Big","millisecondsToSeconds","minutesToMilliseconds","TEN_MINUTES_MS","produceDeltaOrderDeadline","DeltaAuctionWithTwapOrder","getTwapChunkAmount","totalWei","numSlices","div","toFixed","getTotalTwapAmount","chunkWei","mul","getTwapAmountsFromPrice","price","srcAmount","destAmount","receivedDestAmount","produceTwapDeadlines","durationMin","orderDurationMs","orderDeadline","orderInterval","Math","floor","Number","getTwapAuctionDeadlines","order","createdAt","Pick","durationMs","interval","endsInMs","Date","getTime"],"sources":["../../../src/lib/utils/twap.ts"],"sourcesContent":["import type { DeltaOrBridgePrice } from \"@/hooks/swap/prices/types\";\nimport Big from \"big.js\";\nimport { millisecondsToSeconds, minutesToMilliseconds } from \"./time\";\nimport { TEN_MINUTES_MS } from \"../constants/time\";\nimport { produceDeltaOrderDeadline } from \"./delta\";\nimport type { DeltaAuctionWithTwapOrder } from \"@/hooks/swap/prices/delta/orders/types\";\n\nexport function getTwapChunkAmount({\n totalWei,\n numSlices,\n}: {\n totalWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || totalWei === \"0\") return totalWei;\n return Big(totalWei).div(numSlices).toFixed(0, 0); // roundDown to avoid overestimating\n}\n\nexport function getTotalTwapAmount({\n chunkWei,\n numSlices,\n}: {\n chunkWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || chunkWei === \"0\") return chunkWei;\n return Big(chunkWei).mul(numSlices).toFixed();\n}\n\nexport function getTwapAmountsFromPrice({\n price,\n numSlices,\n}: {\n price: DeltaOrBridgePrice;\n numSlices: number;\n}) {\n return {\n srcAmount: getTotalTwapAmount({ chunkWei: price.srcAmount, numSlices }),\n destAmount: getTotalTwapAmount({\n chunkWei: price.receivedDestAmount,\n numSlices,\n }),\n };\n}\nexport function produceTwapDeadlines({\n durationMin,\n numSlices,\n}: {\n durationMin: number;\n numSlices: number;\n}) {\n const orderDurationMs = minutesToMilliseconds(durationMin);\n const orderDeadline = produceDeltaOrderDeadline(\n // 10 min buffer for possible delays in order creation or slice executions\n orderDurationMs + TEN_MINUTES_MS\n );\n const orderInterval = Math.floor(\n millisecondsToSeconds(orderDurationMs) / numSlices\n );\n\n return {\n orderDeadline: Number(orderDeadline),\n orderInterval,\n };\n}\n\nexport function getTwapAuctionDeadlines({\n order,\n createdAt,\n}: Pick<DeltaAuctionWithTwapOrder, \"order\" | \"createdAt\">) {\n const durationMs = order.numSlices * order.interval * 1000;\n const endsInMs = new Date(createdAt).getTime() + durationMs;\n return { endsInMs, durationMs };\n}\n"],"mappings":";;;;;AAOA,SAAgBO,EAAmB,EACjCC,aACAC,gBAIS;AAET,QADIA,KAAa,KAAKD,MAAa,MAAYA,IACxCP,EAAIO,EAAS,CAACE,IAAID,EAAU,CAACE,QAAQ,GAAG,EAAE;;AAGnD,SAAgBC,EAAmB,EACjCC,aACAJ,gBAIS;AAET,QADIA,KAAa,KAAKI,MAAa,MAAYA,IACxCZ,EAAIY,EAAS,CAACC,IAAIL,EAAU,CAACE,SAAS;;AAG/C,SAAgBI,EAAwB,EACtCC,UACAP,gBAIC;AACD,QAAO;EACLQ,WAAWL,EAAmB;GAAEC,UAAUG,EAAMC;GAAWR;GAAW,CAAC;EACvES,YAAYN,EAAmB;GAC7BC,UAAUG,EAAMG;GAChBV;GACD,CAAA;EACF;;AAEH,SAAgBW,EAAqB,EACnCC,gBACAZ,gBAIC;CACD,IAAMa,IAAkBnB,EAAsBkB,EAAY,EACpDE,IAAgBlB,EAEpBiB,IAAkBlB,EACnB,EACKoB,IAAgBC,KAAKC,MACzBxB,EAAsBoB,EAAgB,GAAGb,EAC1C;AAED,QAAO;EACLc,eAAeI,OAAOJ,EAAc;EACpCC;EACD;;AAGH,SAAgBI,EAAwB,EACtCC,UACAC,gBACyD;CACzD,IAAME,IAAaH,EAAMpB,YAAYoB,EAAMI,WAAW;AAEtD,QAAO;EAAEC,UADQ,IAAIC,KAAKL,EAAU,CAACM,SAAS,GAAGJ;EAC9BA;EAAY"}
1
+ {"version":3,"file":"twap.js","names":["DeltaPriceV2","Big","millisecondsToSeconds","minutesToMilliseconds","TEN_MINUTES_MS","produceDeltaOrderDeadline","DeltaAuctionWithTwapOrder","getTwapChunkAmount","totalWei","numSlices","div","toFixed","getTotalTwapAmount","chunkWei","mul","getTwapAmountsFromPrice","price","srcAmount","route","origin","input","amount","destAmount","destination","output","produceTwapDeadlines","durationMin","orderDurationMs","orderDeadline","orderInterval","Math","floor","Number","getTwapAuctionDeadlines","order","createdAt","Pick","durationMs","interval","endsInMs","Date","getTime"],"sources":["../../../src/lib/utils/twap.ts"],"sourcesContent":["import type { DeltaPriceV2 } from \"@velora-dex/sdk\";\nimport Big from \"big.js\";\nimport { millisecondsToSeconds, minutesToMilliseconds } from \"./time\";\nimport { TEN_MINUTES_MS } from \"../constants/time\";\nimport { produceDeltaOrderDeadline } from \"./delta\";\nimport type { DeltaAuctionWithTwapOrder } from \"@/hooks/swap/prices/delta/orders/types\";\n\nexport function getTwapChunkAmount({\n totalWei,\n numSlices,\n}: {\n totalWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || totalWei === \"0\") return totalWei;\n return Big(totalWei).div(numSlices).toFixed(0, 0); // roundDown to avoid overestimating\n}\n\nexport function getTotalTwapAmount({\n chunkWei,\n numSlices,\n}: {\n chunkWei: string;\n numSlices: number;\n}): string {\n if (numSlices <= 0 || chunkWei === \"0\") return chunkWei;\n return Big(chunkWei).mul(numSlices).toFixed();\n}\n\nexport function getTwapAmountsFromPrice({\n price,\n numSlices,\n}: {\n price: DeltaPriceV2;\n numSlices: number;\n}) {\n return {\n srcAmount: getTotalTwapAmount({\n chunkWei: price.route.origin.input.amount,\n numSlices,\n }),\n destAmount: getTotalTwapAmount({\n chunkWei: price.route.destination.output.amount,\n numSlices,\n }),\n };\n}\nexport function produceTwapDeadlines({\n durationMin,\n numSlices,\n}: {\n durationMin: number;\n numSlices: number;\n}) {\n const orderDurationMs = minutesToMilliseconds(durationMin);\n const orderDeadline = produceDeltaOrderDeadline(\n // 10 min buffer for possible delays in order creation or slice executions\n orderDurationMs + TEN_MINUTES_MS\n );\n const orderInterval = Math.floor(\n millisecondsToSeconds(orderDurationMs) / numSlices\n );\n\n return {\n orderDeadline: Number(orderDeadline),\n orderInterval,\n };\n}\n\nexport function getTwapAuctionDeadlines({\n order,\n createdAt,\n}: Pick<DeltaAuctionWithTwapOrder, \"order\" | \"createdAt\">) {\n const durationMs = order.numSlices * order.interval * 1000;\n const endsInMs = new Date(createdAt).getTime() + durationMs;\n return { endsInMs, durationMs };\n}\n"],"mappings":";;;;;AAOA,SAAgBO,EAAmB,EACjCC,aACAC,gBAIS;CAET,OADIA,KAAa,KAAKD,MAAa,MAAYA,IACxCP,EAAIO,EAAS,CAACE,IAAID,EAAU,CAACE,QAAQ,GAAG,EAAE;;AAGnD,SAAgBC,EAAmB,EACjCC,aACAJ,gBAIS;CAET,OADIA,KAAa,KAAKI,MAAa,MAAYA,IACxCZ,EAAIY,EAAS,CAACC,IAAIL,EAAU,CAACE,SAAS;;AAG/C,SAAgBI,EAAwB,EACtCC,UACAP,gBAIC;CACD,OAAO;EACLQ,WAAWL,EAAmB;GAC5BC,UAAUG,EAAME,MAAMC,OAAOC,MAAMC;GACnCZ;GACD,CAAC;EACFa,YAAYV,EAAmB;GAC7BC,UAAUG,EAAME,MAAMK,YAAYC,OAAOH;GACzCZ;GACD,CAAA;EACF;;AAEH,SAAgBgB,EAAqB,EACnCC,gBACAjB,gBAIC;CACD,IAAMkB,IAAkBxB,EAAsBuB,EAAY,EACpDE,IAAgBvB,EAEpBsB,IAAkBvB,EACnB,EACKyB,IAAgBC,KAAKC,MACzB7B,EAAsByB,EAAgB,GAAGlB,EAC1C;CAED,OAAO;EACLmB,eAAeI,OAAOJ,EAAc;EACpCC;EACD;;AAGH,SAAgBI,EAAwB,EACtCC,UACAC,gBACyD;CACzD,IAAME,IAAaH,EAAMzB,YAAYyB,EAAMI,WAAW;CAEtD,OAAO;EAAEC,UADQ,IAAIC,KAAKL,EAAU,CAACM,SAAS,GAAGJ;EAC9BA;EAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDateNow.js","names":["useDateNow","Date","now"],"sources":["../../../src/lib/utils/useDateNow.ts"],"sourcesContent":["// workaround for react-compiler trying to memoize Date.now() result based on an unrelated cached value\nexport function useDateNow(): number {\n \"use no memo\";\n return Date.now();\n}\n"],"mappings":";AACA,SAAgBA,IAAqB;AACnC;AACA,QAAOC,KAAKC,KAAK"}
1
+ {"version":3,"file":"useDateNow.js","names":["useDateNow","Date","now"],"sources":["../../../src/lib/utils/useDateNow.ts"],"sourcesContent":["// workaround for react-compiler trying to memoize Date.now() result based on an unrelated cached value\nexport function useDateNow(): number {\n \"use no memo\";\n return Date.now();\n}\n"],"mappings":";AACA,SAAgBA,IAAqB;AACnC;CACA,OAAOC,KAAKC,KAAK"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","names":["createConfig","createStorage","CreateConnectorFn","injected","safe","walletConnect","coinbaseWallet","chains","transports","isInIframe","LOCAL_STORAGE_PREFIX","connectors","delayConnector","projectId","import","meta","env","VITE_WALLET_CONNECT_ID","unshift","wagmiConfig","storage","window","localStorage","undefined","key","syncConnectedChain","batch","multicall","wait","Register","config","connectorFn","C","modifiedFn","connector","modified","connectCalled","connect","args","setup","getProvider","Error"],"sources":["../../../../src/lib/web3/wagmi/config.ts"],"sourcesContent":["import { createConfig, createStorage, type CreateConnectorFn } from \"wagmi\";\nimport {\n injected,\n // metaMask,\n safe,\n walletConnect,\n coinbaseWallet,\n} from \"wagmi/connectors\";\nimport { chains } from \"./constants\";\nimport { transports } from \"./transports\";\nimport { isInIframe } from \"./isInIframe\";\nimport { LOCAL_STORAGE_PREFIX } from \"@/lib/constants/storage\";\n\n// can add more connectors to cover wallets Privy doesn't support, but need to change UI to allow connection\nconst connectors = [\n delayConnector(\n walletConnect({\n projectId: import.meta.env.VITE_WALLET_CONNECT_ID,\n }) as CreateConnectorFn\n ),\n injected() as CreateConnectorFn,\n // metaMask() as CreateConnectorFn, // injected() detects metamask already\n coinbaseWallet() as CreateConnectorFn,\n // raw returned types result in\n // The inferred type of 'config' cannot be named without a reference to '.pnpm/@safe-global+safe-apps-provider@0.18.6_typescript@5.8.3/node_modules/@safe-global/safe-apps-provider'. This is likely not portable. A type annotation is necessary.\n\n // getPrivyWalletConnector(), // only CorssApp Privy connector is available, not our use case\n];\n// @TODO see how we can implement Ledger connector, borrow it from rainbowkit?\n\nif (isInIframe) {\n // when widget is in an App inside iframe, chances are we are in Safe web app,\n // allow Safe connector to be used.\n // we can't know if we are inside specifically Safe iframe until we try to connect, though.\n // A check for that is in isInsideSafeIframe.ts\n connectors.unshift(safe());\n}\n\nexport const wagmiConfig = createConfig({\n storage: createStorage({\n storage: typeof window !== \"undefined\" ? window.localStorage : undefined,\n key: `${LOCAL_STORAGE_PREFIX}_wagmi`,\n }),\n chains,\n connectors,\n transports,\n syncConnectedChain: false,\n batch: {\n multicall: {\n wait: 20,\n },\n },\n});\n\ndeclare module \"wagmi\" {\n interface Register {\n config: typeof wagmiConfig;\n }\n}\n\n/**\n * Normal flow:\n * 1. connector.setup() (optional func) is called on connector creation inside wagmi config\n * 1.1. connector.getProvider() is called inside connector.setup() (usually)\n * 2. connector.getProvider() is called inside reconnect in wagmi config\n * 3. connector.connect() is called on wallet connection\n * 3.1. connector.getProvider() is called inside connector.connect()\n *\n * if getProvider contains some singleton init logic, it may break if called again in a different context:\n * e.g. WalletConnect connection in Widget + in integrating app.\n * WConnectProvider.init() called inside Widget and in the integrating App can interfere with each other,\n * especially if inside Widget is called first.\n *\n * Delayed flow:\n * 1. connector.setup removed\n * 2. connector.getProvider() throws until connector.connect() is called (drawback:this disables reconnection on page load)\n * 3. connector.getProvider() is called on wallet connection inside connector.connect()\n */\nfunction delayConnector<C extends CreateConnectorFn>(connectorFn: C): C {\n const modifiedFn = ((config) => {\n const connector = connectorFn(config);\n const modified = {\n ...connector,\n };\n\n let connectCalled = false;\n\n modified.connect = async (...args) => {\n if (!connectCalled) {\n // first call to connect() will call setup() that was skipped in delayed flow\n connectCalled = true;\n await connector.setup?.(); // getProvvider is called inside setup(), at least in WalletConnect connector\n }\n return connector.connect(...args);\n };\n\n modified.getProvider = async (...args) => {\n // disallow provider specific logic until connect() is called explicitly\n if (!connectCalled) {\n throw new Error(\n \"Provider not available until connector.connect() is called\"\n );\n }\n return connector.getProvider(...args);\n };\n\n delete modified.setup;\n return modified;\n }) as C;\n\n return modifiedFn;\n}\n"],"mappings":";;;;;;;AAcA,IAAMW,IAAa;CACjBC,EACEP,EAAc,EACZQ,WAAAA,oCACD,CAAC,CACH;CACDV,GAAU;CAEVG,GAAgB;CAKjB;AAGGG,KAKFE,EAAWO,QAAQd,GAAM,CAAC;AAG5B,IAAae,IAAcnB,EAAa;CACtCoB,SAASnB,EAAc;EACrBmB,SAAS,OAAOC,SAAW,MAAcA,OAAOC,eAAeC,KAAAA;EAC/DC,KAAK,GAAGd,EAAoB;EAC7B,CAAC;CACFH;CACAI;CACAH;CACAiB,oBAAoB;CACpBC,OAAO,EACLC,WAAW,EACTC,MAAM,IACR,EACF;CACD,CAAC;AA0BF,SAAShB,EAA4CmB,GAAmB;AAgCtE,UA/BqBD,MAAW;EAC9B,IAAMI,IAAYH,EAAYD,EAAO,EAC/BK,IAAW,EACf,GAAGD,GACJ,EAEGE,IAAgB;AAsBpB,SApBAD,EAASE,UAAU,OAAO,GAAGC,OACtBF,MAEHA,IAAgB,IAChB,MAAMF,EAAUK,SAAS,GAEpBL,EAAUG,QAAQ,GAAGC,EAAK,GAGnCH,EAASK,cAAc,OAAO,GAAGF,MAAS;AAExC,OAAI,CAACF,EACH,OAAUK,MACR,6DACD;AAEH,UAAOP,EAAUM,YAAY,GAAGF,EAAK;KAGvC,OAAOH,EAASI,OACTJ"}
1
+ {"version":3,"file":"config.js","names":["createConfig","createStorage","CreateConnectorFn","injected","safe","walletConnect","coinbaseWallet","chains","transports","isInIframe","LOCAL_STORAGE_PREFIX","connectors","delayConnector","projectId","import","meta","env","VITE_WALLET_CONNECT_ID","unshift","wagmiConfig","storage","window","localStorage","undefined","key","syncConnectedChain","batch","multicall","wait","Register","config","connectorFn","C","modifiedFn","connector","modified","connectCalled","connect","args","setup","getProvider","Error"],"sources":["../../../../src/lib/web3/wagmi/config.ts"],"sourcesContent":["import { createConfig, createStorage, type CreateConnectorFn } from \"wagmi\";\nimport {\n injected,\n // metaMask,\n safe,\n walletConnect,\n coinbaseWallet,\n} from \"wagmi/connectors\";\nimport { chains } from \"./constants\";\nimport { transports } from \"./transports\";\nimport { isInIframe } from \"./isInIframe\";\nimport { LOCAL_STORAGE_PREFIX } from \"@/lib/constants/storage\";\n\n// can add more connectors to cover wallets Privy doesn't support, but need to change UI to allow connection\nconst connectors = [\n delayConnector(\n walletConnect({\n projectId: import.meta.env.VITE_WALLET_CONNECT_ID,\n }) as CreateConnectorFn\n ),\n injected() as CreateConnectorFn,\n // metaMask() as CreateConnectorFn, // injected() detects metamask already\n coinbaseWallet() as CreateConnectorFn,\n // raw returned types result in\n // The inferred type of 'config' cannot be named without a reference to '.pnpm/@safe-global+safe-apps-provider@0.18.6_typescript@5.8.3/node_modules/@safe-global/safe-apps-provider'. This is likely not portable. A type annotation is necessary.\n\n // getPrivyWalletConnector(), // only CorssApp Privy connector is available, not our use case\n];\n// @TODO see how we can implement Ledger connector, borrow it from rainbowkit?\n\nif (isInIframe) {\n // when widget is in an App inside iframe, chances are we are in Safe web app,\n // allow Safe connector to be used.\n // we can't know if we are inside specifically Safe iframe until we try to connect, though.\n // A check for that is in isInsideSafeIframe.ts\n connectors.unshift(safe());\n}\n\nexport const wagmiConfig = createConfig({\n storage: createStorage({\n storage: typeof window !== \"undefined\" ? window.localStorage : undefined,\n key: `${LOCAL_STORAGE_PREFIX}_wagmi`,\n }),\n chains,\n connectors,\n transports,\n syncConnectedChain: false,\n batch: {\n multicall: {\n wait: 20,\n },\n },\n});\n\ndeclare module \"wagmi\" {\n interface Register {\n config: typeof wagmiConfig;\n }\n}\n\n/**\n * Normal flow:\n * 1. connector.setup() (optional func) is called on connector creation inside wagmi config\n * 1.1. connector.getProvider() is called inside connector.setup() (usually)\n * 2. connector.getProvider() is called inside reconnect in wagmi config\n * 3. connector.connect() is called on wallet connection\n * 3.1. connector.getProvider() is called inside connector.connect()\n *\n * if getProvider contains some singleton init logic, it may break if called again in a different context:\n * e.g. WalletConnect connection in Widget + in integrating app.\n * WConnectProvider.init() called inside Widget and in the integrating App can interfere with each other,\n * especially if inside Widget is called first.\n *\n * Delayed flow:\n * 1. connector.setup removed\n * 2. connector.getProvider() throws until connector.connect() is called (drawback:this disables reconnection on page load)\n * 3. connector.getProvider() is called on wallet connection inside connector.connect()\n */\nfunction delayConnector<C extends CreateConnectorFn>(connectorFn: C): C {\n const modifiedFn = ((config) => {\n const connector = connectorFn(config);\n const modified = {\n ...connector,\n };\n\n let connectCalled = false;\n\n modified.connect = async (...args) => {\n if (!connectCalled) {\n // first call to connect() will call setup() that was skipped in delayed flow\n connectCalled = true;\n await connector.setup?.(); // getProvvider is called inside setup(), at least in WalletConnect connector\n }\n return connector.connect(...args);\n };\n\n modified.getProvider = async (...args) => {\n // disallow provider specific logic until connect() is called explicitly\n if (!connectCalled) {\n throw new Error(\n \"Provider not available until connector.connect() is called\"\n );\n }\n return connector.getProvider(...args);\n };\n\n delete modified.setup;\n return modified;\n }) as C;\n\n return modifiedFn;\n}\n"],"mappings":";;;;;;;AAcA,IAAMW,IAAa;CACjBC,EACEP,EAAc,EACZQ,WAAAA,oCACD,CAAC,CACH;CACDV,GAAU;CAEVG,GAAgB;CAKjB;AAGGG,KAKFE,EAAWO,QAAQd,GAAM,CAAC;AAG5B,IAAae,IAAcnB,EAAa;CACtCoB,SAASnB,EAAc;EACrBmB,SAAS,OAAOC,SAAW,MAAcA,OAAOC,eAAeC,KAAAA;EAC/DC,KAAK,GAAGd,EAAoB;EAC7B,CAAC;CACFH;CACAI;CACAH;CACAiB,oBAAoB;CACpBC,OAAO,EACLC,WAAW,EACTC,MAAM,IACR,EACF;CACD,CAAC;AA0BF,SAAShB,EAA4CmB,GAAmB;CAgCtE,SA/BqBD,MAAW;EAC9B,IAAMI,IAAYH,EAAYD,EAAO,EAC/BK,IAAW,EACf,GAAGD,GACJ,EAEGE,IAAgB;EAsBpB,OApBAD,EAASE,UAAU,OAAO,GAAGC,OACtBF,MAEHA,IAAgB,IAChB,MAAMF,EAAUK,SAAS,GAEpBL,EAAUG,QAAQ,GAAGC,EAAK,GAGnCH,EAASK,cAAc,OAAO,GAAGF,MAAS;GAExC,IAAI,CAACF,GACH,MAAUK,MACR,6DACD;GAEH,OAAOP,EAAUM,YAAY,GAAGF,EAAK;KAGvC,OAAOH,EAASI,OACTJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"external.js","names":["getAccount","wagmiConfig","atom","atomWithCompare","constructPropertiesEqual","isConnectorWithSafeProvider","isWalletConnectConnectorWithSafe","loadable","getMinAccount","address","chainId","connector","accountAtom","addressAtom","get","isConnectorWithSafeAsyncAtom","isConnectorWithSafeAsyncAtomLoadableAtom"],"sources":["../../../../src/lib/web3/wagmi/external.ts"],"sourcesContent":["import { getAccount } from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport { atom } from \"jotai\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual } from \"@/lib/utils\";\nimport { isConnectorWithSafeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\nimport { isWalletConnectConnectorWithSafe } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { loadable } from \"jotai/utils\";\n\nfunction getMinAccount() {\n const { address, chainId, connector } = getAccount(wagmiConfig);\n return { address, chainId, connector };\n}\n\nexport const accountAtom = atomWithCompare(\n getMinAccount(),\n constructPropertiesEqual([\"address\", \"chainId\", \"connector\"])\n);\n\nexport const addressAtom = atom((get) => get(accountAtom).address);\n\nconst isConnectorWithSafeAsyncAtom = atom(async (get) => {\n const { connector } = get(accountAtom);\n if (!connector) return false;\n return (\n isConnectorWithSafeProvider(connector) ||\n isWalletConnectConnectorWithSafe(connector)\n );\n});\n\nexport const isConnectorWithSafeAsyncAtomLoadableAtom = loadable(\n isConnectorWithSafeAsyncAtom\n);\n"],"mappings":";;;;;;;;;AASA,SAASQ,IAAgB;CACvB,IAAM,EAAEC,YAASC,YAASC,iBAAcX,EAAWC,EAAY;AAC/D,QAAO;EAAEQ;EAASC;EAASC;EAAW;;AAGxC,IAAaC,IAAcT,EACzBK,GAAe,EACfJ,EAAyB;CAAC;CAAW;CAAW;CAAY,CAC9D,CAAC,EAEYS,IAAcX,GAAMY,MAAQA,EAAIF,EAAY,CAACH,QAAQ,EAWrDO,IAA2CT,EATnBL,EAAK,OAAOY,MAAQ;CACvD,IAAM,EAAEH,iBAAcG,EAAIF,EAAY;AAEtC,QADKD,IAEHN,EAA4BM,EAAU,IACtCL,EAAiCK,EAAU,GAHtB;EAKvB,CAID"}
1
+ {"version":3,"file":"external.js","names":["getAccount","wagmiConfig","atom","atomWithCompare","constructPropertiesEqual","isConnectorWithSafeProvider","isWalletConnectConnectorWithSafe","loadable","getMinAccount","address","chainId","connector","accountAtom","addressAtom","get","isConnectorWithSafeAsyncAtom","isConnectorWithSafeAsyncAtomLoadableAtom"],"sources":["../../../../src/lib/web3/wagmi/external.ts"],"sourcesContent":["import { getAccount } from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport { atom } from \"jotai\";\nimport { atomWithCompare } from \"@/lib/utils/atomWithCompare\";\nimport { constructPropertiesEqual } from \"@/lib/utils\";\nimport { isConnectorWithSafeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\nimport { isWalletConnectConnectorWithSafe } from \"@/hooks/connectors/useIsSafeThroughWalletConnect\";\nimport { loadable } from \"jotai/utils\";\n\nfunction getMinAccount() {\n const { address, chainId, connector } = getAccount(wagmiConfig);\n return { address, chainId, connector };\n}\n\nexport const accountAtom = atomWithCompare(\n getMinAccount(),\n constructPropertiesEqual([\"address\", \"chainId\", \"connector\"])\n);\n\nexport const addressAtom = atom((get) => get(accountAtom).address);\n\nconst isConnectorWithSafeAsyncAtom = atom(async (get) => {\n const { connector } = get(accountAtom);\n if (!connector) return false;\n return (\n isConnectorWithSafeProvider(connector) ||\n isWalletConnectConnectorWithSafe(connector)\n );\n});\n\nexport const isConnectorWithSafeAsyncAtomLoadableAtom = loadable(\n isConnectorWithSafeAsyncAtom\n);\n"],"mappings":";;;;;;;;;AASA,SAASQ,IAAgB;CACvB,IAAM,EAAEC,YAASC,YAASC,iBAAcX,EAAWC,EAAY;CAC/D,OAAO;EAAEQ;EAASC;EAASC;EAAW;;AAGxC,IAAaC,IAAcT,EACzBK,GAAe,EACfJ,EAAyB;CAAC;CAAW;CAAW;CAAY,CAC9D,CAAC,EAEYS,IAAcX,GAAMY,MAAQA,EAAIF,EAAY,CAACH,QAAQ,EAWrDO,IAA2CT,EATnBL,EAAK,OAAOY,MAAQ;CACvD,IAAM,EAAEH,iBAAcG,EAAIF,EAAY;CAEtC,OADKD,IAEHN,EAA4BM,EAAU,IACtCL,EAAiCK,EAAU,GAHtB;EAQvBI,CACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"isInsideSafeIframe.js","names":["getLogger","useQuery","withTimeout","isInIframe","SafeInfo","safeAddress","chainId","threshold","owners","isReadOnly","SafeInfoExtended","nonce","implementation","modules","fallbackHandler","guard","version","SafeMessageEvent","id","data","T","success","error","SafeRequest","method","params","env","sdkVersion","logger","useSafeInfo","$","_c","t0","Symbol","for","t1","queryKey","queryFn","_temp","staleTime","Infinity","gcTime","initialData","undefined","isLoading","isSuccess","isError","error_0","t2","errorInstance","Error","safeInfo","requestSafeInfo","timeout","signal","info","AbortSignal","Promise","request","Date","getTime","toString","resolve","reject","listener","event","MessageEvent","window","removeEventListener","addEventListener","reason","parent","postMessage"],"sources":["../../../../src/lib/web3/wagmi/isInsideSafeIframe.ts"],"sourcesContent":["import { getLogger } from \"@/core/logger\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { withTimeout } from \"viem\";\nimport { isInIframe } from \"./isInIframe\";\n\ntype SafeInfo = {\n safeAddress: string;\n chainId: number;\n threshold: number;\n owners: string[];\n isReadOnly: boolean;\n};\n\ntype SafeInfoExtended = SafeInfo & {\n nonce: number;\n implementation: string;\n modules: string[] | null;\n fallbackHandler: string | null;\n guard: string | null;\n version: string | null;\n};\n\ntype SafeMessageEvent<T = unknown> = {\n id: string;\n data: T;\n version?: string;\n success: boolean;\n error?: string;\n};\n\ntype SafeRequest = {\n id: string;\n method: string;\n params: undefined;\n env: {\n sdkVersion: string;\n };\n};\n\nconst logger = getLogger(\"SafeWallet\");\n\nexport function useSafeInfo(): {\n data?: SafeInfoExtended | null;\n isLoading: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n} {\n const { data, isLoading, isSuccess, isError, error } = useQuery({\n queryKey: [\"safeInfo\"],\n queryFn: async () => {\n if (isInIframe) {\n const errorInstance = new Error(\"Safe info request timed out\");\n try {\n const safeInfo = await withTimeout(requestSafeInfo, {\n timeout: 200,\n signal: true,\n // non-safe iframe will never answer the request, so we need to timeout\n errorInstance,\n });\n\n logger.info(\"Safe info request successful\", safeInfo);\n\n return safeInfo;\n } catch (error) {\n if (error === errorInstance) {\n logger.info(\"Safe Wallet not detected\");\n return null;\n }\n\n logger.error(\"Safe info request failed\", error);\n throw error;\n }\n }\n\n return null;\n },\n staleTime: Infinity,\n gcTime: Infinity,\n // shortcut when we are not in iframe\n initialData: isInIframe ? undefined : null,\n });\n\n return { data, isLoading, isSuccess, isError, error };\n}\n\nfunction requestSafeInfo({\n signal,\n}: {\n signal: AbortSignal | null;\n}): Promise<SafeInfoExtended> {\n const request: SafeRequest = {\n id: new Date().getTime().toString(36),\n method: \"getSafeInfo\",\n params: undefined,\n env: {\n sdkVersion: \"9.1.0\", // latest version of Safe SDK\n },\n };\n\n return new Promise((resolve, reject) => {\n const listener = (\n event: MessageEvent<SafeMessageEvent<SafeInfoExtended>>\n ) => {\n if (event.data?.id === request.id) {\n window.removeEventListener(\"message\", listener);\n if (event.data.success) {\n resolve(event.data.data);\n } else {\n reject(new Error(event.data.error));\n }\n }\n };\n\n signal?.addEventListener(\"abort\", () => {\n window.removeEventListener(\"message\", listener);\n reject(signal.reason);\n });\n\n window.addEventListener(\"message\", listener);\n\n // If inside Safe iframe, Safe web app will respond to the request\n window.parent.postMessage(request, \"*\");\n });\n}\n"],"mappings":";;;;;;AAuCA,IAAM4B,IAAS5B,EAAU,aAAa;AAEtC,SAAO6B,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;AAAA,CAAAF,EAAA,OAAAG,OAAAC,IAAA,4BAAA,IAQOF,IAAA,CAAC,WAAW,EAAAF,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAK;AAAA,CAAAL,EAAA,OAAAG,OAAAC,IAAA,4BAAA,IADwCC,IAAA;EAAAC,UACpDJ;EAAYK,SACbC;EA0BRC,WACUC;EAAQC,QACXD;EAAQE,aAEHvC,IAAAwC,KAAAA,IAAA;EACd,EAAAb,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAjCD,IAAA,EAAAX,SAAAyB,cAAAC,cAAAC,YAAAxB,OAAAyB,MAAuD9C,EAASkC,EAiC9D,EAACa;AAEkD,QAFlDlB,EAAA,OAAAX,KAAAW,EAAA,OAAAiB,KAAAjB,EAAA,OAAAgB,KAAAhB,EAAA,OAAAc,KAAAd,EAAA,OAAAe,KAEIG,IAAA;EAAA7B;EAAAyB;EAAAC;EAAAC;EAAAxB,OAAuCA;EAAO,EAAAQ,EAAA,KAAAX,GAAAW,EAAA,KAAAiB,GAAAjB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAc,GAAAd,EAAA,KAAAe,GAAAf,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAA9CkB;;AA1CF,eAAAV,IAAA;AAUD,KAAInC,GAAU;EACZ,IAAA8C,IAAsB,gBAAIC,MAAM,8BAA8B;AAC9D,MAAA;GACE,IAAAC,IAAiB,MAAMjD,EAAYkD,GAAiB;IAAAC,SACzC;IAAGC,QACJ;IAAIL;IAGb,CAAC;AAEmD,UAArDrB,EAAM2B,KAAM,gCAAgCJ,EAAS,EAE9CA;WAAQnB,GAAA;GACRV,IAAAA,IAAAA;AACP,OAAIA,MAAU2B,EAC2B,QAAvCrB,EAAM2B,KAAM,2BAA2B,EAChC;AAIT,SADA3B,EAAMN,MAAO,4BAA4BA,EAAM,EACzCA;;;AAET,QAEM;;AAWb,SAAS8B,EAAgB,EACvBE,aAG4B;CAC5B,IAAMI,IAAuB;EAC3BxC,qBAAI,IAAIyC,MAAM,EAACC,SAAS,CAACC,SAAS,GAAG;EACrCrC,QAAQ;EACRC,QAAQkB,KAAAA;EACRjB,KAAK,EACHC,YAAY,SACd;EACD;AAED,QAAO,IAAI8B,SAASK,GAASC,MAAW;EACtC,IAAMC,KACJC,MACG;AACH,GAAIA,EAAM9C,MAAMD,OAAOwC,EAAQxC,OAC7BiD,OAAOC,oBAAoB,WAAWJ,EAAS,EAC3CC,EAAM9C,KAAKE,UACbyC,EAAQG,EAAM9C,KAAKA,KAAK,GAExB4C,EAAWb,MAAMe,EAAM9C,KAAKG,MAAM,CAAC;;AAazC6C,EARAb,GAAQe,iBAAiB,eAAe;AAEtCN,GADAI,OAAOC,oBAAoB,WAAWJ,EAAS,EAC/CD,EAAOT,EAAOgB,OAAO;IACrB,EAEFH,OAAOE,iBAAiB,WAAWL,EAAS,EAG5CG,OAAOI,OAAOC,YAAYd,GAAS,IAAI;GACvC"}
1
+ {"version":3,"file":"isInsideSafeIframe.js","names":["getLogger","useQuery","withTimeout","isInIframe","SafeInfo","safeAddress","chainId","threshold","owners","isReadOnly","SafeInfoExtended","nonce","implementation","modules","fallbackHandler","guard","version","SafeMessageEvent","id","data","T","success","error","SafeRequest","method","params","env","sdkVersion","logger","useSafeInfo","$","_c","t0","Symbol","for","t1","queryKey","queryFn","_temp","staleTime","Infinity","gcTime","initialData","undefined","isLoading","isSuccess","isError","error_0","t2","errorInstance","Error","safeInfo","requestSafeInfo","timeout","signal","info","AbortSignal","Promise","request","Date","getTime","toString","resolve","reject","listener","event","MessageEvent","window","removeEventListener","addEventListener","reason","parent","postMessage"],"sources":["../../../../src/lib/web3/wagmi/isInsideSafeIframe.ts"],"sourcesContent":["import { getLogger } from \"@/core/logger\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { withTimeout } from \"viem\";\nimport { isInIframe } from \"./isInIframe\";\n\ntype SafeInfo = {\n safeAddress: string;\n chainId: number;\n threshold: number;\n owners: string[];\n isReadOnly: boolean;\n};\n\ntype SafeInfoExtended = SafeInfo & {\n nonce: number;\n implementation: string;\n modules: string[] | null;\n fallbackHandler: string | null;\n guard: string | null;\n version: string | null;\n};\n\ntype SafeMessageEvent<T = unknown> = {\n id: string;\n data: T;\n version?: string;\n success: boolean;\n error?: string;\n};\n\ntype SafeRequest = {\n id: string;\n method: string;\n params: undefined;\n env: {\n sdkVersion: string;\n };\n};\n\nconst logger = getLogger(\"SafeWallet\");\n\nexport function useSafeInfo(): {\n data?: SafeInfoExtended | null;\n isLoading: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n} {\n const { data, isLoading, isSuccess, isError, error } = useQuery({\n queryKey: [\"safeInfo\"],\n queryFn: async () => {\n if (isInIframe) {\n const errorInstance = new Error(\"Safe info request timed out\");\n try {\n const safeInfo = await withTimeout(requestSafeInfo, {\n timeout: 200,\n signal: true,\n // non-safe iframe will never answer the request, so we need to timeout\n errorInstance,\n });\n\n logger.info(\"Safe info request successful\", safeInfo);\n\n return safeInfo;\n } catch (error) {\n if (error === errorInstance) {\n logger.info(\"Safe Wallet not detected\");\n return null;\n }\n\n logger.error(\"Safe info request failed\", error);\n throw error;\n }\n }\n\n return null;\n },\n staleTime: Infinity,\n gcTime: Infinity,\n // shortcut when we are not in iframe\n initialData: isInIframe ? undefined : null,\n });\n\n return { data, isLoading, isSuccess, isError, error };\n}\n\nfunction requestSafeInfo({\n signal,\n}: {\n signal: AbortSignal | null;\n}): Promise<SafeInfoExtended> {\n const request: SafeRequest = {\n id: new Date().getTime().toString(36),\n method: \"getSafeInfo\",\n params: undefined,\n env: {\n sdkVersion: \"9.1.0\", // latest version of Safe SDK\n },\n };\n\n return new Promise((resolve, reject) => {\n const listener = (\n event: MessageEvent<SafeMessageEvent<SafeInfoExtended>>\n ) => {\n if (event.data?.id === request.id) {\n window.removeEventListener(\"message\", listener);\n if (event.data.success) {\n resolve(event.data.data);\n } else {\n reject(new Error(event.data.error));\n }\n }\n };\n\n signal?.addEventListener(\"abort\", () => {\n window.removeEventListener(\"message\", listener);\n reject(signal.reason);\n });\n\n window.addEventListener(\"message\", listener);\n\n // If inside Safe iframe, Safe web app will respond to the request\n window.parent.postMessage(request, \"*\");\n });\n}\n"],"mappings":";;;;;;AAuCA,IAAM4B,IAAS5B,EAAU,aAAa;AAEtC,SAAO6B,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAG,OAAAC,IAAA,4BAAA,IAQOF,IAAA,CAAC,WAAW,EAAAF,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAK;CAAA,AAAAL,EAAA,OAAAG,OAAAC,IAAA,4BAAA,IADwCC,IAAA;EAAAC,UACpDJ;EAAYK,SACbC;EA0BRC,WACUC;EAAQC,QACXD;EAAQE,aAEHvC,IAAAwC,KAAAA,IAAA;EACd,EAAAb,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAjCD,IAAA,EAAAX,SAAAyB,cAAAC,cAAAC,YAAAxB,OAAAyB,MAAuD9C,EAASkC,EAiC9D,EAACa;CAEkD,OAFlDlB,EAAA,OAAAX,KAAAW,EAAA,OAAAiB,KAAAjB,EAAA,OAAAgB,KAAAhB,EAAA,OAAAc,KAAAd,EAAA,OAAAe,KAEIG,IAAA;EAAA7B;EAAAyB;EAAAC;EAAAC;EAAAxB,OAAuCA;EAAO,EAAAQ,EAAA,KAAAX,GAAAW,EAAA,KAAAiB,GAAAjB,EAAA,KAAAgB,GAAAhB,EAAA,KAAAc,GAAAd,EAAA,KAAAe,GAAAf,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA,IAA9CkB;;AA1CF,eAAAV,IAAA;CAUD,IAAInC,GAAU;EACZ,IAAA8C,IAAsB,gBAAIC,MAAM,8BAA8B;EAC9D,IAAA;GACE,IAAAC,IAAiB,MAAMjD,EAAYkD,GAAiB;IAAAC,SACzC;IAAGC,QACJ;IAAIL;IAGb,CAAC;GAEmD,OAArDrB,EAAM2B,KAAM,gCAAgCJ,EAAS,EAE9CA;WAAQnB,GAAA;GACRV,IAAAA,IAAAA;GACP,IAAIA,MAAU2B,GAC2B,OAAvCrB,EAAM2B,KAAM,2BAA2B,EAChC;GAIT,MADA3B,EAAMN,MAAO,4BAA4BA,EAAM,EACzCA;;;CAET,OAEM;;AAWb,SAAS8B,EAAgB,EACvBE,aAG4B;CAC5B,IAAMI,IAAuB;EAC3BxC,qBAAI,IAAIyC,MAAM,EAACC,SAAS,CAACC,SAAS,GAAG;EACrCrC,QAAQ;EACRC,QAAQkB,KAAAA;EACRjB,KAAK,EACHC,YAAY,SACd;EACD;CAED,OAAO,IAAI8B,SAASK,GAASC,MAAW;EACtC,IAAMC,KACJC,MACG;GACH,AAAIA,EAAM9C,MAAMD,OAAOwC,EAAQxC,OAC7BiD,OAAOC,oBAAoB,WAAWJ,EAAS,EAC3CC,EAAM9C,KAAKE,UACbyC,EAAQG,EAAM9C,KAAKA,KAAK,GAExB4C,EAAWb,MAAMe,EAAM9C,KAAKG,MAAM,CAAC;;EAazC6C,AARAb,GAAQe,iBAAiB,eAAe;GAEtCN,AADAI,OAAOC,oBAAoB,WAAWJ,EAAS,EAC/CD,EAAOT,EAAOgB,OAAO;IACrB,EAEFH,OAAOE,iBAAiB,WAAWL,EAAS,EAG5CG,OAAOI,OAAOC,YAAYd,GAAS,IAAI;GACvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"switchChain.js","names":["wagmi","wagmiConfig","SupportedChainId","isConnectorWithSafeIframeProvider","switchChain","chainId","connector","isConnected","getAccount","isSafeIframeProvider","setState","prev"],"sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"sourcesContent":["import * as wagmi from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport type { SupportedChainId } from \"./types\";\nimport { isConnectorWithSafeIframeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\n\nexport async function switchChain({ chainId }: { chainId: SupportedChainId }) {\n const { connector, isConnected } = wagmi.getAccount(wagmiConfig);\n\n // check if connected to Safe iframe provider (whether through safe connector or as external provider)\n const isSafeIframeProvider =\n connector && isConnectorWithSafeIframeProvider(connector);\n\n // wagmi doesn't autoswitch state chainId with syncConnectedChain=false if connected\n if (isConnected) wagmiConfig.setState((prev) => ({ ...prev, chainId }));\n\n // safe doesn't support programmatic chain switching\n if (!isSafeIframeProvider) return wagmi.switchChain(wagmiConfig, { chainId });\n}\n"],"mappings":";;;;AAKA,eAAsBI,EAAY,EAAEC,cAA0C;CAC5E,IAAM,EAAEC,cAAWC,mBAAgBP,EAAMQ,WAAWP,EAAY,EAG1DQ,IACJH,KAAaH,EAAkCG,EAAU;AAM3D,KAHIC,KAAaN,EAAYS,UAAUC,OAAU;EAAE,GAAGA;EAAMN;EAAS,EAAE,EAGnE,CAACI,EAAsB,QAAOT,EAAMI,YAAYH,GAAa,EAAEI,YAAS,CAAC"}
1
+ {"version":3,"file":"switchChain.js","names":["wagmi","wagmiConfig","SupportedChainId","isConnectorWithSafeIframeProvider","switchChain","chainId","connector","isConnected","getAccount","isSafeIframeProvider","setState","prev"],"sources":["../../../../src/lib/web3/wagmi/switchChain.ts"],"sourcesContent":["import * as wagmi from \"@wagmi/core\";\nimport { wagmiConfig } from \"./config\";\nimport type { SupportedChainId } from \"./types\";\nimport { isConnectorWithSafeIframeProvider } from \"@/components/web3/ConnectExternalProvider/utils\";\n\nexport async function switchChain({ chainId }: { chainId: SupportedChainId }) {\n const { connector, isConnected } = wagmi.getAccount(wagmiConfig);\n\n // check if connected to Safe iframe provider (whether through safe connector or as external provider)\n const isSafeIframeProvider =\n connector && isConnectorWithSafeIframeProvider(connector);\n\n // wagmi doesn't autoswitch state chainId with syncConnectedChain=false if connected\n if (isConnected) wagmiConfig.setState((prev) => ({ ...prev, chainId }));\n\n // safe doesn't support programmatic chain switching\n if (!isSafeIframeProvider) return wagmi.switchChain(wagmiConfig, { chainId });\n}\n"],"mappings":";;;;AAKA,eAAsBI,EAAY,EAAEC,cAA0C;CAC5E,IAAM,EAAEC,cAAWC,mBAAgBP,EAAMQ,WAAWP,EAAY,EAG1DQ,IACJH,KAAaH,EAAkCG,EAAU;CAM3D,IAHIC,KAAaN,EAAYS,UAAUC,OAAU;EAAE,GAAGA;EAAMN;EAAS,EAAE,EAGnE,CAACI,GAAsB,OAAOT,EAAMI,YAAYH,GAAa,EAAEI,YAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["assert","supportedChainIds","SupportedChainId","isSupportedChainId","chainId","includes","assertSupportedChainId"],"sources":["../../../../src/lib/web3/wagmi/utils.ts"],"sourcesContent":["import { assert } from \"ts-essentials\";\nimport { supportedChainIds } from \"./constants\";\nimport type { SupportedChainId } from \"./types\";\n\nexport function isSupportedChainId(\n chainId: number\n): chainId is SupportedChainId {\n return supportedChainIds.includes(chainId as SupportedChainId);\n}\n\nexport function assertSupportedChainId(\n chainId?: number\n): asserts chainId is SupportedChainId {\n assert(\n chainId && isSupportedChainId(chainId),\n `Chain ID ${chainId} is not a supported chain ID.`\n );\n}\n"],"mappings":";;;AAIA,SAAgBG,EACdC,GAC6B;AAC7B,QAAOH,EAAkBI,SAASD,EAA4B"}
1
+ {"version":3,"file":"utils.js","names":["assert","supportedChainIds","SupportedChainId","isSupportedChainId","chainId","includes","assertSupportedChainId"],"sources":["../../../../src/lib/web3/wagmi/utils.ts"],"sourcesContent":["import { assert } from \"ts-essentials\";\nimport { supportedChainIds } from \"./constants\";\nimport type { SupportedChainId } from \"./types\";\n\nexport function isSupportedChainId(\n chainId: number\n): chainId is SupportedChainId {\n return supportedChainIds.includes(chainId as SupportedChainId);\n}\n\nexport function assertSupportedChainId(\n chainId?: number\n): asserts chainId is SupportedChainId {\n assert(\n chainId && isSupportedChainId(chainId),\n `Chain ID ${chainId} is not a supported chain ID.`\n );\n}\n"],"mappings":";;;AAIA,SAAgBG,EACdC,GAC6B;CAC7B,OAAOH,EAAkBI,SAASD,EAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"blacklist.js","names":["zeroAddress","BLACKLISTED_TOKENS","Set","isBlacklistedToken","token","address","name","has","toLowerCase","match"],"sources":["../../src/tokens/blacklist.ts"],"sourcesContent":["import { zeroAddress } from \"viem\";\n\nconst BLACKLISTED_TOKENS = new Set([\n \"0xdfe66b14d37c77f4e9b180ceb433d1b164f0281d\", // STETH == stakedETH by https://stakehound.com/\n \"0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000\", // ETH on optimism but redundant with actual eth\n \"0x240248628b7b6850352764c5dfa50d1592a033a8\", // POPS on Avalanche, from Swapsicle\n \"0x0000000000000000000000000000000000001010\", // MATIC (not a real Token, not Native MATIC, and not WMATIC) on Polygon\n \"0x0000000000000000000000000000000000000010\", // just in case\n zeroAddress, // just in case\n \"0xd2ac55ca3bbd2dd1e9936ec640dcb4b745fde759\", // BTC2x, leveraged token\n \"0x65c4c0517025ec0843c9146af266a2c5a2d148a2\", // ETH2x, leveraged token\n]);\n\nexport function isBlacklistedToken(token: {\n address: string;\n name?: string;\n}): boolean {\n return (\n BLACKLISTED_TOKENS.has(token.address.toLowerCase()) ||\n !!token?.name?.match(/leverage/i)\n );\n}\n"],"mappings":";;AAEA,IAAMC,IAAqB,IAAIC,IAAI;CACjC;CACA;CACA;CACA;CACA;CACAF;CACA;CACA;CACD,CAAC;AAEF,SAAgBG,EAAmBC,GAGvB;AACV,QACEH,EAAmBM,IAAIH,EAAMC,QAAQG,aAAa,CAAC,IACnD,CAAC,CAACJ,GAAOE,MAAMG,MAAM,YAAY"}
1
+ {"version":3,"file":"blacklist.js","names":["zeroAddress","BLACKLISTED_TOKENS","Set","isBlacklistedToken","token","address","name","has","toLowerCase","match"],"sources":["../../src/tokens/blacklist.ts"],"sourcesContent":["import { zeroAddress } from \"viem\";\n\nconst BLACKLISTED_TOKENS = new Set([\n \"0xdfe66b14d37c77f4e9b180ceb433d1b164f0281d\", // STETH == stakedETH by https://stakehound.com/\n \"0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000\", // ETH on optimism but redundant with actual eth\n \"0x240248628b7b6850352764c5dfa50d1592a033a8\", // POPS on Avalanche, from Swapsicle\n \"0x0000000000000000000000000000000000001010\", // MATIC (not a real Token, not Native MATIC, and not WMATIC) on Polygon\n \"0x0000000000000000000000000000000000000010\", // just in case\n zeroAddress, // just in case\n \"0xd2ac55ca3bbd2dd1e9936ec640dcb4b745fde759\", // BTC2x, leveraged token\n \"0x65c4c0517025ec0843c9146af266a2c5a2d148a2\", // ETH2x, leveraged token\n]);\n\nexport function isBlacklistedToken(token: {\n address: string;\n name?: string;\n}): boolean {\n return (\n BLACKLISTED_TOKENS.has(token.address.toLowerCase()) ||\n !!token?.name?.match(/leverage/i)\n );\n}\n"],"mappings":";;AAEA,IAAMC,IAAqB,IAAIC,IAAI;CACjC;CACA;CACA;CACA;CACA;CACAF;CACA;CACA;CACD,CAAC;AAEF,SAAgBG,EAAmBC,GAGvB;CACV,OACEH,EAAmBM,IAAIH,EAAMC,QAAQG,aAAa,CAAC,IACnD,CAAC,CAACJ,GAAOE,MAAMG,MAAM,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"constructor.js","names":["uriToHttpURL","constructToken","MinErc20Token","Token","TokenFromList","TokenInfoWithSupportedChainId","TokenListCompiled","wrappedNativeCurrency","wrappedNativeCurrencyLogo","SupportedChainId","Chain","ETH_ADDRESS","NATIVE_CURRENCY_ICON","chains","gatherObjectsByProp","constructTokenFromTokenInfoFactory","Pick","listInfo","N","address","decimals","symbol","chainId","logoURI","name","I","fromList","fromListURL","network","token","img","url","constructTokenFromFetchedTokenInfo","minTokenInfo","constructNativeToken","chainConfig","id","sdkToken","nativeCurrency","constructWrappedNativeToken","string","nativeTokensAllChains","map","nativeTokensByChainId","String","Record","wrappedNativeTokensAllChains","wrappedNativeTokensByChainId"],"sources":["../../src/tokens/constructor.ts"],"sourcesContent":["import { uriToHttpURL } from \"@/lib/ipfs\";\nimport { constructToken } from \"@velora-dex/sdk\";\n\nimport type { MinErc20Token, Token, TokenFromList } from \"./state/types\";\nimport {\n type TokenInfoWithSupportedChainId,\n type TokenListCompiled,\n} from \"./types\";\nimport {\n wrappedNativeCurrency,\n wrappedNativeCurrencyLogo,\n} from \"@/lib/constants/weth\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { ETH_ADDRESS, NATIVE_CURRENCY_ICON } from \"./constants\";\nimport { chains } from \"@/lib/web3/wagmi/constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\nexport const constructTokenFromTokenInfoFactory =\n <\n N extends Pick<TokenListCompiled, \"name\" | \"url\"> = Pick<\n TokenListCompiled,\n \"name\" | \"url\"\n >,\n >(\n listInfo: N\n ) =>\n <I extends TokenInfoWithSupportedChainId = TokenInfoWithSupportedChainId>({\n address,\n decimals,\n symbol,\n chainId,\n logoURI,\n name,\n }: I): TokenFromList & {\n fromList: N[\"name\"];\n fromListURL: N[\"url\"];\n address: I[\"address\"];\n decimals: I[\"decimals\"];\n symbol: I[\"symbol\"];\n name: I[\"name\"];\n network: I[\"chainId\"];\n } => {\n const token = constructToken({\n address,\n decimals,\n symbol,\n network: chainId,\n img: logoURI && uriToHttpURL(logoURI),\n });\n\n return {\n ...token,\n name,\n symbol,\n network: chainId,\n fromList: listInfo.name,\n fromListURL: listInfo.url,\n };\n };\n\nexport const constructTokenFromFetchedTokenInfo = (\n minTokenInfo: MinErc20Token\n): Token => {\n const token = constructToken(minTokenInfo);\n return { ...token, network: minTokenInfo.network };\n};\n\nexport function constructNativeToken(\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token {\n const sdkToken = constructToken({\n address: ETH_ADDRESS,\n symbol: chainConfig.nativeCurrency.symbol,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: NATIVE_CURRENCY_ICON[chainConfig.id],\n });\n\n return {\n ...sdkToken,\n name: chainConfig.nativeCurrency.name,\n network: chainConfig.id,\n };\n}\n\nexport const constructWrappedNativeToken = (\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token => {\n const sdkToken = constructToken({\n address: wrappedNativeCurrency[chainConfig.id],\n symbol: `W${chainConfig.nativeCurrency.symbol}`,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: wrappedNativeCurrencyLogo[chainConfig.id].string,\n });\n\n return {\n ...sdkToken,\n name: `Wrapped ${chainConfig.nativeCurrency.name}`,\n network: chainConfig.id,\n };\n};\n\nexport const nativeTokensAllChains = chains.map((chainConfig) => {\n return constructNativeToken(chainConfig);\n});\n\nexport const nativeTokensByChainId = gatherObjectsByProp(\n nativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n\nexport const wrappedNativeTokensAllChains = chains.map((chainConfig) => {\n return constructWrappedNativeToken(chainConfig);\n});\n\nexport const wrappedNativeTokensByChainId = gatherObjectsByProp(\n wrappedNativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n"],"mappings":";;;;;;;AAkBA,IAAae,KAOTE,OAEwE,EACxEE,YACAC,aACAC,WACAC,YACAC,YACAC,eAkBO;CACL,GATYvB,EAAe;EAC3BkB;EACAC;EACAC;EACAO,SAASN;EACTQ,KAAKP,KAAWvB,EAAauB,EAAO;EACrC,CAAC;CAIAC;CACAH;CACAO,SAASN;CACTI,UAAUT,EAASO;CACnBG,aAAaV,EAASc;CACvB,GAGQC,KACXC,OAGO;CAAE,GADKhC,EAAegC,EAAa;CACvBL,SAASK,EAAaL;CAAS;AAGpD,SAAgBM,EACdC,GAGO;AASP,QAAO;EACL,GATelC,EAAe;GAC9BkB,SAASR;GACTU,QAAQc,EAAYG,eAAejB;GACnCD,UAAUe,EAAYG,eAAelB;GACrCQ,SAASO,EAAYC;GACrBN,KAAKlB,EAAqBuB,EAAYC;GACvC,CAAC;EAIAZ,MAAMW,EAAYG,eAAed;EACjCI,SAASO,EAAYC;EACtB;;AAGH,IAAaG,KACXJ,OAYO;CACL,GATelC,EAAe;EAC9BkB,SAASZ,EAAsB4B,EAAYC;EAC3Cf,QAAQ,IAAIc,EAAYG,eAAejB;EACvCD,UAAUe,EAAYG,eAAelB;EACrCQ,SAASO,EAAYC;EACrBN,KAAKtB,EAA0B2B,EAAYC,IAAII;EAChD,CAAC;CAIAhB,MAAM,WAAWW,EAAYG,eAAed;CAC5CI,SAASO,EAAYC;CACtB,GAGUK,IAAwB5B,EAAO6B,KAAKP,MACxCD,EAAqBC,EAAY,CACxC,EAEWQ,IAAwB7B,EACnC2B,IACCZ,MAAUe,OAAOf,EAAMD,QAC1B,CAAC,EAMYmB,IAA+BjC,EAJAD,EAAO6B,KAAKP,MAC/CI,EAA4BJ,EAAY,CAC/C,GAICN,MAAUe,OAAOf,EAAMD,QAC1B,CAAC"}
1
+ {"version":3,"file":"constructor.js","names":["uriToHttpURL","constructToken","MinErc20Token","Token","TokenFromList","TokenInfoWithSupportedChainId","TokenListCompiled","wrappedNativeCurrency","wrappedNativeCurrencyLogo","SupportedChainId","Chain","ETH_ADDRESS","NATIVE_CURRENCY_ICON","chains","gatherObjectsByProp","constructTokenFromTokenInfoFactory","Pick","listInfo","N","address","decimals","symbol","chainId","logoURI","name","I","fromList","fromListURL","network","token","img","url","constructTokenFromFetchedTokenInfo","minTokenInfo","constructNativeToken","chainConfig","id","sdkToken","nativeCurrency","constructWrappedNativeToken","string","nativeTokensAllChains","map","nativeTokensByChainId","String","Record","wrappedNativeTokensAllChains","wrappedNativeTokensByChainId"],"sources":["../../src/tokens/constructor.ts"],"sourcesContent":["import { uriToHttpURL } from \"@/lib/ipfs\";\nimport { constructToken } from \"@velora-dex/sdk\";\n\nimport type { MinErc20Token, Token, TokenFromList } from \"./state/types\";\nimport {\n type TokenInfoWithSupportedChainId,\n type TokenListCompiled,\n} from \"./types\";\nimport {\n wrappedNativeCurrency,\n wrappedNativeCurrencyLogo,\n} from \"@/lib/constants/weth\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Chain } from \"viem\";\nimport { ETH_ADDRESS, NATIVE_CURRENCY_ICON } from \"./constants\";\nimport { chains } from \"@/lib/web3/wagmi/constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\nexport const constructTokenFromTokenInfoFactory =\n <\n N extends Pick<TokenListCompiled, \"name\" | \"url\"> = Pick<\n TokenListCompiled,\n \"name\" | \"url\"\n >,\n >(\n listInfo: N\n ) =>\n <I extends TokenInfoWithSupportedChainId = TokenInfoWithSupportedChainId>({\n address,\n decimals,\n symbol,\n chainId,\n logoURI,\n name,\n }: I): TokenFromList & {\n fromList: N[\"name\"];\n fromListURL: N[\"url\"];\n address: I[\"address\"];\n decimals: I[\"decimals\"];\n symbol: I[\"symbol\"];\n name: I[\"name\"];\n network: I[\"chainId\"];\n } => {\n const token = constructToken({\n address,\n decimals,\n symbol,\n network: chainId,\n img: logoURI && uriToHttpURL(logoURI),\n });\n\n return {\n ...token,\n name,\n symbol,\n network: chainId,\n fromList: listInfo.name,\n fromListURL: listInfo.url,\n };\n };\n\nexport const constructTokenFromFetchedTokenInfo = (\n minTokenInfo: MinErc20Token\n): Token => {\n const token = constructToken(minTokenInfo);\n return { ...token, network: minTokenInfo.network };\n};\n\nexport function constructNativeToken(\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token {\n const sdkToken = constructToken({\n address: ETH_ADDRESS,\n symbol: chainConfig.nativeCurrency.symbol,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: NATIVE_CURRENCY_ICON[chainConfig.id],\n });\n\n return {\n ...sdkToken,\n name: chainConfig.nativeCurrency.name,\n network: chainConfig.id,\n };\n}\n\nexport const constructWrappedNativeToken = (\n chainConfig: Chain & {\n id: SupportedChainId;\n }\n): Token => {\n const sdkToken = constructToken({\n address: wrappedNativeCurrency[chainConfig.id],\n symbol: `W${chainConfig.nativeCurrency.symbol}`,\n decimals: chainConfig.nativeCurrency.decimals,\n network: chainConfig.id,\n img: wrappedNativeCurrencyLogo[chainConfig.id].string,\n });\n\n return {\n ...sdkToken,\n name: `Wrapped ${chainConfig.nativeCurrency.name}`,\n network: chainConfig.id,\n };\n};\n\nexport const nativeTokensAllChains = chains.map((chainConfig) => {\n return constructNativeToken(chainConfig);\n});\n\nexport const nativeTokensByChainId = gatherObjectsByProp(\n nativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n\nexport const wrappedNativeTokensAllChains = chains.map((chainConfig) => {\n return constructWrappedNativeToken(chainConfig);\n});\n\nexport const wrappedNativeTokensByChainId = gatherObjectsByProp(\n wrappedNativeTokensAllChains,\n (token) => String(token.network)\n) as Record<SupportedChainId, Token>;\n"],"mappings":";;;;;;;AAkBA,IAAae,KAOTE,OAEwE,EACxEE,YACAC,aACAC,WACAC,YACAC,YACAC,eAkBO;CACL,GATYvB,EAAe;EAC3BkB;EACAC;EACAC;EACAO,SAASN;EACTQ,KAAKP,KAAWvB,EAAauB,EAAO;EACrC,CAGIM;CACHL;CACAH;CACAO,SAASN;CACTI,UAAUT,EAASO;CACnBG,aAAaV,EAASc;CACvB,GAGQC,KACXC,OAGO;CAAE,GADKhC,EAAegC,EACjBJ;CAAOD,SAASK,EAAaL;CAAS;AAGpD,SAAgBM,EACdC,GAGO;CASP,OAAO;EACL,GATelC,EAAe;GAC9BkB,SAASR;GACTU,QAAQc,EAAYG,eAAejB;GACnCD,UAAUe,EAAYG,eAAelB;GACrCQ,SAASO,EAAYC;GACrBN,KAAKlB,EAAqBuB,EAAYC;GACvC,CAGIC;EACHb,MAAMW,EAAYG,eAAed;EACjCI,SAASO,EAAYC;EACtB;;AAGH,IAAaG,KACXJ,OAYO;CACL,GATelC,EAAe;EAC9BkB,SAASZ,EAAsB4B,EAAYC;EAC3Cf,QAAQ,IAAIc,EAAYG,eAAejB;EACvCD,UAAUe,EAAYG,eAAelB;EACrCQ,SAASO,EAAYC;EACrBN,KAAKtB,EAA0B2B,EAAYC,IAAII;EAChD,CAGIH;CACHb,MAAM,WAAWW,EAAYG,eAAed;CAC5CI,SAASO,EAAYC;CACtB,GAGUK,IAAwB5B,EAAO6B,KAAKP,MACxCD,EAAqBC,EAAY,CACxC,EAEWQ,IAAwB7B,EACnC2B,IACCZ,MAAUe,OAAOf,EAAMD,QAC1B,CAAC,EAMYmB,IAA+BjC,EAJAD,EAAO6B,KAAKP,MAC/CI,EAA4BJ,EAAY,CAI/CW,GACCjB,MAAUe,OAAOf,EAAMD,QAC1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTokens.js","names":["SupportedChainId","Token","arbitrum","avalanche","base","bsc","gnosis","mainnet","optimism","polygon","unichain","wrappedNativeTokensByChainId","TradeMode","isETH","tokenFrom","Record","id","symbol","address","decimals","network","tokenType","mainConnector","connectors","img","name","tokenTo","pickDefaultTokenPair","chainId","tradeMode","from","to"],"sources":["../../src/tokens/defaultTokens.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport { wrappedNativeTokensByChainId } from \"./constructor\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { isETH } from \"./utils/eth\";\n\nconst tokenFrom: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n symbol: \"USDC\",\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n decimals: 6,\n network: mainnet.id,\n tokenType: \"ERC20\",\n mainConnector: \"ETH\",\n connectors: [\"ETH\"],\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [polygon.id]: {\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [bsc.id]: {\n address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\",\n decimals: 18,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"Binance Pegged USD Coin\",\n },\n [avalanche.id]: {\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [arbitrum.id]: {\n address: \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [optimism.id]: {\n address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [base.id]: {\n address: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [gnosis.id]: {\n address: \"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"XDAI\", \"USDT\"],\n network: gnosis.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [unichain.id]: {\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n};\n\nconst tokenTo: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: mainnet.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [polygon.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"POL\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/MATIC.svg\",\n },\n [bsc.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"BNB\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/BNB.svg\",\n },\n [avalanche.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"AVAX\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/AVAX.svg\",\n },\n [arbitrum.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [optimism.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [base.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [gnosis.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"XDAI\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"USDC\"],\n network: gnosis.id,\n img: \"https://assets.coingecko.com/coins/images/11062/thumb/Identity-Primary-DarkBG.png\",\n name: \"XDAI\",\n },\n [unichain.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/ETH.png\",\n name: \"Unichain ETH\",\n },\n};\n\nexport function pickDefaultTokenPair(\n chainId: SupportedChainId,\n tradeMode: TradeMode\n): [Token, Token] {\n const from = tokenFrom[chainId];\n let to = tokenTo[chainId];\n\n // otc doesn't support destToken=ETH\n if (tradeMode === \"otc\" && isETH(to)) {\n to = wrappedNativeTokensByChainId[chainId];\n }\n\n return [from, to];\n}\n"],"mappings":";;;;AAkBA,IAAMc,IAA6C;EAChDP,EAAQS,KAAK;EACZC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAASb,EAAQS;EACjBK,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBC,KAAK;EACLC,MAAM;EACP;EACAhB,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACLC,MAAM;EACP;EACApB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACLC,MAAM;EACP;EACAtB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACLC,MAAM;EACP;EACAvB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASlB,EAASc;EAClBQ,KAAK;EACLC,MAAM;EACP;EACAjB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASZ,EAASQ;EAClBQ,KAAK;EACLC,MAAM;EACP;EACArB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAAShB,EAAKY;EACdQ,KAAK;EACLC,MAAM;EACP;EACAnB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,QAAQ,OAAO;EAC5BH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD,EAEKC,IAA2C;EAC9CnB,EAAQS,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASb,EAAQS;EACjBQ,KAAK;EACN;EACAf,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACN;EACAnB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACN;EACArB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACN;EACAtB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASlB,EAASc;EAClBQ,KAAK;EACN;EACAhB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASZ,EAASQ;EAClBQ,KAAK;EACN;EACApB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAAShB,EAAKY;EACdQ,KAAK;EACN;EACAlB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO;EACpBH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD;AAED,SAAgBE,EACdC,GACAC,GACgB;CAChB,IAAMC,IAAOhB,EAAUc,IACnBG,IAAKL,EAAQE;AAOjB,QAJIC,MAAc,SAAShB,EAAMkB,EAAG,KAClCA,IAAKpB,EAA6BiB,KAG7B,CAACE,GAAMC,EAAG"}
1
+ {"version":3,"file":"defaultTokens.js","names":["SupportedChainId","Token","arbitrum","avalanche","base","bsc","gnosis","mainnet","optimism","polygon","unichain","wrappedNativeTokensByChainId","TradeMode","isETH","tokenFrom","Record","id","symbol","address","decimals","network","tokenType","mainConnector","connectors","img","name","tokenTo","pickDefaultTokenPair","chainId","tradeMode","from","to"],"sources":["../../src/tokens/defaultTokens.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\n\nimport {\n arbitrum,\n avalanche,\n base,\n bsc,\n gnosis,\n mainnet,\n optimism,\n polygon,\n unichain,\n} from \"@/lib/web3/wagmi/supportedChains\";\nimport { wrappedNativeTokensByChainId } from \"./constructor\";\nimport type { TradeMode } from \"@/core/state/tradeModeAtom\";\nimport { isETH } from \"./utils/eth\";\n\nconst tokenFrom: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n symbol: \"USDC\",\n address: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n decimals: 6,\n network: mainnet.id,\n tokenType: \"ERC20\",\n mainConnector: \"ETH\",\n connectors: [\"ETH\"],\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [polygon.id]: {\n address: \"0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [bsc.id]: {\n address: \"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d\",\n decimals: 18,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"Binance Pegged USD Coin\",\n },\n [avalanche.id]: {\n address: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [arbitrum.id]: {\n address: \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [optimism.id]: {\n address: \"0x0b2c639c533813f4aa9d7837caf62653d097ff85\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USD Coin\",\n },\n [base.id]: {\n address: \"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [gnosis.id]: {\n address: \"0xddafbb505ad214d7b80b1f830fccc89b60fb7a83\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"XDAI\", \"USDT\"],\n network: gnosis.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n [unichain.id]: {\n address: \"0x078D782b760474a361dDA0AF3839290b0EF57AD6\",\n decimals: 6,\n symbol: \"USDC\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/USDC.png\",\n name: \"USDC\",\n },\n};\n\nconst tokenTo: Record<SupportedChainId, Token> = {\n [mainnet.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: mainnet.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [polygon.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"POL\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: polygon.id,\n img: \"https://cdn.velora.xyz/token/MATIC.svg\",\n },\n [bsc.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"BNB\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: bsc.id,\n img: \"https://cdn.velora.xyz/token/BNB.svg\",\n },\n [avalanche.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"AVAX\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: avalanche.id,\n img: \"https://cdn.velora.xyz/token/AVAX.svg\",\n },\n [arbitrum.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: arbitrum.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [optimism.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: optimism.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [base.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"DAI\", \"USDC\"],\n network: base.id,\n img: \"https://cdn.velora.xyz/token/ETH.svg\",\n },\n [gnosis.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"XDAI\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"USDC\"],\n network: gnosis.id,\n img: \"https://assets.coingecko.com/coins/images/11062/thumb/Identity-Primary-DarkBG.png\",\n name: \"XDAI\",\n },\n [unichain.id]: {\n address: \"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\n decimals: 18,\n symbol: \"ETH\",\n tokenType: \"ERC20\",\n mainConnector: \"\",\n connectors: [\"ETH\"],\n network: unichain.id,\n img: \"https://cdn.velora.xyz/token/ETH.png\",\n name: \"Unichain ETH\",\n },\n};\n\nexport function pickDefaultTokenPair(\n chainId: SupportedChainId,\n tradeMode: TradeMode\n): [Token, Token] {\n const from = tokenFrom[chainId];\n let to = tokenTo[chainId];\n\n // otc doesn't support destToken=ETH\n if (tradeMode === \"otc\" && isETH(to)) {\n to = wrappedNativeTokensByChainId[chainId];\n }\n\n return [from, to];\n}\n"],"mappings":";;;;AAkBA,IAAMc,IAA6C;EAChDP,EAAQS,KAAK;EACZC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,SAASb,EAAQS;EACjBK,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBC,KAAK;EACLC,MAAM;EACP;EACAhB,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACLC,MAAM;EACP;EACApB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACLC,MAAM;EACP;EACAtB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACLC,MAAM;EACP;EACAvB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASlB,EAASc;EAClBQ,KAAK;EACLC,MAAM;EACP;EACAjB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASZ,EAASQ;EAClBQ,KAAK;EACLC,MAAM;EACP;EACArB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAAShB,EAAKY;EACdQ,KAAK;EACLC,MAAM;EACP;EACAnB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,QAAQ,OAAO;EAC5BH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD,EAEKC,IAA2C;EAC9CnB,EAAQS,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASb,EAAQS;EACjBQ,KAAK;EACN;EACAf,EAAQO,KAAK;EACZE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASX,EAAQO;EACjBQ,KAAK;EACN;EACAnB,EAAIW,KAAK;EACRE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASf,EAAIW;EACbQ,KAAK;EACN;EACArB,EAAUa,KAAK;EACdE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASjB,EAAUa;EACnBQ,KAAK;EACN;EACAtB,EAASc,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASlB,EAASc;EAClBQ,KAAK;EACN;EACAhB,EAASQ,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAASZ,EAASQ;EAClBQ,KAAK;EACN;EACApB,EAAKY,KAAK;EACTE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO,OAAO;EAC3BH,SAAShB,EAAKY;EACdQ,KAAK;EACN;EACAlB,EAAOU,KAAK;EACXE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,OAAO;EACpBH,SAASd,EAAOU;EAChBQ,KAAK;EACLC,MAAM;EACP;EACAf,EAASM,KAAK;EACbE,SAAS;EACTC,UAAU;EACVF,QAAQ;EACRI,WAAW;EACXC,eAAe;EACfC,YAAY,CAAC,MAAM;EACnBH,SAASV,EAASM;EAClBQ,KAAK;EACLC,MAAM;EACR;CACD;AAED,SAAgBE,EACdC,GACAC,GACgB;CAChB,IAAMC,IAAOhB,EAAUc,IACnBG,IAAKL,EAAQE;CAOjB,OAJIC,MAAc,SAAShB,EAAMkB,EAAG,KAClCA,IAAKpB,EAA6BiB,KAG7B,CAACE,GAAMC,EAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","names":["useAtomValue","TokenFromExtendedList","TokenFromList","useChainId","SupportedChainId","emptyArray","emptyObject","allTokensByChainAtom","MarkOptional","Address","useAllTokens","forcedChainId","chainId","_chainId","fromLists","listByChainId","tokens","useAllTokensMap","addressMap","useTokensFromListsAllChains","tokensFromAllChains","useTokensFromDisabledLists","disabledListByChainId"],"sources":["../../src/tokens/hooks.ts"],"sourcesContent":["import { useAtomValue } from \"@/core/store\";\nimport type { TokenFromExtendedList, TokenFromList } from \"./state/types\";\nimport { useChainId } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { allTokensByChainAtom } from \"./state/allTokensByChainAtom\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\nexport function useAllTokens(\n forcedChainId?: SupportedChainId\n): TokenFromExtendedList[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.tokens || emptyArray;\n}\n\nexport function useAllTokensMap(\n forcedChainId?: SupportedChainId\n): Record<Address, TokenFromExtendedList> {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.addressMap || emptyObject;\n}\n\nexport function useTokensFromListsAllChains(): MarkOptional<\n TokenFromList,\n \"fromListURL\"\n>[] {\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.tokensFromAllChains;\n}\n\nexport function useTokensFromDisabledLists(\n forcedChainId?: SupportedChainId\n): MarkOptional<TokenFromList, \"fromListURL\">[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.disabledListByChainId[_chainId]?.tokens || emptyArray;\n}\n"],"mappings":";;;;;AASA,SAAOU,EAAAC,GAAA;CAGL,IAAAC,IAAgBT,GAAY,EAC5BU,IAAiBF,KAAAC;AAEoC,QAAnCZ,EAAaO,EAAqB,CAEpCQ,cAAeF,IAAiBG,UAAzCX;;AAGT,SAAOY,EAAAN,GAAA;CAGL,IAAAC,IAAgBT,GAAY,EAC5BU,IAAiBF,KAAAC;AAEoC,QAAnCZ,EAAaO,EAAqB,CAEpCQ,cAAeF,IAAqBK,cAA7CZ;;AAGT,SAAOa,IAAA;AAIgD,QAAnCnB,EAAaO,EAAqB,CAEpCa"}
1
+ {"version":3,"file":"hooks.js","names":["useAtomValue","TokenFromExtendedList","TokenFromList","useChainId","SupportedChainId","emptyArray","emptyObject","allTokensByChainAtom","MarkOptional","Address","useAllTokens","forcedChainId","chainId","_chainId","fromLists","listByChainId","tokens","useAllTokensMap","addressMap","useTokensFromListsAllChains","tokensFromAllChains","useTokensFromDisabledLists","disabledListByChainId"],"sources":["../../src/tokens/hooks.ts"],"sourcesContent":["import { useAtomValue } from \"@/core/store\";\nimport type { TokenFromExtendedList, TokenFromList } from \"./state/types\";\nimport { useChainId } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { emptyArray, emptyObject } from \"@/lib/constants\";\nimport { allTokensByChainAtom } from \"./state/allTokensByChainAtom\";\nimport type { MarkOptional } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\nexport function useAllTokens(\n forcedChainId?: SupportedChainId\n): TokenFromExtendedList[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.tokens || emptyArray;\n}\n\nexport function useAllTokensMap(\n forcedChainId?: SupportedChainId\n): Record<Address, TokenFromExtendedList> {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.listByChainId[_chainId]?.addressMap || emptyObject;\n}\n\nexport function useTokensFromListsAllChains(): MarkOptional<\n TokenFromList,\n \"fromListURL\"\n>[] {\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.tokensFromAllChains;\n}\n\nexport function useTokensFromDisabledLists(\n forcedChainId?: SupportedChainId\n): MarkOptional<TokenFromList, \"fromListURL\">[] {\n const chainId = useChainId();\n const _chainId = forcedChainId ?? chainId;\n\n const fromLists = useAtomValue(allTokensByChainAtom);\n\n return fromLists.disabledListByChainId[_chainId]?.tokens || emptyArray;\n}\n"],"mappings":";;;;;AASA,SAAOU,EAAAC,GAAA;CAGL,IAAAC,IAAgBT,GAAY,EAC5BU,IAAiBF,KAAAC;CAEoC,OAAnCZ,EAAaO,EAExBO,CAASC,cAAeF,IAAiBG,UAAzCX;;AAGT,SAAOY,EAAAN,GAAA;CAGL,IAAAC,IAAgBT,GAAY,EAC5BU,IAAiBF,KAAAC;CAEoC,OAAnCZ,EAAaO,EAExBO,CAASC,cAAeF,IAAqBK,cAA7CZ;;AAGT,SAAOa,IAAA;CAIgD,OAAnCnB,EAAaO,EAExBO,CAASM"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["filterUnique","gatherObjectsByProp","isValidUrl","TokenListDownloadData","TokenLists","UniqueTokenLists","list","url","chainId","filename","defaultTokenLists","Array","from","Set","map","filter","url2TokenList","urlChain2TokenList","chainId2TokenListURLs","all","enabled","String","accumElem","acc","push","onByDefault","FALLBACK_CDN_URL"],"sources":["../../../src/tokens/lists/constants.ts"],"sourcesContent":["import { filterUnique, gatherObjectsByProp, isValidUrl } from \"@/lib/utils\";\nimport type { TokenListDownloadData } from \"./types\";\n\nimport TokenLists from \"./lists.json\";\n\n// filter out lists with duplicate `url` or `filename` so we don't load or fallback to potentially wrong list\n// which shouldn't happen as long as we keep `lists.json` lists unique.\n\n// In UI it makes sense to skip such malformed duplicate lists, rather than hard break\nconst UniqueTokenLists: TokenListDownloadData[] = filterUnique(\n // have to cast chainId: string to \"multi\"\n TokenLists as TokenListDownloadData[],\n // account for one list being used on multiple chains\n (list) => [list.url + list.chainId, list.filename + list.chainId]\n);\n\nexport const defaultTokenLists = Array.from(\n new Set(UniqueTokenLists.map((list) => list.url)) // URLs only\n).filter(isValidUrl); // validate just in case\nexport const url2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => list.url\n);\n\nexport const urlChain2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => `${list.url}@${list.chainId}`\n);\n\nexport const chainId2TokenListURLs = gatherObjectsByProp<\n TokenListDownloadData,\n { all: string[]; enabled: string[] }\n>(\n UniqueTokenLists,\n (list) => String(list.chainId),\n (list, accumElem) => {\n const acc = accumElem || { all: [], enabled: [] };\n // so far only auxiliary stablecoins list is multichain\n if (list.chainId === \"multi\") return acc;\n\n acc.all.push(list.url);\n\n if (list.onByDefault) {\n acc.enabled.push(list.url);\n }\n\n return acc;\n }\n);\n\nexport const FALLBACK_CDN_URL = \"https://cdn.velora.xyz/web/token-lists\";\n"],"mappings":";;;AASA,IAAMK,IAA4CL,EAEhDI,IAECE,MAAS,CAACA,EAAKC,MAAMD,EAAKE,SAASF,EAAKG,WAAWH,EAAKE,QAC3D,CAAC,EAEYE,IAAoBC,MAAMC,KACrC,IAAIC,IAAIR,EAAiBS,KAAKR,MAASA,EAAKC,IAAI,CAAC,CAClD,CAACQ,OAAOb,EAAW,EACPc,IAAgBf,EAC3BI,IACCC,MAASA,EAAKC,IAChB,EAEYU,IAAqBhB,EAChCI,IACCC,MAAS,GAAGA,EAAKC,IAAG,GAAID,EAAKE,UAC/B,EAEYU,IAAwBjB,EAInCI,IACCC,MAASe,OAAOf,EAAKE,QAAQ,GAC7BF,GAAMgB,MAAc;CACnB,IAAMC,IAAMD,KAAa;EAAEH,KAAK,EAAE;EAAEC,SAAS,EAAA;EAAI;AAUjD,QARId,EAAKE,YAAY,UAAgBe,KAErCA,EAAIJ,IAAIK,KAAKlB,EAAKC,IAAI,EAElBD,EAAKmB,eACPF,EAAIH,QAAQI,KAAKlB,EAAKC,IAAI,EAGrBgB;EAEV,EAEYG,IAAmB"}
1
+ {"version":3,"file":"constants.js","names":["filterUnique","gatherObjectsByProp","isValidUrl","TokenListDownloadData","TokenLists","UniqueTokenLists","list","url","chainId","filename","defaultTokenLists","Array","from","Set","map","filter","url2TokenList","urlChain2TokenList","chainId2TokenListURLs","all","enabled","String","accumElem","acc","push","onByDefault","FALLBACK_CDN_URL"],"sources":["../../../src/tokens/lists/constants.ts"],"sourcesContent":["import { filterUnique, gatherObjectsByProp, isValidUrl } from \"@/lib/utils\";\nimport type { TokenListDownloadData } from \"./types\";\n\nimport TokenLists from \"./lists.json\";\n\n// filter out lists with duplicate `url` or `filename` so we don't load or fallback to potentially wrong list\n// which shouldn't happen as long as we keep `lists.json` lists unique.\n\n// In UI it makes sense to skip such malformed duplicate lists, rather than hard break\nconst UniqueTokenLists: TokenListDownloadData[] = filterUnique(\n // have to cast chainId: string to \"multi\"\n TokenLists as TokenListDownloadData[],\n // account for one list being used on multiple chains\n (list) => [list.url + list.chainId, list.filename + list.chainId]\n);\n\nexport const defaultTokenLists = Array.from(\n new Set(UniqueTokenLists.map((list) => list.url)) // URLs only\n).filter(isValidUrl); // validate just in case\nexport const url2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => list.url\n);\n\nexport const urlChain2TokenList = gatherObjectsByProp<TokenListDownloadData>(\n UniqueTokenLists,\n (list) => `${list.url}@${list.chainId}`\n);\n\nexport const chainId2TokenListURLs = gatherObjectsByProp<\n TokenListDownloadData,\n { all: string[]; enabled: string[] }\n>(\n UniqueTokenLists,\n (list) => String(list.chainId),\n (list, accumElem) => {\n const acc = accumElem || { all: [], enabled: [] };\n // so far only auxiliary stablecoins list is multichain\n if (list.chainId === \"multi\") return acc;\n\n acc.all.push(list.url);\n\n if (list.onByDefault) {\n acc.enabled.push(list.url);\n }\n\n return acc;\n }\n);\n\nexport const FALLBACK_CDN_URL = \"https://cdn.velora.xyz/web/token-lists\";\n"],"mappings":";;;AASA,IAAMK,IAA4CL,EAEhDI,IAECE,MAAS,CAACA,EAAKC,MAAMD,EAAKE,SAASF,EAAKG,WAAWH,EAAKE,QAC3D,CAAC,EAEYE,IAAoBC,MAAMC,KACrC,IAAIC,IAAIR,EAAiBS,KAAKR,MAASA,EAAKC,IAAI,CAAC,CAClD,CAACQ,OAAOb,EAAW,EACPc,IAAgBf,EAC3BI,IACCC,MAASA,EAAKC,IAChB,EAEYU,IAAqBhB,EAChCI,IACCC,MAAS,GAAGA,EAAKC,IAAG,GAAID,EAAKE,UAC/B,EAEYU,IAAwBjB,EAInCI,IACCC,MAASe,OAAOf,EAAKE,QAAQ,GAC7BF,GAAMgB,MAAc;CACnB,IAAMC,IAAMD,KAAa;EAAEH,KAAK,EAAE;EAAEC,SAAS,EAAA;EAAI;CAUjD,OARId,EAAKE,YAAY,UAAgBe,KAErCA,EAAIJ,IAAIK,KAAKlB,EAAKC,IAAI,EAElBD,EAAKmB,eACPF,EAAIH,QAAQI,KAAKlB,EAAKC,IAAI,EAGrBgB;EAEV,EAEYG,IAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","names":["axios","TokenList","url2TokenList","FALLBACK_CDN_URL","downloadTokenListDataWithFallback","listURL","signal","AbortSignal","Promise","data","get","version","major","minor","patch","error","filename","url"],"sources":["../../../src/tokens/lists/download.ts"],"sourcesContent":["import axios from \"axios\";\nimport type { TokenList } from \"@uniswap/token-lists\";\n\nimport { url2TokenList, FALLBACK_CDN_URL } from \"./constants\";\n\nexport const downloadTokenListDataWithFallback = async (\n listURL: string,\n signal?: AbortSignal\n): Promise<TokenList> => {\n try {\n // from the direct url\n const { data } = await axios.get<TokenList>(listURL, {\n signal,\n });\n // @ts-expect-error malformed tokenList.version\n if (data.version.major === null) data.version.major = 0; // https://tokens.coingecko.com/xdai/all.json has `null`\n // @ts-expect-error malformed tokenList.version\n if (data.version.minor === null) data.version.minor = 0;\n // @ts-expect-error malformed tokenList.version\n if (data.version.patch === null) data.version.patch = 0;\n return data;\n } catch (error) {\n const { filename } = url2TokenList[listURL] || {};\n\n if (!filename) throw error;\n\n const url = `${FALLBACK_CDN_URL}/${filename}.json`;\n\n // from fallback on CDN\n const { data } = await axios.get<TokenList>(url, {\n signal,\n });\n\n return data;\n }\n};\n"],"mappings":";;;AAKA,IAAaI,IAAoC,OAC/CC,GACAC,MACuB;AACvB,KAAI;EAEF,IAAM,EAAEG,YAAS,MAAMT,EAAMU,IAAeL,GAAS,EACnDC,WACD,CAAC;AAOF,SALIG,EAAKE,QAAQC,UAAU,SAAMH,EAAKE,QAAQC,QAAQ,IAElDH,EAAKE,QAAQE,UAAU,SAAMJ,EAAKE,QAAQE,QAAQ,IAElDJ,EAAKE,QAAQG,UAAU,SAAML,EAAKE,QAAQG,QAAQ,IAC/CL;UACAM,GAAO;EACd,IAAM,EAAEC,gBAAad,EAAcG,MAAY,EAAE;AAEjD,MAAI,CAACW,EAAU,OAAMD;EAErB,IAAME,IAAM,GAAGd,EAAgB,GAAIa,EAAQ,QAGrC,EAAEP,YAAS,MAAMT,EAAMU,IAAeO,GAAK,EAC/CX,WACD,CAAC;AAEF,SAAOG"}
1
+ {"version":3,"file":"download.js","names":["axios","TokenList","url2TokenList","FALLBACK_CDN_URL","downloadTokenListDataWithFallback","listURL","signal","AbortSignal","Promise","data","get","version","major","minor","patch","error","filename","url"],"sources":["../../../src/tokens/lists/download.ts"],"sourcesContent":["import axios from \"axios\";\nimport type { TokenList } from \"@uniswap/token-lists\";\n\nimport { url2TokenList, FALLBACK_CDN_URL } from \"./constants\";\n\nexport const downloadTokenListDataWithFallback = async (\n listURL: string,\n signal?: AbortSignal\n): Promise<TokenList> => {\n try {\n // from the direct url\n const { data } = await axios.get<TokenList>(listURL, {\n signal,\n });\n // @ts-expect-error malformed tokenList.version\n if (data.version.major === null) data.version.major = 0; // https://tokens.coingecko.com/xdai/all.json has `null`\n // @ts-expect-error malformed tokenList.version\n if (data.version.minor === null) data.version.minor = 0;\n // @ts-expect-error malformed tokenList.version\n if (data.version.patch === null) data.version.patch = 0;\n return data;\n } catch (error) {\n const { filename } = url2TokenList[listURL] || {};\n\n if (!filename) throw error;\n\n const url = `${FALLBACK_CDN_URL}/${filename}.json`;\n\n // from fallback on CDN\n const { data } = await axios.get<TokenList>(url, {\n signal,\n });\n\n return data;\n }\n};\n"],"mappings":";;;AAKA,IAAaI,IAAoC,OAC/CC,GACAC,MACuB;CACvB,IAAI;EAEF,IAAM,EAAEG,YAAS,MAAMT,EAAMU,IAAeL,GAAS,EACnDC,WACD,CAAC;EAOF,OALIG,EAAKE,QAAQC,UAAU,SAAMH,EAAKE,QAAQC,QAAQ,IAElDH,EAAKE,QAAQE,UAAU,SAAMJ,EAAKE,QAAQE,QAAQ,IAElDJ,EAAKE,QAAQG,UAAU,SAAML,EAAKE,QAAQG,QAAQ,IAC/CL;UACAM,GAAO;EACd,IAAM,EAAEC,gBAAad,EAAcG,MAAY,EAAE;EAEjD,IAAI,CAACW,GAAU,MAAMD;EAErB,IAAME,IAAM,GAAGd,EAAgB,GAAIa,EAAQ,QAGrC,EAAEP,YAAS,MAAMT,EAAMU,IAAeO,GAAK,EAC/CX,WACD,CAAC;EAEF,OAAOG"}
@@ -1 +1 @@
1
- {"version":3,"file":"effects.js","names":["jotaiStore","queryClient","produceSingleQueryOptionMin","atomEffect","addTokenListsAtom","constructedTokensByURLAtom","tokenListUrlsAtom","useAtomValue","atom","addedUrlsSet","Set","addTokenList","url","has","queryOptions","tokenList","ensureQueryData","add","available","set","addTokenListEffect","get","forEach","useActivateEffects","allTokensListsFetchedSuccesfully","tokenListUrls","length","constructedTokensByURL","every","undefined","useAllTokensListsFetched"],"sources":["../../../../src/tokens/lists/state/effects.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { produceSingleQueryOptionMin } from \"@/tokens/queries\";\nimport { atomEffect } from \"jotai-effect\";\nimport { addTokenListsAtom } from \"./tokenListsActionsAtom\";\nimport {\n constructedTokensByURLAtom,\n tokenListUrlsAtom,\n} from \"./tokenListsStateAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { atom } from \"jotai\";\n\nconst addedUrlsSet = new Set<string>();\n\nasync function addTokenList(url: string) {\n // list already in store\n if (addedUrlsSet.has(url)) return;\n\n // fetch token list or get from cache\n const queryOptions = produceSingleQueryOptionMin(url);\n const tokenList = await queryClient.ensureQueryData(queryOptions);\n\n // add url to set\n addedUrlsSet.add(url);\n\n // add to state once per fetched list\n if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);\n}\n\nconst addTokenListEffect = atomEffect((get) => {\n get(tokenListUrlsAtom).forEach(addTokenList);\n});\n\nexport function useActivateEffects() {\n useAtomValue(addTokenListEffect);\n}\n\nconst allTokensListsFetchedSuccesfully = atom<boolean>((get) => {\n const tokenListUrls = get(tokenListUrlsAtom);\n if (tokenListUrls.length === 0) return false;\n const constructedTokensByURL = get(constructedTokensByURLAtom);\n return tokenListUrls.every(\n (url) => constructedTokensByURL[url] !== undefined\n );\n});\n\nexport const useAllTokensListsFetched = () => {\n return useAtomValue(allTokensListsFetchedSuccesfully);\n};\n"],"mappings":";;;;;;;;AAYA,IAAMS,oBAAe,IAAIC,KAAa;AAEtC,eAAeC,EAAaC,GAAa;AAEvC,KAAIH,EAAaI,IAAID,EAAI,CAAE;CAG3B,IAAME,IAAeZ,EAA4BU,EAAI,EAC/CG,IAAY,MAAMd,EAAYe,gBAAgBF,EAAa;AAMjE,CAHAL,EAAaQ,IAAIL,EAAI,EAGjBG,GAAWG,aAAWlB,EAAWmB,IAAIf,GAAmB,CAACW,EAAU,CAAC;;AAG1E,IAAMK,IAAqBjB,GAAYkB,MAAQ;AAC7CA,GAAIf,EAAkB,CAACgB,QAAQX,EAAa;EAC5C;AAEF,SAAOY,IAAA;AACLhB,GAAaa,EAAmB;;AAGlC,IAAMI,IAAmChB,GAAea,MAAQ;CAC9D,IAAMI,IAAgBJ,EAAIf,EAAkB;AAC5C,KAAImB,EAAcC,WAAW,EAAG,QAAO;CACvC,IAAMC,IAAyBN,EAAIhB,EAA2B;AAC9D,QAAOoB,EAAcG,OAClBhB,MAAQe,EAAuBf,OAASiB,KAAAA,EAC1C;EACD,EAEWC,UACJvB,EAAaiB,EAAiC"}
1
+ {"version":3,"file":"effects.js","names":["jotaiStore","queryClient","produceSingleQueryOptionMin","atomEffect","addTokenListsAtom","constructedTokensByURLAtom","tokenListUrlsAtom","useAtomValue","atom","addedUrlsSet","Set","addTokenList","url","has","queryOptions","tokenList","ensureQueryData","add","available","set","addTokenListEffect","get","forEach","useActivateEffects","allTokensListsFetchedSuccesfully","tokenListUrls","length","constructedTokensByURL","every","undefined","useAllTokensListsFetched"],"sources":["../../../../src/tokens/lists/state/effects.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/store\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { produceSingleQueryOptionMin } from \"@/tokens/queries\";\nimport { atomEffect } from \"jotai-effect\";\nimport { addTokenListsAtom } from \"./tokenListsActionsAtom\";\nimport {\n constructedTokensByURLAtom,\n tokenListUrlsAtom,\n} from \"./tokenListsStateAtom\";\nimport { useAtomValue } from \"@/core/store\";\nimport { atom } from \"jotai\";\n\nconst addedUrlsSet = new Set<string>();\n\nasync function addTokenList(url: string) {\n // list already in store\n if (addedUrlsSet.has(url)) return;\n\n // fetch token list or get from cache\n const queryOptions = produceSingleQueryOptionMin(url);\n const tokenList = await queryClient.ensureQueryData(queryOptions);\n\n // add url to set\n addedUrlsSet.add(url);\n\n // add to state once per fetched list\n if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);\n}\n\nconst addTokenListEffect = atomEffect((get) => {\n get(tokenListUrlsAtom).forEach(addTokenList);\n});\n\nexport function useActivateEffects() {\n useAtomValue(addTokenListEffect);\n}\n\nconst allTokensListsFetchedSuccesfully = atom<boolean>((get) => {\n const tokenListUrls = get(tokenListUrlsAtom);\n if (tokenListUrls.length === 0) return false;\n const constructedTokensByURL = get(constructedTokensByURLAtom);\n return tokenListUrls.every(\n (url) => constructedTokensByURL[url] !== undefined\n );\n});\n\nexport const useAllTokensListsFetched = () => {\n return useAtomValue(allTokensListsFetchedSuccesfully);\n};\n"],"mappings":";;;;;;;;AAYA,IAAMS,oBAAe,IAAIC,KAAa;AAEtC,eAAeC,EAAaC,GAAa;CAEvC,IAAIH,EAAaI,IAAID,EAAI,EAAE;CAG3B,IAAME,IAAeZ,EAA4BU,EAAI,EAC/CG,IAAY,MAAMd,EAAYe,gBAAgBF,EAAa;CAMjE,AAHAL,EAAaQ,IAAIL,EAAI,EAGjBG,GAAWG,aAAWlB,EAAWmB,IAAIf,GAAmB,CAACW,EAAU,CAAC;;AAG1E,IAAMK,IAAqBjB,GAAYkB,MAAQ;CAC7CA,EAAIf,EAAkB,CAACgB,QAAQX,EAAa;EAC5C;AAEF,SAAOY,IAAA;CACLhB,EAAaa,EAAmB;;AAGlC,IAAMI,IAAmChB,GAAea,MAAQ;CAC9D,IAAMI,IAAgBJ,EAAIf,EAAkB;CAC5C,IAAImB,EAAcC,WAAW,GAAG,OAAO;CACvC,IAAMC,IAAyBN,EAAIhB,EAA2B;CAC9D,OAAOoB,EAAcG,OAClBhB,MAAQe,EAAuBf,OAASiB,KAAAA,EAC1C;EACD,EAEWC,UACJvB,EAAaiB,EAAiC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenListsActionsAtom.js","names":["filterInvalidTokenAddress","constructTokenFromTokenInfoFactory","TokenInfoWithSupportedChainId","TokenListCompiled","versionComparator","atom","allConstructedTokensByURLAtom","ConstructedListsByURL","isSupportedChainId","addTokenListsAtom","get","set","fetchedLists","constructedTokensByURL","updatedLists","forEach","fetchedList","url","data","version","prevList","tokenConstructor","constructedTokens","tokens","filter","token","address","chainId","map","list","prevState"],"sources":["../../../../src/tokens/lists/state/tokenListsActionsAtom.ts"],"sourcesContent":["import { filterInvalidTokenAddress } from \"@/lib/utils\";\nimport { constructTokenFromTokenInfoFactory } from \"@/tokens/constructor\";\nimport type {\n TokenInfoWithSupportedChainId,\n TokenListCompiled,\n} from \"@/tokens/types\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport { atom } from \"jotai\";\nimport { allConstructedTokensByURLAtom } from \"./tokenListsStateAtom\";\nimport type { ConstructedListsByURL } from \"./types\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\n// set(addTokenListsAtom) = fetchedLists => set(constructedTokensByURLAtom, from fetchedLists)\nexport const addTokenListsAtom = atom(\n null,\n (get, set, fetchedLists: TokenListCompiled[]) => {\n const constructedTokensByURL = get(allConstructedTokensByURLAtom);\n\n const updatedLists: ConstructedListsByURL = {};\n\n fetchedLists.forEach((fetchedList) => {\n const {\n url,\n data: { version },\n } = fetchedList;\n\n const prevList = constructedTokensByURL[url];\n\n // if current version in state >= incoming version, skip\n if (prevList && versionComparator(prevList.version, version) >= 0) return;\n\n const tokenConstructor = constructTokenFromTokenInfoFactory(fetchedList);\n\n const constructedTokens = fetchedList.data.tokens\n .filter(\n (token): token is TokenInfoWithSupportedChainId =>\n filterInvalidTokenAddress({ address: token.address }) &&\n isSupportedChainId(token.chainId)\n )\n .map(tokenConstructor);\n\n updatedLists[url] = {\n version,\n list: constructedTokens,\n };\n });\n\n set(allConstructedTokensByURLAtom, (prevState) => ({\n ...prevState,\n ...updatedLists,\n }));\n }\n);\n"],"mappings":";;;;;;;AAaA,IAAaS,IAAoBJ,EAC/B,OACCK,GAAKC,GAAKC,MAAsC;CAC/C,IAAMC,IAAyBH,EAAIJ,EAA8B,EAE3DQ,IAAsC,EAAE;AA6B9CH,CA3BAC,EAAaG,SAASC,MAAgB;EACpC,IAAM,EACJC,QACAC,MAAM,EAAEC,iBACNH,GAEEI,IAAWP,EAAuBI;AAGxC,MAAIG,KAAYhB,EAAkBgB,EAASD,SAASA,EAAQ,IAAI,EAAG;EAEnE,IAAME,IAAmBpB,EAAmCe,EAAY;AAUxEF,IAAaG,KAAO;GAClBE;GACAU,MAVwBb,EAAYE,KAAKK,OACxCC,QACEC,MACCzB,EAA0B,EAAE0B,SAASD,EAAMC,SAAS,CAAC,IACrDlB,EAAmBiB,EAAME,QAC7B,CAAC,CACAC,IAAIP,EAAiB;GAKvB;GACD,EAEFV,EAAIL,IAAgCwB,OAAe;EACjD,GAAGA;EACH,GAAGhB;EACJ,EAAE;EAEN"}
1
+ {"version":3,"file":"tokenListsActionsAtom.js","names":["filterInvalidTokenAddress","constructTokenFromTokenInfoFactory","TokenInfoWithSupportedChainId","TokenListCompiled","versionComparator","atom","allConstructedTokensByURLAtom","ConstructedListsByURL","isSupportedChainId","addTokenListsAtom","get","set","fetchedLists","constructedTokensByURL","updatedLists","forEach","fetchedList","url","data","version","prevList","tokenConstructor","constructedTokens","tokens","filter","token","address","chainId","map","list","prevState"],"sources":["../../../../src/tokens/lists/state/tokenListsActionsAtom.ts"],"sourcesContent":["import { filterInvalidTokenAddress } from \"@/lib/utils\";\nimport { constructTokenFromTokenInfoFactory } from \"@/tokens/constructor\";\nimport type {\n TokenInfoWithSupportedChainId,\n TokenListCompiled,\n} from \"@/tokens/types\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport { atom } from \"jotai\";\nimport { allConstructedTokensByURLAtom } from \"./tokenListsStateAtom\";\nimport type { ConstructedListsByURL } from \"./types\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\n// set(addTokenListsAtom) = fetchedLists => set(constructedTokensByURLAtom, from fetchedLists)\nexport const addTokenListsAtom = atom(\n null,\n (get, set, fetchedLists: TokenListCompiled[]) => {\n const constructedTokensByURL = get(allConstructedTokensByURLAtom);\n\n const updatedLists: ConstructedListsByURL = {};\n\n fetchedLists.forEach((fetchedList) => {\n const {\n url,\n data: { version },\n } = fetchedList;\n\n const prevList = constructedTokensByURL[url];\n\n // if current version in state >= incoming version, skip\n if (prevList && versionComparator(prevList.version, version) >= 0) return;\n\n const tokenConstructor = constructTokenFromTokenInfoFactory(fetchedList);\n\n const constructedTokens = fetchedList.data.tokens\n .filter(\n (token): token is TokenInfoWithSupportedChainId =>\n filterInvalidTokenAddress({ address: token.address }) &&\n isSupportedChainId(token.chainId)\n )\n .map(tokenConstructor);\n\n updatedLists[url] = {\n version,\n list: constructedTokens,\n };\n });\n\n set(allConstructedTokensByURLAtom, (prevState) => ({\n ...prevState,\n ...updatedLists,\n }));\n }\n);\n"],"mappings":";;;;;;;AAaA,IAAaS,IAAoBJ,EAC/B,OACCK,GAAKC,GAAKC,MAAsC;CAC/C,IAAMC,IAAyBH,EAAIJ,EAA8B,EAE3DQ,IAAsC,EAAE;CA6B9CH,AA3BAC,EAAaG,SAASC,MAAgB;EACpC,IAAM,EACJC,QACAC,MAAM,EAAEC,iBACNH,GAEEI,IAAWP,EAAuBI;EAGxC,IAAIG,KAAYhB,EAAkBgB,EAASD,SAASA,EAAQ,IAAI,GAAG;EAEnE,IAAME,IAAmBpB,EAAmCe,EAAY;EAUxEF,EAAaG,KAAO;GAClBE;GACAU,MAVwBb,EAAYE,KAAKK,OACxCC,QACEC,MACCzB,EAA0B,EAAE0B,SAASD,EAAMC,SAAS,CAAC,IACrDlB,EAAmBiB,EAAME,QAC7B,CAAC,CACAC,IAAIP,EAICC;GACP;GACD,EAEFX,EAAIL,IAAgCwB,OAAe;EACjD,GAAGA;EACH,GAAGhB;EACJ,EAAE;EAEN"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenListsStateAtom.js","names":["ConstructedListsByURL","atom","tokenListsAtom","isValidUrl","isSupportedChainId","allEnabledChainsAtom","gatherEnabledAndDefaultUrlsMappingByChainId","enabledAndDefaultUrlsMappingAtom","get","allEnabledChains","defaultListsAtom","enabledAndDefaultTokenURLS","Object","values","flatMap","lists","all","filter","getUniqueValidUrls","urls","Array","from","Set","tokenListUrlsAtom","configuredLists","length","defaultLists","enabledAndDefaultTokenURLSAtom","enabledAndDefault","forEach","url","keys","_chainId","chainId","Number","includes","push","enabled","allConstructedTokensByURLAtom","constructedTokensByURLAtom","constructedLists","tokenListUrls","reduce","acc","tokens"],"sources":["../../../../src/tokens/lists/state/tokenListsStateAtom.ts"],"sourcesContent":["import type { ConstructedListsByURL } from \"./types\";\nimport { atom } from \"jotai\";\nimport { tokenListsAtom } from \"@/core/state/configAtom\";\nimport { isValidUrl } from \"@/lib/utils\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { allEnabledChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport { gatherEnabledAndDefaultUrlsMappingByChainId } from \"../utils\";\n\nconst enabledAndDefaultUrlsMappingAtom = atom((get) => {\n const allEnabledChains = get(allEnabledChainsAtom);\n return gatherEnabledAndDefaultUrlsMappingByChainId(allEnabledChains);\n});\n\n/**\n * Returns default token list URLs available for enabled chains.\n */\nconst defaultListsAtom = atom<string[]>((get) => {\n const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);\n return Object.values(enabledAndDefaultTokenURLS)\n .flatMap((lists) => lists.all)\n .filter(isValidUrl);\n});\n\nconst getUniqueValidUrls = (urls: string[]) =>\n Array.from(new Set(urls)).filter(isValidUrl);\nexport const tokenListUrlsAtom = atom<string[]>((get) => {\n const configuredLists = get(tokenListsAtom);\n if (configuredLists.length === 0) {\n const defaultLists = get(defaultListsAtom);\n return getUniqueValidUrls(defaultLists);\n }\n\n return getUniqueValidUrls(configuredLists);\n});\n\n/** \n Enabled and default token list URLs by chain ID,\n taking into account any configured lists in the widget config. \n**/\nexport const enabledAndDefaultTokenURLSAtom = atom((get) => {\n const configuredLists = get(tokenListsAtom);\n\n const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);\n if (configuredLists.length === 0) return enabledAndDefaultTokenURLS;\n\n const enabledAndDefault = { ...enabledAndDefaultTokenURLS };\n configuredLists.forEach((url) => {\n Object.keys(enabledAndDefault).forEach((_chainId) => {\n const chainId = Number(_chainId);\n if (!isSupportedChainId(chainId)) return; // Object.keys destroys types\n if (!isValidUrl(url)) return; // skip if provided URL is not valid\n\n // put URL from config into both enabled and all lists\n if (!enabledAndDefault[chainId].all.includes(url))\n enabledAndDefault[chainId].all.push(url);\n if (!enabledAndDefault[chainId].enabled.includes(url))\n enabledAndDefault[chainId].enabled.push(url);\n });\n });\n\n return enabledAndDefault;\n});\n\n/**\n All constructed tokens from all fetched lists during the widget lifecycle.\n **/\nexport const allConstructedTokensByURLAtom = atom<ConstructedListsByURL>({});\n\n/**\n Constructed tokens from currently enabled lists only (from config or defaults).\n**/\nexport const constructedTokensByURLAtom = atom<ConstructedListsByURL>((get) => {\n const constructedLists = get(allConstructedTokensByURLAtom);\n const tokenListUrls = get(tokenListUrlsAtom);\n\n return tokenListUrls.reduce<ConstructedListsByURL>((acc, url) => {\n const tokens = constructedLists[url];\n if (tokens) acc[url] = tokens;\n return acc;\n }, {});\n});\n"],"mappings":";;;;;;;AAQA,IAAMO,IAAmCN,GAAMO,MAEtCF,EADkBE,EAAIH,EAAqB,CACkB,CACpE,EAKIK,IAAmBT,GAAgBO,MAAQ;CAC/C,IAAMG,IAA6BH,EAAID,EAAiC;AACxE,QAAOK,OAAOC,OAAOF,EAA2B,CAC7CG,SAASC,MAAUA,EAAMC,IAAI,CAC7BC,OAAOd,EAAW;EACrB,EAEIe,KAAsBC,MAC1BC,MAAMC,KAAK,IAAIC,IAAIH,EAAK,CAAC,CAACF,OAAOd,EAAW,EACjCoB,IAAoBtB,GAAgBO,MAAQ;CACvD,IAAMgB,IAAkBhB,EAAIN,EAAe;AAM3C,QALIsB,EAAgBC,WAAW,IAEtBP,EADcV,EAAIE,EAAiB,CACH,GAGlCQ,EAAmBM,EAAgB;EAC1C,EAMWG,IAAiC1B,GAAMO,MAAQ;CAC1D,IAAMgB,IAAkBhB,EAAIN,EAAe,EAErCS,IAA6BH,EAAID,EAAiC;AACxE,KAAIiB,EAAgBC,WAAW,EAAG,QAAOd;CAEzC,IAAMiB,IAAoB,EAAE,GAAGjB,GAA4B;AAe3D,QAdAa,EAAgBK,SAASC,MAAQ;AAC/BlB,SAAOmB,KAAKH,EAAkB,CAACC,SAASG,MAAa;GACnD,IAAMC,IAAUC,OAAOF,EAAS;AAC3B5B,KAAmB6B,EAAQ,IAC3B9B,EAAW2B,EAAI,KAGfF,EAAkBK,GAASjB,IAAImB,SAASL,EAAI,IAC/CF,EAAkBK,GAASjB,IAAIoB,KAAKN,EAAI,EACrCF,EAAkBK,GAASI,QAAQF,SAASL,EAAI,IACnDF,EAAkBK,GAASI,QAAQD,KAAKN,EAAI;IAC9C;GACF,EAEKF;EACP,EAKWU,IAAgCrC,EAA4B,EAAE,CAAC,EAK/DsC,IAA6BtC,GAA6BO,MAAQ;CAC7E,IAAMgC,IAAmBhC,EAAI8B,EAA8B;AAG3D,QAFsB9B,EAAIe,EAAkB,CAEvBmB,QAA+BC,GAAKb,MAAQ;EAC/D,IAAMc,IAASJ,EAAiBV;AAEhC,SADIc,MAAQD,EAAIb,KAAOc,IAChBD;IACN,EAAE,CAAC;EACN"}
1
+ {"version":3,"file":"tokenListsStateAtom.js","names":["ConstructedListsByURL","atom","tokenListsAtom","isValidUrl","isSupportedChainId","allEnabledChainsAtom","gatherEnabledAndDefaultUrlsMappingByChainId","enabledAndDefaultUrlsMappingAtom","get","allEnabledChains","defaultListsAtom","enabledAndDefaultTokenURLS","Object","values","flatMap","lists","all","filter","getUniqueValidUrls","urls","Array","from","Set","tokenListUrlsAtom","configuredLists","length","defaultLists","enabledAndDefaultTokenURLSAtom","enabledAndDefault","forEach","url","keys","_chainId","chainId","Number","includes","push","enabled","allConstructedTokensByURLAtom","constructedTokensByURLAtom","constructedLists","tokenListUrls","reduce","acc","tokens"],"sources":["../../../../src/tokens/lists/state/tokenListsStateAtom.ts"],"sourcesContent":["import type { ConstructedListsByURL } from \"./types\";\nimport { atom } from \"jotai\";\nimport { tokenListsAtom } from \"@/core/state/configAtom\";\nimport { isValidUrl } from \"@/lib/utils\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { allEnabledChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport { gatherEnabledAndDefaultUrlsMappingByChainId } from \"../utils\";\n\nconst enabledAndDefaultUrlsMappingAtom = atom((get) => {\n const allEnabledChains = get(allEnabledChainsAtom);\n return gatherEnabledAndDefaultUrlsMappingByChainId(allEnabledChains);\n});\n\n/**\n * Returns default token list URLs available for enabled chains.\n */\nconst defaultListsAtom = atom<string[]>((get) => {\n const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);\n return Object.values(enabledAndDefaultTokenURLS)\n .flatMap((lists) => lists.all)\n .filter(isValidUrl);\n});\n\nconst getUniqueValidUrls = (urls: string[]) =>\n Array.from(new Set(urls)).filter(isValidUrl);\nexport const tokenListUrlsAtom = atom<string[]>((get) => {\n const configuredLists = get(tokenListsAtom);\n if (configuredLists.length === 0) {\n const defaultLists = get(defaultListsAtom);\n return getUniqueValidUrls(defaultLists);\n }\n\n return getUniqueValidUrls(configuredLists);\n});\n\n/** \n Enabled and default token list URLs by chain ID,\n taking into account any configured lists in the widget config. \n**/\nexport const enabledAndDefaultTokenURLSAtom = atom((get) => {\n const configuredLists = get(tokenListsAtom);\n\n const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);\n if (configuredLists.length === 0) return enabledAndDefaultTokenURLS;\n\n const enabledAndDefault = { ...enabledAndDefaultTokenURLS };\n configuredLists.forEach((url) => {\n Object.keys(enabledAndDefault).forEach((_chainId) => {\n const chainId = Number(_chainId);\n if (!isSupportedChainId(chainId)) return; // Object.keys destroys types\n if (!isValidUrl(url)) return; // skip if provided URL is not valid\n\n // put URL from config into both enabled and all lists\n if (!enabledAndDefault[chainId].all.includes(url))\n enabledAndDefault[chainId].all.push(url);\n if (!enabledAndDefault[chainId].enabled.includes(url))\n enabledAndDefault[chainId].enabled.push(url);\n });\n });\n\n return enabledAndDefault;\n});\n\n/**\n All constructed tokens from all fetched lists during the widget lifecycle.\n **/\nexport const allConstructedTokensByURLAtom = atom<ConstructedListsByURL>({});\n\n/**\n Constructed tokens from currently enabled lists only (from config or defaults).\n**/\nexport const constructedTokensByURLAtom = atom<ConstructedListsByURL>((get) => {\n const constructedLists = get(allConstructedTokensByURLAtom);\n const tokenListUrls = get(tokenListUrlsAtom);\n\n return tokenListUrls.reduce<ConstructedListsByURL>((acc, url) => {\n const tokens = constructedLists[url];\n if (tokens) acc[url] = tokens;\n return acc;\n }, {});\n});\n"],"mappings":";;;;;;;AAQA,IAAMO,IAAmCN,GAAMO,MAEtCF,EADkBE,EAAIH,EACsBI,CAAiB,CACpE,EAKIC,IAAmBT,GAAgBO,MAAQ;CAC/C,IAAMG,IAA6BH,EAAID,EAAiC;CACxE,OAAOK,OAAOC,OAAOF,EAA2B,CAC7CG,SAASC,MAAUA,EAAMC,IAAI,CAC7BC,OAAOd,EAAW;EACrB,EAEIe,KAAsBC,MAC1BC,MAAMC,KAAK,IAAIC,IAAIH,EAAK,CAAC,CAACF,OAAOd,EAAW,EACjCoB,IAAoBtB,GAAgBO,MAAQ;CACvD,IAAMgB,IAAkBhB,EAAIN,EAAe;CAM3C,OALIsB,EAAgBC,WAAW,IAEtBP,EADcV,EAAIE,EACCgB,CAAa,GAGlCR,EAAmBM,EAAgB;EAC1C,EAMWG,IAAiC1B,GAAMO,MAAQ;CAC1D,IAAMgB,IAAkBhB,EAAIN,EAAe,EAErCS,IAA6BH,EAAID,EAAiC;CACxE,IAAIiB,EAAgBC,WAAW,GAAG,OAAOd;CAEzC,IAAMiB,IAAoB,EAAE,GAAGjB,GAA4B;CAe3D,OAdAa,EAAgBK,SAASC,MAAQ;EAC/BlB,OAAOmB,KAAKH,EAAkB,CAACC,SAASG,MAAa;GACnD,IAAMC,IAAUC,OAAOF,EAAS;GAC3B5B,EAAmB6B,EAAQ,IAC3B9B,EAAW2B,EAAI,KAGfF,EAAkBK,GAASjB,IAAImB,SAASL,EAAI,IAC/CF,EAAkBK,GAASjB,IAAIoB,KAAKN,EAAI,EACrCF,EAAkBK,GAASI,QAAQF,SAASL,EAAI,IACnDF,EAAkBK,GAASI,QAAQD,KAAKN,EAAI;IAC9C;GACF,EAEKF;EACP,EAKWU,IAAgCrC,EAA4B,EAAE,CAAC,EAK/DsC,IAA6BtC,GAA6BO,MAAQ;CAC7E,IAAMgC,IAAmBhC,EAAI8B,EAA8B;CAG3D,OAFsB9B,EAAIe,EAEnBkB,CAAcC,QAA+BC,GAAKb,MAAQ;EAC/D,IAAMc,IAASJ,EAAiBV;EAEhC,OADIc,MAAQD,EAAIb,KAAOc,IAChBD;IACN,EAAE,CAAC;EACN"}
@@ -1 +1 @@
1
- {"version":3,"file":"overrides.js","names":["TokenInfo","TokenList","TokenListOverride","IndividualTokenOverride","AAVE_OverrideTokenInfo","Partial","logoURI","GHO_OverrideTokenInfo","TokenListsOverrides","Record","merge","symbol","name","remove","Set","decimals","USDT0Icon","IndividualTokensOverrides","overrideTokenList","tokenList","listURL","overrides","overriddenTokens","tokens","reduce","accum","tokenInfo","individualOverride","address","toLowerCase","chainId","override","push","has","token","add"],"sources":["../../src/tokens/overrides.ts"],"sourcesContent":["import type { TokenInfo, TokenList } from \"@uniswap/token-lists\";\nimport type { TokenListOverride, IndividualTokenOverride } from \"./types\";\n\n// AAVE and GHO tokens have deprecated logos in some lists\nconst AAVE_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354\",\n};\nconst GHO_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/30663/large/gho-token-logo.png?1720517092\",\n};\n\n// override decimals that we know are wrong in Gemini token list https://paraswap.slack.com/archives/C01AUMPP56J/p1669810101097819?thread_ts=1669804269.667909&cid=C01AUMPP56J\nconst TokenListsOverrides: Record<string, TokenListOverride> = {\n // Ethereum\n \"https://tokens.uniswap.org\": {\n merge: {\n \"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9\": AAVE_OverrideTokenInfo,\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n \"https://raw.githubusercontent.com/paraswap/community-token-list/master/src/sources/paraswap.extralist.json\":\n {\n merge: {\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n // Optimism\n \"https://static.optimism.io/optimism.tokenlist.json\": {\n merge: {\n \"0x76fb31fb4af56892a25e32cfc43de717950c9278\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Avalanche\n \"https://raw.githubusercontent.com/pangolindex/tokenlists/main/pangolin.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n \"https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/mc.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Polygon\n \"https://unpkg.com/quickswap-default-token-list@latest/build/quickswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n \"https://unpkg.com/@cometh-game/default-token-list@latest/build/comethswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n\n // Arbitrum\n \"https://bridge.arbitrum.io/token-list-42161.json\": {\n // Gemini tokens list has been removed from our dApp, but we keep the overrides in case of similar issues in the future and a need of quick fix\n // \"https://www.gemini.com/uniswap/manifest.json\": {merge: {\n // \"0x6b0b3a982b4634ac68dd83a4dbf02311ce324181\": { decimals: 18 },\n // \"0xbb0e17ef65f82ab018d8edd776e8dd940327b28b\": { decimals: 18 },\n // \"0x18aaa7115705e8be94bffebde57af9bfc265b998\": { decimals: 18 },\n // }},\n // Arbitrum GMX is under an old address in the list\n remove: new Set([\"0x590020b1005b8b25f1a2c82c5f743c540dcfa24d\"]),\n },\n\n // Gnosis\n \"https://tokens.coingecko.com/xdai/all.json\": {\n merge: {\n \"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d\": { symbol: \"WXDAI\" },\n },\n },\n \"https://tokens.coingecko.com/polygon-pos/all.json\": {\n merge: {\n // MLN token with wrong decimals in the tokenList\n \"0xa9f37d84c856fda3812ad0519dad44fa0a3fe207\": { decimals: 18 },\n },\n },\n};\n\nconst USDT0Icon = \"https://static.optimism.io/data/USD%E2%82%AE0/logo.png\";\n// `lowercase_address@chainId`: override\nconst IndividualTokensOverrides: Record<\n `${string}@${number}`,\n IndividualTokenOverride\n> = {\n // USDT on Ethereum stays USDT\n \"0xdac17f958d2ee523a2206206994597c13d831ec7@1\": {\n merge: {\n symbol: \"USDT\",\n name: \"Tether USD\",\n logoURI: \"https://etherscan.io/token/images/tethernew_32.svg\",\n },\n },\n // USDT on other chains is USDT0 but tokenLists may have it under USDT,\n // basically USDT on Ethereum bridged through LayerZero = USDT0.\n // overriding their symbol from USD₮0 to USDT0 to make it consistent with other chains and searchable\n \"0xc2132d05d31c914a87c6611c10748aeb04b58e8f@137\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n \"0x01bff41798a0bcf287b996046ca68b395dbc1071@10\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n \"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9@42161\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n \"0x9151434b16b9763660705744891fa906f660ecc5@130\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n // separate USDT0 on Base through Stargate bridge,\n // included to make the symbol consistent with other chains and searchable\n \"0x102d758f688a4c1c5a80b116bd945d4455460282@8453\": {\n merge: {\n symbol: \"USDT0\",\n name: \"Stargate USD₮0 (Bridged)\",\n logoURI: USDT0Icon,\n },\n },\n};\n\nexport function overrideTokenList(tokenList: TokenList, listURL: string) {\n const overrides = TokenListsOverrides[listURL];\n\n const overriddenTokens = tokenList.tokens.reduce<TokenInfo[]>(\n (accum, tokenInfo) => {\n const individualOverride =\n IndividualTokensOverrides[\n `${tokenInfo.address.toLowerCase()}@${tokenInfo.chainId}`\n ];\n\n // override individual token in all tokenLists\n if (individualOverride) {\n if (individualOverride.remove) {\n return accum;\n }\n if (individualOverride.merge) {\n const override = { ...tokenInfo, ...individualOverride.merge };\n accum.push(override);\n return accum;\n }\n }\n\n if (!overrides) {\n // no overrides specifically for this tokenList\n accum.push(tokenInfo);\n return accum;\n }\n\n // override token in this tokenList\n const remove = overrides.remove?.has(tokenInfo.address.toLowerCase());\n if (remove) return accum;\n\n const override = overrides.merge?.[tokenInfo.address.toLowerCase()];\n const token = override ? { ...tokenInfo, ...override } : tokenInfo;\n\n accum.push(token);\n\n return accum;\n },\n []\n );\n\n if (overrides?.add) {\n overriddenTokens.push(...overrides.add);\n }\n\n return { ...tokenList, tokens: overriddenTokens };\n}\n"],"mappings":";AAIA,IAAMI,IAA6C,EACjDE,SACE,8FACH,EACKC,IAA4C,EAChDD,SACE,4FACH,EAGKE,IAAyD;CAE7D,8BAA8B,EAC5BE,OAAO;EACL,8CAA8CN;EAC9C,8CAA8CG;EAChD,EACD;CAED,8GACE,EACEG,OAAO,EACL,8CAA8CH,GAChD,EACD;CAGH,sDAAsD,EACpDG,OAAO,EACL,8CAA8CN,GAChD,EACD;CAGD,yFACE,EACEM,OAAO,EACL,8CAA8CN,GAChD,EACD;CACH,yFACE,EACEM,OAAO,EACL,8CAA8CN,GAChD,EACD;CAGH,gGACE,EACEM,OAAO;EACL,8CAA8CN;EAC9C,8CAA8C;GAC5CO,QAAQ;GACRC,MAAM;GACR;EACF,EACD;CACH,oGACE,EACEF,OAAO;EACL,8CAA8CN;EAC9C,8CAA8C;GAC5CO,QAAQ;GACRC,MAAM;GACR;EACF,EACD;CAGH,oDAAoD,EAQlDC,QAAQ,IAAIC,IAAI,CAAC,6CAA6C,CAAA,EAC/D;CAGD,8CAA8C,EAC5CJ,OAAO,EACL,8CAA8C,EAAEC,QAAQ,SAAQ,EAClE,EACD;CACD,qDAAqD,EACnDD,OAAO,EAEL,8CAA8C,EAAEK,UAAU,IAAG,EAC/D,EACF;CACD,EAEKC,IAAY,0DAEZC,IAGF;CAEF,gDAAgD,EAC9CP,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAAS;EACX,EACD;CAID,kDAAkD,EAChDI,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CACD,iDAAiD,EAC/CN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CACD,oDAAoD,EAClDN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CACD,kDAAkD,EAChDN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CAGD,mDAAmD,EACjDN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACF;CACD;AAED,SAAgBE,EAAkBC,GAAsBC,GAAiB;CACvE,IAAMC,IAAYb,EAAoBY,IAEhCE,IAAmBH,EAAUI,OAAOC,QACvCC,GAAOC,MAAc;EACpB,IAAMC,IACJV,EACE,GAAGS,EAAUE,QAAQC,aAAa,CAAA,GAAIH,EAAUI;AAIpD,MAAIH,GAAoB;AACtB,OAAIA,EAAmBd,OACrB,QAAOY;AAET,OAAIE,EAAmBjB,OAAO;IAC5B,IAAMqB,IAAW;KAAE,GAAGL;KAAW,GAAGC,EAAmBjB;KAAO;AAE9D,WADAe,EAAMO,KAAKD,EAAS,EACbN;;;AAIX,MAAI,CAACJ,EAGH,QADAI,EAAMO,KAAKN,EAAU,EACdD;AAKT,MADeJ,EAAUR,QAAQoB,IAAIP,EAAUE,QAAQC,aAAa,CAAC,CACzD,QAAOJ;EAEnB,IAAMM,IAAWV,EAAUX,QAAQgB,EAAUE,QAAQC,aAAa,GAC5DK,IAAQH,IAAW;GAAE,GAAGL;GAAW,GAAGK;GAAU,GAAGL;AAIzD,SAFAD,EAAMO,KAAKE,EAAM,EAEVT;IAET,EACF,CAAC;AAMD,QAJIJ,GAAWc,OACbb,EAAiBU,KAAK,GAAGX,EAAUc,IAAI,EAGlC;EAAE,GAAGhB;EAAWI,QAAQD;EAAkB"}
1
+ {"version":3,"file":"overrides.js","names":["TokenInfo","TokenList","TokenListOverride","IndividualTokenOverride","AAVE_OverrideTokenInfo","Partial","logoURI","GHO_OverrideTokenInfo","TokenListsOverrides","Record","merge","symbol","name","remove","Set","decimals","USDT0Icon","IndividualTokensOverrides","overrideTokenList","tokenList","listURL","overrides","overriddenTokens","tokens","reduce","accum","tokenInfo","individualOverride","address","toLowerCase","chainId","override","push","has","token","add"],"sources":["../../src/tokens/overrides.ts"],"sourcesContent":["import type { TokenInfo, TokenList } from \"@uniswap/token-lists\";\nimport type { TokenListOverride, IndividualTokenOverride } from \"./types\";\n\n// AAVE and GHO tokens have deprecated logos in some lists\nconst AAVE_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354\",\n};\nconst GHO_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/30663/large/gho-token-logo.png?1720517092\",\n};\n\n// override decimals that we know are wrong in Gemini token list https://paraswap.slack.com/archives/C01AUMPP56J/p1669810101097819?thread_ts=1669804269.667909&cid=C01AUMPP56J\nconst TokenListsOverrides: Record<string, TokenListOverride> = {\n // Ethereum\n \"https://tokens.uniswap.org\": {\n merge: {\n \"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9\": AAVE_OverrideTokenInfo,\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n \"https://raw.githubusercontent.com/paraswap/community-token-list/master/src/sources/paraswap.extralist.json\":\n {\n merge: {\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n // Optimism\n \"https://static.optimism.io/optimism.tokenlist.json\": {\n merge: {\n \"0x76fb31fb4af56892a25e32cfc43de717950c9278\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Avalanche\n \"https://raw.githubusercontent.com/pangolindex/tokenlists/main/pangolin.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n \"https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/mc.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Polygon\n \"https://unpkg.com/quickswap-default-token-list@latest/build/quickswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n \"https://unpkg.com/@cometh-game/default-token-list@latest/build/comethswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n\n // Arbitrum\n \"https://bridge.arbitrum.io/token-list-42161.json\": {\n // Gemini tokens list has been removed from our dApp, but we keep the overrides in case of similar issues in the future and a need of quick fix\n // \"https://www.gemini.com/uniswap/manifest.json\": {merge: {\n // \"0x6b0b3a982b4634ac68dd83a4dbf02311ce324181\": { decimals: 18 },\n // \"0xbb0e17ef65f82ab018d8edd776e8dd940327b28b\": { decimals: 18 },\n // \"0x18aaa7115705e8be94bffebde57af9bfc265b998\": { decimals: 18 },\n // }},\n // Arbitrum GMX is under an old address in the list\n remove: new Set([\"0x590020b1005b8b25f1a2c82c5f743c540dcfa24d\"]),\n },\n\n // Gnosis\n \"https://tokens.coingecko.com/xdai/all.json\": {\n merge: {\n \"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d\": { symbol: \"WXDAI\" },\n },\n },\n \"https://tokens.coingecko.com/polygon-pos/all.json\": {\n merge: {\n // MLN token with wrong decimals in the tokenList\n \"0xa9f37d84c856fda3812ad0519dad44fa0a3fe207\": { decimals: 18 },\n },\n },\n};\n\nconst USDT0Icon = \"https://static.optimism.io/data/USD%E2%82%AE0/logo.png\";\n// `lowercase_address@chainId`: override\nconst IndividualTokensOverrides: Record<\n `${string}@${number}`,\n IndividualTokenOverride\n> = {\n // USDT on Ethereum stays USDT\n \"0xdac17f958d2ee523a2206206994597c13d831ec7@1\": {\n merge: {\n symbol: \"USDT\",\n name: \"Tether USD\",\n logoURI: \"https://etherscan.io/token/images/tethernew_32.svg\",\n },\n },\n // USDT on other chains is USDT0 but tokenLists may have it under USDT,\n // basically USDT on Ethereum bridged through LayerZero = USDT0.\n // overriding their symbol from USD₮0 to USDT0 to make it consistent with other chains and searchable\n \"0xc2132d05d31c914a87c6611c10748aeb04b58e8f@137\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n \"0x01bff41798a0bcf287b996046ca68b395dbc1071@10\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n \"0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9@42161\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n \"0x9151434b16b9763660705744891fa906f660ecc5@130\": {\n merge: {\n symbol: \"USDT0\",\n name: \"USD₮0\",\n logoURI: USDT0Icon,\n },\n },\n // separate USDT0 on Base through Stargate bridge,\n // included to make the symbol consistent with other chains and searchable\n \"0x102d758f688a4c1c5a80b116bd945d4455460282@8453\": {\n merge: {\n symbol: \"USDT0\",\n name: \"Stargate USD₮0 (Bridged)\",\n logoURI: USDT0Icon,\n },\n },\n};\n\nexport function overrideTokenList(tokenList: TokenList, listURL: string) {\n const overrides = TokenListsOverrides[listURL];\n\n const overriddenTokens = tokenList.tokens.reduce<TokenInfo[]>(\n (accum, tokenInfo) => {\n const individualOverride =\n IndividualTokensOverrides[\n `${tokenInfo.address.toLowerCase()}@${tokenInfo.chainId}`\n ];\n\n // override individual token in all tokenLists\n if (individualOverride) {\n if (individualOverride.remove) {\n return accum;\n }\n if (individualOverride.merge) {\n const override = { ...tokenInfo, ...individualOverride.merge };\n accum.push(override);\n return accum;\n }\n }\n\n if (!overrides) {\n // no overrides specifically for this tokenList\n accum.push(tokenInfo);\n return accum;\n }\n\n // override token in this tokenList\n const remove = overrides.remove?.has(tokenInfo.address.toLowerCase());\n if (remove) return accum;\n\n const override = overrides.merge?.[tokenInfo.address.toLowerCase()];\n const token = override ? { ...tokenInfo, ...override } : tokenInfo;\n\n accum.push(token);\n\n return accum;\n },\n []\n );\n\n if (overrides?.add) {\n overriddenTokens.push(...overrides.add);\n }\n\n return { ...tokenList, tokens: overriddenTokens };\n}\n"],"mappings":";AAIA,IAAMI,IAA6C,EACjDE,SACE,8FACH,EACKC,IAA4C,EAChDD,SACE,4FACH,EAGKE,IAAyD;CAE7D,8BAA8B,EAC5BE,OAAO;EACL,8CAA8CN;EAC9C,8CAA8CG;EAChD,EACD;CAED,8GACE,EACEG,OAAO,EACL,8CAA8CH,GAChD,EACD;CAGH,sDAAsD,EACpDG,OAAO,EACL,8CAA8CN,GAChD,EACD;CAGD,yFACE,EACEM,OAAO,EACL,8CAA8CN,GAChD,EACD;CACH,yFACE,EACEM,OAAO,EACL,8CAA8CN,GAChD,EACD;CAGH,gGACE,EACEM,OAAO;EACL,8CAA8CN;EAC9C,8CAA8C;GAC5CO,QAAQ;GACRC,MAAM;GACR;EACF,EACD;CACH,oGACE,EACEF,OAAO;EACL,8CAA8CN;EAC9C,8CAA8C;GAC5CO,QAAQ;GACRC,MAAM;GACR;EACF,EACD;CAGH,oDAAoD,EAQlDC,QAAQ,IAAIC,IAAI,CAAC,6CAA6C,CAAA,EAC/D;CAGD,8CAA8C,EAC5CJ,OAAO,EACL,8CAA8C,EAAEC,QAAQ,SAAQ,EAClE,EACD;CACD,qDAAqD,EACnDD,OAAO,EAEL,8CAA8C,EAAEK,UAAU,IAAG,EAC/D,EACF;CACD,EAEKC,IAAY,0DAEZC,IAGF;CAEF,gDAAgD,EAC9CP,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAAS;EACX,EACD;CAID,kDAAkD,EAChDI,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CACD,iDAAiD,EAC/CN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CACD,oDAAoD,EAClDN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CACD,kDAAkD,EAChDN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACD;CAGD,mDAAmD,EACjDN,OAAO;EACLC,QAAQ;EACRC,MAAM;EACNN,SAASU;EACX,EACF;CACD;AAED,SAAgBE,EAAkBC,GAAsBC,GAAiB;CACvE,IAAMC,IAAYb,EAAoBY,IAEhCE,IAAmBH,EAAUI,OAAOC,QACvCC,GAAOC,MAAc;EACpB,IAAMC,IACJV,EACE,GAAGS,EAAUE,QAAQC,aAAa,CAAA,GAAIH,EAAUI;EAIpD,IAAIH,GAAoB;GACtB,IAAIA,EAAmBd,QACrB,OAAOY;GAET,IAAIE,EAAmBjB,OAAO;IAC5B,IAAMqB,IAAW;KAAE,GAAGL;KAAW,GAAGC,EAAmBjB;KAAO;IAE9D,OADAe,EAAMO,KAAKD,EAAS,EACbN;;;EAIX,IAAI,CAACJ,GAGH,OADAI,EAAMO,KAAKN,EAAU,EACdD;EAKT,IADeJ,EAAUR,QAAQoB,IAAIP,EAAUE,QAAQC,aAAa,CAAC,EACzD,OAAOJ;EAEnB,IAAMM,IAAWV,EAAUX,QAAQgB,EAAUE,QAAQC,aAAa,GAC5DK,IAAQH,IAAW;GAAE,GAAGL;GAAW,GAAGK;GAAU,GAAGL;EAIzD,OAFAD,EAAMO,KAAKE,EAAM,EAEVT;IAET,EACF,CAAC;CAMD,OAJIJ,GAAWc,OACbb,EAAiBU,KAAK,GAAGX,EAAUc,IAAI,EAGlC;EAAE,GAAGhB;EAAWI,QAAQD;EAAkB"}
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","names":["replaceEqualDeep","useQueries","UseQueryOptions","UseQueryResult","versionComparator","AxiosError","useMemo","downloadTokenListDataWithFallback","TokenListFetched","QUERY_KEY_FETCH_TOKEN_LISTS","constructPlaceholderData","isTruthy","overrideTokenList","stableCoinsTokenLists","useAtomValue","tokenListUrlsAtom","UseFetchListsResult","dataOrPlaceholder","T","result","isDataEqual","currentData","incomingData","available","isOlderOrEqual","data","version","produceQueriesOptions","listURLs","tag","uniqueListURLs","Array","from","Set","filter","map","listURL","produceSingleQueryOption","produceSingleQueryOptionMin","queryKey","queryFn","signal","_data","url","name","isArray","tokens","staleTime","Infinity","gcTime","structuralSharing","oldData","newData","notifyOnChangeProps","placeholderData","refetchOnMount","useFetchListsWithQueryResult","$","_c","t0","t1","queries","queryResults","t2","_temp","useFetchLists","_temp2","useFetchTokenLists","currentlyEnabledLists","concat","includingStablecoins","error","config"],"sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport { stableCoinsTokenLists } from \"./stabeCoins\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tokenListUrlsAtom } from \"./lists/state/tokenListsStateAtom\";\n\ntype UseFetchListsResult<T extends string> = {\n dataOrPlaceholder: TokenListFetched<T>;\n result: UseQueryResult<TokenListFetched<T>, AxiosError>;\n};\n\nfunction isDataEqual<T extends string | never = never>(\n currentData: TokenListFetched<T> | undefined,\n incomingData: TokenListFetched<T>\n): currentData is typeof incomingData {\n // there was no oldData --> data not equal\n if (!currentData) return false;\n // data was a placeholder (available = false) and data.available changed --> data not equal\n if (!currentData.available || !incomingData.available)\n return currentData.available !== incomingData.available;\n // incoming list.version <= current list.version --> consider data equal (don't replace with incoming older version)\n const isOlderOrEqual =\n versionComparator(incomingData.data.version, currentData.data.version) <= 0;\n return isOlderOrEqual;\n}\n\nexport function produceQueriesOptions<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n) {\n // there are duplicate listURLs because in lists.json same list can be present for multiple chains\n const uniqueListURLs = Array.from(new Set(listURLs));\n\n return (\n uniqueListURLs\n // to prevent occasional `token_list_download_error:\"\"` event tag\n .filter(isTruthy)\n .map<UseQueryOptions<TokenListFetched<T>, AxiosError>>((listURL) =>\n produceSingleQueryOption<T>(listURL, tag)\n )\n );\n}\n\nexport function produceSingleQueryOptionMin<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],\n queryFn: async ({ signal }) => {\n const _data = await downloadTokenListDataWithFallback(listURL, signal);\n\n const data = overrideTokenList(_data, listURL);\n\n return {\n url: listURL,\n name: data.name,\n data,\n tag,\n // possibly mitigates https://sentry.io/organizations/paraswap/discover/ui:3fa26b87e3594d1998ff9fb4770a26d9\n available: Array.isArray(data.tokens),\n };\n },\n staleTime: Infinity,\n gcTime: Infinity,\n\n // custom comparison to optimize big token list comparison\n structuralSharing: (oldData, newData) =>\n isDataEqual(\n oldData as TokenListFetched<T> | undefined,\n newData as TokenListFetched<T>\n )\n ? oldData\n : replaceEqualDeep(oldData, newData),\n };\n}\n\n// adds useQuery options\nexport function produceSingleQueryOption<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n ...produceSingleQueryOptionMin<T>(listURL, tag),\n notifyOnChangeProps: [\"data\"],\n placeholderData: constructPlaceholderData(listURL), // start with unavailable but still with url\n refetchOnMount: false,\n };\n}\n\nexport const useFetchListsWithQueryResult = <T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): UseFetchListsResult<T>[] => {\n const queryResults = useQueries<\n UseQueryOptions<TokenListFetched<T>, AxiosError>[]\n >({\n queries: produceQueriesOptions(listURLs, tag),\n });\n\n return useMemo<UseFetchListsResult<T>[]>(\n () =>\n queryResults.map((result) => ({\n // provide {url, name} even on error\n dataOrPlaceholder:\n result.data ||\n constructPlaceholderData(result.error?.config?.url || \"\"),\n result,\n })),\n [queryResults]\n );\n};\n\nexport function useFetchLists<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): TokenListFetched<T>[] {\n const queryResults = useFetchListsWithQueryResult(listURLs, tag);\n\n return useMemo(\n () => queryResults.map(({ dataOrPlaceholder }) => dataOrPlaceholder),\n [queryResults]\n );\n}\n\nexport function useFetchTokenLists(): TokenListFetched[] {\n const currentlyEnabledLists = useAtomValue(tokenListUrlsAtom);\n\n // stablecoins list is auxiliary list, always in use\n const includingStablecoins = stableCoinsTokenLists.concat(\n currentlyEnabledLists\n );\n\n return useFetchLists(includingStablecoins);\n}\n"],"mappings":";;;;;;;;;;;;;AAwBA,SAASoB,EACPC,GACAC,GACoC;AASpC,QAPKD,IAED,CAACA,EAAYE,aAAa,CAACD,EAAaC,YACnCF,EAAYE,cAAcD,EAAaC,YAG9CnB,EAAkBkB,EAAaG,KAAKC,SAASL,EAAYI,KAAKC,QAAQ,IAAI,IANnD;;AAU3B,SAAgBC,EACdC,GACAC,GACA;AAIA,QAFuBE,MAAMC,KAAK,IAAIC,IAAIL,EAAS,CAAC,CAK/CM,OAAOvB,EAAS,CAChBwB,KAAuDC,MACtDC,EAA4BD,GAASP,EACvC,CAAC;;AAIP,SAAgBS,EACdF,GACAP,GACkD;AAClD,QAAO;EACLU,UAAU,CAAC9B,GAA6B2B,EAAQ;EAChDI,SAAS,OAAO,EAAEC,gBAAa;GAG7B,IAAMhB,IAAOb,EAFC,MAAML,EAAkC6B,GAASK,EAAO,EAEhCL,EAAQ;AAE9C,UAAO;IACLO,KAAKP;IACLQ,MAAMnB,EAAKmB;IACXnB;IACAI;IAEAN,WAAWQ,MAAMc,QAAQpB,EAAKqB,OAAM;IACrC;;EAEHC,WAAWC;EACXC,QAAQD;EAGRE,oBAAoBC,GAASC,MAC3BhC,EACE+B,GACAC,EACD,GACGD,IACAnD,EAAiBmD,GAASC,EAAO;EACxC;;AAIH,SAAgBf,EACdD,GACAP,GACkD;AAClD,QAAO;EACL,GAAGS,EAA+BF,GAASP,EAAI;EAC/CwB,qBAAqB,CAAC,OAAO;EAC7BC,iBAAiB5C,EAAyB0B,EAAQ;EAClDmB,gBAAgB;EACjB;;AAGH,IAAaC,KAA+B5B,GAAAC,MAAA;CAAA,IAAA4B,IAAAC,EAAA,EAAA,EAAAC;AAAA,CAAAF,EAAA,OAAA7B,KAAA6B,EAAA,OAAA5B,KAO/B8B,IAAAhC,EAAsBC,GAAUC,EAAI,EAAA4B,EAAA,KAAA7B,GAAA6B,EAAA,KAAA5B,GAAA4B,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAG;AAAA,CAAAH,EAAA,OAAAE,IAC9CC,IAAAH,EAAA,MAFCG,IAAA,EAAAC,SACSF,GACV,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAJD,IAAAE,IAAqB7D,EAEnB2D,EAEA,EAACG;AAUI,QAVJN,EAAA,OAAAK,IAUIC,IAAAN,EAAA,MANHM,IAAAD,EAAY3B,IAAK6B,EAMd,EAAAP,EAAA,KAAAK,GAAAL,EAAA,KAAAM,IANHA;;AAWN,SAAOE,EAAArC,GAAAC,GAAA;CAAA,IAAA4B,IAAAC,EAAA,EAAA,EAILI,IAAqBN,EAA6B5B,GAAUC,EAAI,EAAC8B;AAGK,QAHLF,EAAA,OAAAK,IAGKH,IAAAF,EAAA,MAA9DE,IAAAG,EAAY3B,IAAK+B,EAA6C,EAAAT,EAAA,KAAAK,GAAAL,EAAA,KAAAE,IAA9DA;;AAPH,SAAAO,EAAAP,GAAA;CAOqB,IAAA,EAAA1C,yBAAA0C;AAAqB,QAAK1C;;AAKtD,SAAOkD,IAAA;CAAA,IAAAV,IAAAC,EAAA,EAAA,EACLU,IAA8BtD,EAAaC,EAAkB,EAAC4C;AAK5D,QAL4DF,EAAA,OAAAW,IAK7DT,IAAAF,EAAA,MAF4BE,IAAA9C,EAAqBwD,OAChDD,EACD,EAAAX,EAAA,KAAAW,GAAAX,EAAA,KAAAE,IAEMM,EAJsBN,EAIa;;AA3CA,SAAAK,EAAA7C,GAAA;AAAA,QAYR;EAAAF,mBAG1BE,EAAMM,QACNf,EAAyBS,EAAMoD,OAAcC,QAAK7B,OAAzB,GAAgC;EAAAxB;EAE5D"}
1
+ {"version":3,"file":"queries.js","names":["replaceEqualDeep","useQueries","UseQueryOptions","UseQueryResult","versionComparator","AxiosError","useMemo","downloadTokenListDataWithFallback","TokenListFetched","QUERY_KEY_FETCH_TOKEN_LISTS","constructPlaceholderData","isTruthy","overrideTokenList","stableCoinsTokenLists","useAtomValue","tokenListUrlsAtom","UseFetchListsResult","dataOrPlaceholder","T","result","isDataEqual","currentData","incomingData","available","isOlderOrEqual","data","version","produceQueriesOptions","listURLs","tag","uniqueListURLs","Array","from","Set","filter","map","listURL","produceSingleQueryOption","produceSingleQueryOptionMin","queryKey","queryFn","signal","_data","url","name","isArray","tokens","staleTime","Infinity","gcTime","structuralSharing","oldData","newData","notifyOnChangeProps","placeholderData","refetchOnMount","useFetchListsWithQueryResult","$","_c","t0","t1","queries","queryResults","t2","_temp","useFetchLists","_temp2","useFetchTokenLists","currentlyEnabledLists","concat","includingStablecoins","error","config"],"sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport { stableCoinsTokenLists } from \"./stabeCoins\";\nimport { useAtomValue } from \"@/core/store\";\nimport { tokenListUrlsAtom } from \"./lists/state/tokenListsStateAtom\";\n\ntype UseFetchListsResult<T extends string> = {\n dataOrPlaceholder: TokenListFetched<T>;\n result: UseQueryResult<TokenListFetched<T>, AxiosError>;\n};\n\nfunction isDataEqual<T extends string | never = never>(\n currentData: TokenListFetched<T> | undefined,\n incomingData: TokenListFetched<T>\n): currentData is typeof incomingData {\n // there was no oldData --> data not equal\n if (!currentData) return false;\n // data was a placeholder (available = false) and data.available changed --> data not equal\n if (!currentData.available || !incomingData.available)\n return currentData.available !== incomingData.available;\n // incoming list.version <= current list.version --> consider data equal (don't replace with incoming older version)\n const isOlderOrEqual =\n versionComparator(incomingData.data.version, currentData.data.version) <= 0;\n return isOlderOrEqual;\n}\n\nexport function produceQueriesOptions<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n) {\n // there are duplicate listURLs because in lists.json same list can be present for multiple chains\n const uniqueListURLs = Array.from(new Set(listURLs));\n\n return (\n uniqueListURLs\n // to prevent occasional `token_list_download_error:\"\"` event tag\n .filter(isTruthy)\n .map<UseQueryOptions<TokenListFetched<T>, AxiosError>>((listURL) =>\n produceSingleQueryOption<T>(listURL, tag)\n )\n );\n}\n\nexport function produceSingleQueryOptionMin<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],\n queryFn: async ({ signal }) => {\n const _data = await downloadTokenListDataWithFallback(listURL, signal);\n\n const data = overrideTokenList(_data, listURL);\n\n return {\n url: listURL,\n name: data.name,\n data,\n tag,\n // possibly mitigates https://sentry.io/organizations/paraswap/discover/ui:3fa26b87e3594d1998ff9fb4770a26d9\n available: Array.isArray(data.tokens),\n };\n },\n staleTime: Infinity,\n gcTime: Infinity,\n\n // custom comparison to optimize big token list comparison\n structuralSharing: (oldData, newData) =>\n isDataEqual(\n oldData as TokenListFetched<T> | undefined,\n newData as TokenListFetched<T>\n )\n ? oldData\n : replaceEqualDeep(oldData, newData),\n };\n}\n\n// adds useQuery options\nexport function produceSingleQueryOption<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n ...produceSingleQueryOptionMin<T>(listURL, tag),\n notifyOnChangeProps: [\"data\"],\n placeholderData: constructPlaceholderData(listURL), // start with unavailable but still with url\n refetchOnMount: false,\n };\n}\n\nexport const useFetchListsWithQueryResult = <T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): UseFetchListsResult<T>[] => {\n const queryResults = useQueries<\n UseQueryOptions<TokenListFetched<T>, AxiosError>[]\n >({\n queries: produceQueriesOptions(listURLs, tag),\n });\n\n return useMemo<UseFetchListsResult<T>[]>(\n () =>\n queryResults.map((result) => ({\n // provide {url, name} even on error\n dataOrPlaceholder:\n result.data ||\n constructPlaceholderData(result.error?.config?.url || \"\"),\n result,\n })),\n [queryResults]\n );\n};\n\nexport function useFetchLists<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): TokenListFetched<T>[] {\n const queryResults = useFetchListsWithQueryResult(listURLs, tag);\n\n return useMemo(\n () => queryResults.map(({ dataOrPlaceholder }) => dataOrPlaceholder),\n [queryResults]\n );\n}\n\nexport function useFetchTokenLists(): TokenListFetched[] {\n const currentlyEnabledLists = useAtomValue(tokenListUrlsAtom);\n\n // stablecoins list is auxiliary list, always in use\n const includingStablecoins = stableCoinsTokenLists.concat(\n currentlyEnabledLists\n );\n\n return useFetchLists(includingStablecoins);\n}\n"],"mappings":";;;;;;;;;;;;;AAwBA,SAASoB,EACPC,GACAC,GACoC;CASpC,OAPKD,IAED,CAACA,EAAYE,aAAa,CAACD,EAAaC,YACnCF,EAAYE,cAAcD,EAAaC,YAG9CnB,EAAkBkB,EAAaG,KAAKC,SAASL,EAAYI,KAAKC,QAAQ,IAAI,IANnD;;AAU3B,SAAgBC,EACdC,GACAC,GACA;CAIA,OAFuBE,MAAMC,KAAK,IAAIC,IAAIL,EAAS,CAGjDE,CAEGI,OAAOvB,EAAS,CAChBwB,KAAuDC,MACtDC,EAA4BD,GAASP,EACvC,CAAC;;AAIP,SAAgBS,EACdF,GACAP,GACkD;CAClD,OAAO;EACLU,UAAU,CAAC9B,GAA6B2B,EAAQ;EAChDI,SAAS,OAAO,EAAEC,gBAAa;GAG7B,IAAMhB,IAAOb,EAAkB8B,MAFXnC,EAAkC6B,GAASK,EAAO,EAEhCL,EAAQ;GAE9C,OAAO;IACLO,KAAKP;IACLQ,MAAMnB,EAAKmB;IACXnB;IACAI;IAEAN,WAAWQ,MAAMc,QAAQpB,EAAKqB,OAAM;IACrC;;EAEHC,WAAWC;EACXC,QAAQD;EAGRE,oBAAoBC,GAASC,MAC3BhC,EACE+B,GACAC,EACD,GACGD,IACAnD,EAAiBmD,GAASC,EAAO;EACxC;;AAIH,SAAgBf,EACdD,GACAP,GACkD;CAClD,OAAO;EACL,GAAGS,EAA+BF,GAASP,EAAI;EAC/CwB,qBAAqB,CAAC,OAAO;EAC7BC,iBAAiB5C,EAAyB0B,EAAQ;EAClDmB,gBAAgB;EACjB;;AAGH,IAAaC,KAA+B5B,GAAAC,MAAA;CAAA,IAAA4B,IAAAC,EAAA,EAAA,EAAAC;CAAA,AAAAF,EAAA,OAAA7B,KAAA6B,EAAA,OAAA5B,KAO/B8B,IAAAhC,EAAsBC,GAAUC,EAAI,EAAA4B,EAAA,KAAA7B,GAAA6B,EAAA,KAAA5B,GAAA4B,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAAA,IAAAG;CAAA,AAAAH,EAAA,OAAAE,IAC9CC,IAAAH,EAAA,MAFCG,IAAA,EAAAC,SACSF,GACV,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAG;CAJD,IAAAE,IAAqB7D,EAEnB2D,EAEA,EAACG;CAUI,OAVJN,EAAA,OAAAK,IAUIC,IAAAN,EAAA,MANHM,IAAAD,EAAY3B,IAAK6B,EAMd,EAAAP,EAAA,KAAAK,GAAAL,EAAA,KAAAM,IANHA;;AAWN,SAAOE,EAAArC,GAAAC,GAAA;CAAA,IAAA4B,IAAAC,EAAA,EAAA,EAILI,IAAqBN,EAA6B5B,GAAUC,EAAI,EAAC8B;CAGK,OAHLF,EAAA,OAAAK,IAGKH,IAAAF,EAAA,MAA9DE,IAAAG,EAAY3B,IAAK+B,EAA6C,EAAAT,EAAA,KAAAK,GAAAL,EAAA,KAAAE,IAA9DA;;AAPH,SAAAO,EAAAP,GAAA;CAOqB,IAAA,EAAA1C,yBAAA0C;CAAqB,OAAK1C;;AAKtD,SAAOkD,IAAA;CAAA,IAAAV,IAAAC,EAAA,EAAA,EACLU,IAA8BtD,EAAaC,EAAkB,EAAC4C;CAK5D,OAL4DF,EAAA,OAAAW,IAK7DT,IAAAF,EAAA,MAF4BE,IAAA9C,EAAqBwD,OAChDD,EACD,EAAAX,EAAA,KAAAW,GAAAX,EAAA,KAAAE,IAEMM,EAAcK,EAAqB;;AA3CA,SAAAN,EAAA7C,GAAA;CAAA,OAYR;EAAAF,mBAG1BE,EAAMM,QACNf,EAAyBS,EAAMoD,OAAcC,QAAK7B,OAAzB,GAAgC;EAAAxB;EAE5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","names":["useMemo","stableCoinsTokenLists","useFetchLists","ChainTokensSet","TokenListFetched","checkAddressesBelongToChainSet","tokenlistsToSetsByChain","useStableCoinTokenLists","useStablecoinSetsByChain","$","_c","lists","t0","useIsAddressStablecoin","addresses","chainId","chainId2StableCoinSets"],"sources":["../../../src/tokens/stabeCoins/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { stableCoinsTokenLists } from \".\";\nimport { useFetchLists } from \"../queries\";\nimport type { ChainTokensSet, TokenListFetched } from \"../types\";\nimport {\n checkAddressesBelongToChainSet,\n tokenlistsToSetsByChain,\n} from \"../utils/sets\";\n\nexport function useStableCoinTokenLists(): TokenListFetched<\"stablecoin\">[] {\n return useFetchLists(stableCoinsTokenLists, \"stablecoin\");\n}\n\n// compose stablecoin sets\nexport function useStablecoinSetsByChain(): ChainTokensSet {\n const lists = useStableCoinTokenLists();\n\n return useMemo(() => tokenlistsToSetsByChain(lists), [lists]);\n}\n\nexport function useIsAddressStablecoin(\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n const chainId2StableCoinSets = useStablecoinSetsByChain();\n return checkAddressesBelongToChainSet(\n chainId2StableCoinSets,\n addresses,\n chainId\n );\n}\n"],"mappings":";;;;;;AASA,SAAOO,IAAA;AAAA,QACEL,EAAcD,GAAuB,aAAa;;AAI3D,SAAOO,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAcJ,GAAyB,EAACK;AAEW,QAFXH,EAAA,OAAAE,IAEWC,IAAAH,EAAA,MAA9BG,IAAAN,EAAwBK,EAAM,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAA9BA;;AAGvB,SAAOC,EAAAC,GAAAC,GAAA;CAAA,IAAAN,IAAAC,EAAA,EAAA,EAILM,IAA+BR,GAA0B,EAACI;AAKzD,QALyDH,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAAAN,EAAA,OAAAO,KACnDJ,IAAAP,EACLW,GACAF,GACAC,EACD,EAAAN,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,GAAAP,EAAA,KAAAG,KAAAA,IAAAH,EAAA,IAJMG"}
1
+ {"version":3,"file":"hooks.js","names":["useMemo","stableCoinsTokenLists","useFetchLists","ChainTokensSet","TokenListFetched","checkAddressesBelongToChainSet","tokenlistsToSetsByChain","useStableCoinTokenLists","useStablecoinSetsByChain","$","_c","lists","t0","useIsAddressStablecoin","addresses","chainId","chainId2StableCoinSets"],"sources":["../../../src/tokens/stabeCoins/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { stableCoinsTokenLists } from \".\";\nimport { useFetchLists } from \"../queries\";\nimport type { ChainTokensSet, TokenListFetched } from \"../types\";\nimport {\n checkAddressesBelongToChainSet,\n tokenlistsToSetsByChain,\n} from \"../utils/sets\";\n\nexport function useStableCoinTokenLists(): TokenListFetched<\"stablecoin\">[] {\n return useFetchLists(stableCoinsTokenLists, \"stablecoin\");\n}\n\n// compose stablecoin sets\nexport function useStablecoinSetsByChain(): ChainTokensSet {\n const lists = useStableCoinTokenLists();\n\n return useMemo(() => tokenlistsToSetsByChain(lists), [lists]);\n}\n\nexport function useIsAddressStablecoin(\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n const chainId2StableCoinSets = useStablecoinSetsByChain();\n return checkAddressesBelongToChainSet(\n chainId2StableCoinSets,\n addresses,\n chainId\n );\n}\n"],"mappings":";;;;;;AASA,SAAOO,IAAA;CAAA,OACEL,EAAcD,GAAuB,aAAa;;AAI3D,SAAOO,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAcJ,GAAyB,EAACK;CAEW,OAFXH,EAAA,OAAAE,IAEWC,IAAAH,EAAA,MAA9BG,IAAAN,EAAwBK,EAAM,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAA9BA;;AAGvB,SAAOC,EAAAC,GAAAC,GAAA;CAAA,IAAAN,IAAAC,EAAA,EAAA,EAILM,IAA+BR,GAA0B,EAACI;CAKzD,OALyDH,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAAAN,EAAA,OAAAO,KACnDJ,IAAAP,EACLW,GACAF,GACAC,EACD,EAAAN,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,GAAAP,EAAA,KAAAG,KAAAA,IAAAH,EAAA,IAJMG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["_TokenLists","TokenListDownloadData","TokenLists","stableCoinsTokenLists","filter","list","tags","includes","map","url"],"sources":["../../../src/tokens/stabeCoins/index.ts"],"sourcesContent":["import _TokenLists from \"../lists/lists.json\";\nimport type { TokenListDownloadData } from \"../lists/types\";\n\nconst TokenLists = _TokenLists as TokenListDownloadData[];\n\n// one ParaSwap Community Stablecoin multichain list for now\nexport const stableCoinsTokenLists = TokenLists.filter((list) =>\n list.tags?.includes(\"stablecoin\")\n).map((list) => list.url);\n"],"mappings":";AAMA,IAAaG,IAHMH,EAG6BI,QAAQC,MACtDA,EAAKC,MAAMC,SAAS,aACtB,CAAC,CAACC,KAAKH,MAASA,EAAKI,IAAI"}
1
+ {"version":3,"file":"index.js","names":["_TokenLists","TokenListDownloadData","TokenLists","stableCoinsTokenLists","filter","list","tags","includes","map","url"],"sources":["../../../src/tokens/stabeCoins/index.ts"],"sourcesContent":["import _TokenLists from \"../lists/lists.json\";\nimport type { TokenListDownloadData } from \"../lists/types\";\n\nconst TokenLists = _TokenLists as TokenListDownloadData[];\n\n// one ParaSwap Community Stablecoin multichain list for now\nexport const stableCoinsTokenLists = TokenLists.filter((list) =>\n list.tags?.includes(\"stablecoin\")\n).map((list) => list.url);\n"],"mappings":";AAMA,IAAaG,IAAwBD,EAAWE,QAAQC,MACtDA,EAAKC,MAAMC,SAAS,aACtB,CAAC,CAACC,KAAKH,MAASA,EAAKI,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"addImportedTokenAtom.js","names":["atom","ImportedToken","Token","ImportTokenDrawerProps","autoImportedTokensAtom","importedTokensAtom","MarkRequired","fetchUnknownTokenData","constructToken","Address","SupportedChainId","tradeModeAtom","tradeModeToSetTokenAtoms","TokenWithSymbol","OnImportAction","tokenImported","addImportedTokenAtom","get","set","newToken","afterAction","chainId","network","currentTokens","tokensForChain","newTokenAddressLower","address","toLowerCase","alreadyExists","some","t","tokenToAdd","pickOnlyTokenProps","imported","symbol","tradeMode","tokensToSet","tokenAtomToSet","autoAddImportedTokenAtom","minTokenData","fetchedToken","constructedToken","importedToken","currentAutoImportedTokens","token","decimals","tokenType","mainConnector","connectors","img","allowance","balance","name","fromList","fromListURL"],"sources":["../../../src/tokens/state/addImportedTokenAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport type { ImportedToken, Token } from \"./types\";\nimport type { ImportTokenDrawerProps } from \"@/components/widget/ImportToken/types\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"./importedTokensAtom\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport { fetchUnknownTokenData } from \"@/hooks/tokens/data/useMultichainTokensData\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { tradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport { tradeModeToSetTokenAtoms } from \"@/core/inputs/state/common\";\n\ntype TokenWithSymbol = MarkRequired<Token, \"symbol\">;\nexport type OnImportAction = (tokenImported: TokenWithSymbol) => void;\n\nexport const addImportedTokenAtom = atom(\n null,\n (\n get,\n set,\n {\n newToken,\n afterAction,\n }: {\n newToken: TokenWithSymbol;\n afterAction?: ImportTokenDrawerProps[\"onConfirmAction\"];\n }\n ) => {\n const chainId = newToken.network;\n const currentTokens = get(importedTokensAtom);\n const tokensForChain = currentTokens[chainId] ?? [];\n // Avoid duplicates by address\n const newTokenAddressLower = newToken.address.toLowerCase();\n const alreadyExists = tokensForChain.some(\n (t) => t.address.toLowerCase() === newTokenAddressLower\n );\n if (alreadyExists) return;\n\n const tokenToAdd: ImportedToken = {\n // get rid of extra props attached for display purposes (usdBalance, fetchedOnChain)\n ...pickOnlyTokenProps(newToken),\n imported: true,\n symbol: newToken.symbol,\n };\n\n set(importedTokensAtom, {\n ...currentTokens,\n [chainId]: [...tokensForChain, tokenToAdd],\n });\n\n if (!afterAction) return tokenToAdd;\n\n const tradeMode = get(tradeModeAtom);\n const tokensToSet = tradeModeToSetTokenAtoms[tradeMode];\n const tokenAtomToSet =\n tokensToSet[\n afterAction === \"set-token-from\" ? \"tokenFromAtom\" : \"tokenToAtom\"\n ];\n // atom setter inside takes care of disallowed pair choices,\n // like invalid crosschain match\n set(tokenAtomToSet, tokenToAdd);\n\n return tokenToAdd;\n }\n);\n\n// fetches Token data onchain internally,\n// adds it to addImportedTokenAtom.\n// then adds it to autoImportedTokensAtom.\nexport const autoAddImportedTokenAtom = atom(\n [],\n async (\n get,\n set,\n minTokenData: { address: Address; chainId: SupportedChainId }\n ) => {\n const fetchedToken = await fetchUnknownTokenData(minTokenData);\n\n if (fetchedToken) {\n const constructedToken = constructToken(fetchedToken);\n const importedToken = set(addImportedTokenAtom, {\n newToken: {\n ...constructedToken,\n symbol: fetchedToken.symbol,\n network: minTokenData.chainId,\n },\n });\n\n if (importedToken) {\n const currentAutoImportedTokens = get(autoImportedTokensAtom);\n const alreadyExists = currentAutoImportedTokens.some(\n (t) =>\n t.address.toLowerCase() === importedToken.address.toLowerCase() &&\n t.network === importedToken.network\n );\n if (alreadyExists) return;\n\n set(autoImportedTokensAtom, [\n ...currentAutoImportedTokens,\n importedToken,\n ]);\n }\n }\n }\n);\n\nfunction pickOnlyTokenProps(token: Token): Token {\n return {\n address: token.address,\n decimals: token.decimals,\n symbol: token.symbol,\n tokenType: token.tokenType,\n mainConnector: token.mainConnector,\n connectors: token.connectors,\n network: token.network,\n img: token.img,\n allowance: token.allowance,\n balance: token.balance,\n imported: token.imported,\n name: token.name,\n fromList: token.fromList,\n fromListURL: token.fromListURL,\n };\n}\n"],"mappings":";;;;;;;AAkBA,IAAagB,IAAuBhB,EAClC,OAEEiB,GACAC,GACA,EACEC,aACAC,qBAKC;CACH,IAAMC,IAAUF,EAASG,SACnBC,IAAgBN,EAAIZ,EAAmB,EACvCmB,IAAiBD,EAAcF,MAAY,EAAE,EAE7CI,IAAuBN,EAASO,QAAQC,aAAa;AAI3D,KAHsBH,EAAeK,MAClCC,MAAMA,EAAEJ,QAAQC,aAAa,KAAKF,EACpC,CACkB;CAEnB,IAAMM,IAA4B;EAEhC,GAAGC,EAAmBb,EAAS;EAC/Bc,UAAU;EACVC,QAAQf,EAASe;EAClB;AAOD,KALAhB,EAAIb,GAAoB;EACtB,GAAGkB;GACFF,IAAU,CAAC,GAAGG,GAAgBO,EAAU;EAC1C,CAAC,EAEE,CAACX,EAAa,QAAOW;CAIzB,IAAMM,IADczB,EADFK,EAAIN,EAAc,EAIhCS,MAAgB,mBAAmB,kBAAkB;AAMzD,QAFAF,EAAImB,GAAgBN,EAAW,EAExBA;EAEV,EAKYO,IAA2BtC,EACtC,EAAE,EACF,OACEiB,GACAC,GACAqB,MACG;CACH,IAAMC,IAAe,MAAMjC,EAAsBgC,EAAa;AAE9D,KAAIC,GAAc;EAEhB,IAAME,IAAgBxB,EAAIF,GAAsB,EAC9CG,UAAU;GACR,GAHqBX,EAAegC,EAAa;GAIjDN,QAAQM,EAAaN;GACrBZ,SAASiB,EAAalB;GACxB,EACD,CAAC;AAEF,MAAIqB,GAAe;GACjB,IAAMC,IAA4B1B,EAAIb,EAAuB;AAM7D,OALsBuC,EAA0Bd,MAC7CC,MACCA,EAAEJ,QAAQC,aAAa,KAAKe,EAAchB,QAAQC,aAAa,IAC/DG,EAAER,YAAYoB,EAAcpB,QAC/B,CACkB;AAEnBJ,KAAId,GAAwB,CAC1B,GAAGuC,GACHD,EACD,CAAC;;;EAIT;AAED,SAASV,EAAmBY,GAAqB;AAC/C,QAAO;EACLlB,SAASkB,EAAMlB;EACfmB,UAAUD,EAAMC;EAChBX,QAAQU,EAAMV;EACdY,WAAWF,EAAME;EACjBC,eAAeH,EAAMG;EACrBC,YAAYJ,EAAMI;EAClB1B,SAASsB,EAAMtB;EACf2B,KAAKL,EAAMK;EACXC,WAAWN,EAAMM;EACjBC,SAASP,EAAMO;EACflB,UAAUW,EAAMX;EAChBmB,MAAMR,EAAMQ;EACZC,UAAUT,EAAMS;EAChBC,aAAaV,EAAMU;EACpB"}
1
+ {"version":3,"file":"addImportedTokenAtom.js","names":["atom","ImportedToken","Token","ImportTokenDrawerProps","autoImportedTokensAtom","importedTokensAtom","MarkRequired","fetchUnknownTokenData","constructToken","Address","SupportedChainId","tradeModeAtom","tradeModeToSetTokenAtoms","TokenWithSymbol","OnImportAction","tokenImported","addImportedTokenAtom","get","set","newToken","afterAction","chainId","network","currentTokens","tokensForChain","newTokenAddressLower","address","toLowerCase","alreadyExists","some","t","tokenToAdd","pickOnlyTokenProps","imported","symbol","tradeMode","tokensToSet","tokenAtomToSet","autoAddImportedTokenAtom","minTokenData","fetchedToken","constructedToken","importedToken","currentAutoImportedTokens","token","decimals","tokenType","mainConnector","connectors","img","allowance","balance","name","fromList","fromListURL"],"sources":["../../../src/tokens/state/addImportedTokenAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport type { ImportedToken, Token } from \"./types\";\nimport type { ImportTokenDrawerProps } from \"@/components/widget/ImportToken/types\";\nimport {\n autoImportedTokensAtom,\n importedTokensAtom,\n} from \"./importedTokensAtom\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport { fetchUnknownTokenData } from \"@/hooks/tokens/data/useMultichainTokensData\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { tradeModeAtom } from \"@/core/state/tradeModeAtom\";\nimport { tradeModeToSetTokenAtoms } from \"@/core/inputs/state/common\";\n\ntype TokenWithSymbol = MarkRequired<Token, \"symbol\">;\nexport type OnImportAction = (tokenImported: TokenWithSymbol) => void;\n\nexport const addImportedTokenAtom = atom(\n null,\n (\n get,\n set,\n {\n newToken,\n afterAction,\n }: {\n newToken: TokenWithSymbol;\n afterAction?: ImportTokenDrawerProps[\"onConfirmAction\"];\n }\n ) => {\n const chainId = newToken.network;\n const currentTokens = get(importedTokensAtom);\n const tokensForChain = currentTokens[chainId] ?? [];\n // Avoid duplicates by address\n const newTokenAddressLower = newToken.address.toLowerCase();\n const alreadyExists = tokensForChain.some(\n (t) => t.address.toLowerCase() === newTokenAddressLower\n );\n if (alreadyExists) return;\n\n const tokenToAdd: ImportedToken = {\n // get rid of extra props attached for display purposes (usdBalance, fetchedOnChain)\n ...pickOnlyTokenProps(newToken),\n imported: true,\n symbol: newToken.symbol,\n };\n\n set(importedTokensAtom, {\n ...currentTokens,\n [chainId]: [...tokensForChain, tokenToAdd],\n });\n\n if (!afterAction) return tokenToAdd;\n\n const tradeMode = get(tradeModeAtom);\n const tokensToSet = tradeModeToSetTokenAtoms[tradeMode];\n const tokenAtomToSet =\n tokensToSet[\n afterAction === \"set-token-from\" ? \"tokenFromAtom\" : \"tokenToAtom\"\n ];\n // atom setter inside takes care of disallowed pair choices,\n // like invalid crosschain match\n set(tokenAtomToSet, tokenToAdd);\n\n return tokenToAdd;\n }\n);\n\n// fetches Token data onchain internally,\n// adds it to addImportedTokenAtom.\n// then adds it to autoImportedTokensAtom.\nexport const autoAddImportedTokenAtom = atom(\n [],\n async (\n get,\n set,\n minTokenData: { address: Address; chainId: SupportedChainId }\n ) => {\n const fetchedToken = await fetchUnknownTokenData(minTokenData);\n\n if (fetchedToken) {\n const constructedToken = constructToken(fetchedToken);\n const importedToken = set(addImportedTokenAtom, {\n newToken: {\n ...constructedToken,\n symbol: fetchedToken.symbol,\n network: minTokenData.chainId,\n },\n });\n\n if (importedToken) {\n const currentAutoImportedTokens = get(autoImportedTokensAtom);\n const alreadyExists = currentAutoImportedTokens.some(\n (t) =>\n t.address.toLowerCase() === importedToken.address.toLowerCase() &&\n t.network === importedToken.network\n );\n if (alreadyExists) return;\n\n set(autoImportedTokensAtom, [\n ...currentAutoImportedTokens,\n importedToken,\n ]);\n }\n }\n }\n);\n\nfunction pickOnlyTokenProps(token: Token): Token {\n return {\n address: token.address,\n decimals: token.decimals,\n symbol: token.symbol,\n tokenType: token.tokenType,\n mainConnector: token.mainConnector,\n connectors: token.connectors,\n network: token.network,\n img: token.img,\n allowance: token.allowance,\n balance: token.balance,\n imported: token.imported,\n name: token.name,\n fromList: token.fromList,\n fromListURL: token.fromListURL,\n };\n}\n"],"mappings":";;;;;;;AAkBA,IAAagB,IAAuBhB,EAClC,OAEEiB,GACAC,GACA,EACEC,aACAC,qBAKC;CACH,IAAMC,IAAUF,EAASG,SACnBC,IAAgBN,EAAIZ,EAAmB,EACvCmB,IAAiBD,EAAcF,MAAY,EAAE,EAE7CI,IAAuBN,EAASO,QAAQC,aAAa;CAI3D,IAHsBH,EAAeK,MAClCC,MAAMA,EAAEJ,QAAQC,aAAa,KAAKF,EAEjCG,EAAe;CAEnB,IAAMG,IAA4B;EAEhC,GAAGC,EAAmBb,EAAS;EAC/Bc,UAAU;EACVC,QAAQf,EAASe;EAClB;CAOD,IALAhB,EAAIb,GAAoB;EACtB,GAAGkB;GACFF,IAAU,CAAC,GAAGG,GAAgBO,EAAU;EAC1C,CAAC,EAEE,CAACX,GAAa,OAAOW;CAIzB,IAAMM,IADczB,EADFK,EAAIN,EACuBwB,EAGzCf,MAAgB,mBAAmB,kBAAkB;CAMzD,OAFAF,EAAImB,GAAgBN,EAAW,EAExBA;EAEV,EAKYO,IAA2BtC,EACtC,EAAE,EACF,OACEiB,GACAC,GACAqB,MACG;CACH,IAAMC,IAAe,MAAMjC,EAAsBgC,EAAa;CAE9D,IAAIC,GAAc;EAEhB,IAAME,IAAgBxB,EAAIF,GAAsB,EAC9CG,UAAU;GACR,GAHqBX,EAAegC,EAGjCC;GACHP,QAAQM,EAAaN;GACrBZ,SAASiB,EAAalB;GACxB,EACD,CAAC;EAEF,IAAIqB,GAAe;GACjB,IAAMC,IAA4B1B,EAAIb,EAAuB;GAM7D,IALsBuC,EAA0Bd,MAC7CC,MACCA,EAAEJ,QAAQC,aAAa,KAAKe,EAAchB,QAAQC,aAAa,IAC/DG,EAAER,YAAYoB,EAAcpB,QAE5BM,EAAe;GAEnBV,EAAId,GAAwB,CAC1B,GAAGuC,GACHD,EACD,CAAC;;;EAIT;AAED,SAASV,EAAmBY,GAAqB;CAC/C,OAAO;EACLlB,SAASkB,EAAMlB;EACfmB,UAAUD,EAAMC;EAChBX,QAAQU,EAAMV;EACdY,WAAWF,EAAME;EACjBC,eAAeH,EAAMG;EACrBC,YAAYJ,EAAMI;EAClB1B,SAASsB,EAAMtB;EACf2B,KAAKL,EAAMK;EACXC,WAAWN,EAAMM;EACjBC,SAASP,EAAMO;EACflB,UAAUW,EAAMX;EAChBmB,MAAMR,EAAMQ;EACZC,UAAUT,EAAMS;EAChBC,aAAaV,EAAMU;EACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"allTokensByChainAtom.js","names":["atom","fromListsAtom","TokensFromListsState","importedTokensAtom","ImportedToken","TokenFromList","gatherObjectsByProp","allTokensByChainAtom","get","fromListsState","importedByChain","result","listByChainId","disabledListByChainId","tokensFromAllChains","slice","chainIdStr","fromListsArr","Object","entries","chainId","Number","imported","tokens","addressMap","address","token","addressKey","toLowerCase","push","importedArr"],"sources":["../../../src/tokens/state/allTokensByChainAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { fromListsAtom, type TokensFromListsState } from \"./fromListsAtom\";\nimport { importedTokensAtom } from \"./importedTokensAtom\";\nimport type { ImportedToken, TokenFromList } from \"./types\";\n// import { getLogger } from \"@/core/logger\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\n// returns TokenFromListState + ImportedTokenState merged, conforming the shape of the first one\nexport const allTokensByChainAtom = atom((get) => {\n const fromListsState = get(fromListsAtom);\n const importedByChain = get(importedTokensAtom);\n\n // start with a fresh result object to avoid mutating fromListsState\n const result: TokensFromListsState<TokenFromList | ImportedToken> = {\n listByChainId: {},\n // disabledListByChainId won't be deep-changed, so clone shallowly\n disabledListByChainId: fromListsState.disabledListByChainId,\n tokensFromAllChains: fromListsState.tokensFromAllChains.slice(),\n };\n\n // merge tokens list & map for chains present in fromListsState\n for (const [chainIdStr, fromListsArr] of Object.entries(\n fromListsState.listByChainId\n )) {\n const chainId = Number(chainIdStr);\n const imported = importedByChain[chainId] || [];\n\n // clone base tokens and addressMap to avoid mutation\n const tokens: (TokenFromList | ImportedToken)[] =\n fromListsArr.tokens.slice();\n const addressMap: { [address: string]: TokenFromList | ImportedToken } = {\n ...fromListsArr.addressMap,\n };\n\n // add imported tokens if not already present\n for (const token of imported) {\n const addressKey = token.address.toLowerCase();\n if (!addressMap[addressKey]) {\n tokens.push(token);\n addressMap[addressKey] = token;\n\n // add imported to all Tokens\n result.tokensFromAllChains.push(token);\n }\n // @TODO: suppressing the logs for now as it clutters the console\n // else {\n // getLogger(\"AllTokensByChain\").log(\n // `LOGIC ERROR: Token ${token.address} on chain ${chainId} already exists in fromListsAtom, skipping import.`\n // );\n // }\n }\n\n result.listByChainId[chainId] = { tokens, addressMap };\n }\n\n // normally shouldn't happen, but add chains that only have imported tokens\n for (const [chainIdStr, importedArr] of Object.entries(importedByChain)) {\n const chainId = Number(chainIdStr);\n if (!result.listByChainId[chainId]) {\n const addressMap = gatherObjectsByProp(importedArr, (token) =>\n token.address.toLowerCase()\n );\n result.listByChainId[chainId] = { tokens: importedArr, addressMap };\n }\n }\n\n return result;\n});\n"],"mappings":";;;;;AAQA,IAAaO,IAAuBP,GAAMQ,MAAQ;CAChD,IAAMC,IAAiBD,EAAIP,EAAc,EACnCS,IAAkBF,EAAIL,EAAmB,EAGzCQ,IAA8D;EAClEC,eAAe,EAAE;EAEjBC,uBAAuBJ,EAAeI;EACtCC,qBAAqBL,EAAeK,oBAAoBC,OAAM;EAC/D;AAGD,MAAK,IAAM,CAACC,GAAYC,MAAiBC,OAAOC,QAC9CV,EAAeG,cAChB,EAAE;EACD,IAAMQ,IAAUC,OAAOL,EAAW,EAC5BM,IAAWZ,EAAgBU,MAAY,EAAE,EAGzCG,IACJN,EAAaM,OAAOR,OAAO,EACvBS,IAAmE,EACvE,GAAGP,EAAaO,YACjB;AAGD,OAAK,IAAME,KAASJ,GAAU;GAC5B,IAAMK,IAAaD,EAAMD,QAAQG,aAAa;AAC9C,GAAKJ,EAAWG,OACdJ,EAAOM,KAAKH,EAAM,EAClBF,EAAWG,KAAcD,GAGzBf,EAAOG,oBAAoBe,KAAKH,EAAM;;AAU1Cf,IAAOC,cAAcQ,KAAW;GAAEG;GAAQC;GAAY;;AAIxD,MAAK,IAAM,CAACR,GAAYc,MAAgBZ,OAAOC,QAAQT,EAAgB,EAAE;EACvE,IAAMU,IAAUC,OAAOL,EAAW;AAClC,MAAI,CAACL,EAAOC,cAAcQ,IAAU;GAClC,IAAMI,IAAalB,EAAoBwB,IAAcJ,MACnDA,EAAMD,QAAQG,aAChB,CAAC;AACDjB,KAAOC,cAAcQ,KAAW;IAAEG,QAAQO;IAAaN;IAAY;;;AAIvE,QAAOb;EACP"}
1
+ {"version":3,"file":"allTokensByChainAtom.js","names":["atom","fromListsAtom","TokensFromListsState","importedTokensAtom","ImportedToken","TokenFromList","gatherObjectsByProp","allTokensByChainAtom","get","fromListsState","importedByChain","result","listByChainId","disabledListByChainId","tokensFromAllChains","slice","chainIdStr","fromListsArr","Object","entries","chainId","Number","imported","tokens","addressMap","address","token","addressKey","toLowerCase","push","importedArr"],"sources":["../../../src/tokens/state/allTokensByChainAtom.ts"],"sourcesContent":["import { atom } from \"jotai\";\nimport { fromListsAtom, type TokensFromListsState } from \"./fromListsAtom\";\nimport { importedTokensAtom } from \"./importedTokensAtom\";\nimport type { ImportedToken, TokenFromList } from \"./types\";\n// import { getLogger } from \"@/core/logger\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\n\n// returns TokenFromListState + ImportedTokenState merged, conforming the shape of the first one\nexport const allTokensByChainAtom = atom((get) => {\n const fromListsState = get(fromListsAtom);\n const importedByChain = get(importedTokensAtom);\n\n // start with a fresh result object to avoid mutating fromListsState\n const result: TokensFromListsState<TokenFromList | ImportedToken> = {\n listByChainId: {},\n // disabledListByChainId won't be deep-changed, so clone shallowly\n disabledListByChainId: fromListsState.disabledListByChainId,\n tokensFromAllChains: fromListsState.tokensFromAllChains.slice(),\n };\n\n // merge tokens list & map for chains present in fromListsState\n for (const [chainIdStr, fromListsArr] of Object.entries(\n fromListsState.listByChainId\n )) {\n const chainId = Number(chainIdStr);\n const imported = importedByChain[chainId] || [];\n\n // clone base tokens and addressMap to avoid mutation\n const tokens: (TokenFromList | ImportedToken)[] =\n fromListsArr.tokens.slice();\n const addressMap: { [address: string]: TokenFromList | ImportedToken } = {\n ...fromListsArr.addressMap,\n };\n\n // add imported tokens if not already present\n for (const token of imported) {\n const addressKey = token.address.toLowerCase();\n if (!addressMap[addressKey]) {\n tokens.push(token);\n addressMap[addressKey] = token;\n\n // add imported to all Tokens\n result.tokensFromAllChains.push(token);\n }\n // @TODO: suppressing the logs for now as it clutters the console\n // else {\n // getLogger(\"AllTokensByChain\").log(\n // `LOGIC ERROR: Token ${token.address} on chain ${chainId} already exists in fromListsAtom, skipping import.`\n // );\n // }\n }\n\n result.listByChainId[chainId] = { tokens, addressMap };\n }\n\n // normally shouldn't happen, but add chains that only have imported tokens\n for (const [chainIdStr, importedArr] of Object.entries(importedByChain)) {\n const chainId = Number(chainIdStr);\n if (!result.listByChainId[chainId]) {\n const addressMap = gatherObjectsByProp(importedArr, (token) =>\n token.address.toLowerCase()\n );\n result.listByChainId[chainId] = { tokens: importedArr, addressMap };\n }\n }\n\n return result;\n});\n"],"mappings":";;;;;AAQA,IAAaO,IAAuBP,GAAMQ,MAAQ;CAChD,IAAMC,IAAiBD,EAAIP,EAAc,EACnCS,IAAkBF,EAAIL,EAAmB,EAGzCQ,IAA8D;EAClEC,eAAe,EAAE;EAEjBC,uBAAuBJ,EAAeI;EACtCC,qBAAqBL,EAAeK,oBAAoBC,OAAM;EAC/D;CAGD,KAAK,IAAM,CAACC,GAAYC,MAAiBC,OAAOC,QAC9CV,EAAeG,cAChB,EAAE;EACD,IAAMQ,IAAUC,OAAOL,EAAW,EAC5BM,IAAWZ,EAAgBU,MAAY,EAAE,EAGzCG,IACJN,EAAaM,OAAOR,OAAO,EACvBS,IAAmE,EACvE,GAAGP,EAAaO,YACjB;EAGD,KAAK,IAAME,KAASJ,GAAU;GAC5B,IAAMK,IAAaD,EAAMD,QAAQG,aAAa;GAC9C,AAAKJ,EAAWG,OACdJ,EAAOM,KAAKH,EAAM,EAClBF,EAAWG,KAAcD,GAGzBf,EAAOG,oBAAoBe,KAAKH,EAAM;;EAU1Cf,EAAOC,cAAcQ,KAAW;GAAEG;GAAQC;GAAY;;CAIxD,KAAK,IAAM,CAACR,GAAYc,MAAgBZ,OAAOC,QAAQT,EAAgB,EAAE;EACvE,IAAMU,IAAUC,OAAOL,EAAW;EAClC,IAAI,CAACL,EAAOC,cAAcQ,IAAU;GAClC,IAAMI,IAAalB,EAAoBwB,IAAcJ,MACnDA,EAAMD,QAAQG,aAChB,CAAC;GACDjB,EAAOC,cAAcQ,KAAW;IAAEG,QAAQO;IAAaN;IAAY;;;CAIvE,OAAOb;EACP"}
@@ -1 +1 @@
1
- {"version":3,"file":"constructTokens.js","names":["TokenFromList","isBlacklistedToken","ConstructedListsByURL","SupportedChainId","UpdatedTokenListsInput","enabledListURLs","allListURLs","tokensFromListByURL","chainId","UpdatedTokenListsResult","list","disabledList","constructTokensFromLists","addedAddressesSet","Set","gatherUniqueTokens","listURLs","uniqueTokensFromList","reduce","accum","listURL","constructedTokens","forEach","token","network","addressLowercase","address","toLowerCase","has","add","push","length","enabledListsSet","disabledListURLs","filter","uniqueTokensFromDisabledList"],"sources":["../../../src/tokens/state/constructTokens.ts"],"sourcesContent":["import type { TokenFromList } from \"./types\";\n\nimport { isBlacklistedToken } from \"../blacklist\";\nimport type { ConstructedListsByURL } from \"../lists/state/types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\ninterface UpdatedTokenListsInput {\n enabledListURLs: string[];\n allListURLs: string[];\n tokensFromListByURL: ConstructedListsByURL;\n chainId: SupportedChainId;\n}\n\ninterface UpdatedTokenListsResult {\n list: TokenFromList[];\n disabledList: TokenFromList[];\n chainId: SupportedChainId;\n}\n\nexport function constructTokensFromLists({\n enabledListURLs,\n allListURLs,\n tokensFromListByURL,\n chainId,\n}: UpdatedTokenListsInput): UpdatedTokenListsResult | undefined {\n const addedAddressesSet = new Set<string>();\n\n function gatherUniqueTokens(listURLs: string[]): TokenFromList[] {\n const uniqueTokensFromList = listURLs.reduce<TokenFromList[]>(\n (accum, listURL) => {\n const constructedTokens = tokensFromListByURL[listURL];\n\n if (!constructedTokens) return accum;\n\n constructedTokens.list.forEach((token) => {\n // some lists contain tokens for multiple chains\n // tokens.fromLists must correspond to current chain\n // same as tokens.user & tokens.all\n if (token.network !== chainId) return;\n if (isBlacklistedToken(token)) return;\n\n const addressLowercase = token.address.toLowerCase();\n // already added\n if (addedAddressesSet.has(addressLowercase)) return;\n\n addedAddressesSet.add(addressLowercase);\n accum.push(token);\n });\n\n return accum;\n },\n []\n );\n\n return uniqueTokensFromList;\n }\n // iterating over enabledListURLs every time is less efficient,\n // but allows for a fixed token order\n // and no duplicate tokens from different lists\n const uniqueTokensFromList = gatherUniqueTokens(enabledListURLs);\n\n // don't suddenly empty tokens.fromLists while enabledListURLs are still fetching\n if (enabledListURLs.length > 0 && uniqueTokensFromList.length === 0) return;\n\n const enabledListsSet = new Set(enabledListURLs);\n const disabledListURLs = allListURLs.filter(\n (listURL) => !enabledListsSet.has(listURL)\n );\n\n const uniqueTokensFromDisabledList = gatherUniqueTokens(disabledListURLs);\n\n return {\n list: uniqueTokensFromList,\n disabledList: uniqueTokensFromDisabledList,\n chainId,\n };\n}\n"],"mappings":";;AAmBA,SAAgBY,EAAyB,EACvCP,oBACAC,gBACAC,wBACAC,cAC8D;CAC9D,IAAMK,oBAAoB,IAAIC,KAAa;CAE3C,SAASC,EAAmBC,GAAqC;AA2B/D,SA1B6BA,EAASE,QACnCC,GAAOC,MAAY;GAClB,IAAMC,IAAoBd,EAAoBa;AAmB9C,UAjBKC,KAELA,EAAkBX,KAAKY,SAASC,MAAU;AAKxC,QADIA,EAAMC,YAAYhB,KAClBP,EAAmBsB,EAAM,CAAE;IAE/B,IAAME,IAAmBF,EAAMG,QAAQC,aAAa;AAEhDd,MAAkBe,IAAIH,EAAiB,KAE3CZ,EAAkBgB,IAAIJ,EAAiB,EACvCN,EAAMW,KAAKP,EAAM;KACjB,EAf6BJ;KAmBjC,EACF,CAAC;;CAOH,IAAMF,IAAuBF,EAAmBV,EAAgB;AAGhE,KAAIA,EAAgB0B,SAAS,KAAKd,EAAqBc,WAAW,EAAG;CAErE,IAAMC,IAAkB,IAAIlB,IAAIT,EAAgB;AAOhD,QAAO;EACLK,MAAMO;EACNN,cAJmCI,EAJZT,EAAY4B,QAClCd,MAAY,CAACY,EAAgBJ,IAAIR,EACpC,CAAC,CAEwE;EAKvEZ;EACD"}
1
+ {"version":3,"file":"constructTokens.js","names":["TokenFromList","isBlacklistedToken","ConstructedListsByURL","SupportedChainId","UpdatedTokenListsInput","enabledListURLs","allListURLs","tokensFromListByURL","chainId","UpdatedTokenListsResult","list","disabledList","constructTokensFromLists","addedAddressesSet","Set","gatherUniqueTokens","listURLs","uniqueTokensFromList","reduce","accum","listURL","constructedTokens","forEach","token","network","addressLowercase","address","toLowerCase","has","add","push","length","enabledListsSet","disabledListURLs","filter","uniqueTokensFromDisabledList"],"sources":["../../../src/tokens/state/constructTokens.ts"],"sourcesContent":["import type { TokenFromList } from \"./types\";\n\nimport { isBlacklistedToken } from \"../blacklist\";\nimport type { ConstructedListsByURL } from \"../lists/state/types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\ninterface UpdatedTokenListsInput {\n enabledListURLs: string[];\n allListURLs: string[];\n tokensFromListByURL: ConstructedListsByURL;\n chainId: SupportedChainId;\n}\n\ninterface UpdatedTokenListsResult {\n list: TokenFromList[];\n disabledList: TokenFromList[];\n chainId: SupportedChainId;\n}\n\nexport function constructTokensFromLists({\n enabledListURLs,\n allListURLs,\n tokensFromListByURL,\n chainId,\n}: UpdatedTokenListsInput): UpdatedTokenListsResult | undefined {\n const addedAddressesSet = new Set<string>();\n\n function gatherUniqueTokens(listURLs: string[]): TokenFromList[] {\n const uniqueTokensFromList = listURLs.reduce<TokenFromList[]>(\n (accum, listURL) => {\n const constructedTokens = tokensFromListByURL[listURL];\n\n if (!constructedTokens) return accum;\n\n constructedTokens.list.forEach((token) => {\n // some lists contain tokens for multiple chains\n // tokens.fromLists must correspond to current chain\n // same as tokens.user & tokens.all\n if (token.network !== chainId) return;\n if (isBlacklistedToken(token)) return;\n\n const addressLowercase = token.address.toLowerCase();\n // already added\n if (addedAddressesSet.has(addressLowercase)) return;\n\n addedAddressesSet.add(addressLowercase);\n accum.push(token);\n });\n\n return accum;\n },\n []\n );\n\n return uniqueTokensFromList;\n }\n // iterating over enabledListURLs every time is less efficient,\n // but allows for a fixed token order\n // and no duplicate tokens from different lists\n const uniqueTokensFromList = gatherUniqueTokens(enabledListURLs);\n\n // don't suddenly empty tokens.fromLists while enabledListURLs are still fetching\n if (enabledListURLs.length > 0 && uniqueTokensFromList.length === 0) return;\n\n const enabledListsSet = new Set(enabledListURLs);\n const disabledListURLs = allListURLs.filter(\n (listURL) => !enabledListsSet.has(listURL)\n );\n\n const uniqueTokensFromDisabledList = gatherUniqueTokens(disabledListURLs);\n\n return {\n list: uniqueTokensFromList,\n disabledList: uniqueTokensFromDisabledList,\n chainId,\n };\n}\n"],"mappings":";;AAmBA,SAAgBY,EAAyB,EACvCP,oBACAC,gBACAC,wBACAC,cAC8D;CAC9D,IAAMK,oBAAoB,IAAIC,KAAa;CAE3C,SAASC,EAAmBC,GAAqC;EA2B/D,OA1B6BA,EAASE,QACnCC,GAAOC,MAAY;GAClB,IAAMC,IAAoBd,EAAoBa;GAmB9C,OAjBKC,KAELA,EAAkBX,KAAKY,SAASC,MAAU;IAKxC,IADIA,EAAMC,YAAYhB,KAClBP,EAAmBsB,EAAM,EAAE;IAE/B,IAAME,IAAmBF,EAAMG,QAAQC,aAAa;IAEhDd,EAAkBe,IAAIH,EAAiB,KAE3CZ,EAAkBgB,IAAIJ,EAAiB,EACvCN,EAAMW,KAAKP,EAAM;KACjB,EAf6BJ;KAmBjC,EACF,CAEOF;;CAKT,IAAMA,IAAuBF,EAAmBV,EAAgB;CAGhE,IAAIA,EAAgB0B,SAAS,KAAKd,EAAqBc,WAAW,GAAG;CAErE,IAAMC,IAAkB,IAAIlB,IAAIT,EAAgB;CAOhD,OAAO;EACLK,MAAMO;EACNN,cAJmCI,EAJZT,EAAY4B,QAClCd,MAAY,CAACY,EAAgBJ,IAAIR,EACpC,CAEwDa,CAIxCE;EACd3B;EACD"}