@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":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport { useBuildTx } from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useInvalidateTokenDataQuery } from \"@/hooks/tokens/balances/useInvalidateTokenData\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type { TxSentObject } from \"@/lib/utils/toasts\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useWidgetConfig } from \"@/widget/state/configAtom\";\nimport { useLogger } from \"@/widget/logger\";\nimport { useTrackedPrice } from \"./common/useTrackedPrice\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: \"marketSwap\";\n approve: SubmitTxResult;\n swap: SubmitTxResult;\n marketPrice: OptimalRate;\n account: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage();\n const swapSide = useSwapSide();\n\n const trackedPrice = useTrackedPrice({\n price: marketPrice,\n slippage: resolvedSlippage,\n side: swapSide,\n });\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const usingPrice = trackedPrice.get.usingPrice();\n const { approval, signPermit, approveTxMut, signPermitMut } =\n useApproveOrPermit({\n srcToken: usingPrice?.srcToken ?? marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: trackedPrice.get.approvedAmount() ?? marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: usingPrice?.side ?? swapSide,\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n };\n\n const receiverAddress = useReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = useWidgetConfig().partner;\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n // we use this allowance as a max allowance we will accept new prices for\n\n if (approval.needsApproval) {\n // need allowance\n if (!signPermit.isPermitSupported || !signPermit.isPermitReadyToSign) {\n // freeze allowanceToSet\n trackedPrice.set.approvedAmount(allowanceToSet);\n\n // Token doesn't support Permit\n // make an Approval tx\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: approveTxHash,\n actionType: \"approve\",\n receiptPromise: approveTxReceiptPromise,\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } else {\n // freeze allowanceToSet\n trackedPrice.set.approvedAmount(allowanceToSet);\n\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n // as long as we had set approvedAmountRef, we will only get new prices that satisfy the allowance\n let marketPriceToUse = trackedPrice.get.usingPrice();\n // usingPriceRef.current can be null depending on reset() timing (e.g. inside retry)\n if (!marketPriceToUse) {\n marketPriceToUse = marketPrice || null;\n trackedPrice.set.usingPrice(marketPriceToUse);\n }\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side\n );\n\n // freeze final price to avoid any changes to displayed and result amounts\n trackedPrice.set.finalPrice(marketPriceToUse);\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const txParams = await buildTxMut.mutateAsync({\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions:\n // ignoreChecks: true,\n // ignoreGasEstimate: true,\n // ignoreAllowance: true,\n // onlyParams: true,\n // @TODO turn on ignore options when necessary (for Safe),\n gasParams,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n try {\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: swapTxHash,\n actionType: \"swap\",\n receiptPromise: swapTxReceiptPromise,\n });\n }\n\n const swapTxReceipt = await swapTxReceiptPromise;\n logger.log(\"~ swapTx ~ receipt:\", swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: \"marketSwap\",\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n throw error;\n }\n };\n\n const invalidateTokenData = useInvalidateTokenDataQuery();\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled, invalidating balances and allowances\");\n invalidateTokenData({ nonces: true });\n trackedPrice.resetTrackedPrice();\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n trackedPrice.resetTrackedPrice();\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice =\n trackedPrice.get.finalPrice() ||\n trackedPrice.get.usingPrice() ||\n marketPrice;\n\n /* 7. return result */\n return {\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n };\n}\n"],"names":["MARKET_SWAP_MUTATION_KEY","useMarketFlow","t0","$","_c","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSide","useSwapSide","t1","price","slippage","side","trackedPrice","useTrackedPrice","t2","get","usingPrice","t3","srcToken","t4","srcAmount","approvedAmount","t5","t6","spenderContractType","approval","signPermit","approveTxMut","signPermitMut","useApproveOrPermit","t7","onSuccess","log","onError","error","t8","mutationOptions","buildTxMut","useBuildTx","t9","isError","isPending","isSuccess","buildTxParams","t10","error_0","sendSwapTxMut","useSendMarketSwapTx","t11","txHash","hash","swapTxMined","useAwaitTx","t12","isLoading","t13","t14","t15","data","receipt","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isTxMined","isTxAwaitingError","swap","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","t16","Symbol","for","current","abort","UserCancelledError","cancelFlow","receiverAddress","useReceiverAddressValue","t17","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","useWidgetConfig","t18","set","t19","onTxSent","undefined","reset","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","needsApproval","isPermitSupported","isPermitReadyToSign","approveAsync","allowanceData","throwIfAborted","approveTxReceiptPromise","onReplaced","actionType","receiptPromise","signPermitAsync","value","assert","marketPriceToUse","amountsAfterSlippage","applySlippage","destAmount","finalPrice","gasParams","txParams","mutateAsync","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","permit","permitEncodedArgs","priceRoute","swapTxOptions","swapTxHash","sendTransactionAsync","signedPermitData","swapTxReceiptPromise","data_0","swapTxReceipt","tradeFlowType","approve","t20","submitSwapTx","invalidateTokenData","useInvalidateTokenDataQuery","t21","data_1","error_2","t22","nonces","resetTrackedPrice","t23","mutationFn","mutationKey","onSettled","marketSwapMut","useMutation","runMarketSwapFlow","t24","t25","options","retryFlow","t26","usedPrice","t27","result"],"mappings":"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"}
1
+ {"version":3,"file":"useMarketFlow.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketFlow.ts"],"sourcesContent":["import { useAwaitTx } from \"@/hooks/txs\";\nimport type { OptimalRate } from \"@velora-dex/sdk\";\nimport { useAccount, useChainId } from \"wagmi\";\nimport { useSendMarketSwapTx } from \"../prices/market/mutations/useSendMarketSwapTx\";\nimport { useBuildTx } from \"../prices/market/mutations/useBuildTx\";\nimport { assert } from \"ts-essentials\";\nimport { useEnsureTxReceipt } from \"@/hooks/txs/queries/useAwaitTx\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport type {\n ApprovalFlowResult,\n SignPermitFlowResult,\n SubmitTxResult,\n} from \"./common/types\";\nimport { applySlippage } from \"@/lib/utils/price\";\nimport { useSlippage } from \"@/hooks/useSlippage\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useRef } from \"react\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { UserCancelledError } from \"./common/errors\";\nimport { useReceiverAddressValue } from \"@/components/widget/ReceiverAddress/state/receiverAddressAtom\";\nimport type { TxSentObject } from \"@/lib/utils/toasts\";\nimport { useSwapSide } from \"@/components/widget/SwapModeSwitcher/state/swapSideAtom\";\nimport { useApproveOrPermit } from \"./common/useApproveOrPermit\";\nimport {\n useMarkPermit1Or2NonceAsUsed,\n type SignedPermitResult,\n} from \"./common/useSignPermit1Or2\";\nimport { useWidgetConfig } from \"@/core/state/configAtom\";\nimport { useLogger } from \"@/core/logger\";\nimport { useConstructGasParams } from \"./common/useConstructGasParams\";\nimport {\n useMarketPriceQueryForPrice,\n useSubscribeToMarketPrice,\n} from \"../prices/market/queries/useMarketPriceQuery\";\n\nexport type UseMarketFlowInput = {\n marketPrice?: OptimalRate;\n};\n\nexport type SubmitSwapResult = {\n tradeFlowType: \"marketSwap\";\n approve: SubmitTxResult;\n swap: SubmitTxResult;\n marketPrice: OptimalRate;\n account: Address;\n receiverAddress?: Address;\n};\n\ntype OnTxSent = (txSent: TxSentObject) => void;\n// @TODO instead add global onTxSent subscription to\n// MutationCache({onSuccess: txHash}) when sent\n// and QueryCache({onSuccess: txReceipt}) when mined,\n// maybe??\ntype RunMarketOptions = {\n onTxSent?: OnTxSent;\n};\n\nexport type UseMarketFlowResult = {\n chainId: SupportedChainId;\n runMarketSwapFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>;\n reset: () => void; // reset on Error to retry\n cancelFlow: () => void; // cancel flow\n retryFlow: (options?: RunMarketOptions) => Promise<SubmitSwapResult>; // reset and retry flow\n approval: ApprovalFlowResult;\n signPermit: SignPermitFlowResult;\n buildTxParams: {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n swap: {\n txHash?: Hash;\n receipt?: TransactionReceipt;\n isConfirmingTX: boolean;\n isConfirmingTxError: boolean;\n isTxSent: boolean;\n isTxPending: boolean;\n isTxMined: boolean;\n isTxAwaitingError: boolean;\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n };\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n result?: SubmitSwapResult;\n usedPrice?: OptimalRate;\n};\n\nconst MARKET_SWAP_MUTATION_KEY = \"runMarketSwapFlow\";\n\nexport function useMarketFlow({\n marketPrice,\n}: UseMarketFlowInput): UseMarketFlowResult {\n const logger = useLogger(\"MarketFlow\");\n const chainId = useChainId();\n const { resolvedSlippage } = useSlippage();\n const swapSide = useSwapSide();\n\n /* Inside useApproveOrPermit:\n 1. Get allowance for tokenFrom \n 2.1. submit Approve tx if necessary \n\n 2.2. sign Permit1 \n\n 3. await Approve tx (if not using Permit) \n */\n const { approval, signPermit, approveTxMut, signPermitMut } =\n useApproveOrPermit({\n srcToken: marketPrice?.srcToken,\n // if we already approved some amount, save it in approval and signPermit objects\n srcAmount: marketPrice?.srcAmount,\n spenderContractType: \"AugustusSwapper\",\n // marketPrice is the preferred source of truth\n swapSide: marketPrice?.side ?? swapSide,\n });\n\n /* 4. Build Swap tx */\n const buildTxMut = useBuildTx({\n chainId,\n mutationOptions: {\n onSuccess: () => {\n logger.log(\"Build tx success\");\n },\n onError: (error) => {\n logger.error(\"Build tx error\", error);\n },\n },\n });\n\n const buildTxParams: UseMarketFlowResult[\"buildTxParams\"] = {\n isPending: buildTxMut.isPending,\n isError: buildTxMut.isError,\n isSuccess: buildTxMut.isSuccess,\n error: buildTxMut.error,\n };\n\n /* 5. submit Swap tx */\n\n const sendSwapTxMut = useSendMarketSwapTx({\n onSuccess: () => {\n logger.log(\"Swap tx success\");\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n });\n\n /* 6. await Swap tx */\n const swapTxMined = useAwaitTx({\n hash: sendSwapTxMut.txHash,\n chainId,\n });\n\n const swap: UseMarketFlowResult[\"swap\"] = {\n txHash: sendSwapTxMut.txHash,\n receipt: swapTxMined.data,\n /* tx sending */\n isConfirmingTX: sendSwapTxMut.isPending,\n isConfirmingTxError: sendSwapTxMut.isError,\n isTxSent: sendSwapTxMut.isSuccess,\n /* tx awaiting */\n isTxPending: swapTxMined.isLoading,\n isTxMined: swapTxMined.isSuccess,\n isTxAwaitingError: swapTxMined.isError,\n /* combined */\n isPending: sendSwapTxMut.isPending || swapTxMined.isLoading,\n isSuccess: swapTxMined.isSuccess, // final success\n isError: sendSwapTxMut.isError || swapTxMined.isError,\n error: sendSwapTxMut.error || swapTxMined.error,\n };\n\n const { address: account } = useAccount();\n\n const ensureTxReceipt = useEnsureTxReceipt();\n\n // allows to abort (cancel) currently running flow,\n const currentAbortControllerRef = useRef<AbortController | null>(null);\n const usingPriceRef = useRef<OptimalRate | null>(null);\n\n const cancelFlow = () => {\n currentAbortControllerRef.current?.abort(new UserCancelledError());\n currentAbortControllerRef.current = null;\n\n usingPriceRef.current = null;\n };\n\n const receiverAddress = useReceiverAddressValue();\n\n const { markNonceAsUsed, clearNonce } = useMarkPermit1Or2NonceAsUsed({\n chainId,\n });\n\n const { constructGasParams } = useConstructGasParams();\n\n const partner = useWidgetConfig().partner;\n\n const getQueryForPrice = useMarketPriceQueryForPrice();\n const subscribeToPrice = useSubscribeToMarketPrice();\n\n const submitSwapTx: UseMarketFlowResult[\"runMarketSwapFlow\"] = async ({\n onTxSent,\n } = {}) => {\n // reset all mutations except the current one,\n // otherwise we'll have previous data (txs) as mutation results\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n\n // no sense in starting flow without a price,\n // which may be unavailable only if we are retrying and deltaPrice response now returns an error.\n // Otherwise this flow will be stopped by disabling Swap button in the first place\n assert(marketPrice, \"Market price is not available\");\n\n const abortController = new AbortController();\n currentAbortControllerRef.current = abortController;\n\n const signal = abortController.signal;\n\n let signedPermitResult: SignedPermitResult | undefined;\n\n let approveTxHash: Hash | undefined;\n let approveTxReceipt: TransactionReceipt | undefined;\n\n // at this point this is the syncronously available price\n const allowanceToSet = approval.allowanceToSet;\n // we use this allowance as a max allowance we will accept new prices for\n\n // marketPrice here is the starting price, available before async code and waiting\n let freshPrice = marketPrice;\n let unsubscribeFromPrice: (() => void) | undefined;\n // this also resets previous usingPriceRef\n usingPriceRef.current = freshPrice;\n\n try {\n // need allowance\n if (approval.needsApproval && allowanceToSet) {\n // queryKey used to fetch the current price,\n // it will be used for the subsequent price refetches as long as price params not changed\n const queryKey = getQueryForPrice({\n chainId,\n price: freshPrice,\n })?.queryKey;\n\n // should always be available\n if (queryKey) {\n // freeze allowanceToSet\n const approvedAmount = allowanceToSet;\n\n // subscribe to price updates to keep track of new prices for the same price params,\n // independently of the hook itself\n unsubscribeFromPrice = subscribeToPrice({\n queryKey,\n onData: (newPrice) => {\n if (signal.aborted) {\n // just in case unsubscribe in finally is not yet called\n // for the queued update with the price from an already cancelled flow\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n return;\n }\n\n // slightly higher amount if BUY with slippage\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: newPrice.srcAmount,\n destAmount: newPrice.destAmount,\n },\n resolvedSlippage,\n newPrice.side\n );\n\n // if new price fits into allowance, update it\n if (approvedAmount >= BigInt(amountsAfterSlippage.srcAmount)) {\n logger.log(\"~ fresh price ~\", newPrice);\n freshPrice = newPrice;\n usingPriceRef.current = freshPrice;\n }\n },\n });\n }\n\n if (!signPermit.isPermitSupported || !signPermit.isPermitReadyToSign) {\n // Token doesn't support Permit\n // make an Approval tx\n approveTxHash = await approveTxMut.approveAsync({\n allowanceData: {\n allowanceToSet,\n },\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const approveTxReceiptPromise = ensureTxReceipt({\n hash: approveTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:approveTx\", approveTxHash, data);\n },\n });\n\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: approveTxHash,\n actionType: \"approve\",\n receiptPromise: approveTxReceiptPromise,\n });\n }\n\n approveTxReceipt = await approveTxReceiptPromise;\n\n logger.log(\"~ approveTx ~ receipt:\", approveTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and throw,\n // or if waitForTransactionReceipt already throws on such receipts\n } else {\n // sign Permit\n signedPermitResult = await signPermitMut.signPermitAsync({\n value: allowanceToSet,\n });\n }\n }\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n assert(account, \"Account is not connected\");\n // as long as we had set approvedAmount, we will only get new prices that satisfy the allowance\n const marketPriceToUse = freshPrice;\n usingPriceRef.current = marketPriceToUse;\n // no longer need updates, unsubscribe\n unsubscribeFromPrice?.();\n unsubscribeFromPrice = undefined;\n\n assert(marketPriceToUse, \"Market price is not available\");\n\n const amountsAfterSlippage = applySlippage(\n {\n srcAmount: marketPriceToUse.srcAmount,\n destAmount: marketPriceToUse.destAmount,\n },\n resolvedSlippage,\n marketPriceToUse.side\n );\n\n // fresh gas params\n const gasParams = constructGasParams();\n\n const txParams = await buildTxMut.mutateAsync({\n swapTxInput: {\n userAddress: account,\n receiver: receiverAddress,\n srcToken: marketPriceToUse.srcToken,\n destToken: marketPriceToUse.destToken,\n srcDecimals: marketPriceToUse.srcDecimals,\n destDecimals: marketPriceToUse.destDecimals,\n\n partner,\n /* @TODO fill in when and if available\n referrer: \"\",\n partnerAddress: \"\",\n partnerFeeBps: 0, \n takeSurplus: false,*/\n permit: signedPermitResult?.permitEncodedArgs, // just signed Permit signature\n\n priceRoute: marketPriceToUse,\n ...amountsAfterSlippage,\n },\n\n swapTxOptions:\n // ignoreChecks: true,\n // ignoreGasEstimate: true,\n // ignoreAllowance: true,\n // onlyParams: true,\n // @TODO turn on ignore options when necessary (for Safe),\n gasParams,\n });\n\n // if aborted by this point, throw an error\n signal.throwIfAborted();\n\n const swapTxHash = await sendSwapTxMut.sendTransactionAsync(txParams);\n\n // no use aborting past this point, tx is already sent,\n // but we may want to connect this late abortion to tx cancellation, in the future\n\n // tx is sent, consider Token nonce as used\n if (signedPermitResult) {\n markNonceAsUsed(signedPermitResult.signedPermitData);\n }\n\n const swapTxReceiptPromise = ensureTxReceipt({\n hash: swapTxHash,\n chainId,\n onReplaced: (data) => {\n logger.log(\"onReplaced:swapTx\", swapTxHash, data);\n },\n });\n if (onTxSent) {\n onTxSent({\n chainId,\n txHash: swapTxHash,\n actionType: \"swap\",\n receiptPromise: swapTxReceiptPromise,\n });\n }\n\n const swapTxReceipt = await swapTxReceiptPromise;\n logger.log(\"~ swapTx ~ receipt:\", swapTxReceipt);\n // @TODO check if we need to see if receipt.status === \"reverted\" and trhow,\n // or if waitForTransactionReceipt already throws on such receipts\n\n // @TODO try catch, handle errors, refetch allowance and balance in finally\n\n return {\n tradeFlowType: \"marketSwap\",\n approve: {\n txHash: approveTxHash,\n receipt: approveTxReceipt,\n },\n swap: {\n txHash: swapTxHash,\n receipt: swapTxReceipt,\n },\n marketPrice: marketPriceToUse,\n // @TODO add whatever else may be relevant\n account,\n receiverAddress,\n };\n } catch (error) {\n // Market swap failed, we can't be sure if nonce can be reused or it was incremented in a different tx\n // or even Order in the meantime\n if (signedPermitResult) {\n clearNonce(signedPermitResult.signedPermitData);\n }\n throw error;\n } finally {\n // always unsubscribe if subscribed previously\n unsubscribeFromPrice?.();\n }\n };\n\n const marketSwapMut = useMutation({\n mutationFn: submitSwapTx,\n mutationKey: [MARKET_SWAP_MUTATION_KEY],\n onSuccess: (data) => {\n logger.log(\"Swap tx success\", data);\n },\n onError: (error) => {\n logger.error(\"Swap tx error\", error);\n },\n onSettled: () => {\n logger.log(\"Swap tx settled\");\n },\n });\n\n const runMarketSwapFlow = marketSwapMut.mutateAsync;\n\n const reset = () => {\n usingPriceRef.current = null;\n\n approveTxMut.reset();\n signPermitMut.reset();\n buildTxMut.reset();\n sendSwapTxMut.reset();\n marketSwapMut.reset();\n };\n\n const retryFlow = (options?: RunMarketOptions): Promise<SubmitSwapResult> => {\n reset();\n return runMarketSwapFlow(options);\n };\n\n // finalPrice if we reached that point, or usable price (based on allowance given)\n const usedPrice = usingPriceRef.current || marketPrice;\n\n /* 7. return result */\n return {\n chainId,\n runMarketSwapFlow,\n reset,\n cancelFlow,\n retryFlow,\n approval,\n signPermit,\n buildTxParams,\n swap,\n // marketSwapMut includes all steps' queries and mutations and returns more precise errors (including cancellation)\n isPending: marketSwapMut.isPending,\n isSuccess: marketSwapMut.isSuccess,\n isError: marketSwapMut.isError,\n error: marketSwapMut.error,\n result: marketSwapMut.data,\n usedPrice,\n };\n}\n"],"names":["MARKET_SWAP_MUTATION_KEY","useMarketFlow","marketPrice","logger","useLogger","chainId","useChainId","resolvedSlippage","useSlippage","swapSide","useSwapSide","approval","signPermit","approveTxMut","signPermitMut","useApproveOrPermit","srcToken","srcAmount","spenderContractType","side","buildTxMut","useBuildTx","mutationOptions","onSuccess","log","onError","error","buildTxParams","isPending","isError","isSuccess","sendSwapTxMut","useSendMarketSwapTx","swapTxMined","useAwaitTx","hash","txHash","swap","receipt","data","isConfirmingTX","isConfirmingTxError","isTxSent","isTxPending","isLoading","isTxMined","isTxAwaitingError","address","account","useAccount","ensureTxReceipt","useEnsureTxReceipt","currentAbortControllerRef","useRef","usingPriceRef","cancelFlow","current","abort","UserCancelledError","receiverAddress","useReceiverAddressValue","markNonceAsUsed","clearNonce","useMarkPermit1Or2NonceAsUsed","constructGasParams","useConstructGasParams","partner","useWidgetConfig","getQueryForPrice","useMarketPriceQueryForPrice","subscribeToPrice","useSubscribeToMarketPrice","submitSwapTx","onTxSent","reset","assert","abortController","AbortController","signal","signedPermitResult","approveTxHash","approveTxReceipt","allowanceToSet","freshPrice","unsubscribeFromPrice","needsApproval","queryKey","price","approvedAmount","onData","newPrice","aborted","undefined","amountsAfterSlippage","applySlippage","destAmount","BigInt","isPermitSupported","isPermitReadyToSign","approveAsync","allowanceData","throwIfAborted","approveTxReceiptPromise","onReplaced","actionType","receiptPromise","signPermitAsync","value","marketPriceToUse","gasParams","txParams","mutateAsync","swapTxInput","userAddress","receiver","destToken","srcDecimals","destDecimals","permit","permitEncodedArgs","priceRoute","swapTxOptions","swapTxHash","sendTransactionAsync","signedPermitData","swapTxReceiptPromise","swapTxReceipt","tradeFlowType","approve","marketSwapMut","useMutation","mutationFn","mutationKey","onSettled","runMarketSwapFlow","retryFlow","options","usedPrice","result"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { d as distExports } from '../../../_virtual/index.js';
2
2
  import { useMarketFlow } from './useMarketFlow.js';
3
3
  import { constructTxLinkForChain } from '../../../lib/utils/explorer.js';
4
- import { useLogger } from '../../../widget/logger.js';
4
+ import { useLogger } from '../../../core/logger.js';
5
5
  import { isUserCancelledError } from './common/errors.js';
6
6
 
7
7
  function useMarketSwapStep(options) {
@@ -1 +1 @@
1
- {"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/widget/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (marketFlow.swap.isTxPending) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" && !marketFlow.swap.isTxSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n const txHash = marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError\n ) {\n erroredStep = \"signature\";\n } else if (marketFlow.swap.isTxAwaitingError) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","permitOrApprovalHappened","txHash","signature","isTxPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isTxAwaitingError","t1","result","usedPrice"],"mappings":"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"}
1
+ {"version":3,"file":"useMarketSwapStep.js","sources":["../../../../src/hooks/swap/tradeFlow/useMarketSwapStep.ts"],"sourcesContent":["import type {\n MarketSwapStep,\n MarketSwapStepKey,\n} from \"@/components/widget/TradeOverview/steps\";\nimport {\n useMarketFlow,\n type UseMarketFlowInput,\n type UseMarketFlowResult,\n type SubmitSwapResult,\n} from \"./useMarketFlow\";\nimport { constructTxLinkForChain } from \"@/lib/utils/explorer\";\nimport { useLogger } from \"@/core/logger\";\nimport { isUserCancelledError } from \"./common/errors\";\n\ntype UseMarketSwapStepResult = {\n startMarketSwap: UseMarketFlowResult[\"runMarketSwapFlow\"];\n // @TODO check if resetting is necessary on error, maybe not if submit on click works as a reset\n reset: UseMarketFlowResult[\"reset\"];\n cancelFlow: UseMarketFlowResult[\"cancelFlow\"];\n retryFlow: UseMarketFlowResult[\"retryFlow\"];\n isCancellable: boolean;\n step?: MarketSwapStep;\n explorerLink?: string;\n error: Error | null;\n erroredStep?: MarketSwapStepKey;\n result?: SubmitSwapResult;\n usedPrice: UseMarketFlowResult[\"usedPrice\"];\n};\n\nexport function useMarketSwapStep(\n options: UseMarketFlowInput\n): UseMarketSwapStepResult {\n const logger = useLogger(\"MarketSwapStep\");\n const marketFlow = useMarketFlow(options);\n\n const startMarketSwap = marketFlow.runMarketSwapFlow;\n const reset = marketFlow.reset;\n const cancelFlow = marketFlow.cancelFlow;\n const retryFlow = marketFlow.retryFlow;\n\n let step: MarketSwapStep | undefined;\n\n const permitSigningHappeningOrNeverHappened =\n // isPending starts as false,\n // so we can use !isPermitSigned to detect if Permit signing is happening or never happened\n marketFlow.signPermit.isPending || !marketFlow.signPermit.isPermitSigned;\n\n const approvalHappeningOrNeverHappened =\n // isPending starts as false,\n // needsApproval && !isSuccess allows to detect approve step right away even then\n marketFlow.approval.isPending || !marketFlow.approval.isSuccess;\n\n const willUsePermit =\n marketFlow.approval.needsApproval &&\n marketFlow.signPermit.isPermitSupported &&\n marketFlow.signPermit.isPermitReadyToSign;\n\n const permitOrApprovalHappeningOrNeverHappened = willUsePermit\n ? permitSigningHappeningOrNeverHappened\n : approvalHappeningOrNeverHappened;\n\n if (\n marketFlow.approval.needsApproval &&\n permitOrApprovalHappeningOrNeverHappened\n ) {\n step = { key: \"signature\", subStep: \"approval-signature\" };\n } else if (\n marketFlow.buildTxParams.isPending ||\n marketFlow.swap.isConfirmingTX\n ) {\n const permitOrApprovalHappened = !!(\n marketFlow.approval.txHash || marketFlow.signPermit.signature\n );\n\n step = {\n key: \"signature\",\n subStep: permitOrApprovalHappened\n ? \"order-signature\"\n : \"standalone-order-signature\",\n };\n } else if (marketFlow.swap.isTxPending) {\n step = { key: \"swap-tx-execution\" };\n } else if (marketFlow.isPending) {\n // if something is between steps but not clear step,\n // then assume we're at the standalone signature sub-step\n step = { key: \"signature\", subStep: \"standalone-order-signature\" };\n }\n\n const approvalIsStarted =\n step?.key === \"signature\" &&\n step.subStep === \"approval-signature\" &&\n marketFlow.approval.isTxPending;\n\n const inSwapTxConfirmation =\n step?.key === \"signature\" &&\n (step.subStep === \"order-signature\" ||\n step.subStep === \"standalone-order-signature\");\n\n const notYetSwapTxSent =\n step?.key === \"swap-tx-execution\" && !marketFlow.swap.isTxSent;\n\n // final tx is not yet sent, there's something to cancel;\n // but some steps are already started so we can't simply dismiss\n const isCancellable =\n approvalIsStarted || inSwapTxConfirmation || notYetSwapTxSent;\n\n const txHash = marketFlow.swap.txHash;\n const explorerLink = txHash\n ? constructTxLinkForChain({ chainId: marketFlow.chainId, txHash })\n : undefined;\n\n logger.once.log(\"step\", step, marketFlow, {\n isCancellable,\n explorerLink,\n txHash,\n });\n\n // intentional cancellation is handled separately\n const error = isUserCancelledError(marketFlow.error)\n ? null\n : marketFlow.error;\n\n let erroredStep: MarketSwapStepKey | undefined;\n\n if (marketFlow.isError) {\n if (\n marketFlow.approval.isError ||\n marketFlow.signPermit.isError ||\n marketFlow.buildTxParams.isError ||\n marketFlow.swap.isConfirmingTxError\n ) {\n erroredStep = \"signature\";\n } else if (marketFlow.swap.isTxAwaitingError) {\n erroredStep = \"swap-tx-execution\";\n }\n }\n\n return {\n startMarketSwap,\n reset,\n cancelFlow,\n retryFlow,\n isCancellable,\n step,\n explorerLink,\n error,\n erroredStep,\n result: marketFlow.result,\n usedPrice: marketFlow.usedPrice,\n };\n}\n"],"names":["useMarketSwapStep","options","$","_c","logger","useLogger","marketFlow","useMarketFlow","startMarketSwap","runMarketSwapFlow","reset","cancelFlow","retryFlow","explorerLink","isCancellable","step","once","permitSigningHappeningOrNeverHappened","signPermit","isPending","isPermitSigned","approvalHappeningOrNeverHappened","approval","isSuccess","willUsePermit","needsApproval","isPermitSupported","isPermitReadyToSign","permitOrApprovalHappeningOrNeverHappened","buildTxParams","swap","isConfirmingTX","permitOrApprovalHappened","txHash","signature","isTxPending","approvalIsStarted","key","subStep","inSwapTxConfirmation","notYetSwapTxSent","isTxSent","constructTxLinkForChain","chainId","undefined","log","t0","error","isUserCancelledError","erroredStep","isError","isConfirmingTxError","isTxAwaitingError","t1","result","usedPrice"],"mappings":";;;;;;AA6BO,SAAAA,kBAAAC,OAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAGL,EAAA,MAAAC,MAAAA,GAAeC,UAAU,gBAAgB,CAAA;AACzC,EAAA,MAAAC,UAAAA,GAAmBC,cAAcN,OAAO,CAAA;AAExC,EAAA,MAAAO,kBAAwBF,UAAAA,CAAUG,iBAAAA;AAClC,EAAA,MAAAC,QAAcJ,UAAAA,CAAUI,KAAAA;AACxB,EAAA,MAAAC,aAAmBL,UAAAA,CAAUK,UAAAA;AAC7B,EAAA,MAAAC,YAAkBN,UAAAA,CAAUM,SAAAA;AAAW,EAAA,IAAAC,YAAAA;AAAA,EAAA,IAAAC,aAAAA;AAAA,EAAA,IAAAC,IAAAA;AAAA,EAAA,IAAAb,CAAAA,QAAAE,MAAAA,CAAAY,QAAAd,CAAAA,QAAAI,UAAAA,EAAA;AAIvC,IAAA,MAAAW,wCAGEX,UAAAA,CAAUY,UAAAA,CAAAC,SAAAA,IAAA,CAA0Bb,WAAUY,UAAAA,CAAAE,cAAAA;AAEhD,IAAA,MAAAC,mCAGEf,UAAAA,CAAUgB,QAAAA,CAAAH,SAAAA,IAAA,CAAwBb,WAAUgB,QAAAA,CAAAC,SAAAA;AAE9C,IAAA,MAAAC,aAAAA,GACElB,WAAUgB,QAAAA,CAAAG,aAAAA,IACVnB,WAAUY,UAAAA,CAAAQ,iBAAAA,IACVpB,WAAUY,UAAAA,CAAAS,mBAAAA;AAEZ,IAAA,MAAAC,wCAAAA,GAAiDJ,gBAC7CP,qCAAAA,GACAI,gCAAAA;AAAiC,IAAA,IAGnCf,UAAAA,CAAUgB,QAAAA,CAAAG,aAAAA,IACVG,wCAAAA,EAAwC;AAExCb,MAAAA,IAAAA,GAAAA;AAAAA,QAAAA,GAAAA,EAAcA,WAAAA;AAAAA,QAAWA,OAAAA,EAAWA;AAAAA,OAAoBA;AAAAA,IAApD,CAAA,MAAA;AAAA,MAAA,IAEJT,UAAAA,CAAUuB,aAAAA,CAAAV,SAAAA,IACVb,UAAAA,CAAUwB,KAAAC,cAAAA,EAAoB;AAE9B,QAAA,MAAAC,2BAAA,CAAA,EACE1B,WAAUgB,QAAAA,CAAAW,MAAAA,IAAoB3B,WAAUY,UAAAA,CAAAgB,SAAAA,CAAAA;AAG1CnB,QAAAA,IAAAA,GAAAA;AAAAA,UAAAA,GAAAA,EACOA,WAAAA;AAAAA,UAAWA,OAAAA,EACPiB,2BACL,iBAAA,GACA;AAAA,SAA4B;AAAA,MAJ9B,CAAA,MAAA;AAAA,QAAA,IAMK1B,UAAAA,CAAUwB,KAAAK,WAAAA,EAAA;AACnBpB,UAAAA,IAAAA,GAAAA;AAAAA,YAAAA,GAAAA,EAAcA;AAAAA,WAAmBA;AAAAA,QAA7B,CAAA,MAAA;AAAA,UAAA,IACKT,WAAUa,SAAAA,EAAA;AAGnBJ,YAAAA,IAAAA,GAAAA;AAAAA,cAAAA,GAAAA,EAAcA,WAAAA;AAAAA,cAAWA,OAAAA,EAAWA;AAAAA,aAA4BA;AAAAA,UAA5D;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAGN,IAAA,MAAAqB,iBAAAA,GACErB,MAAIsB,GAAAA,KAAU,WAAA,IACdtB,KAAIuB,OAAAA,KAAa,oBAAA,IACjBhC,WAAUgB,QAAAA,CAAAa,WAAAA;AAEZ,IAAA,MAAAI,oBAAAA,GACExB,MAAIsB,GAAAA,KAAU,WAAA,KACbtB,KAAIuB,OAAAA,KAAa,iBAAA,IAChBvB,KAAIuB,OAAAA,KAAa,4BAAA,CAAA;AAErB,IAAA,MAAAE,mBACEzB,IAAAA,EAAIsB,GAAAA,KAAU,mBAAA,IAAmB,CAAK/B,WAAUwB,IAAAA,CAAAW,QAAAA;AAIlD3B,IAAAA,aAAAA,GACEsB,qBAAqBG,oBAAAA,IAAwBC,gBAAAA;AAE/C,IAAA,MAAAP,MAAAA,GAAe3B,WAAUwB,IAAAA,CAAAG,MAAAA;AACzBpB,IAAAA,YAAAA,GAAqBoB,SACjBS,uBAAAA,CAAA;AAAA,MAAAC,SAAmCrC,UAAAA,CAAUqC,OAAAA;AAAAA,MAAAV;AAAAA,KAAkB,CAAA,GAACW,MAAAA;AAGpExC,IAAAA,MAAAA,CAAMY,IAAAA,CAAA6B,GAAAA,CAAU,MAAA,EAAQ9B,IAAAA,EAAMT,UAAAA,EAAU;AAAA,MAAAQ,aAAAA;AAAAA,MAAAD,YAAAA;AAAAA,MAAAoB;AAAAA,KAIvC,CAAA;AAAC/B,IAAAA,CAAAA,CAAA,CAAA,IAAAE,MAAAA,CAAAY,IAAAA;AAAAd,IAAAA,CAAAA,MAAAI,UAAAA;AAAAJ,IAAAA,CAAAA,MAAAW,YAAAA;AAAAX,IAAAA,CAAAA,MAAAY,aAAAA;AAAAZ,IAAAA,CAAAA,MAAAa,IAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAF,IAAAA,YAAAA,GAAAX,EAAA,CAAA,CAAA;AAAAY,IAAAA,aAAAA,GAAAZ,EAAA,CAAA,CAAA;AAAAa,IAAAA,IAAAA,GAAAb,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAA4C,EAAAA;AAAA,EAAA,IAAA5C,CAAAA,CAAA,CAAA,CAAA,KAAAI,UAAAA,CAAAyC,KAAAA,EAAA;AAGYD,IAAAA,EAAAA,GAAAE,oBAAAA,CAAqB1C,UAAAA,CAAUyC,KAAM,CAAA,GAAC,OAEhDzC,UAAAA,CAAUyC,KAAAA;AAAM7C,IAAAA,CAAAA,CAAA,CAAA,IAAAI,UAAAA,CAAAyC,KAAAA;AAAA7C,IAAAA,CAAAA,MAAA4C,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAA5C,EAAA,CAAA,CAAA;AAAA,EAAA;AAFpB,EAAA,MAAA6C,KAAAA,GAAcD,EAAAA;AAIVG,EAAAA,IAAAA,WAAAA;AAA0C,EAAA,IAE1C3C,WAAU4C,OAAAA,EAAA;AAAA,IAAA,IAEV5C,UAAAA,CAAUgB,QAAAA,CAAA4B,OAAAA,IACV5C,UAAAA,CAAUY,UAAAA,CAAAgC,OAAAA,IACV5C,UAAAA,CAAUuB,aAAAA,CAAAqB,OAAAA,IACV5C,UAAAA,CAAUwB,IAAAA,CAAAqB,mBAAAA,EAAyB;AAEnCF,MAAAA,WAAAA,GAAcA,WAAAA;AAAAA,IAAH,CAAA,MAAA;AAAA,MAAA,IACF3C,UAAAA,CAAUwB,KAAAsB,iBAAAA,EAAA;AACnBH,QAAAA,WAAAA,GAAcA,mBAAAA;AAAAA,MAAH;AAAA,IAAA;AAAA,EAAA;AAAA,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAnD,CAAAA,QAAAS,UAAAA,IAAAT,EAAA,CAAA,CAAA,KAAA6C,SAAA7C,CAAAA,CAAA,CAAA,MAAA+C,WAAAA,IAAA/C,CAAAA,SAAAW,YAAAA,IAAAX,EAAA,EAAA,CAAA,KAAAY,iBAAAZ,CAAAA,CAAA,EAAA,MAAAI,UAAAA,CAAAgD,MAAAA,IAAApD,EAAA,EAAA,CAAA,KAAAI,WAAAiD,SAAAA,IAAArD,CAAAA,CAAA,EAAA,CAAA,KAAAQ,KAAAA,IAAAR,EAAA,EAAA,CAAA,KAAAU,aAAAV,CAAAA,SAAAM,eAAAA,IAAAN,CAAAA,CAAA,EAAA,CAAA,KAAAa,IAAAA,EAAA;AAIRsC,IAAAA,EAAAA,GAAA;AAAA,MAAA7C,eAAAA;AAAAA,MAAAE,KAAAA;AAAAA,MAAAC,UAAAA;AAAAA,MAAAC,SAAAA;AAAAA,MAAAE,aAAAA;AAAAA,MAAAC,IAAAA;AAAAA,MAAAF,YAAAA;AAAAA,MAAAkC,KAAAA;AAAAA,MAAAE,WAAAA;AAAAA,MAAAK,QAUGhD,UAAAA,CAAUgD,MAAAA;AAAAA,MAAAC,WACPjD,UAAAA,CAAUiD;AAAAA,KAAA;AACtBrD,IAAAA,CAAAA,MAAAS,UAAAA;AAAAT,IAAAA,CAAAA,MAAA6C,KAAAA;AAAA7C,IAAAA,CAAAA,MAAA+C,WAAAA;AAAA/C,IAAAA,CAAAA,OAAAW,YAAAA;AAAAX,IAAAA,CAAAA,OAAAY,aAAAA;AAAAZ,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAgD,MAAAA;AAAApD,IAAAA,CAAAA,CAAA,EAAA,IAAAI,UAAAA,CAAAiD,SAAAA;AAAArD,IAAAA,CAAAA,OAAAQ,KAAAA;AAAAR,IAAAA,CAAAA,OAAAU,SAAAA;AAAAV,IAAAA,CAAAA,OAAAM,eAAAA;AAAAN,IAAAA,CAAAA,OAAAa,IAAAA;AAAAb,IAAAA,CAAAA,OAAAmD,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAnD,EAAA,EAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAZMmD,EAAAA;AAYN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGenericTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useGenericTokenAllowance.ts"],"sourcesContent":["import { useTokenAllowance } from \"./useTokenAllowance\";\nimport { formatUnits } from \"viem\";\nimport { useSpender } from \"@/hooks/sdk/useSpender\";\n\nimport { useAccount } from \"wagmi\";\nimport { toDecimal } from \"@/lib/utils/toDecimal\";\nimport { useMemo } from \"react\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type {\n AllowanceData,\n GenericTokenAllowance,\n UseGenericTokenAllowanceInput,\n} from \"./types\";\nimport type { SpenderContractType } from \"@/hooks/sdk/types\";\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useGenericTokenAllowance = ({\n token,\n amountToApproveInWei = 0n,\n spenderContractType,\n}: UseGenericTokenAllowanceInput = {}): GenericTokenAllowance => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const { data: allowance, isLoading: isLoadingAllowance } = useTokenAllowance({\n tokenAddress: token?.address,\n spender,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance = !token || isETH(token) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n return calcAllowanceData({\n allowance: allowance || 0n,\n amountToApproveInWei: BigInt(amountToApproveInWei), // ok to cast wei\n tokenDecimals: token?.decimals,\n });\n }, [allowance, amountToApproveInWei, isConnected, token]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n };\n};\n\ntype UseGenericTokenAllowanceMinInput = {\n tokenAddress?: string;\n spenderContractType?: SpenderContractType;\n amountToApproveInWei?: string | bigint;\n chainId?: SupportedChainId;\n};\n\ntype GenericTokenAllowanceMin = Pick<\n GenericTokenAllowance,\n | \"isLoadingPrerequisites\"\n | \"allowance\"\n | \"needsApproval\"\n | \"enoughAllowance\"\n | \"allowanceToSet\"\n | \"spender\"\n> & { queryKey: QueryKey };\n\n// exclusively deals with wei\nexport const useGenericTokenAllowanceMin = ({\n tokenAddress,\n amountToApproveInWei = 0n,\n spenderContractType,\n chainId,\n}: UseGenericTokenAllowanceMinInput = {}): GenericTokenAllowanceMin => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const {\n data: allowance,\n isLoading: isLoadingAllowance,\n queryKey,\n } = useTokenAllowance({\n tokenAddress,\n spender,\n chainId,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance =\n !tokenAddress || isETH({ address: tokenAddress }) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n const amountToApproveInWeiBigInt = BigInt(amountToApproveInWei);\n\n const enoughAllowance =\n !!allowance && allowance >= amountToApproveInWeiBigInt;\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove =\n amountToApproveInWeiBigInt - (allowance || 0n);\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWeiBigInt,\n differenceLeftToApprove,\n };\n }, [allowance, amountToApproveInWei, isConnected, tokenAddress]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n queryKey,\n };\n};\n\nfunction calcAllowanceData({\n allowance,\n amountToApproveInWei,\n tokenDecimals,\n}: {\n allowance: bigint;\n amountToApproveInWei: bigint;\n tokenDecimals: number;\n}): AllowanceData {\n const enoughAllowance = allowance >= amountToApproveInWei;\n\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove = amountToApproveInWei - allowance;\n\n const amountToApproveUnits = formatUnits(amountToApproveInWei, tokenDecimals);\n const allowanceToSetHumanReadable = toDecimal(Number(amountToApproveUnits));\n\n const differenceLeftToApproveUnits = formatUnits(\n differenceLeftToApprove,\n tokenDecimals\n );\n const differenceLeftToApproveHumanReadable = toDecimal(\n Number(differenceLeftToApproveUnits)\n );\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWei,\n allowanceToSetHumanReadable,\n differenceLeftToApprove,\n differenceLeftToApproveHumanReadable,\n };\n}\n"],"names":["useGenericTokenAllowance","token","amountToApproveInWei","spenderContractType","isConnected","useAccount","spender","isLoading","isLoadingSpender","useSpender","data","allowance","isLoadingAllowance","useTokenAllowance","tokenAddress","address","allowanceOnChain","useMemo","tokenDoesntRequireAllowance","isETH","needsApproval","enoughAllowance","calcAllowanceData","BigInt","tokenDecimals","decimals","isLoadingPrerequisites","useGenericTokenAllowanceMin","chainId","queryKey","amountToApproveInWeiBigInt","differenceLeftToApprove","allowanceToSet","amountToApproveUnits","formatUnits","allowanceToSetHumanReadable","toDecimal","Number","differenceLeftToApproveUnits","differenceLeftToApproveHumanReadable"],"mappings":"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"}
1
+ {"version":3,"file":"useGenericTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useGenericTokenAllowance.ts"],"sourcesContent":["import { useTokenAllowance } from \"./useTokenAllowance\";\nimport { formatUnits } from \"viem\";\nimport { useSpender } from \"@/hooks/sdk/useSpender\";\n\nimport { useAccount } from \"wagmi\";\nimport { toDecimal } from \"@/lib/utils/toDecimal\";\nimport { useMemo } from \"react\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type {\n AllowanceData,\n GenericTokenAllowance,\n UseGenericTokenAllowanceInput,\n} from \"./types\";\nimport type { SpenderContractType } from \"@/hooks/sdk/types\";\nimport type { QueryKey } from \"@tanstack/react-query\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport const useGenericTokenAllowance = ({\n token,\n amountToApproveInWei = 0n,\n spenderContractType,\n}: UseGenericTokenAllowanceInput = {}): GenericTokenAllowance => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const { data: allowance, isLoading: isLoadingAllowance } = useTokenAllowance({\n tokenAddress: token?.address,\n spender,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance = !token || isETH(token) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n return calcAllowanceData({\n allowance: allowance || 0n,\n amountToApproveInWei: BigInt(amountToApproveInWei), // ok to cast wei\n tokenDecimals: token?.decimals,\n });\n }, [allowance, amountToApproveInWei, isConnected, token]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n };\n};\n\ntype UseGenericTokenAllowanceMinInput = {\n tokenAddress?: string;\n spenderContractType?: SpenderContractType;\n amountToApproveInWei?: string | bigint;\n chainId?: SupportedChainId;\n};\n\ntype GenericTokenAllowanceMin = Pick<\n GenericTokenAllowance,\n | \"isLoadingPrerequisites\"\n | \"allowance\"\n | \"needsApproval\"\n | \"enoughAllowance\"\n | \"allowanceToSet\"\n | \"spender\"\n> & { queryKey: QueryKey };\n\n// exclusively deals with wei\nexport const useGenericTokenAllowanceMin = ({\n tokenAddress,\n amountToApproveInWei = 0n,\n spenderContractType,\n chainId,\n}: UseGenericTokenAllowanceMinInput = {}): GenericTokenAllowanceMin => {\n const { isConnected } = useAccount();\n\n const { spender, isLoading: isLoadingSpender } =\n useSpender(spenderContractType);\n\n const {\n data: allowance,\n isLoading: isLoadingAllowance,\n queryKey,\n } = useTokenAllowance({\n tokenAddress,\n spender,\n chainId,\n });\n\n const allowanceOnChain = useMemo(() => {\n const tokenDoesntRequireAllowance =\n !tokenAddress || isETH({ address: tokenAddress }) || !isConnected;\n\n if (tokenDoesntRequireAllowance) {\n return {\n needsApproval: false,\n enoughAllowance: true,\n };\n }\n\n const amountToApproveInWeiBigInt = BigInt(amountToApproveInWei);\n\n const enoughAllowance =\n !!allowance && allowance >= amountToApproveInWeiBigInt;\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove =\n amountToApproveInWeiBigInt - (allowance || 0n);\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWeiBigInt,\n differenceLeftToApprove,\n };\n }, [allowance, amountToApproveInWei, isConnected, tokenAddress]);\n\n const isLoadingPrerequisites =\n isConnected && (isLoadingSpender || isLoadingAllowance);\n\n return {\n allowance,\n isLoadingPrerequisites,\n spender,\n ...allowanceOnChain,\n queryKey,\n };\n};\n\nfunction calcAllowanceData({\n allowance,\n amountToApproveInWei,\n tokenDecimals,\n}: {\n allowance: bigint;\n amountToApproveInWei: bigint;\n tokenDecimals: number;\n}): AllowanceData {\n const enoughAllowance = allowance >= amountToApproveInWei;\n\n const needsApproval = !enoughAllowance;\n\n if (!needsApproval) {\n return {\n needsApproval: false,\n enoughAllowance,\n };\n }\n\n const differenceLeftToApprove = amountToApproveInWei - allowance;\n\n const amountToApproveUnits = formatUnits(amountToApproveInWei, tokenDecimals);\n const allowanceToSetHumanReadable = toDecimal(Number(amountToApproveUnits));\n\n const differenceLeftToApproveUnits = formatUnits(\n differenceLeftToApprove,\n tokenDecimals\n );\n const differenceLeftToApproveHumanReadable = toDecimal(\n Number(differenceLeftToApproveUnits)\n );\n\n return {\n needsApproval,\n enoughAllowance,\n allowance,\n allowanceToSet: amountToApproveInWei,\n allowanceToSetHumanReadable,\n differenceLeftToApprove,\n differenceLeftToApproveHumanReadable,\n };\n}\n"],"names":["useGenericTokenAllowance","token","amountToApproveInWei","spenderContractType","isConnected","useAccount","spender","isLoading","isLoadingSpender","useSpender","data","allowance","isLoadingAllowance","useTokenAllowance","tokenAddress","address","allowanceOnChain","useMemo","tokenDoesntRequireAllowance","isETH","needsApproval","enoughAllowance","calcAllowanceData","BigInt","tokenDecimals","decimals","isLoadingPrerequisites","useGenericTokenAllowanceMin","chainId","queryKey","amountToApproveInWeiBigInt","differenceLeftToApprove","allowanceToSet","amountToApproveUnits","formatUnits","allowanceToSetHumanReadable","toDecimal","Number","differenceLeftToApproveUnits","differenceLeftToApproveHumanReadable"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useTokenAllowance.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { erc20Abi, isAddress } from \"viem\";\nimport { useAccount, useReadContract } from \"wagmi\";\nimport type { UseTokenAllowanceInput } from \"./types\";\n\nexport const useTokenAllowance = ({\n tokenAddress,\n spender,\n chainId,\n owner,\n enabled = true,\n}: UseTokenAllowanceInput) => {\n const { address: account } = useAccount();\n\n const ownerAddress = owner || account;\n\n return useReadContract({\n address: tokenAddress && isAddress(tokenAddress) ? tokenAddress : undefined,\n functionName: \"allowance\" as const,\n abi: erc20Abi,\n chainId,\n args:\n ownerAddress && spender && isAddress(spender)\n ? [ownerAddress, spender]\n : undefined,\n query: {\n enabled:\n enabled &&\n !!tokenAddress &&\n !!account &&\n !!spender &&\n !isETH({ address: tokenAddress }),\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n },\n });\n};\n"],"names":["useTokenAllowance","t0","$","_c","tokenAddress","spender","chainId","owner","enabled","t1","undefined","address","account","useAccount","ownerAddress","t2","isAddress","t3","t4","isETH","t5","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t6","functionName","abi","erc20Abi","args","query","useReadContract"],"mappings":";;;;;;AAMO,MAAMA,oBAAoBC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,YAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,OAAAA,EAAAC;AAAAA,GAAA,GAAAR,EAAAA;AAKhC,EAAA,MAAAO,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAEA,EAAA,MAAA;AAAA,IAAAE,OAAAA,EAAAC;AAAAA,MAA6BC,UAAAA,EAAW;AAExC,EAAA,MAAAC,eAAqBP,KAAAA,IAASK,OAAAA;AAGnB,EAAA,MAAAG,EAAAA,GAAAX,YAAAA,IAAgBY,SAAAA,CAAUZ,YAAY,IAAIA,YAAAA,GAAYM,MAAAA;AAAY,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAf,EAAA,CAAA,CAAA,KAAAY,gBAAAZ,CAAAA,QAAAG,OAAAA,EAAA;AAKzEY,IAAAA,EAAAA,GAAAH,YAAAA,IAAgBT,WAAWW,SAAAA,CAAUX,OAAO,IAAC,CACxCS,YAAAA,EAAcT,OAAO,CAAA,GAAAK,MAAAA;AACbR,IAAAA,CAAAA,MAAAY,YAAAA;AAAAZ,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAe,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAf,EAAA,CAAA,CAAA;AAAA;AAGX,EAAA,MAAAgB,EAAAA,GAAAV,OAAAA,IAAO,CAAA,CACLJ,YAAAA,MACAQ,OAAAA,IAAO,CAAA,CACPP,OAAAA,IAAO,CACRc,KAAAA,CAAA;AAAA,IAAAR,OAAAA,EAAiBP;AAAAA,GAAc,CAAA;AAAC,EAAA,IAAAgB,EAAAA;AAAA,EAAA,IAAAlB,CAAAA,QAAAgB,EAAAA,EAAA;AAN9BE,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,OAAAA,EAEHU,EAAAA;AAAAA,MAIiCG,SAAAA,EAAAC;AAAAA,KAAA;AAEpCpB,IAAAA,CAAAA,MAAAgB,EAAAA;AAAAhB,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAlB,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,IAAAqB,EAAAA;AAAA,EAAA,IAAArB,CAAAA,CAAA,CAAA,CAAA,KAAAI,OAAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAa,EAAAA,IAAAb,CAAAA,CAAA,CAAA,CAAA,KAAAe,EAAAA,IAAAf,CAAAA,QAAAkB,EAAAA,EAAA;AAjBoBG,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,OAAAA,EACZI,EAAAA;AAAAA,MAAkES,YAAAA,EAC7D,WAAA;AAAA,MAAoBC,GAAAA,EAAAC,QAAAA;AAAAA,MAAApB,OAAAA;AAAAA,MAAAqB,IAAAA,EAIhCV,EAAAA;AAAAA,MAEaW,KAAAA,EACRR;AAAAA,KAQN;AACFlB,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAa,EAAAA;AAAAb,IAAAA,CAAAA,MAAAe,EAAAA;AAAAf,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAlB,IAAAA,CAAAA,MAAAqB,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAArB,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAlBM2B,gBAAgBN,EAkBtB,CAAA;AAAC;;;;"}
1
+ {"version":3,"file":"useTokenAllowance.js","sources":["../../../../src/hooks/tokens/allowance/useTokenAllowance.ts"],"sourcesContent":["import { LONG_STALE_TIME_FOR_REACTIVENESS } from \"@/lib/constants/time\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { erc20Abi, isAddress } from \"viem\";\nimport { useAccount, useReadContract } from \"wagmi\";\nimport type { UseTokenAllowanceInput } from \"./types\";\n\nexport const useTokenAllowance = ({\n tokenAddress,\n spender,\n chainId,\n owner,\n enabled = true,\n}: UseTokenAllowanceInput) => {\n const { address: account } = useAccount();\n\n const ownerAddress = owner || account;\n\n return useReadContract({\n address: tokenAddress && isAddress(tokenAddress) ? tokenAddress : undefined,\n functionName: \"allowance\" as const,\n abi: erc20Abi,\n chainId,\n args:\n ownerAddress && spender && isAddress(spender)\n ? [ownerAddress, spender]\n : undefined,\n query: {\n enabled:\n enabled &&\n !!tokenAddress &&\n !!account &&\n !!spender &&\n !isETH({ address: tokenAddress }),\n staleTime: LONG_STALE_TIME_FOR_REACTIVENESS,\n },\n });\n};\n"],"names":["useTokenAllowance","t0","$","_c","tokenAddress","spender","chainId","owner","enabled","t1","undefined","address","account","useAccount","ownerAddress","t2","isAddress","t3","t4","isETH","t5","staleTime","LONG_STALE_TIME_FOR_REACTIVENESS","t6","functionName","abi","erc20Abi","args","query","useReadContract"],"mappings":";;;;;;AAMO,MAAMA,oBAAoBC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC,YAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC,KAAAA;AAAAA,IAAAC,OAAAA,EAAAC;AAAAA,GAAA,GAAAR,EAAAA;AAKhC,EAAA,MAAAO,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAEA,EAAA,MAAA;AAAA,IAAAE,OAAAA,EAAAC;AAAAA,MAA6BC,UAAAA,EAAW;AAExC,EAAA,MAAAC,eAAqBP,KAAAA,IAASK,OAAAA;AAGnB,EAAA,MAAAG,EAAAA,GAAAX,YAAAA,IAAgBY,SAAAA,CAAUZ,YAAY,IAAIA,YAAAA,GAAYM,MAAAA;AAAY,EAAA,IAAAO,EAAAA;AAAA,EAAA,IAAAf,EAAA,CAAA,CAAA,KAAAY,gBAAAZ,CAAAA,QAAAG,OAAAA,EAAA;AAKzEY,IAAAA,EAAAA,GAAAH,YAAAA,IAAgBT,WAAWW,SAAAA,CAAUX,OAAO,IAAC,CACxCS,YAAAA,EAAcT,OAAO,CAAA,GAAAK,MAAAA;AACbR,IAAAA,CAAAA,MAAAY,YAAAA;AAAAZ,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAe,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAf,EAAA,CAAA,CAAA;AAAA,EAAA;AAGX,EAAA,MAAAgB,EAAAA,GAAAV,OAAAA,IAAO,CAAA,CACLJ,YAAAA,MACAQ,OAAAA,IAAO,CAAA,CACPP,OAAAA,IAAO,CACRc,KAAAA,CAAA;AAAA,IAAAR,OAAAA,EAAiBP;AAAAA,GAAc,CAAA;AAAC,EAAA,IAAAgB,EAAAA;AAAA,EAAA,IAAAlB,CAAAA,QAAAgB,EAAAA,EAAA;AAN9BE,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,OAAAA,EAEHU,EAAAA;AAAAA,MAIiCG,SAAAA,EAAAC;AAAAA,KAAA;AAEpCpB,IAAAA,CAAAA,MAAAgB,EAAAA;AAAAhB,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAlB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,IAAAqB,EAAAA;AAAA,EAAA,IAAArB,CAAAA,CAAA,CAAA,CAAA,KAAAI,OAAAA,IAAAJ,EAAA,CAAA,CAAA,KAAAa,EAAAA,IAAAb,CAAAA,CAAA,CAAA,CAAA,KAAAe,EAAAA,IAAAf,CAAAA,QAAAkB,EAAAA,EAAA;AAjBoBG,IAAAA,EAAAA,GAAA;AAAA,MAAAZ,OAAAA,EACZI,EAAAA;AAAAA,MAAkES,YAAAA,EAC7D,WAAA;AAAA,MAAoBC,GAAAA,EAAAC,QAAAA;AAAAA,MAAApB,OAAAA;AAAAA,MAAAqB,IAAAA,EAIhCV,EAAAA;AAAAA,MAEaW,KAAAA,EACRR;AAAAA,KAQN;AACFlB,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAa,EAAAA;AAAAb,IAAAA,CAAAA,MAAAe,EAAAA;AAAAf,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAlB,IAAAA,CAAAA,MAAAqB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAArB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAlBM2B,gBAAgBN,EAkBtB,CAAA;AAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sources":["../../../../src/hooks/tokens/balances/queries.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { ETH_ADDRESS_LOWERCASE } from \"@/tokens/constants\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport { assert } from \"ts-essentials\";\nimport { erc20Abi } from \"viem\";\nimport { getBalance, multicall } from \"viem/actions\";\nimport type {\n BalanceOfResult,\n ProduceQueryOptionsInput,\n TokenBalancesQueryKey,\n AddressBalanceMap,\n} from \"./types\";\n\nfunction constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase,\n account,\n}: Pick<\n ProduceQueryOptionsInput,\n \"chainId\" | \"tokenAddressesLowercase\" | \"account\"\n>): TokenBalancesQueryKey {\n return [\"token-balances\", chainId, tokenAddressesLowercase, account];\n}\n\n// arbitrary, don't know what is the best value to use\nconst BATCH_SIZE = 1024 * 5; // 5 KB\n\nexport function constructTokenBalancesQueryOptions<TData>({\n tokenAddressesLowercase,\n chainId,\n account,\n}: ProduceQueryOptionsInput<TData>): UseQueryOptions<\n AddressBalanceMap,\n Error,\n TData,\n TokenBalancesQueryKey\n> {\n const addressesWithoutEth = tokenAddressesLowercase.filter(\n (address) => !isETH({ address })\n );\n\n const isRequestedEthBalance =\n addressesWithoutEth.length < tokenAddressesLowercase.length;\n\n const queryKey = constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase: tokenAddressesLowercase,\n account,\n });\n\n return {\n queryKey,\n queryFn: async () => {\n assert(account, \"account is required\");\n\n function constructAddressBalanceMap(results: BalanceOfResult[]) {\n return results.reduce<AddressBalanceMap>((acc, result, index) => {\n const tokenAddress = addressesWithoutEth[index];\n if (tokenAddress) acc[tokenAddress] = result;\n return acc;\n }, {});\n }\n\n const contracts = addressesWithoutEth.map((address) => ({\n address,\n abi: erc20Abi,\n functionName: \"balanceOf\" as const,\n args: [account],\n chainId,\n }));\n\n const client = wagmiConfig.getClient({ chainId });\n\n const multicallPromise = multicall(client, {\n contracts,\n batchSize: BATCH_SIZE,\n });\n\n let addressBalanceMap: AddressBalanceMap = {};\n\n if (isRequestedEthBalance) {\n const ethBalance = await getBalance(client, {\n address: account,\n });\n const multiBalances = await multicallPromise;\n\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n\n addressBalanceMap[ETH_ADDRESS_LOWERCASE] = {\n result: ethBalance,\n status: \"success\",\n };\n } else {\n const multiBalances = await multicallPromise;\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n }\n\n return addressBalanceMap;\n },\n enabled: !!account && tokenAddressesLowercase.length > 0,\n staleTime: 25_000,\n };\n}\n"],"names":["constructTokenBalancesQueryKey","chainId","tokenAddressesLowercase","account","BATCH_SIZE","constructTokenBalancesQueryOptions","addressesWithoutEth","filter","address","isETH","isRequestedEthBalance","length","queryKey","queryFn","assert","constructAddressBalanceMap","results","reduce","acc","result","index","tokenAddress","contracts","map","abi","erc20Abi","functionName","args","client","wagmiConfig","getClient","multicallPromise","multicall","batchSize","addressBalanceMap","ethBalance","getBalance","multiBalances","ETH_ADDRESS_LOWERCASE","status","enabled","staleTime"],"mappings":";;;;;;;AAcA,SAASA,8BAAAA,CAA+B;AAAA,EACtCC,OAAAA;AAAAA,EACAC,uBAAAA;AAAAA,EACAC;AAIF,CAAA,EAA0B;AACxB,EAAA,OAAO,CAAC,gBAAA,EAAkBF,OAAAA,EAASC,uBAAAA,EAAyBC,OAAO,CAAA;AACrE;AAGA,MAAMC,aAAa,IAAA,GAAO,CAAA;AAEnB,SAASC,kCAAAA,CAA0C;AAAA,EACxDH,uBAAAA;AAAAA,EACAD,OAAAA;AAAAA,EACAE;AAC+B,CAAA,EAK/B;AACA,EAAA,MAAMG,mBAAAA,GAAsBJ,uBAAAA,CAAwBK,MAAAA,CACjDC,CAAAA,OAAAA,KAAY,CAACC,KAAAA,CAAM;AAAA,IAAED;AAAAA,GAAS,CACjC,CAAA;AAEA,EAAA,MAAME,qBAAAA,GACJJ,mBAAAA,CAAoBK,MAAAA,GAAST,uBAAAA,CAAwBS,MAAAA;AAEvD,EAAA,MAAMC,WAAWZ,8BAAAA,CAA+B;AAAA,IAC9CC,OAAAA;AAAAA,IACAC,uBAAAA;AAAAA,IACAC;AAAAA,GACD,CAAA;AAED,EAAA,OAAO;AAAA,IACLS,QAAAA;AAAAA,IACAC,SAAS,YAAY;AACnBC,MAAAA,MAAAA,CAAOX,SAAS,qBAAqB,CAAA;AAErC,MAAA,SAASY,2BAA2BC,OAAAA,EAA4B;AAC9D,QAAA,OAAOA,OAAAA,CAAQC,MAAAA,CAA0B,CAACC,GAAAA,EAAKC,QAAQC,KAAAA,KAAU;AAC/D,UAAA,MAAMC,YAAAA,GAAef,oBAAoBc,KAAK,CAAA;AAC9C,UAAA,IAAIC,YAAAA,EAAcH,GAAAA,CAAIG,YAAY,CAAA,GAAIF,MAAAA;AACtC,UAAA,OAAOD,GAAAA;AAAAA,SACT,EAAG,EAAE,CAAA;AAAA;AAGP,MAAA,MAAMI,SAAAA,GAAYhB,mBAAAA,CAAoBiB,GAAAA,CAAKf,CAAAA,OAAAA,MAAa;AAAA,QACtDA,OAAAA;AAAAA,QACAgB,GAAAA,EAAKC,QAAAA;AAAAA,QACLC,YAAAA,EAAc,WAAA;AAAA,QACdC,IAAAA,EAAM,CAACxB,OAAO,CAAA;AAAA,QACdF;AAAAA,OACF,CAAE,CAAA;AAEF,MAAA,MAAM2B,MAAAA,GAASC,YAAYC,SAAAA,CAAU;AAAA,QAAE7B;AAAAA,OAAS,CAAA;AAEhD,MAAA,MAAM8B,gBAAAA,GAAmBC,UAAUJ,MAAAA,EAAQ;AAAA,QACzCN,SAAAA;AAAAA,QACAW,SAAAA,EAAW7B;AAAAA,OACZ,CAAA;AAED,MAAA,IAAI8B,oBAAuC,EAAC;AAE5C,MAAA,IAAIxB,qBAAAA,EAAuB;AACzB,QAAA,MAAMyB,UAAAA,GAAa,MAAMC,UAAAA,CAAWR,MAAAA,EAAQ;AAAA,UAC1CpB,OAAAA,EAASL;AAAAA,SACV,CAAA;AACD,QAAA,MAAMkC,gBAAgB,MAAMN,gBAAAA;AAE5BG,QAAAA,iBAAAA,GAAoBnB,2BAA2BsB,aAAa,CAAA;AAE5DH,QAAAA,iBAAAA,CAAkBI,qBAAqB,CAAA,GAAI;AAAA,UACzCnB,MAAAA,EAAQgB,UAAAA;AAAAA,UACRI,MAAAA,EAAQ;AAAA,SACV;AAAA,OACF,MAAO;AACL,QAAA,MAAMF,gBAAgB,MAAMN,gBAAAA;AAC5BG,QAAAA,iBAAAA,GAAoBnB,2BAA2BsB,aAAa,CAAA;AAAA;AAG9D,MAAA,OAAOH,iBAAAA;AAAAA,KACT;AAAA,IACAM,OAAAA,EAAS,CAAC,CAACrC,OAAAA,IAAWD,wBAAwBS,MAAAA,GAAS,CAAA;AAAA,IACvD8B,SAAAA,EAAW;AAAA,GACb;AACF;;;;"}
1
+ {"version":3,"file":"queries.js","sources":["../../../../src/hooks/tokens/balances/queries.ts"],"sourcesContent":["import { wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport { ETH_ADDRESS_LOWERCASE } from \"@/tokens/constants\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\nimport { assert } from \"ts-essentials\";\nimport { erc20Abi } from \"viem\";\nimport { getBalance, multicall } from \"viem/actions\";\nimport type {\n BalanceOfResult,\n ProduceQueryOptionsInput,\n TokenBalancesQueryKey,\n AddressBalanceMap,\n} from \"./types\";\n\nfunction constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase,\n account,\n}: Pick<\n ProduceQueryOptionsInput,\n \"chainId\" | \"tokenAddressesLowercase\" | \"account\"\n>): TokenBalancesQueryKey {\n return [\"token-balances\", chainId, tokenAddressesLowercase, account];\n}\n\n// arbitrary, don't know what is the best value to use\nconst BATCH_SIZE = 1024 * 5; // 5 KB\n\nexport function constructTokenBalancesQueryOptions<TData>({\n tokenAddressesLowercase,\n chainId,\n account,\n}: ProduceQueryOptionsInput<TData>): UseQueryOptions<\n AddressBalanceMap,\n Error,\n TData,\n TokenBalancesQueryKey\n> {\n const addressesWithoutEth = tokenAddressesLowercase.filter(\n (address) => !isETH({ address })\n );\n\n const isRequestedEthBalance =\n addressesWithoutEth.length < tokenAddressesLowercase.length;\n\n const queryKey = constructTokenBalancesQueryKey({\n chainId,\n tokenAddressesLowercase: tokenAddressesLowercase,\n account,\n });\n\n return {\n queryKey,\n queryFn: async () => {\n assert(account, \"account is required\");\n\n function constructAddressBalanceMap(results: BalanceOfResult[]) {\n return results.reduce<AddressBalanceMap>((acc, result, index) => {\n const tokenAddress = addressesWithoutEth[index];\n if (tokenAddress) acc[tokenAddress] = result;\n return acc;\n }, {});\n }\n\n const contracts = addressesWithoutEth.map((address) => ({\n address,\n abi: erc20Abi,\n functionName: \"balanceOf\" as const,\n args: [account],\n chainId,\n }));\n\n const client = wagmiConfig.getClient({ chainId });\n\n const multicallPromise = multicall(client, {\n contracts,\n batchSize: BATCH_SIZE,\n });\n\n let addressBalanceMap: AddressBalanceMap = {};\n\n if (isRequestedEthBalance) {\n const ethBalance = await getBalance(client, {\n address: account,\n });\n const multiBalances = await multicallPromise;\n\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n\n addressBalanceMap[ETH_ADDRESS_LOWERCASE] = {\n result: ethBalance,\n status: \"success\",\n };\n } else {\n const multiBalances = await multicallPromise;\n addressBalanceMap = constructAddressBalanceMap(multiBalances);\n }\n\n return addressBalanceMap;\n },\n enabled: !!account && tokenAddressesLowercase.length > 0,\n staleTime: 25_000,\n };\n}\n"],"names":["constructTokenBalancesQueryKey","chainId","tokenAddressesLowercase","account","BATCH_SIZE","constructTokenBalancesQueryOptions","addressesWithoutEth","filter","address","isETH","isRequestedEthBalance","length","queryKey","queryFn","assert","constructAddressBalanceMap","results","reduce","acc","result","index","tokenAddress","contracts","map","abi","erc20Abi","functionName","args","client","wagmiConfig","getClient","multicallPromise","multicall","batchSize","addressBalanceMap","ethBalance","getBalance","multiBalances","ETH_ADDRESS_LOWERCASE","status","enabled","staleTime"],"mappings":";;;;;;;AAcA,SAASA,8BAAAA,CAA+B;AAAA,EACtCC,OAAAA;AAAAA,EACAC,uBAAAA;AAAAA,EACAC;AAIF,CAAA,EAA0B;AACxB,EAAA,OAAO,CAAC,gBAAA,EAAkBF,OAAAA,EAASC,uBAAAA,EAAyBC,OAAO,CAAA;AACrE;AAGA,MAAMC,aAAa,IAAA,GAAO,CAAA;AAEnB,SAASC,kCAAAA,CAA0C;AAAA,EACxDH,uBAAAA;AAAAA,EACAD,OAAAA;AAAAA,EACAE;AAC+B,CAAA,EAK/B;AACA,EAAA,MAAMG,mBAAAA,GAAsBJ,uBAAAA,CAAwBK,MAAAA,CACjDC,CAAAA,OAAAA,KAAY,CAACC,KAAAA,CAAM;AAAA,IAAED;AAAAA,GAAS,CACjC,CAAA;AAEA,EAAA,MAAME,qBAAAA,GACJJ,mBAAAA,CAAoBK,MAAAA,GAAST,uBAAAA,CAAwBS,MAAAA;AAEvD,EAAA,MAAMC,WAAWZ,8BAAAA,CAA+B;AAAA,IAC9CC,OAAAA;AAAAA,IACAC,uBAAAA;AAAAA,IACAC;AAAAA,GACD,CAAA;AAED,EAAA,OAAO;AAAA,IACLS,QAAAA;AAAAA,IACAC,SAAS,YAAY;AACnBC,MAAAA,MAAAA,CAAOX,SAAS,qBAAqB,CAAA;AAErC,MAAA,SAASY,2BAA2BC,OAAAA,EAA4B;AAC9D,QAAA,OAAOA,OAAAA,CAAQC,MAAAA,CAA0B,CAACC,GAAAA,EAAKC,QAAQC,KAAAA,KAAU;AAC/D,UAAA,MAAMC,YAAAA,GAAef,oBAAoBc,KAAK,CAAA;AAC9C,UAAA,IAAIC,YAAAA,EAAcH,GAAAA,CAAIG,YAAY,CAAA,GAAIF,MAAAA;AACtC,UAAA,OAAOD,GAAAA;AAAAA,QACT,CAAA,EAAG,EAAE,CAAA;AAAA,MACP;AAEA,MAAA,MAAMI,SAAAA,GAAYhB,mBAAAA,CAAoBiB,GAAAA,CAAKf,CAAAA,OAAAA,MAAa;AAAA,QACtDA,OAAAA;AAAAA,QACAgB,GAAAA,EAAKC,QAAAA;AAAAA,QACLC,YAAAA,EAAc,WAAA;AAAA,QACdC,IAAAA,EAAM,CAACxB,OAAO,CAAA;AAAA,QACdF;AAAAA,OACF,CAAE,CAAA;AAEF,MAAA,MAAM2B,MAAAA,GAASC,YAAYC,SAAAA,CAAU;AAAA,QAAE7B;AAAAA,OAAS,CAAA;AAEhD,MAAA,MAAM8B,gBAAAA,GAAmBC,UAAUJ,MAAAA,EAAQ;AAAA,QACzCN,SAAAA;AAAAA,QACAW,SAAAA,EAAW7B;AAAAA,OACZ,CAAA;AAED,MAAA,IAAI8B,oBAAuC,EAAC;AAE5C,MAAA,IAAIxB,qBAAAA,EAAuB;AACzB,QAAA,MAAMyB,UAAAA,GAAa,MAAMC,UAAAA,CAAWR,MAAAA,EAAQ;AAAA,UAC1CpB,OAAAA,EAASL;AAAAA,SACV,CAAA;AACD,QAAA,MAAMkC,gBAAgB,MAAMN,gBAAAA;AAE5BG,QAAAA,iBAAAA,GAAoBnB,2BAA2BsB,aAAa,CAAA;AAE5DH,QAAAA,iBAAAA,CAAkBI,qBAAqB,CAAA,GAAI;AAAA,UACzCnB,MAAAA,EAAQgB,UAAAA;AAAAA,UACRI,MAAAA,EAAQ;AAAA,SACV;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAMF,gBAAgB,MAAMN,gBAAAA;AAC5BG,QAAAA,iBAAAA,GAAoBnB,2BAA2BsB,aAAa,CAAA;AAAA,MAC9D;AAEA,MAAA,OAAOH,iBAAAA;AAAAA,IACT,CAAA;AAAA,IACAM,OAAAA,EAAS,CAAC,CAACrC,OAAAA,IAAWD,wBAAwBS,MAAAA,GAAS,CAAA;AAAA,IACvD8B,SAAAA,EAAW;AAAA,GACb;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAttachTokenBalanceMultichain.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAI5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAM/D;;GAEG;AACH,eAAO,MAAM,+BAA+B,GAAI,mBAE7C;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3D,aAaW,KAAK,KAAG,wBAyBnB,CAAC"}
1
+ {"version":3,"file":"useAttachTokenBalanceMultichain.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAI5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAS/D;;GAEG;AACH,eAAO,MAAM,+BAA+B,GAAI,mBAE7C;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3D,aAgBW,KAAK,KAAG,wBAqCnB,CAAC"}
@@ -4,12 +4,17 @@ import { isAddress, formatUnits } from 'viem';
4
4
  import { useMultiChainTokenBalances } from './useMultichainTokenBalances.js';
5
5
  import { useMultiChainTokenPrices } from '../prices/useMultichainTokenPrices.js';
6
6
  import { isSupportedChainId } from '../../../lib/web3/wagmi/utils.js';
7
+ import { useAccount } from 'wagmi';
8
+ import { useSelectedTokenBalances } from './useSelectedTokenBalances.js';
7
9
 
8
10
  const useAttachTokenBalanceMultichain = (t0) => {
9
- const $ = distExports.c(7);
11
+ const $ = distExports.c(9);
10
12
  const {
11
13
  addressesMap
12
14
  } = t0;
15
+ const {
16
+ address: account
17
+ } = useAccount();
13
18
  let t1;
14
19
  if ($[0] !== addressesMap) {
15
20
  t1 = {
@@ -21,6 +26,7 @@ const useAttachTokenBalanceMultichain = (t0) => {
21
26
  t1 = $[1];
22
27
  }
23
28
  const multiChainTokenBalances = useMultiChainTokenBalances(t1);
29
+ const selectedTokenBalances = useSelectedTokenBalances();
24
30
  let t2;
25
31
  let t3;
26
32
  if ($[2] !== addressesMap) {
@@ -34,13 +40,16 @@ const useAttachTokenBalanceMultichain = (t0) => {
34
40
  const chainIds = t2;
35
41
  const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);
36
42
  let t4;
37
- if ($[4] !== multiChainTokenBalances || $[5] !== multiChainTokenPrices) {
43
+ if ($[4] !== account || $[5] !== multiChainTokenBalances || $[6] !== multiChainTokenPrices || $[7] !== selectedTokenBalances) {
38
44
  t4 = (token) => {
45
+ if (!account) {
46
+ return token;
47
+ }
39
48
  const loweredAddress = token.address.toLowerCase();
40
49
  if (!isAddress(loweredAddress)) {
41
50
  return token;
42
51
  }
43
- const balance = multiChainTokenBalances[token.network]?.[loweredAddress]?.result;
52
+ const balance = selectedTokenBalances[token.network]?.[loweredAddress] ?? multiChainTokenBalances[token.network]?.[loweredAddress]?.result;
44
53
  if (balance === void 0) {
45
54
  return token;
46
55
  }
@@ -52,11 +61,13 @@ const useAttachTokenBalanceMultichain = (t0) => {
52
61
  usdBalance
53
62
  };
54
63
  };
55
- $[4] = multiChainTokenBalances;
56
- $[5] = multiChainTokenPrices;
57
- $[6] = t4;
64
+ $[4] = account;
65
+ $[5] = multiChainTokenBalances;
66
+ $[6] = multiChainTokenPrices;
67
+ $[7] = selectedTokenBalances;
68
+ $[8] = t4;
58
69
  } else {
59
- t4 = $[6];
70
+ t4 = $[8];
60
71
  }
61
72
  return t4;
62
73
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useAttachTokenBalanceMultichain.js","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"sourcesContent":["import type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { formatUnits, isAddress } from \"viem\";\nimport { useMultiChainTokenBalances } from \"./useMultichainTokenBalances\";\nimport { useMultiChainTokenPrices } from \"../prices/useMultichainTokenPrices\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\n/**\n This hook will fetch the balances and return a function that will add a balance to the token if available.\n */\nexport const useAttachTokenBalanceMultichain = ({\n addressesMap,\n}: {\n addressesMap: Partial<Record<SupportedChainId, string[]>>;\n}) => {\n const multiChainTokenBalances = useMultiChainTokenBalances({\n addressesMap,\n });\n\n const chainIds = useMemo(\n () => Object.keys(addressesMap).map(Number).filter(isSupportedChainId),\n [addressesMap]\n );\n\n const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);\n\n return useCallback(\n (token: Token): TokenMaybeWithUsdBalance => {\n const loweredAddress = token.address.toLowerCase();\n\n if (!isAddress(loweredAddress)) return token;\n\n const balance =\n multiChainTokenBalances[token.network]?.[loweredAddress]?.result;\n\n if (balance === undefined) return token;\n\n const tokenPrice =\n multiChainTokenPrices[token.network]?.[loweredAddress]?.price;\n\n const usdBalance = tokenPrice\n ? +formatUnits(BigInt(balance), token.decimals) * tokenPrice\n : undefined;\n\n return {\n ...token,\n balance: balance.toString(),\n usdBalance,\n };\n },\n [multiChainTokenPrices, multiChainTokenBalances]\n );\n};\n"],"names":["useAttachTokenBalanceMultichain","t0","$","_c","addressesMap","t1","multiChainTokenBalances","useMultiChainTokenBalances","t2","t3","Object","keys","map","Number","filter","isSupportedChainId","chainIds","multiChainTokenPrices","useMultiChainTokenPrices","t4","token","loweredAddress","address","toLowerCase","isAddress","balance","network","result","undefined","tokenPrice","price","usdBalance","formatUnits","BigInt","decimals","toString"],"mappings":";;;;;;;AAaO,MAAMA,kCAAkCC,CAAAA,EAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAAC,EAAA,MAAA;AAAA,IAAAC;AAAAA,GAAA,GAAAH,EAAAA;AAI/C,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAH,CAAAA,QAAAE,YAAAA,EAAA;AAC4DC,IAAAA,EAAAA,GAAA;AAAA,MAAAD;AAAAA,KAAA;AAE1DF,IAAAA,CAAAA,MAAAE,YAAAA;AAAAF,IAAAA,CAAAA,MAAAG,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAH,EAAA,CAAA,CAAA;AAAA;AAFD,EAAA,MAAAI,uBAAAA,GAAgCC,2BAA2BF,EAE1D,CAAA;AAAE,EAAA,IAAAG,EAAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAP,CAAAA,QAAAE,YAAAA,EAAA;AAGKK,IAAAA,EAAAA,GAAAC,MAAAA,CAAAC,KAAYP,YAAY,CAAA,CAACQ,IAAAC,MAAW,CAAA,CAACC,OAAAC,kBAA0B,CAAA;AAACb,IAAAA,CAAAA,MAAAE,YAAAA;AAAAF,IAAAA,CAAAA,MAAAO,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAP,EAAA,CAAA,CAAA;AAAA;AAAAM,EAAAA,EAAAA,GAAhEC,EAAAA;AADR,EAAA,MAAAO,QAAAA,GAAiBR,EAAAA;AAKjB,EAAA,MAAAS,qBAAAA,GAA8BC,yBAAyBF,QAAQ,CAAA;AAAE,EAAA,IAAAG,EAAAA;AAAA,EAAA,IAAAjB,EAAA,CAAA,CAAA,KAAAI,2BAAAJ,CAAAA,QAAAe,qBAAAA,EAAA;AAG/DE,IAAAA,EAAAA,GAAAC,CAAAA,KAAAA,KAAA;AACE,MAAA,MAAAC,cAAAA,GAAuBD,KAAAA,CAAKE,OAAAA,CAAAC,WAAAA,EAAqB;AAAE,MAAA,IAAA,CAE9CC,SAAAA,CAAUH,cAAc,CAAA,EAAC;AAAA,QAAA,OAASD,KAAAA;AAAAA;AAEvC,MAAA,MAAAK,UACEnB,uBAAAA,CAAwBc,KAAAA,CAAKM,OAAA,CAAA,GAAYL,cAAc,CAAA,EAAAM,MAAAA;AAAU,MAAA,IAE/DF,YAAOG,MAAAA,EAAc;AAAA,QAAA,OAASR,KAAAA;AAAAA;AAElC,MAAA,MAAAS,aACEZ,qBAAAA,CAAsBG,KAAAA,CAAKM,OAAA,CAAA,GAAYL,cAAc,CAAA,EAAAS,KAAAA;AAEvD,MAAA,MAAAC,UAAAA,GAAmBF,UAAAA,GACf,CAACG,WAAAA,CAAYC,MAAAA,CAAOR,OAAO,CAAA,EAAGL,KAAAA,CAAKc,QAAS,CAAA,GAAIL,UAAAA,GAAUD,MAAAA;AAChD,MAAA,OAAA;AAAA,QAAA,GAGTR,KAAAA;AAAAA,QAAKK,OAAAA,EACCA,QAAOU,QAAAA,EAAU;AAAA,QAACJ;AAAAA,OAAA;AAAA,KAAA;AAG9B7B,IAAAA,CAAAA,MAAAI,uBAAAA;AAAAJ,IAAAA,CAAAA,MAAAe,qBAAAA;AAAAf,IAAAA,CAAAA,MAAAiB,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAjB,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAvBIiB,EAAAA;AAyBN;;;;"}
1
+ {"version":3,"file":"useAttachTokenBalanceMultichain.js","sources":["../../../../src/hooks/tokens/balances/useAttachTokenBalanceMultichain.ts"],"sourcesContent":["import type { Token, TokenMaybeWithUsdBalance } from \"@/tokens/state/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { formatUnits, isAddress } from \"viem\";\nimport { useMultiChainTokenBalances } from \"./useMultichainTokenBalances\";\nimport { useMultiChainTokenPrices } from \"../prices/useMultichainTokenPrices\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\nimport { useAccount } from \"wagmi\";\nimport { useSelectedTokenBalances } from \"./useSelectedTokenBalances\";\n\n/**\n This hook will fetch the balances and return a function that will add a balance to the token if available.\n */\nexport const useAttachTokenBalanceMultichain = ({\n addressesMap,\n}: {\n addressesMap: Partial<Record<SupportedChainId, string[]>>;\n}) => {\n const { address: account } = useAccount();\n\n const multiChainTokenBalances = useMultiChainTokenBalances({\n addressesMap,\n });\n const selectedTokenBalances = useSelectedTokenBalances();\n\n const chainIds = useMemo(\n () => Object.keys(addressesMap).map(Number).filter(isSupportedChainId),\n [addressesMap]\n );\n\n const multiChainTokenPrices = useMultiChainTokenPrices(chainIds);\n\n return useCallback(\n (token: Token): TokenMaybeWithUsdBalance => {\n if (!account) return token;\n\n const loweredAddress = token.address.toLowerCase();\n\n if (!isAddress(loweredAddress)) return token;\n\n const balance =\n // selected token balances have priority,\n // because only these balances are invalidated after each transaction/order,\n // and have the most frequent refetch interval\n selectedTokenBalances[token.network]?.[loweredAddress] ??\n // otherwise grab the balance from the multichain balances query\n multiChainTokenBalances[token.network]?.[loweredAddress]?.result;\n\n if (balance === undefined) return token;\n\n const tokenPrice =\n multiChainTokenPrices[token.network]?.[loweredAddress]?.price;\n\n const usdBalance = tokenPrice\n ? +formatUnits(BigInt(balance), token.decimals) * tokenPrice\n : undefined;\n\n return {\n ...token,\n balance: balance.toString(),\n usdBalance,\n };\n },\n [\n account,\n multiChainTokenBalances,\n multiChainTokenPrices,\n selectedTokenBalances,\n ]\n );\n};\n"],"names":["useAttachTokenBalanceMultichain","t0","$","_c","addressesMap","address","account","useAccount","t1","multiChainTokenBalances","useMultiChainTokenBalances","selectedTokenBalances","useSelectedTokenBalances","t2","t3","Object","keys","map","Number","filter","isSupportedChainId","chainIds","multiChainTokenPrices","useMultiChainTokenPrices","t4","token","loweredAddress","toLowerCase","isAddress","balance","network","result","undefined","tokenPrice","price","usdBalance","formatUnits","BigInt","decimals","toString"],"mappings":"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"}
@@ -1,14 +1,15 @@
1
+ import { QueryClient } from '@tanstack/react-query';
1
2
  type TokenFuncsToInvalidate = {
2
3
  allowance?: boolean;
3
4
  balanceOf?: boolean;
4
5
  nonces?: boolean;
5
6
  };
6
7
  /**
7
- * Helper function to invalidate token-related query cache entries.
8
+ * Helper function constructor to invalidate token-related query cache entries.
8
9
  * Used to refresh token balances and allowances after transactions that modify them.
9
10
  * Can selectively invalidate either balance or allowance queries, or both.
10
11
  * Invalidates for all tokens that have their queries currently mounted, which is easier than matching.
11
12
  */
12
- export declare function useInvalidateTokenDataQuery(): (tokenDataType?: TokenFuncsToInvalidate) => Promise<void>;
13
+ export declare const invalidateBalancesAndAllowancesFactory: (queryClient: QueryClient) => ({ allowance, balanceOf, nonces, }?: TokenFuncsToInvalidate) => Promise<void>;
13
14
  export {};
14
15
  //# sourceMappingURL=useInvalidateTokenData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInvalidateTokenData.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useInvalidateTokenData.ts"],"names":[],"mappings":"AAwDA,KAAK,sBAAsB,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAElB,CAAC;AACF;;;;;GAKG;AAEH,wBAAgB,2BAA2B,IAAI,CAC7C,aAAa,CAAC,EAAE,sBAAsB,KACnC,OAAO,CAAC,IAAI,CAAC,CAsFjB"}
1
+ {"version":3,"file":"useInvalidateTokenData.d.ts","sourceRoot":"","sources":["../../../../src/hooks/tokens/balances/useInvalidateTokenData.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAuD1E,KAAK,sBAAsB,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAElB,CAAC;AACF;;;;;GAKG;AACH,eAAO,MAAM,sCAAsC,GAChD,aAAa,WAAW,MAClB,oCAIJ,sBAA2B,kBA4E7B,CAAC"}
@@ -1,5 +1,4 @@
1
- import { d as distExports } from '../../../_virtual/index.js';
2
- import { useQueryClient } from '@tanstack/react-query';
1
+ import '@tanstack/react-query';
3
2
  import 'viem';
4
3
  import 'wagmi';
5
4
  import 'wagmi/query';
@@ -11,86 +10,70 @@ const nonceMethods = ["nonces", "_nonces", "nonce", "getNonce"];
11
10
  function isReadContractsQueryKey(queryKey) {
12
11
  return queryKey[0] === "readContracts";
13
12
  }
14
- function useInvalidateTokenDataQuery() {
15
- const $ = distExports.c(2);
16
- const queryClient = useQueryClient();
17
- let t0;
18
- if ($[0] !== queryClient) {
19
- t0 = async (t1) => {
20
- const {
21
- allowance: t2,
22
- balanceOf: t3,
23
- nonces: t4
24
- } = t1 === void 0 ? {} : t1;
25
- const allowance = t2 === void 0 ? true : t2;
26
- const balanceOf = t3 === void 0 ? true : t3;
27
- const nonces = t4 === void 0 ? false : t4;
28
- const queries = [];
29
- if (balanceOf) {
30
- const ethBalanceQuery = {
31
- queryKey: ["balance"],
32
- exact: false
33
- };
34
- queries.push(ethBalanceQuery);
35
- }
36
- const tokenFuncs = [];
37
- if (balanceOf) {
38
- tokenFuncs.push("balanceOf");
39
- }
40
- if (allowance) {
41
- tokenFuncs.push("allowance");
42
- }
43
- if (tokenFuncs.length > 0) {
44
- const matchedERC20Funcs = tokenFuncs;
45
- const erc20BalanceQuery = {
46
- queryKey: ["readContract"],
47
- exact: false,
48
- predicate: (query) => {
49
- const {
50
- queryKey
51
- } = query;
52
- if (isReadContractQueryKey(queryKey)) {
53
- if (queryKey[1].functionName && matchedERC20Funcs.includes(queryKey[1].functionName)) {
54
- return true;
55
- }
56
- }
57
- return false;
13
+ const invalidateBalancesAndAllowancesFactory = (queryClient) => async ({
14
+ allowance = true,
15
+ balanceOf = true,
16
+ nonces = false
17
+ } = {}) => {
18
+ const queries = [];
19
+ if (balanceOf) {
20
+ const ethBalanceQuery = {
21
+ // easier to just match the queryKey base
22
+ queryKey: ["balance"],
23
+ exact: false
24
+ };
25
+ queries.push(ethBalanceQuery);
26
+ }
27
+ const tokenFuncs = [];
28
+ if (balanceOf) {
29
+ tokenFuncs.push("balanceOf");
30
+ }
31
+ if (allowance) {
32
+ tokenFuncs.push("allowance");
33
+ }
34
+ if (tokenFuncs.length > 0) {
35
+ const matchedERC20Funcs = tokenFuncs;
36
+ const erc20BalanceQuery = {
37
+ queryKey: ["readContract"],
38
+ exact: false,
39
+ predicate: (query) => {
40
+ const {
41
+ queryKey
42
+ } = query;
43
+ if (isReadContractQueryKey(queryKey)) {
44
+ if (queryKey[1].functionName && matchedERC20Funcs.includes(queryKey[1].functionName)) {
45
+ return true;
58
46
  }
59
- };
60
- queries.push(erc20BalanceQuery);
47
+ }
48
+ return false;
61
49
  }
62
- if (nonces) {
63
- const nonceQuery = {
64
- queryKey: ["readContracts"],
65
- exact: false,
66
- predicate: _temp
67
- };
68
- queries.push(nonceQuery);
69
- }
70
- if (queries.length > 0) {
71
- await Promise.all(queries.map((query_1) => queryClient.invalidateQueries(query_1)));
50
+ };
51
+ queries.push(erc20BalanceQuery);
52
+ }
53
+ if (nonces) {
54
+ const matchedNonceMethods = nonceMethods;
55
+ const nonceQuery = {
56
+ queryKey: ["readContracts"],
57
+ exact: false,
58
+ predicate: (query) => {
59
+ const {
60
+ queryKey
61
+ } = query;
62
+ if (isReadContractsQueryKey(queryKey)) {
63
+ const firstMethod = queryKey[1].contracts?.[0]?.functionName;
64
+ if (firstMethod && matchedNonceMethods.includes(firstMethod)) {
65
+ return true;
66
+ }
67
+ }
68
+ return false;
72
69
  }
73
70
  };
74
- $[0] = queryClient;
75
- $[1] = t0;
76
- } else {
77
- t0 = $[1];
71
+ queries.push(nonceQuery);
78
72
  }
79
- const invalidateBalancesAndAllowances = t0;
80
- return invalidateBalancesAndAllowances;
81
- }
82
- function _temp(query_0) {
83
- const {
84
- queryKey: queryKey_0
85
- } = query_0;
86
- if (isReadContractsQueryKey(queryKey_0)) {
87
- const firstMethod = queryKey_0[1].contracts?.[0]?.functionName;
88
- if (firstMethod && nonceMethods.includes(firstMethod)) {
89
- return true;
90
- }
73
+ if (queries.length > 0) {
74
+ await Promise.all(queries.map((query) => queryClient.invalidateQueries(query)));
91
75
  }
92
- return false;
93
- }
76
+ };
94
77
 
95
- export { useInvalidateTokenDataQuery };
78
+ export { invalidateBalancesAndAllowancesFactory };
96
79
  //# sourceMappingURL=useInvalidateTokenData.js.map