@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":"useTokenBalance.js","names":["ONE_MINUTE_MS","SupportedChainId","Token","isETH","erc20Abi","formatUnits","isAddress","useAccount","useReadContract","useBalance","useERC20Balance","t0","$","_c","token","queryOptions","_queryOptions","address","account","t1","t2","enabled","undefined","addressToFetch","t3","network","t4","t5","t6","refetchInterval","refetchOnWindowFocus","t7","functionName","const","chainId","abi","args","query","useNativeBalance","params","UseTokenBalanceInput","Pick","useTokenBalance","requestedNative","data","nativeTokenBalance","nativeBalanceQueryResult","erc20BalanceQueryResult","erc20TokenBalance","balance","getBalanceFromQueries","tokenDecimals","decimals","queryResult","GetBalanceReturnType","formatted","symbol","value","balanceUnit"],"sources":["../../../../src/hooks/tokens/balances/useTokenBalance.ts"],"sourcesContent":["import { ONE_MINUTE_MS } from \"@/lib/constants/time\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\n\nimport { erc20Abi, formatUnits, isAddress } from \"viem\";\nimport { useAccount, useReadContract, useBalance } from \"wagmi\";\n\nexport const useERC20Balance = ({\n token,\n queryOptions: _queryOptions,\n}: UseTokenBalanceInput) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = _queryOptions ?? {};\n\n const addressToFetch =\n token && isAddress(token.address) && !isETH({ address: token.address })\n ? token.address\n : undefined;\n\n return useReadContract({\n functionName: \"balanceOf\" as const,\n address: addressToFetch,\n chainId: token?.network,\n abi: erc20Abi,\n args: account ? [account] : undefined,\n query: {\n enabled: !!enabled && !!addressToFetch && !!account,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\nexport const useNativeBalance = (\n params?: Omit<UseTokenBalanceInput, \"token\">\n) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = params?.queryOptions ?? {};\n\n return useBalance({\n address: account,\n chainId: params?.chainId,\n query: {\n enabled: !!enabled && !!account && !!params?.chainId,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\ntype UseTokenBalanceInput = {\n token?: Pick<Token, \"address\" | \"decimals\" | \"network\">;\n chainId?: SupportedChainId;\n queryOptions?: {\n refetchInterval?: number;\n refetchOnWindowFocus?: boolean | \"always\";\n enabled?: boolean;\n };\n};\n\n// BOTH\nexport const useTokenBalance = ({\n token,\n chainId,\n queryOptions,\n}: UseTokenBalanceInput) => {\n const requestedNative = token?.address\n ? isETH({ address: token.address })\n : undefined;\n\n const { data: nativeTokenBalance, ...nativeBalanceQueryResult } =\n useNativeBalance({\n chainId: chainId ?? token?.network,\n queryOptions: {\n enabled: requestedNative,\n ...queryOptions,\n },\n });\n\n const { data: erc20TokenBalance, ...erc20BalanceQueryResult } =\n useERC20Balance({\n chainId: chainId ?? token?.network,\n token,\n queryOptions: {\n enabled: !requestedNative,\n ...queryOptions,\n },\n });\n\n const balance = getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals: token?.decimals,\n });\n\n const queryResult = requestedNative\n ? nativeBalanceQueryResult\n : erc20BalanceQueryResult;\n\n return {\n ...balance,\n ...queryResult,\n };\n};\n\ntype GetBalanceReturnType = {\n decimals: number;\n formatted: string;\n symbol: string;\n value: bigint;\n};\n\nfunction getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals,\n}: {\n requestedNative?: boolean;\n nativeTokenBalance?: GetBalanceReturnType;\n erc20TokenBalance?: bigint;\n tokenDecimals?: number;\n}) {\n if (requestedNative && nativeTokenBalance !== undefined) {\n const balance = nativeTokenBalance.value;\n const balanceUnit = formatUnits(balance, nativeTokenBalance.decimals);\n return { balance, balanceUnit };\n }\n\n if (erc20TokenBalance !== undefined && tokenDecimals !== undefined) {\n const balance = erc20TokenBalance;\n const balanceUnit = formatUnits(balance, tokenDecimals);\n return { balance, balanceUnit };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useTokenBalance.js","names":["ONE_MINUTE_MS","SupportedChainId","Token","isETH","erc20Abi","formatUnits","isAddress","useAccount","useReadContract","useBalance","useERC20Balance","t0","$","_c","token","queryOptions","_queryOptions","address","account","t1","t2","enabled","undefined","addressToFetch","t3","network","t4","t5","t6","refetchInterval","refetchOnWindowFocus","t7","functionName","const","chainId","abi","args","query","useNativeBalance","params","UseTokenBalanceInput","Pick","useTokenBalance","requestedNative","data","nativeTokenBalance","nativeBalanceQueryResult","erc20BalanceQueryResult","erc20TokenBalance","balance","getBalanceFromQueries","tokenDecimals","decimals","queryResult","GetBalanceReturnType","formatted","symbol","value","balanceUnit"],"sources":["../../../../src/hooks/tokens/balances/useTokenBalance.ts"],"sourcesContent":["import { ONE_MINUTE_MS } from \"@/lib/constants/time\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\n\nimport { erc20Abi, formatUnits, isAddress } from \"viem\";\nimport { useAccount, useReadContract, useBalance } from \"wagmi\";\n\nexport const useERC20Balance = ({\n token,\n queryOptions: _queryOptions,\n}: UseTokenBalanceInput) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = _queryOptions ?? {};\n\n const addressToFetch =\n token && isAddress(token.address) && !isETH({ address: token.address })\n ? token.address\n : undefined;\n\n return useReadContract({\n functionName: \"balanceOf\" as const,\n address: addressToFetch,\n chainId: token?.network,\n abi: erc20Abi,\n args: account ? [account] : undefined,\n query: {\n enabled: !!enabled && !!addressToFetch && !!account,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\nexport const useNativeBalance = (\n params?: Omit<UseTokenBalanceInput, \"token\">\n) => {\n const { address: account } = useAccount();\n const { enabled = true, ...queryOptions } = params?.queryOptions ?? {};\n\n return useBalance({\n address: account,\n chainId: params?.chainId,\n query: {\n enabled: !!enabled && !!account && !!params?.chainId,\n refetchInterval: ONE_MINUTE_MS,\n refetchOnWindowFocus: false,\n ...queryOptions,\n },\n });\n};\n\ntype UseTokenBalanceInput = {\n token?: Pick<Token, \"address\" | \"decimals\" | \"network\">;\n chainId?: SupportedChainId;\n queryOptions?: {\n refetchInterval?: number;\n refetchOnWindowFocus?: boolean | \"always\";\n enabled?: boolean;\n };\n};\n\n// BOTH\nexport const useTokenBalance = ({\n token,\n chainId,\n queryOptions,\n}: UseTokenBalanceInput) => {\n const requestedNative = token?.address\n ? isETH({ address: token.address })\n : undefined;\n\n const { data: nativeTokenBalance, ...nativeBalanceQueryResult } =\n useNativeBalance({\n chainId: chainId ?? token?.network,\n queryOptions: {\n enabled: requestedNative,\n ...queryOptions,\n },\n });\n\n const { data: erc20TokenBalance, ...erc20BalanceQueryResult } =\n useERC20Balance({\n chainId: chainId ?? token?.network,\n token,\n queryOptions: {\n enabled: !requestedNative,\n ...queryOptions,\n },\n });\n\n const balance = getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals: token?.decimals,\n });\n\n const queryResult = requestedNative\n ? nativeBalanceQueryResult\n : erc20BalanceQueryResult;\n\n return {\n ...balance,\n ...queryResult,\n };\n};\n\ntype GetBalanceReturnType = {\n decimals: number;\n formatted: string;\n symbol: string;\n value: bigint;\n};\n\nfunction getBalanceFromQueries({\n requestedNative,\n nativeTokenBalance,\n erc20TokenBalance,\n tokenDecimals,\n}: {\n requestedNative?: boolean;\n nativeTokenBalance?: GetBalanceReturnType;\n erc20TokenBalance?: bigint;\n tokenDecimals?: number;\n}) {\n if (requestedNative && nativeTokenBalance !== undefined) {\n const balance = nativeTokenBalance.value;\n const balanceUnit = formatUnits(balance, nativeTokenBalance.decimals);\n return { balance, balanceUnit };\n }\n\n if (erc20TokenBalance !== undefined && tokenDecimals !== undefined) {\n const balance = erc20TokenBalance;\n const balanceUnit = formatUnits(balance, tokenDecimals);\n return { balance, balanceUnit };\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCombineTokensWithFetched.js","names":["TokenMaybeWithUsdBalance","useFetchTokens","isAddress","TokenRowForFetchedToken","SupportedChainId","useAttachTokenBalanceMultichain","constructToken","isBlacklistedToken","useAllEnabledChains","UseCombineTokensWithFetchedReturn","tokenRowsCombined","UseCombineTokensWithFetchedInput","allTokenRows","tokenFilter","selectableChains","useCombineTokensWithFetched","t0","$","_c","t1","address","isTokenFilterValidAddress","enabledChains","chainsToFetchOn","t2","Set","map","_temp","foundChains","t3","t4","chainId","has","filter","addresses","chainIds","tokenRowsFetched","possibleTokenImage","undefined","find","_temp2","img","tokensFetched","tokens","reduce","_temp3","tokenFetchedAddressesMap","t5","addressesMap","attachTokenBalance","tokensFetchedWithBalance","token_2","token","network","fetchedOnChain","combinedTokenRows","token_0","acc","token_1","chainId_0","push"],"sources":["../../../../src/hooks/tokens/data/useCombineTokensWithFetched.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useFetchTokens } from \"./useFetchTokens\";\nimport { isAddress } from \"viem\";\nimport type { TokenRowForFetchedToken } from \"@/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAttachTokenBalanceMultichain } from \"../balances/useAttachTokenBalanceMultichain\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport { isBlacklistedToken } from \"@/tokens/blacklist\";\nimport { useAllEnabledChains } from \"@/core/state/enabledChainsAtom\";\n\ntype UseCombineTokensWithFetchedReturn = {\n tokenRowsCombined: TokenRowForFetchedToken[];\n};\n\ntype UseCombineTokensWithFetchedInput = {\n allTokenRows: TokenMaybeWithUsdBalance[];\n tokenFilter: string;\n selectableChains?: SupportedChainId[];\n};\nexport const useCombineTokensWithFetched = ({\n allTokenRows,\n tokenFilter,\n selectableChains,\n}: UseCombineTokensWithFetchedInput): UseCombineTokensWithFetchedReturn => {\n const isTokenFilterValidAddress =\n isAddress(tokenFilter) && !isBlacklistedToken({ address: tokenFilter });\n\n // fetch on enabled chains only\n const enabledChains = useAllEnabledChains();\n let chainsToFetchOn: SupportedChainId[] = selectableChains || enabledChains;\n if (isTokenFilterValidAddress) {\n const foundChains = new Set(allTokenRows.map((token) => token.network));\n // if exact match by address found in tokenLists, no need to fetch Token data onchain for that chain\n chainsToFetchOn = chainsToFetchOn.filter(\n (chainId) => !foundChains.has(chainId)\n );\n }\n\n // if user's typed filter is a valid address, fetch tokens for all networks (as it's possible that lists data not enough -- even if token is spotted in one of the lists for one chain, it could be missing in another one)\n const tokenRowsFetched = useFetchTokens({\n addresses: isTokenFilterValidAddress ? [tokenFilter] : [],\n chainIds: chainsToFetchOn,\n });\n\n /**\n no way to get token icon for a token which data we just fetched onchain when knowing its address only:\n 1. coingecko, coinmarket and other APIs that return token data including icon are paid only,\n 2. public repos with many token icons (trustwallet, cowswap) don't include more than our tokenLists already have,\n 3. if token was not found in any of the lists, there are likely no other bigger lists out there.\n BUT it is possible that tokenLists have this token (same address) on other chains, with icon present,\n we can assume if addresses are same then tokens are too, coincidences are unlikely, though in reality tokens sometimes have old vs new icon on different chains:\n case in point -- USDT and USDT0\n */\n const possibleTokenImage = !isTokenFilterValidAddress\n ? undefined\n : // tokens here are found by address, so they must be the same as the fetched ones but on different chains\n allTokenRows.find((token) => token.img)?.img;\n\n const tokensFetched = tokenRowsFetched.tokens;\n\n const tokenFetchedAddressesMap = tokensFetched.reduce<\n Partial<Record<SupportedChainId, string[]>>\n >((acc, token) => {\n const chainId = token.network;\n if (!acc[chainId]) acc[chainId] = [];\n\n acc[chainId].push(token.address);\n return acc;\n }, {});\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: tokenFetchedAddressesMap,\n });\n\n const tokensFetchedWithBalance =\n tokenRowsFetched.tokens.map<TokenRowForFetchedToken>((token) =>\n attachTokenBalance({\n ...constructToken(token),\n network: token.network,\n fetchedOnChain: true,\n img: possibleTokenImage,\n })\n );\n\n const combinedTokenRows: TokenRowForFetchedToken[] = [\n ...allTokenRows,\n ...tokensFetchedWithBalance, // tokens not present in allTokenRows,\n // because chains to fetch on exclude chains found for exact token in another chain\n ];\n\n return {\n tokenRowsCombined: combinedTokenRows,\n };\n};\n"],"mappings":";;;;;;;;AAmBA,IAAae,KAA8BC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAN,iBAAAC,gBAAAC,wBAAAE,GAITG;AAAA,CAAAF,EAAA,OAAAJ,IAEwCM,IAAAF,EAAA,MAAvEE,IAAAjB,EAAUW,EAA6D,IAAvE,CAA2BN,EAAmB,EAAAa,SAAWP,GAAa,CAAC,EAAAI,EAAA,KAAAJ,GAAAI,EAAA,KAAAE;CADzE,IAAAE,IACEF,GAGFG,IAAsBd,GAAqB,EAC3Ce,IAA0CT,KAAAQ;AAC1C,KAAID,GAAyB;EAAA,IAAAG;AAAA,EAAAP,EAAA,OAAAL,IAC4CY,IAAAP,EAAA,MAAnDO,IAAA,IAAIC,IAAIb,EAAYc,IAAKC,EAAyB,CAAC,EAAAV,EAAA,KAAAL,GAAAK,EAAA,KAAAO;EAAvE,IAAAI,IAAoBJ,GAAoDK;AAAA,MAAAZ,EAAA,OAAAM,KAAAN,EAAA,OAAAW,GAAA;GAAA,IAAAE;AAIvEb,GAJuEA,EAAA,OAAAW,IAGhCE,IAAAb,EAAA,MAAtCa,KAAAC,MAAa,CAACH,EAAWI,IAAKD,EAAQ,EAAAd,EAAA,KAAAW,GAAAX,EAAA,KAAAa,IADtBD,IAAAN,EAAeU,OAC/BH,EACD,EAAAb,EAAA,KAAAM,GAAAN,EAAA,KAAAW,GAAAX,EAAA,KAAAY;QAAAA,KAAAZ,EAAA;AAFDM,MAAkBA;;CAGnB,IAAAC;AAAA,CAAAP,EAAA,OAAAI,KAAAJ,EAAA,QAAAJ,KAIYW,IAAAH,IAAA,CAA6BR,EAAiB,GAA9C,EAA8C,EAAAI,EAAA,KAAAI,GAAAJ,EAAA,MAAAJ,GAAAI,EAAA,MAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAY;AAAA,CAAAZ,EAAA,QAAAM,KAAAN,EAAA,QAAAO,KADnBK,IAAA;EAAAK,WAC3BV;EAA8CW,UAC/CZ;EACX,EAAAN,EAAA,MAAAM,GAAAN,EAAA,MAAAO,GAAAP,EAAA,MAAAY,KAAAA,IAAAZ,EAAA;CAHD,IAAAmB,IAAyBnC,EAAe4B,EAGtC,EAWFQ,IAA4BhB,IAGxBT,EAAY2B,KAAMC,EAA0B,EAAAC,MAHrBH,KAAAA,GAK3BI,IAAsBN,EAAgBO,QAAQb;AAAA,CAAAb,EAAA,QAAAyB,IAUxCZ,IAAAb,EAAA,OAR2Ba,IAAAY,EAAaE,OAE5CC,GAMC,EAAE,CAAC,EAAA5B,EAAA,MAAAyB,GAAAzB,EAAA,MAAAa;CARN,IAAAgB,IAAiChB,GAQ1BiB;AAAA,CAAA9B,EAAA,QAAA6B,IAINC,IAAA9B,EAAA,OAF0D8B,IAAA,EAAAC,cAC3CF,GACf,EAAA7B,EAAA,MAAA6B,GAAA7B,EAAA,MAAA8B;CAFD,IAAAE,IAA2B5C,EAAgC0C,EAEzD,EAEFG,IACEd,EAAgBO,OAAOjB,KAA8ByB,MACnDF,EAAmB;EAAA,GACd3C,EAAe8C,EAAM;EAAAC,SACfD,EAAKC;EAAQC,gBACN;EAAIb,KACfJ;EACN,CACH,CAAC;AAMD,QAEK,EAAA3B,mBAN8C,CAAA,GAChDE,GAAY,GACZsC,EAEJ,EAIA;;AAzEwC,SAAAvB,EAAAyB,GAAA;AAAA,QAYiBA,EAAKC;;AAZtB,SAAAb,EAAAgB,GAAA;AAAA,QAqCRJ,EAAKX;;AArCG,SAAAI,EAAAY,GAAAC,GAAA;CA4CvC,IAAAC,IAAgBP,EAAKC;AAGW,QAF3BI,EAAI1B,OAAU0B,EAAI1B,KAAW,EAAH,GAE/B0B,EAAI1B,GAAQ6B,KAAMR,EAAKhC,QAAS,EACzBqC"}
1
+ {"version":3,"file":"useCombineTokensWithFetched.js","names":["TokenMaybeWithUsdBalance","useFetchTokens","isAddress","TokenRowForFetchedToken","SupportedChainId","useAttachTokenBalanceMultichain","constructToken","isBlacklistedToken","useAllEnabledChains","UseCombineTokensWithFetchedReturn","tokenRowsCombined","UseCombineTokensWithFetchedInput","allTokenRows","tokenFilter","selectableChains","useCombineTokensWithFetched","t0","$","_c","t1","address","isTokenFilterValidAddress","enabledChains","chainsToFetchOn","t2","Set","map","_temp","foundChains","t3","t4","chainId","has","filter","addresses","chainIds","tokenRowsFetched","possibleTokenImage","undefined","find","_temp2","img","tokensFetched","tokens","reduce","_temp3","tokenFetchedAddressesMap","t5","addressesMap","attachTokenBalance","tokensFetchedWithBalance","token_2","token","network","fetchedOnChain","combinedTokenRows","token_0","acc","token_1","chainId_0","push"],"sources":["../../../../src/hooks/tokens/data/useCombineTokensWithFetched.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useFetchTokens } from \"./useFetchTokens\";\nimport { isAddress } from \"viem\";\nimport type { TokenRowForFetchedToken } from \"@/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAttachTokenBalanceMultichain } from \"../balances/useAttachTokenBalanceMultichain\";\nimport { constructToken } from \"@velora-dex/sdk\";\nimport { isBlacklistedToken } from \"@/tokens/blacklist\";\nimport { useAllEnabledChains } from \"@/core/state/enabledChainsAtom\";\n\ntype UseCombineTokensWithFetchedReturn = {\n tokenRowsCombined: TokenRowForFetchedToken[];\n};\n\ntype UseCombineTokensWithFetchedInput = {\n allTokenRows: TokenMaybeWithUsdBalance[];\n tokenFilter: string;\n selectableChains?: SupportedChainId[];\n};\nexport const useCombineTokensWithFetched = ({\n allTokenRows,\n tokenFilter,\n selectableChains,\n}: UseCombineTokensWithFetchedInput): UseCombineTokensWithFetchedReturn => {\n const isTokenFilterValidAddress =\n isAddress(tokenFilter) && !isBlacklistedToken({ address: tokenFilter });\n\n // fetch on enabled chains only\n const enabledChains = useAllEnabledChains();\n let chainsToFetchOn: SupportedChainId[] = selectableChains || enabledChains;\n if (isTokenFilterValidAddress) {\n const foundChains = new Set(allTokenRows.map((token) => token.network));\n // if exact match by address found in tokenLists, no need to fetch Token data onchain for that chain\n chainsToFetchOn = chainsToFetchOn.filter(\n (chainId) => !foundChains.has(chainId)\n );\n }\n\n // if user's typed filter is a valid address, fetch tokens for all networks (as it's possible that lists data not enough -- even if token is spotted in one of the lists for one chain, it could be missing in another one)\n const tokenRowsFetched = useFetchTokens({\n addresses: isTokenFilterValidAddress ? [tokenFilter] : [],\n chainIds: chainsToFetchOn,\n });\n\n /**\n no way to get token icon for a token which data we just fetched onchain when knowing its address only:\n 1. coingecko, coinmarket and other APIs that return token data including icon are paid only,\n 2. public repos with many token icons (trustwallet, cowswap) don't include more than our tokenLists already have,\n 3. if token was not found in any of the lists, there are likely no other bigger lists out there.\n BUT it is possible that tokenLists have this token (same address) on other chains, with icon present,\n we can assume if addresses are same then tokens are too, coincidences are unlikely, though in reality tokens sometimes have old vs new icon on different chains:\n case in point -- USDT and USDT0\n */\n const possibleTokenImage = !isTokenFilterValidAddress\n ? undefined\n : // tokens here are found by address, so they must be the same as the fetched ones but on different chains\n allTokenRows.find((token) => token.img)?.img;\n\n const tokensFetched = tokenRowsFetched.tokens;\n\n const tokenFetchedAddressesMap = tokensFetched.reduce<\n Partial<Record<SupportedChainId, string[]>>\n >((acc, token) => {\n const chainId = token.network;\n if (!acc[chainId]) acc[chainId] = [];\n\n acc[chainId].push(token.address);\n return acc;\n }, {});\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: tokenFetchedAddressesMap,\n });\n\n const tokensFetchedWithBalance =\n tokenRowsFetched.tokens.map<TokenRowForFetchedToken>((token) =>\n attachTokenBalance({\n ...constructToken(token),\n network: token.network,\n fetchedOnChain: true,\n img: possibleTokenImage,\n })\n );\n\n const combinedTokenRows: TokenRowForFetchedToken[] = [\n ...allTokenRows,\n ...tokensFetchedWithBalance, // tokens not present in allTokenRows,\n // because chains to fetch on exclude chains found for exact token in another chain\n ];\n\n return {\n tokenRowsCombined: combinedTokenRows,\n };\n};\n"],"mappings":";;;;;;;;AAmBA,IAAae,KAA8BC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAN,iBAAAC,gBAAAC,wBAAAE,GAITG;CAAA,AAAAF,EAAA,OAAAJ,IAEwCM,IAAAF,EAAA,MAAvEE,IAAAjB,EAAUW,EAA6D,IAAvE,CAA2BN,EAAmB,EAAAa,SAAWP,GAAa,CAAC,EAAAI,EAAA,KAAAJ,GAAAI,EAAA,KAAAE;CADzE,IAAAE,IACEF,GAGFG,IAAsBd,GAAqB,EAC3Ce,IAA0CT,KAAAQ;CAC1C,IAAID,GAAyB;EAAA,IAAAG;EAAA,AAAAP,EAAA,OAAAL,IAC4CY,IAAAP,EAAA,MAAnDO,IAAA,IAAIC,IAAIb,EAAYc,IAAKC,EAAyB,CAAC,EAAAV,EAAA,KAAAL,GAAAK,EAAA,KAAAO;EAAvE,IAAAI,IAAoBJ,GAAoDK;EAAA,IAAAZ,EAAA,OAAAM,KAAAN,EAAA,OAAAW,GAAA;GAAA,IAAAE;GAIvEb,AAJuEA,EAAA,OAAAW,IAGhCE,IAAAb,EAAA,MAAtCa,KAAAC,MAAa,CAACH,EAAWI,IAAKD,EAAQ,EAAAd,EAAA,KAAAW,GAAAX,EAAA,KAAAa,IADtBD,IAAAN,EAAeU,OAC/BH,EACD,EAAAb,EAAA,KAAAM,GAAAN,EAAA,KAAAW,GAAAX,EAAA,KAAAY;SAAAA,IAAAZ,EAAA;EAFDM,IAAkBA;;CAGnB,IAAAC;CAAA,AAAAP,EAAA,OAAAI,KAAAJ,EAAA,QAAAJ,KAIYW,IAAAH,IAAA,CAA6BR,EAAiB,GAA9C,EAA8C,EAAAI,EAAA,KAAAI,GAAAJ,EAAA,MAAAJ,GAAAI,EAAA,MAAAO,KAAAA,IAAAP,EAAA;CAAA,IAAAY;CAAA,AAAAZ,EAAA,QAAAM,KAAAN,EAAA,QAAAO,KADnBK,IAAA;EAAAK,WAC3BV;EAA8CW,UAC/CZ;EACX,EAAAN,EAAA,MAAAM,GAAAN,EAAA,MAAAO,GAAAP,EAAA,MAAAY,KAAAA,IAAAZ,EAAA;CAHD,IAAAmB,IAAyBnC,EAAe4B,EAGtC,EAWFQ,IAA4BhB,IAGxBT,EAAY2B,KAAMC,EAA0B,EAAAC,MAHrBH,KAAAA,GAK3BI,IAAsBN,EAAgBO,QAAQb;CAAA,AAAAb,EAAA,QAAAyB,IAUxCZ,IAAAb,EAAA,OAR2Ba,IAAAY,EAAaE,OAE5CC,GAMC,EAAE,CAAC,EAAA5B,EAAA,MAAAyB,GAAAzB,EAAA,MAAAa;CARN,IAAAgB,IAAiChB,GAQ1BiB;CAAA,AAAA9B,EAAA,QAAA6B,IAINC,IAAA9B,EAAA,OAF0D8B,IAAA,EAAAC,cAC3CF,GACf,EAAA7B,EAAA,MAAA6B,GAAA7B,EAAA,MAAA8B;CAFD,IAAAE,IAA2B5C,EAAgC0C,EAEzD,EAEFG,IACEd,EAAgBO,OAAOjB,KAA8ByB,MACnDF,EAAmB;EAAA,GACd3C,EAAe8C,EAAM;EAAAC,SACfD,EAAKC;EAAQC,gBACN;EAAIb,KACfJ;EACN,CACH,CAAC;CAMD,OAEK,EAAA3B,mBACc6C,CAPgC,GAChD3C,GAAY,GACZsC,EAKgBK,EACpB;;AAzEwC,SAAA5B,EAAAyB,GAAA;CAAA,OAYiBA,EAAKC;;AAZtB,SAAAb,EAAAgB,GAAA;CAAA,OAqCRJ,EAAKX;;AArCG,SAAAI,EAAAY,GAAAC,GAAA;CA4CvC,IAAAC,IAAgBP,EAAKC;CAGW,OAF3BI,EAAI1B,OAAU0B,EAAI1B,KAAW,EAAH,GAE/B0B,EAAI1B,GAAQ6B,KAAMR,EAAKhC,QAAS,EACzBqC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchTokens.js","names":["useMultiChainTokensData","Address","SupportedChainId","MinErc20Token","UseQueryResult","combineFlatten","results","Error","allTokensTogether","flatMap","res","data","UseFetchTokensReturn","tokens","useFetchTokens","t0","$","_c","addresses","chainIds","t1","combine","minTokensData","t2"],"sources":["../../../../src/hooks/tokens/data/useFetchTokens.ts"],"sourcesContent":["import { useMultiChainTokensData } from \"./useMultichainTokensData\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { MinErc20Token } from \"@/tokens/state/types\";\nimport type { UseQueryResult } from \"@tanstack/react-query\";\n\nconst combineFlatten = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): MinErc20Token[] => {\n const allTokensTogether = results.flatMap((res) => res.data || []);\n return allTokensTogether;\n};\n\ntype UseFetchTokensReturn = {\n tokens: MinErc20Token[];\n};\nexport const useFetchTokens = ({\n addresses,\n chainIds,\n}: {\n addresses: Address[];\n chainIds: SupportedChainId[];\n}): UseFetchTokensReturn => {\n const minTokensData = useMultiChainTokensData({\n addresses,\n chainIds,\n combine: combineFlatten,\n });\n return {\n tokens: minTokensData,\n };\n};\n"],"mappings":";;;AAMA,IAAMK,KACJC,MAE0BA,EAAQG,SAASC,MAAQA,EAAIC,QAAQ,EAAE,CAAC,EAOvDG,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAC,EAAAC,cAAAC,gBAAAJ,GAM9BK;AAAA,CAAAJ,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAC+CC,IAAA;EAAAF;EAAAC;EAAAE,SAGnChB;EACV,EAAAW,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAJD,IAAAM,IAAsBtB,EAAwBoB,EAI5C,EAACG;AAGF,QAHEP,EAAA,OAAAM,IAGFC,IAAAP,EAAA,MAFMO,IAAA,EAAAV,QACGS,GACT,EAAAN,EAAA,KAAAM,GAAAN,EAAA,KAAAO,IAFMA"}
1
+ {"version":3,"file":"useFetchTokens.js","names":["useMultiChainTokensData","Address","SupportedChainId","MinErc20Token","UseQueryResult","combineFlatten","results","Error","allTokensTogether","flatMap","res","data","UseFetchTokensReturn","tokens","useFetchTokens","t0","$","_c","addresses","chainIds","t1","combine","minTokensData","t2"],"sources":["../../../../src/hooks/tokens/data/useFetchTokens.ts"],"sourcesContent":["import { useMultiChainTokensData } from \"./useMultichainTokensData\";\nimport type { Address } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { MinErc20Token } from \"@/tokens/state/types\";\nimport type { UseQueryResult } from \"@tanstack/react-query\";\n\nconst combineFlatten = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): MinErc20Token[] => {\n const allTokensTogether = results.flatMap((res) => res.data || []);\n return allTokensTogether;\n};\n\ntype UseFetchTokensReturn = {\n tokens: MinErc20Token[];\n};\nexport const useFetchTokens = ({\n addresses,\n chainIds,\n}: {\n addresses: Address[];\n chainIds: SupportedChainId[];\n}): UseFetchTokensReturn => {\n const minTokensData = useMultiChainTokensData({\n addresses,\n chainIds,\n combine: combineFlatten,\n });\n return {\n tokens: minTokensData,\n };\n};\n"],"mappings":";;;AAMA,IAAMK,KACJC,MAE0BA,EAAQG,SAASC,MAAQA,EAAIC,QAAQ,EAAE,CAC1DH,EAMIM,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAC,EAAAC,cAAAC,gBAAAJ,GAM9BK;CAAA,AAAAJ,EAAA,OAAAE,KAAAF,EAAA,OAAAG,KAC+CC,IAAA;EAAAF;EAAAC;EAAAE,SAGnChB;EACV,EAAAW,EAAA,KAAAE,GAAAF,EAAA,KAAAG,GAAAH,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAJD,IAAAM,IAAsBtB,EAAwBoB,EAI5C,EAACG;CAGF,OAHEP,EAAA,OAAAM,IAGFC,IAAAP,EAAA,MAFMO,IAAA,EAAAV,QACGS,GACT,EAAAN,EAAA,KAAAM,GAAAN,EAAA,KAAAO,IAFMA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMultichainTokensData.js","names":["SupportedChainId","Address","assert","MarkOptional","MarkRequired","MinErc20Token","erc20Abi","MulticallReturnType","useConfig","ReadContractsData","useLogger","readContracts","Config","QueryClient","useQueries","UseQueryOptions","UseQueryResult","gatherObjectsByProp","isFilledArray","queryClient","wagmiConfig","TokensByAddressByChain","Partial","Record","defaultCombine","results","Error","mapping","reduce","accum","result","data","chainId","network","tokensMapping","token","address","toLowerCase","UseMultichainTokensDataInput","addresses","chainIds","combine","Res","UseMultichainTokensDataInputDefault","useMultiChainTokensData","input","T","t0","$","_c","logger","config","t1","produceQueries","queries","t2","t3","fetchedTokens","once","log","Omit","length","contractsArr","map","abi","functionName","const","callsPerToken","Calls","MulticallRes","contractsForAllChainsArr","flatMap","contractsCalls","contract","SingleChainResult","QueryOpts","select","contracts","tokenData","i","tokenDataSlice","slice","symbolResult","nameResult","decimalsResult","symbol","status","undefined","decimals","name","minTokenData","push","queryKey","queryFn","allowFailure","batchSize","res","enabled","staleTime","Infinity","gcTime","FetchUnknownTokenDataInput","client","fetchUnknownTokenData","Promise","queryOptions","ensureQueryData","selectedData"],"sources":["../../../../src/hooks/tokens/data/useMultichainTokensData.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { type Address } from \"viem\";\nimport { assert, type MarkOptional, type MarkRequired } from \"ts-essentials\";\nimport { type MinErc20Token } from \"@/tokens/state/types\";\nimport { erc20Abi, type MulticallReturnType } from \"viem\";\nimport { useConfig } from \"wagmi\";\nimport type { ReadContractsData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport { readContracts, type Config } from \"@wagmi/core\";\nimport {\n QueryClient,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\n\ntype TokensByAddressByChain = Partial<\n Record<SupportedChainId, Record<Address, MinErc20Token>>\n>;\n\nconst defaultCombine = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): TokensByAddressByChain => {\n const mapping = results.reduce<TokensByAddressByChain>((accum, result) => {\n if (!result.data || !isFilledArray(result.data)) return accum;\n const chainId = result.data[0].network;\n const tokensMapping: Record<Address, MinErc20Token> = gatherObjectsByProp(\n result.data,\n (token) => token.address.toLowerCase()\n );\n\n if (!accum[chainId]) {\n accum[chainId] = {};\n }\n\n accum[chainId] = tokensMapping;\n return accum;\n }, {});\n\n return mapping;\n};\n\ntype UseMultichainTokensDataInput<Res> = {\n addresses: Address[];\n chainIds: SupportedChainId[];\n combine: (results: UseQueryResult<MinErc20Token[], Error>[]) => Res;\n};\n\ntype UseMultichainTokensDataInputDefault = MarkOptional<\n UseMultichainTokensDataInput<never>,\n \"combine\"\n>;\n\n// Function overloads to accept combine function\nexport function useMultiChainTokensData(\n input: UseMultichainTokensDataInputDefault\n): TokensByAddressByChain;\nexport function useMultiChainTokensData<T>(\n input: UseMultichainTokensDataInput<T>\n): T;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain {\n const logger = useLogger(\"MultichainTokensData\");\n\n const config = useConfig();\n\n const queries = produceQueries({ addresses, chainIds, config });\n\n // useReadContracts uses a singular useQuery internally\n // which calls readContracts once only for multiple chainIds\n // and has to wait for all promises to resolve before returning the data.\n // useQueries allows to independently process readContracts results for each chainId\n const fetchedTokens = useQueries<typeof queries, T | TokensByAddressByChain>({\n queries,\n combine: combine || defaultCombine,\n });\n\n logger.once.log(\"TokensData result\", {\n addresses,\n chainIds,\n data: fetchedTokens,\n });\n\n return fetchedTokens;\n}\n\nfunction produceQueries({\n addresses,\n chainIds,\n config,\n}: Omit<UseMultichainTokensDataInputDefault, \"combine\"> & { config: Config }) {\n if (addresses.length === 0 || chainIds.length === 0) {\n // don't spawn any queries\n return [];\n }\n\n const contractsArr = addresses.map(\n (address) =>\n [\n {\n address,\n abi: erc20Abi,\n functionName: \"symbol\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"name\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"decimals\",\n },\n ] as const\n );\n\n const callsPerToken = contractsArr[0]?.length;\n\n type Calls = (typeof contractsArr)[0];\n type MulticallRes = MulticallReturnType<Calls, true>;\n const contractsForAllChainsArr = chainIds.map((chainId) =>\n contractsArr.flatMap((contractsCalls) =>\n contractsCalls.map((contract) => ({ ...contract, chainId }))\n )\n );\n\n type SingleChainResult = ReadContractsData<Calls[], true>;\n\n type QueryOpts = MarkRequired<\n UseQueryOptions<\n SingleChainResult,\n Error,\n MinErc20Token[],\n [\n \"readContracts/tokensData/batch\",\n { addresses: Address[]; chainId?: SupportedChainId },\n ]\n >,\n \"select\"\n >;\n\n const select = (\n result: SingleChainResult,\n contracts: { address: Address; chainId: SupportedChainId }[]\n ): MinErc20Token[] => {\n const tokenData: MinErc20Token[] = [];\n\n assert(callsPerToken, \"zero calls made\");\n for (let i = 0; i < result.length; i += callsPerToken) {\n const { address, chainId } = contracts[i] || {};\n assert(\n address && chainId,\n `contract call object for index ${i} should be defined`\n );\n\n const tokenDataSlice = result.slice(i, i + callsPerToken) as MulticallRes;\n\n const [symbolResult, nameResult, decimalsResult] = tokenDataSlice;\n\n const symbol =\n symbolResult?.status === \"success\" ? symbolResult.result : undefined;\n const decimals =\n decimalsResult?.status === \"success\"\n ? decimalsResult.result\n : undefined;\n\n const name =\n nameResult?.status === \"success\" ? nameResult.result : undefined;\n\n if (!symbol || !decimals || !name) {\n // skip if it's not a valid token.\n continue;\n }\n\n const minTokenData: MinErc20Token = {\n address: address.toLowerCase(),\n network: chainId,\n symbol,\n decimals,\n name,\n };\n tokenData.push(minTokenData);\n }\n\n return tokenData;\n };\n\n const queries = contractsForAllChainsArr.map<QueryOpts>((contracts) => ({\n queryKey: [\n \"readContracts/tokensData/batch\",\n { addresses, chainId: contracts[0]?.chainId },\n ],\n queryFn: async () => {\n const data = await readContracts(config, {\n contracts,\n allowFailure: true,\n batchSize: 512,\n });\n return data;\n },\n select: (res) => select(res, contracts),\n enabled: contracts.length > 0,\n staleTime: Infinity,\n gcTime: Infinity,\n }));\n\n return queries;\n}\n\ntype FetchUnknownTokenDataInput = {\n address: Address;\n chainId: SupportedChainId;\n config?: Config;\n client?: QueryClient;\n};\n\nexport async function fetchUnknownTokenData({\n address,\n chainId,\n config = wagmiConfig,\n client = queryClient,\n}: FetchUnknownTokenDataInput): Promise<MinErc20Token | null> {\n const [queryOptions] = produceQueries({\n addresses: [address],\n chainIds: [chainId],\n config,\n });\n\n if (!queryOptions) {\n return null;\n }\n\n try {\n // doesn't throw just returns {status:\"failure\"} which select eliminates\n const data = await client.ensureQueryData(queryOptions);\n // queryClient.fetch*|ensure doesn't use select\n const selectedData = queryOptions.select(data);\n return selectedData[0] ?? null;\n } catch {\n // in case of RPC/network error\n return null;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useMultichainTokensData.js","names":["SupportedChainId","Address","assert","MarkOptional","MarkRequired","MinErc20Token","erc20Abi","MulticallReturnType","useConfig","ReadContractsData","useLogger","readContracts","Config","QueryClient","useQueries","UseQueryOptions","UseQueryResult","gatherObjectsByProp","isFilledArray","queryClient","wagmiConfig","TokensByAddressByChain","Partial","Record","defaultCombine","results","Error","mapping","reduce","accum","result","data","chainId","network","tokensMapping","token","address","toLowerCase","UseMultichainTokensDataInput","addresses","chainIds","combine","Res","UseMultichainTokensDataInputDefault","useMultiChainTokensData","input","T","t0","$","_c","logger","config","t1","produceQueries","queries","t2","t3","fetchedTokens","once","log","Omit","length","contractsArr","map","abi","functionName","const","callsPerToken","Calls","MulticallRes","contractsForAllChainsArr","flatMap","contractsCalls","contract","SingleChainResult","QueryOpts","select","contracts","tokenData","i","tokenDataSlice","slice","symbolResult","nameResult","decimalsResult","symbol","status","undefined","decimals","name","minTokenData","push","queryKey","queryFn","allowFailure","batchSize","res","enabled","staleTime","Infinity","gcTime","FetchUnknownTokenDataInput","client","fetchUnknownTokenData","Promise","queryOptions","ensureQueryData","selectedData"],"sources":["../../../../src/hooks/tokens/data/useMultichainTokensData.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { type Address } from \"viem\";\nimport { assert, type MarkOptional, type MarkRequired } from \"ts-essentials\";\nimport { type MinErc20Token } from \"@/tokens/state/types\";\nimport { erc20Abi, type MulticallReturnType } from \"viem\";\nimport { useConfig } from \"wagmi\";\nimport type { ReadContractsData } from \"wagmi/query\";\nimport { useLogger } from \"@/core/logger\";\nimport { readContracts, type Config } from \"@wagmi/core\";\nimport {\n QueryClient,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { isFilledArray } from \"@/lib/utils/tuple\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig } from \"@/lib/web3/wagmi/config\";\n\ntype TokensByAddressByChain = Partial<\n Record<SupportedChainId, Record<Address, MinErc20Token>>\n>;\n\nconst defaultCombine = (\n results: UseQueryResult<MinErc20Token[], Error>[]\n): TokensByAddressByChain => {\n const mapping = results.reduce<TokensByAddressByChain>((accum, result) => {\n if (!result.data || !isFilledArray(result.data)) return accum;\n const chainId = result.data[0].network;\n const tokensMapping: Record<Address, MinErc20Token> = gatherObjectsByProp(\n result.data,\n (token) => token.address.toLowerCase()\n );\n\n if (!accum[chainId]) {\n accum[chainId] = {};\n }\n\n accum[chainId] = tokensMapping;\n return accum;\n }, {});\n\n return mapping;\n};\n\ntype UseMultichainTokensDataInput<Res> = {\n addresses: Address[];\n chainIds: SupportedChainId[];\n combine: (results: UseQueryResult<MinErc20Token[], Error>[]) => Res;\n};\n\ntype UseMultichainTokensDataInputDefault = MarkOptional<\n UseMultichainTokensDataInput<never>,\n \"combine\"\n>;\n\n// Function overloads to accept combine function\nexport function useMultiChainTokensData(\n input: UseMultichainTokensDataInputDefault\n): TokensByAddressByChain;\nexport function useMultiChainTokensData<T>(\n input: UseMultichainTokensDataInput<T>\n): T;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain;\nexport function useMultiChainTokensData<T>({\n addresses,\n chainIds,\n combine,\n}: MarkOptional<UseMultichainTokensDataInput<T>, \"combine\">):\n | T\n | TokensByAddressByChain {\n const logger = useLogger(\"MultichainTokensData\");\n\n const config = useConfig();\n\n const queries = produceQueries({ addresses, chainIds, config });\n\n // useReadContracts uses a singular useQuery internally\n // which calls readContracts once only for multiple chainIds\n // and has to wait for all promises to resolve before returning the data.\n // useQueries allows to independently process readContracts results for each chainId\n const fetchedTokens = useQueries<typeof queries, T | TokensByAddressByChain>({\n queries,\n combine: combine || defaultCombine,\n });\n\n logger.once.log(\"TokensData result\", {\n addresses,\n chainIds,\n data: fetchedTokens,\n });\n\n return fetchedTokens;\n}\n\nfunction produceQueries({\n addresses,\n chainIds,\n config,\n}: Omit<UseMultichainTokensDataInputDefault, \"combine\"> & { config: Config }) {\n if (addresses.length === 0 || chainIds.length === 0) {\n // don't spawn any queries\n return [];\n }\n\n const contractsArr = addresses.map(\n (address) =>\n [\n {\n address,\n abi: erc20Abi,\n functionName: \"symbol\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"name\",\n },\n {\n address,\n abi: erc20Abi,\n functionName: \"decimals\",\n },\n ] as const\n );\n\n const callsPerToken = contractsArr[0]?.length;\n\n type Calls = (typeof contractsArr)[0];\n type MulticallRes = MulticallReturnType<Calls, true>;\n const contractsForAllChainsArr = chainIds.map((chainId) =>\n contractsArr.flatMap((contractsCalls) =>\n contractsCalls.map((contract) => ({ ...contract, chainId }))\n )\n );\n\n type SingleChainResult = ReadContractsData<Calls[], true>;\n\n type QueryOpts = MarkRequired<\n UseQueryOptions<\n SingleChainResult,\n Error,\n MinErc20Token[],\n [\n \"readContracts/tokensData/batch\",\n { addresses: Address[]; chainId?: SupportedChainId },\n ]\n >,\n \"select\"\n >;\n\n const select = (\n result: SingleChainResult,\n contracts: { address: Address; chainId: SupportedChainId }[]\n ): MinErc20Token[] => {\n const tokenData: MinErc20Token[] = [];\n\n assert(callsPerToken, \"zero calls made\");\n for (let i = 0; i < result.length; i += callsPerToken) {\n const { address, chainId } = contracts[i] || {};\n assert(\n address && chainId,\n `contract call object for index ${i} should be defined`\n );\n\n const tokenDataSlice = result.slice(i, i + callsPerToken) as MulticallRes;\n\n const [symbolResult, nameResult, decimalsResult] = tokenDataSlice;\n\n const symbol =\n symbolResult?.status === \"success\" ? symbolResult.result : undefined;\n const decimals =\n decimalsResult?.status === \"success\"\n ? decimalsResult.result\n : undefined;\n\n const name =\n nameResult?.status === \"success\" ? nameResult.result : undefined;\n\n if (!symbol || !decimals || !name) {\n // skip if it's not a valid token.\n continue;\n }\n\n const minTokenData: MinErc20Token = {\n address: address.toLowerCase(),\n network: chainId,\n symbol,\n decimals,\n name,\n };\n tokenData.push(minTokenData);\n }\n\n return tokenData;\n };\n\n const queries = contractsForAllChainsArr.map<QueryOpts>((contracts) => ({\n queryKey: [\n \"readContracts/tokensData/batch\",\n { addresses, chainId: contracts[0]?.chainId },\n ],\n queryFn: async () => {\n const data = await readContracts(config, {\n contracts,\n allowFailure: true,\n batchSize: 512,\n });\n return data;\n },\n select: (res) => select(res, contracts),\n enabled: contracts.length > 0,\n staleTime: Infinity,\n gcTime: Infinity,\n }));\n\n return queries;\n}\n\ntype FetchUnknownTokenDataInput = {\n address: Address;\n chainId: SupportedChainId;\n config?: Config;\n client?: QueryClient;\n};\n\nexport async function fetchUnknownTokenData({\n address,\n chainId,\n config = wagmiConfig,\n client = queryClient,\n}: FetchUnknownTokenDataInput): Promise<MinErc20Token | null> {\n const [queryOptions] = produceQueries({\n addresses: [address],\n chainIds: [chainId],\n config,\n });\n\n if (!queryOptions) {\n return null;\n }\n\n try {\n // doesn't throw just returns {status:\"failure\"} which select eliminates\n const data = await client.ensureQueryData(queryOptions);\n // queryClient.fetch*|ensure doesn't use select\n const selectedData = queryOptions.select(data);\n return selectedData[0] ?? null;\n } catch {\n // in case of RPC/network error\n return null;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","names":["queryClient","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","axios","isAddress","UseQueryOptions","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","SupportedChainId","getApiURL","keysToSkip","shouldTryOverride","key","includes","fetchTokenPricesWithFallback","chainId","fallbackToCachedPrices","signal","AbortSignal","data","prices","get","lastPrices","getQueryData","constructTokenPricesQueryKey","combined","Object","entries","reduce","acc","address","price","lastPrice","source","mergedPrice","changed","keys","val","updatedAt","constructTokenPricesQueryOptions","enabled","Error","queryKey","queryFn","notifyOnChangeProps","staleTime","refetchInterval"],"sources":["../../../../src/hooks/tokens/prices/queries.ts"],"sourcesContent":["import { queryClient } from \"@/lib/queryClient\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\n\nimport axios from \"axios\";\nimport { isAddress } from \"viem\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { getApiURL } from \"@/lib/constants/urls\";\n\nconst keysToSkip: (keyof FiatPriceFromApi)[] = [\n \"source\",\n \"address\",\n \"updatedAt\",\n];\n\nfunction shouldTryOverride(key: string): boolean {\n return !keysToSkip.includes(key as keyof FiatPriceFromApi);\n}\n\nexport async function fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n signal?: AbortSignal;\n}) {\n const {\n data: { prices },\n } = await axios.get<{ prices: FiatPriceMap }>(\n `${getApiURL()}/fiat/prices/${chainId}`,\n {\n signal,\n }\n );\n\n if (!fallbackToCachedPrices) return prices;\n\n // fiat-fetcher gives the prices either from coingecko or chainlink,\n // and in case of chainlink there are some missing values in price object\n\n const lastPrices = queryClient.getQueryData<FiatPriceMap>(\n constructTokenPricesQueryKey(chainId)\n );\n\n if (!lastPrices) return prices;\n\n const combined = Object.entries(prices).reduce<FiatPriceMap>(\n (acc, [address, price]) => {\n // skip if address is not valid\n if (!isAddress(address)) return acc;\n\n const lastPrice = lastPrices[address];\n // no previous price, do nothing\n if (!lastPrice) return acc;\n\n // assume that coinGecko prices have more data\n // and we don't want to change them\n if (price.source === \"coinGecko\") return acc;\n\n // no need to override the price when from the same source\n if (price.source === lastPrice.source) return acc;\n\n // make sure we have all the keys\n // not just the ones that are in the new price object\n const mergedPrice = { ...lastPrice, ...price };\n\n let changed = false;\n\n for (const key of Object.keys(mergedPrice)) {\n if (shouldTryOverride(key)) {\n const val =\n price[key as keyof typeof price] ??\n ((changed = true), lastPrice[key as keyof typeof lastPrice]);\n\n (mergedPrice[\n key as keyof typeof mergedPrice\n ] as FiatPriceFromApi[keyof FiatPriceFromApi]) = val;\n }\n }\n\n // we updated the price\n if (changed) {\n // let's keep updatedAt, source from the last price\n mergedPrice.updatedAt = lastPrice.updatedAt;\n mergedPrice.source = lastPrice.source;\n }\n\n acc[address] = mergedPrice;\n return acc;\n },\n prices\n );\n\n return combined;\n}\n\nexport function constructTokenPricesQueryKey(\n chainId: number\n): TokenPricesQueryKey {\n return [\"token-prices\", chainId];\n}\n\nexport function constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices,\n enabled,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n enabled?: boolean;\n}): UseQueryOptions<FiatPriceMap, Error, FiatPriceMap, TokenPricesQueryKey> {\n {\n return {\n queryKey: constructTokenPricesQueryKey(chainId),\n queryFn: ({ signal }) =>\n fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n }),\n enabled,\n notifyOnChangeProps: [\"data\", \"isLoading\", \"isError\"],\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n };\n }\n}\n"],"mappings":";;;;;;AAkBA,IAAMW,IAAyC;CAC7C;CACA;CACA;CACD;AAED,SAASC,EAAkBC,GAAsB;AAC/C,QAAO,CAACF,EAAWG,SAASD,EAA8B;;AAG5D,eAAsBE,EAA6B,EACjDC,YACAC,2BACAC,aAKC;CACD,IAAM,EACJE,MAAM,EAAEC,gBACN,MAAMlB,EAAMmB,IACd,GAAGZ,GAAW,CAAA,eAAgBM,KAC9B,EACEE,WAEJ,CAAC;AAED,KAAI,CAACD,EAAwB,QAAOI;CAKpC,IAAME,IAAavB,EAAYwB,aAC7BC,EAA6BT,EAC/B,CAAC;AAmDD,QAjDKO,IAEYI,OAAOC,QAAQP,EAAO,CAACQ,QACrCC,GAAK,CAACC,GAASC,OAAW;AAEzB,MAAI,CAAC5B,EAAU2B,EAAQ,CAAE,QAAOD;EAEhC,IAAMG,IAAYV,EAAWQ;AAS7B,MAPI,CAACE,KAIDD,EAAME,WAAW,eAGjBF,EAAME,WAAWD,EAAUC,OAAQ,QAAOJ;EAI9C,IAAMK,IAAc;GAAE,GAAGF;GAAW,GAAGD;GAAO,EAE1CI,IAAU;AAEd,OAAK,IAAMvB,KAAOc,OAAOU,KAAKF,EAAY,CACxC,CAAIvB,EAAkBC,EAAI,KAKvBsB,EACCtB,KAJAmB,EAAMnB,OACJuB,IAAU,IAAOH,EAAUpB;AAgBnC,SAPIuB,MAEFD,EAAYI,YAAYN,EAAUM,WAClCJ,EAAYD,SAASD,EAAUC,SAGjCJ,EAAIC,KAAWI,GACRL;IAETT,EACD,GA/CuBA;;AAoD1B,SAAgBI,EACdT,GACqB;AACrB,QAAO,CAAC,gBAAgBA,EAAQ;;AAGlC,SAAgBwB,EAAiC,EAC/CxB,YACAC,2BACAwB,cAK0E;AAExE,QAAO;EACLE,UAAUlB,EAA6BT,EAAQ;EAC/C4B,UAAU,EAAE1B,gBACVH,EAA6B;GAC3BC;GACAC;GACAC;GACD,CAAC;EACJuB;EACAI,qBAAqB;GAAC;GAAQ;GAAa;GAAU;EACrDC,WAAW7C;EACX8C,iBAAiB7C;EAClB"}
1
+ {"version":3,"file":"queries.js","names":["queryClient","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","axios","isAddress","UseQueryOptions","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","SupportedChainId","getApiURL","keysToSkip","shouldTryOverride","key","includes","fetchTokenPricesWithFallback","chainId","fallbackToCachedPrices","signal","AbortSignal","data","prices","get","lastPrices","getQueryData","constructTokenPricesQueryKey","combined","Object","entries","reduce","acc","address","price","lastPrice","source","mergedPrice","changed","keys","val","updatedAt","constructTokenPricesQueryOptions","enabled","Error","queryKey","queryFn","notifyOnChangeProps","staleTime","refetchInterval"],"sources":["../../../../src/hooks/tokens/prices/queries.ts"],"sourcesContent":["import { queryClient } from \"@/lib/queryClient\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\n\nimport axios from \"axios\";\nimport { isAddress } from \"viem\";\n\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { getApiURL } from \"@/lib/constants/urls\";\n\nconst keysToSkip: (keyof FiatPriceFromApi)[] = [\n \"source\",\n \"address\",\n \"updatedAt\",\n];\n\nfunction shouldTryOverride(key: string): boolean {\n return !keysToSkip.includes(key as keyof FiatPriceFromApi);\n}\n\nexport async function fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n signal?: AbortSignal;\n}) {\n const {\n data: { prices },\n } = await axios.get<{ prices: FiatPriceMap }>(\n `${getApiURL()}/fiat/prices/${chainId}`,\n {\n signal,\n }\n );\n\n if (!fallbackToCachedPrices) return prices;\n\n // fiat-fetcher gives the prices either from coingecko or chainlink,\n // and in case of chainlink there are some missing values in price object\n\n const lastPrices = queryClient.getQueryData<FiatPriceMap>(\n constructTokenPricesQueryKey(chainId)\n );\n\n if (!lastPrices) return prices;\n\n const combined = Object.entries(prices).reduce<FiatPriceMap>(\n (acc, [address, price]) => {\n // skip if address is not valid\n if (!isAddress(address)) return acc;\n\n const lastPrice = lastPrices[address];\n // no previous price, do nothing\n if (!lastPrice) return acc;\n\n // assume that coinGecko prices have more data\n // and we don't want to change them\n if (price.source === \"coinGecko\") return acc;\n\n // no need to override the price when from the same source\n if (price.source === lastPrice.source) return acc;\n\n // make sure we have all the keys\n // not just the ones that are in the new price object\n const mergedPrice = { ...lastPrice, ...price };\n\n let changed = false;\n\n for (const key of Object.keys(mergedPrice)) {\n if (shouldTryOverride(key)) {\n const val =\n price[key as keyof typeof price] ??\n ((changed = true), lastPrice[key as keyof typeof lastPrice]);\n\n (mergedPrice[\n key as keyof typeof mergedPrice\n ] as FiatPriceFromApi[keyof FiatPriceFromApi]) = val;\n }\n }\n\n // we updated the price\n if (changed) {\n // let's keep updatedAt, source from the last price\n mergedPrice.updatedAt = lastPrice.updatedAt;\n mergedPrice.source = lastPrice.source;\n }\n\n acc[address] = mergedPrice;\n return acc;\n },\n prices\n );\n\n return combined;\n}\n\nexport function constructTokenPricesQueryKey(\n chainId: number\n): TokenPricesQueryKey {\n return [\"token-prices\", chainId];\n}\n\nexport function constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices,\n enabled,\n}: {\n chainId: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n enabled?: boolean;\n}): UseQueryOptions<FiatPriceMap, Error, FiatPriceMap, TokenPricesQueryKey> {\n {\n return {\n queryKey: constructTokenPricesQueryKey(chainId),\n queryFn: ({ signal }) =>\n fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n }),\n enabled,\n notifyOnChangeProps: [\"data\", \"isLoading\", \"isError\"],\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n };\n }\n}\n"],"mappings":";;;;;;AAkBA,IAAMW,IAAyC;CAC7C;CACA;CACA;CACD;AAED,SAASC,EAAkBC,GAAsB;CAC/C,OAAO,CAACF,EAAWG,SAASD,EAA8B;;AAG5D,eAAsBE,EAA6B,EACjDC,YACAC,2BACAC,aAKC;CACD,IAAM,EACJE,MAAM,EAAEC,gBACN,MAAMlB,EAAMmB,IACd,GAAGZ,GAAW,CAAA,eAAgBM,KAC9B,EACEE,WAEJ,CAAC;CAED,IAAI,CAACD,GAAwB,OAAOI;CAKpC,IAAME,IAAavB,EAAYwB,aAC7BC,EAA6BT,EAC/B,CAAC;CAmDD,OAjDKO,IAEYI,OAAOC,QAAQP,EAAO,CAACQ,QACrCC,GAAK,CAACC,GAASC,OAAW;EAEzB,IAAI,CAAC5B,EAAU2B,EAAQ,EAAE,OAAOD;EAEhC,IAAMG,IAAYV,EAAWQ;EAS7B,IAPI,CAACE,KAIDD,EAAME,WAAW,eAGjBF,EAAME,WAAWD,EAAUC,QAAQ,OAAOJ;EAI9C,IAAMK,IAAc;GAAE,GAAGF;GAAW,GAAGD;GAAO,EAE1CI,IAAU;EAEd,KAAK,IAAMvB,KAAOc,OAAOU,KAAKF,EAAY,EACxC,AAAIvB,EAAkBC,EAAI,KAKxB,EACEA,KAJAmB,EAAMnB,OACJuB,IAAU,IAAOH,EAAUpB;EAgBnC,OAPIuB,MAEFD,EAAYI,YAAYN,EAAUM,WAClCJ,EAAYD,SAASD,EAAUC,SAGjCJ,EAAIC,KAAWI,GACRL;IAETT,EAGKK,GAjDiBL;;AAoD1B,SAAgBI,EACdT,GACqB;CACrB,OAAO,CAAC,gBAAgBA,EAAQ;;AAGlC,SAAgBwB,EAAiC,EAC/CxB,YACAC,2BACAwB,cAK0E;CAExE,OAAO;EACLE,UAAUlB,EAA6BT,EAAQ;EAC/C4B,UAAU,EAAE1B,gBACVH,EAA6B;GAC3BC;GACAC;GACAC;GACD,CAAC;EACJuB;EACAI,qBAAqB;GAAC;GAAQ;GAAa;GAAU;EACrDC,WAAW7C;EACX8C,iBAAiB7C;EAClB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMultichainTokenPrices.js","names":["useQueries","useMemo","FiatPriceMap","UseMultichainTokenPricesInput","constructTokenPricesQueryOptions","SupportedChainId","useMultiChainTokenPrices","chainIds","_params","$","_c","t0","t1","chainId","specificQueryParams","fallbackToCachedPrices","enabled","map","queries","queryResults","t2","t3","accum","chainId_0","index","result","data","reduce"],"sources":["../../../../src/hooks/tokens/prices/useMultichainTokenPrices.ts"],"sourcesContent":["import { useQueries } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport type { FiatPriceMap, UseMultichainTokenPricesInput } from \"./types\";\nimport { constructTokenPricesQueryOptions } from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useMultiChainTokenPrices = (\n chainIds: SupportedChainId[],\n _params?: UseMultichainTokenPricesInput\n): Record<number, FiatPriceMap> => {\n const queries = useMemo(\n () =>\n chainIds.map((chainId) => {\n const specificQueryParams = _params?.[chainId];\n\n return constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices: specificQueryParams?.fallbackToCachedPrices,\n enabled: specificQueryParams?.enabled,\n });\n }),\n [_params, chainIds]\n );\n\n const queryResults = useQueries({ queries });\n\n return useMemo(\n () =>\n chainIds.reduce<Record<number, FiatPriceMap>>((accum, chainId, index) => {\n const result = queryResults[index]?.data;\n if (result) accum[chainId] = result;\n return accum;\n }, {}),\n [chainIds, queryResults]\n );\n};\n"],"mappings":";;;;;AAMA,IAAaM,KAA2BC,GAAAC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;AAAA,KAAAF,EAAA,OAAAD,KAAAC,EAAA,OAAAF,GAAA;EAAA,IAAAK;AAchCH,EAdgCA,EAAA,OAAAD,IAcjCI,IAAAH,EAAA,MARYG,KAAAC,MAAA;GACX,IAAAC,IAA4BN,IAAUK;AAAS,UAExCT,EAAiC;IAAAS;IAAAE,wBAEdD,GAAmBC;IAAwBC,SAC1DF,GAAmBE;IAC7B,CAAC;KACHP,EAAA,KAAAD,GAAAC,EAAA,KAAAG,IARDD,IAAAJ,EAAQU,IAAKL,EAQX,EAAAH,EAAA,KAAAD,GAAAC,EAAA,KAAAF,GAAAE,EAAA,KAAAE;OAAAA,KAAAF,EAAA;CAVN,IAAAS,IAEIP,GAUFC;AAAA,CAAAH,EAAA,OAAAS,IAEyCN,IAAAH,EAAA,MAAXG,IAAA,EAAAM,YAAW,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAG;CAA3C,IAAAO,IAAqBnB,EAAWY,EAAY,EAACQ;AAAA,KAAAX,EAAA,OAAAF,KAAAE,EAAA,OAAAU,GAAA;EAAA,IAAAE;AAQnCZ,EARmCA,EAAA,QAAAU,IAQxCE,IAAAZ,EAAA,OAJ6CY,KAAAC,GAAAC,GAAAC,MAAA;GAC5C,IAAAC,IAAeN,EAAaK,IAAYE;AACJ,UAAhCD,MAAQH,EAAMT,KAAWY,IACtBH;KACRb,EAAA,MAAAU,GAAAV,EAAA,MAAAY,IAJDD,IAAAb,EAAQoB,OAAsCN,GAI3C,EAAE,CAAC,EAAAZ,EAAA,KAAAF,GAAAE,EAAA,KAAAU,GAAAV,EAAA,KAAAW;OAAAA,KAAAX,EAAA;AAAA,QAJNW"}
1
+ {"version":3,"file":"useMultichainTokenPrices.js","names":["useQueries","useMemo","FiatPriceMap","UseMultichainTokenPricesInput","constructTokenPricesQueryOptions","SupportedChainId","useMultiChainTokenPrices","chainIds","_params","$","_c","t0","t1","chainId","specificQueryParams","fallbackToCachedPrices","enabled","map","queries","queryResults","t2","t3","accum","chainId_0","index","result","data","reduce"],"sources":["../../../../src/hooks/tokens/prices/useMultichainTokenPrices.ts"],"sourcesContent":["import { useQueries } from \"@tanstack/react-query\";\nimport { useMemo } from \"react\";\nimport type { FiatPriceMap, UseMultichainTokenPricesInput } from \"./types\";\nimport { constructTokenPricesQueryOptions } from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useMultiChainTokenPrices = (\n chainIds: SupportedChainId[],\n _params?: UseMultichainTokenPricesInput\n): Record<number, FiatPriceMap> => {\n const queries = useMemo(\n () =>\n chainIds.map((chainId) => {\n const specificQueryParams = _params?.[chainId];\n\n return constructTokenPricesQueryOptions({\n chainId,\n fallbackToCachedPrices: specificQueryParams?.fallbackToCachedPrices,\n enabled: specificQueryParams?.enabled,\n });\n }),\n [_params, chainIds]\n );\n\n const queryResults = useQueries({ queries });\n\n return useMemo(\n () =>\n chainIds.reduce<Record<number, FiatPriceMap>>((accum, chainId, index) => {\n const result = queryResults[index]?.data;\n if (result) accum[chainId] = result;\n return accum;\n }, {}),\n [chainIds, queryResults]\n );\n};\n"],"mappings":";;;;;AAMA,IAAaM,KAA2BC,GAAAC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,IAAAF,EAAA,OAAAD,KAAAC,EAAA,OAAAF,GAAA;EAAA,IAAAK;EAchCH,AAdgCA,EAAA,OAAAD,IAcjCI,IAAAH,EAAA,MARYG,KAAAC,MAAA;GACX,IAAAC,IAA4BN,IAAUK;GAAS,OAExCT,EAAiC;IAAAS;IAAAE,wBAEdD,GAAmBC;IAAwBC,SAC1DF,GAAmBE;IAC7B,CAAC;KACHP,EAAA,KAAAD,GAAAC,EAAA,KAAAG,IARDD,IAAAJ,EAAQU,IAAKL,EAQX,EAAAH,EAAA,KAAAD,GAAAC,EAAA,KAAAF,GAAAE,EAAA,KAAAE;QAAAA,IAAAF,EAAA;CAVN,IAAAS,IAEIP,GAUFC;CAAA,AAAAH,EAAA,OAAAS,IAEyCN,IAAAH,EAAA,MAAXG,IAAA,EAAAM,YAAW,EAAAT,EAAA,KAAAS,GAAAT,EAAA,KAAAG;CAA3C,IAAAO,IAAqBnB,EAAWY,EAAY,EAACQ;CAAA,IAAAX,EAAA,OAAAF,KAAAE,EAAA,OAAAU,GAAA;EAAA,IAAAE;EAQnCZ,AARmCA,EAAA,QAAAU,IAQxCE,IAAAZ,EAAA,OAJ6CY,KAAAC,GAAAC,GAAAC,MAAA;GAC5C,IAAAC,IAAeN,EAAaK,IAAYE;GACJ,OAAhCD,MAAQH,EAAMT,KAAWY,IACtBH;KACRb,EAAA,MAAAU,GAAAV,EAAA,MAAAY,IAJDD,IAAAb,EAAQoB,OAAsCN,GAI3C,EAAE,CAAC,EAAAZ,EAAA,KAAAF,GAAAE,EAAA,KAAAU,GAAAV,EAAA,KAAAW;QAAAA,IAAAX,EAAA;CAAA,OAJNW"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenPrices.js","names":["useQuery","UseQueryOptions","UseQueryResult","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","constructTokenPricesQueryKey","fetchTokenPricesWithFallback","SupportedChainId","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","Token","assert","Address","useNativeToken","UseTokenPricesInput","chainId","fallbackToCachedPrices","query","Omit","Error","TData","UseTokenPricesResult","useTokenPrices","t0","$","_c","queryEnabled","enabled","t1","t2","t3","t4","signal","t5","queryKey","queryFn","staleTime","refetchInterval","queryResults","useTokenPrice","token","network","address","data","toLowerCase","select","queryResult","useNativeTokenPrice","nativeToken"],"sources":["../../../../src/hooks/tokens/prices/useTokenPrices.ts"],"sourcesContent":["import {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport {\n constructTokenPricesQueryKey,\n fetchTokenPricesWithFallback,\n} from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { type Address } from \"viem\";\nimport { useNativeToken } from \"../useNativeToken\";\n\ntype UseTokenPricesInput<TData = FiatPriceMap> = {\n chainId?: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n query?: Omit<\n UseQueryOptions<FiatPriceMap, Error, TData, TokenPricesQueryKey>,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\ntype UseTokenPricesResult<TData = FiatPriceMap> = UseQueryResult<TData, Error>;\n\nexport const useTokenPrices = <TData = FiatPriceMap>({\n chainId,\n fallbackToCachedPrices,\n query,\n}: UseTokenPricesInput<TData>): UseTokenPricesResult<TData> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResults = useQuery<\n FiatPriceMap,\n Error,\n TData,\n TokenPricesQueryKey\n >({\n queryKey: constructTokenPricesQueryKey(chainId ?? 0),\n queryFn: ({ signal }) => {\n assert(chainId, \"chainId is required\");\n return fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n });\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n ...query,\n enabled: queryEnabled && !!chainId,\n });\n\n return queryResults;\n};\n\nexport const useTokenPrice = (\n token?: Pick<Token, \"address\" | \"network\">,\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n): UseQueryResult<FiatPriceFromApi | undefined, Error> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useTokenPrices({\n chainId: token?.network,\n fallbackToCachedPrices: true,\n query: {\n ...query,\n enabled: queryEnabled && !!token?.address,\n select: (data) => data[token?.address.toLowerCase() as Address],\n },\n });\n\n return queryResult;\n};\n\nexport const useNativeTokenPrice = (\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n) => {\n const nativeToken = useNativeToken();\n return useTokenPrice(nativeToken, query);\n};\n"],"mappings":";;;;;;;;AAmCA,IAAauB,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAuB,EAAAV,YAAAC,2BAAAC,aAAAM,GAKnDG,IAAqBT,GAAKU,WAAL,IAQoBC,IAAAb,KAAA,GAAYc;AAAA,CAAAL,EAAA,OAAAI,IAACC,IAAAL,EAAA,MAA1CK,IAAAxB,EAA6BuB,EAAa,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAAA,IAAAC;AAAA,CAAAN,EAAA,OAAAT,KAAAS,EAAA,OAAAR,KAC3Cc,KAAAC,MAAA;EAAC,IAAA,EAAAC,cAAAD;AAC8B,SAAtCpB,EAAOI,GAAS,sBAAsB,EAC/BT,EAA6B;GAAAS;GAAAC;GAAAgB;GAInC,CAAC;IACHR,EAAA,KAAAT,GAAAS,EAAA,KAAAR,GAAAQ,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAIQ,IAAAO,IAAAL,KAAA,CAAiB,CAACX,GAAOkB;AACjC,QADiCT,EAAA,OAAAP,KAAAO,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAAAN,EAAA,OAAAO,KAblCE,IAAA;EAAAC,UACUL;EAA0CM,SAC3CL;EAORM,WACU5B;EAAgC6B,iBAC1B5B;EAAa,GAC3BQ;EAAKU,SACCI;EACV,EAAAP,EAAA,KAAAP,GAAAO,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,GAAAP,EAAA,KAAAS,KAAAA,IAAAT,EAAA,IAnBoBzB,EAKnBkC,EAcA;GAKSM,KAAgBC,GAAAvB,MAAA;CAAA,IAAAO,IAAAC,EAAA,EAAA,EAY3BC,IAAqBT,GAAKU,WAAL,IAGVJ,IAAAiB,GAAKC,SAIHb,IAAAF,KAAA,CAAiB,CAACc,GAAKE,SAASb;AAAA,CAAAL,EAAA,OAAAgB,GAAAE,UACsBb,IAAAL,EAAA,MAAvDK,KAAAc,MAAUA,EAAKH,GAAKE,QAAqBE,aAAE,GAAYpB,EAAA,KAAAgB,GAAAE,SAAAlB,EAAA,KAAAK;CAAA,IAAAC;AAAA,CAAAN,EAAA,OAAAP,KAAAO,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAH1DC,IAAA;EAAA,GACFb;EAAKU,SACCC;EAAgCiB,QACjChB;EACT,EAAAL,EAAA,KAAAP,GAAAO,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAAA,IAAAO;AACA,QADAP,EAAA,OAAAD,KAAAC,EAAA,OAAAM,KAPgCC,IAAA;EAAAhB,SACxBQ;EAAcP,wBACC;EAAIC,OACrBa;EAKR,EAAAN,EAAA,KAAAD,GAAAC,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IARmBF,EAAeS,EAQjC;GAKSgB,KAAsB9B,MAY1BsB,EADa1B,GAAgB,EACFI,EAAM"}
1
+ {"version":3,"file":"useTokenPrices.js","names":["useQuery","UseQueryOptions","UseQueryResult","FiatPriceFromApi","FiatPriceMap","TokenPricesQueryKey","constructTokenPricesQueryKey","fetchTokenPricesWithFallback","SupportedChainId","LONG_STALE_TIME_FOR_REACTIVENESS","ONE_MINUTE_MS","Token","assert","Address","useNativeToken","UseTokenPricesInput","chainId","fallbackToCachedPrices","query","Omit","Error","TData","UseTokenPricesResult","useTokenPrices","t0","$","_c","queryEnabled","enabled","t1","t2","t3","t4","signal","t5","queryKey","queryFn","staleTime","refetchInterval","queryResults","useTokenPrice","token","network","address","data","toLowerCase","select","queryResult","useNativeTokenPrice","nativeToken"],"sources":["../../../../src/hooks/tokens/prices/useTokenPrices.ts"],"sourcesContent":["import {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport type {\n FiatPriceFromApi,\n FiatPriceMap,\n TokenPricesQueryKey,\n} from \"./types\";\nimport {\n constructTokenPricesQueryKey,\n fetchTokenPricesWithFallback,\n} from \"./queries\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport {\n LONG_STALE_TIME_FOR_REACTIVENESS,\n ONE_MINUTE_MS,\n} from \"@/lib/constants/time\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { type Address } from \"viem\";\nimport { useNativeToken } from \"../useNativeToken\";\n\ntype UseTokenPricesInput<TData = FiatPriceMap> = {\n chainId?: SupportedChainId;\n fallbackToCachedPrices?: boolean;\n query?: Omit<\n UseQueryOptions<FiatPriceMap, Error, TData, TokenPricesQueryKey>,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\ntype UseTokenPricesResult<TData = FiatPriceMap> = UseQueryResult<TData, Error>;\n\nexport const useTokenPrices = <TData = FiatPriceMap>({\n chainId,\n fallbackToCachedPrices,\n query,\n}: UseTokenPricesInput<TData>): UseTokenPricesResult<TData> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResults = useQuery<\n FiatPriceMap,\n Error,\n TData,\n TokenPricesQueryKey\n >({\n queryKey: constructTokenPricesQueryKey(chainId ?? 0),\n queryFn: ({ signal }) => {\n assert(chainId, \"chainId is required\");\n return fetchTokenPricesWithFallback({\n chainId,\n fallbackToCachedPrices,\n signal,\n });\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n refetchInterval: ONE_MINUTE_MS,\n ...query,\n enabled: queryEnabled && !!chainId,\n });\n\n return queryResults;\n};\n\nexport const useTokenPrice = (\n token?: Pick<Token, \"address\" | \"network\">,\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n): UseQueryResult<FiatPriceFromApi | undefined, Error> => {\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useTokenPrices({\n chainId: token?.network,\n fallbackToCachedPrices: true,\n query: {\n ...query,\n enabled: queryEnabled && !!token?.address,\n select: (data) => data[token?.address.toLowerCase() as Address],\n },\n });\n\n return queryResult;\n};\n\nexport const useNativeTokenPrice = (\n query?: Omit<\n UseQueryOptions<\n FiatPriceMap,\n Error,\n FiatPriceFromApi | undefined,\n TokenPricesQueryKey\n >,\n \"queryKey\" | \"queryFn\" | \"select\"\n >\n) => {\n const nativeToken = useNativeToken();\n return useTokenPrice(nativeToken, query);\n};\n"],"mappings":";;;;;;;;AAmCA,IAAauB,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAuB,EAAAV,YAAAC,2BAAAC,aAAAM,GAKnDG,IAAqBT,GAAKU,WAAL,IAQoBC,IAAAb,KAAA,GAAYc;CAAA,AAAAL,EAAA,OAAAI,IAACC,IAAAL,EAAA,MAA1CK,IAAAxB,EAA6BuB,EAAa,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAAA,IAAAC;CAAA,AAAAN,EAAA,OAAAT,KAAAS,EAAA,OAAAR,KAC3Cc,KAAAC,MAAA;EAAC,IAAA,EAAAC,cAAAD;EAC8B,OAAtCpB,EAAOI,GAAS,sBAAsB,EAC/BT,EAA6B;GAAAS;GAAAC;GAAAgB;GAInC,CAAC;IACHR,EAAA,KAAAT,GAAAS,EAAA,KAAAR,GAAAQ,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAIQ,IAAAO,IAAAL,KAAA,CAAiB,CAACX,GAAOkB;CACjC,OADiCT,EAAA,OAAAP,KAAAO,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KAAAN,EAAA,OAAAO,KAblCE,IAAA;EAAAC,UACUL;EAA0CM,SAC3CL;EAORM,WACU5B;EAAgC6B,iBAC1B5B;EAAa,GAC3BQ;EAAKU,SACCI;EACV,EAAAP,EAAA,KAAAP,GAAAO,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAO,GAAAP,EAAA,KAAAS,KAAAA,IAAAT,EAAA,IAnBoBzB,EAKnBkC,EAgBKK;GAGIC,KAAgBC,GAAAvB,MAAA;CAAA,IAAAO,IAAAC,EAAA,EAAA,EAY3BC,IAAqBT,GAAKU,WAAL,IAGVJ,IAAAiB,GAAKC,SAIHb,IAAAF,KAAA,CAAiB,CAACc,GAAKE,SAASb;CAAA,AAAAL,EAAA,OAAAgB,GAAAE,UACsBb,IAAAL,EAAA,MAAvDK,KAAAc,MAAUA,EAAKH,GAAKE,QAAqBE,aAAE,GAAYpB,EAAA,KAAAgB,GAAAE,SAAAlB,EAAA,KAAAK;CAAA,IAAAC;CAAA,AAAAN,EAAA,OAAAP,KAAAO,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAH1DC,IAAA;EAAA,GACFb;EAAKU,SACCC;EAAgCiB,QACjChB;EACT,EAAAL,EAAA,KAAAP,GAAAO,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAAA,IAAAO;CACA,OADAP,EAAA,OAAAD,KAAAC,EAAA,OAAAM,KAPgCC,IAAA;EAAAhB,SACxBQ;EAAcP,wBACC;EAAIC,OACrBa;EAKR,EAAAN,EAAA,KAAAD,GAAAC,EAAA,KAAAM,GAAAN,EAAA,KAAAO,KAAAA,IAAAP,EAAA,IARmBF,EAAeS,EAU5Be;GAGIC,KAAsB9B,MAY1BsB,EADa1B,GACCmC,EAAa/B,EAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAllTokensWithFilter.js","names":["createSortWithClosestMatch","filterTokens","useAllTokens","Token","TokenMaybeWithUsdBalance","useAtomValue","useMemo","useNativeToken","useAttachTokenBalanceMultichain","SupportedChainId","useChainId","useTokensFromAcross","emptyArray","isAddress","allTokensByChainAtom","BridgeInfoMode","useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","intent","t2","undefined","appChainId","allTokens","nativeToken","t3","concat","allIncludedTokens","filteredTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","searchOnAllChains","length","t4","t5","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t6","bb0","t7","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t8","t9","attachTokenBalance","trimmedTokenFilter","sorter","sort","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","AllTokensFromChainsInput","excludeChains","Record","listByChainId","tokensListsByChain","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","mode","crossTokens","_temp3"],"sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { createSortWithClosestMatch } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n intent = \"fetch\",\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n intent?: \"fetch\" | \"prefetch\";\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n (isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound) || // if it's a token address, always search on other chains, if allowed\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n intent,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n return filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sorter);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n intent: \"prefetch\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n mode,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n const filteredTokens = filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: crossTokens,\n });\n return filteredTokens.map(attachTokenBalance).sort(sorter);\n }, [attachTokenBalance, crossTokens, tokenFilter]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useAllTokensWithFilter.js","names":["createSortWithClosestMatch","filterTokens","useAllTokens","Token","TokenMaybeWithUsdBalance","useAtomValue","useMemo","useNativeToken","useAttachTokenBalanceMultichain","SupportedChainId","useChainId","useTokensFromAcross","emptyArray","isAddress","allTokensByChainAtom","BridgeInfoMode","useAllTokensWithFilter","t0","$","_c","tokenFilter","forcedChainId","searchOnOtherChainsIfNothingFound","withETH","t1","intent","t2","undefined","appChainId","allTokens","nativeToken","t3","concat","allIncludedTokens","filteredTokens","filterString","trim","tokenArray","isTokenFilterValidAddress","searchOnAllChains","length","t4","t5","includeChains","tokens","tokensFromAllChains","addressMap","tokensFromAllChainsMap","useAllTokensFromChains","t6","bb0","t7","tokensToDisplay","addressesMap","currentChainId","map","_temp","allTokensWithNativeAddresses","t8","t9","attachTokenBalance","trimmedTokenFilter","sorter","sort","filteredAndSortedTokens","usePrefetchTokenBalances","Symbol","for","AllTokensFromChainsInput","excludeChains","Record","listByChainId","tokensListsByChain","_chainId","_tokens","Object","entries","chainId","Number","includes","push","token","address","useAcrossTokenLists","fromChainId","toChainId","mode","crossTokens","_temp3"],"sources":["../../../src/hooks/tokens/useAllTokensWithFilter.ts"],"sourcesContent":["import { createSortWithClosestMatch } from \"@/tokens/utils/sorting\";\nimport { filterTokens } from \"@/tokens/utils/filtering\";\nimport { useAllTokens } from \"@/tokens/hooks\";\nimport type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\nimport { useAtomValue } from \"@/core/store\";\nimport { useMemo } from \"react\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { useAttachTokenBalanceMultichain } from \"./balances/useAttachTokenBalanceMultichain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { useTokensFromAcross } from \"./useTokensFromAcross\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { isAddress } from \"viem\";\nimport { allTokensByChainAtom } from \"@/tokens/state/allTokensByChainAtom\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport const useAllTokensWithFilter = ({\n tokenFilter,\n forcedChainId,\n searchOnOtherChainsIfNothingFound,\n withETH = true,\n intent = \"fetch\",\n}: {\n tokenFilter: string;\n forcedChainId?: SupportedChainId;\n searchOnOtherChainsIfNothingFound?: boolean;\n withETH?: boolean;\n intent?: \"fetch\" | \"prefetch\";\n}): TokenMaybeWithUsdBalance[] => {\n const appChainId = useChainId();\n\n const allTokens = useAllTokens(forcedChainId);\n const nativeToken = useNativeToken(forcedChainId);\n\n const allIncludedTokens = withETH\n ? [nativeToken].concat(allTokens)\n : allTokens;\n\n const filteredTokens = useMemo(() => {\n return filterTokens({\n filterString: tokenFilter.trim(),\n tokenArray: allIncludedTokens,\n });\n }, [tokenFilter, allIncludedTokens]);\n\n const isTokenFilterValidAddress = isAddress(tokenFilter);\n const searchOnAllChains =\n (isTokenFilterValidAddress && searchOnOtherChainsIfNothingFound) || // if it's a token address, always search on other chains, if allowed\n // -- we want to show this token on all chains.\n (filteredTokens.length === 0 &&\n // not already found tokens on current chain &&\n // filter given, and explicitly asked to search other chains\n !!tokenFilter &&\n searchOnOtherChainsIfNothingFound);\n\n const { tokens: tokensFromAllChains, addressMap: tokensFromAllChainsMap } =\n useAllTokensFromChains({\n // no need to exclude any chains, we actually want to search on all chains in this scenario\n // excludeChains: forcedChainId ? [forcedChainId] : [appChainId],\n includeChains: !searchOnAllChains ? emptyArray : undefined,\n });\n\n const { addressesMap, tokensToDisplay } = useMemo(() => {\n if (searchOnAllChains)\n return {\n tokensToDisplay: tokensFromAllChains,\n addressesMap: tokensFromAllChainsMap,\n };\n\n const currentChainId = forcedChainId ?? appChainId;\n const allTokensWithNativeAddresses = allIncludedTokens.map(\n ({ address }) => address\n );\n\n return {\n tokensToDisplay: allIncludedTokens,\n addressesMap: {\n [currentChainId]: allTokensWithNativeAddresses,\n },\n };\n }, [\n appChainId,\n forcedChainId,\n searchOnAllChains,\n tokensFromAllChains,\n tokensFromAllChainsMap,\n allIncludedTokens,\n ]);\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap,\n intent,\n });\n\n const filteredAndSortedTokens = useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n return filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: tokensToDisplay,\n })\n .map(attachTokenBalance)\n .sort(sorter);\n }, [attachTokenBalance, tokenFilter, tokensToDisplay]);\n\n return filteredAndSortedTokens;\n};\n\nexport const usePrefetchTokenBalances = () => {\n // will fetch balances for all tokens from tokenLists for current chain,\n // if necessary, can be made to fetch for all chains, but that may be too many requests\n useAllTokensWithFilter({\n tokenFilter: \"\",\n intent: \"prefetch\",\n });\n};\n\ntype AllTokensFromChainsInput = {\n includeChains?: number[];\n excludeChains?: number[];\n};\n\n/**\n * @description\n * Returns tokens and token address maps from all chains, optionally filtered by include/exclude chains.\n * If no chains are specified, it will return all tokens from all chains.\n * If includeChains is specified, it will only return tokens from those chains.\n * If excludeChains is specified, it will exclude tokens from those chains.\n */\nexport function useAllTokensFromChains({\n includeChains,\n excludeChains,\n}: AllTokensFromChainsInput): {\n tokens: Token[];\n addressMap: Record<number, string[]>;\n} {\n const { listByChainId: tokensListsByChain } =\n useAtomValue(allTokensByChainAtom);\n\n return useMemo(() => {\n const tokens: Token[] = [];\n const addressMap: Record<number, string[]> = {};\n\n for (const [_chainId, { tokens: _tokens }] of Object.entries(\n tokensListsByChain\n )) {\n const chainId = Number(_chainId);\n if (includeChains && !includeChains.includes(chainId)) continue;\n if (excludeChains && excludeChains.includes(chainId)) continue;\n\n tokens.push(..._tokens);\n addressMap[chainId] = _tokens.map((token) => token.address);\n }\n\n return { tokens, addressMap };\n }, [tokensListsByChain, includeChains, excludeChains]);\n}\n\nexport function useAcrossTokenLists({\n tokenFilter,\n fromChainId,\n toChainId,\n mode,\n}: {\n tokenFilter: string;\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}) {\n const { crossTokens } = useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n });\n\n const attachTokenBalance = useAttachTokenBalanceMultichain({\n addressesMap: {\n [toChainId]: crossTokens.map((token) => token.address),\n },\n });\n\n return useMemo<TokenMaybeWithUsdBalance[]>(() => {\n const trimmedTokenFilter = tokenFilter.trim();\n\n const sorter = createSortWithClosestMatch(trimmedTokenFilter);\n const filteredTokens = filterTokens({\n filterString: trimmedTokenFilter,\n tokenArray: crossTokens,\n });\n return filteredTokens.map(attachTokenBalance).sort(sorter);\n }, [attachTokenBalance, crossTokens, tokenFilter]);\n}\n"],"mappings":";;;;;;;;;;;;;;AAgBA,IAAagB,KAAyBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAC,EAAAC,gBAAAC,kBAAAC,sCAAAC,SAAAC,GAAAC,QAAAC,MAAAT,GAIrCM,IAAAC,MAAAG,KAAAA,IAAA,KAAAH,GACAC,IAAAC,MAAAC,KAAAA,IAAA,UAAAD,GAQAE,IAAmBlB,GAAY,EAE/BmB,IAAkB3B,EAAamB,EAAc,EAC7CS,IAAoBvB,EAAec,EAAc,EAACU;CAAA,AAAAb,EAAA,OAAAW,KAAAX,EAAA,OAAAY,KAAAZ,EAAA,OAAAK,KAExBQ,IAAAR,IACtB,CAACO,EAAY,CAAAE,OAAQH,EACZ,GAFaA,GAEbX,EAAA,KAAAW,GAAAX,EAAA,KAAAY,GAAAZ,EAAA,KAAAK,GAAAL,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CAFb,IAAAe,IAA0BF,GAI1BG,IACSjC,EAAa;EAAAkC,cACJf,EAAWgB,MAAO;EAAAC,YACpBJ;EACZ,CAAC,EAILM,IADkC1B,EAAUO,EAEzCkB,IAAAhB,KAEAY,EAAcM,WAAY,KAA1B,CAGE,CAACpB,KAHHE,GAUgBmB,IAACF,IAADZ,KAAAA,IAAAf,GAA2C8B;CAAA,AAAAxB,EAAA,OAAAuB,IAC3DC,IAAAxB,EAAA,MAJsBwB,IAAA,EAAAC,eAGNF,GAChB,EAAAvB,EAAA,KAAAuB,GAAAvB,EAAA,KAAAwB;CALH,IAAA,EAAAE,QAAAC,GAAAC,YAAAC,MACEC,EAAuBN,EAIrB,EAACO;CAAAC,KAAA;EAGH,IAAIX,GAAiB;GAAA,IAAAY;GACnBF,AADmB/B,EAAA,OAAA2B,KAAA3B,EAAA,OAAA6B,KACZI,IAAA;IAAAC,iBACYP;IAAmBQ,cACtBN;IACf,EAAA7B,EAAA,KAAA2B,GAAA3B,EAAA,KAAA6B,GAAA7B,EAAA,KAAAiC,KAAAA,IAAAjC,EAAA,IAHD+B,IAAOE;GAAP,MAAAD;;EAKF,IAAAI,IAAuBjC,KAAAO,GAA4BuB;EAAA,AAAAjC,EAAA,OAAAe,IAGlDkB,IAAAjC,EAAA,OAFoCiC,IAAAlB,EAAiBsB,IACpDC,EACD,EAAAtC,EAAA,KAAAe,GAAAf,EAAA,MAAAiC;EAFD,IAAAM,IAAqCN,GAEnCO;EAAA,AAAAxC,EAAA,QAAAuC,KAAAvC,EAAA,QAAAoC,KAIcI,IAAA,GACXJ,IAAiBG,GACnB,EAAAvC,EAAA,MAAAuC,GAAAvC,EAAA,MAAAoC,GAAApC,EAAA,MAAAwC,KAAAA,IAAAxC,EAAA;EAAA,IAAAyC;EAJHV,AAIG/B,EAAA,QAAAe,KAAAf,EAAA,QAAAwC,KAJIC,IAAA;GAAAP,iBACYnB;GAAiBoB,cACpBK;GAGf,EAAAxC,EAAA,MAAAe,GAAAf,EAAA,MAAAwC,GAAAxC,EAAA,MAAAyC,KAAAA,IAAAzC,EAAA,KALD+B,IAAOU;;CAZT,IAAA,EAAAN,iBAAAD,uBAA0CH,GAyBvCE;CAAA,AAAAjC,EAAA,QAAAmC,KAAAnC,EAAA,QAAAO,KAEwD0B,IAAA;EAAAE;EAAA5B;EAG1D,EAAAP,EAAA,MAAAmC,GAAAnC,EAAA,MAAAO,GAAAP,EAAA,MAAAiC,KAAAA,IAAAjC,EAAA;CAHD,IAAA0C,IAA2BpD,EAAgC2C,EAGzD,EAACO;CAAA,IAAAxC,EAAA,QAAA0C,KAAA1C,EAAA,QAAAE,KAAAF,EAAA,QAAAkC,GAAA;EAGD,IAAAS,IAA2BzC,EAAWgB,MAAO,EAE7C0B,IAAe9D,EAA2B6D,EAAmB;EAM9C3C,AALRwC,IAAAzD,EAAa;GAAAkC,cACJ0B;GAAkBxB,YACpBe;GACb,CAAC,CAAAG,IACKK,EAAmB,CAAAG,KAClBD,EAAO,EAAA5C,EAAA,MAAA0C,GAAA1C,EAAA,MAAAE,GAAAF,EAAA,MAAAkC,GAAAlC,EAAA,MAAAwC;QAAAA,IAAAxC,EAAA;CACsC,OAEhD8C;GAGIC,UAA2B;CAAA,IAAA/C,IAAAC,EAAA,EAAA,EAAAF;CAGtCD,AAHsCE,EAAA,OAAAgD,OAAAC,IAAA,4BAAA,IAGflD,IAAA;EAAAG,aACR;EAAEK,QACP;EACT,EAAAP,EAAA,KAAAD,KAAAA,IAAAC,EAAA,IAHDF,EAAuBC,EAGrB;;AAeJ,SAAgB+B,EAAuB,EACrCL,kBACA0B,oBAIA;CACA,IAAM,EAAEE,eAAeC,MACrBnE,EAAaS,EAAqB;CAEpC,OAAOR,QAAc;EACnB,IAAMsC,IAAkB,EAAE,EACpBE,IAAuC,EAAE;EAE/C,KAAK,IAAM,CAAC2B,GAAU,EAAE7B,QAAQ8B,QAAcC,OAAOC,QACnDJ,EACD,EAAE;GACD,IAAMK,IAAUC,OAAOL,EAAS;GAC5B9B,KAAiB,CAACA,EAAcoC,SAASF,EAAQ,IACjDR,KAAiBA,EAAcU,SAASF,EAAQ,KAEpDjC,EAAOoC,KAAK,GAAGN,EAAQ,EACvB5B,EAAW+B,KAAWH,EAAQnB,KAAK0B,MAAUA,EAAMC,QAAQ;;EAG7D,OAAO;GAAEtC;GAAQE;GAAY;IAC5B;EAAC0B;EAAoB7B;EAAe0B;EAAc,CAAC;;AAGxD,SAAOc,EAAAlE,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAgE,gBAAAC,cAAAC,YAAArE,GAUnCO;CAAA,AAAAN,EAAA,OAAAkE,KAAAlE,EAAA,OAAAoE,KAAApE,EAAA,OAAAmE,KAC6C7D,IAAA;EAAA4D;EAAAC;EAAAC;EAI3C,EAAApE,EAAA,KAAAkE,GAAAlE,EAAA,KAAAoE,GAAApE,EAAA,KAAAmE,GAAAnE,EAAA,KAAAM,KAAAA,IAAAN,EAAA;CAJD,IAAA,EAAAqE,mBAAwB5E,EAAoBa,EAI1C,EAACE;CAAA,AAAAR,EAAA,OAAAqE,IAIuD7D,IAAAR,EAAA,MAAzCQ,IAAA6D,EAAWhC,IAAKiC,EAAyB,EAAAtE,EAAA,KAAAqE,GAAArE,EAAA,KAAAQ;CAAA,IAAAK;CAAA,AAAAb,EAAA,OAAAQ,KAAAR,EAAA,OAAAmE,KAFCtD,IAAA,EAAAsB,cAC3C,GACXgC,IAAY3D,GACf,EACD,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAmE,GAAAnE,EAAA,KAAAa,KAAAA,IAAAb,EAAA;CAJD,IAAA0C,IAA2BpD,EAAgCuB,EAIzD,EAACU;CAAA,IAAAvB,EAAA,OAAA0C,KAAA1C,EAAA,QAAAqE,KAAArE,EAAA,QAAAE,GAAA;EAGD,IAAAyC,IAA2BzC,EAAWgB,MAAO,EAE7C0B,IAAe9D,EAA2B6D,EAAmB;EAKH3C,AAAnDuB,IAJgBxC,EAAa;GAAAkC,cACpB0B;GAAkBxB,YACpBkD;GACb,CACMrD,CAAcqB,IAAKK,EAAmB,CAAAG,KAAMD,EAAO,EAAA5C,EAAA,KAAA0C,GAAA1C,EAAA,MAAAqE,GAAArE,EAAA,MAAAE,GAAAF,EAAA,MAAAuB;QAAAA,IAAAvB,EAAA;CAAA,OAA1DuB;;AA/BG,SAAA+C,EAAAP,GAAA;CAAA,OAmBuCA,EAAKC;;AAlKb,SAAA1B,EAAAvC,GAAA;CAuD/B,IAAA,EAAAiE,eAAAjE;CAAW,OAAKiE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useNativeToken.js","names":["Token","useCurrentChainConfig","SupportedChainId","useChainId","constructNativeToken","constructWrappedNativeToken","useNativeToken","forcedChainId","$","_c","currentChainId","chainId","config","t0","useWrappedNativeToken"],"sources":["../../../src/hooks/tokens/useNativeToken.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { useCurrentChainConfig } from \"../useCurrentChain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport {\n constructNativeToken,\n constructWrappedNativeToken,\n} from \"@/tokens/constructor\";\n\nexport const useNativeToken = (forcedChainId?: SupportedChainId): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructNativeToken(config);\n};\n\nexport const useWrappedNativeToken = (\n forcedChainId?: SupportedChainId\n): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructWrappedNativeToken(config);\n};\n"],"mappings":";;;;;AASA,IAAaM,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAC5BC,IAAuBP,GAAY,EAEnCS,IAAeX,EADCM,KAAAG,EAC6B,EAACG;AAEX,QAFWL,EAAA,OAAAI,IAEXC,IAAAL,EAAA,MAA5BK,IAAAT,EAAqBQ,EAAO,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,IAA5BA;GAGIC,KAAwBP,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGnCC,IAAuBP,GAAY,EAEnCS,IAAeX,EADCM,KAAAG,EAC6B,EAACG;AAEJ,QAFIL,EAAA,OAAAI,IAEJC,IAAAL,EAAA,MAAnCK,IAAAR,EAA4BO,EAAO,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,IAAnCA"}
1
+ {"version":3,"file":"useNativeToken.js","names":["Token","useCurrentChainConfig","SupportedChainId","useChainId","constructNativeToken","constructWrappedNativeToken","useNativeToken","forcedChainId","$","_c","currentChainId","chainId","config","t0","useWrappedNativeToken"],"sources":["../../../src/hooks/tokens/useNativeToken.ts"],"sourcesContent":["import type { Token } from \"@/tokens/state/types\";\nimport { useCurrentChainConfig } from \"../useCurrentChain\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport {\n constructNativeToken,\n constructWrappedNativeToken,\n} from \"@/tokens/constructor\";\n\nexport const useNativeToken = (forcedChainId?: SupportedChainId): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructNativeToken(config);\n};\n\nexport const useWrappedNativeToken = (\n forcedChainId?: SupportedChainId\n): Token => {\n const currentChainId = useChainId();\n const chainId = forcedChainId ?? currentChainId;\n const config = useCurrentChainConfig(chainId);\n\n return constructWrappedNativeToken(config);\n};\n"],"mappings":";;;;;AASA,IAAaM,KAAiBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAC5BC,IAAuBP,GAAY,EAEnCS,IAAeX,EADCM,KAAAG,EAC6B,EAACG;CAEX,OAFWL,EAAA,OAAAI,IAEXC,IAAAL,EAAA,MAA5BK,IAAAT,EAAqBQ,EAAO,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,IAA5BA;GAGIC,KAAwBP,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAGnCC,IAAuBP,GAAY,EAEnCS,IAAeX,EADCM,KAAAG,EAC6B,EAACG;CAEJ,OAFIL,EAAA,OAAAI,IAEJC,IAAAL,EAAA,MAAnCK,IAAAR,EAA4BO,EAAO,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,IAAnCA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenTaxFee.js","names":["LONG_STALE_TIME_FOR_REACTIVENESS","getApiURL","useQuery","UseQueryResult","axios","assert","UseTokenTaxFeeInput","tokenAddress","chainId","TokenTaxFeeResponse","sellTax","buyTax","useTokenTaxFee","t0","$","_c","t1","toLowerCase","t2","t3","data","get","t4","t5","queryKey","queryFn","staleTime","enabled"],"sources":["../../../src/hooks/tokens/useTokenTaxFee.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { getApiURL } from \"@/lib/constants/urls\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { assert } from \"ts-essentials\";\n\ntype UseTokenTaxFeeInput = {\n tokenAddress?: string;\n chainId?: number;\n};\n\ntype TokenTaxFeeResponse = {\n // empty object when not a tax Token\n sellTax?: number; // used as srcTokenDexTransferFee in GET /prices\n buyTax?: number; // used as destTokenDexTransferFee in GET /prices\n // for Delta no support for tax Tokens so far\n};\n\nexport function useTokenTaxFee({\n tokenAddress,\n chainId,\n}: UseTokenTaxFeeInput): UseQueryResult<TokenTaxFeeResponse, Error> {\n return useQuery<\n TokenTaxFeeResponse,\n Error,\n TokenTaxFeeResponse,\n [\"token-tax-fee\", string?, number?]\n >({\n queryKey: [\"token-tax-fee\", tokenAddress?.toLowerCase(), chainId],\n queryFn: async () => {\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const { data } = await axios.get<TokenTaxFeeResponse>(\n `${getApiURL()}/delta/tokens/${chainId}/${tokenAddress}`\n );\n return data;\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n enabled: !!tokenAddress && !!chainId,\n });\n}\n"],"mappings":";;;;;;;AAkBA,SAAOY,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAwB,EAAAR,iBAAAC,eAAAK,GAGTG;AAAA,CAAAF,EAAA,OAAAP,IAOqCS,IAAAF,EAAA,MAA3BE,IAAAT,GAAYU,aAAe,EAAAH,EAAA,KAAAP,GAAAO,EAAA,KAAAE;CAAA,IAAAE;AAAA,CAAAJ,EAAA,OAAAN,KAAAM,EAAA,OAAAE,KAA7CE,IAAA;EAAC;EAAiBF;EAA6BR;EAAQ,EAAAM,EAAA,KAAAN,GAAAM,EAAA,KAAAE,GAAAF,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAK;AAAA,CAAAL,EAAA,OAAAN,KAAAM,EAAA,OAAAP,KACxDY,IAAA,YAAA;AAEPd,EADAA,EAAOE,GAAc,2BAA2B,EAChDF,EAAOG,GAAS,sBAAsB;EAEtC,IAAA,EAAAY,YAAiB,MAAMhB,EAAKiB,IAC1B,GAAGpB,GAAW,CAAA,gBAAiBO,EAAO,GAAID,IAC3C;AAAC,SACKa;IACRN,EAAA,KAAAN,GAAAM,EAAA,KAAAP,GAAAO,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAEQ,IAAAQ,IAAA,CAAC,CAACf,KAAF,CAAmB,CAACC,GAAOe;AACrC,QADqCT,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAAAL,EAAA,QAAAQ,KAZpCC,IAAA;EAAAC,UACUN;EAAuDO,SACxDN;EAQRO,WACU1B;EAAgC2B,SAClCL;EACV,EAAAR,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,MAAAQ,GAAAR,EAAA,MAAAS,KAAAA,IAAAT,EAAA,KAlBMZ,EAKLqB,EAaA"}
1
+ {"version":3,"file":"useTokenTaxFee.js","names":["LONG_STALE_TIME_FOR_REACTIVENESS","getApiURL","useQuery","UseQueryResult","axios","assert","UseTokenTaxFeeInput","tokenAddress","chainId","TokenTaxFeeResponse","sellTax","buyTax","useTokenTaxFee","t0","$","_c","t1","toLowerCase","t2","t3","data","get","t4","t5","queryKey","queryFn","staleTime","enabled"],"sources":["../../../src/hooks/tokens/useTokenTaxFee.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { getApiURL } from \"@/lib/constants/urls\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport axios from \"axios\";\nimport { assert } from \"ts-essentials\";\n\ntype UseTokenTaxFeeInput = {\n tokenAddress?: string;\n chainId?: number;\n};\n\ntype TokenTaxFeeResponse = {\n // empty object when not a tax Token\n sellTax?: number; // used as srcTokenDexTransferFee in GET /prices\n buyTax?: number; // used as destTokenDexTransferFee in GET /prices\n // for Delta no support for tax Tokens so far\n};\n\nexport function useTokenTaxFee({\n tokenAddress,\n chainId,\n}: UseTokenTaxFeeInput): UseQueryResult<TokenTaxFeeResponse, Error> {\n return useQuery<\n TokenTaxFeeResponse,\n Error,\n TokenTaxFeeResponse,\n [\"token-tax-fee\", string?, number?]\n >({\n queryKey: [\"token-tax-fee\", tokenAddress?.toLowerCase(), chainId],\n queryFn: async () => {\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const { data } = await axios.get<TokenTaxFeeResponse>(\n `${getApiURL()}/delta/tokens/${chainId}/${tokenAddress}`\n );\n return data;\n },\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n enabled: !!tokenAddress && !!chainId,\n });\n}\n"],"mappings":";;;;;;;AAkBA,SAAOY,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAwB,EAAAR,iBAAAC,eAAAK,GAGTG;CAAA,AAAAF,EAAA,OAAAP,IAOqCS,IAAAF,EAAA,MAA3BE,IAAAT,GAAYU,aAAe,EAAAH,EAAA,KAAAP,GAAAO,EAAA,KAAAE;CAAA,IAAAE;CAAA,AAAAJ,EAAA,OAAAN,KAAAM,EAAA,OAAAE,KAA7CE,IAAA;EAAC;EAAiBF;EAA6BR;EAAQ,EAAAM,EAAA,KAAAN,GAAAM,EAAA,KAAAE,GAAAF,EAAA,KAAAI,KAAAA,IAAAJ,EAAA;CAAA,IAAAK;CAAA,AAAAL,EAAA,OAAAN,KAAAM,EAAA,OAAAP,KACxDY,IAAA,YAAA;EAEPd,AADAA,EAAOE,GAAc,2BAA2B,EAChDF,EAAOG,GAAS,sBAAsB;EAEtC,IAAA,EAAAY,YAAiB,MAAMhB,EAAKiB,IAC1B,GAAGpB,GAAW,CAAA,gBAAiBO,EAAO,GAAID,IAC3C;EAAC,OACKa;IACRN,EAAA,KAAAN,GAAAM,EAAA,KAAAP,GAAAO,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAEQ,IAAAQ,IAAA,CAAC,CAACf,KAAF,CAAmB,CAACC,GAAOe;CACrC,OADqCT,EAAA,OAAAI,KAAAJ,EAAA,OAAAK,KAAAL,EAAA,QAAAQ,KAZpCC,IAAA;EAAAC,UACUN;EAAuDO,SACxDN;EAQRO,WACU1B;EAAgC2B,SAClCL;EACV,EAAAR,EAAA,KAAAI,GAAAJ,EAAA,KAAAK,GAAAL,EAAA,MAAAQ,GAAAR,EAAA,MAAAS,KAAAA,IAAAT,EAAA,KAlBMZ,EAKLqB,EAaA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokensByAddress.js","names":["gatherObjectsByProp","SupportedChainId","useAllTokensMap","useTokensFromListsAllChains","Address","TokenChainKey","AllChainsTokenMap","Token","useNativeToken","nativeTokensAllChains","useTokensByAddress","forcedNetworkId","Record","allTokensMap","nativeToken","tokensMapWithNative","address","toLowerCase","useTokensByAddressAllChains","$","_c","tokensFromLists","t0","tokensFromListsWithNative","concat","prepTokenKey","token","Pick","Lowercase","network"],"sources":["../../../src/hooks/tokens/useTokensByAddress.ts"],"sourcesContent":["import { gatherObjectsByProp } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAllTokensMap, useTokensFromListsAllChains } from \"@/tokens/hooks\";\nimport type { Address } from \"viem\";\nimport type { TokenChainKey, AllChainsTokenMap } from \"./types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { nativeTokensAllChains } from \"@/tokens/constructor\";\n\n// mapping of {lowercaseAddress => Token} for all\nexport const useTokensByAddress = (\n forcedNetworkId?: SupportedChainId\n): Record<string, Token> => {\n const allTokensMap = useAllTokensMap(forcedNetworkId);\n const nativeToken = useNativeToken(forcedNetworkId);\n\n const tokensMapWithNative = {\n ...allTokensMap,\n [nativeToken.address.toLowerCase()]: nativeToken,\n };\n\n return tokensMapWithNative;\n};\n\n// mapping of {lowercaseAddress_chainId => Token} for all\nexport const useTokensByAddressAllChains = (): AllChainsTokenMap => {\n const tokensFromLists = useTokensFromListsAllChains();\n\n const tokensFromListsWithNative =\n nativeTokensAllChains.concat(tokensFromLists);\n\n return gatherObjectsByProp(tokensFromListsWithNative, prepTokenKey);\n};\n\nexport function prepTokenKey(\n token: Pick<Token, \"address\" | \"network\">\n): TokenChainKey {\n return `${token.address.toLowerCase() as Lowercase<Address>}_${token.network}`;\n}\n"],"mappings":";;;;;;AAUA,IAAaU,KACXC,MAC0B;CAC1B,IAAME,IAAeX,EAAgBS,EAAgB,EAC/CG,IAAcN,EAAeG,EAAgB;AAOnD,QAL4B;EAC1B,GAAGE;GACFC,EAAYE,QAAQC,aAAa,GAAGH;EACtC;GAMUI,UAA8B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACzCC,IAAwBlB,GAA6B,EAACmB;AAKa,QALbH,EAAA,OAAAE,IAKaC,IAAAH,EAAA,MAA5DG,IAAAtB,EAFLS,EAAqBe,OAAQH,EAAgB,EAEOI,EAAa,EAAAN,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAA5DA;;AAGT,SAAgBG,EACdC,GACe;AACf,QAAO,GAAGA,EAAMV,QAAQC,aAAa,CAAsB,GAAIS,EAAMG"}
1
+ {"version":3,"file":"useTokensByAddress.js","names":["gatherObjectsByProp","SupportedChainId","useAllTokensMap","useTokensFromListsAllChains","Address","TokenChainKey","AllChainsTokenMap","Token","useNativeToken","nativeTokensAllChains","useTokensByAddress","forcedNetworkId","Record","allTokensMap","nativeToken","tokensMapWithNative","address","toLowerCase","useTokensByAddressAllChains","$","_c","tokensFromLists","t0","tokensFromListsWithNative","concat","prepTokenKey","token","Pick","Lowercase","network"],"sources":["../../../src/hooks/tokens/useTokensByAddress.ts"],"sourcesContent":["import { gatherObjectsByProp } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useAllTokensMap, useTokensFromListsAllChains } from \"@/tokens/hooks\";\nimport type { Address } from \"viem\";\nimport type { TokenChainKey, AllChainsTokenMap } from \"./types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useNativeToken } from \"./useNativeToken\";\nimport { nativeTokensAllChains } from \"@/tokens/constructor\";\n\n// mapping of {lowercaseAddress => Token} for all\nexport const useTokensByAddress = (\n forcedNetworkId?: SupportedChainId\n): Record<string, Token> => {\n const allTokensMap = useAllTokensMap(forcedNetworkId);\n const nativeToken = useNativeToken(forcedNetworkId);\n\n const tokensMapWithNative = {\n ...allTokensMap,\n [nativeToken.address.toLowerCase()]: nativeToken,\n };\n\n return tokensMapWithNative;\n};\n\n// mapping of {lowercaseAddress_chainId => Token} for all\nexport const useTokensByAddressAllChains = (): AllChainsTokenMap => {\n const tokensFromLists = useTokensFromListsAllChains();\n\n const tokensFromListsWithNative =\n nativeTokensAllChains.concat(tokensFromLists);\n\n return gatherObjectsByProp(tokensFromListsWithNative, prepTokenKey);\n};\n\nexport function prepTokenKey(\n token: Pick<Token, \"address\" | \"network\">\n): TokenChainKey {\n return `${token.address.toLowerCase() as Lowercase<Address>}_${token.network}`;\n}\n"],"mappings":";;;;;;AAUA,IAAaU,KACXC,MAC0B;CAC1B,IAAME,IAAeX,EAAgBS,EAAgB,EAC/CG,IAAcN,EAAeG,EAAgB;CAOnD,OAAOI;EAJL,GAAGF;GACFC,EAAYE,QAAQC,aAAa,GAAGH;EAGhCC;GAIIG,UAA8B;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACzCC,IAAwBlB,GAA6B,EAACmB;CAKa,OALbH,EAAA,OAAAE,IAKaC,IAAAH,EAAA,MAA5DG,IAAAtB,EAFLS,EAAqBe,OAAQH,EAEJE,EAA2BE,EAAa,EAAAN,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAA5DA;;AAGT,SAAgBG,EACdC,GACe;CACf,OAAO,GAAGA,EAAMV,QAAQC,aAAa,CAAsB,GAAIS,EAAMG"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeInfo","useTokensByAddress","emptyArray","BridgeInfoMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeInfo","error","acrossTokenAddresses","tokensMap","t2","t3","tokenAddress","toLowerCase","map","filter","tokensFromAcross","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeInfo } from \"../useBridgeInfo\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeInfo, error } = useGetBridgeInfo({ mode });\n\n const acrossTokenAddresses =\n bridgeInfo?.[fromChainId]?.[toChainId] ?? emptyArray;\n\n const tokensMap = useTokensByAddress(toChainId);\n\n const tokensFromAcross = acrossTokenAddresses\n .map((tokenAddress) => tokensMap[tokenAddress.toLowerCase()])\n .filter(isTruthy);\n\n return { crossTokens: tokensFromAcross, error };\n}\n"],"mappings":";;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAC,cAAAC,YAAAL,GAQnCM;AAAA,CAAAL,EAAA,OAAAI,IAC8DC,IAAAL,EAAA,MAARK,IAAA,EAAAD,SAAQ,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAA7D,IAAA,EAAAC,MAAAC,GAAAC,aAAoCd,EAAiBW,EAAS,EAE9DI,IACEF,IAAaL,KAAeC,MAA5BP,GAEFc,IAAkBf,EAAmBQ,EAAU,EAACQ;AAAA,KAAAX,EAAA,OAAAS,KAAAT,EAAA,OAAAU,GAAA;EAAA,IAAAE;AAI7BZ,EAJ6BA,EAAA,OAAAU,IAGcE,IAAAZ,EAAA,MAAvDY,KAAAC,MAAkBH,EAAUG,EAAYC,aAAc,GAACd,EAAA,KAAAU,GAAAV,EAAA,KAAAY,IADrCD,IAAAF,EAAoBM,IACtCH,EAAwD,CAAAI,OACrDzB,EAAS,EAAAS,EAAA,KAAAS,GAAAT,EAAA,KAAAU,GAAAV,EAAA,KAAAW;OAAAA,KAAAX,EAAA;CAFnB,IAAAiB,IAAyBN,GAELC;AAE2B,QAF3BZ,EAAA,OAAAQ,KAAAR,EAAA,OAAAiB,KAEbL,IAAA;EAAAM,aAAeD;EAAgBT;EAAS,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAiB,GAAAjB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAAxCY"}
1
+ {"version":3,"file":"useTokensFromAcross.js","names":["isTruthy","SupportedChainId","Token","useGetBridgeInfo","useTokensByAddress","emptyArray","BridgeInfoMode","useTokensFromAcross","t0","$","_c","fromChainId","toChainId","mode","t1","data","bridgeInfo","error","acrossTokenAddresses","tokensMap","t2","t3","tokenAddress","toLowerCase","map","filter","tokensFromAcross","crossTokens"],"sources":["../../../src/hooks/tokens/useTokensFromAcross.ts"],"sourcesContent":["import { isTruthy } from \"@/lib/utils\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetBridgeInfo } from \"../useBridgeInfo\";\nimport { useTokensByAddress } from \"./useTokensByAddress\";\nimport { emptyArray } from \"@/lib/constants\";\nimport type { BridgeInfoMode } from \"../swap/prices/delta/queries/bridgeInfo/types\";\n\nexport function useTokensFromAcross({\n fromChainId,\n toChainId,\n mode,\n}: {\n fromChainId: SupportedChainId;\n toChainId: SupportedChainId;\n mode: BridgeInfoMode;\n}): { crossTokens: Token[]; error: Error | null } {\n const { data: bridgeInfo, error } = useGetBridgeInfo({ mode });\n\n const acrossTokenAddresses =\n bridgeInfo?.[fromChainId]?.[toChainId] ?? emptyArray;\n\n const tokensMap = useTokensByAddress(toChainId);\n\n const tokensFromAcross = acrossTokenAddresses\n .map((tokenAddress) => tokensMap[tokenAddress.toLowerCase()])\n .filter(isTruthy);\n\n return { crossTokens: tokensFromAcross, error };\n}\n"],"mappings":";;;;;;AAQA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAC,gBAAAC,cAAAC,YAAAL,GAQnCM;CAAA,AAAAL,EAAA,OAAAI,IAC8DC,IAAAL,EAAA,MAARK,IAAA,EAAAD,SAAQ,EAAAJ,EAAA,KAAAI,GAAAJ,EAAA,KAAAK;CAA7D,IAAA,EAAAC,MAAAC,GAAAC,aAAoCd,EAAiBW,EAAS,EAE9DI,IACEF,IAAaL,KAAeC,MAA5BP,GAEFc,IAAkBf,EAAmBQ,EAAU,EAACQ;CAAA,IAAAX,EAAA,OAAAS,KAAAT,EAAA,OAAAU,GAAA;EAAA,IAAAE;EAI7BZ,AAJ6BA,EAAA,OAAAU,IAGcE,IAAAZ,EAAA,MAAvDY,KAAAC,MAAkBH,EAAUG,EAAYC,aAAc,GAACd,EAAA,KAAAU,GAAAV,EAAA,KAAAY,IADrCD,IAAAF,EAAoBM,IACtCH,EAAwD,CAAAI,OACrDzB,EAAS,EAAAS,EAAA,KAAAS,GAAAT,EAAA,KAAAU,GAAAV,EAAA,KAAAW;QAAAA,IAAAX,EAAA;CAFnB,IAAAiB,IAAyBN,GAELC;CAE2B,OAF3BZ,EAAA,OAAAQ,KAAAR,EAAA,OAAAiB,KAEbL,IAAA;EAAAM,aAAeD;EAAgBT;EAAS,EAAAR,EAAA,KAAAQ,GAAAR,EAAA,KAAAiB,GAAAjB,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAAxCY"}
@@ -1 +1 @@
1
- {"version":3,"file":"useApprove.js","names":["useWriteContract","erc20Abi","isAddress","Hash","useAccount","assert","AllowanceData","Token","useConstructGasParams","UseApproveInput","token","Pick","spender","allowanceData","onSuccess","hash","onError","error","Error","ApprovalInput","UseApproveResult","approve","params","approveAsync","Promise","isPending","isSuccess","isError","txHash","reset","useApprove","t0","$","_c","t1","undefined","isConnected","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","tokenAddress","address","allowanceToSet","t3","_address","_spender","_allowanceToSet","gasParams","abi","functionName","args","t4","params_0","_address_0","_spender_0","_allowanceToSet_0","gasParams_0","t5"],"sources":["../../../../src/hooks/txs/mutations/useApprove.ts"],"sourcesContent":["import { useWriteContract } from \"wagmi\";\nimport { erc20Abi, isAddress, type Hash } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { AllowanceData } from \"@/hooks/tokens/allowance/types\";\nimport type { Token } from \"@velora-dex/sdk\";\nimport { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\n\nexport type UseApproveInput = {\n token?: Pick<Token, \"address\">;\n spender?: string;\n allowanceData?: Pick<AllowanceData, \"allowanceToSet\">;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type ApprovalInput = Pick<\n UseApproveInput,\n \"token\" | \"spender\" | \"allowanceData\"\n>;\n\nexport type UseApproveResult = {\n approve: (params?: ApprovalInput) => void;\n approveAsync: (params?: ApprovalInput) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n // @TODO reset may be useful for retrying after Tx Confirmation error/user rejection,\n // if the hook remains in sope (Comp not remounted)\n};\n\nexport const useApprove = ({\n token,\n spender,\n allowanceData,\n onSuccess,\n onError,\n}: UseApproveInput = {}): UseApproveResult => {\n const { isConnected } = useAccount();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const tokenAddress = token?.address;\n\n const allowanceToSet = allowanceData?.allowanceToSet;\n\n const approve = (params?: ApprovalInput) => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval\n writeContract({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n const approveAsync = async (params?: ApprovalInput): Promise<Hash> => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval and return the hash\n return writeContractAsync({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n return {\n approve,\n approveAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useApprove.js","names":["useWriteContract","erc20Abi","isAddress","Hash","useAccount","assert","AllowanceData","Token","useConstructGasParams","UseApproveInput","token","Pick","spender","allowanceData","onSuccess","hash","onError","error","Error","ApprovalInput","UseApproveResult","approve","params","approveAsync","Promise","isPending","isSuccess","isError","txHash","reset","useApprove","t0","$","_c","t1","undefined","isConnected","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","tokenAddress","address","allowanceToSet","t3","_address","_spender","_allowanceToSet","gasParams","abi","functionName","args","t4","params_0","_address_0","_spender_0","_allowanceToSet_0","gasParams_0","t5"],"sources":["../../../../src/hooks/txs/mutations/useApprove.ts"],"sourcesContent":["import { useWriteContract } from \"wagmi\";\nimport { erc20Abi, isAddress, type Hash } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { AllowanceData } from \"@/hooks/tokens/allowance/types\";\nimport type { Token } from \"@velora-dex/sdk\";\nimport { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\n\nexport type UseApproveInput = {\n token?: Pick<Token, \"address\">;\n spender?: string;\n allowanceData?: Pick<AllowanceData, \"allowanceToSet\">;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type ApprovalInput = Pick<\n UseApproveInput,\n \"token\" | \"spender\" | \"allowanceData\"\n>;\n\nexport type UseApproveResult = {\n approve: (params?: ApprovalInput) => void;\n approveAsync: (params?: ApprovalInput) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n // @TODO reset may be useful for retrying after Tx Confirmation error/user rejection,\n // if the hook remains in sope (Comp not remounted)\n};\n\nexport const useApprove = ({\n token,\n spender,\n allowanceData,\n onSuccess,\n onError,\n}: UseApproveInput = {}): UseApproveResult => {\n const { isConnected } = useAccount();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const tokenAddress = token?.address;\n\n const allowanceToSet = allowanceData?.allowanceToSet;\n\n const approve = (params?: ApprovalInput) => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval\n writeContract({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n const approveAsync = async (params?: ApprovalInput): Promise<Hash> => {\n const _address = params?.token?.address || tokenAddress;\n const _spender = params?.spender || spender;\n const _allowanceToSet =\n params?.allowanceData?.allowanceToSet || allowanceToSet;\n\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(_address && isAddress(_address), \"Token is required\");\n assert(_spender && isAddress(_spender), \"Spender address is required\");\n assert(_allowanceToSet, \"Amount to approve is required\");\n\n const gasParams = constructViemGasParams();\n\n // Execute approval and return the hash\n return writeContractAsync({\n address: _address,\n abi: erc20Abi,\n functionName: \"approve\",\n args: [_spender, _allowanceToSet],\n ...gasParams,\n });\n };\n\n return {\n approve,\n approveAsync,\n isPending,\n isSuccess,\n isError,\n error,\n txHash,\n reset,\n };\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDepositWeth.js","names":["useConstructGasParams","wrappedNativeCurrency","assert","Hash","useChainId","useWriteContract","UseDepositWethInput","amount","onSuccess","hash","onError","error","Error","UseDepositReturn","deposit","depositAsync","Promise","isPending","isSuccess","isError","txHash","reset","minWethAbi","constant","inputs","name","outputs","payable","stateMutability","type","const","useDepositWeth","t0","$","_c","t1","undefined","chainId","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","wrappedNativeToken","t3","BigInt","value","t4","gasParams","address","abi","functionName","t5","gasParams_0","t6"],"sources":["../../../../src/hooks/txs/mutations/useDepositWeth.ts"],"sourcesContent":["import { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { assert } from \"ts-essentials\";\nimport type { Hash } from \"viem\";\nimport { useChainId, useWriteContract } from \"wagmi\";\n\nexport type UseDepositWethInput = {\n amount?: string;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseDepositReturn = {\n deposit: () => void;\n depositAsync: () => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nconst minWethAbi = [\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nexport function useDepositWeth({\n amount,\n onError,\n onSuccess,\n}: UseDepositWethInput = {}): UseDepositReturn {\n const chainId = useChainId();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const wrappedNativeToken = wrappedNativeCurrency[chainId];\n const value = amount ? BigInt(amount) : undefined;\n\n const deposit = (): void => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n writeContract({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n const depositAsync = (): Promise<Hash> => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n return writeContractAsync({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n return {\n deposit,\n depositAsync,\n txHash,\n isPending,\n isSuccess,\n isError,\n error,\n reset,\n };\n}\n"],"mappings":";;;;;;AAuBA,IAAMsB,IAAa,CACjB;CACEC,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNC,SAAS,EAAE;CACXC,SAAS;CACTC,iBAAiB;CACjBC,MAAM;CACP,CACF;AAED,SAAOE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;AAAA,CAAAF,EAAA,OAAAD,IAIoBG,IAAAF,EAAA,MAJIE,IAAAH,MAAAI,KAAAA,IAAA,EAIJ,GAJIJ,GAIJC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAJI,IAAA,EAAA5B,WAAAG,YAAAF,iBAAA2B,GAK7BE,IAAgBjC,GAAY,EAACkC;AAAA,CAAAL,EAAA,OAAAvB,KAAAuB,EAAA,OAAAzB,KAWR8B,IAAA,EAAAC,UACT;EAAA/B;EAAAE;EAGV,EACD,EAAAuB,EAAA,KAAAvB,GAAAuB,EAAA,KAAAzB,GAAAyB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAdD,IAAA,EAAAO,kBAAAC,uBAAAxB,cAAAC,cAAAC,YAAAR,UAAA+B,MAAAtB,GAAAC,aASIhB,EAAiBiC,EAKnB,EAEF,EAAAK,8BAAmC3C,GAAuB,EAE1D4C,IAA2B3C,EAAsBoC,IAASQ;AAAA,CAAAZ,EAAA,OAAA1B,IACTsC,IAAAZ,EAAA,MAAnCY,IAAAtC,IAASuC,OAAOvC,EAAmB,GAAnC6B,KAAAA,GAAmCH,EAAA,KAAA1B,GAAA0B,EAAA,KAAAY;CAAjD,IAAAE,IAAcF,GAAoCG;AAAA,CAAAf,EAAA,OAAAU,KAAAV,EAAA,OAAAc,KAAAd,EAAA,OAAAW,KAAAX,EAAA,QAAAO,KAElCQ,UAAA;AAKdR,EAJAtC,EAAO0C,GAAoB,iCAAiC,EAI5DJ,EAAc;GAAAU,SACHN;GAAkBO,KACtB7B;GAAU8B,cACD;GAASL;GAAA,GALPJ,GAAwB;GAQzC,CAAC;IACHV,EAAA,KAAAU,GAAAV,EAAA,KAAAc,GAAAd,EAAA,KAAAW,GAAAX,EAAA,MAAAO,GAAAP,EAAA,MAAAe,KAAAA,IAAAf,EAAA;CAZD,IAAAnB,IAAgBkC,GAYdK;AAAA,CAAApB,EAAA,QAAAU,KAAAV,EAAA,QAAAc,KAAAd,EAAA,QAAAW,KAAAX,EAAA,QAAAQ,KAEmBY,WACnBnD,EAAO0C,GAAoB,iCAAiC,EAIrDH,EAAmB;EAAAS,SACfN;EAAkBO,KACtB7B;EAAU8B,cACD;EAASL;EAAA,GALPJ,GAAwB;EAQzC,CAAC,GACHV,EAAA,MAAAU,GAAAV,EAAA,MAAAc,GAAAd,EAAA,MAAAW,GAAAX,EAAA,MAAAQ,GAAAR,EAAA,MAAAoB,KAAAA,IAAApB,EAAA;CAZD,IAAAlB,IAAqBsC,GAYnBE;AAWD,QAXCtB,EAAA,QAAAnB,KAAAmB,EAAA,QAAAlB,KAAAkB,EAAA,QAAAtB,KAAAsB,EAAA,QAAAd,KAAAc,EAAA,QAAAhB,KAAAgB,EAAA,QAAAf,KAAAe,EAAA,QAAAZ,KAAAY,EAAA,QAAAb,KAEKmC,IAAA;EAAAzC;EAAAC;EAAAK;EAAAH;EAAAC;EAAAC;EAAAR;EAAAU;EASN,EAAAY,EAAA,MAAAnB,GAAAmB,EAAA,MAAAlB,GAAAkB,EAAA,MAAAtB,GAAAsB,EAAA,MAAAd,GAAAc,EAAA,MAAAhB,GAAAgB,EAAA,MAAAf,GAAAe,EAAA,MAAAZ,GAAAY,EAAA,MAAAb,GAAAa,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA,KATMsB"}
1
+ {"version":3,"file":"useDepositWeth.js","names":["useConstructGasParams","wrappedNativeCurrency","assert","Hash","useChainId","useWriteContract","UseDepositWethInput","amount","onSuccess","hash","onError","error","Error","UseDepositReturn","deposit","depositAsync","Promise","isPending","isSuccess","isError","txHash","reset","minWethAbi","constant","inputs","name","outputs","payable","stateMutability","type","const","useDepositWeth","t0","$","_c","t1","undefined","chainId","t2","mutation","writeContract","writeContractAsync","data","constructViemGasParams","wrappedNativeToken","t3","BigInt","value","t4","gasParams","address","abi","functionName","t5","gasParams_0","t6"],"sources":["../../../../src/hooks/txs/mutations/useDepositWeth.ts"],"sourcesContent":["import { useConstructGasParams } from \"@/hooks/swap/tradeFlow/common/useConstructGasParams\";\nimport { wrappedNativeCurrency } from \"@/lib/constants/weth\";\nimport { assert } from \"ts-essentials\";\nimport type { Hash } from \"viem\";\nimport { useChainId, useWriteContract } from \"wagmi\";\n\nexport type UseDepositWethInput = {\n amount?: string;\n onSuccess?: (hash: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseDepositReturn = {\n deposit: () => void;\n depositAsync: () => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n txHash?: Hash;\n reset: () => void;\n};\n\nconst minWethAbi = [\n {\n constant: false,\n inputs: [],\n name: \"deposit\",\n outputs: [],\n payable: true,\n stateMutability: \"payable\",\n type: \"function\",\n },\n] as const;\n\nexport function useDepositWeth({\n amount,\n onError,\n onSuccess,\n}: UseDepositWethInput = {}): UseDepositReturn {\n const chainId = useChainId();\n\n const {\n writeContract,\n writeContractAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: txHash,\n reset,\n } = useWriteContract({\n mutation: {\n onSuccess,\n onError,\n },\n });\n\n const { constructViemGasParams } = useConstructGasParams();\n\n const wrappedNativeToken = wrappedNativeCurrency[chainId];\n const value = amount ? BigInt(amount) : undefined;\n\n const deposit = (): void => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n writeContract({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n const depositAsync = (): Promise<Hash> => {\n assert(wrappedNativeToken, `wrappedNativeToken is required`);\n\n const gasParams = constructViemGasParams();\n\n return writeContractAsync({\n address: wrappedNativeToken,\n abi: minWethAbi,\n functionName: \"deposit\",\n value,\n ...gasParams,\n });\n };\n\n return {\n deposit,\n depositAsync,\n txHash,\n isPending,\n isSuccess,\n isError,\n error,\n reset,\n };\n}\n"],"mappings":";;;;;;AAuBA,IAAMsB,IAAa,CACjB;CACEC,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNC,SAAS,EAAE;CACXC,SAAS;CACTC,iBAAiB;CACjBC,MAAM;CACP,CACF;AAED,SAAOE,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAIoBG,IAAAF,EAAA,MAJIE,IAAAH,MAAAI,KAAAA,IAAA,EAIJ,GAJIJ,GAIJC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAJI,IAAA,EAAA5B,WAAAG,YAAAF,iBAAA2B,GAK7BE,IAAgBjC,GAAY,EAACkC;CAAA,AAAAL,EAAA,OAAAvB,KAAAuB,EAAA,OAAAzB,KAWR8B,IAAA,EAAAC,UACT;EAAA/B;EAAAE;EAGV,EACD,EAAAuB,EAAA,KAAAvB,GAAAuB,EAAA,KAAAzB,GAAAyB,EAAA,KAAAK,KAAAA,IAAAL,EAAA;CAdD,IAAA,EAAAO,kBAAAC,uBAAAxB,cAAAC,cAAAC,YAAAR,UAAA+B,MAAAtB,GAAAC,aASIhB,EAAiBiC,EAKnB,EAEF,EAAAK,8BAAmC3C,GAAuB,EAE1D4C,IAA2B3C,EAAsBoC,IAASQ;CAAA,AAAAZ,EAAA,OAAA1B,IACTsC,IAAAZ,EAAA,MAAnCY,IAAAtC,IAASuC,OAAOvC,EAAmB,GAAnC6B,KAAAA,GAAmCH,EAAA,KAAA1B,GAAA0B,EAAA,KAAAY;CAAjD,IAAAE,IAAcF,GAAoCG;CAAA,AAAAf,EAAA,OAAAU,KAAAV,EAAA,OAAAc,KAAAd,EAAA,OAAAW,KAAAX,EAAA,QAAAO,KAElCQ,UAAA;EAKdR,AAJAtC,EAAO0C,GAAoB,iCAAiC,EAI5DJ,EAAc;GAAAU,SACHN;GAAkBO,KACtB7B;GAAU8B,cACD;GAASL;GAAA,GALPJ,GAObM;GACJ,CAAC;IACHhB,EAAA,KAAAU,GAAAV,EAAA,KAAAc,GAAAd,EAAA,KAAAW,GAAAX,EAAA,MAAAO,GAAAP,EAAA,MAAAe,KAAAA,IAAAf,EAAA;CAZD,IAAAnB,IAAgBkC,GAYdK;CAAA,AAAApB,EAAA,QAAAU,KAAAV,EAAA,QAAAc,KAAAd,EAAA,QAAAW,KAAAX,EAAA,QAAAQ,KAEmBY,WACnBnD,EAAO0C,GAAoB,iCAAiC,EAIrDH,EAAmB;EAAAS,SACfN;EAAkBO,KACtB7B;EAAU8B,cACD;EAASL;EAAA,GALPJ,GAObM;EACJ,CAAC,GACHhB,EAAA,MAAAU,GAAAV,EAAA,MAAAc,GAAAd,EAAA,MAAAW,GAAAX,EAAA,MAAAQ,GAAAR,EAAA,MAAAoB,KAAAA,IAAApB,EAAA;CAZD,IAAAlB,IAAqBsC,GAYnBE;CAWD,OAXCtB,EAAA,QAAAnB,KAAAmB,EAAA,QAAAlB,KAAAkB,EAAA,QAAAtB,KAAAsB,EAAA,QAAAd,KAAAc,EAAA,QAAAhB,KAAAgB,EAAA,QAAAf,KAAAe,EAAA,QAAAZ,KAAAY,EAAA,QAAAb,KAEKmC,IAAA;EAAAzC;EAAAC;EAAAK;EAAAH;EAAAC;EAAAC;EAAAR;EAAAU;EASN,EAAAY,EAAA,MAAAnB,GAAAmB,EAAA,MAAAlB,GAAAkB,EAAA,MAAAtB,GAAAsB,EAAA,MAAAd,GAAAc,EAAA,MAAAhB,GAAAgB,EAAA,MAAAf,GAAAe,EAAA,MAAAZ,GAAAY,EAAA,MAAAb,GAAAa,EAAA,MAAAsB,KAAAA,IAAAtB,EAAA,KATMsB"}