@velora-dex/widget 0.0.22 → 0.1.0-rc.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 (613) hide show
  1. package/dist/_virtual/index.js +1 -1
  2. package/dist/components/ui/accordion.js.map +1 -1
  3. package/dist/components/ui/badge.js.map +1 -1
  4. package/dist/components/ui/button.d.ts +3 -4
  5. package/dist/components/ui/button.d.ts.map +1 -1
  6. package/dist/components/ui/button.js +11 -8
  7. package/dist/components/ui/button.js.map +1 -1
  8. package/dist/components/ui/card.js.map +1 -1
  9. package/dist/components/ui/dialog.js +2 -2
  10. package/dist/components/ui/dialog.js.map +1 -1
  11. package/dist/components/ui/drawer.d.ts +2 -2
  12. package/dist/components/ui/drawer.d.ts.map +1 -1
  13. package/dist/components/ui/drawer.js +58 -19
  14. package/dist/components/ui/drawer.js.map +1 -1
  15. package/dist/components/ui/dropdown-menu.js +1 -1
  16. package/dist/components/ui/dropdown-menu.js.map +1 -1
  17. package/dist/components/ui/input.js.map +1 -1
  18. package/dist/components/ui/progress.js.map +1 -1
  19. package/dist/components/ui/skeleton.js.map +1 -1
  20. package/dist/components/ui/sonner.d.ts.map +1 -1
  21. package/dist/components/ui/sonner.js +4 -5
  22. package/dist/components/ui/sonner.js.map +1 -1
  23. package/dist/components/ui/switch.js.map +1 -1
  24. package/dist/components/ui/tooltip.js +1 -1
  25. package/dist/components/ui/tooltip.js.map +1 -1
  26. package/dist/components/web3/AccountButton.js +2 -2
  27. package/dist/components/web3/AccountButton.js.map +1 -1
  28. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +1 -1
  29. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
  30. package/dist/components/web3/ConnectWallets/WalletConnectButtons.d.ts.map +1 -1
  31. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js +23 -14
  32. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
  33. package/dist/components/web3/ConnectWallets/index.js +1 -1
  34. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  35. package/dist/components/web3/ConnectWallets/privy/button.js +1 -1
  36. package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
  37. package/dist/components/web3/ConnectWallets/privy/connectRunner.d.ts.map +1 -1
  38. package/dist/components/web3/ConnectWallets/privy/connectRunner.js +1 -3
  39. package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
  40. package/dist/components/web3/ConnectWallets/privy/iframe.js +1 -1
  41. package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
  42. package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
  43. package/dist/components/web3/ConnectWallets/privy/types.d.ts +1 -1
  44. package/dist/components/web3/ConnectWallets/privy/types.d.ts.map +1 -1
  45. package/dist/components/web3/ConnectWallets/walletIcons.d.ts +30 -0
  46. package/dist/components/web3/ConnectWallets/walletIcons.d.ts.map +1 -1
  47. package/dist/components/web3/ConnectWallets/walletIcons.js +84 -2
  48. package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
  49. package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -1
  50. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +69 -65
  51. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
  52. package/dist/components/web3/providers.js +1 -1
  53. package/dist/components/web3/providers.js.map +1 -1
  54. package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
  55. package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
  56. package/dist/components/widget/AppHeader/AppHeader.js +49 -55
  57. package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
  58. package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
  59. package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
  60. package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
  61. package/dist/components/widget/Details/SwapDetailsExpandable.js +1 -1
  62. package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
  63. package/dist/components/widget/Dialog/ConnectWalletDialog/ConnectWalletDialog.js.map +1 -1
  64. package/dist/components/widget/Dialog/DialogRoot.js.map +1 -1
  65. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +2 -2
  66. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
  67. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
  68. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
  69. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +127 -80
  70. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  71. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +5 -2
  72. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
  73. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js +10 -8
  74. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  75. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts +5 -2
  76. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts.map +1 -1
  77. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js +10 -8
  78. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
  79. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.d.ts +11 -0
  80. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.d.ts.map +1 -0
  81. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js +101 -0
  82. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -0
  83. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.d.ts +5 -0
  84. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.d.ts.map +1 -0
  85. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js +186 -0
  86. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map +1 -0
  87. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts +6 -2
  88. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts.map +1 -1
  89. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js +33 -20
  90. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
  91. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js +1 -1
  92. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
  93. package/dist/components/widget/Dialog/state/dialogAtom.js.map +1 -1
  94. package/dist/components/widget/Drawer/index.d.ts +4 -1
  95. package/dist/components/widget/Drawer/index.d.ts.map +1 -1
  96. package/dist/components/widget/Drawer/index.js +78 -37
  97. package/dist/components/widget/Drawer/index.js.map +1 -1
  98. package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +24 -1
  99. package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
  100. package/dist/components/widget/Drawer/state/useDrawerControls.js +92 -3
  101. package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
  102. package/dist/components/widget/Dropdown/DropdownWithItems.d.ts.map +1 -1
  103. package/dist/components/widget/Dropdown/DropdownWithItems.js +5 -3
  104. package/dist/components/widget/Dropdown/DropdownWithItems.js.map +1 -1
  105. package/dist/components/widget/Dropdown/types.d.ts +2 -1
  106. package/dist/components/widget/Dropdown/types.d.ts.map +1 -1
  107. package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
  108. package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
  109. package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
  110. package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
  111. package/dist/components/widget/Icon/InfoIcon.d.ts +1 -1
  112. package/dist/components/widget/Icon/InfoIcon.d.ts.map +1 -1
  113. package/dist/components/widget/Icon/InfoIcon.js +11 -8
  114. package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
  115. package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
  116. package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
  117. package/dist/components/widget/Line/Line.js.map +1 -1
  118. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js +1 -1
  119. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
  120. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.d.ts.map +1 -1
  121. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js +14 -10
  122. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
  123. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.d.ts.map +1 -1
  124. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js +10 -8
  125. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
  126. package/dist/components/widget/NetworkSwitcher/types.d.ts +2 -2
  127. package/dist/components/widget/NetworkSwitcher/types.d.ts.map +1 -1
  128. package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
  129. package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js +1 -1
  130. package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
  131. package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
  132. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
  133. package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
  134. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  135. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.d.ts +1 -1
  136. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.d.ts.map +1 -1
  137. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js +6 -2
  138. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
  139. package/dist/components/widget/RowVirtualizer/types.d.ts +1 -0
  140. package/dist/components/widget/RowVirtualizer/types.d.ts.map +1 -1
  141. package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
  142. package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js +1 -1
  143. package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
  144. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js +3 -3
  145. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
  146. package/dist/components/widget/SwapModeSwitcher/state/swapModeAtom.js +1 -1
  147. package/dist/components/widget/SwapModeSwitcher/state/swapModeAtom.js.map +1 -1
  148. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js +3 -3
  149. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
  150. package/dist/components/widget/SwapRate/SwapRate.d.ts.map +1 -1
  151. package/dist/components/widget/SwapRate/SwapRate.js +3 -0
  152. package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
  153. package/dist/components/widget/Toasts/CustomToast.js +1 -1
  154. package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
  155. package/dist/components/widget/TokenBadge/TokenBadge.d.ts.map +1 -1
  156. package/dist/components/widget/TokenBadge/TokenBadge.js +1 -1
  157. package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
  158. package/dist/components/widget/TokenInput/EmptyInput.js.map +1 -1
  159. package/dist/components/widget/TokenInput/index.js +1 -1
  160. package/dist/components/widget/TokenInput/index.js.map +1 -1
  161. package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
  162. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  163. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  164. package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
  165. package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
  166. package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
  167. package/dist/components/widget/TradeOverview/Stepper.js +39 -21
  168. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  169. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
  170. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
  171. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
  172. package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
  173. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.d.ts.map +1 -1
  174. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +40 -72
  175. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  176. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts +23 -3
  177. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
  178. package/dist/components/widget/TradeOverview/TradeComplete/utils.js +67 -19
  179. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  180. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  181. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  182. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -1
  183. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
  184. package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
  185. package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
  186. package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
  187. package/dist/components/widget/TradeOverview/TradeOverview.js +40 -56
  188. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  189. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  190. package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
  191. package/dist/components/widget/TradeOverview/VerticalDash.js +1 -1
  192. package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
  193. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  194. package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
  195. package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -1
  196. package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
  197. package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
  198. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js +2 -2
  199. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
  200. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.d.ts.map +1 -1
  201. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js +42 -19
  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 +3 -3
  205. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
  206. package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
  207. package/dist/components/widget/TradeParameters/state/deltaParamAtom.js +1 -1
  208. package/dist/components/widget/TradeParameters/state/deltaParamAtom.js.map +1 -1
  209. package/dist/components/widget/TradeParameters/state/slippageParamActionsAtom.js.map +1 -1
  210. package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
  211. package/dist/components/widget/Warning/Warning.js.map +1 -1
  212. package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
  213. package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
  214. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
  215. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.d.ts.map +1 -1
  216. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js +20 -26
  217. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
  218. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.d.ts.map +1 -1
  219. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +6 -4
  220. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  221. package/dist/components/widget/YouGet/YouGet.js.map +1 -1
  222. package/dist/configurator/Configurator.d.ts.map +1 -0
  223. package/dist/configurator/index.d.ts.map +1 -0
  224. package/dist/core/ConnectWalletDrawerButton.d.ts.map +1 -0
  225. package/dist/core/ConnectWalletDrawerButton.js.map +1 -0
  226. package/dist/core/DevTools.d.ts.map +1 -0
  227. package/dist/core/Toaster.d.ts.map +1 -0
  228. package/dist/core/Toaster.js.map +1 -0
  229. package/dist/core/TradeFlowButton.d.ts.map +1 -0
  230. package/dist/{widget → core}/TradeFlowButton.js +154 -126
  231. package/dist/core/TradeFlowButton.js.map +1 -0
  232. package/dist/core/Updaters.d.ts.map +1 -0
  233. package/dist/{widget → core}/Updaters.js +2 -0
  234. package/dist/core/Updaters.js.map +1 -0
  235. package/dist/core/across/utils.d.ts.map +1 -0
  236. package/dist/core/across/utils.js.map +1 -0
  237. package/dist/core/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -0
  238. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -0
  239. package/dist/core/constants.d.ts.map +1 -0
  240. package/dist/core/constants.js.map +1 -0
  241. package/dist/core/index.d.ts.map +1 -0
  242. package/dist/{widget → core}/index.js +55 -28
  243. package/dist/core/index.js.map +1 -0
  244. package/dist/core/inputs/hooks/types.d.ts.map +1 -0
  245. package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -0
  246. package/dist/{widget → core}/inputs/hooks/useTokenFromInputProps.js +114 -93
  247. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -0
  248. package/dist/core/inputs/hooks/useTokenSwitcherProps.d.ts.map +1 -0
  249. package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -0
  250. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -0
  251. package/dist/{widget → core}/inputs/hooks/useTokenToInputProps.js +39 -28
  252. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -0
  253. package/dist/core/inputs/hooks/useWidgetButtonProps.d.ts.map +1 -0
  254. package/dist/core/inputs/state/inputAmountAtom.d.ts.map +1 -0
  255. package/dist/core/inputs/state/inputAmountAtom.js.map +1 -0
  256. package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts.map +1 -0
  257. package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -0
  258. package/dist/core/inputs/state/selectedTokenAtom.d.ts.map +1 -0
  259. package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -0
  260. package/dist/core/inputs/state/subscriptions.d.ts.map +1 -0
  261. package/dist/core/inputs/state/subscriptions.js.map +1 -0
  262. package/dist/core/logger.d.ts.map +1 -0
  263. package/dist/core/logger.js.map +1 -0
  264. package/dist/core/state/chainToAtom.d.ts.map +1 -0
  265. package/dist/core/state/chainToAtom.js.map +1 -0
  266. package/dist/{widget → core}/state/configActionsAtom.d.ts +1 -1
  267. package/dist/core/state/configActionsAtom.d.ts.map +1 -0
  268. package/dist/core/state/configActionsAtom.js.map +1 -0
  269. package/dist/core/state/configAtom.d.ts.map +1 -0
  270. package/dist/core/state/configAtom.js.map +1 -0
  271. package/dist/core/state/containerAtom.d.ts.map +1 -0
  272. package/dist/core/state/containerAtom.js.map +1 -0
  273. package/dist/core/state/currentSwapInputAtom.d.ts.map +1 -0
  274. package/dist/core/state/currentSwapInputAtom.js.map +1 -0
  275. package/dist/core/state/externalProviderAtom.d.ts.map +1 -0
  276. package/dist/core/state/externalProviderAtom.js.map +1 -0
  277. package/dist/core/state/isCrosschainAtom.d.ts.map +1 -0
  278. package/dist/core/state/isCrosschainAtom.js.map +1 -0
  279. package/dist/core/subscriptions.d.ts.map +1 -0
  280. package/dist/core/subscriptions.js.map +1 -0
  281. package/dist/core/swapDetails/fees.d.ts.map +1 -0
  282. package/dist/core/swapDetails/fees.js.map +1 -0
  283. package/dist/core/swapDetails/orderRouting.d.ts.map +1 -0
  284. package/dist/core/swapDetails/orderRouting.js.map +1 -0
  285. package/dist/core/swapDetails/priceImpact.d.ts.map +1 -0
  286. package/dist/core/swapDetails/priceImpact.js.map +1 -0
  287. package/dist/core/swapDetails/useSwapDetailsListProps.d.ts.map +1 -0
  288. package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -0
  289. package/dist/core/swapDetails/youGet.d.ts.map +1 -0
  290. package/dist/core/swapDetails/youGet.js.map +1 -0
  291. package/dist/core/types.d.ts.map +1 -0
  292. package/dist/external/.pnpm/{react-compiler-runtime@19.1.0-rc.2_react@19.1.0 → react-compiler-runtime@19.1.0-rc.2_react@19.1.1}/external/react-compiler-runtime/dist/index.js.map +1 -1
  293. package/dist/external/.pnpm/{vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33 → vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__7f2d7d5ed11750fbec42b3f5689c802d}/external/vaul/dist/index.js +3 -1
  294. package/dist/external/.pnpm/{vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33 → vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__7f2d7d5ed11750fbec42b3f5689c802d}/external/vaul/dist/index.js.map +1 -1
  295. package/dist/hooks/gas/useGasPrices.js.map +1 -1
  296. package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
  297. package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
  298. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
  299. package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
  300. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
  301. package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js +1 -1
  302. package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
  303. package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
  304. package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -1
  305. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
  306. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js +1 -1
  307. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
  308. package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js +1 -1
  309. package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
  310. package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js +1 -1
  311. package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
  312. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js +1 -1
  313. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
  314. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js +1 -1
  315. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -1
  316. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
  317. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js +1 -1
  318. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
  319. package/dist/hooks/permit/utils/construct.js.map +1 -1
  320. package/dist/hooks/permit/utils/detect.js.map +1 -1
  321. package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
  322. package/dist/hooks/permit/utils/encodeArgs.js +1 -1
  323. package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
  324. package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
  325. package/dist/hooks/permit/utils/utils.js.map +1 -1
  326. package/dist/hooks/sdk/useGetContracts.js.map +1 -1
  327. package/dist/hooks/sdk/useSpender.js.map +1 -1
  328. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  329. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +2 -0
  330. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  331. package/dist/hooks/swap/prices/delta/orders/utils.js +4 -1
  332. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  333. package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js.map +1 -1
  334. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +14 -1
  335. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  336. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +60 -2
  337. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  338. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
  339. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +8 -0
  340. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  341. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +41 -17
  342. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  343. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
  344. package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
  345. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +14 -1
  346. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts.map +1 -1
  347. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +60 -2
  348. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  349. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
  350. package/dist/hooks/swap/prices/usePricesParams.js +4 -4
  351. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  352. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  353. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  354. package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
  355. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +1 -1
  356. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
  357. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
  358. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js +1 -1
  359. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
  360. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +1 -0
  361. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  362. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +209 -460
  363. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  364. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +1 -1
  365. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  366. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +1 -0
  367. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
  368. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +212 -413
  369. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  370. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +1 -1
  371. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  372. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
  373. package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
  374. package/dist/hooks/tokens/balances/queries.js.map +1 -1
  375. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.d.ts.map +1 -1
  376. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js +18 -7
  377. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
  378. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts +3 -2
  379. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
  380. package/dist/hooks/tokens/balances/useInvalidateTokenData.js +60 -77
  381. package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
  382. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.d.ts.map +1 -1
  383. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js +7 -3
  384. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
  385. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
  386. package/dist/hooks/tokens/balances/useSelectedTokenBalances.d.ts +5 -0
  387. package/dist/hooks/tokens/balances/useSelectedTokenBalances.d.ts.map +1 -0
  388. package/dist/hooks/tokens/balances/useSelectedTokenBalances.js +38 -0
  389. package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -0
  390. package/dist/hooks/tokens/balances/useTokenBalance.d.ts +15 -0
  391. package/dist/hooks/tokens/balances/useTokenBalance.d.ts.map +1 -1
  392. package/dist/hooks/tokens/balances/useTokenBalance.js +2 -0
  393. package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
  394. package/dist/hooks/tokens/prices/queries.js.map +1 -1
  395. package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
  396. package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
  397. package/dist/hooks/tokens/useNativeToken.js.map +1 -1
  398. package/dist/hooks/tokens/useTokenLists.js.map +1 -1
  399. package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
  400. package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
  401. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  402. package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
  403. package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
  404. package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
  405. package/dist/hooks/txs/queries/useAwaitTx.js +1 -1
  406. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  407. package/dist/hooks/txs/queries/utils.d.ts +3 -0
  408. package/dist/hooks/txs/queries/utils.d.ts.map +1 -0
  409. package/dist/hooks/txs/queries/utils.js +6 -0
  410. package/dist/hooks/txs/queries/utils.js.map +1 -0
  411. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  412. package/dist/hooks/useBridgeInfo.js.map +1 -1
  413. package/dist/hooks/useDebouncedInputState.js.map +1 -1
  414. package/dist/hooks/useEIP1559Enabled.js.map +1 -1
  415. package/dist/hooks/useGlobalDeltaEnabled.js +1 -1
  416. package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
  417. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  418. package/dist/hooks/useMinViemClient.js.map +1 -1
  419. package/dist/hooks/useSDK.js +2 -2
  420. package/dist/hooks/useSDK.js.map +1 -1
  421. package/dist/hooks/useSlippage.js +1 -1
  422. package/dist/hooks/useSlippage.js.map +1 -1
  423. package/dist/index.d.ts +2 -2
  424. package/dist/index.d.ts.map +1 -1
  425. package/dist/index.js +1 -1
  426. package/dist/lib/constants/time.js +2 -1
  427. package/dist/lib/constants/time.js.map +1 -1
  428. package/dist/lib/ipfs.js.map +1 -1
  429. package/dist/lib/queryClient.d.ts.map +1 -1
  430. package/dist/lib/queryClient.js +32 -2
  431. package/dist/lib/queryClient.js.map +1 -1
  432. package/dist/lib/utils/copyToClipboard.js.map +1 -1
  433. package/dist/lib/utils/delta.js.map +1 -1
  434. package/dist/lib/utils/formatTokenBalance.js.map +1 -1
  435. package/dist/lib/utils/index.js.map +1 -1
  436. package/dist/lib/utils/logger.js.map +1 -1
  437. package/dist/lib/utils/price.js.map +1 -1
  438. package/dist/lib/utils/priceImpact.d.ts.map +1 -1
  439. package/dist/lib/utils/priceImpact.js +1 -1
  440. package/dist/lib/utils/priceImpact.js.map +1 -1
  441. package/dist/lib/utils/providerErrors.js.map +1 -1
  442. package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
  443. package/dist/lib/utils/toasts.js +0 -24
  444. package/dist/lib/utils/toasts.js.map +1 -1
  445. package/dist/lib/web3/privy/config.js +1 -1
  446. package/dist/lib/web3/wagmi/config.d.ts +12 -2
  447. package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
  448. package/dist/lib/web3/wagmi/config.js +6 -3
  449. package/dist/lib/web3/wagmi/config.js.map +1 -1
  450. package/dist/lib/web3/wagmi/constants.d.ts +11 -1
  451. package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
  452. package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts +25 -0
  453. package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts.map +1 -0
  454. package/dist/lib/web3/wagmi/isInsideSafeIframe.js +113 -0
  455. package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -0
  456. package/dist/styles.css +77 -144
  457. package/dist/tokens/lists/constants.js.map +1 -1
  458. package/dist/tokens/lists/download.js.map +1 -1
  459. package/dist/tokens/lists/hooks.js.map +1 -1
  460. package/dist/tokens/lists/state/observer.js.map +1 -1
  461. package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
  462. package/dist/tokens/overrides.js.map +1 -1
  463. package/dist/tokens/queries.js.map +1 -1
  464. package/dist/tokens/stabeCoins/hooks.js.map +1 -1
  465. package/dist/tokens/state/constructTokens.js.map +1 -1
  466. package/dist/tokens/state/tokensAtom.js.map +1 -1
  467. package/dist/tokens/utils/filtering.js.map +1 -1
  468. package/dist/tokens/utils/sets.js.map +1 -1
  469. package/dist/tokens/utils/sorting.js.map +1 -1
  470. package/dist/tokens/utils/transferAmountsFromReceipt.d.ts +51 -0
  471. package/dist/tokens/utils/transferAmountsFromReceipt.d.ts.map +1 -0
  472. package/dist/tokens/utils/transferAmountsFromReceipt.js +281 -0
  473. package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -0
  474. package/package.json +32 -31
  475. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts +0 -25
  476. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts.map +0 -1
  477. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js +0 -103
  478. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js.map +0 -1
  479. package/dist/test/Configurator.d.ts.map +0 -1
  480. package/dist/test/connect/AccountDisplay.d.ts +0 -2
  481. package/dist/test/connect/AccountDisplay.d.ts.map +0 -1
  482. package/dist/test/connect/App.d.ts +0 -2
  483. package/dist/test/connect/App.d.ts.map +0 -1
  484. package/dist/test/connect/ConnectWallet.d.ts +0 -2
  485. package/dist/test/connect/ConnectWallet.d.ts.map +0 -1
  486. package/dist/test/connect/PrivyProfile.d.ts +0 -2
  487. package/dist/test/connect/PrivyProfile.d.ts.map +0 -1
  488. package/dist/test/connect/WagmiProfile.d.ts +0 -2
  489. package/dist/test/connect/WagmiProfile.d.ts.map +0 -1
  490. package/dist/test/connect/WalletActions.d.ts +0 -2
  491. package/dist/test/connect/WalletActions.d.ts.map +0 -1
  492. package/dist/test/index.d.ts.map +0 -1
  493. package/dist/widget/ConnectWalletDrawerButton.d.ts.map +0 -1
  494. package/dist/widget/ConnectWalletDrawerButton.js.map +0 -1
  495. package/dist/widget/DevTools.d.ts.map +0 -1
  496. package/dist/widget/Toaster.d.ts.map +0 -1
  497. package/dist/widget/Toaster.js.map +0 -1
  498. package/dist/widget/TradeFlowButton.d.ts.map +0 -1
  499. package/dist/widget/TradeFlowButton.js.map +0 -1
  500. package/dist/widget/Updaters.d.ts.map +0 -1
  501. package/dist/widget/Updaters.js.map +0 -1
  502. package/dist/widget/across/utils.d.ts.map +0 -1
  503. package/dist/widget/across/utils.js.map +0 -1
  504. package/dist/widget/button/hooks/useWidgetButtonExtraProps.d.ts.map +0 -1
  505. package/dist/widget/button/hooks/useWidgetButtonExtraProps.js.map +0 -1
  506. package/dist/widget/constants.d.ts.map +0 -1
  507. package/dist/widget/constants.js.map +0 -1
  508. package/dist/widget/index.d.ts.map +0 -1
  509. package/dist/widget/index.js.map +0 -1
  510. package/dist/widget/inputs/hooks/types.d.ts.map +0 -1
  511. package/dist/widget/inputs/hooks/useTokenFromInputProps.d.ts.map +0 -1
  512. package/dist/widget/inputs/hooks/useTokenFromInputProps.js.map +0 -1
  513. package/dist/widget/inputs/hooks/useTokenSwitcherProps.d.ts.map +0 -1
  514. package/dist/widget/inputs/hooks/useTokenSwitcherProps.js.map +0 -1
  515. package/dist/widget/inputs/hooks/useTokenToInputProps.d.ts.map +0 -1
  516. package/dist/widget/inputs/hooks/useTokenToInputProps.js.map +0 -1
  517. package/dist/widget/inputs/hooks/useWidgetButtonProps.d.ts.map +0 -1
  518. package/dist/widget/inputs/state/inputAmountAtom.d.ts.map +0 -1
  519. package/dist/widget/inputs/state/inputAmountAtom.js.map +0 -1
  520. package/dist/widget/inputs/state/selectedTokenActionsAtom.d.ts.map +0 -1
  521. package/dist/widget/inputs/state/selectedTokenActionsAtom.js.map +0 -1
  522. package/dist/widget/inputs/state/selectedTokenAtom.d.ts.map +0 -1
  523. package/dist/widget/inputs/state/selectedTokenAtom.js.map +0 -1
  524. package/dist/widget/inputs/state/subscriptions.d.ts.map +0 -1
  525. package/dist/widget/inputs/state/subscriptions.js.map +0 -1
  526. package/dist/widget/logger.d.ts.map +0 -1
  527. package/dist/widget/logger.js.map +0 -1
  528. package/dist/widget/state/chainToAtom.d.ts.map +0 -1
  529. package/dist/widget/state/chainToAtom.js.map +0 -1
  530. package/dist/widget/state/configActionsAtom.d.ts.map +0 -1
  531. package/dist/widget/state/configActionsAtom.js.map +0 -1
  532. package/dist/widget/state/configAtom.d.ts.map +0 -1
  533. package/dist/widget/state/configAtom.js.map +0 -1
  534. package/dist/widget/state/containerAtom.d.ts.map +0 -1
  535. package/dist/widget/state/containerAtom.js.map +0 -1
  536. package/dist/widget/state/currentSwapInputAtom.d.ts.map +0 -1
  537. package/dist/widget/state/currentSwapInputAtom.js.map +0 -1
  538. package/dist/widget/state/externalProviderAtom.d.ts.map +0 -1
  539. package/dist/widget/state/externalProviderAtom.js.map +0 -1
  540. package/dist/widget/state/isCrosschainAtom.d.ts.map +0 -1
  541. package/dist/widget/state/isCrosschainAtom.js.map +0 -1
  542. package/dist/widget/subscriptions.d.ts.map +0 -1
  543. package/dist/widget/subscriptions.js.map +0 -1
  544. package/dist/widget/swapDetails/fees.d.ts.map +0 -1
  545. package/dist/widget/swapDetails/fees.js.map +0 -1
  546. package/dist/widget/swapDetails/orderRouting.d.ts.map +0 -1
  547. package/dist/widget/swapDetails/orderRouting.js.map +0 -1
  548. package/dist/widget/swapDetails/priceImpact.d.ts.map +0 -1
  549. package/dist/widget/swapDetails/priceImpact.js.map +0 -1
  550. package/dist/widget/swapDetails/useSwapDetailsListProps.d.ts.map +0 -1
  551. package/dist/widget/swapDetails/useSwapDetailsListProps.js.map +0 -1
  552. package/dist/widget/swapDetails/youGet.d.ts.map +0 -1
  553. package/dist/widget/swapDetails/youGet.js.map +0 -1
  554. package/dist/widget/types.d.ts.map +0 -1
  555. /package/dist/{test → configurator}/Configurator.d.ts +0 -0
  556. /package/dist/{test → configurator}/index.d.ts +0 -0
  557. /package/dist/{widget → core}/ConnectWalletDrawerButton.d.ts +0 -0
  558. /package/dist/{widget → core}/ConnectWalletDrawerButton.js +0 -0
  559. /package/dist/{widget → core}/DevTools.d.ts +0 -0
  560. /package/dist/{widget → core}/Toaster.d.ts +0 -0
  561. /package/dist/{widget → core}/Toaster.js +0 -0
  562. /package/dist/{widget → core}/TradeFlowButton.d.ts +0 -0
  563. /package/dist/{widget → core}/Updaters.d.ts +0 -0
  564. /package/dist/{widget → core}/across/utils.d.ts +0 -0
  565. /package/dist/{widget → core}/across/utils.js +0 -0
  566. /package/dist/{widget → core}/button/hooks/useWidgetButtonExtraProps.d.ts +0 -0
  567. /package/dist/{widget → core}/button/hooks/useWidgetButtonExtraProps.js +0 -0
  568. /package/dist/{widget → core}/constants.d.ts +0 -0
  569. /package/dist/{widget → core}/constants.js +0 -0
  570. /package/dist/{widget → core}/index.d.ts +0 -0
  571. /package/dist/{widget → core}/inputs/hooks/types.d.ts +0 -0
  572. /package/dist/{widget → core}/inputs/hooks/useTokenFromInputProps.d.ts +0 -0
  573. /package/dist/{widget → core}/inputs/hooks/useTokenSwitcherProps.d.ts +0 -0
  574. /package/dist/{widget → core}/inputs/hooks/useTokenSwitcherProps.js +0 -0
  575. /package/dist/{widget → core}/inputs/hooks/useTokenToInputProps.d.ts +0 -0
  576. /package/dist/{widget → core}/inputs/hooks/useWidgetButtonProps.d.ts +0 -0
  577. /package/dist/{widget → core}/inputs/state/inputAmountAtom.d.ts +0 -0
  578. /package/dist/{widget → core}/inputs/state/inputAmountAtom.js +0 -0
  579. /package/dist/{widget → core}/inputs/state/selectedTokenActionsAtom.d.ts +0 -0
  580. /package/dist/{widget → core}/inputs/state/selectedTokenActionsAtom.js +0 -0
  581. /package/dist/{widget → core}/inputs/state/selectedTokenAtom.d.ts +0 -0
  582. /package/dist/{widget → core}/inputs/state/selectedTokenAtom.js +0 -0
  583. /package/dist/{widget → core}/inputs/state/subscriptions.d.ts +0 -0
  584. /package/dist/{widget → core}/inputs/state/subscriptions.js +0 -0
  585. /package/dist/{widget → core}/logger.d.ts +0 -0
  586. /package/dist/{widget → core}/logger.js +0 -0
  587. /package/dist/{widget → core}/state/chainToAtom.d.ts +0 -0
  588. /package/dist/{widget → core}/state/chainToAtom.js +0 -0
  589. /package/dist/{widget → core}/state/configActionsAtom.js +0 -0
  590. /package/dist/{widget → core}/state/configAtom.d.ts +0 -0
  591. /package/dist/{widget → core}/state/configAtom.js +0 -0
  592. /package/dist/{widget → core}/state/containerAtom.d.ts +0 -0
  593. /package/dist/{widget → core}/state/containerAtom.js +0 -0
  594. /package/dist/{widget → core}/state/currentSwapInputAtom.d.ts +0 -0
  595. /package/dist/{widget → core}/state/currentSwapInputAtom.js +0 -0
  596. /package/dist/{widget → core}/state/externalProviderAtom.d.ts +0 -0
  597. /package/dist/{widget → core}/state/externalProviderAtom.js +0 -0
  598. /package/dist/{widget → core}/state/isCrosschainAtom.d.ts +0 -0
  599. /package/dist/{widget → core}/state/isCrosschainAtom.js +0 -0
  600. /package/dist/{widget → core}/subscriptions.d.ts +0 -0
  601. /package/dist/{widget → core}/subscriptions.js +0 -0
  602. /package/dist/{widget → core}/swapDetails/fees.d.ts +0 -0
  603. /package/dist/{widget → core}/swapDetails/fees.js +0 -0
  604. /package/dist/{widget → core}/swapDetails/orderRouting.d.ts +0 -0
  605. /package/dist/{widget → core}/swapDetails/orderRouting.js +0 -0
  606. /package/dist/{widget → core}/swapDetails/priceImpact.d.ts +0 -0
  607. /package/dist/{widget → core}/swapDetails/priceImpact.js +0 -0
  608. /package/dist/{widget → core}/swapDetails/useSwapDetailsListProps.d.ts +0 -0
  609. /package/dist/{widget → core}/swapDetails/useSwapDetailsListProps.js +0 -0
  610. /package/dist/{widget → core}/swapDetails/youGet.d.ts +0 -0
  611. /package/dist/{widget → core}/swapDetails/youGet.js +0 -0
  612. /package/dist/{widget → core}/types.d.ts +0 -0
  613. /package/dist/external/.pnpm/{react-compiler-runtime@19.1.0-rc.2_react@19.1.0 → react-compiler-runtime@19.1.0-rc.2_react@19.1.1}/external/react-compiler-runtime/dist/index.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"overrides.js","sources":["../../src/tokens/overrides.ts"],"sourcesContent":["import type { TokenInfo, TokenList } from \"@uniswap/token-lists\";\nimport type { TokenListOverride } from \"./types\";\n\n// AAVE and GHO tokens have deprecated logos in some lists\nconst AAVE_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354\",\n};\nconst GHO_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/30663/large/gho-token-logo.png?1720517092\",\n};\n\n// override decimals that we know are wrong in Gemini token list https://paraswap.slack.com/archives/C01AUMPP56J/p1669810101097819?thread_ts=1669804269.667909&cid=C01AUMPP56J\nconst TokenListsOverrides: Record<string, TokenListOverride> = {\n // Ethereum\n \"https://tokens.uniswap.org\": {\n merge: {\n \"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9\": AAVE_OverrideTokenInfo,\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n \"https://raw.githubusercontent.com/paraswap/community-token-list/master/src/sources/paraswap.extralist.json\":\n {\n merge: {\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n // Optimism\n \"https://static.optimism.io/optimism.tokenlist.json\": {\n merge: {\n \"0x76fb31fb4af56892a25e32cfc43de717950c9278\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Avalanche\n \"https://raw.githubusercontent.com/pangolindex/tokenlists/main/pangolin.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n \"https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/mc.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Polygon\n \"https://unpkg.com/quickswap-default-token-list@latest/build/quickswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n \"https://unpkg.com/@cometh-game/default-token-list@latest/build/comethswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n\n // Arbitrum\n \"https://bridge.arbitrum.io/token-list-42161.json\": {\n // Gemini tokens list has been removed from our dApp, but we keep the overrides in case of similar issues in the future and a need of quick fix\n // \"https://www.gemini.com/uniswap/manifest.json\": {merge: {\n // \"0x6b0b3a982b4634ac68dd83a4dbf02311ce324181\": { decimals: 18 },\n // \"0xbb0e17ef65f82ab018d8edd776e8dd940327b28b\": { decimals: 18 },\n // \"0x18aaa7115705e8be94bffebde57af9bfc265b998\": { decimals: 18 },\n // }},\n // Arbitrum GMX is under an old address in the list\n remove: new Set([\"0x590020b1005b8b25f1a2c82c5f743c540dcfa24d\"]),\n },\n\n // Gnosis\n \"https://tokens.coingecko.com/xdai/all.json\": {\n merge: {\n \"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d\": { symbol: \"WXDAI\" },\n },\n },\n \"https://tokens.coingecko.com/polygon-pos/all.json\": {\n merge: {\n // MLN token with wrong decimals in the tokenList\n \"0xa9f37d84c856fda3812ad0519dad44fa0a3fe207\": { decimals: 18 },\n },\n },\n};\n\nexport function overrideTokenList(tokenList: TokenList, listURL: string) {\n const overrides = TokenListsOverrides[listURL];\n if (!overrides) return tokenList;\n\n const overriddenTokens = tokenList.tokens.reduce<TokenInfo[]>(\n (accum, tokenInfo) => {\n const remove = overrides.remove?.has(tokenInfo.address.toLowerCase());\n if (remove) return accum;\n\n const override = overrides?.merge?.[tokenInfo.address.toLowerCase()];\n const token = override ? { ...tokenInfo, ...override } : tokenInfo;\n\n accum.push(token);\n\n return accum;\n },\n []\n );\n\n if (overrides.add) {\n overriddenTokens.push(...overrides.add);\n }\n\n return { ...tokenList, tokens: overriddenTokens };\n}\n"],"names":["AAVE_OverrideTokenInfo","logoURI","GHO_OverrideTokenInfo","TokenListsOverrides","merge","symbol","name","remove","Set","decimals","overrideTokenList","tokenList","listURL","overrides","overriddenTokens","tokens","reduce","accum","tokenInfo","has","address","toLowerCase","override","token","push","add"],"mappings":"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"}
1
+ {"version":3,"file":"overrides.js","sources":["../../src/tokens/overrides.ts"],"sourcesContent":["import type { TokenInfo, TokenList } from \"@uniswap/token-lists\";\nimport type { TokenListOverride } from \"./types\";\n\n// AAVE and GHO tokens have deprecated logos in some lists\nconst AAVE_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354\",\n};\nconst GHO_OverrideTokenInfo: Partial<TokenInfo> = {\n logoURI:\n \"https://coin-images.coingecko.com/coins/images/30663/large/gho-token-logo.png?1720517092\",\n};\n\n// override decimals that we know are wrong in Gemini token list https://paraswap.slack.com/archives/C01AUMPP56J/p1669810101097819?thread_ts=1669804269.667909&cid=C01AUMPP56J\nconst TokenListsOverrides: Record<string, TokenListOverride> = {\n // Ethereum\n \"https://tokens.uniswap.org\": {\n merge: {\n \"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9\": AAVE_OverrideTokenInfo,\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n \"https://raw.githubusercontent.com/paraswap/community-token-list/master/src/sources/paraswap.extralist.json\":\n {\n merge: {\n \"0x40d16fc0246ad3160ccc09b8d0d3a2cd28ae6c2f\": GHO_OverrideTokenInfo,\n },\n },\n\n // Optimism\n \"https://static.optimism.io/optimism.tokenlist.json\": {\n merge: {\n \"0x76fb31fb4af56892a25e32cfc43de717950c9278\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Avalanche\n \"https://raw.githubusercontent.com/pangolindex/tokenlists/main/pangolin.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n \"https://raw.githubusercontent.com/traderjoe-xyz/joe-tokenlists/main/mc.tokenlist.json\":\n {\n merge: {\n \"0x63a72806098bd3d9520cc43356dd78afe5d386d9\": AAVE_OverrideTokenInfo,\n },\n },\n\n // Polygon\n \"https://unpkg.com/quickswap-default-token-list@latest/build/quickswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n \"https://unpkg.com/@cometh-game/default-token-list@latest/build/comethswap-default.tokenlist.json\":\n {\n merge: {\n \"0xd6df932a45c0f255f85145f286ea0b292b21c90b\": AAVE_OverrideTokenInfo,\n \"0x7ceb23fd6bc0add59e62ac25578270cff1b9f619\": {\n symbol: \"WETH\",\n name: \"Wrapped Ether\",\n },\n },\n },\n\n // Arbitrum\n \"https://bridge.arbitrum.io/token-list-42161.json\": {\n // Gemini tokens list has been removed from our dApp, but we keep the overrides in case of similar issues in the future and a need of quick fix\n // \"https://www.gemini.com/uniswap/manifest.json\": {merge: {\n // \"0x6b0b3a982b4634ac68dd83a4dbf02311ce324181\": { decimals: 18 },\n // \"0xbb0e17ef65f82ab018d8edd776e8dd940327b28b\": { decimals: 18 },\n // \"0x18aaa7115705e8be94bffebde57af9bfc265b998\": { decimals: 18 },\n // }},\n // Arbitrum GMX is under an old address in the list\n remove: new Set([\"0x590020b1005b8b25f1a2c82c5f743c540dcfa24d\"]),\n },\n\n // Gnosis\n \"https://tokens.coingecko.com/xdai/all.json\": {\n merge: {\n \"0xe91d153e0b41518a2ce8dd3d7944fa863463a97d\": { symbol: \"WXDAI\" },\n },\n },\n \"https://tokens.coingecko.com/polygon-pos/all.json\": {\n merge: {\n // MLN token with wrong decimals in the tokenList\n \"0xa9f37d84c856fda3812ad0519dad44fa0a3fe207\": { decimals: 18 },\n },\n },\n};\n\nexport function overrideTokenList(tokenList: TokenList, listURL: string) {\n const overrides = TokenListsOverrides[listURL];\n if (!overrides) return tokenList;\n\n const overriddenTokens = tokenList.tokens.reduce<TokenInfo[]>(\n (accum, tokenInfo) => {\n const remove = overrides.remove?.has(tokenInfo.address.toLowerCase());\n if (remove) return accum;\n\n const override = overrides?.merge?.[tokenInfo.address.toLowerCase()];\n const token = override ? { ...tokenInfo, ...override } : tokenInfo;\n\n accum.push(token);\n\n return accum;\n },\n []\n );\n\n if (overrides.add) {\n overriddenTokens.push(...overrides.add);\n }\n\n return { ...tokenList, tokens: overriddenTokens };\n}\n"],"names":["AAVE_OverrideTokenInfo","logoURI","GHO_OverrideTokenInfo","TokenListsOverrides","merge","symbol","name","remove","Set","decimals","overrideTokenList","tokenList","listURL","overrides","overriddenTokens","tokens","reduce","accum","tokenInfo","has","address","toLowerCase","override","token","push","add"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport { useAllTokenLists } from \"./lists/hooks\";\nimport { stableCoinsTokenLists } from \"./stabeCoins\";\n\ntype UseFetchListsResult<T extends string> = {\n dataOrPlaceholder: TokenListFetched<T>;\n result: UseQueryResult<TokenListFetched<T>, AxiosError>;\n};\n\nfunction isDataEqual<T extends string | never = never>(\n currentData: TokenListFetched<T> | undefined,\n incomingData: TokenListFetched<T>\n): currentData is typeof incomingData {\n // there was no oldData --> data not equal\n if (!currentData) return false;\n // data was a placeholder (available = false) and data.available changed --> data not equal\n if (!currentData.available || !incomingData.available)\n return currentData.available !== incomingData.available;\n // incoming list.version <= current list.version --> consider data equal (don't replace with incoming older version)\n const isOlderOrEqual =\n versionComparator(incomingData.data.version, currentData.data.version) <= 0;\n return isOlderOrEqual;\n}\n\nexport function produceQueryOptions<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n) {\n // there are duplicate listURLs because in lists.json same list can be present for multiple chains\n const uniqueListURLs = Array.from(new Set(listURLs));\n\n return (\n uniqueListURLs\n // to prevent occasional `token_list_download_error:\"\"` event tag\n .filter(isTruthy)\n .map<UseQueryOptions<TokenListFetched<T>, AxiosError>>((listURL) => ({\n queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],\n queryFn: async ({ signal }) => {\n const _data = await downloadTokenListDataWithFallback(\n listURL,\n signal\n );\n\n const data = overrideTokenList(_data, listURL);\n\n return {\n url: listURL,\n name: data.name,\n data,\n tag,\n // possibly mitigates https://sentry.io/organizations/paraswap/discover/ui:3fa26b87e3594d1998ff9fb4770a26d9\n available: Array.isArray(data.tokens),\n };\n },\n notifyOnChangeProps: [\"data\"],\n placeholderData: constructPlaceholderData(listURL), // start with unavailable but still with url\n refetchOnMount: false,\n staleTime: Infinity,\n\n // custom comparison to optimize big token list comparison\n structuralSharing: (oldData, newData) =>\n isDataEqual(\n oldData as TokenListFetched<T> | undefined,\n newData as TokenListFetched<T>\n )\n ? oldData\n : replaceEqualDeep(oldData, newData),\n }))\n );\n}\n\nexport const useFetchListsWithQueryResult = <T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): UseFetchListsResult<T>[] => {\n const queryResults = useQueries<\n UseQueryOptions<TokenListFetched<T>, AxiosError>[]\n >({ queries: produceQueryOptions(listURLs, tag) });\n\n return useMemo<UseFetchListsResult<T>[]>(\n () =>\n queryResults.map((result) => ({\n // provide {url, name} even on error\n dataOrPlaceholder:\n result.data ||\n constructPlaceholderData(result.error?.config?.url || \"\"),\n result,\n })),\n [queryResults]\n );\n};\n\nexport function useFetchLists<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): TokenListFetched<T>[] {\n const queryResults = useFetchListsWithQueryResult(listURLs, tag);\n\n return useMemo(\n () => queryResults.map(({ dataOrPlaceholder }) => dataOrPlaceholder),\n [queryResults]\n );\n}\n\nexport function useFetchTokenListsOnAllChains(): TokenListFetched[] {\n const allTokenListsOnAllChains = useAllTokenLists();\n\n // stablecoins list is auxiliary list, always in use\n const includingStablecoins = stableCoinsTokenLists.concat(\n allTokenListsOnAllChains\n );\n\n return useFetchLists(includingStablecoins);\n}\n"],"names":["isDataEqual","currentData","incomingData","available","isOlderOrEqual","versionComparator","data","version","produceQueryOptions","listURLs","tag","uniqueListURLs","Array","from","Set","filter","isTruthy","map","listURL","queryKey","QUERY_KEY_FETCH_TOKEN_LISTS","queryFn","signal","_data","downloadTokenListDataWithFallback","overrideTokenList","url","name","isArray","tokens","notifyOnChangeProps","placeholderData","constructPlaceholderData","refetchOnMount","staleTime","Infinity","structuralSharing","oldData","newData","replaceEqualDeep","useFetchListsWithQueryResult","$","_c","t0","t1","queries","queryResults","useQueries","t2","t3","_temp","useFetchLists","_temp2","dataOrPlaceholder","useFetchTokenListsOnAllChains","allTokenListsOnAllChains","useAllTokenLists","stableCoinsTokenLists","concat","includingStablecoins","result","error","config"],"mappings":"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"}
1
+ {"version":3,"file":"queries.js","sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport { useAllTokenLists } from \"./lists/hooks\";\nimport { stableCoinsTokenLists } from \"./stabeCoins\";\n\ntype UseFetchListsResult<T extends string> = {\n dataOrPlaceholder: TokenListFetched<T>;\n result: UseQueryResult<TokenListFetched<T>, AxiosError>;\n};\n\nfunction isDataEqual<T extends string | never = never>(\n currentData: TokenListFetched<T> | undefined,\n incomingData: TokenListFetched<T>\n): currentData is typeof incomingData {\n // there was no oldData --> data not equal\n if (!currentData) return false;\n // data was a placeholder (available = false) and data.available changed --> data not equal\n if (!currentData.available || !incomingData.available)\n return currentData.available !== incomingData.available;\n // incoming list.version <= current list.version --> consider data equal (don't replace with incoming older version)\n const isOlderOrEqual =\n versionComparator(incomingData.data.version, currentData.data.version) <= 0;\n return isOlderOrEqual;\n}\n\nexport function produceQueryOptions<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n) {\n // there are duplicate listURLs because in lists.json same list can be present for multiple chains\n const uniqueListURLs = Array.from(new Set(listURLs));\n\n return (\n uniqueListURLs\n // to prevent occasional `token_list_download_error:\"\"` event tag\n .filter(isTruthy)\n .map<UseQueryOptions<TokenListFetched<T>, AxiosError>>((listURL) => ({\n queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],\n queryFn: async ({ signal }) => {\n const _data = await downloadTokenListDataWithFallback(\n listURL,\n signal\n );\n\n const data = overrideTokenList(_data, listURL);\n\n return {\n url: listURL,\n name: data.name,\n data,\n tag,\n // possibly mitigates https://sentry.io/organizations/paraswap/discover/ui:3fa26b87e3594d1998ff9fb4770a26d9\n available: Array.isArray(data.tokens),\n };\n },\n notifyOnChangeProps: [\"data\"],\n placeholderData: constructPlaceholderData(listURL), // start with unavailable but still with url\n refetchOnMount: false,\n staleTime: Infinity,\n\n // custom comparison to optimize big token list comparison\n structuralSharing: (oldData, newData) =>\n isDataEqual(\n oldData as TokenListFetched<T> | undefined,\n newData as TokenListFetched<T>\n )\n ? oldData\n : replaceEqualDeep(oldData, newData),\n }))\n );\n}\n\nexport const useFetchListsWithQueryResult = <T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): UseFetchListsResult<T>[] => {\n const queryResults = useQueries<\n UseQueryOptions<TokenListFetched<T>, AxiosError>[]\n >({ queries: produceQueryOptions(listURLs, tag) });\n\n return useMemo<UseFetchListsResult<T>[]>(\n () =>\n queryResults.map((result) => ({\n // provide {url, name} even on error\n dataOrPlaceholder:\n result.data ||\n constructPlaceholderData(result.error?.config?.url || \"\"),\n result,\n })),\n [queryResults]\n );\n};\n\nexport function useFetchLists<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): TokenListFetched<T>[] {\n const queryResults = useFetchListsWithQueryResult(listURLs, tag);\n\n return useMemo(\n () => queryResults.map(({ dataOrPlaceholder }) => dataOrPlaceholder),\n [queryResults]\n );\n}\n\nexport function useFetchTokenListsOnAllChains(): TokenListFetched[] {\n const allTokenListsOnAllChains = useAllTokenLists();\n\n // stablecoins list is auxiliary list, always in use\n const includingStablecoins = stableCoinsTokenLists.concat(\n allTokenListsOnAllChains\n );\n\n return useFetchLists(includingStablecoins);\n}\n"],"names":["isDataEqual","currentData","incomingData","available","isOlderOrEqual","versionComparator","data","version","produceQueryOptions","listURLs","tag","uniqueListURLs","Array","from","Set","filter","isTruthy","map","listURL","queryKey","QUERY_KEY_FETCH_TOKEN_LISTS","queryFn","signal","_data","downloadTokenListDataWithFallback","overrideTokenList","url","name","isArray","tokens","notifyOnChangeProps","placeholderData","constructPlaceholderData","refetchOnMount","staleTime","Infinity","structuralSharing","oldData","newData","replaceEqualDeep","useFetchListsWithQueryResult","$","_c","t0","t1","queries","queryResults","useQueries","t2","t3","_temp","useFetchLists","_temp2","dataOrPlaceholder","useFetchTokenListsOnAllChains","allTokenListsOnAllChains","useAllTokenLists","stableCoinsTokenLists","concat","includingStablecoins","result","error","config"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../src/tokens/stabeCoins/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { stableCoinsTokenLists } from \".\";\nimport { useFetchLists } from \"../queries\";\nimport type { ChainTokensSet, TokenListFetched } from \"../types\";\nimport {\n checkAddressesBelongToChainSet,\n tokenlistsToSetsByChain,\n} from \"../utils/sets\";\n\nexport function useStableCoinTokenLists(): TokenListFetched<\"stablecoin\">[] {\n return useFetchLists(stableCoinsTokenLists, \"stablecoin\");\n}\n\n// compose stablecoin sets\nexport function useStablecoinSetsByChain(): ChainTokensSet {\n const lists = useStableCoinTokenLists();\n\n return useMemo(() => tokenlistsToSetsByChain(lists), [lists]);\n}\n\nexport function useIsAddressStablecoin(\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n const chainId2StableCoinSets = useStablecoinSetsByChain();\n return checkAddressesBelongToChainSet(\n chainId2StableCoinSets,\n addresses,\n chainId\n );\n}\n"],"names":["useStableCoinTokenLists","useFetchLists","stableCoinsTokenLists","useStablecoinSetsByChain","$","_c","lists","t0","t1","tokenlistsToSetsByChain","useIsAddressStablecoin","addresses","chainId","chainId2StableCoinSets","checkAddressesBelongToChainSet"],"mappings":";;;;;;AASO,SAAAA,uBAAAA,GAAA;AAAA,EAAA,OACEC,aAAAA,CAAAC,uBAAqC,YAAY,CAAA;AAAC;AAIpD,SAAAC,wBAAAA,GAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACL,EAAA,MAAAC,QAAcN,uBAAAA,EAAwB;AAAE,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAJ,CAAAA,QAAAE,KAAAA,EAAA;AAEnBE,IAAAA,EAAAA,GAAAC,wBAAwBH,KAAK,CAAA;AAACF,IAAAA,CAAAA,MAAAE,KAAAA;AAAAF,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA;AAAAG,EAAAA,EAAAA,GAA9BC,EAAAA;AAA8B,EAAA,OAA5CD,EAAAA;AAAsD;AAGxD,SAAAG,sBAAAA,CAAAC,WAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAR,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAIL,EAAA,MAAAQ,yBAA+BV,wBAAAA,EAAyB;AAAE,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAO,SAAAA,IAAAP,CAAAA,QAAAQ,OAAAA,IAAAR,CAAAA,CAAA,CAAA,CAAA,KAAAS,sBAAAA,EAAA;AACnDN,IAAAA,EAAAA,GAAAO,8BAAAA,CACLD,sBAAAA,EACAF,SAAAA,EACAC,OACF,CAAA;AAACR,IAAAA,CAAAA,MAAAO,SAAAA;AAAAP,IAAAA,CAAAA,MAAAQ,OAAAA;AAAAR,IAAAA,CAAAA,MAAAS,sBAAAA;AAAAT,IAAAA,CAAAA,MAAAG,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAH,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAJMG,EAAAA;AAIN;;;;"}
1
+ {"version":3,"file":"hooks.js","sources":["../../../src/tokens/stabeCoins/hooks.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { stableCoinsTokenLists } from \".\";\nimport { useFetchLists } from \"../queries\";\nimport type { ChainTokensSet, TokenListFetched } from \"../types\";\nimport {\n checkAddressesBelongToChainSet,\n tokenlistsToSetsByChain,\n} from \"../utils/sets\";\n\nexport function useStableCoinTokenLists(): TokenListFetched<\"stablecoin\">[] {\n return useFetchLists(stableCoinsTokenLists, \"stablecoin\");\n}\n\n// compose stablecoin sets\nexport function useStablecoinSetsByChain(): ChainTokensSet {\n const lists = useStableCoinTokenLists();\n\n return useMemo(() => tokenlistsToSetsByChain(lists), [lists]);\n}\n\nexport function useIsAddressStablecoin(\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n const chainId2StableCoinSets = useStablecoinSetsByChain();\n return checkAddressesBelongToChainSet(\n chainId2StableCoinSets,\n addresses,\n chainId\n );\n}\n"],"names":["useStableCoinTokenLists","useFetchLists","stableCoinsTokenLists","useStablecoinSetsByChain","$","_c","lists","t0","t1","tokenlistsToSetsByChain","useIsAddressStablecoin","addresses","chainId","chainId2StableCoinSets","checkAddressesBelongToChainSet"],"mappings":";;;;;;AASO,SAAAA,uBAAAA,GAAA;AAAA,EAAA,OACEC,aAAAA,CAAAC,uBAAqC,YAAY,CAAA;AAAC;AAIpD,SAAAC,wBAAAA,GAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACL,EAAA,MAAAC,QAAcN,uBAAAA,EAAwB;AAAE,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAJ,CAAAA,QAAAE,KAAAA,EAAA;AAEnBE,IAAAA,EAAAA,GAAAC,wBAAwBH,KAAK,CAAA;AAACF,IAAAA,CAAAA,MAAAE,KAAAA;AAAAF,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA,EAAA;AAAAG,EAAAA,EAAAA,GAA9BC,EAAAA;AAA8B,EAAA,OAA5CD,EAAAA;AAAsD;AAGxD,SAAAG,sBAAAA,CAAAC,WAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAR,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAIL,EAAA,MAAAQ,yBAA+BV,wBAAAA,EAAyB;AAAE,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAO,SAAAA,IAAAP,CAAAA,QAAAQ,OAAAA,IAAAR,CAAAA,CAAA,CAAA,CAAA,KAAAS,sBAAAA,EAAA;AACnDN,IAAAA,EAAAA,GAAAO,8BAAAA,CACLD,sBAAAA,EACAF,SAAAA,EACAC,OACF,CAAA;AAACR,IAAAA,CAAAA,MAAAO,SAAAA;AAAAP,IAAAA,CAAAA,MAAAQ,OAAAA;AAAAR,IAAAA,CAAAA,MAAAS,sBAAAA;AAAAT,IAAAA,CAAAA,MAAAG,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAH,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAJMG,EAAAA;AAIN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"constructTokens.js","sources":["../../../src/tokens/state/constructTokens.ts"],"sourcesContent":["import type { TokenFromList } from \"./types\";\n\nimport { isBlacklistedToken } from \"../blacklist\";\nimport type { ConstructedListsByURL } from \"../lists/state/types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\ninterface UpdatedTokenListsInput {\n enabledListURLs: string[];\n allListURLs: string[];\n tokensFromListByURL: ConstructedListsByURL;\n chainId: SupportedChainId;\n}\n\ninterface UpdatedTokenListsResult {\n list: TokenFromList[];\n disabledList: TokenFromList[];\n chainId: SupportedChainId;\n}\n\nexport function constructTokensFromLists({\n enabledListURLs,\n allListURLs,\n tokensFromListByURL,\n chainId,\n}: UpdatedTokenListsInput): UpdatedTokenListsResult | undefined {\n const addedAddressesSet = new Set<string>();\n\n function gatherUniqueTokens(listURLs: string[]): TokenFromList[] {\n const uniqueTokensFromList = listURLs.reduce<TokenFromList[]>(\n (accum, listURL) => {\n const constructedTokens = tokensFromListByURL[listURL];\n\n if (!constructedTokens) return accum;\n\n constructedTokens.list.forEach((token) => {\n // some lists contain tokens for multiple chains\n // tokens.fromLists must correspond to current chain\n // same as tokens.user & tokens.all\n if (token.network !== chainId) return;\n if (isBlacklistedToken(token)) return;\n\n const addressLowercase = token.address.toLowerCase();\n // already added\n if (addedAddressesSet.has(addressLowercase)) return;\n\n addedAddressesSet.add(addressLowercase);\n accum.push(token);\n });\n\n return accum;\n },\n []\n );\n\n return uniqueTokensFromList;\n }\n // iterating over enabledListURLs every time is less efficient,\n // but allows for a fixed token order\n // and no duplicate tokens from different lists\n const uniqueTokensFromList = gatherUniqueTokens(enabledListURLs);\n\n // don't suddenly empty tokens.fromLists while enabledListURLs are still fetching\n if (enabledListURLs.length > 0 && uniqueTokensFromList.length === 0) return;\n\n const enabledListsSet = new Set(enabledListURLs);\n const disabledListURLs = allListURLs.filter(\n (listURL) => !enabledListsSet.has(listURL)\n );\n\n const uniqueTokensFromDisabledList = gatherUniqueTokens(disabledListURLs);\n\n return {\n list: uniqueTokensFromList,\n disabledList: uniqueTokensFromDisabledList,\n chainId,\n };\n}\n"],"names":["constructTokensFromLists","enabledListURLs","allListURLs","tokensFromListByURL","chainId","addedAddressesSet","Set","gatherUniqueTokens","listURLs","uniqueTokensFromList","reduce","accum","listURL","constructedTokens","list","forEach","token","network","isBlacklistedToken","addressLowercase","address","toLowerCase","has","add","push","length","enabledListsSet","disabledListURLs","filter","uniqueTokensFromDisabledList","disabledList"],"mappings":";;AAmBO,SAASA,wBAAAA,CAAyB;AAAA,EACvCC,eAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,mBAAAA;AAAAA,EACAC;AACsB,CAAA,EAAwC;AAC9D,EAAA,MAAMC,iBAAAA,uBAAwBC,GAAAA,EAAY;AAE1C,EAAA,SAASC,mBAAmBC,QAAAA,EAAqC;AAC/D,IAAA,MAAMC,qBAAAA,GAAuBD,QAAAA,CAASE,MAAAA,CACpC,CAACC,OAAOC,OAAAA,KAAY;AAClB,MAAA,MAAMC,iBAAAA,GAAoBV,oBAAoBS,OAAO,CAAA;AAErD,MAAA,IAAI,CAACC,mBAAmB,OAAOF,KAAAA;AAE/BE,MAAAA,iBAAAA,CAAkBC,IAAAA,CAAKC,QAASC,CAAAA,KAAAA,KAAU;AAIxC,QAAA,IAAIA,KAAAA,CAAMC,YAAYb,OAAAA,EAAS;AAC/B,QAAA,IAAIc,kBAAAA,CAAmBF,KAAK,CAAA,EAAG;AAE/B,QAAA,MAAMG,gBAAAA,GAAmBH,KAAAA,CAAMI,OAAAA,CAAQC,WAAAA,EAAY;AAEnD,QAAA,IAAIhB,iBAAAA,CAAkBiB,GAAAA,CAAIH,gBAAgB,CAAA,EAAG;AAE7Cd,QAAAA,iBAAAA,CAAkBkB,IAAIJ,gBAAgB,CAAA;AACtCR,QAAAA,KAAAA,CAAMa,KAAKR,KAAK,CAAA;AAAA,OACjB,CAAA;AAED,MAAA,OAAOL,KAAAA;AAAAA,KACT,EACA,EACF,CAAA;AAEA,IAAA,OAAOF,qBAAAA;AAAAA;AAKT,EAAA,MAAMA,oBAAAA,GAAuBF,mBAAmBN,eAAe,CAAA;AAG/D,EAAA,IAAIA,eAAAA,CAAgBwB,MAAAA,GAAS,CAAA,IAAKhB,oBAAAA,CAAqBgB,WAAW,CAAA,EAAG;AAErE,EAAA,MAAMC,eAAAA,GAAkB,IAAIpB,GAAAA,CAAIL,eAAe,CAAA;AAC/C,EAAA,MAAM0B,gBAAAA,GAAmBzB,YAAY0B,MAAAA,CAClChB,CAAAA,OAAAA,KAAY,CAACc,eAAAA,CAAgBJ,GAAAA,CAAIV,OAAO,CAC3C,CAAA;AAEA,EAAA,MAAMiB,4BAAAA,GAA+BtB,mBAAmBoB,gBAAgB,CAAA;AAExE,EAAA,OAAO;AAAA,IACLb,IAAAA,EAAML,oBAAAA;AAAAA,IACNqB,YAAAA,EAAcD,4BAAAA;AAAAA,IACdzB;AAAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"constructTokens.js","sources":["../../../src/tokens/state/constructTokens.ts"],"sourcesContent":["import type { TokenFromList } from \"./types\";\n\nimport { isBlacklistedToken } from \"../blacklist\";\nimport type { ConstructedListsByURL } from \"../lists/state/types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\ninterface UpdatedTokenListsInput {\n enabledListURLs: string[];\n allListURLs: string[];\n tokensFromListByURL: ConstructedListsByURL;\n chainId: SupportedChainId;\n}\n\ninterface UpdatedTokenListsResult {\n list: TokenFromList[];\n disabledList: TokenFromList[];\n chainId: SupportedChainId;\n}\n\nexport function constructTokensFromLists({\n enabledListURLs,\n allListURLs,\n tokensFromListByURL,\n chainId,\n}: UpdatedTokenListsInput): UpdatedTokenListsResult | undefined {\n const addedAddressesSet = new Set<string>();\n\n function gatherUniqueTokens(listURLs: string[]): TokenFromList[] {\n const uniqueTokensFromList = listURLs.reduce<TokenFromList[]>(\n (accum, listURL) => {\n const constructedTokens = tokensFromListByURL[listURL];\n\n if (!constructedTokens) return accum;\n\n constructedTokens.list.forEach((token) => {\n // some lists contain tokens for multiple chains\n // tokens.fromLists must correspond to current chain\n // same as tokens.user & tokens.all\n if (token.network !== chainId) return;\n if (isBlacklistedToken(token)) return;\n\n const addressLowercase = token.address.toLowerCase();\n // already added\n if (addedAddressesSet.has(addressLowercase)) return;\n\n addedAddressesSet.add(addressLowercase);\n accum.push(token);\n });\n\n return accum;\n },\n []\n );\n\n return uniqueTokensFromList;\n }\n // iterating over enabledListURLs every time is less efficient,\n // but allows for a fixed token order\n // and no duplicate tokens from different lists\n const uniqueTokensFromList = gatherUniqueTokens(enabledListURLs);\n\n // don't suddenly empty tokens.fromLists while enabledListURLs are still fetching\n if (enabledListURLs.length > 0 && uniqueTokensFromList.length === 0) return;\n\n const enabledListsSet = new Set(enabledListURLs);\n const disabledListURLs = allListURLs.filter(\n (listURL) => !enabledListsSet.has(listURL)\n );\n\n const uniqueTokensFromDisabledList = gatherUniqueTokens(disabledListURLs);\n\n return {\n list: uniqueTokensFromList,\n disabledList: uniqueTokensFromDisabledList,\n chainId,\n };\n}\n"],"names":["constructTokensFromLists","enabledListURLs","allListURLs","tokensFromListByURL","chainId","addedAddressesSet","Set","gatherUniqueTokens","listURLs","uniqueTokensFromList","reduce","accum","listURL","constructedTokens","list","forEach","token","network","isBlacklistedToken","addressLowercase","address","toLowerCase","has","add","push","length","enabledListsSet","disabledListURLs","filter","uniqueTokensFromDisabledList","disabledList"],"mappings":";;AAmBO,SAASA,wBAAAA,CAAyB;AAAA,EACvCC,eAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,mBAAAA;AAAAA,EACAC;AACsB,CAAA,EAAwC;AAC9D,EAAA,MAAMC,iBAAAA,uBAAwBC,GAAAA,EAAY;AAE1C,EAAA,SAASC,mBAAmBC,QAAAA,EAAqC;AAC/D,IAAA,MAAMC,qBAAAA,GAAuBD,QAAAA,CAASE,MAAAA,CACpC,CAACC,OAAOC,OAAAA,KAAY;AAClB,MAAA,MAAMC,iBAAAA,GAAoBV,oBAAoBS,OAAO,CAAA;AAErD,MAAA,IAAI,CAACC,mBAAmB,OAAOF,KAAAA;AAE/BE,MAAAA,iBAAAA,CAAkBC,IAAAA,CAAKC,QAASC,CAAAA,KAAAA,KAAU;AAIxC,QAAA,IAAIA,KAAAA,CAAMC,YAAYb,OAAAA,EAAS;AAC/B,QAAA,IAAIc,kBAAAA,CAAmBF,KAAK,CAAA,EAAG;AAE/B,QAAA,MAAMG,gBAAAA,GAAmBH,KAAAA,CAAMI,OAAAA,CAAQC,WAAAA,EAAY;AAEnD,QAAA,IAAIhB,iBAAAA,CAAkBiB,GAAAA,CAAIH,gBAAgB,CAAA,EAAG;AAE7Cd,QAAAA,iBAAAA,CAAkBkB,IAAIJ,gBAAgB,CAAA;AACtCR,QAAAA,KAAAA,CAAMa,KAAKR,KAAK,CAAA;AAAA,MAClB,CAAC,CAAA;AAED,MAAA,OAAOL,KAAAA;AAAAA,IACT,CAAA,EACA,EACF,CAAA;AAEA,IAAA,OAAOF,qBAAAA;AAAAA,EACT;AAIA,EAAA,MAAMA,oBAAAA,GAAuBF,mBAAmBN,eAAe,CAAA;AAG/D,EAAA,IAAIA,eAAAA,CAAgBwB,MAAAA,GAAS,CAAA,IAAKhB,oBAAAA,CAAqBgB,WAAW,CAAA,EAAG;AAErE,EAAA,MAAMC,eAAAA,GAAkB,IAAIpB,GAAAA,CAAIL,eAAe,CAAA;AAC/C,EAAA,MAAM0B,gBAAAA,GAAmBzB,YAAY0B,MAAAA,CAClChB,CAAAA,OAAAA,KAAY,CAACc,eAAAA,CAAgBJ,GAAAA,CAAIV,OAAO,CAC3C,CAAA;AAEA,EAAA,MAAMiB,4BAAAA,GAA+BtB,mBAAmBoB,gBAAgB,CAAA;AAExE,EAAA,OAAO;AAAA,IACLb,IAAAA,EAAML,oBAAAA;AAAAA,IACNqB,YAAAA,EAAcD,4BAAAA;AAAAA,IACdzB;AAAAA,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokensAtom.js","sources":["../../../src/tokens/state/tokensAtom.ts"],"sourcesContent":["import type { TokenFromList } from \"./types\";\nimport {\n constructedTokensByURLAtom,\n tokenListsAtom,\n} from \"../lists/state/tokenListsStateAtom\";\nimport { atom } from \"jotai\";\nimport { constructTokensFromLists } from \"./constructTokens\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\ntype TokensFromLists = {\n tokens: TokenFromList[];\n addressMap: Record<string, TokenFromList>;\n};\n\ntype TokensFromListsState = {\n listByChainId: Record<number, TokensFromLists>;\n disabledListByChainId: Record<number, TokensFromLists>;\n};\n\nexport const fromListsAtom = atom<TokensFromListsState>((get) => {\n // get the current list atoms\n const tokenListsState = get(tokenListsAtom);\n const constructedTokensByURLState = get(constructedTokensByURLAtom);\n\n const chainsFromLists = Object.keys(tokenListsState)\n .map(Number)\n .filter(isSupportedChainId);\n\n // atom with the lists of constructed SDK tokens\n const fromLists = chainsFromLists.reduce<TokensFromListsState>(\n (acc, chainId) => {\n const tokenListForChain = tokenListsState[chainId];\n if (!tokenListForChain) return acc;\n\n const constructedLists = constructTokensFromLists({\n enabledListURLs: tokenListForChain.enabled || [],\n tokensFromListByURL: constructedTokensByURLState,\n allListURLs: tokenListForChain.all || [],\n chainId,\n });\n if (!constructedLists) return acc;\n\n acc.listByChainId[chainId] = {\n tokens: constructedLists.list,\n addressMap: gatherObjectsByProp(constructedLists.list, (token) =>\n token.address.toLowerCase()\n ),\n };\n acc.disabledListByChainId[chainId] = {\n tokens: constructedLists.disabledList,\n addressMap: gatherObjectsByProp(\n constructedLists.disabledList,\n (token) => token.address.toLowerCase()\n ),\n };\n\n return acc;\n },\n {\n listByChainId: {},\n disabledListByChainId: {},\n }\n );\n\n return fromLists;\n});\n"],"names":["fromListsAtom","atom","get","tokenListsState","tokenListsAtom","constructedTokensByURLState","constructedTokensByURLAtom","chainsFromLists","Object","keys","map","Number","filter","isSupportedChainId","fromLists","reduce","acc","chainId","tokenListForChain","constructedLists","constructTokensFromLists","enabledListURLs","enabled","tokensFromListByURL","allListURLs","all","listByChainId","tokens","list","addressMap","gatherObjectsByProp","token","address","toLowerCase","disabledListByChainId","disabledList"],"mappings":";;;;;;AAoBO,MAAMA,aAAAA,GAAgBC,KAA4BC,CAAAA,GAAAA,KAAQ;AAE/D,EAAA,MAAMC,eAAAA,GAAkBD,IAAIE,cAAc,CAAA;AAC1C,EAAA,MAAMC,2BAAAA,GAA8BH,IAAII,0BAA0B,CAAA;AAElE,EAAA,MAAMC,eAAAA,GAAkBC,OAAOC,IAAAA,CAAKN,eAAe,EAChDO,GAAAA,CAAIC,MAAM,CAAA,CACVC,MAAAA,CAAOC,kBAAkB,CAAA;AAG5B,EAAA,MAAMC,SAAAA,GAAYP,eAAAA,CAAgBQ,MAAAA,CAChC,CAACC,KAAKC,OAAAA,KAAY;AAChB,IAAA,MAAMC,iBAAAA,GAAoBf,gBAAgBc,OAAO,CAAA;AACjD,IAAA,IAAI,CAACC,mBAAmB,OAAOF,GAAAA;AAE/B,IAAA,MAAMG,mBAAmBC,wBAAAA,CAAyB;AAAA,MAChDC,eAAAA,EAAiBH,iBAAAA,CAAkBI,OAAAA,IAAW,EAAA;AAAA,MAC9CC,mBAAAA,EAAqBlB,2BAAAA;AAAAA,MACrBmB,WAAAA,EAAaN,iBAAAA,CAAkBO,GAAAA,IAAO,EAAA;AAAA,MACtCR;AAAAA,KACD,CAAA;AACD,IAAA,IAAI,CAACE,kBAAkB,OAAOH,GAAAA;AAE9BA,IAAAA,GAAAA,CAAIU,aAAAA,CAAcT,OAAO,CAAA,GAAI;AAAA,MAC3BU,QAAQR,gBAAAA,CAAiBS,IAAAA;AAAAA,MACzBC,UAAAA,EAAYC,oBAAoBX,gBAAAA,CAAiBS,IAAAA,EAAOG,WACtDA,KAAAA,CAAMC,OAAAA,CAAQC,aAChB;AAAA,KACF;AACAjB,IAAAA,GAAAA,CAAIkB,qBAAAA,CAAsBjB,OAAO,CAAA,GAAI;AAAA,MACnCU,QAAQR,gBAAAA,CAAiBgB,YAAAA;AAAAA,MACzBN,UAAAA,EAAYC,oBACVX,gBAAAA,CAAiBgB,YAAAA,EAChBJ,WAAUA,KAAAA,CAAMC,OAAAA,CAAQC,aAC3B;AAAA,KACF;AAEA,IAAA,OAAOjB,GAAAA;AAAAA,GACT,EACA;AAAA,IACEU,eAAe,EAAC;AAAA,IAChBQ,uBAAuB;AAAC,GAE5B,CAAA;AAEA,EAAA,OAAOpB,SAAAA;AACT,CAAC;;;;"}
1
+ {"version":3,"file":"tokensAtom.js","sources":["../../../src/tokens/state/tokensAtom.ts"],"sourcesContent":["import type { TokenFromList } from \"./types\";\nimport {\n constructedTokensByURLAtom,\n tokenListsAtom,\n} from \"../lists/state/tokenListsStateAtom\";\nimport { atom } from \"jotai\";\nimport { constructTokensFromLists } from \"./constructTokens\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\ntype TokensFromLists = {\n tokens: TokenFromList[];\n addressMap: Record<string, TokenFromList>;\n};\n\ntype TokensFromListsState = {\n listByChainId: Record<number, TokensFromLists>;\n disabledListByChainId: Record<number, TokensFromLists>;\n};\n\nexport const fromListsAtom = atom<TokensFromListsState>((get) => {\n // get the current list atoms\n const tokenListsState = get(tokenListsAtom);\n const constructedTokensByURLState = get(constructedTokensByURLAtom);\n\n const chainsFromLists = Object.keys(tokenListsState)\n .map(Number)\n .filter(isSupportedChainId);\n\n // atom with the lists of constructed SDK tokens\n const fromLists = chainsFromLists.reduce<TokensFromListsState>(\n (acc, chainId) => {\n const tokenListForChain = tokenListsState[chainId];\n if (!tokenListForChain) return acc;\n\n const constructedLists = constructTokensFromLists({\n enabledListURLs: tokenListForChain.enabled || [],\n tokensFromListByURL: constructedTokensByURLState,\n allListURLs: tokenListForChain.all || [],\n chainId,\n });\n if (!constructedLists) return acc;\n\n acc.listByChainId[chainId] = {\n tokens: constructedLists.list,\n addressMap: gatherObjectsByProp(constructedLists.list, (token) =>\n token.address.toLowerCase()\n ),\n };\n acc.disabledListByChainId[chainId] = {\n tokens: constructedLists.disabledList,\n addressMap: gatherObjectsByProp(\n constructedLists.disabledList,\n (token) => token.address.toLowerCase()\n ),\n };\n\n return acc;\n },\n {\n listByChainId: {},\n disabledListByChainId: {},\n }\n );\n\n return fromLists;\n});\n"],"names":["fromListsAtom","atom","get","tokenListsState","tokenListsAtom","constructedTokensByURLState","constructedTokensByURLAtom","chainsFromLists","Object","keys","map","Number","filter","isSupportedChainId","fromLists","reduce","acc","chainId","tokenListForChain","constructedLists","constructTokensFromLists","enabledListURLs","enabled","tokensFromListByURL","allListURLs","all","listByChainId","tokens","list","addressMap","gatherObjectsByProp","token","address","toLowerCase","disabledListByChainId","disabledList"],"mappings":";;;;;;AAoBO,MAAMA,aAAAA,GAAgBC,KAA4BC,CAAAA,GAAAA,KAAQ;AAE/D,EAAA,MAAMC,eAAAA,GAAkBD,IAAIE,cAAc,CAAA;AAC1C,EAAA,MAAMC,2BAAAA,GAA8BH,IAAII,0BAA0B,CAAA;AAElE,EAAA,MAAMC,eAAAA,GAAkBC,OAAOC,IAAAA,CAAKN,eAAe,EAChDO,GAAAA,CAAIC,MAAM,CAAA,CACVC,MAAAA,CAAOC,kBAAkB,CAAA;AAG5B,EAAA,MAAMC,SAAAA,GAAYP,eAAAA,CAAgBQ,MAAAA,CAChC,CAACC,KAAKC,OAAAA,KAAY;AAChB,IAAA,MAAMC,iBAAAA,GAAoBf,gBAAgBc,OAAO,CAAA;AACjD,IAAA,IAAI,CAACC,mBAAmB,OAAOF,GAAAA;AAE/B,IAAA,MAAMG,mBAAmBC,wBAAAA,CAAyB;AAAA,MAChDC,eAAAA,EAAiBH,iBAAAA,CAAkBI,OAAAA,IAAW,EAAA;AAAA,MAC9CC,mBAAAA,EAAqBlB,2BAAAA;AAAAA,MACrBmB,WAAAA,EAAaN,iBAAAA,CAAkBO,GAAAA,IAAO,EAAA;AAAA,MACtCR;AAAAA,KACD,CAAA;AACD,IAAA,IAAI,CAACE,kBAAkB,OAAOH,GAAAA;AAE9BA,IAAAA,GAAAA,CAAIU,aAAAA,CAAcT,OAAO,CAAA,GAAI;AAAA,MAC3BU,QAAQR,gBAAAA,CAAiBS,IAAAA;AAAAA,MACzBC,UAAAA,EAAYC,oBAAoBX,gBAAAA,CAAiBS,IAAAA,EAAOG,WACtDA,KAAAA,CAAMC,OAAAA,CAAQC,aAChB;AAAA,KACF;AACAjB,IAAAA,GAAAA,CAAIkB,qBAAAA,CAAsBjB,OAAO,CAAA,GAAI;AAAA,MACnCU,QAAQR,gBAAAA,CAAiBgB,YAAAA;AAAAA,MACzBN,UAAAA,EAAYC,oBACVX,gBAAAA,CAAiBgB,YAAAA,EAChBJ,WAAUA,KAAAA,CAAMC,OAAAA,CAAQC,aAC3B;AAAA,KACF;AAEA,IAAA,OAAOjB,GAAAA;AAAAA,EACT,CAAA,EACA;AAAA,IACEU,eAAe,EAAC;AAAA,IAChBQ,uBAAuB;AAAC,GAE5B,CAAA;AAEA,EAAA,OAAOpB,SAAAA;AACT,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.js","sources":["../../../src/tokens/utils/filtering.ts"],"sourcesContent":["import { stringIncludes, isTruthy } from \"@/lib/utils\";\nimport { isAddress } from \"viem\";\nimport { isBlacklistedToken } from \"../blacklist\";\nimport type { Token } from \"../state/types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nconst blackListedTokenFilter: TokenFilterFunction = (token) => {\n if (isBlacklistedToken(token)) return false;\n return null;\n};\n\nfunction composeTokenFilters(\n filters: TokenFilterFunction[],\n filterString: string\n): <T extends Token>(token: T) => boolean {\n return (token) => {\n for (const filterFunc of filters) {\n const filterResult = filterFunc(token, filterString);\n if (filterResult != null) return filterResult;\n }\n\n return false;\n };\n}\n\ninterface FilterTokensInput<T extends Token> {\n filterString: string;\n networkFilter?: SupportedChainId;\n tokenArray: T[];\n customFilter?: TokenFilterFunction;\n filterBySymbol?: TokenFilterFunction | null;\n filterByName?: TokenFilterFunction | null;\n filterByAddress?: TokenFilterFunction | null;\n filterByNetwork?: TokenFilterNyNetworkFunction;\n // return when first Token found\n // consider it [tokenArray.find()] vs tokenArray.filter()\n firstOne?: boolean;\n}\n\ntype TokenFilterFunction = <T extends Token>(\n token: T,\n filterString: string\n) => boolean | null; // null means go to next filter function\n\ntype TokenFilterNyNetworkFunction = <T extends Token>(\n token: T,\n networkFilter?: number\n) => boolean;\n\nconst filterBySymbolDefault: TokenFilterFunction = (token, filterString) => {\n // symbol is now optional in paraswap-sdk\n // though it's always available in practice\n const bySymbol = token.symbol\n ? stringIncludes(token.symbol, filterString)\n : false;\n return bySymbol || null; // on false go to next filter\n};\n\nconst filterByNameDefault: TokenFilterFunction = (token, filterString) => {\n // name is now optional\n // and won't necessarily be available in imported tokens for example\n const byName = token.name ? stringIncludes(token.name, filterString) : false;\n return byName || null; // on false go to next filter\n};\n\nconst filterByAddressDefault: TokenFilterFunction = (token, filterString) => {\n const byAddress = stringIncludes(token.address, filterString);\n return byAddress || null; // on false go to next filter\n};\n\nconst filterByNetworkDefault: TokenFilterNyNetworkFunction = (\n token,\n networkFilter\n) => {\n if (networkFilter === undefined) return true;\n return token.network === networkFilter;\n};\n\nconst BANNED_KEYWORDS_LOWERCASE = [\"derivative\", \"leverage\"];\nconst excludeDerivatives: TokenFilterFunction = (token) => {\n const name = token.name;\n const byName =\n !!name &&\n BANNED_KEYWORDS_LOWERCASE.some((keyword) => stringIncludes(name, keyword));\n if (byName) return false;\n\n const symbol = token.symbol;\n const bySymbol =\n !!symbol &&\n BANNED_KEYWORDS_LOWERCASE.some((keyword) =>\n stringIncludes(symbol, keyword)\n );\n if (bySymbol) return false;\n\n return null;\n};\n\nexport const filterTokens = <T extends Token>({\n filterString,\n networkFilter,\n tokenArray,\n customFilter,\n filterBySymbol = filterBySymbolDefault,\n filterByName = filterByNameDefault,\n filterByAddress = filterByAddressDefault,\n filterByNetwork = filterByNetworkDefault,\n firstOne = false,\n}: FilterTokensInput<T>): T[] => {\n if (!filterString && networkFilter === undefined && !customFilter)\n return tokenArray;\n\n // order matters\n const tokenFilters = [\n excludeDerivatives,\n blackListedTokenFilter, // first filter our blacklisted\n customFilter, // then if custom filter available\n // then either address or symbol filter, depending on if `filterString` is Address\n isAddress(filterString) ? filterByAddress : [filterBySymbol, filterByName],\n ]\n .flat()\n .filter(isTruthy);\n const composedTokenFilter = composeTokenFilters(tokenFilters, filterString);\n\n if (firstOne) {\n const tokenFound = tokenArray.find(composedTokenFilter);\n return tokenFound ? [tokenFound] : [];\n }\n\n const filteredArray = tokenArray.filter(\n (token) =>\n composedTokenFilter(token) && filterByNetwork(token, networkFilter)\n );\n\n return filteredArray;\n};\n"],"names":["blackListedTokenFilter","token","isBlacklistedToken","composeTokenFilters","filters","filterString","filterFunc","filterResult","filterBySymbolDefault","bySymbol","symbol","stringIncludes","filterByNameDefault","byName","name","filterByAddressDefault","byAddress","address","filterByNetworkDefault","networkFilter","undefined","network","BANNED_KEYWORDS_LOWERCASE","excludeDerivatives","some","keyword","filterTokens","tokenArray","customFilter","filterBySymbol","filterByName","filterByAddress","filterByNetwork","firstOne","tokenFilters","isAddress","flat","filter","isTruthy","composedTokenFilter","tokenFound","find","filteredArray"],"mappings":"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"}
1
+ {"version":3,"file":"filtering.js","sources":["../../../src/tokens/utils/filtering.ts"],"sourcesContent":["import { stringIncludes, isTruthy } from \"@/lib/utils\";\nimport { isAddress } from \"viem\";\nimport { isBlacklistedToken } from \"../blacklist\";\nimport type { Token } from \"../state/types\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nconst blackListedTokenFilter: TokenFilterFunction = (token) => {\n if (isBlacklistedToken(token)) return false;\n return null;\n};\n\nfunction composeTokenFilters(\n filters: TokenFilterFunction[],\n filterString: string\n): <T extends Token>(token: T) => boolean {\n return (token) => {\n for (const filterFunc of filters) {\n const filterResult = filterFunc(token, filterString);\n if (filterResult != null) return filterResult;\n }\n\n return false;\n };\n}\n\ninterface FilterTokensInput<T extends Token> {\n filterString: string;\n networkFilter?: SupportedChainId;\n tokenArray: T[];\n customFilter?: TokenFilterFunction;\n filterBySymbol?: TokenFilterFunction | null;\n filterByName?: TokenFilterFunction | null;\n filterByAddress?: TokenFilterFunction | null;\n filterByNetwork?: TokenFilterNyNetworkFunction;\n // return when first Token found\n // consider it [tokenArray.find()] vs tokenArray.filter()\n firstOne?: boolean;\n}\n\ntype TokenFilterFunction = <T extends Token>(\n token: T,\n filterString: string\n) => boolean | null; // null means go to next filter function\n\ntype TokenFilterNyNetworkFunction = <T extends Token>(\n token: T,\n networkFilter?: number\n) => boolean;\n\nconst filterBySymbolDefault: TokenFilterFunction = (token, filterString) => {\n // symbol is now optional in paraswap-sdk\n // though it's always available in practice\n const bySymbol = token.symbol\n ? stringIncludes(token.symbol, filterString)\n : false;\n return bySymbol || null; // on false go to next filter\n};\n\nconst filterByNameDefault: TokenFilterFunction = (token, filterString) => {\n // name is now optional\n // and won't necessarily be available in imported tokens for example\n const byName = token.name ? stringIncludes(token.name, filterString) : false;\n return byName || null; // on false go to next filter\n};\n\nconst filterByAddressDefault: TokenFilterFunction = (token, filterString) => {\n const byAddress = stringIncludes(token.address, filterString);\n return byAddress || null; // on false go to next filter\n};\n\nconst filterByNetworkDefault: TokenFilterNyNetworkFunction = (\n token,\n networkFilter\n) => {\n if (networkFilter === undefined) return true;\n return token.network === networkFilter;\n};\n\nconst BANNED_KEYWORDS_LOWERCASE = [\"derivative\", \"leverage\"];\nconst excludeDerivatives: TokenFilterFunction = (token) => {\n const name = token.name;\n const byName =\n !!name &&\n BANNED_KEYWORDS_LOWERCASE.some((keyword) => stringIncludes(name, keyword));\n if (byName) return false;\n\n const symbol = token.symbol;\n const bySymbol =\n !!symbol &&\n BANNED_KEYWORDS_LOWERCASE.some((keyword) =>\n stringIncludes(symbol, keyword)\n );\n if (bySymbol) return false;\n\n return null;\n};\n\nexport const filterTokens = <T extends Token>({\n filterString,\n networkFilter,\n tokenArray,\n customFilter,\n filterBySymbol = filterBySymbolDefault,\n filterByName = filterByNameDefault,\n filterByAddress = filterByAddressDefault,\n filterByNetwork = filterByNetworkDefault,\n firstOne = false,\n}: FilterTokensInput<T>): T[] => {\n if (!filterString && networkFilter === undefined && !customFilter)\n return tokenArray;\n\n // order matters\n const tokenFilters = [\n excludeDerivatives,\n blackListedTokenFilter, // first filter our blacklisted\n customFilter, // then if custom filter available\n // then either address or symbol filter, depending on if `filterString` is Address\n isAddress(filterString) ? filterByAddress : [filterBySymbol, filterByName],\n ]\n .flat()\n .filter(isTruthy);\n const composedTokenFilter = composeTokenFilters(tokenFilters, filterString);\n\n if (firstOne) {\n const tokenFound = tokenArray.find(composedTokenFilter);\n return tokenFound ? [tokenFound] : [];\n }\n\n const filteredArray = tokenArray.filter(\n (token) =>\n composedTokenFilter(token) && filterByNetwork(token, networkFilter)\n );\n\n return filteredArray;\n};\n"],"names":["blackListedTokenFilter","token","isBlacklistedToken","composeTokenFilters","filters","filterString","filterFunc","filterResult","filterBySymbolDefault","bySymbol","symbol","stringIncludes","filterByNameDefault","byName","name","filterByAddressDefault","byAddress","address","filterByNetworkDefault","networkFilter","undefined","network","BANNED_KEYWORDS_LOWERCASE","excludeDerivatives","some","keyword","filterTokens","tokenArray","customFilter","filterBySymbol","filterByName","filterByAddress","filterByNetwork","firstOne","tokenFilters","isAddress","flat","filter","isTruthy","composedTokenFilter","tokenFound","find","filteredArray"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sets.js","sources":["../../../src/tokens/utils/sets.ts"],"sourcesContent":["import type {\n TokenListFetched,\n TokenListCompiled,\n ChainTokensSet,\n} from \"../types\";\n\nexport function tokenlistsToSetsByChain<T extends string>(\n lists: TokenListFetched<T>[]\n): ChainTokensSet {\n const loadedLists = lists.filter(\n (list): list is TokenListCompiled<T> => list.available\n );\n\n const allTokens = loadedLists.flatMap((list) => list.data.tokens);\n\n return allTokens.reduce<ChainTokensSet>((accum, token) => {\n const set = accum[token.chainId] || new Set<string>();\n set.add(token.address.toLowerCase());\n\n accum[token.chainId] = set;\n return accum;\n }, {});\n}\n\nexport function checkAddressesBelongToChainSet(\n sets: ChainTokensSet,\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n if (!chainId) return false;\n const chainSets = sets[chainId];\n if (!chainSets) return false;\n\n return addresses.every(\n (address) => address && chainSets.has(address.toLowerCase())\n );\n}\n"],"names":["tokenlistsToSetsByChain","lists","loadedLists","filter","list","available","allTokens","flatMap","data","tokens","reduce","accum","token","set","chainId","Set","add","address","toLowerCase","checkAddressesBelongToChainSet","sets","addresses","chainSets","every","has"],"mappings":"AAMO,SAASA,wBACdC,KAAAA,EACgB;AAChB,EAAA,MAAMC,cAAcD,KAAAA,CAAME,MAAAA,CACxB,CAACC,IAAAA,KAAuCA,KAAKC,SAC/C,CAAA;AAEA,EAAA,MAAMC,YAAYJ,WAAAA,CAAYK,OAAAA,CAASH,CAAAA,IAAAA,KAASA,IAAAA,CAAKI,KAAKC,MAAM,CAAA;AAEhE,EAAA,OAAOH,SAAAA,CAAUI,MAAAA,CAAuB,CAACC,KAAAA,EAAOC,KAAAA,KAAU;AACxD,IAAA,MAAMC,MAAMF,KAAAA,CAAMC,KAAAA,CAAME,OAAO,CAAA,wBAASC,GAAAA,EAAY;AACpDF,IAAAA,GAAAA,CAAIG,GAAAA,CAAIJ,KAAAA,CAAMK,OAAAA,CAAQC,WAAAA,EAAa,CAAA;AAEnCP,IAAAA,KAAAA,CAAMC,KAAAA,CAAME,OAAO,CAAA,GAAID,GAAAA;AACvB,IAAA,OAAOF,KAAAA;AAAAA,GACT,EAAG,EAAE,CAAA;AACP;AAEO,SAASQ,8BAAAA,CACdC,IAAAA,EACAC,SAAAA,EACAP,OAAAA,EACS;AACT,EAAA,IAAI,CAACA,SAAS,OAAO,KAAA;AACrB,EAAA,MAAMQ,SAAAA,GAAYF,KAAKN,OAAO,CAAA;AAC9B,EAAA,IAAI,CAACQ,WAAW,OAAO,KAAA;AAEvB,EAAA,OAAOD,SAAAA,CAAUE,MACdN,CAAAA,OAAAA,KAAYA,OAAAA,IAAWK,UAAUE,GAAAA,CAAIP,OAAAA,CAAQC,WAAAA,EAAa,CAC7D,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"sets.js","sources":["../../../src/tokens/utils/sets.ts"],"sourcesContent":["import type {\n TokenListFetched,\n TokenListCompiled,\n ChainTokensSet,\n} from \"../types\";\n\nexport function tokenlistsToSetsByChain<T extends string>(\n lists: TokenListFetched<T>[]\n): ChainTokensSet {\n const loadedLists = lists.filter(\n (list): list is TokenListCompiled<T> => list.available\n );\n\n const allTokens = loadedLists.flatMap((list) => list.data.tokens);\n\n return allTokens.reduce<ChainTokensSet>((accum, token) => {\n const set = accum[token.chainId] || new Set<string>();\n set.add(token.address.toLowerCase());\n\n accum[token.chainId] = set;\n return accum;\n }, {});\n}\n\nexport function checkAddressesBelongToChainSet(\n sets: ChainTokensSet,\n addresses: (string | undefined)[],\n chainId?: number\n): boolean {\n if (!chainId) return false;\n const chainSets = sets[chainId];\n if (!chainSets) return false;\n\n return addresses.every(\n (address) => address && chainSets.has(address.toLowerCase())\n );\n}\n"],"names":["tokenlistsToSetsByChain","lists","loadedLists","filter","list","available","allTokens","flatMap","data","tokens","reduce","accum","token","set","chainId","Set","add","address","toLowerCase","checkAddressesBelongToChainSet","sets","addresses","chainSets","every","has"],"mappings":"AAMO,SAASA,wBACdC,KAAAA,EACgB;AAChB,EAAA,MAAMC,cAAcD,KAAAA,CAAME,MAAAA,CACxB,CAACC,IAAAA,KAAuCA,KAAKC,SAC/C,CAAA;AAEA,EAAA,MAAMC,YAAYJ,WAAAA,CAAYK,OAAAA,CAASH,CAAAA,IAAAA,KAASA,IAAAA,CAAKI,KAAKC,MAAM,CAAA;AAEhE,EAAA,OAAOH,SAAAA,CAAUI,MAAAA,CAAuB,CAACC,KAAAA,EAAOC,KAAAA,KAAU;AACxD,IAAA,MAAMC,MAAMF,KAAAA,CAAMC,KAAAA,CAAME,OAAO,CAAA,wBAASC,GAAAA,EAAY;AACpDF,IAAAA,GAAAA,CAAIG,GAAAA,CAAIJ,KAAAA,CAAMK,OAAAA,CAAQC,WAAAA,EAAa,CAAA;AAEnCP,IAAAA,KAAAA,CAAMC,KAAAA,CAAME,OAAO,CAAA,GAAID,GAAAA;AACvB,IAAA,OAAOF,KAAAA;AAAAA,EACT,CAAA,EAAG,EAAE,CAAA;AACP;AAEO,SAASQ,8BAAAA,CACdC,IAAAA,EACAC,SAAAA,EACAP,OAAAA,EACS;AACT,EAAA,IAAI,CAACA,SAAS,OAAO,KAAA;AACrB,EAAA,MAAMQ,SAAAA,GAAYF,KAAKN,OAAO,CAAA;AAC9B,EAAA,IAAI,CAACQ,WAAW,OAAO,KAAA;AAEvB,EAAA,OAAOD,SAAAA,CAAUE,MACdN,CAAAA,OAAAA,KAAYA,OAAAA,IAAWK,UAAUE,GAAAA,CAAIP,OAAAA,CAAQC,WAAAA,EAAa,CAC7D,CAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sorting.js","sources":["../../../src/tokens/utils/sorting.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"../state/types\";\nimport { isETH } from \"./eth\";\n\ntype TokenLikeMaybeWithUsdBalance = Pick<\n TokenMaybeWithUsdBalance,\n \"address\" | \"usdBalance\"\n>;\n\nexport function sortTokens(\n tokenA: TokenLikeMaybeWithUsdBalance,\n tokenB: TokenLikeMaybeWithUsdBalance\n) {\n // both tokens are native (from different chains) - first goes with bigger usdBalance\n if (\n isETH(tokenA) &&\n isETH(tokenB) &&\n \"usdBalance\" in tokenA &&\n \"usdBalance\" in tokenB &&\n tokenA.usdBalance &&\n tokenB.usdBalance\n ) {\n return tokenA.usdBalance > tokenB.usdBalance ? -1 : 1;\n }\n // Native Token goes first\n if (isETH(tokenA)) return -1;\n if (isETH(tokenB)) return 1;\n\n if (\"usdBalance\" in tokenA && \"usdBalance\" in tokenB) {\n const balanceA =\n \"usdBalance\" in tokenA && tokenA.usdBalance ? tokenA.usdBalance : 0;\n const balanceB =\n \"usdBalance\" in tokenB && tokenB.usdBalance ? tokenB.usdBalance : 0;\n\n // all other Tokens sort by USD balance\n const balDiff = balanceB - balanceA;\n return balDiff;\n }\n\n return 0;\n}\n"],"names":["sortTokens","tokenA","tokenB","isETH","usdBalance","balanceA","balanceB","balDiff"],"mappings":";;AAQO,SAASA,UAAAA,CACdC,QACAC,MAAAA,EACA;AAEA,EAAA,IACEC,KAAAA,CAAMF,MAAM,CAAA,IACZE,KAAAA,CAAMD,MAAM,CAAA,IACZ,YAAA,IAAgBD,MAAAA,IAChB,YAAA,IAAgBC,MAAAA,IAChBD,MAAAA,CAAOG,UAAAA,IACPF,OAAOE,UAAAA,EACP;AACA,IAAA,OAAOH,MAAAA,CAAOG,UAAAA,GAAaF,MAAAA,CAAOE,UAAAA,GAAa,EAAA,GAAK,CAAA;AAAA;AAGtD,EAAA,IAAID,KAAAA,CAAMF,MAAM,CAAA,EAAG,OAAO,EAAA;AAC1B,EAAA,IAAIE,KAAAA,CAAMD,MAAM,CAAA,EAAG,OAAO,CAAA;AAE1B,EAAA,IAAI,YAAA,IAAgBD,MAAAA,IAAU,YAAA,IAAgBC,MAAAA,EAAQ;AACpD,IAAA,MAAMG,WACJ,YAAA,IAAgBJ,MAAAA,IAAUA,MAAAA,CAAOG,UAAAA,GAAaH,OAAOG,UAAAA,GAAa,CAAA;AACpE,IAAA,MAAME,WACJ,YAAA,IAAgBJ,MAAAA,IAAUA,MAAAA,CAAOE,UAAAA,GAAaF,OAAOE,UAAAA,GAAa,CAAA;AAGpE,IAAA,MAAMG,UAAUD,QAAAA,GAAWD,QAAAA;AAC3B,IAAA,OAAOE,OAAAA;AAAAA;AAGT,EAAA,OAAO,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"sorting.js","sources":["../../../src/tokens/utils/sorting.ts"],"sourcesContent":["import type { TokenMaybeWithUsdBalance } from \"../state/types\";\nimport { isETH } from \"./eth\";\n\ntype TokenLikeMaybeWithUsdBalance = Pick<\n TokenMaybeWithUsdBalance,\n \"address\" | \"usdBalance\"\n>;\n\nexport function sortTokens(\n tokenA: TokenLikeMaybeWithUsdBalance,\n tokenB: TokenLikeMaybeWithUsdBalance\n) {\n // both tokens are native (from different chains) - first goes with bigger usdBalance\n if (\n isETH(tokenA) &&\n isETH(tokenB) &&\n \"usdBalance\" in tokenA &&\n \"usdBalance\" in tokenB &&\n tokenA.usdBalance &&\n tokenB.usdBalance\n ) {\n return tokenA.usdBalance > tokenB.usdBalance ? -1 : 1;\n }\n // Native Token goes first\n if (isETH(tokenA)) return -1;\n if (isETH(tokenB)) return 1;\n\n if (\"usdBalance\" in tokenA && \"usdBalance\" in tokenB) {\n const balanceA =\n \"usdBalance\" in tokenA && tokenA.usdBalance ? tokenA.usdBalance : 0;\n const balanceB =\n \"usdBalance\" in tokenB && tokenB.usdBalance ? tokenB.usdBalance : 0;\n\n // all other Tokens sort by USD balance\n const balDiff = balanceB - balanceA;\n return balDiff;\n }\n\n return 0;\n}\n"],"names":["sortTokens","tokenA","tokenB","isETH","usdBalance","balanceA","balanceB","balDiff"],"mappings":";;AAQO,SAASA,UAAAA,CACdC,QACAC,MAAAA,EACA;AAEA,EAAA,IACEC,KAAAA,CAAMF,MAAM,CAAA,IACZE,KAAAA,CAAMD,MAAM,CAAA,IACZ,YAAA,IAAgBD,MAAAA,IAChB,YAAA,IAAgBC,MAAAA,IAChBD,MAAAA,CAAOG,UAAAA,IACPF,OAAOE,UAAAA,EACP;AACA,IAAA,OAAOH,MAAAA,CAAOG,UAAAA,GAAaF,MAAAA,CAAOE,UAAAA,GAAa,EAAA,GAAK,CAAA;AAAA,EACtD;AAEA,EAAA,IAAID,KAAAA,CAAMF,MAAM,CAAA,EAAG,OAAO,EAAA;AAC1B,EAAA,IAAIE,KAAAA,CAAMD,MAAM,CAAA,EAAG,OAAO,CAAA;AAE1B,EAAA,IAAI,YAAA,IAAgBD,MAAAA,IAAU,YAAA,IAAgBC,MAAAA,EAAQ;AACpD,IAAA,MAAMG,WACJ,YAAA,IAAgBJ,MAAAA,IAAUA,MAAAA,CAAOG,UAAAA,GAAaH,OAAOG,UAAAA,GAAa,CAAA;AACpE,IAAA,MAAME,WACJ,YAAA,IAAgBJ,MAAAA,IAAUA,MAAAA,CAAOE,UAAAA,GAAaF,OAAOE,UAAAA,GAAa,CAAA;AAGpE,IAAA,MAAMG,UAAUD,QAAAA,GAAWD,QAAAA;AAC3B,IAAA,OAAOE,OAAAA;AAAAA,EACT;AAEA,EAAA,OAAO,CAAA;AACT;;;;"}
@@ -0,0 +1,51 @@
1
+ import { Address, TransactionReceipt, Client } from 'viem';
2
+ import { Token } from '../state/types';
3
+ import { UseQueryResult } from '@tanstack/react-query';
4
+ import { SupportedChainId } from '../../lib/web3/wagmi/types';
5
+ import { MarkOptional } from 'ts-essentials';
6
+ type TransferAmountsFromReceiptInput = {
7
+ receipt: TransactionReceipt;
8
+ tokens: Pick<Token, "address">[];
9
+ senderAddress: Address;
10
+ receiverAddress: Address;
11
+ };
12
+ export type TokenTransfers = {
13
+ token: Address;
14
+ sentAmount: bigint;
15
+ receivedAmount: bigint;
16
+ };
17
+ type TransferAmountsFromReceiptResult = Record<Address, TokenTransfers>;
18
+ export declare function getERC20TransferAmountsFromReceipt({ receipt, tokens, senderAddress, receiverAddress, }: TransferAmountsFromReceiptInput): TransferAmountsFromReceiptResult;
19
+ type NativeTokenTransferInput = {
20
+ receipt: TransactionReceipt;
21
+ senderAddress: Address;
22
+ receiverAddress: Address;
23
+ client: Client;
24
+ };
25
+ export declare function getNativeTokenTransfer({ receipt, senderAddress, receiverAddress, client, }: NativeTokenTransferInput): Promise<TokenTransfers>;
26
+ type TokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {
27
+ client: Client;
28
+ };
29
+ export declare function getTokenTransfersFromReceipt({ receipt, tokens, senderAddress, receiverAddress, client, }: TokenTransfersFromReceiptInput): Promise<TransferAmountsFromReceiptResult>;
30
+ type TokenTransfersFromReceiptWithLimitsInput = {
31
+ detectedTokenTransfers: Record<Address, TokenTransfers>;
32
+ expectedTokenTransfers: Record<Address, TokenTransfers>;
33
+ };
34
+ export declare function getTokenTransfersFromReceiptWithLimits({ detectedTokenTransfers, expectedTokenTransfers, }: TokenTransfersFromReceiptWithLimitsInput): TransferAmountsFromReceiptResult;
35
+ type UseTokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {
36
+ chainId: SupportedChainId;
37
+ expectedTokenTransfers: Record<Address, TokenTransfers>;
38
+ };
39
+ /**
40
+ * @param expectedTokenTransfers - expected token transfers, if provided, will be used to validate the detected token transfers
41
+ * @param chainId - chain id
42
+ * @param receipt - transaction receipt
43
+ * @param tokens - tokens
44
+ * @param senderAddress - sender address
45
+ * @param receiverAddress - receiver address
46
+ * @returns - token transfers from receipt validated against expected token transfers
47
+ * @note - ETH transfers are a best guess, and may not be accurate (falls back to expected token transfers)
48
+ */
49
+ export declare function useTokenTransfersFromReceipt({ receipt, tokens, senderAddress, receiverAddress, expectedTokenTransfers, chainId, }: MarkOptional<UseTokenTransfersFromReceiptInput, "receipt" | "senderAddress" | "receiverAddress" | "expectedTokenTransfers">): UseQueryResult<TransferAmountsFromReceiptResult, Error>;
50
+ export {};
51
+ //# sourceMappingURL=transferAmountsFromReceipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferAmountsFromReceipt.d.ts","sourceRoot":"","sources":["../../../src/tokens/utils/transferAmountsFromReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,MAAM,EAGZ,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAI1D,KAAK,+BAA+B,GAAG;IACrC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,gCAAgC,GAAG,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAOxE,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,MAAM,EACN,aAAa,EACb,eAAe,GAChB,EAAE,+BAA+B,GAAG,gCAAgC,CA+DpE;AAED,KAAK,wBAAwB,GAAG;IAC9B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,aAAa,EACb,eAAe,EACf,MAAM,GACP,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CAwEpD;AAED,KAAK,8BAA8B,GAAG,+BAA+B,GAAG;IACtE,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAsB,4BAA4B,CAAC,EACjD,OAAO,EACP,MAAM,EACN,aAAa,EACb,eAAe,EACf,MAAM,GACP,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAuB5E;AAED,KAAK,wCAAwC,GAAG;IAC9C,sBAAsB,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACxD,sBAAsB,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;CACzD,CAAC;AAgCF,wBAAgB,sCAAsC,CAAC,EACrD,sBAAsB,EACtB,sBAAsB,GACvB,EAAE,wCAAwC,GAAG,gCAAgC,CAkC7E;AAED,KAAK,iCAAiC,GAAG,+BAA+B,GAAG;IACzE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;CACzD,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,OAAO,EACP,MAAM,EACN,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,OAAO,GACR,EAAE,YAAY,CACb,iCAAiC,EACjC,SAAS,GAAG,eAAe,GAAG,iBAAiB,GAAG,wBAAwB,CAC3E,GAAG,cAAc,CAAC,gCAAgC,EAAE,KAAK,CAAC,CA8C1D"}
@@ -0,0 +1,281 @@
1
+ import { d as distExports } from '../../_virtual/index.js';
2
+ import { decodeEventLog, erc20Abi } from 'viem';
3
+ import { getBalance } from 'viem/actions';
4
+ import { ETH_ADDRESS_LOWERCASE } from '../constants.js';
5
+ import { gatherObjectsByProp } from '../../lib/utils/index.js';
6
+ import { useQuery } from '@tanstack/react-query';
7
+ import { useClient } from 'wagmi';
8
+ import 'react';
9
+ import { assert } from 'ts-essentials';
10
+ import { isETH } from './eth.js';
11
+ import { createLogger } from '../../lib/utils/logger.js';
12
+
13
+ const TRANSFER_EVENT_SIGNATURE = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
14
+ function getERC20TransferAmountsFromReceipt({
15
+ receipt,
16
+ tokens,
17
+ senderAddress,
18
+ receiverAddress
19
+ }) {
20
+ const result = gatherObjectsByProp(tokens, (token) => token.address.toLowerCase(), (token) => ({
21
+ token: token.address,
22
+ sentAmount: 0n,
23
+ receivedAmount: 0n
24
+ }));
25
+ const tokensSet = new Set(tokens.map((token) => token.address.toLowerCase()));
26
+ const fromAddressLowercase = senderAddress.toLowerCase();
27
+ const toAddressLowercase = receiverAddress.toLowerCase();
28
+ for (const log of receipt.logs) {
29
+ const logAddressLowercase = log.address.toLowerCase();
30
+ if (log.topics[0] === TRANSFER_EVENT_SIGNATURE && tokensSet.has(logAddressLowercase)) {
31
+ try {
32
+ const decoded = decodeEventLog({
33
+ abi: erc20Abi,
34
+ data: log.data,
35
+ topics: log.topics,
36
+ eventName: "Transfer"
37
+ });
38
+ const {
39
+ from: fromAddress,
40
+ to: toAddress,
41
+ value
42
+ } = decoded.args;
43
+ const tokenTransfer = result[logAddressLowercase];
44
+ if (!tokenTransfer) {
45
+ continue;
46
+ }
47
+ if (fromAddress.toLowerCase() === fromAddressLowercase) {
48
+ tokenTransfer.sentAmount += value;
49
+ }
50
+ if (toAddress.toLowerCase() === toAddressLowercase) {
51
+ tokenTransfer.receivedAmount += value;
52
+ }
53
+ } catch (_error) {
54
+ continue;
55
+ }
56
+ }
57
+ }
58
+ return result;
59
+ }
60
+ async function getNativeTokenTransfer({
61
+ receipt,
62
+ senderAddress,
63
+ receiverAddress,
64
+ client
65
+ }) {
66
+ const beforeBlockNumber = receipt.blockNumber - 1n;
67
+ const afterBlockNumber = receipt.blockNumber;
68
+ const senderPromises = [
69
+ // Get balances before the transaction
70
+ getBalance(client, {
71
+ address: senderAddress,
72
+ blockNumber: beforeBlockNumber
73
+ }),
74
+ // Get balances after the transaction
75
+ getBalance(client, {
76
+ address: senderAddress,
77
+ blockNumber: afterBlockNumber
78
+ })
79
+ ];
80
+ const senderIsReceiver = senderAddress.toLowerCase() === receiverAddress.toLowerCase();
81
+ const receiverPromises = senderIsReceiver ? (
82
+ // reuse sender promises if sender is receiver
83
+ senderPromises
84
+ ) : [
85
+ // Get balances before the transaction
86
+ getBalance(client, {
87
+ address: receiverAddress,
88
+ blockNumber: beforeBlockNumber
89
+ }),
90
+ // Get balances after the transaction
91
+ getBalance(client, {
92
+ address: receiverAddress,
93
+ blockNumber: afterBlockNumber
94
+ })
95
+ ];
96
+ const [senderBalanceBefore, senderBalanceAfter, receiverBalanceBefore, receiverBalanceAfter] = await Promise.all([...senderPromises, ...receiverPromises]);
97
+ let sentAmount = senderBalanceBefore - senderBalanceAfter;
98
+ let receivedAmount = receiverBalanceAfter - receiverBalanceBefore;
99
+ const gasCost = receipt.gasUsed * receipt.effectiveGasPrice;
100
+ if (senderAddress.toLowerCase() === receipt.from.toLowerCase()) {
101
+ sentAmount -= gasCost;
102
+ }
103
+ if (senderAddress.toLowerCase() === receiverAddress.toLowerCase()) {
104
+ receivedAmount += gasCost;
105
+ }
106
+ return {
107
+ token: ETH_ADDRESS_LOWERCASE,
108
+ // Native token address
109
+ sentAmount: sentAmount > 0n ? sentAmount : 0n,
110
+ receivedAmount: receivedAmount > 0n ? receivedAmount : 0n
111
+ };
112
+ }
113
+ async function getTokenTransfersFromReceipt({
114
+ receipt,
115
+ tokens,
116
+ senderAddress,
117
+ receiverAddress,
118
+ client
119
+ }) {
120
+ const tokensWithoutNative = tokens.filter((token) => !isETH(token));
121
+ const tokenTransfers = getERC20TransferAmountsFromReceipt({
122
+ receipt,
123
+ tokens: tokensWithoutNative,
124
+ senderAddress,
125
+ receiverAddress
126
+ });
127
+ if (tokensWithoutNative.length < tokens.length) {
128
+ const nativeTokenTransfer = await getNativeTokenTransfer({
129
+ receipt,
130
+ senderAddress,
131
+ receiverAddress,
132
+ client
133
+ });
134
+ tokenTransfers[ETH_ADDRESS_LOWERCASE] = nativeTokenTransfer;
135
+ }
136
+ return tokenTransfers;
137
+ }
138
+ function validateAmount({
139
+ calculatedAmount,
140
+ expectedAmount,
141
+ tolerancePercent = 15
142
+ // max slippage %
143
+ }) {
144
+ if (expectedAmount === 0n) {
145
+ return expectedAmount;
146
+ }
147
+ const tolerance = expectedAmount * BigInt(tolerancePercent) / 100n;
148
+ const minExpected = expectedAmount - tolerance;
149
+ const maxExpected = expectedAmount + tolerance;
150
+ if (calculatedAmount >= minExpected && calculatedAmount <= maxExpected) {
151
+ return calculatedAmount;
152
+ } else {
153
+ return expectedAmount;
154
+ }
155
+ }
156
+ const logger1 = createLogger("Swap:amounts:Expected");
157
+ const logger2 = createLogger("Swap:amounts:Detected");
158
+ function getTokenTransfersFromReceiptWithLimits({
159
+ detectedTokenTransfers,
160
+ expectedTokenTransfers
161
+ }) {
162
+ const validatedTokenTransfers = {};
163
+ logger1.once.log("Expected token transfers", expectedTokenTransfers);
164
+ logger2.once.log("Detected token transfers", detectedTokenTransfers);
165
+ for (const [tokenAddress, calculatedTransfer] of Object.entries(detectedTokenTransfers)) {
166
+ const expectedTransfer = expectedTokenTransfers[tokenAddress];
167
+ if (!expectedTransfer) {
168
+ validatedTokenTransfers[tokenAddress] = calculatedTransfer;
169
+ continue;
170
+ }
171
+ const validatedTransfer = {
172
+ token: calculatedTransfer.token,
173
+ sentAmount: validateAmount({
174
+ calculatedAmount: calculatedTransfer.sentAmount,
175
+ expectedAmount: expectedTransfer.sentAmount
176
+ }),
177
+ receivedAmount: validateAmount({
178
+ calculatedAmount: calculatedTransfer.receivedAmount,
179
+ expectedAmount: expectedTransfer.receivedAmount
180
+ })
181
+ };
182
+ validatedTokenTransfers[tokenAddress] = validatedTransfer;
183
+ }
184
+ return validatedTokenTransfers;
185
+ }
186
+ function useTokenTransfersFromReceipt(t0) {
187
+ const $ = distExports.c(20);
188
+ const {
189
+ receipt,
190
+ tokens,
191
+ senderAddress,
192
+ receiverAddress,
193
+ expectedTokenTransfers,
194
+ chainId
195
+ } = t0;
196
+ let t1;
197
+ if ($[0] !== chainId) {
198
+ t1 = {
199
+ chainId
200
+ };
201
+ $[0] = chainId;
202
+ $[1] = t1;
203
+ } else {
204
+ t1 = $[1];
205
+ }
206
+ const client = useClient(t1);
207
+ let t2;
208
+ if ($[2] !== expectedTokenTransfers) {
209
+ t2 = (data) => {
210
+ if (!expectedTokenTransfers) {
211
+ return data;
212
+ }
213
+ return getTokenTransfersFromReceiptWithLimits({
214
+ detectedTokenTransfers: data,
215
+ expectedTokenTransfers
216
+ });
217
+ };
218
+ $[2] = expectedTokenTransfers;
219
+ $[3] = t2;
220
+ } else {
221
+ t2 = $[3];
222
+ }
223
+ const select = t2;
224
+ const t3 = receipt?.transactionHash;
225
+ const t4 = receipt?.logs.length;
226
+ let t5;
227
+ if ($[4] !== receiverAddress || $[5] !== senderAddress || $[6] !== t3 || $[7] !== t4) {
228
+ t5 = ["token-transfers-from-receipt", t3, t4, senderAddress, receiverAddress];
229
+ $[4] = receiverAddress;
230
+ $[5] = senderAddress;
231
+ $[6] = t3;
232
+ $[7] = t4;
233
+ $[8] = t5;
234
+ } else {
235
+ t5 = $[8];
236
+ }
237
+ let t6;
238
+ if ($[9] !== client || $[10] !== receipt || $[11] !== receiverAddress || $[12] !== senderAddress || $[13] !== tokens) {
239
+ t6 = async () => {
240
+ assert(receipt, "Receipt is required");
241
+ assert(senderAddress, "Sender address is required");
242
+ assert(receiverAddress, "Receiver address is required");
243
+ return getTokenTransfersFromReceipt({
244
+ receipt,
245
+ tokens,
246
+ senderAddress,
247
+ receiverAddress,
248
+ client
249
+ });
250
+ };
251
+ $[9] = client;
252
+ $[10] = receipt;
253
+ $[11] = receiverAddress;
254
+ $[12] = senderAddress;
255
+ $[13] = tokens;
256
+ $[14] = t6;
257
+ } else {
258
+ t6 = $[14];
259
+ }
260
+ const t7 = !!receipt && receipt.logs.length > 0 && tokens.length > 0 && !!senderAddress && !!receiverAddress;
261
+ let t8;
262
+ if ($[15] !== select || $[16] !== t5 || $[17] !== t6 || $[18] !== t7) {
263
+ t8 = {
264
+ queryKey: t5,
265
+ queryFn: t6,
266
+ select,
267
+ enabled: t7
268
+ };
269
+ $[15] = select;
270
+ $[16] = t5;
271
+ $[17] = t6;
272
+ $[18] = t7;
273
+ $[19] = t8;
274
+ } else {
275
+ t8 = $[19];
276
+ }
277
+ return useQuery(t8);
278
+ }
279
+
280
+ export { getERC20TransferAmountsFromReceipt, getNativeTokenTransfer, getTokenTransfersFromReceipt, getTokenTransfersFromReceiptWithLimits, useTokenTransfersFromReceipt };
281
+ //# sourceMappingURL=transferAmountsFromReceipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferAmountsFromReceipt.js","sources":["../../../src/tokens/utils/transferAmountsFromReceipt.ts"],"sourcesContent":["import {\n type Address,\n type TransactionReceipt,\n type Client,\n decodeEventLog,\n erc20Abi,\n} from \"viem\";\nimport { getBalance } from \"viem/actions\";\nimport type { Token } from \"../state/types\";\nimport { ETH_ADDRESS_LOWERCASE } from \"../constants\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useClient } from \"wagmi\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useCallback } from \"react\";\nimport { assert, type MarkOptional } from \"ts-essentials\";\nimport { isETH } from \"./eth\";\nimport { createLogger } from \"@/lib/utils/logger\";\n\ntype TransferAmountsFromReceiptInput = {\n receipt: TransactionReceipt;\n tokens: Pick<Token, \"address\">[];\n senderAddress: Address;\n receiverAddress: Address;\n};\n\nexport type TokenTransfers = {\n token: Address;\n sentAmount: bigint;\n receivedAmount: bigint;\n};\n\ntype TransferAmountsFromReceiptResult = Record<Address, TokenTransfers>;\n\n// ERC20 Transfer event signature: Transfer(address,address,uint256)\nconst TRANSFER_EVENT_SIGNATURE =\n \"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef\";\n\n// give TransactionReceipt and tokens finds all transfers of Tokens to receiverAddress and returns amounts\nexport function getERC20TransferAmountsFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n}: TransferAmountsFromReceiptInput): TransferAmountsFromReceiptResult {\n // Initialize result mapping with one entry per token\n const result: Record<Address, TokenTransfers> = gatherObjectsByProp(\n tokens,\n (token) => token.address.toLowerCase(),\n (token) => ({\n token: token.address as Address,\n sentAmount: 0n,\n receivedAmount: 0n,\n })\n );\n\n // Create a map for quick token lookup\n const tokensSet = new Set(tokens.map((token) => token.address.toLowerCase()));\n\n const fromAddressLowercase = senderAddress.toLowerCase();\n const toAddressLowercase = receiverAddress.toLowerCase();\n\n // Parse all logs in the transaction receipt\n for (const log of receipt.logs) {\n const logAddressLowercase = log.address.toLowerCase() as Address;\n // Check if this is a Transfer event from one of our tokens\n if (\n log.topics[0] === TRANSFER_EVENT_SIGNATURE &&\n tokensSet.has(logAddressLowercase)\n ) {\n try {\n // Parse the Transfer event parameters\n // topics[0] = event signature\n // topics[1] = from address (padded to 32 bytes)\n // topics[2] = to address (padded to 32 bytes)\n // data = value (uint256)\n\n const decoded = decodeEventLog({\n abi: erc20Abi,\n data: log.data,\n topics: log.topics,\n eventName: \"Transfer\",\n });\n\n const { from: fromAddress, to: toAddress, value } = decoded.args;\n\n const tokenTransfer = result[logAddressLowercase];\n if (!tokenTransfer) {\n continue;\n }\n\n // Check if the transfer is from sender to someone else\n if (fromAddress.toLowerCase() === fromAddressLowercase) {\n tokenTransfer.sentAmount += value;\n }\n // Check if the transfer is to receiver from someone else\n if (toAddress.toLowerCase() === toAddressLowercase) {\n tokenTransfer.receivedAmount += value;\n }\n } catch (_error) {\n // If parsing fails, skip this log\n continue;\n }\n }\n }\n\n return result;\n}\n\ntype NativeTokenTransferInput = {\n receipt: TransactionReceipt;\n senderAddress: Address;\n receiverAddress: Address;\n client: Client;\n};\n\nexport async function getNativeTokenTransfer({\n receipt,\n senderAddress,\n receiverAddress,\n client,\n}: NativeTokenTransferInput): Promise<TokenTransfers> {\n const beforeBlockNumber = receipt.blockNumber - 1n;\n const afterBlockNumber = receipt.blockNumber;\n\n /*\n if the transaction was the only one transaction involving the sender and receiver\n in the block it was mined, and if the transaction was a SwapTransaction only,\n not some bulk transaction or a flashbot transaction, then we can consider\n that the ETH balances difference matches the ETH Swap amount.\n */\n\n const senderPromises = [\n // Get balances before the transaction\n getBalance(client, {\n address: senderAddress,\n blockNumber: beforeBlockNumber,\n }),\n // Get balances after the transaction\n getBalance(client, {\n address: senderAddress,\n blockNumber: afterBlockNumber,\n }),\n ] as const;\n\n const senderIsReceiver =\n senderAddress.toLowerCase() === receiverAddress.toLowerCase();\n\n const receiverPromises = senderIsReceiver\n ? // reuse sender promises if sender is receiver\n senderPromises\n : ([\n // Get balances before the transaction\n getBalance(client, {\n address: receiverAddress,\n blockNumber: beforeBlockNumber,\n }),\n // Get balances after the transaction\n getBalance(client, {\n address: receiverAddress,\n blockNumber: afterBlockNumber,\n }),\n ] as const);\n\n const [\n senderBalanceBefore,\n senderBalanceAfter,\n receiverBalanceBefore,\n receiverBalanceAfter,\n ] = await Promise.all([...senderPromises, ...receiverPromises]);\n\n // Calculate the differences\n let sentAmount = senderBalanceBefore - senderBalanceAfter; // difference in balances = sent ETH + paid gas\n let receivedAmount = receiverBalanceAfter - receiverBalanceBefore;\n const gasCost = receipt.gasUsed * receipt.effectiveGasPrice;\n\n // if sender is the transaction sender (it may not be if a Relayer was involved)\n if (senderAddress.toLowerCase() === receipt.from.toLowerCase()) {\n // Adjust sentAmount for gas:\n // Subtract gas cost from sentAmount to get actual ETH sent (excluding gas fees)\n sentAmount -= gasCost;\n }\n\n // if sender is receiver, then need to adjust receivedAmount for gas\n if (senderAddress.toLowerCase() === receiverAddress.toLowerCase()) {\n receivedAmount += gasCost; // gas was paid out of the receivedAmount, so make this the amount before gas paid\n }\n\n return {\n token: ETH_ADDRESS_LOWERCASE, // Native token address\n sentAmount: sentAmount > 0n ? sentAmount : 0n,\n receivedAmount: receivedAmount > 0n ? receivedAmount : 0n,\n };\n}\n\ntype TokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {\n client: Client;\n};\n\nexport async function getTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n client,\n}: TokenTransfersFromReceiptInput): Promise<TransferAmountsFromReceiptResult> {\n const tokensWithoutNative = tokens.filter((token) => !isETH(token));\n\n const tokenTransfers = getERC20TransferAmountsFromReceipt({\n receipt,\n tokens: tokensWithoutNative,\n senderAddress,\n receiverAddress,\n });\n\n // there was a native Token in the list\n if (tokensWithoutNative.length < tokens.length) {\n const nativeTokenTransfer = await getNativeTokenTransfer({\n receipt,\n senderAddress,\n receiverAddress,\n client,\n });\n\n tokenTransfers[ETH_ADDRESS_LOWERCASE] = nativeTokenTransfer;\n }\n\n return tokenTransfers;\n}\n\ntype TokenTransfersFromReceiptWithLimitsInput = {\n detectedTokenTransfers: Record<Address, TokenTransfers>;\n expectedTokenTransfers: Record<Address, TokenTransfers>;\n};\n\n// Helper function to validate an amount against expected value with tolerance\nfunction validateAmount({\n calculatedAmount,\n expectedAmount,\n tolerancePercent = 15, // max slippage %\n}: {\n calculatedAmount: bigint;\n expectedAmount: bigint;\n tolerancePercent?: number;\n}): bigint {\n if (expectedAmount === 0n) {\n // If expected is 0, use expected\n return expectedAmount;\n }\n\n // Check if calculated is within tolerance of expected\n const tolerance = (expectedAmount * BigInt(tolerancePercent)) / 100n;\n const minExpected = expectedAmount - tolerance;\n const maxExpected = expectedAmount + tolerance;\n\n if (calculatedAmount >= minExpected && calculatedAmount <= maxExpected) {\n return calculatedAmount;\n } else {\n return expectedAmount;\n }\n}\n\nconst logger1 = createLogger(\"Swap:amounts:Expected\");\nconst logger2 = createLogger(\"Swap:amounts:Detected\");\n\nexport function getTokenTransfersFromReceiptWithLimits({\n detectedTokenTransfers,\n expectedTokenTransfers,\n}: TokenTransfersFromReceiptWithLimitsInput): TransferAmountsFromReceiptResult {\n // Validate and adjust amounts based on expected values\n const validatedTokenTransfers: Record<Address, TokenTransfers> = {};\n\n logger1.once.log(\"Expected token transfers\", expectedTokenTransfers);\n logger2.once.log(\"Detected token transfers\", detectedTokenTransfers);\n\n for (const [tokenAddress, calculatedTransfer] of Object.entries(\n detectedTokenTransfers\n )) {\n const expectedTransfer = expectedTokenTransfers[tokenAddress as Address];\n\n if (!expectedTransfer) {\n // No expected value, use calculated\n validatedTokenTransfers[tokenAddress as Address] = calculatedTransfer;\n continue;\n }\n\n const validatedTransfer: TokenTransfers = {\n token: calculatedTransfer.token,\n sentAmount: validateAmount({\n calculatedAmount: calculatedTransfer.sentAmount,\n expectedAmount: expectedTransfer.sentAmount,\n }),\n receivedAmount: validateAmount({\n calculatedAmount: calculatedTransfer.receivedAmount,\n expectedAmount: expectedTransfer.receivedAmount,\n }),\n };\n\n validatedTokenTransfers[tokenAddress as Address] = validatedTransfer;\n }\n\n return validatedTokenTransfers;\n}\n\ntype UseTokenTransfersFromReceiptInput = TransferAmountsFromReceiptInput & {\n chainId: SupportedChainId;\n expectedTokenTransfers: Record<Address, TokenTransfers>;\n};\n\n/**\n * @param expectedTokenTransfers - expected token transfers, if provided, will be used to validate the detected token transfers\n * @param chainId - chain id\n * @param receipt - transaction receipt\n * @param tokens - tokens\n * @param senderAddress - sender address\n * @param receiverAddress - receiver address\n * @returns - token transfers from receipt validated against expected token transfers\n * @note - ETH transfers are a best guess, and may not be accurate (falls back to expected token transfers)\n */\nexport function useTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n expectedTokenTransfers,\n chainId,\n}: MarkOptional<\n UseTokenTransfersFromReceiptInput,\n \"receipt\" | \"senderAddress\" | \"receiverAddress\" | \"expectedTokenTransfers\"\n>): UseQueryResult<TransferAmountsFromReceiptResult, Error> {\n const client = useClient({ chainId });\n\n const select = useCallback(\n (data: TransferAmountsFromReceiptResult) => {\n if (!expectedTokenTransfers) {\n return data;\n }\n\n return getTokenTransfersFromReceiptWithLimits({\n detectedTokenTransfers: data,\n expectedTokenTransfers,\n });\n },\n [expectedTokenTransfers]\n );\n\n return useQuery({\n queryKey: [\n \"token-transfers-from-receipt\",\n receipt?.transactionHash,\n receipt?.logs.length,\n senderAddress,\n receiverAddress,\n ],\n queryFn: async () => {\n assert(receipt, \"Receipt is required\");\n assert(senderAddress, \"Sender address is required\");\n assert(receiverAddress, \"Receiver address is required\");\n\n return getTokenTransfersFromReceipt({\n receipt,\n tokens,\n senderAddress,\n receiverAddress,\n client,\n });\n },\n select,\n enabled:\n !!receipt &&\n receipt.logs.length > 0 &&\n tokens.length > 0 &&\n !!senderAddress &&\n !!receiverAddress,\n });\n}\n"],"names":["TRANSFER_EVENT_SIGNATURE","getERC20TransferAmountsFromReceipt","receipt","tokens","senderAddress","receiverAddress","result","gatherObjectsByProp","token","address","toLowerCase","sentAmount","receivedAmount","tokensSet","Set","map","fromAddressLowercase","toAddressLowercase","log","logs","logAddressLowercase","topics","has","decoded","decodeEventLog","abi","erc20Abi","data","eventName","from","fromAddress","to","toAddress","value","args","tokenTransfer","_error","getNativeTokenTransfer","client","beforeBlockNumber","blockNumber","afterBlockNumber","senderPromises","getBalance","senderIsReceiver","receiverPromises","senderBalanceBefore","senderBalanceAfter","receiverBalanceBefore","receiverBalanceAfter","Promise","all","gasCost","gasUsed","effectiveGasPrice","ETH_ADDRESS_LOWERCASE","getTokenTransfersFromReceipt","tokensWithoutNative","filter","isETH","tokenTransfers","length","nativeTokenTransfer","validateAmount","calculatedAmount","expectedAmount","tolerancePercent","tolerance","BigInt","minExpected","maxExpected","logger1","createLogger","logger2","getTokenTransfersFromReceiptWithLimits","detectedTokenTransfers","expectedTokenTransfers","validatedTokenTransfers","once","tokenAddress","calculatedTransfer","Object","entries","expectedTransfer","validatedTransfer","useTokenTransfersFromReceipt","t0","$","_c","chainId","t1","useClient","t2","select","t3","transactionHash","t4","t5","t6","assert","t7","t8","queryKey","queryFn","enabled","useQuery"],"mappings":"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"}