@velora-dex/widget 0.8.1-dev.0 → 0.8.2

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 (615) hide show
  1. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  2. package/dist/components/ui/accordion.js.map +1 -1
  3. package/dist/components/ui/button.js.map +1 -1
  4. package/dist/components/ui/card.js.map +1 -1
  5. package/dist/components/ui/drawer.js.map +1 -1
  6. package/dist/components/ui/dropdown-menu.js.map +1 -1
  7. package/dist/components/ui/input.js.map +1 -1
  8. package/dist/components/ui/progress.js.map +1 -1
  9. package/dist/components/ui/skeleton.js.map +1 -1
  10. package/dist/components/ui/sonner.js.map +1 -1
  11. package/dist/components/ui/switch.js.map +1 -1
  12. package/dist/components/ui/tooltip.js.map +1 -1
  13. package/dist/components/web3/AccountButton.js.map +1 -1
  14. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
  15. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.d.ts +1 -0
  16. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.d.ts.map +1 -1
  17. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js +30 -16
  18. package/dist/components/web3/ConnectExternalProvider/metamaskProviderWrapper.js.map +1 -1
  19. package/dist/components/web3/ConnectExternalProvider/safeProviderWrapper.js.map +1 -1
  20. package/dist/components/web3/ConnectExternalProvider/utils.js.map +1 -1
  21. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
  22. package/dist/components/web3/ConnectWallets/index.js +1 -1
  23. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  24. package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
  25. package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
  26. package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
  27. package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
  28. package/dist/components/web3/ConnectWallets/walletFlags.js.map +1 -1
  29. package/dist/components/web3/ConnectWallets/walletIcons.js +1 -1
  30. package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
  31. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
  32. package/dist/components/web3/providers.js.map +1 -1
  33. package/dist/components/widget/AppHeader/Activities/Activities.js.map +1 -1
  34. package/dist/components/widget/AppHeader/Activities/ActivitiesScreen.js.map +1 -1
  35. package/dist/components/widget/AppHeader/Activities/ActivityItems.js.map +1 -1
  36. package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
  37. package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
  38. package/dist/components/widget/AppHeader/Activities/utils.js.map +1 -1
  39. package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
  40. package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
  41. package/dist/components/widget/AppHeader/TradeModeSwitcher.d.ts.map +1 -1
  42. package/dist/components/widget/AppHeader/TradeModeSwitcher.js +61 -53
  43. package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
  44. package/dist/components/widget/AppHeader/state/showMoreAtom.js.map +1 -1
  45. package/dist/components/widget/BridgeList/BridgeListItem.js.map +1 -1
  46. package/dist/components/widget/BridgeList/BridgeProtocolsList.js.map +1 -1
  47. package/dist/components/widget/BridgeList/BridgesList.js.map +1 -1
  48. package/dist/components/widget/BridgeList/hooks.js.map +1 -1
  49. package/dist/components/widget/BridgePreferences/BridgePreferences.js.map +1 -1
  50. package/dist/components/widget/BridgeSelectorExpandable/BridgeSelectorExpandable.js.map +1 -1
  51. package/dist/components/widget/Button/CancelButton/CancelButton.js.map +1 -1
  52. package/dist/components/widget/Button/CancelButton/CancelButtonWithDrawer.js.map +1 -1
  53. package/dist/components/widget/Button/DismissButton.js.map +1 -1
  54. package/dist/components/widget/Button/RefreshButton.d.ts +3 -0
  55. package/dist/components/widget/Button/RefreshButton.d.ts.map +1 -0
  56. package/dist/components/widget/Button/RefreshButton.js +28 -0
  57. package/dist/components/widget/Button/RefreshButton.js.map +1 -0
  58. package/dist/components/widget/Button/types.d.ts +7 -0
  59. package/dist/components/widget/Button/types.d.ts.map +1 -0
  60. package/dist/components/widget/CompareQuotes/CompareQuotes.d.ts.map +1 -1
  61. package/dist/components/widget/CompareQuotes/CompareQuotes.js +67 -73
  62. package/dist/components/widget/CompareQuotes/CompareQuotes.js.map +1 -1
  63. package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
  64. package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
  65. package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
  66. package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
  67. package/dist/components/widget/DexesList/DexItem.js.map +1 -1
  68. package/dist/components/widget/DexesList/DexesList.js.map +1 -1
  69. package/dist/components/widget/DexesList/getDexProps.js.map +1 -1
  70. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
  71. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
  72. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  73. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  74. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
  75. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -1
  76. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
  77. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
  78. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
  79. package/dist/components/widget/Drawer/Overlay.js.map +1 -1
  80. package/dist/components/widget/Drawer/index.js.map +1 -1
  81. package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
  82. package/dist/components/widget/Dropdown/DropdownWithItems.d.ts.map +1 -1
  83. package/dist/components/widget/Dropdown/DropdownWithItems.js +3 -2
  84. package/dist/components/widget/Dropdown/DropdownWithItems.js.map +1 -1
  85. package/dist/components/widget/Dropdown/types.d.ts +1 -1
  86. package/dist/components/widget/Dropdown/types.d.ts.map +1 -1
  87. package/dist/components/widget/Duration/Duration.js.map +1 -1
  88. package/dist/components/widget/Duration/utils.js.map +1 -1
  89. package/dist/components/widget/EnabledExchanges/EnabledExchanges.js.map +1 -1
  90. package/dist/components/widget/EnabledExchanges/EnabledExchangesList.js.map +1 -1
  91. package/dist/components/widget/EnabledList/EnabledList.js.map +1 -1
  92. package/dist/components/widget/FetchingQuotes/FetchingQuotes.js.map +1 -1
  93. package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
  94. package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
  95. package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
  96. package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
  97. package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
  98. package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
  99. package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
  100. package/dist/components/widget/ImportToken/ImportToken.js.map +1 -1
  101. package/dist/components/widget/ImportToken/useImportTokenDrawer.js.map +1 -1
  102. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/Controls.js.map +1 -1
  103. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/LimitOrderDetails.js.map +1 -1
  104. package/dist/components/widget/LimitOrderItem/LimitOrderDetails/utils.js.map +1 -1
  105. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js +5 -8
  106. package/dist/components/widget/LimitOrderItem/LimitOrderListItem.js.map +1 -1
  107. package/dist/components/widget/LimitOrderItem/constants.js.map +1 -1
  108. package/dist/components/widget/LimitOrderItem/utils.js.map +1 -1
  109. package/dist/components/widget/LimitPriceInput/index.js +6 -6
  110. package/dist/components/widget/LimitPriceInput/index.js.map +1 -1
  111. package/dist/components/widget/Line/Line.js.map +1 -1
  112. package/dist/components/widget/ListItem/ListItemWithSwitch.js.map +1 -1
  113. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
  114. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
  115. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
  116. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.js.map +1 -1
  117. package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.js.map +1 -1
  118. package/dist/components/widget/NetworkSwitcher/common/NetworkItem.js.map +1 -1
  119. package/dist/components/widget/NetworkSwitcher/utils/items.js.map +1 -1
  120. package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
  121. package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
  122. package/dist/components/widget/NumberInput/NumberInput.js.map +1 -1
  123. package/dist/components/widget/OrderExpiryInput/index.js.map +1 -1
  124. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/Controls.js.map +1 -1
  125. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/OtcOrderDetails.js.map +1 -1
  126. package/dist/components/widget/OtcOrderItem/OtcOrderDetails/utils.js.map +1 -1
  127. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js +5 -8
  128. package/dist/components/widget/OtcOrderItem/OtcOrderListItem.js.map +1 -1
  129. package/dist/components/widget/OtcOrderItem/constants.js.map +1 -1
  130. package/dist/components/widget/OtcOrderItem/utils.js.map +1 -1
  131. package/dist/components/widget/PayReceiveInfo/PayReceiveInfo.js.map +1 -1
  132. package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
  133. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
  134. package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
  135. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  136. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcControls.js.map +1 -1
  137. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
  138. package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/utils.js.map +1 -1
  139. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
  140. package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
  141. package/dist/components/widget/Screen/ScreenContainer.js.map +1 -1
  142. package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
  143. package/dist/components/widget/SettingsButton/SettingsButton.js.map +1 -1
  144. package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
  145. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
  146. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
  147. package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
  148. package/dist/components/widget/SwapRate/SwapRateWithTooltip.js.map +1 -1
  149. package/dist/components/widget/SwapRate/utils.js.map +1 -1
  150. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.d.ts +4 -1
  151. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.d.ts.map +1 -1
  152. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js +51 -28
  153. package/dist/components/widget/SwapRateWithPriceImpactRow/SwapRateWithPriceImpactRow.js.map +1 -1
  154. package/dist/components/widget/Tabs/Tabs.js.map +1 -1
  155. package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
  156. package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
  157. package/dist/components/widget/TokenBadge/TokenLink.js.map +1 -1
  158. package/dist/components/widget/TokenInput/InputContainer.js.map +1 -1
  159. package/dist/components/widget/TokenInput/InputField.js.map +1 -1
  160. package/dist/components/widget/TokenInput/InputFooter.js.map +1 -1
  161. package/dist/components/widget/TokenInput/InputHeader.js.map +1 -1
  162. package/dist/components/widget/TokenInput/common/Balance.js.map +1 -1
  163. package/dist/components/widget/TokenInput/common/MaxButtons.js.map +1 -1
  164. package/dist/components/widget/TokenInput/index.js.map +1 -1
  165. package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
  166. package/dist/components/widget/TradeOverview/CancelButtonWithDrawer.js.map +1 -1
  167. package/dist/components/widget/TradeOverview/CancelOrder/ConfirmCancel.js.map +1 -1
  168. package/dist/components/widget/TradeOverview/CancelOrder/utils.js.map +1 -1
  169. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  170. package/dist/components/widget/TradeOverview/FillOtcOrderTradeOverview.js.map +1 -1
  171. package/dist/components/widget/TradeOverview/LimitOrderTradeOverview.js.map +1 -1
  172. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  173. package/dist/components/widget/TradeOverview/OtcOrderTradeOverview.js.map +1 -1
  174. package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
  175. package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
  176. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  177. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
  178. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
  179. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
  180. package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
  181. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  182. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  183. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  184. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  185. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -1
  186. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
  187. package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
  188. package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
  189. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  190. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  191. package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
  192. package/dist/components/widget/TradeOverview/TradeOverviewScreen.js.map +1 -1
  193. package/dist/components/widget/TradeOverview/TwapOrderTradeOverview.js.map +1 -1
  194. package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
  195. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  196. package/dist/components/widget/TradeOverview/utils/isNonFlowStep.js.map +1 -1
  197. package/dist/components/widget/TradeOverview/utils/preWrap.js.map +1 -1
  198. package/dist/components/widget/TradeOverview/utils/useSwapAmountsWithSlippage.js.map +1 -1
  199. package/dist/components/widget/TradeParameters/BridgePreferenceParameters/BridgePreferenceParameters.js.map +1 -1
  200. package/dist/components/widget/TradeParameters/BridgePreferenceParameters/useDraftBridgePreferencesState.js.map +1 -1
  201. package/dist/components/widget/TradeParameters/DegenModeConfirmation.js.map +1 -1
  202. package/dist/components/widget/TradeParameters/DegenModeParameter.js.map +1 -1
  203. package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
  204. package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -1
  205. package/dist/components/widget/TradeParameters/EnabledExchangesParameters/EnabledExchangesParameters.js.map +1 -1
  206. package/dist/components/widget/TradeParameters/EnabledExchangesParameters/useDraftEnabledExchangesState.js.map +1 -1
  207. package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
  208. package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
  209. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
  210. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
  211. package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
  212. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
  213. package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
  214. package/dist/components/widget/TradeParameters/state/bridgePreferences/bridgePreferenceAtom.js.map +1 -1
  215. package/dist/components/widget/TradeParameters/state/bridgePreferences/disabledBridgesAtom.js.map +1 -1
  216. package/dist/components/widget/TradeParameters/state/bridgePreferences/excludeBridgesAtom.js.map +1 -1
  217. package/dist/components/widget/TradeParameters/state/bridgePreferences/protocolNameAtom.js.map +1 -1
  218. package/dist/components/widget/TradeParameters/state/bridgePreferences/resetDraftsAtom.js.map +1 -1
  219. package/dist/components/widget/TradeParameters/state/bridgePreferences/useBridgePreferences.js.map +1 -1
  220. package/dist/components/widget/TradeParameters/state/deltaParamActionsAtom.js.map +1 -1
  221. package/dist/components/widget/TradeParameters/state/enabledExchanges/disabledDexesAtomFamily.js.map +1 -1
  222. package/dist/components/widget/TradeParameters/state/enabledExchanges/useDisabledDexes.js.map +1 -1
  223. package/dist/components/widget/TradeParameters/state/slippageParamAtom.js.map +1 -1
  224. package/dist/components/widget/TradeParameters/state/tradePreferencesAtom.js.map +1 -1
  225. package/dist/components/widget/TradeParameters/useTempTradeParameters.js.map +1 -1
  226. package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
  227. package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
  228. package/dist/components/widget/TransactionDetails/LimitOrderDetails/utils.js.map +1 -1
  229. package/dist/components/widget/TransactionDetails/TransactionListItem.js.map +1 -1
  230. package/dist/components/widget/TransactionDetails/utils.js.map +1 -1
  231. package/dist/components/widget/Twap/CustomDurationDrawer.js.map +1 -1
  232. package/dist/components/widget/Twap/OrderDuration.js.map +1 -1
  233. package/dist/components/widget/Twap/OrderSplit.js.map +1 -1
  234. package/dist/components/widget/Twap/RateProtection.js.map +1 -1
  235. package/dist/components/widget/Twap/TwapDetailWithTooltip.js.map +1 -1
  236. package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
  237. package/dist/components/widget/Warning/Warning.js.map +1 -1
  238. package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
  239. package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
  240. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
  241. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
  242. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  243. package/dist/components/widget/YouGet/YouGet.js.map +1 -1
  244. package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
  245. package/dist/core/LimitOrderButton.js.map +1 -1
  246. package/dist/core/LimitOrderDetails.js.map +1 -1
  247. package/dist/core/OtcOrderButton.js.map +1 -1
  248. package/dist/core/OtcOrderDetails.js.map +1 -1
  249. package/dist/core/Toaster.js.map +1 -1
  250. package/dist/core/TradeFlowScreenButton.js.map +1 -1
  251. package/dist/core/TwapDetails.js.map +1 -1
  252. package/dist/core/Updaters.js.map +1 -1
  253. package/dist/core/Warnings.js.map +1 -1
  254. package/dist/core/across/isCrosschainPossible.js.map +1 -1
  255. package/dist/core/across/utils.js.map +1 -1
  256. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  257. package/dist/core/index.js.map +1 -1
  258. package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
  259. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  260. package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
  261. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  262. package/dist/core/inputs/hooks/useWarningMessage.js.map +1 -1
  263. package/dist/core/inputs/hooks/utils.js.map +1 -1
  264. package/dist/core/inputs/state/common.js.map +1 -1
  265. package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
  266. package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
  267. package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
  268. package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
  269. package/dist/core/inputs/state/setTokenByAddressAtom.js +1 -1
  270. package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
  271. package/dist/core/inputs/state/subscriptions.js.map +1 -1
  272. package/dist/core/limit/state/deadlineAtom.js.map +1 -1
  273. package/dist/core/limit/state/isCrosschainAtom.js.map +1 -1
  274. package/dist/core/limit/state/limitInputActionsAtom.js.map +1 -1
  275. package/dist/core/limit/state/limitInputAmountAtom.js.map +1 -1
  276. package/dist/core/limit/state/receiverAddressAtom.js.map +1 -1
  277. package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
  278. package/dist/core/limit/state/selectedTokenAtom.js.map +1 -1
  279. package/dist/core/limit/state/utils.js.map +1 -1
  280. package/dist/core/limit/useLimitDetailsListProps.js.map +1 -1
  281. package/dist/core/limit/useLimitNotSupported.js.map +1 -1
  282. package/dist/core/limit/useLimitPriceDifference.js.map +1 -1
  283. package/dist/core/limit/useLimitPriceInputProps.js.map +1 -1
  284. package/dist/core/limit/useLimitRate.js.map +1 -1
  285. package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
  286. package/dist/core/limit/useLimitTokenSwitcherProps.js.map +1 -1
  287. package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
  288. package/dist/core/logger.js.map +1 -1
  289. package/dist/core/otc/state/deadlineAtom.js.map +1 -1
  290. package/dist/core/otc/state/otcInputActionsAtom.js.map +1 -1
  291. package/dist/core/otc/state/otcInputAmountAtom.js.map +1 -1
  292. package/dist/core/otc/state/receiverAddressAtom.js.map +1 -1
  293. package/dist/core/otc/state/selectedTokenActionsAtom.js.map +1 -1
  294. package/dist/core/otc/state/selectedTokenAtom.js.map +1 -1
  295. package/dist/core/otc/useOtcDetailsListProps.js.map +1 -1
  296. package/dist/core/otc/useOtcNotSupported.js.map +1 -1
  297. package/dist/core/otc/useOtcPriceDifference.js.map +1 -1
  298. package/dist/core/otc/useOtcPriceInputProps.js.map +1 -1
  299. package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
  300. package/dist/core/otc/useOtcTokenSwitcherProps.js.map +1 -1
  301. package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
  302. package/dist/core/screen/hooks/useInitialValue.js.map +1 -1
  303. package/dist/core/screen/hooks/useOnClickOutside.js.map +1 -1
  304. package/dist/core/screen/hooks/useResizeObserver.js.map +1 -1
  305. package/dist/core/screen/hooks/useRunOnMount.js.map +1 -1
  306. package/dist/core/screen/state/hooks/useScreen.js.map +1 -1
  307. package/dist/core/screen/state/hooks/useScreenValue.js.map +1 -1
  308. package/dist/core/screen/state/hooks/useSetScreen.js.map +1 -1
  309. package/dist/core/screen/state/screenAtom.js.map +1 -1
  310. package/dist/core/state/apiConfigAtom.js.map +1 -1
  311. package/dist/core/state/chainToAtom.js.map +1 -1
  312. package/dist/core/state/configActionsAtom.js.map +1 -1
  313. package/dist/core/state/configAtom.js +2 -2
  314. package/dist/core/state/configAtom.js.map +1 -1
  315. package/dist/core/state/configEffectAtom.js.map +1 -1
  316. package/dist/core/state/containerAtom.js.map +1 -1
  317. package/dist/core/state/enabledChainsAtom.js.map +1 -1
  318. package/dist/core/state/enabledTradeModesAtom.d.ts +7 -1
  319. package/dist/core/state/enabledTradeModesAtom.d.ts.map +1 -1
  320. package/dist/core/state/enabledTradeModesAtom.js +1 -1
  321. package/dist/core/state/enabledTradeModesAtom.js.map +1 -1
  322. package/dist/core/state/externalProviderAtom.js.map +1 -1
  323. package/dist/core/state/getSelectableDestChains.js.map +1 -1
  324. package/dist/core/state/isCrosschainAtom.js.map +1 -1
  325. package/dist/core/state/tradeModeAtom.js +1 -1
  326. package/dist/core/state/tradeModeAtom.js.map +1 -1
  327. package/dist/core/state/validatedPartnerConfigAtom.js.map +1 -1
  328. package/dist/core/state/validatedReferrerConfigAtom.js.map +1 -1
  329. package/dist/core/state/widgetEventsAtom.js.map +1 -1
  330. package/dist/core/subscriptions.js.map +1 -1
  331. package/dist/core/swapDetails/fees.js.map +1 -1
  332. package/dist/core/swapDetails/maxToPay.js.map +1 -1
  333. package/dist/core/swapDetails/orderRouting.js.map +1 -1
  334. package/dist/core/swapDetails/priceImpact.js.map +1 -1
  335. package/dist/core/swapDetails/useSwapDetailsListProps.d.ts.map +1 -1
  336. package/dist/core/swapDetails/useSwapDetailsListProps.js +37 -31
  337. package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
  338. package/dist/core/swapDetails/youGet.js.map +1 -1
  339. package/dist/core/twap/state/isCrosschainAtom.js.map +1 -1
  340. package/dist/core/twap/state/selectedTokenActionsAtom.js.map +1 -1
  341. package/dist/core/twap/state/twapInputAmountAtom.js.map +1 -1
  342. package/dist/core/twap/state/twapParamsAtom.js.map +1 -1
  343. package/dist/core/twap/state/twapSideAtom.js.map +1 -1
  344. package/dist/core/twap/twapDetails/minimumReceiveable.js.map +1 -1
  345. package/dist/core/twap/useTwapDetailsListProps.d.ts.map +1 -1
  346. package/dist/core/twap/useTwapDetailsListProps.js +36 -31
  347. package/dist/core/twap/useTwapDetailsListProps.js.map +1 -1
  348. package/dist/core/twap/useTwapTokenFromInputProps.js.map +1 -1
  349. package/dist/core/twap/useTwapTokenSwitcherProps.js.map +1 -1
  350. package/dist/core/twap/useTwapTokenToInputProps.js.map +1 -1
  351. package/dist/events/effects/formInput.js.map +1 -1
  352. package/dist/events/effects/price.js.map +1 -1
  353. package/dist/events/effects/swapMode.js.map +1 -1
  354. package/dist/events/getters/limit.js.map +1 -1
  355. package/dist/events/getters/otc.js.map +1 -1
  356. package/dist/events/getters/settings.js.map +1 -1
  357. package/dist/events/getters/swap.js.map +1 -1
  358. package/dist/events/getters/twap.js.map +1 -1
  359. package/dist/events/getters/widgetState.js.map +1 -1
  360. package/dist/events/hooks/useActivateEffects.js.map +1 -1
  361. package/dist/events/hooks/useOnPriceUpdates.js.map +1 -1
  362. package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
  363. package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__6feb48fe37bd41e9af5c8e81d5a6f4e1/external/vaul/dist/index.js.map +1 -1
  364. package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
  365. package/dist/hooks/batch/useBatchWithApproveTxs.js.map +1 -1
  366. package/dist/hooks/batch/useCanBatchTxs.js.map +1 -1
  367. package/dist/hooks/batch/useSendBatchTx.js.map +1 -1
  368. package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
  369. package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
  370. package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
  371. package/dist/hooks/gas/useGasPrices.js.map +1 -1
  372. package/dist/hooks/gas/utils.js.map +1 -1
  373. package/dist/hooks/getCode/query.js.map +1 -1
  374. package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
  375. package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
  376. package/dist/hooks/otc/mutations/useCancelLimitOrder.js.map +1 -1
  377. package/dist/hooks/otc/mutations/useCreateLimitOrder.js.map +1 -1
  378. package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
  379. package/dist/hooks/otc/mutations/utils.js.map +1 -1
  380. package/dist/hooks/otc/queries/useLimitOrderRequiredBalance.js.map +1 -1
  381. package/dist/hooks/otc/queries/useLimitOrders.js.map +1 -1
  382. package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
  383. package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
  384. package/dist/hooks/otc/tradeFlow/useOtcOrderFlow.js.map +1 -1
  385. package/dist/hooks/otc/tradeFlow/useOtcOrderStep.js.map +1 -1
  386. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
  387. package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
  388. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
  389. package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
  390. package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
  391. package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -1
  392. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
  393. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
  394. package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
  395. package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
  396. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
  397. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -1
  398. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
  399. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2Allowance.js.map +1 -1
  400. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
  401. package/dist/hooks/permit/utils/constants.js.map +1 -1
  402. package/dist/hooks/permit/utils/construct.js.map +1 -1
  403. package/dist/hooks/permit/utils/deadlines.js.map +1 -1
  404. package/dist/hooks/permit/utils/detect.js.map +1 -1
  405. package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
  406. package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
  407. package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
  408. package/dist/hooks/permit/utils/utils.js.map +1 -1
  409. package/dist/hooks/sdk/useGetContracts.js.map +1 -1
  410. package/dist/hooks/sdk/useSpender.js.map +1 -1
  411. package/dist/hooks/swap/prices/delta/bridge/useSelectedBridgePrice.js.map +1 -1
  412. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  413. package/dist/hooks/swap/prices/delta/mutations/twap/useCreatePreSignableTwapOrder.js.map +1 -1
  414. package/dist/hooks/swap/prices/delta/mutations/twap/useCreateTwapOrder.js.map +1 -1
  415. package/dist/hooks/swap/prices/delta/mutations/twap/useDepositAndSubmitTwapOrder.js.map +1 -1
  416. package/dist/hooks/swap/prices/delta/mutations/twap/usePostTwapOrder.js.map +1 -1
  417. package/dist/hooks/swap/prices/delta/mutations/twap/usePreSignAndSubmitTwapOrder.js.map +1 -1
  418. package/dist/hooks/swap/prices/delta/mutations/twap/useTwapOrderToPost.js.map +1 -1
  419. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrders.js.map +1 -1
  420. package/dist/hooks/swap/prices/delta/mutations/useCancelDeltaOrdersEvents.js.map +1 -1
  421. package/dist/hooks/swap/prices/delta/mutations/useCancelOrWithdrawAndCancelDeltaOrder.js.map +1 -1
  422. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  423. package/dist/hooks/swap/prices/delta/mutations/useCreatePreSignableDeltaOrder.js.map +1 -1
  424. package/dist/hooks/swap/prices/delta/mutations/useDeltaOrderToPost.js.map +1 -1
  425. package/dist/hooks/swap/prices/delta/mutations/useIsDeltaOrderCancellable.js.map +1 -1
  426. package/dist/hooks/swap/prices/delta/mutations/usePostDeltaOrder.js.map +1 -1
  427. package/dist/hooks/swap/prices/delta/mutations/useSendDepositPreSignDeltaOrderTx.js.map +1 -1
  428. package/dist/hooks/swap/prices/delta/mutations/useWithdrawAndCancelDeltaOrder.js.map +1 -1
  429. package/dist/hooks/swap/prices/delta/mutations/utils.js.map +1 -1
  430. package/dist/hooks/swap/prices/delta/orders/unposted/effect.js.map +1 -1
  431. package/dist/hooks/swap/prices/delta/orders/unposted/index.js.map +1 -1
  432. package/dist/hooks/swap/prices/delta/orders/unposted/storage.js.map +1 -1
  433. package/dist/hooks/swap/prices/delta/orders/unposted/utils.js.map +1 -1
  434. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  435. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/bridgeInfosLoadedAtom.js.map +1 -1
  436. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/common.js.map +1 -1
  437. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/getBridgeInfoQueryData.js.map +1 -1
  438. package/dist/hooks/swap/prices/delta/queries/bridgeInfo/useBridgeInfo.js.map +1 -1
  439. package/dist/hooks/swap/prices/delta/queries/bridgeProtocols/useBridgeProtocols.js.map +1 -1
  440. package/dist/hooks/swap/prices/delta/queries/errors.js.map +1 -1
  441. package/dist/hooks/swap/prices/delta/queries/useDeltaLimitOrderRequiredBalance.js.map +1 -1
  442. package/dist/hooks/swap/prices/delta/queries/useDeltaOrderPreConditions.js.map +1 -1
  443. package/dist/hooks/swap/prices/delta/queries/useDeltaOrders.js.map +1 -1
  444. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  445. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
  446. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  447. package/dist/hooks/swap/prices/factory.js.map +1 -1
  448. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
  449. package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
  450. package/dist/hooks/swap/prices/market/queries/dexesList/useDexesList.js.map +1 -1
  451. package/dist/hooks/swap/prices/market/queries/errors.js.map +1 -1
  452. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  453. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
  454. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  455. package/dist/hooks/swap/prices/useSwapPrices.d.ts +4 -7
  456. package/dist/hooks/swap/prices/useSwapPrices.d.ts.map +1 -1
  457. package/dist/hooks/swap/prices/useSwapPrices.js +28 -24
  458. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  459. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  460. package/dist/hooks/swap/prices/useTokenInputsFromTwapPrice.js.map +1 -1
  461. package/dist/hooks/swap/prices/useTwapPrices.js.map +1 -1
  462. package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
  463. package/dist/hooks/swap/tradeFlow/common/factory/depositAndSubmitOrderFactory.js.map +1 -1
  464. package/dist/hooks/swap/tradeFlow/common/factory/preSignAndSubmitOrderFactory.js.map +1 -1
  465. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
  466. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermitEvents.js.map +1 -1
  467. package/dist/hooks/swap/tradeFlow/common/useBatchWrapAndApprove.js.map +1 -1
  468. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
  469. package/dist/hooks/swap/tradeFlow/common/useDepositAndSubmitDeltaOrder.js.map +1 -1
  470. package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
  471. package/dist/hooks/swap/tradeFlow/common/useRequiredAllowanceForOrders.js.map +1 -1
  472. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
  473. package/dist/hooks/swap/tradeFlow/common/utils.js.map +1 -1
  474. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  475. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  476. package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
  477. package/dist/hooks/swap/tradeFlow/useLimitOrderStep.js.map +1 -1
  478. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  479. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  480. package/dist/hooks/swap/tradeFlow/useTwapFlow.js.map +1 -1
  481. package/dist/hooks/swap/tradeFlow/useTwapSwapStep.js.map +1 -1
  482. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
  483. package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
  484. package/dist/hooks/tokens/allowance/utils.js.map +1 -1
  485. package/dist/hooks/tokens/balances/queries.js.map +1 -1
  486. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
  487. package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
  488. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
  489. package/dist/hooks/tokens/balances/useIsLimitOrderInsufficientBalance.js.map +1 -1
  490. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
  491. package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -1
  492. package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
  493. package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
  494. package/dist/hooks/tokens/data/useFetchTokens.js.map +1 -1
  495. package/dist/hooks/tokens/data/useMultichainTokensData.js.map +1 -1
  496. package/dist/hooks/tokens/prices/queries.js.map +1 -1
  497. package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
  498. package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
  499. package/dist/hooks/tokens/useAllTokensWithFilter.js.map +1 -1
  500. package/dist/hooks/tokens/useNativeToken.js.map +1 -1
  501. package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
  502. package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
  503. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  504. package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
  505. package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
  506. package/dist/hooks/txs/mutations/useReplaceTx.js.map +1 -1
  507. package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
  508. package/dist/hooks/txs/queries/useAccountNonce.js.map +1 -1
  509. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  510. package/dist/hooks/txs/queries/useTxFees.js.map +1 -1
  511. package/dist/hooks/txs/queries/useTxHistory.js.map +1 -1
  512. package/dist/hooks/txs/queries/useTxResponse.js.map +1 -1
  513. package/dist/hooks/txs/queries/useWalletCanReplaceTx.js.map +1 -1
  514. package/dist/hooks/txs/queries/utils.js.map +1 -1
  515. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  516. package/dist/hooks/useBreakpoints.js.map +1 -1
  517. package/dist/hooks/useBridgeInfo.js.map +1 -1
  518. package/dist/hooks/useBridgeProtocols.js.map +1 -1
  519. package/dist/hooks/useCachedQueryError.js.map +1 -1
  520. package/dist/hooks/useChainMatches.js.map +1 -1
  521. package/dist/hooks/useClickOutside.js.map +1 -1
  522. package/dist/hooks/useCurrentChain.js.map +1 -1
  523. package/dist/hooks/useDebouncedInputState.js.map +1 -1
  524. package/dist/hooks/useEIP1559Enabled.js.map +1 -1
  525. package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
  526. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  527. package/dist/hooks/useMinViemClient.js.map +1 -1
  528. package/dist/hooks/useSDK.js.map +1 -1
  529. package/dist/hooks/useSelectableDestChains.js.map +1 -1
  530. package/dist/hooks/useSlippage.js.map +1 -1
  531. package/dist/hooks/useSwitchChainWithGuard.js.map +1 -1
  532. package/dist/lib/constants/urls.js.map +1 -1
  533. package/dist/lib/ipfs.js.map +1 -1
  534. package/dist/lib/queryClient.js.map +1 -1
  535. package/dist/lib/tradeMode.d.ts +1 -0
  536. package/dist/lib/tradeMode.d.ts.map +1 -1
  537. package/dist/lib/tradeMode.js +4 -1
  538. package/dist/lib/tradeMode.js.map +1 -1
  539. package/dist/lib/utils/approval.js.map +1 -1
  540. package/dist/lib/utils/atomWithCompare.js.map +1 -1
  541. package/dist/lib/utils/copyToClipboard.js.map +1 -1
  542. package/dist/lib/utils/delta.js.map +1 -1
  543. package/dist/lib/utils/dexes.js.map +1 -1
  544. package/dist/lib/utils/explorer.js.map +1 -1
  545. package/dist/lib/utils/fee.js.map +1 -1
  546. package/dist/lib/utils/formatFiatPrice.js.map +1 -1
  547. package/dist/lib/utils/formatPercent.js.map +1 -1
  548. package/dist/lib/utils/formatTokenBalance.js.map +1 -1
  549. package/dist/lib/utils/index.js.map +1 -1
  550. package/dist/lib/utils/logger.js.map +1 -1
  551. package/dist/lib/utils/metabase.js.map +1 -1
  552. package/dist/lib/utils/mobile.js.map +1 -1
  553. package/dist/lib/utils/price.js.map +1 -1
  554. package/dist/lib/utils/priceImpact.js.map +1 -1
  555. package/dist/lib/utils/providerErrors.js.map +1 -1
  556. package/dist/lib/utils/rate.js.map +1 -1
  557. package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
  558. package/dist/lib/utils/savedAmountUSD.js.map +1 -1
  559. package/dist/lib/utils/scaleFactor.js.map +1 -1
  560. package/dist/lib/utils/slippage.js.map +1 -1
  561. package/dist/lib/utils/time.js.map +1 -1
  562. package/dist/lib/utils/toDecimal.js.map +1 -1
  563. package/dist/lib/utils/toasts.js.map +1 -1
  564. package/dist/lib/utils/tradeFlow.js.map +1 -1
  565. package/dist/lib/utils/transactionHandlers.js.map +1 -1
  566. package/dist/lib/utils/tuple.js.map +1 -1
  567. package/dist/lib/utils/twap.js.map +1 -1
  568. package/dist/lib/utils/useDateNow.js.map +1 -1
  569. package/dist/lib/web3/wagmi/config.d.ts +0 -18
  570. package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
  571. package/dist/lib/web3/wagmi/config.js +19 -6
  572. package/dist/lib/web3/wagmi/config.js.map +1 -1
  573. package/dist/lib/web3/wagmi/external.js.map +1 -1
  574. package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -1
  575. package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
  576. package/dist/lib/web3/wagmi/utils.js.map +1 -1
  577. package/dist/styles.css +1 -1
  578. package/dist/tokens/blacklist.js.map +1 -1
  579. package/dist/tokens/constructor.js.map +1 -1
  580. package/dist/tokens/defaultTokens.js.map +1 -1
  581. package/dist/tokens/hooks.js.map +1 -1
  582. package/dist/tokens/lists/constants.js.map +1 -1
  583. package/dist/tokens/lists/download.js.map +1 -1
  584. package/dist/tokens/lists/state/effects.js.map +1 -1
  585. package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
  586. package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
  587. package/dist/tokens/overrides.js.map +1 -1
  588. package/dist/tokens/queries.js.map +1 -1
  589. package/dist/tokens/stabeCoins/hooks.js.map +1 -1
  590. package/dist/tokens/stabeCoins/index.js.map +1 -1
  591. package/dist/tokens/state/addImportedTokenAtom.js.map +1 -1
  592. package/dist/tokens/state/allTokensByChainAtom.js.map +1 -1
  593. package/dist/tokens/state/constructTokens.js.map +1 -1
  594. package/dist/tokens/state/fromListsAtom.js.map +1 -1
  595. package/dist/tokens/utils/areTokensSame.js.map +1 -1
  596. package/dist/tokens/utils/brand.js.map +1 -1
  597. package/dist/tokens/utils/eth.js.map +1 -1
  598. package/dist/tokens/utils/filtering.js.map +1 -1
  599. package/dist/tokens/utils/sets.js.map +1 -1
  600. package/dist/tokens/utils/sorting.js.map +1 -1
  601. package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -1
  602. package/dist/transactions/hash.js.map +1 -1
  603. package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
  604. package/dist/transactions/queries/ensureEstimateFeesPerGas.js.map +1 -1
  605. package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
  606. package/dist/transactions/queries/ensureTxResponse.js.map +1 -1
  607. package/dist/transactions/state/effects/finalize.js.map +1 -1
  608. package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
  609. package/dist/transactions/state/hooks/useMarkTxAsDropped.js.map +1 -1
  610. package/dist/transactions/state/hooks/useTransactions.js.map +1 -1
  611. package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
  612. package/dist/transactions/state/transactionsAtom.js.map +1 -1
  613. package/dist/transactions/status.js.map +1 -1
  614. package/dist/transactions/utils.js.map +1 -1
  615. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"useSignTokenPermit1.js","names":["useAccount","useMarkNonceAsUsed","usePermit1Nonce","Address","Hash","Hex","useSignPermit","DaiPermitInput","Permit1Input","Token","useGetSafePermitInfo","assert","encodePermit1MethodArgs","SupportedChainId","produceSignatureDeadline","useWalletSupportsPermit","UseSignTokenPermit1Params","onSuccess","signature","onError","error","Error","token","Pick","value","spender","enabled","QueryMutState","isPending","isError","isSuccess","SignedPermit1Result","permit1EncodedArgs","signedPermitData","SignPermit1Input","UseSignTokenPermit1Result","signPermit1","params","signPermit1Async","Promise","encodePermitArgs","isPermitSupported","isPermitReadyToSign","permitFetchingState","permitSigningState","reset","useSignTokenPermit1","t0","$","_c","t1","undefined","permit1","isPermit1Supported","queriesEnabled","t2","address","t3","network","t4","tokenAddress","chainId","permitInfoQueryResult","owner","t5","t6","t7","nonceQueryResult","t8","isLoading","t9","t10","t11","t12","safePermitInfo","nonceToUse","t13","signMut","t14","nonce","permitInfo","t15","_spender","_value","deadline","type","input","input_0","holder","expiry","allowed","producePermitInput","t16","params_0","input_1","signPermitAsync","encodedArgs","t17","params_1","input_2","signPermit","paramsNotAvailable","t18","params_2","_spender_0","_value_0","input_3","t19","UseMarkPermit1NonceAsUsedParams","UseMarkPermit1NonceAsUsedResult","markNonceAsUsed","clearNonce","useMarkPermit1NonceAsUsed","nonceUsedMarker","domain","verifyingContract","usedNonce","signedPermitData_0","permitInfo_0","address_0","network_0","owner_0"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useSignTokenPermit1.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useMarkNonceAsUsed, usePermit1Nonce } from \"./usePermit1Nonce\";\nimport type { Address, Hash, Hex } from \"viem\";\nimport { useSignPermit } from \"../common/useSignPermit\";\nimport type { DaiPermitInput, Permit1Input } from \"../../utils/construct\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetSafePermitInfo } from \"./useGetSafePermitInfo\";\nimport { assert } from \"ts-essentials\";\nimport { encodePermit1MethodArgs } from \"../../utils/encodeArgs\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { produceSignatureDeadline } from \"../../utils/deadlines\";\nimport { useWalletSupportsPermit } from \"../common/useWalletSupportsPermit\";\n\ntype UseSignTokenPermit1Params = {\n onSuccess?: (signature: Hex) => void;\n onError?: (error: Error) => void;\n token?: Pick<Token, \"address\" | \"network\">;\n value?: bigint;\n spender?: Address;\n enabled?: boolean;\n};\n\ntype QueryMutState = {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type SignedPermit1Result = {\n signature: Hash;\n permit1EncodedArgs: Hash;\n signedPermitData: Permit1Input | DaiPermitInput;\n};\n\nexport type SignPermit1Input = Pick<\n UseSignTokenPermit1Params,\n \"value\" | \"spender\"\n>;\n\nexport type UseSignTokenPermit1Result = {\n signPermit1: (params?: SignPermit1Input) => void;\n signPermit1Async: (params?: SignPermit1Input) => Promise<SignedPermit1Result>;\n encodePermitArgs: (params?: SignPermit1Input) => Hash | undefined;\n isPermitSupported: boolean;\n isPermitReadyToSign: boolean;\n permitFetchingState: QueryMutState;\n permitSigningState: QueryMutState;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n reset: () => void;\n signature?: Hash;\n permit1EncodedArgs?: Hash;\n};\n\nexport function useSignTokenPermit1({\n onSuccess,\n onError,\n token,\n value,\n spender,\n enabled = true,\n}: UseSignTokenPermit1Params): UseSignTokenPermit1Result {\n const { permit1: isPermit1Supported } = useWalletSupportsPermit();\n\n const queriesEnabled = enabled && isPermit1Supported;\n\n const permitInfoQueryResult = useGetSafePermitInfo({\n tokenAddress: token?.address as Address,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const { address: owner } = useAccount();\n\n const nonceQueryResult = usePermit1Nonce({\n token: token?.address as Address,\n owner,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const permitFetchingState = {\n isPending: permitInfoQueryResult.isLoading || nonceQueryResult.isLoading,\n isError: permitInfoQueryResult.isError || nonceQueryResult.isError,\n isSuccess: permitInfoQueryResult.isSuccess || nonceQueryResult.isSuccess,\n error: permitInfoQueryResult.error || nonceQueryResult.error,\n };\n\n const isPermitSupported =\n !!permitInfoQueryResult.safePermitInfo && isPermit1Supported;\n const isPermitReadyToSign =\n isPermitSupported &&\n !!owner &&\n typeof nonceQueryResult.nonceToUse === \"bigint\";\n\n const signMut = useSignPermit({\n onSuccess,\n onError,\n });\n\n const permitSigningState = {\n isPending: signMut.isPending,\n isError: signMut.isError,\n isSuccess: signMut.isSuccess,\n error: signMut.error,\n };\n\n const isPending =\n permitFetchingState.isPending || permitSigningState.isPending;\n const isError = permitFetchingState.isError || permitSigningState.isError;\n const isSuccess =\n permitFetchingState.isSuccess || permitSigningState.isSuccess;\n const error = permitFetchingState.error || permitSigningState.error;\n\n const nonce = nonceQueryResult.nonceToUse;\n const permitInfo = permitInfoQueryResult.safePermitInfo;\n\n const producePermitInput = (params?: SignPermit1Input) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n assert(permitInfo, \"Permit info not found\");\n assert(owner, \"Account not connected\");\n assert(typeof nonce === \"bigint\", \"Nonce not available\");\n assert(_spender, \"Spender not available\");\n assert(_value, \"Value not available or 0\");\n\n const deadline = produceSignatureDeadline();\n\n if (permitInfo.type === \"eip2612\") {\n const input: Permit1Input = {\n type: \"permit1\",\n permitInfo,\n owner,\n spender: _spender,\n value: _value,\n nonce,\n deadline,\n };\n return input;\n }\n const input: DaiPermitInput = {\n type: \"dai\",\n permitInfo,\n holder: owner,\n spender: _spender,\n nonce,\n expiry: deadline,\n allowed: true,\n };\n return input;\n };\n\n const signPermit1Async: UseSignTokenPermit1Result[\"signPermit1Async\"] =\n async (params) => {\n const input = producePermitInput(params);\n const signature = await signMut.signPermitAsync(input);\n\n const encodedArgs = encodePermit1MethodArgs({\n ...input,\n signature,\n });\n\n return {\n signature,\n permit1EncodedArgs: encodedArgs,\n signedPermitData: input,\n };\n };\n\n const signPermit1: UseSignTokenPermit1Result[\"signPermit1\"] = (params) => {\n const input = producePermitInput(params);\n signMut.signPermit(input);\n };\n\n const paramsNotAvailable = !permitInfo || typeof nonce !== \"bigint\" || !owner;\n\n const encodePermitArgs: UseSignTokenPermit1Result[\"encodePermitArgs\"] = (\n params\n ) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n if (!signMut.signature || paramsNotAvailable || !_spender || !_value) {\n return;\n }\n const input = producePermitInput({\n spender: _spender,\n value: _value,\n });\n return encodePermit1MethodArgs({\n ...input,\n signature: signMut.signature,\n });\n };\n\n return {\n signPermit1,\n signPermit1Async,\n encodePermitArgs,\n isPermitSupported,\n isPermitReadyToSign,\n permitFetchingState,\n permitSigningState,\n isPending,\n isSuccess,\n isError,\n error,\n reset: signMut.reset,\n signature: signMut.signature,\n };\n}\n\ntype UseMarkPermit1NonceAsUsedParams = {\n chainId: SupportedChainId;\n};\n\ntype UseMarkPermit1NonceAsUsedResult = {\n markNonceAsUsed: (signedPermitData: Permit1Input | DaiPermitInput) => void;\n clearNonce: (signedPermitData: Permit1Input | DaiPermitInput) => void;\n};\n\nexport function useMarkPermit1NonceAsUsed({\n chainId,\n}: UseMarkPermit1NonceAsUsedParams): UseMarkPermit1NonceAsUsedResult {\n const nonceUsedMarker = useMarkNonceAsUsed();\n\n const markNonceAsUsed: UseMarkPermit1NonceAsUsedResult[\"markNonceAsUsed\"] = (\n signedPermitData\n ) => {\n const permitInfo = signedPermitData.permitInfo;\n\n const address = permitInfo.domain.verifyingContract;\n const network = (permitInfo.domain.chainId as SupportedChainId) ?? chainId;\n\n const owner =\n signedPermitData.type === \"dai\"\n ? signedPermitData.holder\n : signedPermitData.owner;\n\n const nonce = signedPermitData.nonce;\n\n nonceUsedMarker.markNonceAsUsed({\n token: {\n address,\n network,\n },\n owner,\n usedNonce: nonce,\n });\n };\n\n const clearNonce: UseMarkPermit1NonceAsUsedResult[\"clearNonce\"] = (\n signedPermitData\n ) => {\n const permitInfo = signedPermitData.permitInfo;\n\n const address = permitInfo.domain.verifyingContract;\n const network = (permitInfo.domain.chainId as SupportedChainId) ?? chainId;\n\n const owner =\n signedPermitData.type === \"dai\"\n ? signedPermitData.holder\n : signedPermitData.owner;\n\n nonceUsedMarker.clearNonce({\n token: {\n address,\n network,\n },\n owner,\n });\n };\n return {\n markNonceAsUsed,\n clearNonce,\n };\n}\n"],"mappings":";;;;;;;;;;AAyDA,SAAO8C,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAhC,cAAAE,YAAAG,UAAAE,UAAAC,YAAAC,SAAAwB,OAAAH,GAMlCrB,KAAAwB,OAAAC,KAAAA,IAAA,KAAAD,IAEA,EAAAE,SAAAC,OAAwCtC,GAAyB,EAEjEuC,IAAuB5B,MAAA2B,IAGPE,IAAAjC,GAAKkC,SACVC,IAAAnC,GAAKoC,SAASC;AAAA,CAAAX,EAAA,OAAAM,KAAAN,EAAA,OAAAO,KAAAP,EAAA,OAAAS,KAF0BE,IAAA;EAAAC,cACnCL;EAAyBM,SAC9BJ;EAAc/B,SACd4B;EACV,EAAAN,EAAA,KAAAM,GAAAN,EAAA,KAAAO,GAAAP,EAAA,KAAAS,GAAAT,EAAA,KAAAW,KAAAA,IAAAX,EAAA;CAJD,IAAAc,IAA8BpD,EAAqBiD,EAIjD,EAEF,EAAAH,SAAAO,MAA2B/D,GAAY,EAG9BgE,IAAA1C,GAAKkC,SAEHS,IAAA3C,GAAKoC,SAASQ;AAAA,CAAAlB,EAAA,OAAAe,KAAAf,EAAA,OAAAM,KAAAN,EAAA,OAAAgB,KAAAhB,EAAA,OAAAiB,KAHgBC,IAAA;EAAA5C,OAChC0C;EAAyBD;EAAAF,SAEvBI;EAAcvC,SACd4B;EACV,EAAAN,EAAA,KAAAe,GAAAf,EAAA,KAAAM,GAAAN,EAAA,KAAAgB,GAAAhB,EAAA,KAAAiB,GAAAjB,EAAA,KAAAkB,KAAAA,IAAAlB,EAAA;CALD,IAAAmB,IAAyBjE,EAAgBgE,EAKvC,EAGWE,IAAAN,EAAqBO,aAAcF,EAAgBE,WACrDC,IAAAR,EAAqBjC,WAAYsC,EAAgBtC,SAC/C0C,IAAAT,EAAqBhC,aAAcqC,EAAgBrC,WACvD0C,IAAAV,EAAqB1C,SAAU+C,EAAgB/C,OAAMqD;AAAA,CAAAzB,EAAA,OAAAuB,KAAAvB,EAAA,QAAAwB,KAAAxB,EAAA,QAAAoB,KAAApB,EAAA,QAAAsB,KAJlCG,IAAA;EAAA7C,WACfwC;EAA6DvC,SAC/DyC;EAAyDxC,WACvDyC;EAA6DnD,OACjEoD;EACR,EAAAxB,EAAA,KAAAuB,GAAAvB,EAAA,MAAAwB,GAAAxB,EAAA,MAAAoB,GAAApB,EAAA,MAAAsB,GAAAtB,EAAA,MAAAyB,KAAAA,IAAAzB,EAAA;CALD,IAAAL,IAA4B8B,GAO5BhC,IACE,CAAC,CAACqB,EAAqBY,kBAAvBrB,IACFX,IACED,KAAA,CACC,CAACsB,KACF,OAAOI,EAAgBQ,cAAgB,UAASC;AAAA,CAAA5B,EAAA,QAAA7B,KAAA6B,EAAA,QAAA/B,KAEpB2D,IAAA;EAAA3D;EAAAE;EAG7B,EAAA6B,EAAA,MAAA7B,GAAA6B,EAAA,MAAA/B,GAAA+B,EAAA,MAAA4B,KAAAA,IAAA5B,EAAA;CAHD,IAAA6B,IAAgBvE,EAAcsE,EAG5B,EAACE;AAAA,CAAA9B,EAAA,QAAA6B,EAAAzD,SAAA4B,EAAA,QAAA6B,EAAAhD,WAAAmB,EAAA,QAAA6B,EAAAjD,aAAAoB,EAAA,QAAA6B,EAAA/C,aAEwBgD,IAAA;EAAAlD,WACdiD,EAAOjD;EAAUC,SACnBgD,EAAOhD;EAAQC,WACb+C,EAAO/C;EAAUV,OACrByD,EAAOzD;EACf,EAAA4B,EAAA,MAAA6B,EAAAzD,OAAA4B,EAAA,MAAA6B,EAAAhD,SAAAmB,EAAA,MAAA6B,EAAAjD,WAAAoB,EAAA,MAAA6B,EAAA/C,WAAAkB,EAAA,MAAA8B,KAAAA,IAAA9B,EAAA;CALD,IAAAJ,IAA2BkC,GAO3BlD,IACEe,EAAmBf,aAAcgB,EAAkBhB,WACrDC,IAAgBc,EAAmBd,WAAYe,EAAkBf,SACjEC,IACEa,EAAmBb,aAAcc,EAAkBd,WACrDV,IAAcuB,EAAmBvB,SAAUwB,EAAkBxB,OAE7D2D,IAAcZ,EAAgBQ,YAC9BK,IAAmBlB,EAAqBY,gBAAgBO;AAAA,CAAAjC,EAAA,QAAA+B,KAAA/B,EAAA,QAAAe,KAAAf,EAAA,QAAAgC,KAAAhC,EAAA,QAAAvB,KAAAuB,EAAA,QAAAxB,KAE7ByD,KAAA5C,MAAA;EACzB,IAAA6C,IAAiB7C,GAAMZ,WAANA,GACjB0D,IAAe9C,GAAMb,SAANA;AAMfb,EAJAA,EAAOqE,GAAY,wBAAwB,EAC3CrE,EAAOoD,GAAO,wBAAwB,EACtCpD,EAAO,OAAOoE,KAAU,UAAU,sBAAsB,EACxDpE,EAAOuE,GAAU,wBAAwB,EACzCvE,EAAOwE,GAAQ,2BAA2B;EAE1C,IAAAC,IAAiBtE,GAA0B;AAsBzC,SApBEkE,EAAUK,SAAU,YACM;GAAAA,MACpB;GAASL;GAAAjB;GAAAtC,SAGNyD;GAAQ1D,OACV2D;GAAMJ;GAAAK;GAGd,GAG2B;GAAAC,MACtB;GAAKL;GAAAQ,QAEHzB;GAAKtC,SACJyD;GAAQH;GAAAU,QAETL;GAAQM,SACP;GACV;IAEF1C,EAAA,MAAA+B,GAAA/B,EAAA,MAAAe,GAAAf,EAAA,MAAAgC,GAAAhC,EAAA,MAAAvB,GAAAuB,EAAA,MAAAxB,GAAAwB,EAAA,MAAAiC,KAAAA,IAAAjC,EAAA;CAlCD,IAAA2C,IAA2BV,GAkCzBW;AAAA,CAAA5C,EAAA,QAAA2C,KAAA3C,EAAA,QAAA6B,KAGAe,IAAA,OAAAC,MAAA;EACE,IAAAC,IAAcH,EAAmBtD,EAAO,EACxCnB,IAAkB,MAAM2D,EAAOkB,gBAAiBT,EAAM;AAKnD,SAEI;GAAApE;GAAAc,oBALapB,EAAwB;IAAA,GACvC0E;IAAKpE;IAET,CAAC;GAI+Be,kBACbqD;GACnB;IACFtC,EAAA,MAAA2C,GAAA3C,EAAA,MAAA6B,GAAA7B,EAAA,MAAA4C,KAAAA,IAAA5C,EAAA;CAfH,IAAAV,IACEsD,GAcEK;AAAA,CAAAjD,EAAA,QAAA2C,KAAA3C,EAAA,QAAA6B,KAE0DoB,KAAAC,MAAA;EAC5D,IAAAC,IAAcR,EAAmBtD,EAAO;AACxCwC,IAAOuB,WAAYd,EAAM;IAC1BtC,EAAA,MAAA2C,GAAA3C,EAAA,MAAA6B,GAAA7B,EAAA,MAAAiD,KAAAA,IAAAjD,EAAA;CAHD,IAAAZ,IAA8D6D,GAK9DI,IAA2B,CAACrB,KAAc,OAAOD,KAAU,YAAhC,CAA6ChB,GAAMuC;AAAA,CAAAtD,EAAA,QAAAqD,KAAArD,EAAA,QAAA2C,KAAA3C,EAAA,QAAA6B,EAAA3D,aAAA8B,EAAA,QAAAvB,KAAAuB,EAAA,QAAAxB,KAEN8E,KAAAC,MAAA;EAGtE,IAAAC,IAAiBnE,GAAMZ,WAANA,GACjBgF,IAAepE,GAAMb,SAANA;AAEX,SAACqD,EAAO3D,aAARmF,KAAA,CAA6CnB,KAA7C,CAA0DC,GAM3D,QACIvE,EAAwB;GAAA,GAJjB+E,EAAmB;IAAAlE,SACtByD;IAAQ1D,OACV2D;IACR,CAAC;GAEQjE,WACG2D,EAAO3D;GACnB,CAAC;IACH8B,EAAA,MAAAqD,GAAArD,EAAA,MAAA2C,GAAA3C,EAAA,MAAA6B,EAAA3D,WAAA8B,EAAA,MAAAvB,GAAAuB,EAAA,MAAAxB,GAAAwB,EAAA,MAAAsD,KAAAA,IAAAtD,EAAA;CAjBD,IAAAR,IAAwE8D,GAiBtEK;AAgBD,QAhBC3D,EAAA,QAAAR,KAAAQ,EAAA,QAAA5B,KAAA4B,EAAA,QAAAnB,KAAAmB,EAAA,QAAApB,KAAAoB,EAAA,QAAAN,KAAAM,EAAA,QAAAP,KAAAO,EAAA,QAAAlB,KAAAkB,EAAA,QAAAL,KAAAK,EAAA,QAAAJ,KAAAI,EAAA,QAAA6B,EAAAhC,SAAAG,EAAA,QAAA6B,EAAA3D,aAAA8B,EAAA,QAAAZ,KAAAY,EAAA,QAAAV,KAEKqE,IAAA;EAAAvE;EAAAE;EAAAE;EAAAC;EAAAC;EAAAC;EAAAC;EAAAhB;EAAAE;EAAAD;EAAAT;EAAAyB,OAYEgC,EAAOhC;EAAM3B,WACT2D,EAAO3D;EACnB,EAAA8B,EAAA,MAAAR,GAAAQ,EAAA,MAAA5B,GAAA4B,EAAA,MAAAnB,GAAAmB,EAAA,MAAApB,GAAAoB,EAAA,MAAAN,GAAAM,EAAA,MAAAP,GAAAO,EAAA,MAAAlB,GAAAkB,EAAA,MAAAL,GAAAK,EAAA,MAAAJ,GAAAI,EAAA,MAAA6B,EAAAhC,OAAAG,EAAA,MAAA6B,EAAA3D,WAAA8B,EAAA,MAAAZ,GAAAY,EAAA,MAAAV,GAAAU,EAAA,MAAA2D,KAAAA,IAAA3D,EAAA,KAdM2D;;AA0BT,SAAOK,EAAAjE,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAmC,EAAAY,eAAAd,GAGxCkE,IAAwBhH,GAAoB,EAACiD;AAAA,CAAAF,EAAA,OAAAa,KAAAb,EAAA,OAAAiE,KAE+B/D,KAAAjB,MAAA;EAG1E,IAAA+C,IAAmB/C,EAAgB+C,YAEnCxB,IAAgBwB,EAAUkC,OAAOC,mBACjCzD,IAAiBsB,EAAUkC,OAAOrD,WAAlBA,GAEhBE,IACE9B,EAAgBoD,SAAU,QACtBpD,EAAgBuD,SAChBvD,EAAgB8B,OAEtBgB,IAAc9C,EAAgB8C;AAE9BkC,IAAeH,gBAAiB;GAAAxF,OACvB;IAAAkC;IAAAE;IAGN;GAAAK;GAAAqD,WAEUrC;GACZ,CAAC;IACH/B,EAAA,KAAAa,GAAAb,EAAA,KAAAiE,GAAAjE,EAAA,KAAAE,KAAAA,IAAAF,EAAA;CAvBD,IAAA8D,IAA4E5D,GAuB1EK;AAAA,CAAAP,EAAA,OAAAa,KAAAb,EAAA,OAAAiE,KAEgE1D,KAAA8D,MAAA;EAGhE,IAAAC,IAAmBrF,EAAgB+C,YAEnCuC,IAAgBvC,EAAUkC,OAAOC,mBACjCK,IAAiBxC,EAAUkC,OAAOrD,WAAlBA,GAEhB4D,IACExF,EAAgBoD,SAAU,QACtBpD,EAAgBuD,SAChBvD,EAAgB8B;AAEtBkD,IAAeF,WAAY;GAAAzF,OAClB;IAAAkC,SACLA;IAAOE,SACPA;IACD;GAAAK,OACDA;GACD,CAAC;IACHf,EAAA,KAAAa,GAAAb,EAAA,KAAAiE,GAAAjE,EAAA,KAAAO,KAAAA,IAAAP,EAAA;CApBD,IAAA+D,IAAkExD,GAoBhEE;AAID,QAJCT,EAAA,OAAA+D,KAAA/D,EAAA,OAAA8D,KACKrD,IAAA;EAAAqD;EAAAC;EAGN,EAAA/D,EAAA,KAAA+D,GAAA/D,EAAA,KAAA8D,GAAA9D,EAAA,KAAAS,KAAAA,IAAAT,EAAA,IAHMS"}
1
+ {"version":3,"file":"useSignTokenPermit1.js","names":["useAccount","useMarkNonceAsUsed","usePermit1Nonce","Address","Hash","Hex","useSignPermit","DaiPermitInput","Permit1Input","Token","useGetSafePermitInfo","assert","encodePermit1MethodArgs","SupportedChainId","produceSignatureDeadline","useWalletSupportsPermit","UseSignTokenPermit1Params","onSuccess","signature","onError","error","Error","token","Pick","value","spender","enabled","QueryMutState","isPending","isError","isSuccess","SignedPermit1Result","permit1EncodedArgs","signedPermitData","SignPermit1Input","UseSignTokenPermit1Result","signPermit1","params","signPermit1Async","Promise","encodePermitArgs","isPermitSupported","isPermitReadyToSign","permitFetchingState","permitSigningState","reset","useSignTokenPermit1","t0","$","_c","t1","undefined","permit1","isPermit1Supported","queriesEnabled","t2","address","t3","network","t4","tokenAddress","chainId","permitInfoQueryResult","owner","t5","t6","t7","nonceQueryResult","t8","isLoading","t9","t10","t11","t12","safePermitInfo","nonceToUse","t13","signMut","t14","nonce","permitInfo","t15","_spender","_value","deadline","type","input","input_0","holder","expiry","allowed","producePermitInput","t16","params_0","input_1","signPermitAsync","encodedArgs","t17","params_1","input_2","signPermit","paramsNotAvailable","t18","params_2","_spender_0","_value_0","input_3","t19","UseMarkPermit1NonceAsUsedParams","UseMarkPermit1NonceAsUsedResult","markNonceAsUsed","clearNonce","useMarkPermit1NonceAsUsed","nonceUsedMarker","domain","verifyingContract","usedNonce","signedPermitData_0","permitInfo_0","address_0","network_0","owner_0"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useSignTokenPermit1.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useMarkNonceAsUsed, usePermit1Nonce } from \"./usePermit1Nonce\";\nimport type { Address, Hash, Hex } from \"viem\";\nimport { useSignPermit } from \"../common/useSignPermit\";\nimport type { DaiPermitInput, Permit1Input } from \"../../utils/construct\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useGetSafePermitInfo } from \"./useGetSafePermitInfo\";\nimport { assert } from \"ts-essentials\";\nimport { encodePermit1MethodArgs } from \"../../utils/encodeArgs\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { produceSignatureDeadline } from \"../../utils/deadlines\";\nimport { useWalletSupportsPermit } from \"../common/useWalletSupportsPermit\";\n\ntype UseSignTokenPermit1Params = {\n onSuccess?: (signature: Hex) => void;\n onError?: (error: Error) => void;\n token?: Pick<Token, \"address\" | \"network\">;\n value?: bigint;\n spender?: Address;\n enabled?: boolean;\n};\n\ntype QueryMutState = {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type SignedPermit1Result = {\n signature: Hash;\n permit1EncodedArgs: Hash;\n signedPermitData: Permit1Input | DaiPermitInput;\n};\n\nexport type SignPermit1Input = Pick<\n UseSignTokenPermit1Params,\n \"value\" | \"spender\"\n>;\n\nexport type UseSignTokenPermit1Result = {\n signPermit1: (params?: SignPermit1Input) => void;\n signPermit1Async: (params?: SignPermit1Input) => Promise<SignedPermit1Result>;\n encodePermitArgs: (params?: SignPermit1Input) => Hash | undefined;\n isPermitSupported: boolean;\n isPermitReadyToSign: boolean;\n permitFetchingState: QueryMutState;\n permitSigningState: QueryMutState;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n reset: () => void;\n signature?: Hash;\n permit1EncodedArgs?: Hash;\n};\n\nexport function useSignTokenPermit1({\n onSuccess,\n onError,\n token,\n value,\n spender,\n enabled = true,\n}: UseSignTokenPermit1Params): UseSignTokenPermit1Result {\n const { permit1: isPermit1Supported } = useWalletSupportsPermit();\n\n const queriesEnabled = enabled && isPermit1Supported;\n\n const permitInfoQueryResult = useGetSafePermitInfo({\n tokenAddress: token?.address as Address,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const { address: owner } = useAccount();\n\n const nonceQueryResult = usePermit1Nonce({\n token: token?.address as Address,\n owner,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const permitFetchingState = {\n isPending: permitInfoQueryResult.isLoading || nonceQueryResult.isLoading,\n isError: permitInfoQueryResult.isError || nonceQueryResult.isError,\n isSuccess: permitInfoQueryResult.isSuccess || nonceQueryResult.isSuccess,\n error: permitInfoQueryResult.error || nonceQueryResult.error,\n };\n\n const isPermitSupported =\n !!permitInfoQueryResult.safePermitInfo && isPermit1Supported;\n const isPermitReadyToSign =\n isPermitSupported &&\n !!owner &&\n typeof nonceQueryResult.nonceToUse === \"bigint\";\n\n const signMut = useSignPermit({\n onSuccess,\n onError,\n });\n\n const permitSigningState = {\n isPending: signMut.isPending,\n isError: signMut.isError,\n isSuccess: signMut.isSuccess,\n error: signMut.error,\n };\n\n const isPending =\n permitFetchingState.isPending || permitSigningState.isPending;\n const isError = permitFetchingState.isError || permitSigningState.isError;\n const isSuccess =\n permitFetchingState.isSuccess || permitSigningState.isSuccess;\n const error = permitFetchingState.error || permitSigningState.error;\n\n const nonce = nonceQueryResult.nonceToUse;\n const permitInfo = permitInfoQueryResult.safePermitInfo;\n\n const producePermitInput = (params?: SignPermit1Input) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n assert(permitInfo, \"Permit info not found\");\n assert(owner, \"Account not connected\");\n assert(typeof nonce === \"bigint\", \"Nonce not available\");\n assert(_spender, \"Spender not available\");\n assert(_value, \"Value not available or 0\");\n\n const deadline = produceSignatureDeadline();\n\n if (permitInfo.type === \"eip2612\") {\n const input: Permit1Input = {\n type: \"permit1\",\n permitInfo,\n owner,\n spender: _spender,\n value: _value,\n nonce,\n deadline,\n };\n return input;\n }\n const input: DaiPermitInput = {\n type: \"dai\",\n permitInfo,\n holder: owner,\n spender: _spender,\n nonce,\n expiry: deadline,\n allowed: true,\n };\n return input;\n };\n\n const signPermit1Async: UseSignTokenPermit1Result[\"signPermit1Async\"] =\n async (params) => {\n const input = producePermitInput(params);\n const signature = await signMut.signPermitAsync(input);\n\n const encodedArgs = encodePermit1MethodArgs({\n ...input,\n signature,\n });\n\n return {\n signature,\n permit1EncodedArgs: encodedArgs,\n signedPermitData: input,\n };\n };\n\n const signPermit1: UseSignTokenPermit1Result[\"signPermit1\"] = (params) => {\n const input = producePermitInput(params);\n signMut.signPermit(input);\n };\n\n const paramsNotAvailable = !permitInfo || typeof nonce !== \"bigint\" || !owner;\n\n const encodePermitArgs: UseSignTokenPermit1Result[\"encodePermitArgs\"] = (\n params\n ) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n if (!signMut.signature || paramsNotAvailable || !_spender || !_value) {\n return;\n }\n const input = producePermitInput({\n spender: _spender,\n value: _value,\n });\n return encodePermit1MethodArgs({\n ...input,\n signature: signMut.signature,\n });\n };\n\n return {\n signPermit1,\n signPermit1Async,\n encodePermitArgs,\n isPermitSupported,\n isPermitReadyToSign,\n permitFetchingState,\n permitSigningState,\n isPending,\n isSuccess,\n isError,\n error,\n reset: signMut.reset,\n signature: signMut.signature,\n };\n}\n\ntype UseMarkPermit1NonceAsUsedParams = {\n chainId: SupportedChainId;\n};\n\ntype UseMarkPermit1NonceAsUsedResult = {\n markNonceAsUsed: (signedPermitData: Permit1Input | DaiPermitInput) => void;\n clearNonce: (signedPermitData: Permit1Input | DaiPermitInput) => void;\n};\n\nexport function useMarkPermit1NonceAsUsed({\n chainId,\n}: UseMarkPermit1NonceAsUsedParams): UseMarkPermit1NonceAsUsedResult {\n const nonceUsedMarker = useMarkNonceAsUsed();\n\n const markNonceAsUsed: UseMarkPermit1NonceAsUsedResult[\"markNonceAsUsed\"] = (\n signedPermitData\n ) => {\n const permitInfo = signedPermitData.permitInfo;\n\n const address = permitInfo.domain.verifyingContract;\n const network = (permitInfo.domain.chainId as SupportedChainId) ?? chainId;\n\n const owner =\n signedPermitData.type === \"dai\"\n ? signedPermitData.holder\n : signedPermitData.owner;\n\n const nonce = signedPermitData.nonce;\n\n nonceUsedMarker.markNonceAsUsed({\n token: {\n address,\n network,\n },\n owner,\n usedNonce: nonce,\n });\n };\n\n const clearNonce: UseMarkPermit1NonceAsUsedResult[\"clearNonce\"] = (\n signedPermitData\n ) => {\n const permitInfo = signedPermitData.permitInfo;\n\n const address = permitInfo.domain.verifyingContract;\n const network = (permitInfo.domain.chainId as SupportedChainId) ?? chainId;\n\n const owner =\n signedPermitData.type === \"dai\"\n ? signedPermitData.holder\n : signedPermitData.owner;\n\n nonceUsedMarker.clearNonce({\n token: {\n address,\n network,\n },\n owner,\n });\n };\n return {\n markNonceAsUsed,\n clearNonce,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenFromPermit1Nonce.js","names":["useSwapTokenFrom","Address","Token","usePermit1Nonce","UsePermit1NonceResult","useAccount","UseTokenFromPermitInfoParameters","enabled","useTokenFromPermit1Nonce","t0","$","_c","t1","undefined","t2","tokenFrom","address","owner","t3","t4","network","token","chainId","queryResult","t5"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\n\nimport { type Address } from \"viem\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { usePermit1Nonce, type UsePermit1NonceResult } from \"./usePermit1Nonce\";\nimport { useAccount } from \"wagmi\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermit1Nonce({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UsePermit1NonceResult & {\n token: Token;\n} {\n const tokenFrom = useSwapTokenFrom();\n const { address: owner } = useAccount();\n const queryResult = usePermit1Nonce({\n token: tokenFrom.address as Address,\n owner,\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"mappings":";;;;;;AAWA,SAAOQ,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;AAAA,CAAAF,EAAA,OAAAD,IAEiCG,IAAAF,EAAA,MAFCE,IAAAH,MAAAI,KAAAA,IAAA,EAED,GAFCJ,GAEDC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAFC,IAAA,EAAAL,SAAAO,MAAAF,GACvCL,IAAAO,MAAAD,KAAAA,IAAA,KAAAC,GAIAC,IAAkBf,GAAkB,EACpC,EAAAgB,SAAAC,MAA2BZ,GAAY,EAE9Ba,IAAAH,EAASC,SAAmBG;AAAA,CAAAT,EAAA,OAAAH,KAAAG,EAAA,OAAAO,KAAAP,EAAA,OAAAQ,KAAAR,EAAA,OAAAK,EAAAK,WADDD,IAAA;EAAAE,OAC3BH;EAA4BD;EAAAK,SAE1BP,EAASK;EAAQb;EAE3B,EAAAG,EAAA,KAAAH,GAAAG,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,GAAAR,EAAA,KAAAK,EAAAK,SAAAV,EAAA,KAAAS,KAAAA,IAAAT,EAAA;CALD,IAAAa,IAAoBpB,EAAgBgB,EAKlC,EAACK;AAKF,QALEd,EAAA,OAAAa,KAAAb,EAAA,OAAAK,KAEIS,IAAA;EAAA,GACFD;EAAWF,OACPN;EACR,EAAAL,EAAA,KAAAa,GAAAb,EAAA,KAAAK,GAAAL,EAAA,KAAAc,KAAAA,IAAAd,EAAA,IAHMc"}
1
+ {"version":3,"file":"useTokenFromPermit1Nonce.js","names":["useSwapTokenFrom","Address","Token","usePermit1Nonce","UsePermit1NonceResult","useAccount","UseTokenFromPermitInfoParameters","enabled","useTokenFromPermit1Nonce","t0","$","_c","t1","undefined","t2","tokenFrom","address","owner","t3","t4","network","token","chainId","queryResult","t5"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\n\nimport { type Address } from \"viem\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { usePermit1Nonce, type UsePermit1NonceResult } from \"./usePermit1Nonce\";\nimport { useAccount } from \"wagmi\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermit1Nonce({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UsePermit1NonceResult & {\n token: Token;\n} {\n const tokenFrom = useSwapTokenFrom();\n const { address: owner } = useAccount();\n const queryResult = usePermit1Nonce({\n token: tokenFrom.address as Address,\n owner,\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"mappings":";;;;;;AAWA,SAAOQ,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAEiCG,IAAAF,EAAA,MAFCE,IAAAH,MAAAI,KAAAA,IAAA,EAED,GAFCJ,GAEDC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAFC,IAAA,EAAAL,SAAAO,MAAAF,GACvCL,IAAAO,MAAAD,KAAAA,IAAA,KAAAC,GAIAC,IAAkBf,GAAkB,EACpC,EAAAgB,SAAAC,MAA2BZ,GAAY,EAE9Ba,IAAAH,EAASC,SAAmBG;CAAA,AAAAT,EAAA,OAAAH,KAAAG,EAAA,OAAAO,KAAAP,EAAA,OAAAQ,KAAAR,EAAA,OAAAK,EAAAK,WADDD,IAAA;EAAAE,OAC3BH;EAA4BD;EAAAK,SAE1BP,EAASK;EAAQb;EAE3B,EAAAG,EAAA,KAAAH,GAAAG,EAAA,KAAAO,GAAAP,EAAA,KAAAQ,GAAAR,EAAA,KAAAK,EAAAK,SAAAV,EAAA,KAAAS,KAAAA,IAAAT,EAAA;CALD,IAAAa,IAAoBpB,EAAgBgB,EAKlC,EAACK;CAKF,OALEd,EAAA,OAAAa,KAAAb,EAAA,OAAAK,KAEIS,IAAA;EAAA,GACFD;EAAWF,OACPN;EACR,EAAAL,EAAA,KAAAa,GAAAb,EAAA,KAAAK,GAAAL,EAAA,KAAAc,KAAAA,IAAAd,EAAA,IAHMc"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenFromPermitInfo.js","names":["useSwapTokenFrom","Address","useGetSafePermitInfo","UseGetSafePermitInfoResult","Token","UseTokenFromPermitInfoParameters","enabled","useTokenFromPermitInfo","t0","$","_c","t1","undefined","t2","tokenFrom","t3","address","t4","network","tokenAddress","chainId","queryResult","t5","token"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermitInfo.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\n\nimport { type Address } from \"viem\";\nimport {\n useGetSafePermitInfo,\n type UseGetSafePermitInfoResult,\n} from \"./useGetSafePermitInfo\";\nimport type { Token } from \"@/tokens/state/types\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermitInfo({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UseGetSafePermitInfoResult & {\n token: Token;\n} {\n const tokenFrom = useSwapTokenFrom();\n const queryResult = useGetSafePermitInfo({\n tokenAddress: tokenFrom.address as Address,\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"mappings":";;;;;AAaA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;AAAA,CAAAF,EAAA,OAAAD,IAEiCG,IAAAF,EAAA,MAFDE,IAAAH,MAAAI,KAAAA,IAAA,EAEC,GAFDJ,GAECC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAFD,IAAA,EAAAL,SAAAO,MAAAF,GACrCL,IAAAO,MAAAD,KAAAA,IAAA,KAAAC,GAIAC,IAAkBd,GAAkB,EAEpBe,IAAAD,EAASE,SAAmBC;AAAA,CAAAR,EAAA,OAAAH,KAAAG,EAAA,OAAAM,KAAAN,EAAA,OAAAK,EAAAI,WADHD,IAAA;EAAAE,cACzBJ;EAA4BK,SACjCN,EAASI;EAAQZ;EAE3B,EAAAG,EAAA,KAAAH,GAAAG,EAAA,KAAAM,GAAAN,EAAA,KAAAK,EAAAI,SAAAT,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAJD,IAAAY,IAAoBnB,EAAqBe,EAIvC,EAACK;AAKF,QALEb,EAAA,OAAAY,KAAAZ,EAAA,OAAAK,KAEIQ,IAAA;EAAA,GACFD;EAAWE,OACPT;EACR,EAAAL,EAAA,KAAAY,GAAAZ,EAAA,KAAAK,GAAAL,EAAA,KAAAa,KAAAA,IAAAb,EAAA,IAHMa"}
1
+ {"version":3,"file":"useTokenFromPermitInfo.js","names":["useSwapTokenFrom","Address","useGetSafePermitInfo","UseGetSafePermitInfoResult","Token","UseTokenFromPermitInfoParameters","enabled","useTokenFromPermitInfo","t0","$","_c","t1","undefined","t2","tokenFrom","t3","address","t4","network","tokenAddress","chainId","queryResult","t5","token"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermitInfo.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\n\nimport { type Address } from \"viem\";\nimport {\n useGetSafePermitInfo,\n type UseGetSafePermitInfoResult,\n} from \"./useGetSafePermitInfo\";\nimport type { Token } from \"@/tokens/state/types\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermitInfo({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UseGetSafePermitInfoResult & {\n token: Token;\n} {\n const tokenFrom = useSwapTokenFrom();\n const queryResult = useGetSafePermitInfo({\n tokenAddress: tokenFrom.address as Address,\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"mappings":";;;;;AAaA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAEiCG,IAAAF,EAAA,MAFDE,IAAAH,MAAAI,KAAAA,IAAA,EAEC,GAFDJ,GAECC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAFD,IAAA,EAAAL,SAAAO,MAAAF,GACrCL,IAAAO,MAAAD,KAAAA,IAAA,KAAAC,GAIAC,IAAkBd,GAAkB,EAEpBe,IAAAD,EAASE,SAAmBC;CAAA,AAAAR,EAAA,OAAAH,KAAAG,EAAA,OAAAM,KAAAN,EAAA,OAAAK,EAAAI,WADHD,IAAA;EAAAE,cACzBJ;EAA4BK,SACjCN,EAASI;EAAQZ;EAE3B,EAAAG,EAAA,KAAAH,GAAAG,EAAA,KAAAM,GAAAN,EAAA,KAAAK,EAAAI,SAAAT,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAJD,IAAAY,IAAoBnB,EAAqBe,EAIvC,EAACK;CAKF,OALEb,EAAA,OAAAY,KAAAZ,EAAA,OAAAK,KAEIQ,IAAA;EAAA,GACFD;EAAWE,OACPT;EACR,EAAAL,EAAA,KAAAY,GAAAZ,EAAA,KAAAK,GAAAL,EAAA,KAAAa,KAAAA,IAAAb,EAAA,IAHMa"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTryToSignPermit1.js","names":["useQuery","UseQueryOptions","UseQueryResult","trySignPermit1","TrySignPermitParams","TrySignPermitResult","useConfig","assert","Address","useLogger","TryToSingPermitQueryKey","UseTryToSignPermitParams","Partial","Omit","query","Error","Select","useTryToSignPermit1","t0","$","_c","permitInfo","tokenAddress","spenderAddress","amount","chainId","logger","config","queryEnabled","enabled","t1","toLowerCase","t2","t3","t4","t5","t6","result","log","t7","t8","queryKey","queryFn","refetchOnMount","refetchOnWindowFocus","staleTime","Infinity","gcTime","retry","queryResult"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useTryToSignPermit1.ts"],"sourcesContent":["import {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { trySignPermit1 } from \"../../utils/trySignPermit1\";\nimport type {\n TrySignPermitParams,\n TrySignPermitResult,\n} from \"../../utils/trySignPermit1\";\nimport { useConfig } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { Address } from \"viem\";\nimport { useLogger } from \"@/core/logger\";\n\ntype TryToSingPermitQueryKey = [\n \"trySignPermit\",\n TrySignPermitParams[\"permitInfo\"]?,\n Address?,\n Address?,\n bigint?,\n];\n\ntype UseTryToSignPermitParams<Select = TrySignPermitResult> = Partial<\n Omit<TrySignPermitParams, \"config\">\n> & {\n query?: Omit<\n UseQueryOptions<\n TrySignPermitResult,\n Error,\n Select,\n TryToSingPermitQueryKey\n >,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\nexport function useTryToSignPermit1<Select = TrySignPermitResult>({\n permitInfo,\n tokenAddress,\n spenderAddress,\n amount,\n chainId,\n query,\n}: UseTryToSignPermitParams<Select>): UseQueryResult<Select, Error> {\n const logger = useLogger(\"PERMIT1::TryToSignPermit1\");\n const config = useConfig();\n\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useQuery<\n TrySignPermitResult,\n Error,\n Select,\n TryToSingPermitQueryKey\n >({\n queryKey: [\n \"trySignPermit\",\n permitInfo,\n tokenAddress?.toLowerCase() as Address,\n spenderAddress?.toLowerCase() as Address,\n amount,\n ],\n queryFn: async () => {\n assert(permitInfo, \"permitInfo is required\");\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const result = await trySignPermit1({\n config,\n permitInfo,\n tokenAddress,\n chainId,\n spenderAddress,\n amount,\n });\n\n logger.log(\"result\", result);\n\n return result;\n },\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n gcTime: Infinity,\n retry: false,\n ...query,\n enabled: queryEnabled && !!(permitInfo && tokenAddress && !!chainId),\n });\n\n return queryResult;\n}\n"],"mappings":";;;;;;;AAqCA,SAAOiB,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA2D,EAAAC,eAAAC,iBAAAC,mBAAAC,WAAAC,YAAAX,aAAAI,GAQhEQ,IAAejB,EAAU,4BAA4B,EACrDkB,IAAerB,GAAW,EAE1BsB,IAAqBd,GAAKe,WAAL,IAAuBC;AAAA,CAAAX,EAAA,OAAAG,IAWbQ,IAAAX,EAAA,MAA3BW,IAAAR,GAAYS,aAAe,EAAAZ,EAAA,KAAAG,GAAAH,EAAA,KAAAW;CAA3B,IAAAE,IAAAF,GAAsCG;AAAA,CAAAd,EAAA,OAAAI,IACTU,IAAAd,EAAA,MAA7Bc,IAAAV,GAAcQ,aAAe,EAAAZ,EAAA,KAAAI,GAAAJ,EAAA,KAAAc;CAA7B,IAAAC,IAAAD,GAAwCE;AAAA,CAAAhB,EAAA,OAAAK,KAAAL,EAAA,OAAAE,KAAAF,EAAA,OAAAa,KAAAb,EAAA,OAAAe,KAJhCC,IAAA;EACR;EACAd;EACAW;EACAE;EACAV;EACD,EAAAL,EAAA,KAAAK,GAAAL,EAAA,KAAAE,GAAAF,EAAA,KAAAa,GAAAb,EAAA,KAAAe,GAAAf,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA;CAAA,IAAAiB;AAAA,CAAAjB,EAAA,OAAAK,KAAAL,EAAA,QAAAM,KAAAN,EAAA,QAAAQ,KAAAR,EAAA,QAAAO,KAAAP,EAAA,QAAAE,KAAAF,EAAA,QAAAI,KAAAJ,EAAA,QAAAG,KACQc,IAAA,YAAA;AAGP7B,EAFAA,EAAOc,GAAY,yBAAyB,EAC5Cd,EAAOe,GAAc,2BAA2B,EAChDf,EAAOkB,GAAS,sBAAsB;EAEtC,IAAAY,IAAe,MAAMlC,EAAe;GAAAwB;GAAAN;GAAAC;GAAAG;GAAAF;GAAAC;GAOnC,CAAC;AAE0B,SAA5BE,EAAMY,IAAK,UAAUD,EAAO,EAErBA;IACRlB,EAAA,KAAAK,GAAAL,EAAA,MAAAM,GAAAN,EAAA,MAAAQ,GAAAR,EAAA,MAAAO,GAAAP,EAAA,MAAAE,GAAAF,EAAA,MAAAI,GAAAJ,EAAA,MAAAG,GAAAH,EAAA,MAAAiB,KAAAA,IAAAjB,EAAA;CAOQ,IAAAoB,IAAAX,KAAA,CAAiB,EAAEP,KAAAC,KAAgCG,IAAQe;AACnE,QADmErB,EAAA,QAAAL,KAAAK,EAAA,QAAAgB,KAAAhB,EAAA,QAAAiB,KAAAjB,EAAA,QAAAoB,KAhCpEC,IAAA;EAAAC,UACUN;EAMTO,SACQN;EAiBRO,gBACe;EAAKC,sBACC;EAAKC,WAChBC;EAAQC,QACXD;EAAQE,OACT;EAAK,GACTlC;EAAKe,SACCU;EACV,EAAApB,EAAA,MAAAL,GAAAK,EAAA,MAAAgB,GAAAhB,EAAA,MAAAiB,GAAAjB,EAAA,MAAAoB,GAAApB,EAAA,MAAAqB,KAAAA,IAAArB,EAAA,KAtCmBnB,EAKlBwC,EAiCA"}
1
+ {"version":3,"file":"useTryToSignPermit1.js","names":["useQuery","UseQueryOptions","UseQueryResult","trySignPermit1","TrySignPermitParams","TrySignPermitResult","useConfig","assert","Address","useLogger","TryToSingPermitQueryKey","UseTryToSignPermitParams","Partial","Omit","query","Error","Select","useTryToSignPermit1","t0","$","_c","permitInfo","tokenAddress","spenderAddress","amount","chainId","logger","config","queryEnabled","enabled","t1","toLowerCase","t2","t3","t4","t5","t6","result","log","t7","t8","queryKey","queryFn","refetchOnMount","refetchOnWindowFocus","staleTime","Infinity","gcTime","retry","queryResult"],"sources":["../../../../../src/hooks/permit/hooks/permit1/useTryToSignPermit1.ts"],"sourcesContent":["import {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { trySignPermit1 } from \"../../utils/trySignPermit1\";\nimport type {\n TrySignPermitParams,\n TrySignPermitResult,\n} from \"../../utils/trySignPermit1\";\nimport { useConfig } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { Address } from \"viem\";\nimport { useLogger } from \"@/core/logger\";\n\ntype TryToSingPermitQueryKey = [\n \"trySignPermit\",\n TrySignPermitParams[\"permitInfo\"]?,\n Address?,\n Address?,\n bigint?,\n];\n\ntype UseTryToSignPermitParams<Select = TrySignPermitResult> = Partial<\n Omit<TrySignPermitParams, \"config\">\n> & {\n query?: Omit<\n UseQueryOptions<\n TrySignPermitResult,\n Error,\n Select,\n TryToSingPermitQueryKey\n >,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\nexport function useTryToSignPermit1<Select = TrySignPermitResult>({\n permitInfo,\n tokenAddress,\n spenderAddress,\n amount,\n chainId,\n query,\n}: UseTryToSignPermitParams<Select>): UseQueryResult<Select, Error> {\n const logger = useLogger(\"PERMIT1::TryToSignPermit1\");\n const config = useConfig();\n\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useQuery<\n TrySignPermitResult,\n Error,\n Select,\n TryToSingPermitQueryKey\n >({\n queryKey: [\n \"trySignPermit\",\n permitInfo,\n tokenAddress?.toLowerCase() as Address,\n spenderAddress?.toLowerCase() as Address,\n amount,\n ],\n queryFn: async () => {\n assert(permitInfo, \"permitInfo is required\");\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const result = await trySignPermit1({\n config,\n permitInfo,\n tokenAddress,\n chainId,\n spenderAddress,\n amount,\n });\n\n logger.log(\"result\", result);\n\n return result;\n },\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n staleTime: Infinity,\n gcTime: Infinity,\n retry: false,\n ...query,\n enabled: queryEnabled && !!(permitInfo && tokenAddress && !!chainId),\n });\n\n return queryResult;\n}\n"],"mappings":";;;;;;;AAqCA,SAAOiB,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA2D,EAAAC,eAAAC,iBAAAC,mBAAAC,WAAAC,YAAAX,aAAAI,GAQhEQ,IAAejB,EAAU,4BAA4B,EACrDkB,IAAerB,GAAW,EAE1BsB,IAAqBd,GAAKe,WAAL,IAAuBC;CAAA,AAAAX,EAAA,OAAAG,IAWbQ,IAAAX,EAAA,MAA3BW,IAAAR,GAAYS,aAAe,EAAAZ,EAAA,KAAAG,GAAAH,EAAA,KAAAW;CAA3B,IAAAE,IAAAF,GAAsCG;CAAA,AAAAd,EAAA,OAAAI,IACTU,IAAAd,EAAA,MAA7Bc,IAAAV,GAAcQ,aAAe,EAAAZ,EAAA,KAAAI,GAAAJ,EAAA,KAAAc;CAA7B,IAAAC,IAAAD,GAAwCE;CAAA,AAAAhB,EAAA,OAAAK,KAAAL,EAAA,OAAAE,KAAAF,EAAA,OAAAa,KAAAb,EAAA,OAAAe,KAJhCC,IAAA;EACR;EACAd;EACAW;EACAE;EACAV;EACD,EAAAL,EAAA,KAAAK,GAAAL,EAAA,KAAAE,GAAAF,EAAA,KAAAa,GAAAb,EAAA,KAAAe,GAAAf,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA;CAAA,IAAAiB;CAAA,AAAAjB,EAAA,OAAAK,KAAAL,EAAA,QAAAM,KAAAN,EAAA,QAAAQ,KAAAR,EAAA,QAAAO,KAAAP,EAAA,QAAAE,KAAAF,EAAA,QAAAI,KAAAJ,EAAA,QAAAG,KACQc,IAAA,YAAA;EAGP7B,AAFAA,EAAOc,GAAY,yBAAyB,EAC5Cd,EAAOe,GAAc,2BAA2B,EAChDf,EAAOkB,GAAS,sBAAsB;EAEtC,IAAAY,IAAe,MAAMlC,EAAe;GAAAwB;GAAAN;GAAAC;GAAAG;GAAAF;GAAAC;GAOnC,CAAC;EAE0B,OAA5BE,EAAMY,IAAK,UAAUD,EAAO,EAErBA;IACRlB,EAAA,KAAAK,GAAAL,EAAA,MAAAM,GAAAN,EAAA,MAAAQ,GAAAR,EAAA,MAAAO,GAAAP,EAAA,MAAAE,GAAAF,EAAA,MAAAI,GAAAJ,EAAA,MAAAG,GAAAH,EAAA,MAAAiB,KAAAA,IAAAjB,EAAA;CAOQ,IAAAoB,IAAAX,KAAA,CAAiB,EAAEP,KAAAC,KAAgCG,IAAQe;CACnE,OADmErB,EAAA,QAAAL,KAAAK,EAAA,QAAAgB,KAAAhB,EAAA,QAAAiB,KAAAjB,EAAA,QAAAoB,KAhCpEC,IAAA;EAAAC,UACUN;EAMTO,SACQN;EAiBRO,gBACe;EAAKC,sBACC;EAAKC,WAChBC;EAAQC,QACXD;EAAQE,OACT;EAAK,GACTlC;EAAKe,SACCU;EACV,EAAApB,EAAA,MAAAL,GAAAK,EAAA,MAAAgB,GAAAhB,EAAA,MAAAiB,GAAAjB,EAAA,MAAAoB,GAAApB,EAAA,MAAAqB,KAAAA,IAAArB,EAAA,KAtCmBnB,EAKlBwC,EAmCKS"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePermit2Allowance.js","names":["useAccount","Token","isETH","useTokenAllowance","useLogger","PERMIT2_ADDRESS","UsePermit2AllowanceParams","token","Pick","amount","enabled","UsePermit2AllowanceResult","canUsePermit2","enoughAllowanceForPermit2","isLoading","isError","isSuccess","error","Error","refetch","permit2Allowance","usePermit2Allowance","t0","$","_c","t1","undefined","logger","address","user","t2","tokenNotETH","t3","allowanceForPermit2Query","usePermit2AllowanceQuery","data","once","log","allowance","t4","t5","network","tokenAddress","spender","chainId"],"sources":["../../../../../src/hooks/permit/hooks/permit2/usePermit2Allowance.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { useTokenAllowance } from \"@/hooks/tokens/allowance/useTokenAllowance\";\nimport { useLogger } from \"@/core/logger\";\nimport { PERMIT2_ADDRESS } from \"../../utils/construct\";\n\ninterface UsePermit2AllowanceParams {\n token?: Pick<Token, \"address\" | \"network\">;\n amount?: bigint;\n enabled?: boolean;\n}\n\ntype UsePermit2AllowanceResult = {\n canUsePermit2: boolean;\n enoughAllowanceForPermit2: boolean;\n isLoading: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n refetch: () => void;\n permit2Allowance: bigint | null;\n};\n\nexport function usePermit2Allowance({\n token,\n amount,\n enabled = true,\n}: UsePermit2AllowanceParams): UsePermit2AllowanceResult {\n const logger = useLogger(\"PERMIT2::Allowance\");\n const { address: user } = useAccount();\n\n const tokenNotETH = token && !isETH(token);\n\n const allowanceForPermit2Query = usePermit2AllowanceQuery({\n token,\n enabled,\n });\n\n const enoughAllowanceForPermit2 = !!(\n amount &&\n allowanceForPermit2Query.data &&\n allowanceForPermit2Query.data >= amount\n );\n\n const canUsePermit2 = !!(\n tokenNotETH &&\n user &&\n amount &&\n enoughAllowanceForPermit2\n );\n\n logger.once.log({\n canUsePermit2,\n enoughAllowanceForPermit2,\n allowance: allowanceForPermit2Query.data,\n error: allowanceForPermit2Query.error,\n });\n\n return {\n canUsePermit2,\n enoughAllowanceForPermit2,\n isLoading: allowanceForPermit2Query.isLoading,\n isError: allowanceForPermit2Query.isError,\n isSuccess: allowanceForPermit2Query.isSuccess,\n error: allowanceForPermit2Query.error,\n permit2Allowance: allowanceForPermit2Query.data ?? null,\n refetch: allowanceForPermit2Query.refetch,\n };\n}\n\nexport function usePermit2AllowanceQuery({\n token,\n enabled = true,\n}: Pick<UsePermit2AllowanceParams, \"token\" | \"enabled\">) {\n return useTokenAllowance({\n tokenAddress: token?.address,\n spender: PERMIT2_ADDRESS,\n chainId: token?.network,\n enabled,\n });\n}\n"],"mappings":";;;;;;;AAwBA,SAAOqB,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAjB,UAAAE,WAAAC,SAAAe,MAAAH,GAGlCZ,IAAAe,MAAAC,KAAAA,IAAA,KAAAD,GAEAE,IAAevB,EAAU,qBAAqB,EAC9C,EAAAwB,SAAAC,MAA0B7B,GAAY,EAAC8B;AAAA,CAAAP,EAAA,OAAAhB,IAEGuB,IAAAP,EAAA,MAAtBO,IAAAvB,KAAA,CAAUL,EAAMK,EAAM,EAAAgB,EAAA,KAAAhB,GAAAgB,EAAA,KAAAO;CAA1C,IAAAC,IAAoBD,GAAuBE;AAAA,CAAAT,EAAA,OAAAb,KAAAa,EAAA,OAAAhB,KAEeyB,IAAA;EAAAzB;EAAAG;EAGzD,EAAAa,EAAA,KAAAb,GAAAa,EAAA,KAAAhB,GAAAgB,EAAA,KAAAS,KAAAA,IAAAT,EAAA;CAHD,IAAAU,IAAiCC,EAAyBF,EAGxD,EAEFnB,IAAkC,CAAC,EACjCJ,KACAwB,EAAwBE,QACxBF,EAAwBE,QAAS1B,IAGnCG,IAAsB,CAAC,EACrBmB,KAAAF,KAAApB,KAAAI;AAMFc,GAAMS,KAAKC,IAAK;EAAAzB;EAAAC;EAAAyB,WAGHL,EAAwBE;EAAKlB,OACjCgB,EAAwBhB;EAChC,CAAC;CASkB,IAAAsB,IAAAN,EAAwBE,QAAxB,MAAqCK;AAExD,QAFwDjB,EAAA,OAAAU,EAAAhB,SAAAM,EAAA,OAAAU,EAAAlB,WAAAQ,EAAA,OAAAU,EAAAnB,aAAAS,EAAA,OAAAU,EAAAjB,aAAAO,EAAA,OAAAU,EAAAd,WAAAI,EAAA,QAAAX,KAAAW,EAAA,QAAAV,KAAAU,EAAA,QAAAgB,KAPlDC,IAAA;EAAA5B;EAAAC;EAAAC,WAGMmB,EAAwBnB;EAAUC,SACpCkB,EAAwBlB;EAAQC,WAC9BiB,EAAwBjB;EAAUC,OACtCgB,EAAwBhB;EAAMG,kBACnBmB;EAAqCpB,SAC9Cc,EAAwBd;EAClC,EAAAI,EAAA,KAAAU,EAAAhB,OAAAM,EAAA,KAAAU,EAAAlB,SAAAQ,EAAA,KAAAU,EAAAnB,WAAAS,EAAA,KAAAU,EAAAjB,WAAAO,EAAA,KAAAU,EAAAd,SAAAI,EAAA,MAAAX,GAAAW,EAAA,MAAAV,GAAAU,EAAA,MAAAgB,GAAAhB,EAAA,MAAAiB,KAAAA,IAAAjB,EAAA,KATMiB;;AAYT,SAAON,EAAAZ,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAkC,EAAAjB,UAAAG,SAAAe,MAAAH,GAEvCZ,IAAAe,MAAAC,KAAAA,IAAA,KAAAD,GAGgBK,IAAAvB,GAAKqB,SAEVI,IAAAzB,GAAKkC,SAASF;AAExB,QAFwBhB,EAAA,OAAAb,KAAAa,EAAA,OAAAO,KAAAP,EAAA,OAAAS,KAHAO,IAAA;EAAAG,cACTZ;EAAca,SACnBtC;EAAeuC,SACfZ;EAActB;EAExB,EAAAa,EAAA,KAAAb,GAAAa,EAAA,KAAAO,GAAAP,EAAA,KAAAS,GAAAT,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA,IALMpB,EAAkBoC,EAKvB"}
1
+ {"version":3,"file":"usePermit2Allowance.js","names":["useAccount","Token","isETH","useTokenAllowance","useLogger","PERMIT2_ADDRESS","UsePermit2AllowanceParams","token","Pick","amount","enabled","UsePermit2AllowanceResult","canUsePermit2","enoughAllowanceForPermit2","isLoading","isError","isSuccess","error","Error","refetch","permit2Allowance","usePermit2Allowance","t0","$","_c","t1","undefined","logger","address","user","t2","tokenNotETH","t3","allowanceForPermit2Query","usePermit2AllowanceQuery","data","once","log","allowance","t4","t5","network","tokenAddress","spender","chainId"],"sources":["../../../../../src/hooks/permit/hooks/permit2/usePermit2Allowance.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { isETH } from \"@/tokens/utils/eth\";\nimport { useTokenAllowance } from \"@/hooks/tokens/allowance/useTokenAllowance\";\nimport { useLogger } from \"@/core/logger\";\nimport { PERMIT2_ADDRESS } from \"../../utils/construct\";\n\ninterface UsePermit2AllowanceParams {\n token?: Pick<Token, \"address\" | \"network\">;\n amount?: bigint;\n enabled?: boolean;\n}\n\ntype UsePermit2AllowanceResult = {\n canUsePermit2: boolean;\n enoughAllowanceForPermit2: boolean;\n isLoading: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n refetch: () => void;\n permit2Allowance: bigint | null;\n};\n\nexport function usePermit2Allowance({\n token,\n amount,\n enabled = true,\n}: UsePermit2AllowanceParams): UsePermit2AllowanceResult {\n const logger = useLogger(\"PERMIT2::Allowance\");\n const { address: user } = useAccount();\n\n const tokenNotETH = token && !isETH(token);\n\n const allowanceForPermit2Query = usePermit2AllowanceQuery({\n token,\n enabled,\n });\n\n const enoughAllowanceForPermit2 = !!(\n amount &&\n allowanceForPermit2Query.data &&\n allowanceForPermit2Query.data >= amount\n );\n\n const canUsePermit2 = !!(\n tokenNotETH &&\n user &&\n amount &&\n enoughAllowanceForPermit2\n );\n\n logger.once.log({\n canUsePermit2,\n enoughAllowanceForPermit2,\n allowance: allowanceForPermit2Query.data,\n error: allowanceForPermit2Query.error,\n });\n\n return {\n canUsePermit2,\n enoughAllowanceForPermit2,\n isLoading: allowanceForPermit2Query.isLoading,\n isError: allowanceForPermit2Query.isError,\n isSuccess: allowanceForPermit2Query.isSuccess,\n error: allowanceForPermit2Query.error,\n permit2Allowance: allowanceForPermit2Query.data ?? null,\n refetch: allowanceForPermit2Query.refetch,\n };\n}\n\nexport function usePermit2AllowanceQuery({\n token,\n enabled = true,\n}: Pick<UsePermit2AllowanceParams, \"token\" | \"enabled\">) {\n return useTokenAllowance({\n tokenAddress: token?.address,\n spender: PERMIT2_ADDRESS,\n chainId: token?.network,\n enabled,\n });\n}\n"],"mappings":";;;;;;;AAwBA,SAAOqB,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,GAAA,EAA6B,EAAAjB,UAAAE,WAAAC,SAAAe,MAAAH,GAGlCZ,IAAAe,MAAAC,KAAAA,IAAA,KAAAD,GAEAE,IAAevB,EAAU,qBAAqB,EAC9C,EAAAwB,SAAAC,MAA0B7B,GAAY,EAAC8B;CAAA,AAAAP,EAAA,OAAAhB,IAEGuB,IAAAP,EAAA,MAAtBO,IAAAvB,KAAA,CAAUL,EAAMK,EAAM,EAAAgB,EAAA,KAAAhB,GAAAgB,EAAA,KAAAO;CAA1C,IAAAC,IAAoBD,GAAuBE;CAAA,AAAAT,EAAA,OAAAb,KAAAa,EAAA,OAAAhB,KAEeyB,IAAA;EAAAzB;EAAAG;EAGzD,EAAAa,EAAA,KAAAb,GAAAa,EAAA,KAAAhB,GAAAgB,EAAA,KAAAS,KAAAA,IAAAT,EAAA;CAHD,IAAAU,IAAiCC,EAAyBF,EAGxD,EAEFnB,IAAkC,CAAC,EACjCJ,KACAwB,EAAwBE,QACxBF,EAAwBE,QAAS1B,IAGnCG,IAAsB,CAAC,EACrBmB,KAAAF,KAAApB,KAAAI;CAMFc,EAAMS,KAAKC,IAAK;EAAAzB;EAAAC;EAAAyB,WAGHL,EAAwBE;EAAKlB,OACjCgB,EAAwBhB;EAChC,CAAC;CASkB,IAAAsB,IAAAN,EAAwBE,QAAxB,MAAqCK;CAExD,OAFwDjB,EAAA,OAAAU,EAAAhB,SAAAM,EAAA,OAAAU,EAAAlB,WAAAQ,EAAA,OAAAU,EAAAnB,aAAAS,EAAA,OAAAU,EAAAjB,aAAAO,EAAA,OAAAU,EAAAd,WAAAI,EAAA,QAAAX,KAAAW,EAAA,QAAAV,KAAAU,EAAA,QAAAgB,KAPlDC,IAAA;EAAA5B;EAAAC;EAAAC,WAGMmB,EAAwBnB;EAAUC,SACpCkB,EAAwBlB;EAAQC,WAC9BiB,EAAwBjB;EAAUC,OACtCgB,EAAwBhB;EAAMG,kBACnBmB;EAAqCpB,SAC9Cc,EAAwBd;EAClC,EAAAI,EAAA,KAAAU,EAAAhB,OAAAM,EAAA,KAAAU,EAAAlB,SAAAQ,EAAA,KAAAU,EAAAnB,WAAAS,EAAA,KAAAU,EAAAjB,WAAAO,EAAA,KAAAU,EAAAd,SAAAI,EAAA,MAAAX,GAAAW,EAAA,MAAAV,GAAAU,EAAA,MAAAgB,GAAAhB,EAAA,MAAAiB,KAAAA,IAAAjB,EAAA,KATMiB;;AAYT,SAAON,EAAAZ,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAkC,EAAAjB,UAAAG,SAAAe,MAAAH,GAEvCZ,IAAAe,MAAAC,KAAAA,IAAA,KAAAD,GAGgBK,IAAAvB,GAAKqB,SAEVI,IAAAzB,GAAKkC,SAASF;CAExB,OAFwBhB,EAAA,OAAAb,KAAAa,EAAA,OAAAO,KAAAP,EAAA,OAAAS,KAHAO,IAAA;EAAAG,cACTZ;EAAca,SACnBtC;EAAeuC,SACfZ;EAActB;EAExB,EAAAa,EAAA,KAAAb,GAAAa,EAAA,KAAAO,GAAAP,EAAA,KAAAS,GAAAT,EAAA,KAAAgB,KAAAA,IAAAhB,EAAA,IALMpB,EAAkBoC,EAKvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePermit2TransferFromNonce.js","names":["useQuery","useQueryClient","QueryObserverResult","RefetchOptions","Address","maxUint256","useConfig","Config","readContract","assert","PERMIT2_ABI","PERMIT2_ADDRESS","getLogger","useLogger","NonceState","word","bitmap","nonce","PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY","Permit2TransferFromQueryKey","owner","chainId","UsePermit2TransferFromNonceOptions","initWord","enabled","UsePermit2TransferFromNonceResult","nonceToUse","nonceState","isLoading","isError","isSuccess","error","Error","refetch","options","Promise","usePermit2TransferFromNonce","queryClient","config","logger","queryKey","data","queryFn","last","getQueryData","nextOpenWord","getNextOpenWord","startWord","warn","bitPos","getFirstUnsetBit","BigInt","log","refetchOnWindowFocus","notifyOnChangeProps","GetNextOpenWordInput","MAX","address","abi","functionName","args","mask","toString","length","SetNonceInput","usedNonce","UseMarkNonceAsUsedResult","markNonceAsUsed","input","useMarkNonceAsUsed","toLowerCase","setQueryData","oldNonceState","newNonce","splitNonce"],"sources":["../../../../../src/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.ts"],"sourcesContent":["import {\n useQuery,\n useQueryClient,\n type QueryObserverResult,\n type RefetchOptions,\n} from \"@tanstack/react-query\";\nimport { type Address, maxUint256 } from \"viem\";\nimport { useConfig, type Config } from \"wagmi\";\nimport { readContract } from \"@wagmi/core\";\nimport { assert } from \"ts-essentials\";\nimport { PERMIT2_ABI } from \"../../utils/abi\";\nimport { PERMIT2_ADDRESS } from \"../../utils/construct\";\nimport { getLogger, useLogger } from \"@/core/logger\";\n\n/**\n * Permit2 stores nonces using a nested bitmap structure:\n *\n * mapping(address => mapping(uint256 => uint256)) public nonceBitmap;\n *\n * - The outer key (`address`) is the permit signer (the `owner`)\n * - The inner key (`uint256 word`) is the index of a 256-bit \"page\"\n * - The value (`uint256`) is the bitmap for that page — each bit (0 to 255) represents a nonce\n * - If bit `i` is `0`, then nonce `word * 256 + i` is **unused**\n * - If bit `i` is `1`, then that nonce has **already been used**\n *\n * This is what enables Permit2 to support unordered nonces while saving gas.\n */\n\n// Result of finding an available nonce\ntype NonceState = {\n word: bigint; // which 256-bit \"page\" of the bitmap we used\n bitmap: bigint; // the bitmap for that word\n nonce: bigint; // full 256-based offset: word * 256 + bit index\n};\n\nconst PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY = \"permit2-nonce\";\n\ntype Permit2TransferFromQueryKey = [\n typeof PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY,\n owner?: Address,\n chainId?: number,\n];\n\ninterface UsePermit2TransferFromNonceOptions {\n owner?: Address;\n chainId?: number;\n initWord?: bigint; // word offset to begin scanning from\n enabled?: boolean;\n}\n\nexport type UsePermit2TransferFromNonceResult = {\n // null when no can't calculate Permit2 nonce\n nonceToUse?: bigint | null;\n nonceState?: NonceState | null;\n isLoading: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n refetch: (\n options?: RefetchOptions\n ) => Promise<QueryObserverResult<NonceState | null, Error>>;\n};\n\n/**\n * React hook to find the next unused Permit2 nonce for `permitTransferFrom`.\n *\n * Permit2 stores nonces as a bitmap:\n * - Each address has a mapping from uint256 => uint256\n * - Each value is a 256-bit bitmap (called a \"word\")\n * - If a bit is 1, the nonce (word * 256 + bit index) is used\n * - If it's 0, it's free and can be used\n */\nexport function usePermit2TransferFromNonce({\n owner,\n chainId,\n initWord = 0n,\n enabled = true,\n}: UsePermit2TransferFromNonceOptions) {\n const queryClient = useQueryClient();\n const config = useConfig();\n const logger = useLogger(\"PERMIT2::TransferFromNonce\");\n\n const queryKey: Permit2TransferFromQueryKey = [\n PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY,\n owner,\n chainId,\n ];\n\n const {\n data: nonceState,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n } = useQuery<\n NonceState | null,\n Error,\n NonceState | null,\n Permit2TransferFromQueryKey\n >({\n enabled: enabled && !!(owner && chainId),\n\n queryKey,\n\n queryFn: async () => {\n // Safety checks\n assert(owner, \"owner is required\");\n assert(chainId, \"chainId is required\");\n\n // Try to resume scanning from last known state if available\n const last = queryClient.getQueryData<NonceState>(queryKey);\n\n // Find a bitmap word that has at least one unused bit (i.e. a usable nonce)\n const nextOpenWord = await getNextOpenWord({\n owner,\n config,\n startWord: last?.word ?? initWord,\n });\n\n if (!nextOpenWord) {\n logger.warn(\"No available nonce found\");\n return null;\n }\n\n const { word, bitmap } = nextOpenWord;\n // Identify the first 0-bit in the bitmap — that’s our next nonce\n const bitPos = getFirstUnsetBit(bitmap);\n if (bitPos === -1) {\n logger.warn(\"No available nonce found\");\n return null;\n }\n\n const nonceState = {\n word,\n bitmap,\n nonce: word * 256n + BigInt(bitPos),\n };\n\n logger.log(\"nonceState\", nonceState);\n\n // The final usable nonce is: word * 256 + bit index\n return nonceState;\n },\n\n // Useful defaults\n refetchOnWindowFocus: false,\n notifyOnChangeProps: [\"data\", \"isLoading\"],\n });\n\n return {\n nonceState,\n nonceToUse: nonceState === null ? null : nonceState?.nonce,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n };\n}\n\ninterface GetNextOpenWordInput {\n owner: Address;\n config: Config;\n startWord: bigint;\n}\n\n/**\n * Scans bitmap word-by-word starting at `startWord` until it finds\n * one with at least one unused bit (i.e., not all bits are set to 1).\n */\nasync function getNextOpenWord({\n owner,\n config,\n startWord,\n}: GetNextOpenWordInput): Promise<{ word: bigint; bitmap: bigint } | null> {\n let word = startWord;\n const MAX = maxUint256; // full 256-bit word (0xffff...ffff)\n\n while (true) {\n // Read the bitmap word for the given owner and word index\n const bitmap = await readContract(config, {\n address: PERMIT2_ADDRESS,\n abi: PERMIT2_ABI,\n functionName: \"nonceBitmap\",\n args: [owner, word],\n });\n\n // If the bitmap is not fully used (i.e., not all bits are 1)\n if (bitmap !== MAX) {\n return { word, bitmap };\n }\n\n word += 1n;\n\n // Fail-safe: don't scan more than 1024 words (262,144 nonces)\n if (word - startWord > 1024n) {\n getLogger(\"PERMIT2::getNextOpenWord\").warn(\"Exceeded nonce search limit\");\n return null;\n }\n }\n}\n\n/**\n * Returns the index (0–255) of the first unset (zero) bit in a 256-bit bitmap.\n *\n * Uses a classic bit-hack: (~bitmap) & (bitmap + 1)\n *\n * This produces a bitmask with only the lowest 0-bit set to 1.\n * Example:\n * bitmap = 0b1110 → unset bit at index 0\n * ~bitmap = 0b...0001\n * bitmap + 1 = 0b1111\n * result = 0b0001 → bitmask for index 0\n *\n * We then convert the bitmask to binary and count how many bits it takes\n * to shift that 1 into place = its position.\n */\nfunction getFirstUnsetBit(bitmap: bigint): number {\n // Create a bitmask with a 1 only at the first 0-bit (LSB side)\n const mask = ~bitmap & (bitmap + 1n);\n\n // If all bits are set (mask is zero), there are no available nonces\n if (mask === 0n) return -1;\n\n // Convert mask to binary and count digits – the length is the index + 1\n // e.g. mask = 0b1000 → \"1000\" → length = 4 → index = 3\n return mask.toString(2).length - 1;\n}\n\n/////// MARK NONCE AS USED ///////\n\ntype SetNonceInput = {\n owner: Address;\n chainId: number;\n usedNonce: bigint;\n};\n\ntype UseMarkNonceAsUsedResult = {\n /**\n * Mark a nonce as \"used\" in the local cache after submitting a transaction or order\n * This prevents reuse of the same nonce while it's still pending on-chain.\n */\n markNonceAsUsed: (input: SetNonceInput) => void;\n};\n\n/**\n * Hook to manually bump the locally cached Permit2 nonce to avoid reuse\n *\n * Permit2 allows unordered nonces, but while a tx is pending, it's safer to use\n * a strictly increasing nonce to avoid accidental replays or reuse.\n *\n * clearing an unsued nonce is not necessary because nonces are unordered\n */\nexport function useMarkNonceAsUsed(): UseMarkNonceAsUsedResult {\n const queryClient = useQueryClient();\n\n const markNonceAsUsed: UseMarkNonceAsUsedResult[\"markNonceAsUsed\"] = ({\n owner,\n chainId,\n usedNonce,\n }) => {\n const queryKey: Permit2TransferFromQueryKey = [\n PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY,\n owner.toLowerCase() as Address,\n chainId,\n ];\n\n // Update cached nonce state if the used nonce was >= current one\n queryClient.setQueryData<NonceState>(queryKey, (oldNonceState) => {\n if (!oldNonceState) return oldNonceState; // should not happen unless cache was cleared\n\n // If we're already past this nonce, nothing to do\n if (oldNonceState.nonce > usedNonce) return oldNonceState;\n\n const newNonce = oldNonceState.nonce + 1n;\n const { word, bitPos } = splitNonce(newNonce);\n\n return {\n word,\n bitmap: 1n << bitPos, // ✅ convert bit index to actual 256-bit bitmap\n nonce: newNonce,\n };\n });\n };\n\n return {\n markNonceAsUsed,\n };\n}\n\n/**\n * Splits a Permit2 nonce into:\n * - `word`: which 256-bit bitmap page (nonce / 256)\n * - `bitPos`: position within that word (nonce % 256)\n */\nfunction splitNonce(nonce: bigint): { word: bigint; bitPos: bigint } {\n const word = nonce / 256n;\n const bitPos = nonce % 256n;\n return { word, bitPos };\n}\n"],"mappings":";;;;;;;;;AAmCA,IAAMkB,IAAwC;AAqC9C,SAAgBkB,EAA4B,EAC1ChB,UACAC,YACAE,cAAW,IACXC,aAAU,MAC2B;CACrC,IAAMa,IAAcpC,GAAgB,EAC9BqC,IAAShC,GAAW,EACpBiC,IAAS1B,EAAU,6BAA6B,EAEhD2B,IAAwC;EAC5CtB;EACAE;EACAC;EACD,EAEK,EACJoB,MAAMd,GACNC,cACAC,YACAC,cACAC,UACAE,eACEjC,EAKF;EACAwB,SAASA,KAAW,CAAC,EAAEJ,KAASC;EAEhCmB;EAEAE,SAAS,YAAY;AAGnBjC,GADAA,EAAOW,GAAO,oBAAoB,EAClCX,EAAOY,GAAS,sBAAsB;GAMtC,IAAMwB,IAAe,MAAMC,EAAgB;IACzC1B;IACAkB;IACAS,WANWV,EAAYO,aAAyBJ,EAAS,EAMxCzB,QAAQQ;IAC1B,CAAC;AAEF,OAAI,CAACsB,EAEH,QADAN,EAAOS,KAAK,2BAA2B,EAChC;GAGT,IAAM,EAAEjC,SAAMC,cAAW6B,GAEnBI,IAASC,EAAiBlC,EAAO;AACvC,OAAIiC,MAAW,GAEb,QADAV,EAAOS,KAAK,2BAA2B,EAChC;GAGT,IAAMrB,IAAa;IACjBZ;IACAC;IACAC,OAAOF,IAAO,OAAOoC,OAAOF,EAAM;IACnC;AAKD,UAHAV,EAAOa,IAAI,cAAczB,EAAW,EAG7BA;;EAIT0B,sBAAsB;EACtBC,qBAAqB,CAAC,QAAQ,YAAW;EAC1C,CAAC;AAEF,QAAO;EACL3B,YAAAA;EACAD,YAAYC,MAAe,OAAO,OAAOA,GAAYV;EACrDW;EACAC;EACAC;EACAC;EACAE;EACD;;AAaH,eAAea,EAAgB,EAC7B1B,UACAkB,WACAS,gBACyE;CACzE,IAAIhC,IAAOgC,GACLS,IAAMnD;AAEZ,UAAa;EAEX,IAAMW,IAAS,MAAMR,EAAa8B,GAAQ;GACxCmB,SAAS9C;GACT+C,KAAKhD;GACLiD,cAAc;GACdC,MAAM,CAACxC,GAAOL,EAAI;GACnB,CAAC;AAGF,MAAIC,MAAWwC,EACb,QAAO;GAAEzC;GAAMC;GAAQ;AAMzB,MAHAD,KAAQ,IAGJA,IAAOgC,IAAY,MAErB,QADAnC,EAAU,2BAA2B,CAACoC,KAAK,8BAA8B,EAClE;;;AAoBb,SAASE,EAAiBlC,GAAwB;CAEhD,IAAM6C,IAAO,CAAC7C,IAAUA,IAAS;AAOjC,QAJI6C,MAAS,KAAW,KAIjBA,EAAKC,SAAS,EAAE,CAACC,SAAS;;AA2BnC,SAAgBM,IAA+C;CAC7D,IAAMhC,IAAcpC,GAAgB;AA+BpC,QAAO,EACLkE,kBA9BoE,EACpE/C,UACAC,YACA4C,mBACI;EACJ,IAAMzB,IAAwC;GAC5CtB;GACAE,EAAMkD,aAAa;GACnBjD;GACD;AAGDgB,IAAYkC,aAAyB/B,IAAWgC,MAAkB;AAIhE,OAHI,CAACA,KAGDA,EAAcvD,QAAQgD,EAAW,QAAOO;GAE5C,IAAMC,IAAWD,EAAcvD,QAAQ,IACjC,EAAEF,SAAMkC,cAAWyB,EAAWD,EAAS;AAE7C,UAAO;IACL1D;IACAC,QAAQ,MAAMiC;IACdhC,OAAOwD;IACR;IACD;IAKH;;AAQH,SAASC,EAAWzD,GAAiD;AAGnE,QAAO;EAAEF,MAFIE,IAAQ;EAENgC,QADAhC,IAAQ;EACA"}
1
+ {"version":3,"file":"usePermit2TransferFromNonce.js","names":["useQuery","useQueryClient","QueryObserverResult","RefetchOptions","Address","maxUint256","useConfig","Config","readContract","assert","PERMIT2_ABI","PERMIT2_ADDRESS","getLogger","useLogger","NonceState","word","bitmap","nonce","PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY","Permit2TransferFromQueryKey","owner","chainId","UsePermit2TransferFromNonceOptions","initWord","enabled","UsePermit2TransferFromNonceResult","nonceToUse","nonceState","isLoading","isError","isSuccess","error","Error","refetch","options","Promise","usePermit2TransferFromNonce","queryClient","config","logger","queryKey","data","queryFn","last","getQueryData","nextOpenWord","getNextOpenWord","startWord","warn","bitPos","getFirstUnsetBit","BigInt","log","refetchOnWindowFocus","notifyOnChangeProps","GetNextOpenWordInput","MAX","address","abi","functionName","args","mask","toString","length","SetNonceInput","usedNonce","UseMarkNonceAsUsedResult","markNonceAsUsed","input","useMarkNonceAsUsed","toLowerCase","setQueryData","oldNonceState","newNonce","splitNonce"],"sources":["../../../../../src/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.ts"],"sourcesContent":["import {\n useQuery,\n useQueryClient,\n type QueryObserverResult,\n type RefetchOptions,\n} from \"@tanstack/react-query\";\nimport { type Address, maxUint256 } from \"viem\";\nimport { useConfig, type Config } from \"wagmi\";\nimport { readContract } from \"@wagmi/core\";\nimport { assert } from \"ts-essentials\";\nimport { PERMIT2_ABI } from \"../../utils/abi\";\nimport { PERMIT2_ADDRESS } from \"../../utils/construct\";\nimport { getLogger, useLogger } from \"@/core/logger\";\n\n/**\n * Permit2 stores nonces using a nested bitmap structure:\n *\n * mapping(address => mapping(uint256 => uint256)) public nonceBitmap;\n *\n * - The outer key (`address`) is the permit signer (the `owner`)\n * - The inner key (`uint256 word`) is the index of a 256-bit \"page\"\n * - The value (`uint256`) is the bitmap for that page — each bit (0 to 255) represents a nonce\n * - If bit `i` is `0`, then nonce `word * 256 + i` is **unused**\n * - If bit `i` is `1`, then that nonce has **already been used**\n *\n * This is what enables Permit2 to support unordered nonces while saving gas.\n */\n\n// Result of finding an available nonce\ntype NonceState = {\n word: bigint; // which 256-bit \"page\" of the bitmap we used\n bitmap: bigint; // the bitmap for that word\n nonce: bigint; // full 256-based offset: word * 256 + bit index\n};\n\nconst PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY = \"permit2-nonce\";\n\ntype Permit2TransferFromQueryKey = [\n typeof PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY,\n owner?: Address,\n chainId?: number,\n];\n\ninterface UsePermit2TransferFromNonceOptions {\n owner?: Address;\n chainId?: number;\n initWord?: bigint; // word offset to begin scanning from\n enabled?: boolean;\n}\n\nexport type UsePermit2TransferFromNonceResult = {\n // null when no can't calculate Permit2 nonce\n nonceToUse?: bigint | null;\n nonceState?: NonceState | null;\n isLoading: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n refetch: (\n options?: RefetchOptions\n ) => Promise<QueryObserverResult<NonceState | null, Error>>;\n};\n\n/**\n * React hook to find the next unused Permit2 nonce for `permitTransferFrom`.\n *\n * Permit2 stores nonces as a bitmap:\n * - Each address has a mapping from uint256 => uint256\n * - Each value is a 256-bit bitmap (called a \"word\")\n * - If a bit is 1, the nonce (word * 256 + bit index) is used\n * - If it's 0, it's free and can be used\n */\nexport function usePermit2TransferFromNonce({\n owner,\n chainId,\n initWord = 0n,\n enabled = true,\n}: UsePermit2TransferFromNonceOptions) {\n const queryClient = useQueryClient();\n const config = useConfig();\n const logger = useLogger(\"PERMIT2::TransferFromNonce\");\n\n const queryKey: Permit2TransferFromQueryKey = [\n PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY,\n owner,\n chainId,\n ];\n\n const {\n data: nonceState,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n } = useQuery<\n NonceState | null,\n Error,\n NonceState | null,\n Permit2TransferFromQueryKey\n >({\n enabled: enabled && !!(owner && chainId),\n\n queryKey,\n\n queryFn: async () => {\n // Safety checks\n assert(owner, \"owner is required\");\n assert(chainId, \"chainId is required\");\n\n // Try to resume scanning from last known state if available\n const last = queryClient.getQueryData<NonceState>(queryKey);\n\n // Find a bitmap word that has at least one unused bit (i.e. a usable nonce)\n const nextOpenWord = await getNextOpenWord({\n owner,\n config,\n startWord: last?.word ?? initWord,\n });\n\n if (!nextOpenWord) {\n logger.warn(\"No available nonce found\");\n return null;\n }\n\n const { word, bitmap } = nextOpenWord;\n // Identify the first 0-bit in the bitmap — that’s our next nonce\n const bitPos = getFirstUnsetBit(bitmap);\n if (bitPos === -1) {\n logger.warn(\"No available nonce found\");\n return null;\n }\n\n const nonceState = {\n word,\n bitmap,\n nonce: word * 256n + BigInt(bitPos),\n };\n\n logger.log(\"nonceState\", nonceState);\n\n // The final usable nonce is: word * 256 + bit index\n return nonceState;\n },\n\n // Useful defaults\n refetchOnWindowFocus: false,\n notifyOnChangeProps: [\"data\", \"isLoading\"],\n });\n\n return {\n nonceState,\n nonceToUse: nonceState === null ? null : nonceState?.nonce,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n };\n}\n\ninterface GetNextOpenWordInput {\n owner: Address;\n config: Config;\n startWord: bigint;\n}\n\n/**\n * Scans bitmap word-by-word starting at `startWord` until it finds\n * one with at least one unused bit (i.e., not all bits are set to 1).\n */\nasync function getNextOpenWord({\n owner,\n config,\n startWord,\n}: GetNextOpenWordInput): Promise<{ word: bigint; bitmap: bigint } | null> {\n let word = startWord;\n const MAX = maxUint256; // full 256-bit word (0xffff...ffff)\n\n while (true) {\n // Read the bitmap word for the given owner and word index\n const bitmap = await readContract(config, {\n address: PERMIT2_ADDRESS,\n abi: PERMIT2_ABI,\n functionName: \"nonceBitmap\",\n args: [owner, word],\n });\n\n // If the bitmap is not fully used (i.e., not all bits are 1)\n if (bitmap !== MAX) {\n return { word, bitmap };\n }\n\n word += 1n;\n\n // Fail-safe: don't scan more than 1024 words (262,144 nonces)\n if (word - startWord > 1024n) {\n getLogger(\"PERMIT2::getNextOpenWord\").warn(\"Exceeded nonce search limit\");\n return null;\n }\n }\n}\n\n/**\n * Returns the index (0–255) of the first unset (zero) bit in a 256-bit bitmap.\n *\n * Uses a classic bit-hack: (~bitmap) & (bitmap + 1)\n *\n * This produces a bitmask with only the lowest 0-bit set to 1.\n * Example:\n * bitmap = 0b1110 → unset bit at index 0\n * ~bitmap = 0b...0001\n * bitmap + 1 = 0b1111\n * result = 0b0001 → bitmask for index 0\n *\n * We then convert the bitmask to binary and count how many bits it takes\n * to shift that 1 into place = its position.\n */\nfunction getFirstUnsetBit(bitmap: bigint): number {\n // Create a bitmask with a 1 only at the first 0-bit (LSB side)\n const mask = ~bitmap & (bitmap + 1n);\n\n // If all bits are set (mask is zero), there are no available nonces\n if (mask === 0n) return -1;\n\n // Convert mask to binary and count digits – the length is the index + 1\n // e.g. mask = 0b1000 → \"1000\" → length = 4 → index = 3\n return mask.toString(2).length - 1;\n}\n\n/////// MARK NONCE AS USED ///////\n\ntype SetNonceInput = {\n owner: Address;\n chainId: number;\n usedNonce: bigint;\n};\n\ntype UseMarkNonceAsUsedResult = {\n /**\n * Mark a nonce as \"used\" in the local cache after submitting a transaction or order\n * This prevents reuse of the same nonce while it's still pending on-chain.\n */\n markNonceAsUsed: (input: SetNonceInput) => void;\n};\n\n/**\n * Hook to manually bump the locally cached Permit2 nonce to avoid reuse\n *\n * Permit2 allows unordered nonces, but while a tx is pending, it's safer to use\n * a strictly increasing nonce to avoid accidental replays or reuse.\n *\n * clearing an unsued nonce is not necessary because nonces are unordered\n */\nexport function useMarkNonceAsUsed(): UseMarkNonceAsUsedResult {\n const queryClient = useQueryClient();\n\n const markNonceAsUsed: UseMarkNonceAsUsedResult[\"markNonceAsUsed\"] = ({\n owner,\n chainId,\n usedNonce,\n }) => {\n const queryKey: Permit2TransferFromQueryKey = [\n PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY,\n owner.toLowerCase() as Address,\n chainId,\n ];\n\n // Update cached nonce state if the used nonce was >= current one\n queryClient.setQueryData<NonceState>(queryKey, (oldNonceState) => {\n if (!oldNonceState) return oldNonceState; // should not happen unless cache was cleared\n\n // If we're already past this nonce, nothing to do\n if (oldNonceState.nonce > usedNonce) return oldNonceState;\n\n const newNonce = oldNonceState.nonce + 1n;\n const { word, bitPos } = splitNonce(newNonce);\n\n return {\n word,\n bitmap: 1n << bitPos, // ✅ convert bit index to actual 256-bit bitmap\n nonce: newNonce,\n };\n });\n };\n\n return {\n markNonceAsUsed,\n };\n}\n\n/**\n * Splits a Permit2 nonce into:\n * - `word`: which 256-bit bitmap page (nonce / 256)\n * - `bitPos`: position within that word (nonce % 256)\n */\nfunction splitNonce(nonce: bigint): { word: bigint; bitPos: bigint } {\n const word = nonce / 256n;\n const bitPos = nonce % 256n;\n return { word, bitPos };\n}\n"],"mappings":";;;;;;;;;AAmCA,IAAMkB,IAAwC;AAqC9C,SAAgBkB,EAA4B,EAC1ChB,UACAC,YACAE,cAAW,IACXC,aAAU,MAC2B;CACrC,IAAMa,IAAcpC,GAAgB,EAC9BqC,IAAShC,GAAW,EACpBiC,IAAS1B,EAAU,6BAA6B,EAEhD2B,IAAwC;EAC5CtB;EACAE;EACAC;EACD,EAEK,EACJoB,MAAMd,GACNC,cACAC,YACAC,cACAC,UACAE,eACEjC,EAKF;EACAwB,SAASA,KAAW,CAAC,EAAEJ,KAASC;EAEhCmB;EAEAE,SAAS,YAAY;GAGnBjC,AADAA,EAAOW,GAAO,oBAAoB,EAClCX,EAAOY,GAAS,sBAAsB;GAMtC,IAAMwB,IAAe,MAAMC,EAAgB;IACzC1B;IACAkB;IACAS,WANWV,EAAYO,aAAyBJ,EAMrCG,EAAM5B,QAAQQ;IAC1B,CAAC;GAEF,IAAI,CAACsB,GAEH,OADAN,EAAOS,KAAK,2BAA2B,EAChC;GAGT,IAAM,EAAEjC,SAAMC,cAAW6B,GAEnBI,IAASC,EAAiBlC,EAAO;GACvC,IAAIiC,MAAW,IAEb,OADAV,EAAOS,KAAK,2BAA2B,EAChC;GAGT,IAAMrB,IAAa;IACjBZ;IACAC;IACAC,OAAOF,IAAO,OAAOoC,OAAOF,EAAM;IACnC;GAKD,OAHAV,EAAOa,IAAI,cAAczB,EAAW,EAG7BA;;EAIT0B,sBAAsB;EACtBC,qBAAqB,CAAC,QAAQ,YAAW;EAC1C,CAAC;CAEF,OAAO;EACL3B,YAAAA;EACAD,YAAYC,MAAe,OAAO,OAAOA,GAAYV;EACrDW;EACAC;EACAC;EACAC;EACAE;EACD;;AAaH,eAAea,EAAgB,EAC7B1B,UACAkB,WACAS,gBACyE;CACzE,IAAIhC,IAAOgC,GACLS,IAAMnD;CAEZ,SAAa;EAEX,IAAMW,IAAS,MAAMR,EAAa8B,GAAQ;GACxCmB,SAAS9C;GACT+C,KAAKhD;GACLiD,cAAc;GACdC,MAAM,CAACxC,GAAOL,EAAI;GACnB,CAAC;EAGF,IAAIC,MAAWwC,GACb,OAAO;GAAEzC;GAAMC;GAAQ;EAMzB,IAHAD,KAAQ,IAGJA,IAAOgC,IAAY,OAErB,OADAnC,EAAU,2BAA2B,CAACoC,KAAK,8BAA8B,EAClE;;;AAoBb,SAASE,EAAiBlC,GAAwB;CAEhD,IAAM6C,IAAO,CAAC7C,IAAUA,IAAS;CAOjC,OAJI6C,MAAS,KAAW,KAIjBA,EAAKC,SAAS,EAAE,CAACC,SAAS;;AA2BnC,SAAgBM,IAA+C;CAC7D,IAAMhC,IAAcpC,GAAgB;CA+BpC,OAAO,EACLkE,kBA9BoE,EACpE/C,UACAC,YACA4C,mBACI;EACJ,IAAMzB,IAAwC;GAC5CtB;GACAE,EAAMkD,aAAa;GACnBjD;GACD;EAGDgB,EAAYkC,aAAyB/B,IAAWgC,MAAkB;GAIhE,IAHI,CAACA,KAGDA,EAAcvD,QAAQgD,GAAW,OAAOO;GAE5C,IAAMC,IAAWD,EAAcvD,QAAQ,IACjC,EAAEF,SAAMkC,cAAWyB,EAAWD,EAAS;GAE7C,OAAO;IACL1D;IACAC,QAAQ,MAAMiC;IACdhC,OAAOwD;IACR;IACD;IAKH;;AAQH,SAASC,EAAWzD,GAAiD;CAGnE,OAAO;EAAEF,MAFIE,IAAQ;EAENgC,QADAhC,IAAQ;EACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSignTokenPermit2TransferFrom.js","names":["useAccount","isAddress","parseSignature","serializeCompactSignature","signatureToCompactSignature","Address","Hash","Hex","useSignPermit","Permit2Input","Token","assert","encodePermit2TransferFromMethodArgs","usePermit2Allowance","useMarkNonceAsUsed","usePermit2TransferFromNonce","produceSignatureDeadline","useWalletSupportsPermit","UseSignTokenPermit2TransferFromParams","onSuccess","signature","onError","error","Error","token","Pick","value","spender","enabled","QueryMutState","isPending","isError","isSuccess","SignedPermit2Result","permit2TransferFromEncodedArgs","signedPermitData","variant","owner","SignPermit2TransferFromInput","deadline","UseSignTokenPermit2TransferFromResult","signPermit2","params","signPermit2Async","Promise","encodePermitArgs","isPermitSupported","isPermitReadyToSign","permitFetchingState","permitSigningState","reset","useSignTokenPermit2TransferFrom","t0","$","_c","t1","undefined","permit2","isPermit2Supported","queriesEnabled","t2","amount","permit2AllowanceQueryResult","address","t3","network","t4","chainId","nonceQueryResult","t5","isLoading","t6","t7","t8","t9","canUsePermit2","enoughAllowanceForPermit2","nonceToUse","t10","signMut","t11","nonce","t12","_spender","_value","permit2Input","type","expiration","const","producePermitInput","t13","params_0","_input","input","signPermitAsync","compactSignature","encodedArgs","t14","params_1","input_0","signPermit","paramsNotAvailable","t15","params_2","_spender_0","_value_0","input_1","t16","UseMarkPermit2NonceAsUsedResult","markNonceAsUsed","useMarkPermit2NonceAsUsed","nonceUsedMarker","usedNonce"],"sources":["../../../../../src/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport {\n isAddress,\n parseSignature,\n serializeCompactSignature,\n signatureToCompactSignature,\n type Address,\n type Hash,\n type Hex,\n} from \"viem\";\nimport { useSignPermit } from \"../common/useSignPermit\";\nimport type { Permit2Input } from \"../../utils/construct\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { encodePermit2TransferFromMethodArgs } from \"../../utils/encodeArgs\";\nimport { usePermit2Allowance } from \"./usePermit2Allowance\";\nimport {\n useMarkNonceAsUsed,\n usePermit2TransferFromNonce,\n} from \"./usePermit2TransferFromNonce\";\nimport { produceSignatureDeadline } from \"../../utils/deadlines\";\nimport { useWalletSupportsPermit } from \"../common/useWalletSupportsPermit\";\n\ntype UseSignTokenPermit2TransferFromParams = {\n onSuccess?: (signature: Hex) => void;\n onError?: (error: Error) => void;\n token?: Pick<Token, \"address\" | \"network\">;\n value?: bigint;\n spender?: Address;\n enabled?: boolean;\n};\n\ntype QueryMutState = {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type SignedPermit2Result = {\n signature: Hash;\n permit2TransferFromEncodedArgs: Hash;\n signedPermitData: Permit2Input & {\n variant: \"transferFrom\";\n owner: Address;\n };\n};\n\nexport type SignPermit2TransferFromInput = {\n // sometimes we need specific deadline that is available only outside the hook\n deadline?: bigint;\n // e.g. on delta the order.deadline must exactly match permit2.deadline\n} & Pick<UseSignTokenPermit2TransferFromParams, \"value\" | \"spender\">;\n\nexport type UseSignTokenPermit2TransferFromResult = {\n signPermit2: (params?: SignPermit2TransferFromInput) => void;\n signPermit2Async: (\n params?: SignPermit2TransferFromInput\n ) => Promise<SignedPermit2Result>;\n encodePermitArgs: (params?: SignPermit2TransferFromInput) => Hash | undefined;\n isPermitSupported: boolean;\n isPermitReadyToSign: boolean;\n permitFetchingState: QueryMutState;\n permitSigningState: QueryMutState;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n reset: () => void;\n signature?: Hash;\n};\n\nexport function useSignTokenPermit2TransferFrom({\n onSuccess,\n onError,\n token,\n value,\n spender,\n enabled = true,\n}: UseSignTokenPermit2TransferFromParams): UseSignTokenPermit2TransferFromResult {\n const { permit2: isPermit2Supported } = useWalletSupportsPermit();\n\n const queriesEnabled = enabled && isPermit2Supported;\n\n const permit2AllowanceQueryResult = usePermit2Allowance({\n token,\n amount: value,\n enabled: queriesEnabled,\n });\n\n const { address: owner } = useAccount();\n\n const nonceQueryResult = usePermit2TransferFromNonce({\n owner,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const permitFetchingState = {\n isPending:\n permit2AllowanceQueryResult.isLoading || nonceQueryResult.isLoading,\n isError: permit2AllowanceQueryResult.isError || nonceQueryResult.isError,\n isSuccess:\n permit2AllowanceQueryResult.isSuccess || nonceQueryResult.isSuccess,\n error: permit2AllowanceQueryResult.error || nonceQueryResult.error,\n };\n\n const isPermitSupported =\n permit2AllowanceQueryResult.canUsePermit2 &&\n permit2AllowanceQueryResult.enoughAllowanceForPermit2 &&\n isPermit2Supported;\n const isPermitReadyToSign =\n isPermitSupported &&\n !!owner &&\n typeof nonceQueryResult.nonceToUse === \"bigint\";\n\n const signMut = useSignPermit({\n onSuccess,\n onError,\n });\n\n const permitSigningState = {\n isPending: signMut.isPending,\n isError: signMut.isError,\n isSuccess: signMut.isSuccess,\n error: signMut.error,\n };\n\n const isPending =\n permitFetchingState.isPending || permitSigningState.isPending;\n const isError = permitFetchingState.isError || permitSigningState.isError;\n const isSuccess =\n permitFetchingState.isSuccess || permitSigningState.isSuccess;\n const error = permitFetchingState.error || permitSigningState.error;\n\n const nonce = nonceQueryResult.nonceToUse;\n\n const producePermitInput = (params?: SignPermit2TransferFromInput) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n const deadline = params?.deadline || produceSignatureDeadline();\n\n assert(owner, \"Account not connected\");\n assert(typeof nonce === \"bigint\", \"Nonce not available\");\n assert(_spender, \"Spender not available\");\n assert(_value, \"Value not available or 0\");\n assert(token?.address && isAddress(token.address), \"Token not available\");\n\n const permit2Input = {\n type: \"permit2\",\n variant: \"transferFrom\",\n token: token.address,\n spender: _spender,\n nonce,\n amount: _value,\n expiration: deadline,\n chainId: token.network,\n } as const satisfies Permit2Input;\n return permit2Input;\n };\n\n const signPermit2Async: UseSignTokenPermit2TransferFromResult[\"signPermit2Async\"] =\n async (params) => {\n assert(owner, \"Account not connected\");\n const _input = producePermitInput(params);\n const input = {\n ..._input,\n owner,\n };\n const signature = await signMut.signPermitAsync(input);\n\n // contract requires Compact Signature\n const compactSignature = serializeCompactSignature(\n // this is unusable with Multisig Smart Wallets, because signature is non-standard length and it can'be parsed\n signatureToCompactSignature(parseSignature(signature))\n );\n\n const encodedArgs = encodePermit2TransferFromMethodArgs({\n ...input,\n signature: compactSignature,\n });\n\n return {\n signature: compactSignature,\n permit2TransferFromEncodedArgs: encodedArgs,\n signedPermitData: input,\n };\n };\n\n const signPermit2: UseSignTokenPermit2TransferFromResult[\"signPermit2\"] = (\n params\n ) => {\n const input = producePermitInput(params);\n signMut.signPermit(input);\n };\n\n const paramsNotAvailable = typeof nonce !== \"bigint\" || !owner;\n\n const encodePermitArgs: UseSignTokenPermit2TransferFromResult[\"encodePermitArgs\"] =\n (params) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n if (!signMut.signature || paramsNotAvailable || !_spender || !_value) {\n return;\n }\n const input = producePermitInput({\n spender: _spender,\n value: _value,\n });\n\n return encodePermit2TransferFromMethodArgs({\n ...input,\n signature: signMut.signature,\n owner,\n });\n };\n\n return {\n signPermit2,\n signPermit2Async,\n encodePermitArgs,\n isPermitSupported,\n isPermitReadyToSign,\n permitFetchingState,\n permitSigningState,\n isPending,\n isSuccess,\n isError,\n error,\n reset: signMut.reset,\n signature: signMut.signature,\n };\n}\n\ntype UseMarkPermit2NonceAsUsedResult = {\n markNonceAsUsed: (\n signedPermitData: Permit2Input & { owner: Address }\n ) => void;\n};\n\nexport function useMarkPermit2NonceAsUsed(): UseMarkPermit2NonceAsUsedResult {\n const nonceUsedMarker = useMarkNonceAsUsed();\n\n const markNonceAsUsed: UseMarkPermit2NonceAsUsedResult[\"markNonceAsUsed\"] = ({\n owner,\n chainId,\n nonce,\n }) => {\n nonceUsedMarker.markNonceAsUsed({\n owner,\n chainId,\n usedNonce: nonce,\n });\n };\n\n return {\n markNonceAsUsed,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useSignTokenPermit2TransferFrom.js","names":["useAccount","isAddress","parseSignature","serializeCompactSignature","signatureToCompactSignature","Address","Hash","Hex","useSignPermit","Permit2Input","Token","assert","encodePermit2TransferFromMethodArgs","usePermit2Allowance","useMarkNonceAsUsed","usePermit2TransferFromNonce","produceSignatureDeadline","useWalletSupportsPermit","UseSignTokenPermit2TransferFromParams","onSuccess","signature","onError","error","Error","token","Pick","value","spender","enabled","QueryMutState","isPending","isError","isSuccess","SignedPermit2Result","permit2TransferFromEncodedArgs","signedPermitData","variant","owner","SignPermit2TransferFromInput","deadline","UseSignTokenPermit2TransferFromResult","signPermit2","params","signPermit2Async","Promise","encodePermitArgs","isPermitSupported","isPermitReadyToSign","permitFetchingState","permitSigningState","reset","useSignTokenPermit2TransferFrom","t0","$","_c","t1","undefined","permit2","isPermit2Supported","queriesEnabled","t2","amount","permit2AllowanceQueryResult","address","t3","network","t4","chainId","nonceQueryResult","t5","isLoading","t6","t7","t8","t9","canUsePermit2","enoughAllowanceForPermit2","nonceToUse","t10","signMut","t11","nonce","t12","_spender","_value","permit2Input","type","expiration","const","producePermitInput","t13","params_0","_input","input","signPermitAsync","compactSignature","encodedArgs","t14","params_1","input_0","signPermit","paramsNotAvailable","t15","params_2","_spender_0","_value_0","input_1","t16","UseMarkPermit2NonceAsUsedResult","markNonceAsUsed","useMarkPermit2NonceAsUsed","nonceUsedMarker","usedNonce"],"sources":["../../../../../src/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport {\n isAddress,\n parseSignature,\n serializeCompactSignature,\n signatureToCompactSignature,\n type Address,\n type Hash,\n type Hex,\n} from \"viem\";\nimport { useSignPermit } from \"../common/useSignPermit\";\nimport type { Permit2Input } from \"../../utils/construct\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { encodePermit2TransferFromMethodArgs } from \"../../utils/encodeArgs\";\nimport { usePermit2Allowance } from \"./usePermit2Allowance\";\nimport {\n useMarkNonceAsUsed,\n usePermit2TransferFromNonce,\n} from \"./usePermit2TransferFromNonce\";\nimport { produceSignatureDeadline } from \"../../utils/deadlines\";\nimport { useWalletSupportsPermit } from \"../common/useWalletSupportsPermit\";\n\ntype UseSignTokenPermit2TransferFromParams = {\n onSuccess?: (signature: Hex) => void;\n onError?: (error: Error) => void;\n token?: Pick<Token, \"address\" | \"network\">;\n value?: bigint;\n spender?: Address;\n enabled?: boolean;\n};\n\ntype QueryMutState = {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type SignedPermit2Result = {\n signature: Hash;\n permit2TransferFromEncodedArgs: Hash;\n signedPermitData: Permit2Input & {\n variant: \"transferFrom\";\n owner: Address;\n };\n};\n\nexport type SignPermit2TransferFromInput = {\n // sometimes we need specific deadline that is available only outside the hook\n deadline?: bigint;\n // e.g. on delta the order.deadline must exactly match permit2.deadline\n} & Pick<UseSignTokenPermit2TransferFromParams, \"value\" | \"spender\">;\n\nexport type UseSignTokenPermit2TransferFromResult = {\n signPermit2: (params?: SignPermit2TransferFromInput) => void;\n signPermit2Async: (\n params?: SignPermit2TransferFromInput\n ) => Promise<SignedPermit2Result>;\n encodePermitArgs: (params?: SignPermit2TransferFromInput) => Hash | undefined;\n isPermitSupported: boolean;\n isPermitReadyToSign: boolean;\n permitFetchingState: QueryMutState;\n permitSigningState: QueryMutState;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n reset: () => void;\n signature?: Hash;\n};\n\nexport function useSignTokenPermit2TransferFrom({\n onSuccess,\n onError,\n token,\n value,\n spender,\n enabled = true,\n}: UseSignTokenPermit2TransferFromParams): UseSignTokenPermit2TransferFromResult {\n const { permit2: isPermit2Supported } = useWalletSupportsPermit();\n\n const queriesEnabled = enabled && isPermit2Supported;\n\n const permit2AllowanceQueryResult = usePermit2Allowance({\n token,\n amount: value,\n enabled: queriesEnabled,\n });\n\n const { address: owner } = useAccount();\n\n const nonceQueryResult = usePermit2TransferFromNonce({\n owner,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const permitFetchingState = {\n isPending:\n permit2AllowanceQueryResult.isLoading || nonceQueryResult.isLoading,\n isError: permit2AllowanceQueryResult.isError || nonceQueryResult.isError,\n isSuccess:\n permit2AllowanceQueryResult.isSuccess || nonceQueryResult.isSuccess,\n error: permit2AllowanceQueryResult.error || nonceQueryResult.error,\n };\n\n const isPermitSupported =\n permit2AllowanceQueryResult.canUsePermit2 &&\n permit2AllowanceQueryResult.enoughAllowanceForPermit2 &&\n isPermit2Supported;\n const isPermitReadyToSign =\n isPermitSupported &&\n !!owner &&\n typeof nonceQueryResult.nonceToUse === \"bigint\";\n\n const signMut = useSignPermit({\n onSuccess,\n onError,\n });\n\n const permitSigningState = {\n isPending: signMut.isPending,\n isError: signMut.isError,\n isSuccess: signMut.isSuccess,\n error: signMut.error,\n };\n\n const isPending =\n permitFetchingState.isPending || permitSigningState.isPending;\n const isError = permitFetchingState.isError || permitSigningState.isError;\n const isSuccess =\n permitFetchingState.isSuccess || permitSigningState.isSuccess;\n const error = permitFetchingState.error || permitSigningState.error;\n\n const nonce = nonceQueryResult.nonceToUse;\n\n const producePermitInput = (params?: SignPermit2TransferFromInput) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n const deadline = params?.deadline || produceSignatureDeadline();\n\n assert(owner, \"Account not connected\");\n assert(typeof nonce === \"bigint\", \"Nonce not available\");\n assert(_spender, \"Spender not available\");\n assert(_value, \"Value not available or 0\");\n assert(token?.address && isAddress(token.address), \"Token not available\");\n\n const permit2Input = {\n type: \"permit2\",\n variant: \"transferFrom\",\n token: token.address,\n spender: _spender,\n nonce,\n amount: _value,\n expiration: deadline,\n chainId: token.network,\n } as const satisfies Permit2Input;\n return permit2Input;\n };\n\n const signPermit2Async: UseSignTokenPermit2TransferFromResult[\"signPermit2Async\"] =\n async (params) => {\n assert(owner, \"Account not connected\");\n const _input = producePermitInput(params);\n const input = {\n ..._input,\n owner,\n };\n const signature = await signMut.signPermitAsync(input);\n\n // contract requires Compact Signature\n const compactSignature = serializeCompactSignature(\n // this is unusable with Multisig Smart Wallets, because signature is non-standard length and it can'be parsed\n signatureToCompactSignature(parseSignature(signature))\n );\n\n const encodedArgs = encodePermit2TransferFromMethodArgs({\n ...input,\n signature: compactSignature,\n });\n\n return {\n signature: compactSignature,\n permit2TransferFromEncodedArgs: encodedArgs,\n signedPermitData: input,\n };\n };\n\n const signPermit2: UseSignTokenPermit2TransferFromResult[\"signPermit2\"] = (\n params\n ) => {\n const input = producePermitInput(params);\n signMut.signPermit(input);\n };\n\n const paramsNotAvailable = typeof nonce !== \"bigint\" || !owner;\n\n const encodePermitArgs: UseSignTokenPermit2TransferFromResult[\"encodePermitArgs\"] =\n (params) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n if (!signMut.signature || paramsNotAvailable || !_spender || !_value) {\n return;\n }\n const input = producePermitInput({\n spender: _spender,\n value: _value,\n });\n\n return encodePermit2TransferFromMethodArgs({\n ...input,\n signature: signMut.signature,\n owner,\n });\n };\n\n return {\n signPermit2,\n signPermit2Async,\n encodePermitArgs,\n isPermitSupported,\n isPermitReadyToSign,\n permitFetchingState,\n permitSigningState,\n isPending,\n isSuccess,\n isError,\n error,\n reset: signMut.reset,\n signature: signMut.signature,\n };\n}\n\ntype UseMarkPermit2NonceAsUsedResult = {\n markNonceAsUsed: (\n signedPermitData: Permit2Input & { owner: Address }\n ) => void;\n};\n\nexport function useMarkPermit2NonceAsUsed(): UseMarkPermit2NonceAsUsedResult {\n const nonceUsedMarker = useMarkNonceAsUsed();\n\n const markNonceAsUsed: UseMarkPermit2NonceAsUsedResult[\"markNonceAsUsed\"] = ({\n owner,\n chainId,\n nonce,\n }) => {\n nonceUsedMarker.markNonceAsUsed({\n owner,\n chainId,\n usedNonce: nonce,\n });\n };\n\n return {\n markNonceAsUsed,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenFromPermit2Allowance.js","names":["useSwapTokenFrom","usePermit2AllowanceQuery","useTokenFromPermit2AllowanceQuery","$","_c","tokenFrom","t0","token"],"sources":["../../../../../src/hooks/permit/hooks/permit2/useTokenFromPermit2Allowance.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport { usePermit2AllowanceQuery } from \"./usePermit2Allowance\";\n\nexport function useTokenFromPermit2AllowanceQuery() {\n const tokenFrom = useSwapTokenFrom();\n return usePermit2AllowanceQuery({\n token: tokenFrom,\n });\n}\n"],"mappings":";;;;AAGA,SAAOE,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAkBL,GAAkB,EAACM;AAGpC,QAHoCH,EAAA,OAAAE,IAGpCC,IAAAH,EAAA,MAF+BG,IAAA,EAAAC,OACvBF,GACR,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAFML,EAAyBK,EAE9B"}
1
+ {"version":3,"file":"useTokenFromPermit2Allowance.js","names":["useSwapTokenFrom","usePermit2AllowanceQuery","useTokenFromPermit2AllowanceQuery","$","_c","tokenFrom","t0","token"],"sources":["../../../../../src/hooks/permit/hooks/permit2/useTokenFromPermit2Allowance.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport { usePermit2AllowanceQuery } from \"./usePermit2Allowance\";\n\nexport function useTokenFromPermit2AllowanceQuery() {\n const tokenFrom = useSwapTokenFrom();\n return usePermit2AllowanceQuery({\n token: tokenFrom,\n });\n}\n"],"mappings":";;;;AAGA,SAAOE,IAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EACLC,IAAkBL,GAAkB,EAACM;CAGpC,OAHoCH,EAAA,OAAAE,IAGpCC,IAAAH,EAAA,MAF+BG,IAAA,EAAAC,OACvBF,GACR,EAAAF,EAAA,KAAAE,GAAAF,EAAA,KAAAG,IAFML,EAAyBK,EAE9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenFromPermit2TransferFromNonce.js","names":["useSwapTokenFrom","Token","useAccount","usePermit2TransferFromNonce","UsePermit2TransferFromNonceResult","UseTokenFromPermitInfoParameters","enabled","useTokenFromPermit2TransferFromNonce","t0","$","_c","t1","undefined","t2","tokenFrom","address","owner","t3","network","chainId","queryResult","t4","token"],"sources":["../../../../../src/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useAccount } from \"wagmi\";\nimport {\n usePermit2TransferFromNonce,\n type UsePermit2TransferFromNonceResult,\n} from \"./usePermit2TransferFromNonce\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermit2TransferFromNonce({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UsePermit2TransferFromNonceResult & {\n token: Token;\n} {\n const tokenFrom = useSwapTokenFrom();\n const { address: owner } = useAccount();\n const queryResult = usePermit2TransferFromNonce({\n owner,\n // Permit2 TransferFromnonce is not token-specific,\n // but we will use it for signing for Token from\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"mappings":";;;;;AAYA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;AAAA,CAAAF,EAAA,OAAAD,IAEiCG,IAAAF,EAAA,MAFaE,IAAAH,MAAAI,KAAAA,IAAA,EAEb,GAFaJ,GAEbC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAFa,IAAA,EAAAL,SAAAO,MAAAF,GACnDL,IAAAO,MAAAD,KAAAA,IAAA,KAAAC,GAIAC,IAAkBd,GAAkB,EACpC,EAAAe,SAAAC,MAA2Bd,GAAY,EAACe;AAAA,CAAAR,EAAA,OAAAH,KAAAG,EAAA,OAAAO,KAAAP,EAAA,OAAAK,EAAAI,WACQD,IAAA;EAAAD;EAAAG,SAIrCL,EAASI;EAAQZ;EAE3B,EAAAG,EAAA,KAAAH,GAAAG,EAAA,KAAAO,GAAAP,EAAA,KAAAK,EAAAI,SAAAT,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAND,IAAAW,IAAoBjB,EAA4Bc,EAM9C,EAACI;AAKF,QALEZ,EAAA,OAAAW,KAAAX,EAAA,OAAAK,KAEIO,IAAA;EAAA,GACFD;EAAWE,OACPR;EACR,EAAAL,EAAA,KAAAW,GAAAX,EAAA,KAAAK,GAAAL,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAHMY"}
1
+ {"version":3,"file":"useTokenFromPermit2TransferFromNonce.js","names":["useSwapTokenFrom","Token","useAccount","usePermit2TransferFromNonce","UsePermit2TransferFromNonceResult","UseTokenFromPermitInfoParameters","enabled","useTokenFromPermit2TransferFromNonce","t0","$","_c","t1","undefined","t2","tokenFrom","address","owner","t3","network","chainId","queryResult","t4","token"],"sources":["../../../../../src/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.ts"],"sourcesContent":["import { useSwapTokenFrom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useAccount } from \"wagmi\";\nimport {\n usePermit2TransferFromNonce,\n type UsePermit2TransferFromNonceResult,\n} from \"./usePermit2TransferFromNonce\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermit2TransferFromNonce({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UsePermit2TransferFromNonceResult & {\n token: Token;\n} {\n const tokenFrom = useSwapTokenFrom();\n const { address: owner } = useAccount();\n const queryResult = usePermit2TransferFromNonce({\n owner,\n // Permit2 TransferFromnonce is not token-specific,\n // but we will use it for signing for Token from\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"mappings":";;;;;AAYA,SAAOO,EAAAC,GAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,EAAAC;CAAA,AAAAF,EAAA,OAAAD,IAEiCG,IAAAF,EAAA,MAFaE,IAAAH,MAAAI,KAAAA,IAAA,EAEb,GAFaJ,GAEbC,EAAA,KAAAD,GAAAC,EAAA,KAAAE;CAFa,IAAA,EAAAL,SAAAO,MAAAF,GACnDL,IAAAO,MAAAD,KAAAA,IAAA,KAAAC,GAIAC,IAAkBd,GAAkB,EACpC,EAAAe,SAAAC,MAA2Bd,GAAY,EAACe;CAAA,AAAAR,EAAA,OAAAH,KAAAG,EAAA,OAAAO,KAAAP,EAAA,OAAAK,EAAAI,WACQD,IAAA;EAAAD;EAAAG,SAIrCL,EAASI;EAAQZ;EAE3B,EAAAG,EAAA,KAAAH,GAAAG,EAAA,KAAAO,GAAAP,EAAA,KAAAK,EAAAI,SAAAT,EAAA,KAAAQ,KAAAA,IAAAR,EAAA;CAND,IAAAW,IAAoBjB,EAA4Bc,EAM9C,EAACI;CAKF,OALEZ,EAAA,OAAAW,KAAAX,EAAA,OAAAK,KAEIO,IAAA;EAAA,GACFD;EAAWE,OACPR;EACR,EAAAL,EAAA,KAAAW,GAAAX,EAAA,KAAAK,GAAAL,EAAA,KAAAY,KAAAA,IAAAZ,EAAA,IAHMY"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["Address","EIP_2612_PERMIT_SELECTOR","DAI_PERMIT_SELECTOR","EIP712_DOMAIN_TYPEHASH_WITHOUT_VERSION","DOMAIN_HASHES_WITHOUT_VERSION","DOMAIN_HASH_WITH_SALT_AND_WITHOUT_CHAIN_ID","DAI_LIKE_PERMIT_TYPEHASH","EIP2612_PERMIT_TYPEHASH","TOKEN_ADDRESSES_WITH_SALT","const","ERC_20_NONCES_ABI","constant","inputs","name","type","outputs","payable","stateMutability","DOMAIN_TYPEHASH_ABI","internalType","PERMIT_TYPEHASH_ABI","VERSIONS_ABI","EIP712_DOMAIN_ABI","DOMAIN_ABIS","versionAndChain","versionAndSalt","withoutVersion"],"sources":["../../../../src/hooks/permit/utils/constants.ts"],"sourcesContent":["import type { Address } from \"viem\";\n\nexport const EIP_2612_PERMIT_SELECTOR = \"0xd505accf\";\nexport const DAI_PERMIT_SELECTOR = \"0x8fcbaf0c\";\n\nexport const EIP712_DOMAIN_TYPEHASH_WITHOUT_VERSION =\n \"0x8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866\";\n\nexport const DOMAIN_HASHES_WITHOUT_VERSION: Address[] = [\n /** @signature 'EIP712Domain(string name,uint chainId,address verifyingContract)' */\n \"0x797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f35\",\n /** @signature 'EIP712Domain(string name,uint256 chainId,address verifyingContract)' */\n EIP712_DOMAIN_TYPEHASH_WITHOUT_VERSION, // Uniswap's UNI\n];\n\n/**\n * @signature EIP712Domain(string name,string version,address verifyingContract,bytes32 salt)\n * */\nexport const DOMAIN_HASH_WITH_SALT_AND_WITHOUT_CHAIN_ID = // USDC.e uses this\n \"0x36c25de3e541d5d970f66e4210d728721220fff5c077cc6cd008b3a0c62adab7\";\n\n/**\n * @signature Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)\n * */\nexport const DAI_LIKE_PERMIT_TYPEHASH =\n \"0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb\";\n\n/**\n * @signature Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\n * */\nexport const EIP2612_PERMIT_TYPEHASH =\n \"0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9\";\n\n/**\n * @example `${tokenAddress}:${chainId}.toLowerCase()`\n * @warning Only toLowerCase string\n * */\nexport const TOKEN_ADDRESSES_WITH_SALT = [\n // this is our USDC.e that gives us so much trouble\n \"0x2791bca1f2de4661ed88a30c99a7a9449aa84174:137\", // USDC Proxy Polygon\n \"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063:137\", // DAI Proxy Polygon\n] as const;\n\nexport const ERC_20_NONCES_ABI = [\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"nonces\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"_nonces\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"nonce\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"getNonce\", // dai polygon\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const DOMAIN_TYPEHASH_ABI = [\n {\n constant: true,\n inputs: [],\n name: \"DOMAIN_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const PERMIT_TYPEHASH_ABI = [\n {\n constant: true,\n inputs: [],\n name: \"PERMIT_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const VERSIONS_ABI = [\n {\n constant: true,\n inputs: [],\n name: \"version\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"ERC712_VERSION\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"EIP712_VERSION\", // in USDC.e\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const EIP712_DOMAIN_ABI = [\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"bytes1\",\n name: \"fields\",\n },\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"string\",\n name: \"version\",\n },\n {\n type: \"uint256\",\n name: \"chainId\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n {\n type: \"bytes32\",\n name: \"salt\",\n },\n {\n type: \"uint256[]\",\n name: \"extensions\",\n },\n ],\n },\n] as const;\n\nexport const DOMAIN_ABIS = {\n versionAndChain: [\n // Lido stETH on mainnet\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"string\",\n name: \"version\",\n },\n {\n type: \"uint256\",\n name: \"chainId\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n ],\n },\n ],\n versionAndSalt: [\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"string\",\n name: \"version\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n {\n type: \"bytes32\",\n name: \"salt\",\n },\n ],\n },\n ],\n withoutVersion: [\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"uint256\",\n name: \"chainId\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n ],\n },\n ],\n} as const;\n"],"mappings":"AAQA,IAAaI,IAA2C,CAEtD,sEAJA,qEAOD,EAWYE,IACX,sEAKWC,IACX,sEAYWG,IAAoB;CAC/B;EACEC,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACF,EAEYI,IAAsB,CACjC;CACEP,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNE,SAAS,CACP;EACEI,cAAc;EACdN,MAAM;EACNC,MAAM;EACP,CACF;CACDE,SAAS;CACTC,iBAAiB;CACjBH,MAAM;CACP,CACF,EAEYM,IAAsB,CACjC;CACET,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNE,SAAS,CACP;EACEI,cAAc;EACdN,MAAM;EACNC,MAAM;EACP,CACF;CACDE,SAAS;CACTC,iBAAiB;CACjBH,MAAM;CACP,CACF,EAEYO,IAAe;CAC1B;EACEV,UAAU;EACVC,QAAQ,EAAE;EACVC,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,EAAE;EACVC,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,EAAE;EACVC,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACF,EAEYQ,IAAoB,CAC/B;CACET,MAAM;CACNC,MAAM;CACNG,iBAAiB;CACjBL,QAAQ,EAAE;CACVG,SAAS;EACP;GACED,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EAAA;CAEJ,CACF,EAEYU,IAAc;CACzBC,iBAAiB,CAEf;EACEX,MAAM;EACNC,MAAM;EACNG,iBAAiB;EACjBL,QAAQ,EAAE;EACVG,SAAS;GACP;IACED,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GAAA;EAEJ,CACF;CACDY,gBAAgB,CACd;EACEZ,MAAM;EACNC,MAAM;EACNG,iBAAiB;EACjBL,QAAQ,EAAE;EACVG,SAAS;GACP;IACED,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GAAA;EAEJ,CACF;CACDa,gBAAgB,CACd;EACEb,MAAM;EACNC,MAAM;EACNG,iBAAiB;EACjBL,QAAQ,EAAE;EACVG,SAAS;GACP;IACED,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GAAA;EAEJ,CAAA;CAEJ"}
1
+ {"version":3,"file":"constants.js","names":["Address","EIP_2612_PERMIT_SELECTOR","DAI_PERMIT_SELECTOR","EIP712_DOMAIN_TYPEHASH_WITHOUT_VERSION","DOMAIN_HASHES_WITHOUT_VERSION","DOMAIN_HASH_WITH_SALT_AND_WITHOUT_CHAIN_ID","DAI_LIKE_PERMIT_TYPEHASH","EIP2612_PERMIT_TYPEHASH","TOKEN_ADDRESSES_WITH_SALT","const","ERC_20_NONCES_ABI","constant","inputs","name","type","outputs","payable","stateMutability","DOMAIN_TYPEHASH_ABI","internalType","PERMIT_TYPEHASH_ABI","VERSIONS_ABI","EIP712_DOMAIN_ABI","DOMAIN_ABIS","versionAndChain","versionAndSalt","withoutVersion"],"sources":["../../../../src/hooks/permit/utils/constants.ts"],"sourcesContent":["import type { Address } from \"viem\";\n\nexport const EIP_2612_PERMIT_SELECTOR = \"0xd505accf\";\nexport const DAI_PERMIT_SELECTOR = \"0x8fcbaf0c\";\n\nexport const EIP712_DOMAIN_TYPEHASH_WITHOUT_VERSION =\n \"0x8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866\";\n\nexport const DOMAIN_HASHES_WITHOUT_VERSION: Address[] = [\n /** @signature 'EIP712Domain(string name,uint chainId,address verifyingContract)' */\n \"0x797cfab58fcb15f590eb8e4252d5c228ff88f94f907e119e80c4393a946e8f35\",\n /** @signature 'EIP712Domain(string name,uint256 chainId,address verifyingContract)' */\n EIP712_DOMAIN_TYPEHASH_WITHOUT_VERSION, // Uniswap's UNI\n];\n\n/**\n * @signature EIP712Domain(string name,string version,address verifyingContract,bytes32 salt)\n * */\nexport const DOMAIN_HASH_WITH_SALT_AND_WITHOUT_CHAIN_ID = // USDC.e uses this\n \"0x36c25de3e541d5d970f66e4210d728721220fff5c077cc6cd008b3a0c62adab7\";\n\n/**\n * @signature Permit(address holder,address spender,uint256 nonce,uint256 expiry,bool allowed)\n * */\nexport const DAI_LIKE_PERMIT_TYPEHASH =\n \"0xea2aa0a1be11a07ed86d755c93467f4f82362b452371d1ba94d1715123511acb\";\n\n/**\n * @signature Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\n * */\nexport const EIP2612_PERMIT_TYPEHASH =\n \"0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9\";\n\n/**\n * @example `${tokenAddress}:${chainId}.toLowerCase()`\n * @warning Only toLowerCase string\n * */\nexport const TOKEN_ADDRESSES_WITH_SALT = [\n // this is our USDC.e that gives us so much trouble\n \"0x2791bca1f2de4661ed88a30c99a7a9449aa84174:137\", // USDC Proxy Polygon\n \"0x8f3cf7ad23cd3cadbd9735aff958023239c6a063:137\", // DAI Proxy Polygon\n] as const;\n\nexport const ERC_20_NONCES_ABI = [\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"nonces\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"_nonces\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"nonce\",\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [\n {\n name: \"\",\n type: \"address\",\n },\n ],\n name: \"getNonce\", // dai polygon\n outputs: [\n {\n name: \"\",\n type: \"uint256\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const DOMAIN_TYPEHASH_ABI = [\n {\n constant: true,\n inputs: [],\n name: \"DOMAIN_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const PERMIT_TYPEHASH_ABI = [\n {\n constant: true,\n inputs: [],\n name: \"PERMIT_TYPEHASH\",\n outputs: [\n {\n internalType: \"bytes32\",\n name: \"\",\n type: \"bytes32\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const VERSIONS_ABI = [\n {\n constant: true,\n inputs: [],\n name: \"version\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"ERC712_VERSION\",\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n {\n constant: true,\n inputs: [],\n name: \"EIP712_VERSION\", // in USDC.e\n outputs: [\n {\n name: \"\",\n type: \"string\",\n },\n ],\n payable: false,\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\nexport const EIP712_DOMAIN_ABI = [\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"bytes1\",\n name: \"fields\",\n },\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"string\",\n name: \"version\",\n },\n {\n type: \"uint256\",\n name: \"chainId\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n {\n type: \"bytes32\",\n name: \"salt\",\n },\n {\n type: \"uint256[]\",\n name: \"extensions\",\n },\n ],\n },\n] as const;\n\nexport const DOMAIN_ABIS = {\n versionAndChain: [\n // Lido stETH on mainnet\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"string\",\n name: \"version\",\n },\n {\n type: \"uint256\",\n name: \"chainId\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n ],\n },\n ],\n versionAndSalt: [\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"string\",\n name: \"version\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n {\n type: \"bytes32\",\n name: \"salt\",\n },\n ],\n },\n ],\n withoutVersion: [\n {\n name: \"eip712Domain\",\n type: \"function\",\n stateMutability: \"view\",\n inputs: [],\n outputs: [\n {\n type: \"string\",\n name: \"name\",\n },\n {\n type: \"uint256\",\n name: \"chainId\",\n },\n {\n type: \"address\",\n name: \"verifyingContract\",\n },\n ],\n },\n ],\n} as const;\n"],"mappings":"AAQA,IAAaI,IAA2C,CAEtD,sEAEAD,qEACD,EAWYG,IACX,sEAKWC,IACX,sEAYWG,IAAoB;CAC/B;EACEC,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,CACN;GACEC,MAAM;GACNC,MAAM;GACP,CACF;EACDD,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACF,EAEYI,IAAsB,CACjC;CACEP,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNE,SAAS,CACP;EACEI,cAAc;EACdN,MAAM;EACNC,MAAM;EACP,CACF;CACDE,SAAS;CACTC,iBAAiB;CACjBH,MAAM;CACP,CACF,EAEYM,IAAsB,CACjC;CACET,UAAU;CACVC,QAAQ,EAAE;CACVC,MAAM;CACNE,SAAS,CACP;EACEI,cAAc;EACdN,MAAM;EACNC,MAAM;EACP,CACF;CACDE,SAAS;CACTC,iBAAiB;CACjBH,MAAM;CACP,CACF,EAEYO,IAAe;CAC1B;EACEV,UAAU;EACVC,QAAQ,EAAE;EACVC,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,EAAE;EACVC,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACD;EACEH,UAAU;EACVC,QAAQ,EAAE;EACVC,MAAM;EACNE,SAAS,CACP;GACEF,MAAM;GACNC,MAAM;GACP,CACF;EACDE,SAAS;EACTC,iBAAiB;EACjBH,MAAM;EACP;CACF,EAEYQ,IAAoB,CAC/B;CACET,MAAM;CACNC,MAAM;CACNG,iBAAiB;CACjBL,QAAQ,EAAE;CACVG,SAAS;EACP;GACED,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EACD;GACEC,MAAM;GACND,MAAM;GACP;EAAA;CAEJ,CACF,EAEYU,IAAc;CACzBC,iBAAiB,CAEf;EACEX,MAAM;EACNC,MAAM;EACNG,iBAAiB;EACjBL,QAAQ,EAAE;EACVG,SAAS;GACP;IACED,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GAAA;EAEJ,CACF;CACDY,gBAAgB,CACd;EACEZ,MAAM;EACNC,MAAM;EACNG,iBAAiB;EACjBL,QAAQ,EAAE;EACVG,SAAS;GACP;IACED,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GAAA;EAEJ,CACF;CACDa,gBAAgB,CACd;EACEb,MAAM;EACNC,MAAM;EACNG,iBAAiB;EACjBL,QAAQ,EAAE;EACVG,SAAS;GACP;IACED,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GACD;IACEC,MAAM;IACND,MAAM;IACP;GAAA;EAEJ,CAAA;CAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"construct.js","names":["PermitSupportDAI","PermitSupportEIP2612","Address","Hex","PERMIT2_ADDRESS","const","PERMIT2_DOMAIN_NAME","PERMIT2_TOKEN_PERMISSIONS","name","type","PERMIT2_TRANSFER_FROM_TYPES","PermitTransferFrom","TokenPermissions","PERMIT2_PERMIT_DETAILS","PERMIT2_PERMIT_SINGLE_TYPES","PermitSingle","PermitDetails","Permit1Input","permitInfo","owner","spender","value","nonce","deadline","DaiPermitInput","holder","expiry","allowed","Permit2Input","variant","token","amount","expiration","chainId","PermitTypedDataInput","EIP712Type","EIP712Domain","version","verifyingContract","salt","Permit2TypedDataSingle","types","primaryType","domain","message","details","sigDeadline","Permit2TypedDataTransferFrom","permitted","Permit1PermitTypedData","Permit","DaiPermitTypedData","PermitTypedDataReturn","constructPermitTypedData","input","Error"],"sources":["../../../../src/hooks/permit/utils/construct.ts"],"sourcesContent":["import { type PermitSupportDAI, type PermitSupportEIP2612 } from \"./detect\";\nimport { type Address, type Hex } from \"viem\";\n\nexport const PERMIT2_ADDRESS =\n \"0x000000000022D473030F116dDEE9F6B43aC78BA3\" as const;\nconst PERMIT2_DOMAIN_NAME = \"Permit2\" as const;\n\nconst PERMIT2_TOKEN_PERMISSIONS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n] as const;\n\nconst PERMIT2_TRANSFER_FROM_TYPES = {\n PermitTransferFrom: [\n { name: \"permitted\", type: \"TokenPermissions\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n TokenPermissions: PERMIT2_TOKEN_PERMISSIONS,\n} as const;\n\nconst PERMIT2_PERMIT_DETAILS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint160\" },\n { name: \"expiration\", type: \"uint48\" },\n { name: \"nonce\", type: \"uint48\" },\n] as const;\n\nconst PERMIT2_PERMIT_SINGLE_TYPES = {\n PermitSingle: [\n { name: \"details\", type: \"PermitDetails\" },\n { name: \"spender\", type: \"address\" },\n { name: \"sigDeadline\", type: \"uint256\" },\n ],\n PermitDetails: PERMIT2_PERMIT_DETAILS,\n} as const;\n\nexport interface Permit1Input {\n type: \"permit1\";\n permitInfo: PermitSupportEIP2612;\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n}\n\nexport interface DaiPermitInput {\n type: \"dai\";\n permitInfo: PermitSupportDAI;\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n}\n\nexport interface Permit2Input {\n type: \"permit2\";\n variant: \"single\" | \"transferFrom\";\n token: Address;\n spender: Address;\n nonce: bigint;\n amount: bigint;\n expiration: bigint;\n chainId: number;\n}\n\nexport type PermitTypedDataInput = Permit1Input | DaiPermitInput | Permit2Input;\n\n// EIP-712 Type Definitions\ninterface EIP712Type {\n name: string;\n type: string;\n}\n\ninterface EIP712Domain {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex;\n}\n\n// Return type for Permit2\ninterface Permit2TypedDataSingle {\n types: typeof PERMIT2_PERMIT_SINGLE_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitSingle\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n details: {\n token: Address;\n amount: bigint;\n nonce: bigint;\n expiration: bigint;\n };\n spender: Address;\n sigDeadline: bigint;\n };\n}\ninterface Permit2TypedDataTransferFrom {\n types: typeof PERMIT2_TRANSFER_FROM_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitTransferFrom\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n permitted: {\n token: Address;\n amount: bigint;\n };\n spender: Address;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for Permit1 Permit\ninterface Permit1PermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for DAI Permit\ninterface DaiPermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n };\n}\n\n// Union type for all possible return types\nexport type PermitTypedDataReturn =\n | Permit2TypedDataSingle\n | Permit2TypedDataTransferFrom\n | Permit1PermitTypedData\n | DaiPermitTypedData;\n\nexport function constructPermitTypedData(\n input: PermitTypedDataInput\n): PermitTypedDataReturn {\n if (input.type === \"permit2\") {\n const { token, spender, nonce, amount, expiration, variant, chainId } =\n input;\n\n if (variant === \"single\") {\n return {\n types: {\n ...PERMIT2_PERMIT_SINGLE_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitSingle\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n details: { token, amount, nonce, expiration },\n spender,\n sigDeadline: expiration,\n },\n };\n }\n\n if (variant === \"transferFrom\") {\n return {\n types: {\n ...PERMIT2_TRANSFER_FROM_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitTransferFrom\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n permitted: {\n token,\n amount,\n },\n spender,\n nonce,\n deadline: expiration,\n },\n };\n }\n }\n\n if (input.type === \"permit1\") {\n const { owner, spender, value, nonce, deadline, permitInfo } = input;\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { owner, spender, value, nonce, deadline },\n };\n }\n\n if (input.type === \"dai\") {\n const { holder, spender, nonce, expiry, allowed, permitInfo } = input;\n\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"holder\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"expiry\", type: \"uint256\" },\n { name: \"allowed\", type: \"bool\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { holder, spender, nonce, expiry, allowed },\n };\n }\n\n throw new Error(`Unsupported permit input type`);\n}\n\n// Example usage:\n// constructPermitTypedData({ type: 'permit1', variant: 'transfer', permitInfo, to, value, nonce, deadline });\n"],"mappings":";;AAGA,IAAaI,IACX,8CACIE,IAAsB,WAOtBI,IAA8B;CAClCC,oBAAoB;EAClB;GAAEH,MAAM;GAAaC,MAAM;GAAoB;EAC/C;GAAED,MAAM;GAAWC,MAAM;GAAW;EACpC;GAAED,MAAM;GAASC,MAAM;GAAW;EAClC;GAAED,MAAM;GAAYC,MAAM;GAAW;EACtC;CACDG,kBAZgC,CAChC;EAAEJ,MAAM;EAASC,MAAM;EAAW,EAClC;EAAED,MAAM;EAAUC,MAAM;EAAW,CACpC;CAUA,EASKK,IAA8B;CAClCC,cAAc;EACZ;GAAEP,MAAM;GAAWC,MAAM;GAAiB;EAC1C;GAAED,MAAM;GAAWC,MAAM;GAAW;EACpC;GAAED,MAAM;GAAeC,MAAM;GAAW;EACzC;CACDO,eAb6B;EAC7B;GAAER,MAAM;GAASC,MAAM;GAAW;EAClC;GAAED,MAAM;GAAUC,MAAM;GAAW;EACnC;GAAED,MAAM;GAAcC,MAAM;GAAU;EACtC;GAAED,MAAM;GAASC,MAAM;GAAU;EAClC;CASA;AAqID,SAAgB4C,EACdC,GACuB;AACvB,KAAIA,EAAM7C,SAAS,WAAW;EAC5B,IAAM,EAAEqB,UAAOV,YAASE,UAAOS,WAAQC,eAAYH,YAASI,eAC1DqB;AAEF,MAAIzB,MAAY,SACd,QAAO;GACLY,OAAO,EACL,GAAG3B,GAMJ;GACD4B,aAAa;GACbC,QAAQ;IACNnC,MAAMF;IACN2B;IACAK,mBAAmBlC;IACpB;GACDwC,SAAS;IACPC,SAAS;KAAEf;KAAOC;KAAQT;KAAOU;KAAY;IAC7CZ;IACA0B,aAAad;IACf;GACD;AAGH,MAAIH,MAAY,eACd,QAAO;GACLY,OAAO,EACL,GAAG/B,GAMJ;GACDgC,aAAa;GACbC,QAAQ;IACNnC,MAAMF;IACN2B;IACAK,mBAAmBlC;IACpB;GACDwC,SAAS;IACPI,WAAW;KACTlB;KACAC;KACD;IACDX;IACAE;IACAC,UAAUS;IACZ;GACD;;AAIL,KAAIsB,EAAM7C,SAAS,WAAW;EAC5B,IAAM,EAAEU,UAAOC,YAASC,UAAOC,UAAOC,aAAUL,kBAAeoC;AAC/D,SAAO;GACLb,OAAO,EAOLS,QAAQ;IACN;KAAE1C,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAAWC,MAAM;KAAW;IACpC;KAAED,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAAYC,MAAM;KAAW;IAAA,EAExC;GACDiC,aAAa;GACbC,QAAQzB,EAAWyB;GACnBC,SAAS;IAAEzB;IAAOC;IAASC;IAAOC;IAAOC;IAAS;GACnD;;AAGH,KAAI+B,EAAM7C,SAAS,OAAO;EACxB,IAAM,EAAEgB,WAAQL,YAASE,UAAOI,WAAQC,YAAST,kBAAeoC;AAEhE,SAAO;GACLb,OAAO,EAOLS,QAAQ;IACN;KAAE1C,MAAM;KAAUC,MAAM;KAAW;IACnC;KAAED,MAAM;KAAWC,MAAM;KAAW;IACpC;KAAED,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAAUC,MAAM;KAAW;IACnC;KAAED,MAAM;KAAWC,MAAM;KAAQ;IAAA,EAEpC;GACDiC,aAAa;GACbC,QAAQzB,EAAWyB;GACnBC,SAAS;IAAEnB;IAAQL;IAASE;IAAOI;IAAQC;IAAQ;GACpD;;AAGH,OAAU4B,MAAM,gCAAgC"}
1
+ {"version":3,"file":"construct.js","names":["PermitSupportDAI","PermitSupportEIP2612","Address","Hex","PERMIT2_ADDRESS","const","PERMIT2_DOMAIN_NAME","PERMIT2_TOKEN_PERMISSIONS","name","type","PERMIT2_TRANSFER_FROM_TYPES","PermitTransferFrom","TokenPermissions","PERMIT2_PERMIT_DETAILS","PERMIT2_PERMIT_SINGLE_TYPES","PermitSingle","PermitDetails","Permit1Input","permitInfo","owner","spender","value","nonce","deadline","DaiPermitInput","holder","expiry","allowed","Permit2Input","variant","token","amount","expiration","chainId","PermitTypedDataInput","EIP712Type","EIP712Domain","version","verifyingContract","salt","Permit2TypedDataSingle","types","primaryType","domain","message","details","sigDeadline","Permit2TypedDataTransferFrom","permitted","Permit1PermitTypedData","Permit","DaiPermitTypedData","PermitTypedDataReturn","constructPermitTypedData","input","Error"],"sources":["../../../../src/hooks/permit/utils/construct.ts"],"sourcesContent":["import { type PermitSupportDAI, type PermitSupportEIP2612 } from \"./detect\";\nimport { type Address, type Hex } from \"viem\";\n\nexport const PERMIT2_ADDRESS =\n \"0x000000000022D473030F116dDEE9F6B43aC78BA3\" as const;\nconst PERMIT2_DOMAIN_NAME = \"Permit2\" as const;\n\nconst PERMIT2_TOKEN_PERMISSIONS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n] as const;\n\nconst PERMIT2_TRANSFER_FROM_TYPES = {\n PermitTransferFrom: [\n { name: \"permitted\", type: \"TokenPermissions\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n TokenPermissions: PERMIT2_TOKEN_PERMISSIONS,\n} as const;\n\nconst PERMIT2_PERMIT_DETAILS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint160\" },\n { name: \"expiration\", type: \"uint48\" },\n { name: \"nonce\", type: \"uint48\" },\n] as const;\n\nconst PERMIT2_PERMIT_SINGLE_TYPES = {\n PermitSingle: [\n { name: \"details\", type: \"PermitDetails\" },\n { name: \"spender\", type: \"address\" },\n { name: \"sigDeadline\", type: \"uint256\" },\n ],\n PermitDetails: PERMIT2_PERMIT_DETAILS,\n} as const;\n\nexport interface Permit1Input {\n type: \"permit1\";\n permitInfo: PermitSupportEIP2612;\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n}\n\nexport interface DaiPermitInput {\n type: \"dai\";\n permitInfo: PermitSupportDAI;\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n}\n\nexport interface Permit2Input {\n type: \"permit2\";\n variant: \"single\" | \"transferFrom\";\n token: Address;\n spender: Address;\n nonce: bigint;\n amount: bigint;\n expiration: bigint;\n chainId: number;\n}\n\nexport type PermitTypedDataInput = Permit1Input | DaiPermitInput | Permit2Input;\n\n// EIP-712 Type Definitions\ninterface EIP712Type {\n name: string;\n type: string;\n}\n\ninterface EIP712Domain {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex;\n}\n\n// Return type for Permit2\ninterface Permit2TypedDataSingle {\n types: typeof PERMIT2_PERMIT_SINGLE_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitSingle\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n details: {\n token: Address;\n amount: bigint;\n nonce: bigint;\n expiration: bigint;\n };\n spender: Address;\n sigDeadline: bigint;\n };\n}\ninterface Permit2TypedDataTransferFrom {\n types: typeof PERMIT2_TRANSFER_FROM_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitTransferFrom\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n permitted: {\n token: Address;\n amount: bigint;\n };\n spender: Address;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for Permit1 Permit\ninterface Permit1PermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for DAI Permit\ninterface DaiPermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n };\n}\n\n// Union type for all possible return types\nexport type PermitTypedDataReturn =\n | Permit2TypedDataSingle\n | Permit2TypedDataTransferFrom\n | Permit1PermitTypedData\n | DaiPermitTypedData;\n\nexport function constructPermitTypedData(\n input: PermitTypedDataInput\n): PermitTypedDataReturn {\n if (input.type === \"permit2\") {\n const { token, spender, nonce, amount, expiration, variant, chainId } =\n input;\n\n if (variant === \"single\") {\n return {\n types: {\n ...PERMIT2_PERMIT_SINGLE_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitSingle\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n details: { token, amount, nonce, expiration },\n spender,\n sigDeadline: expiration,\n },\n };\n }\n\n if (variant === \"transferFrom\") {\n return {\n types: {\n ...PERMIT2_TRANSFER_FROM_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitTransferFrom\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n permitted: {\n token,\n amount,\n },\n spender,\n nonce,\n deadline: expiration,\n },\n };\n }\n }\n\n if (input.type === \"permit1\") {\n const { owner, spender, value, nonce, deadline, permitInfo } = input;\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { owner, spender, value, nonce, deadline },\n };\n }\n\n if (input.type === \"dai\") {\n const { holder, spender, nonce, expiry, allowed, permitInfo } = input;\n\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"holder\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"expiry\", type: \"uint256\" },\n { name: \"allowed\", type: \"bool\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { holder, spender, nonce, expiry, allowed },\n };\n }\n\n throw new Error(`Unsupported permit input type`);\n}\n\n// Example usage:\n// constructPermitTypedData({ type: 'permit1', variant: 'transfer', permitInfo, to, value, nonce, deadline });\n"],"mappings":";;AAGA,IAAaI,IACX,8CACIE,IAAsB,WAOtBI,IAA8B;CAClCC,oBAAoB;EAClB;GAAEH,MAAM;GAAaC,MAAM;GAAoB;EAC/C;GAAED,MAAM;GAAWC,MAAM;GAAW;EACpC;GAAED,MAAM;GAASC,MAAM;GAAW;EAClC;GAAED,MAAM;GAAYC,MAAM;GAAW;EACtC;CACDG,kBAAkBL,CAXlB;EAAEC,MAAM;EAASC,MAAM;EAAW,EAClC;EAAED,MAAM;EAAUC,MAAM;EAAW,CAUjBF;CACnB,EASKO,IAA8B;CAClCC,cAAc;EACZ;GAAEP,MAAM;GAAWC,MAAM;GAAiB;EAC1C;GAAED,MAAM;GAAWC,MAAM;GAAW;EACpC;GAAED,MAAM;GAAeC,MAAM;GAAW;EACzC;CACDO,eAAeH;EAZf;GAAEL,MAAM;GAASC,MAAM;GAAW;EAClC;GAAED,MAAM;GAAUC,MAAM;GAAW;EACnC;GAAED,MAAM;GAAcC,MAAM;GAAU;EACtC;GAAED,MAAM;GAASC,MAAM;GAAU;EASlBI;CAChB;AAqID,SAAgBwC,EACdC,GACuB;CACvB,IAAIA,EAAM7C,SAAS,WAAW;EAC5B,IAAM,EAAEqB,UAAOV,YAASE,UAAOS,WAAQC,eAAYH,YAASI,eAC1DqB;EAEF,IAAIzB,MAAY,UACd,OAAO;GACLY,OAAO,EACL,GAAG3B,GAMJ;GACD4B,aAAa;GACbC,QAAQ;IACNnC,MAAMF;IACN2B;IACAK,mBAAmBlC;IACpB;GACDwC,SAAS;IACPC,SAAS;KAAEf;KAAOC;KAAQT;KAAOU;KAAY;IAC7CZ;IACA0B,aAAad;IACf;GACD;EAGH,IAAIH,MAAY,gBACd,OAAO;GACLY,OAAO,EACL,GAAG/B,GAMJ;GACDgC,aAAa;GACbC,QAAQ;IACNnC,MAAMF;IACN2B;IACAK,mBAAmBlC;IACpB;GACDwC,SAAS;IACPI,WAAW;KACTlB;KACAC;KACD;IACDX;IACAE;IACAC,UAAUS;IACZ;GACD;;CAIL,IAAIsB,EAAM7C,SAAS,WAAW;EAC5B,IAAM,EAAEU,UAAOC,YAASC,UAAOC,UAAOC,aAAUL,kBAAeoC;EAC/D,OAAO;GACLb,OAAO,EAOLS,QAAQ;IACN;KAAE1C,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAAWC,MAAM;KAAW;IACpC;KAAED,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAAYC,MAAM;KAAW;IAAA,EAExC;GACDiC,aAAa;GACbC,QAAQzB,EAAWyB;GACnBC,SAAS;IAAEzB;IAAOC;IAASC;IAAOC;IAAOC;IAAS;GACnD;;CAGH,IAAI+B,EAAM7C,SAAS,OAAO;EACxB,IAAM,EAAEgB,WAAQL,YAASE,UAAOI,WAAQC,YAAST,kBAAeoC;EAEhE,OAAO;GACLb,OAAO,EAOLS,QAAQ;IACN;KAAE1C,MAAM;KAAUC,MAAM;KAAW;IACnC;KAAED,MAAM;KAAWC,MAAM;KAAW;IACpC;KAAED,MAAM;KAASC,MAAM;KAAW;IAClC;KAAED,MAAM;KAAUC,MAAM;KAAW;IACnC;KAAED,MAAM;KAAWC,MAAM;KAAQ;IAAA,EAEpC;GACDiC,aAAa;GACbC,QAAQzB,EAAWyB;GACnBC,SAAS;IAAEnB;IAAQL;IAASE;IAAOI;IAAQC;IAAQ;GACpD;;CAGH,MAAU4B,MAAM,gCAAgC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deadlines.js","names":["toDeadline","PERMIT_VALIDITY_BUFFER","ALLOWANCE_VALIDITY_BUFFER","produceSignatureDeadline","produceAllowanceDeadline"],"sources":["../../../../src/hooks/permit/utils/deadlines.ts"],"sourcesContent":["import { toDeadline } from \"@/lib/utils/delta\";\n\nexport const PERMIT_VALIDITY_BUFFER = 3 * 24 * 60 * 60 * 1000; // 3 days in milliseconds\nexport const ALLOWANCE_VALIDITY_BUFFER = 10 * PERMIT_VALIDITY_BUFFER; // 30 days in milliseconds\n\n// deadline for Permit1 and Permit2 signature expiration to use up a signed Permit)\nexport function produceSignatureDeadline(): bigint {\n return toDeadline(PERMIT_VALIDITY_BUFFER);\n}\n\n// deadline for Token allowance expiration in Permit2\nexport function produceAllowanceDeadline(): bigint {\n return toDeadline(ALLOWANCE_VALIDITY_BUFFER);\n}\n"],"mappings":";;AAEA,IAAaC,IAAyB,OAAc,KAAK;AAChB,KAAKA;AAG9C,SAAgBE,IAAmC;AACjD,QAAOH,EAAWC,EAAuB"}
1
+ {"version":3,"file":"deadlines.js","names":["toDeadline","PERMIT_VALIDITY_BUFFER","ALLOWANCE_VALIDITY_BUFFER","produceSignatureDeadline","produceAllowanceDeadline"],"sources":["../../../../src/hooks/permit/utils/deadlines.ts"],"sourcesContent":["import { toDeadline } from \"@/lib/utils/delta\";\n\nexport const PERMIT_VALIDITY_BUFFER = 3 * 24 * 60 * 60 * 1000; // 3 days in milliseconds\nexport const ALLOWANCE_VALIDITY_BUFFER = 10 * PERMIT_VALIDITY_BUFFER; // 30 days in milliseconds\n\n// deadline for Permit1 and Permit2 signature expiration to use up a signed Permit)\nexport function produceSignatureDeadline(): bigint {\n return toDeadline(PERMIT_VALIDITY_BUFFER);\n}\n\n// deadline for Token allowance expiration in Permit2\nexport function produceAllowanceDeadline(): bigint {\n return toDeadline(ALLOWANCE_VALIDITY_BUFFER);\n}\n"],"mappings":";;AAEA,IAAaC,IAAyB,OAAc,KAAK;AAChB,KAAKA;AAG9C,SAAgBE,IAAmC;CACjD,OAAOH,EAAWC,EAAuB"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","names":["Address","Hash","Hex","isAddress","Config","readContracts","getBytecode","EIP_2612_PERMIT_ABI","UPGRADABLE_ERC_20_ABI","DOMAIN_TYPEHASH_ABI","DOMAIN_HASHES_WITHOUT_VERSION","EIP712_DOMAIN_ABI","PERMIT_TYPEHASH_ABI","VERSIONS_ABI","EIP2612_PERMIT_TYPEHASH","DAI_LIKE_PERMIT_TYPEHASH","DOMAIN_ABIS","getDomainFromEIP712Domain","MapTuple","isETHaddress","guessDomainParams","Permit1Type","PermitSupportDAI","PermitSupportResultBase","type","PermitSupportEIP2612","domain","name","version","chainId","verifyingContract","salt","domainSeparator","PermitSupportResult","NotDetectedPermitSupport","NotDetectedResult","EIP_2612_PERMIT_SELECTOR","DAI_PERMIT_SELECTOR","DetectPermitSupportParams","config","tokenAddress","detectPermitSupportType","Promise","domainResults","allowFailure","contracts","abi","functionName","address","args","versionAndChain","versionAndSalt","withoutVersion","TupleOfResutls","domainTypehash","permitTypehash","versionAlt1","versionAlt2","proxyImplementation","eip712Domain","eip712DomainVersionAndChain","eip712DomainVersionAndSalt","eip712DomainWithoutVersion","map","r","result","fields","extensions","toLowerCase","Number","permitType","contractWithMethods","bytecode","includes","slice","guessedParams","undefined"],"sources":["../../../../src/hooks/permit/utils/detect.ts"],"sourcesContent":["import { type Address, type Hash, type Hex, isAddress } from \"viem\";\nimport { type Config, readContracts, getBytecode } from \"@wagmi/core\";\nimport { EIP_2612_PERMIT_ABI, UPGRADABLE_ERC_20_ABI } from \"./abi\";\nimport {\n DOMAIN_TYPEHASH_ABI,\n DOMAIN_HASHES_WITHOUT_VERSION,\n EIP712_DOMAIN_ABI,\n PERMIT_TYPEHASH_ABI,\n VERSIONS_ABI,\n EIP2612_PERMIT_TYPEHASH,\n DAI_LIKE_PERMIT_TYPEHASH,\n DOMAIN_ABIS,\n} from \"./constants\";\nimport { getDomainFromEIP712Domain } from \"./utils\";\nimport type { MapTuple } from \"./types\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { guessDomainParams } from \"./domainSeparator\";\n\nexport type Permit1Type = \"eip2612\" | \"dai\";\n\nexport type PermitSupportDAI = PermitSupportResultBase & { type: \"dai\" };\nexport type PermitSupportEIP2612 = PermitSupportResultBase & {\n type: \"eip2612\";\n};\n\ntype PermitSupportResultBase = {\n type: Permit1Type;\n domain: {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex; //\n };\n domainSeparator?: string;\n};\n\nexport type PermitSupportResult = PermitSupportDAI | PermitSupportEIP2612;\n\nexport type NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\";\n domain: null;\n};\n\nconst NotDetectedResult: NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\",\n domain: null,\n};\n\n/* const PERMIT_SIGNATURES = [\n {\n type: \"eip2612\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // value\n \"uint256\", // deadline\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n {\n type: \"dai\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // nonce\n \"uint256\", // expiry\n \"bool\", // allowed\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n];\n\n]; */\n\nexport const EIP_2612_PERMIT_SELECTOR = \"0xd505accf\"; // EIP2612.permit\nexport const DAI_PERMIT_SELECTOR = \"0x8fcbaf0c\"; // DAI.permit\n\nexport type DetectPermitSupportParams = {\n config: Config;\n tokenAddress: Address;\n chainId: number;\n};\n\nexport async function detectPermitSupportType({\n config,\n tokenAddress,\n chainId,\n}: DetectPermitSupportParams): Promise<\n PermitSupportResult | NotDetectedPermitSupport\n> {\n if (isETHaddress(tokenAddress)) {\n return NotDetectedResult;\n }\n\n const domainResults = await readContracts(config, {\n allowFailure: true,\n contracts: [\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"DOMAIN_SEPARATOR\", // @TODO maybe not needed\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_TYPEHASH_ABI,\n functionName: \"DOMAIN_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: PERMIT_TYPEHASH_ABI,\n functionName: \"PERMIT_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"name\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n // @TODO see how version gets assigned and then deleted for UNI 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 (mainnet)\n functionName: \"version\", // standard\n // @TODO chewck what a Proxy contract like 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 (USDC.e on Polygon) returns,\n // because of the fallback method it may return success with 0x instead of error\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"EIP712_VERSION\", // non-standard, in USDC.e on Polygon\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"ERC712_VERSION\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: UPGRADABLE_ERC_20_ABI,\n functionName: \"implementation\",\n // sometimes implementation() is guarded by a modifier, like aEthUSDT on mainnet,\n // then it's unreadable\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP712_DOMAIN_ABI,\n functionName: \"eip712Domain\", // standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndChain,\n functionName: \"eip712Domain\", // non-standard, Lido stETH on mainnet\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndSalt,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.withoutVersion,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n ],\n });\n\n type TupleOfResutls = MapTuple<typeof domainResults, \"result\">;\n\n const [\n domainSeparator,\n domainTypehash,\n permitTypehash,\n name,\n version,\n versionAlt1,\n versionAlt2,\n proxyImplementation,\n eip712Domain,\n eip712DomainVersionAndChain,\n eip712DomainVersionAndSalt,\n eip712DomainWithoutVersion,\n ] = domainResults.map((r) => r.result) as TupleOfResutls;\n\n if (!name) return NotDetectedResult;\n\n let domain: PermitSupportResult[\"domain\"] | null = null;\n\n if (eip712Domain) {\n const [\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n ] = eip712Domain;\n\n // if Token is a Proxy, then depending on the fallback method implementation,\n // the result may return partial eip712Domain that actually comes from an alternative eip712Domain impelmentation,\n // but in that case only the first fields that are the same between all implementations will be correct,\n // no verifyingContract\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = getDomainFromEIP712Domain({\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n });\n }\n }\n if (!domain && eip712DomainVersionAndChain) {\n const [name, version, chainId, verifyingContract] =\n eip712DomainVersionAndChain;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n if (!domain && eip712DomainVersionAndSalt) {\n const [name, version, verifyingContract, salt] = eip712DomainVersionAndSalt;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n verifyingContract,\n salt,\n };\n }\n }\n if (!domain && eip712DomainWithoutVersion) {\n const [name, chainId, verifyingContract] = eip712DomainWithoutVersion;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n\n if (\n domain &&\n (eip712Domain ||\n eip712DomainVersionAndChain ||\n eip712DomainVersionAndSalt ||\n eip712DomainWithoutVersion)\n ) {\n // eip712Domain is for EIP2612 Permit\n return {\n type: \"eip2612\",\n domain,\n domainSeparator,\n };\n }\n\n let permitType: Permit1Type | null = null;\n\n if (permitTypehash) {\n if (permitTypehash.toLowerCase() === EIP2612_PERMIT_TYPEHASH) {\n permitType = \"eip2612\";\n }\n\n if (permitTypehash.toLowerCase() === DAI_LIKE_PERMIT_TYPEHASH) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) {\n const contractWithMethods =\n proxyImplementation && isAddress(proxyImplementation)\n ? proxyImplementation\n : tokenAddress;\n\n const bytecode = await getBytecode(config, {\n address: contractWithMethods,\n chainId,\n });\n if (!bytecode) return NotDetectedResult;\n\n // see if permit() method with expected signature is available,\n // but this check will not catch Proxy Contracts\n if (bytecode.includes(EIP_2612_PERMIT_SELECTOR.slice(2))) {\n permitType = \"eip2612\";\n }\n\n if (bytecode.includes(DAI_PERMIT_SELECTOR.slice(2))) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) return NotDetectedResult;\n\n if (!domain) {\n domain = {\n name,\n // default to 1 if not found, sometimes version is not exposed publicly\n version: version || versionAlt1 || versionAlt2, // @TODO check maybe we need to drop version\n verifyingContract: tokenAddress,\n chainId,\n };\n\n // fetched domainSeparator, but not version,\n // version can not exist or just not publicly exposed,\n // ex. aEthUSDT on mainnet\n if (domainSeparator) {\n const guessedParams = guessDomainParams({\n domain,\n chainId,\n domainSeparator,\n });\n domain.version = guessedParams.version;\n domain.chainId = guessedParams.chainId;\n domain.salt = guessedParams.salt;\n }\n\n if (\n domainTypehash &&\n DOMAIN_HASHES_WITHOUT_VERSION.includes(\n domainTypehash.toLowerCase() as Hash\n )\n ) {\n delete domain.version;\n } else if (domain.version === undefined) {\n delete domain.version;\n }\n\n if (domain.chainId === undefined) {\n delete domain.chainId;\n }\n\n if (domain.salt === undefined) {\n delete domain.salt;\n }\n }\n\n return {\n type: permitType,\n domain,\n domainSeparator,\n };\n}\n"],"mappings":";;;;;;;;AA4CA,IAAMmC,IAA8C;CAClDX,MAAM;CACNE,QAAQ;CACT;AA2CD,eAAsBe,EAAwB,EAC5CF,WACAC,iBACAX,cAGA;AACA,KAAIV,EAAaqB,EAAa,CAC5B,QAAOL;CAoGT,IAAM,CACJH,GACAsB,GACAC,GACA5B,GACAC,GACA4B,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,MA7GoB,MAAMzD,EAAckC,GAAQ;EAChDK,cAAc;EACdC,WAAW;GACT;IACEhB;IACAiB,KAAKvC;IACLwC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKrC;IACLsC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKlC;IACLmC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKvC;IACLwC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKvC;IAELwC,cAAc;IAGdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKjC;IACLkC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKjC;IACLkC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKtC;IACLuC,cAAc;IAGdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKnC;IACLoC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAK9B,EAAYkC;IACjBH,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAK9B,EAAYmC;IACjBJ,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAK9B,EAAYoC;IACjBL,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GAAA;EAEJ,CAAC,EAiBgBc,KAAKC,MAAMA,EAAEC,OAAO;AAEtC,KAAI,CAACtC,EAAM,QAAOQ;CAElB,IAAIT,IAA+C;AAEnD,KAAIiC,GAAc;EAChB,IAAM,CACJO,GACAvC,GACAC,GACAC,GACAC,GACAC,GACAoC,KACER;AAMJ,EAAI7B,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAST,EAA0B;GACjCiD;GACAvC;GACAC;GACAC;GACAC;GACAC;GACAoC;GACD,CAAC;;AAGN,KAAI,CAACzC,KAAUkC,GAA6B;EAC1C,IAAM,CAACjC,GAAMC,GAASC,GAASC,KAC7B8B;AAEF,EAAI9B,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAS;GACPC;GACAC;GACAC,SAASwC,OAAOxC,EAAQ;GACxBC;GACD;;AAGL,KAAI,CAACJ,KAAUmC,GAA4B;EACzC,IAAM,CAAClC,GAAMC,GAASE,GAAmBC,KAAQ8B;AAEjD,EAAI/B,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAS;GACPC;GACAC;GACAE;GACAC;GACD;;AAGL,KAAI,CAACL,KAAUoC,GAA4B;EACzC,IAAM,CAACnC,GAAME,GAASC,KAAqBgC;AAE3C,EAAIhC,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAS;GACPC;GACAE,SAASwC,OAAOxC,EAAQ;GACxBC;GACD;;AAIL,KACEJ,MACCiC,KACCC,KACAC,KACAC,GAGF,QAAO;EACLtC,MAAM;EACNE;EACAM;EACD;CAGH,IAAIsC,IAAiC;AAYrC,KAVIf,MACEA,EAAea,aAAa,KAAA,yEAC9BE,IAAa,YAGXf,EAAea,aAAa,KAAA,yEAC9BE,IAAa,SAIb,CAACA,GAAY;EAMf,IAAME,IAAW,MAAMlE,EAAYiC,GAAQ;GACzCS,SALAU,KAAuBvD,EAAUuD,EAAoB,GACjDA,IACAlB;GAIJX;GACD,CAAC;AACF,MAAI,CAAC2C,EAAU,QAAOrC;AAQtB,EAJIqC,EAASC,SAAAA,WAA2C,KACtDH,IAAa,YAGXE,EAASC,SAAAA,WAAsC,KACjDH,IAAa;;AAIjB,KAAI,CAACA,EAAY,QAAOnC;AAExB,KAAI,CAACT,GAAQ;AAYX,MAXAA,IAAS;GACPC;GAEAC,SAASA,KAAW4B,KAAeC;GACnC3B,mBAAmBU;GACnBX;GACD,EAKGG,GAAiB;GACnB,IAAM2C,IAAgBvD,EAAkB;IACtCM;IACAG;IACAG;IACD,CAAC;AAGFN,GAFAA,EAAOE,UAAU+C,EAAc/C,SAC/BF,EAAOG,UAAU8C,EAAc9C,SAC/BH,EAAOK,OAAO4C,EAAc5C;;AAkB9B,GAdEuB,KACA5C,EAA8B+D,SAC5BnB,EAAec,aAAa,CAC7B,IAGQ1C,EAAOE,YAAYgD,KAAAA,MAD5B,OAAOlD,EAAOE,SAKZF,EAAOG,YAAY+C,KAAAA,KACrB,OAAOlD,EAAOG,SAGZH,EAAOK,SAAS6C,KAAAA,KAClB,OAAOlD,EAAOK;;AAIlB,QAAO;EACLP,MAAM8C;EACN5C;EACAM;EACD"}
1
+ {"version":3,"file":"detect.js","names":["Address","Hash","Hex","isAddress","Config","readContracts","getBytecode","EIP_2612_PERMIT_ABI","UPGRADABLE_ERC_20_ABI","DOMAIN_TYPEHASH_ABI","DOMAIN_HASHES_WITHOUT_VERSION","EIP712_DOMAIN_ABI","PERMIT_TYPEHASH_ABI","VERSIONS_ABI","EIP2612_PERMIT_TYPEHASH","DAI_LIKE_PERMIT_TYPEHASH","DOMAIN_ABIS","getDomainFromEIP712Domain","MapTuple","isETHaddress","guessDomainParams","Permit1Type","PermitSupportDAI","PermitSupportResultBase","type","PermitSupportEIP2612","domain","name","version","chainId","verifyingContract","salt","domainSeparator","PermitSupportResult","NotDetectedPermitSupport","NotDetectedResult","EIP_2612_PERMIT_SELECTOR","DAI_PERMIT_SELECTOR","DetectPermitSupportParams","config","tokenAddress","detectPermitSupportType","Promise","domainResults","allowFailure","contracts","abi","functionName","address","args","versionAndChain","versionAndSalt","withoutVersion","TupleOfResutls","domainTypehash","permitTypehash","versionAlt1","versionAlt2","proxyImplementation","eip712Domain","eip712DomainVersionAndChain","eip712DomainVersionAndSalt","eip712DomainWithoutVersion","map","r","result","fields","extensions","toLowerCase","Number","permitType","contractWithMethods","bytecode","includes","slice","guessedParams","undefined"],"sources":["../../../../src/hooks/permit/utils/detect.ts"],"sourcesContent":["import { type Address, type Hash, type Hex, isAddress } from \"viem\";\nimport { type Config, readContracts, getBytecode } from \"@wagmi/core\";\nimport { EIP_2612_PERMIT_ABI, UPGRADABLE_ERC_20_ABI } from \"./abi\";\nimport {\n DOMAIN_TYPEHASH_ABI,\n DOMAIN_HASHES_WITHOUT_VERSION,\n EIP712_DOMAIN_ABI,\n PERMIT_TYPEHASH_ABI,\n VERSIONS_ABI,\n EIP2612_PERMIT_TYPEHASH,\n DAI_LIKE_PERMIT_TYPEHASH,\n DOMAIN_ABIS,\n} from \"./constants\";\nimport { getDomainFromEIP712Domain } from \"./utils\";\nimport type { MapTuple } from \"./types\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { guessDomainParams } from \"./domainSeparator\";\n\nexport type Permit1Type = \"eip2612\" | \"dai\";\n\nexport type PermitSupportDAI = PermitSupportResultBase & { type: \"dai\" };\nexport type PermitSupportEIP2612 = PermitSupportResultBase & {\n type: \"eip2612\";\n};\n\ntype PermitSupportResultBase = {\n type: Permit1Type;\n domain: {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex; //\n };\n domainSeparator?: string;\n};\n\nexport type PermitSupportResult = PermitSupportDAI | PermitSupportEIP2612;\n\nexport type NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\";\n domain: null;\n};\n\nconst NotDetectedResult: NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\",\n domain: null,\n};\n\n/* const PERMIT_SIGNATURES = [\n {\n type: \"eip2612\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // value\n \"uint256\", // deadline\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n {\n type: \"dai\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // nonce\n \"uint256\", // expiry\n \"bool\", // allowed\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n];\n\n]; */\n\nexport const EIP_2612_PERMIT_SELECTOR = \"0xd505accf\"; // EIP2612.permit\nexport const DAI_PERMIT_SELECTOR = \"0x8fcbaf0c\"; // DAI.permit\n\nexport type DetectPermitSupportParams = {\n config: Config;\n tokenAddress: Address;\n chainId: number;\n};\n\nexport async function detectPermitSupportType({\n config,\n tokenAddress,\n chainId,\n}: DetectPermitSupportParams): Promise<\n PermitSupportResult | NotDetectedPermitSupport\n> {\n if (isETHaddress(tokenAddress)) {\n return NotDetectedResult;\n }\n\n const domainResults = await readContracts(config, {\n allowFailure: true,\n contracts: [\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"DOMAIN_SEPARATOR\", // @TODO maybe not needed\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_TYPEHASH_ABI,\n functionName: \"DOMAIN_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: PERMIT_TYPEHASH_ABI,\n functionName: \"PERMIT_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"name\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n // @TODO see how version gets assigned and then deleted for UNI 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 (mainnet)\n functionName: \"version\", // standard\n // @TODO chewck what a Proxy contract like 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 (USDC.e on Polygon) returns,\n // because of the fallback method it may return success with 0x instead of error\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"EIP712_VERSION\", // non-standard, in USDC.e on Polygon\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"ERC712_VERSION\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: UPGRADABLE_ERC_20_ABI,\n functionName: \"implementation\",\n // sometimes implementation() is guarded by a modifier, like aEthUSDT on mainnet,\n // then it's unreadable\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP712_DOMAIN_ABI,\n functionName: \"eip712Domain\", // standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndChain,\n functionName: \"eip712Domain\", // non-standard, Lido stETH on mainnet\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndSalt,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.withoutVersion,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n ],\n });\n\n type TupleOfResutls = MapTuple<typeof domainResults, \"result\">;\n\n const [\n domainSeparator,\n domainTypehash,\n permitTypehash,\n name,\n version,\n versionAlt1,\n versionAlt2,\n proxyImplementation,\n eip712Domain,\n eip712DomainVersionAndChain,\n eip712DomainVersionAndSalt,\n eip712DomainWithoutVersion,\n ] = domainResults.map((r) => r.result) as TupleOfResutls;\n\n if (!name) return NotDetectedResult;\n\n let domain: PermitSupportResult[\"domain\"] | null = null;\n\n if (eip712Domain) {\n const [\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n ] = eip712Domain;\n\n // if Token is a Proxy, then depending on the fallback method implementation,\n // the result may return partial eip712Domain that actually comes from an alternative eip712Domain impelmentation,\n // but in that case only the first fields that are the same between all implementations will be correct,\n // no verifyingContract\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = getDomainFromEIP712Domain({\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n });\n }\n }\n if (!domain && eip712DomainVersionAndChain) {\n const [name, version, chainId, verifyingContract] =\n eip712DomainVersionAndChain;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n if (!domain && eip712DomainVersionAndSalt) {\n const [name, version, verifyingContract, salt] = eip712DomainVersionAndSalt;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n verifyingContract,\n salt,\n };\n }\n }\n if (!domain && eip712DomainWithoutVersion) {\n const [name, chainId, verifyingContract] = eip712DomainWithoutVersion;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n\n if (\n domain &&\n (eip712Domain ||\n eip712DomainVersionAndChain ||\n eip712DomainVersionAndSalt ||\n eip712DomainWithoutVersion)\n ) {\n // eip712Domain is for EIP2612 Permit\n return {\n type: \"eip2612\",\n domain,\n domainSeparator,\n };\n }\n\n let permitType: Permit1Type | null = null;\n\n if (permitTypehash) {\n if (permitTypehash.toLowerCase() === EIP2612_PERMIT_TYPEHASH) {\n permitType = \"eip2612\";\n }\n\n if (permitTypehash.toLowerCase() === DAI_LIKE_PERMIT_TYPEHASH) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) {\n const contractWithMethods =\n proxyImplementation && isAddress(proxyImplementation)\n ? proxyImplementation\n : tokenAddress;\n\n const bytecode = await getBytecode(config, {\n address: contractWithMethods,\n chainId,\n });\n if (!bytecode) return NotDetectedResult;\n\n // see if permit() method with expected signature is available,\n // but this check will not catch Proxy Contracts\n if (bytecode.includes(EIP_2612_PERMIT_SELECTOR.slice(2))) {\n permitType = \"eip2612\";\n }\n\n if (bytecode.includes(DAI_PERMIT_SELECTOR.slice(2))) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) return NotDetectedResult;\n\n if (!domain) {\n domain = {\n name,\n // default to 1 if not found, sometimes version is not exposed publicly\n version: version || versionAlt1 || versionAlt2, // @TODO check maybe we need to drop version\n verifyingContract: tokenAddress,\n chainId,\n };\n\n // fetched domainSeparator, but not version,\n // version can not exist or just not publicly exposed,\n // ex. aEthUSDT on mainnet\n if (domainSeparator) {\n const guessedParams = guessDomainParams({\n domain,\n chainId,\n domainSeparator,\n });\n domain.version = guessedParams.version;\n domain.chainId = guessedParams.chainId;\n domain.salt = guessedParams.salt;\n }\n\n if (\n domainTypehash &&\n DOMAIN_HASHES_WITHOUT_VERSION.includes(\n domainTypehash.toLowerCase() as Hash\n )\n ) {\n delete domain.version;\n } else if (domain.version === undefined) {\n delete domain.version;\n }\n\n if (domain.chainId === undefined) {\n delete domain.chainId;\n }\n\n if (domain.salt === undefined) {\n delete domain.salt;\n }\n }\n\n return {\n type: permitType,\n domain,\n domainSeparator,\n };\n}\n"],"mappings":";;;;;;;;AA4CA,IAAMmC,IAA8C;CAClDX,MAAM;CACNE,QAAQ;CACT;AA2CD,eAAsBe,EAAwB,EAC5CF,WACAC,iBACAX,cAGA;CACA,IAAIV,EAAaqB,EAAa,EAC5B,OAAOL;CAoGT,IAAM,CACJH,GACAsB,GACAC,GACA5B,GACAC,GACA4B,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,MACEnB,MA9GwBtC,EAAckC,GAAQ;EAChDK,cAAc;EACdC,WAAW;GACT;IACEhB;IACAiB,KAAKvC;IACLwC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKrC;IACLsC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKlC;IACLmC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKvC;IACLwC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKvC;IAELwC,cAAc;IAGdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKjC;IACLkC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKjC;IACLkC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKtC;IACLuC,cAAc;IAGdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAKnC;IACLoC,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAK9B,EAAYkC;IACjBH,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAK9B,EAAYmC;IACjBJ,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GACD;IACEpB;IACAiB,KAAK9B,EAAYoC;IACjBL,cAAc;IACdC,SAASR;IACTS,MAAM,EAAA;IACP;GAAA;EAEJ,CAAC,EAiBgBc,KAAKC,MAAMA,EAAEC,OAAO;CAEtC,IAAI,CAACtC,GAAM,OAAOQ;CAElB,IAAIT,IAA+C;CAEnD,IAAIiC,GAAc;EAChB,IAAM,CACJO,GACAvC,GACAC,GACAC,GACAC,GACAC,GACAoC,KACER;EAMJ,AAAI7B,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAST,EAA0B;GACjCiD;GACAvC;GACAC;GACAC;GACAC;GACAC;GACAoC;GACD,CAAC;;CAGN,IAAI,CAACzC,KAAUkC,GAA6B;EAC1C,IAAM,CAACjC,GAAMC,GAASC,GAASC,KAC7B8B;EAEF,AAAI9B,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAS;GACPC;GACAC;GACAC,SAASwC,OAAOxC,EAAQ;GACxBC;GACD;;CAGL,IAAI,CAACJ,KAAUmC,GAA4B;EACzC,IAAM,CAAClC,GAAMC,GAASE,GAAmBC,KAAQ8B;EAEjD,AAAI/B,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAS;GACPC;GACAC;GACAE;GACAC;GACD;;CAGL,IAAI,CAACL,KAAUoC,GAA4B;EACzC,IAAM,CAACnC,GAAME,GAASC,KAAqBgC;EAE3C,AAAIhC,EAAkBsC,aAAa,KAAK5B,EAAa4B,aAAa,KAChE1C,IAAS;GACPC;GACAE,SAASwC,OAAOxC,EAAQ;GACxBC;GACD;;CAIL,IACEJ,MACCiC,KACCC,KACAC,KACAC,IAGF,OAAO;EACLtC,MAAM;EACNE;EACAM;EACD;CAGH,IAAIsC,IAAiC;CAYrC,IAVIf,MACEA,EAAea,aAAa,KAAA,yEAC9BE,IAAa,YAGXf,EAAea,aAAa,KAAA,yEAC9BE,IAAa,SAIb,CAACA,GAAY;EAMf,IAAME,IAAW,MAAMlE,EAAYiC,GAAQ;GACzCS,SALAU,KAAuBvD,EAAUuD,EAAoB,GACjDA,IACAlB;GAIJX;GACD,CAAC;EACF,IAAI,CAAC2C,GAAU,OAAOrC;EAQtB,AAJIqC,EAASC,SAAAA,WAA2C,KACtDH,IAAa,YAGXE,EAASC,SAAAA,WAAsC,KACjDH,IAAa;;CAIjB,IAAI,CAACA,GAAY,OAAOnC;CAExB,IAAI,CAACT,GAAQ;EAYX,IAXAA,IAAS;GACPC;GAEAC,SAASA,KAAW4B,KAAeC;GACnC3B,mBAAmBU;GACnBX;GACD,EAKGG,GAAiB;GACnB,IAAM2C,IAAgBvD,EAAkB;IACtCM;IACAG;IACAG;IACD,CAAC;GAGFN,AAFAA,EAAOE,UAAU+C,EAAc/C,SAC/BF,EAAOG,UAAU8C,EAAc9C,SAC/BH,EAAOK,OAAO4C,EAAc5C;;EAkB9B,CAdEuB,KACA5C,EAA8B+D,SAC5BnB,EAAec,aAAa,CAC7B,IAGQ1C,EAAOE,YAAYgD,KAAAA,MAD5B,OAAOlD,EAAOE,SAKZF,EAAOG,YAAY+C,KAAAA,KACrB,OAAOlD,EAAOG,SAGZH,EAAOK,SAAS6C,KAAAA,KAClB,OAAOlD,EAAOK;;CAIlB,OAAO;EACLP,MAAM8C;EACN5C;EACAM;EACD"}