@velora-dex/widget 0.0.23 → 0.1.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/dist/_virtual/index.js +1 -1
  2. package/dist/components/ui/accordion.js.map +1 -1
  3. package/dist/components/ui/badge.js.map +1 -1
  4. package/dist/components/ui/button.js.map +1 -1
  5. package/dist/components/ui/card.js.map +1 -1
  6. package/dist/components/ui/dialog.js.map +1 -1
  7. package/dist/components/ui/drawer.d.ts +2 -2
  8. package/dist/components/ui/drawer.d.ts.map +1 -1
  9. package/dist/components/ui/drawer.js +1 -1
  10. package/dist/components/ui/drawer.js.map +1 -1
  11. package/dist/components/ui/dropdown-menu.js.map +1 -1
  12. package/dist/components/ui/input.js.map +1 -1
  13. package/dist/components/ui/progress.js.map +1 -1
  14. package/dist/components/ui/skeleton.js.map +1 -1
  15. package/dist/components/ui/sonner.d.ts.map +1 -1
  16. package/dist/components/ui/sonner.js +1 -2
  17. package/dist/components/ui/sonner.js.map +1 -1
  18. package/dist/components/ui/switch.js.map +1 -1
  19. package/dist/components/ui/tooltip.js.map +1 -1
  20. package/dist/components/web3/AccountButton.js.map +1 -1
  21. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
  22. package/dist/components/web3/ConnectWallets/WalletConnectButtons.d.ts.map +1 -1
  23. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js +23 -14
  24. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
  25. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  26. package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
  27. package/dist/components/web3/ConnectWallets/privy/connectRunner.d.ts.map +1 -1
  28. package/dist/components/web3/ConnectWallets/privy/connectRunner.js +0 -2
  29. package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
  30. package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
  31. package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
  32. package/dist/components/web3/ConnectWallets/walletIcons.d.ts +30 -0
  33. package/dist/components/web3/ConnectWallets/walletIcons.d.ts.map +1 -1
  34. package/dist/components/web3/ConnectWallets/walletIcons.js +84 -2
  35. package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
  36. package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -1
  37. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +69 -65
  38. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -1
  39. package/dist/components/web3/providers.js.map +1 -1
  40. package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
  41. package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
  42. package/dist/components/widget/AppHeader/AppHeader.js +49 -55
  43. package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
  44. package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
  45. package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
  46. package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
  47. package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
  48. package/dist/components/widget/Dialog/ConnectWalletDialog/ConnectWalletDialog.js.map +1 -1
  49. package/dist/components/widget/Dialog/DialogRoot.js.map +1 -1
  50. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +2 -2
  51. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
  52. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
  53. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
  54. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +125 -78
  55. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  56. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts +5 -2
  57. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.d.ts.map +1 -1
  58. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js +10 -8
  59. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  60. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts +5 -2
  61. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.d.ts.map +1 -1
  62. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js +10 -8
  63. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
  64. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.d.ts +11 -0
  65. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.d.ts.map +1 -0
  66. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js +101 -0
  67. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -0
  68. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.d.ts +5 -0
  69. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.d.ts.map +1 -0
  70. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js +186 -0
  71. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map +1 -0
  72. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts +6 -2
  73. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts.map +1 -1
  74. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js +33 -20
  75. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
  76. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js +1 -1
  77. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
  78. package/dist/components/widget/Dialog/state/dialogAtom.js.map +1 -1
  79. package/dist/components/widget/Drawer/index.d.ts +3 -1
  80. package/dist/components/widget/Drawer/index.d.ts.map +1 -1
  81. package/dist/components/widget/Drawer/index.js +64 -37
  82. package/dist/components/widget/Drawer/index.js.map +1 -1
  83. package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +24 -1
  84. package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
  85. package/dist/components/widget/Drawer/state/useDrawerControls.js +91 -2
  86. package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
  87. package/dist/components/widget/Dropdown/DropdownWithItems.d.ts.map +1 -1
  88. package/dist/components/widget/Dropdown/DropdownWithItems.js +5 -3
  89. package/dist/components/widget/Dropdown/DropdownWithItems.js.map +1 -1
  90. package/dist/components/widget/Dropdown/types.d.ts +2 -1
  91. package/dist/components/widget/Dropdown/types.d.ts.map +1 -1
  92. package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
  93. package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
  94. package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
  95. package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
  96. package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
  97. package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
  98. package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
  99. package/dist/components/widget/Line/Line.js.map +1 -1
  100. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
  101. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.d.ts.map +1 -1
  102. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js +14 -10
  103. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
  104. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.d.ts.map +1 -1
  105. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js +10 -8
  106. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
  107. package/dist/components/widget/NetworkSwitcher/types.d.ts +2 -2
  108. package/dist/components/widget/NetworkSwitcher/types.d.ts.map +1 -1
  109. package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
  110. package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
  111. package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
  112. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
  113. package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
  114. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  115. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.d.ts +1 -1
  116. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.d.ts.map +1 -1
  117. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js +5 -1
  118. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
  119. package/dist/components/widget/RowVirtualizer/types.d.ts +1 -0
  120. package/dist/components/widget/RowVirtualizer/types.d.ts.map +1 -1
  121. package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
  122. package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
  123. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
  124. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
  125. package/dist/components/widget/SwapRate/SwapRate.d.ts.map +1 -1
  126. package/dist/components/widget/SwapRate/SwapRate.js +3 -0
  127. package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
  128. package/dist/components/widget/Toasts/CustomToast.js.map +1 -1
  129. package/dist/components/widget/TokenBadge/TokenBadge.d.ts.map +1 -1
  130. package/dist/components/widget/TokenBadge/TokenBadge.js +1 -1
  131. package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
  132. package/dist/components/widget/TokenInput/EmptyInput.js.map +1 -1
  133. package/dist/components/widget/TokenInput/index.js +1 -1
  134. package/dist/components/widget/TokenInput/index.js.map +1 -1
  135. package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
  136. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  137. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  138. package/dist/components/widget/TradeOverview/Step/Step.js.map +1 -1
  139. package/dist/components/widget/TradeOverview/Step/utils.js.map +1 -1
  140. package/dist/components/widget/TradeOverview/Stepper.d.ts.map +1 -1
  141. package/dist/components/widget/TradeOverview/Stepper.js +39 -21
  142. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  143. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
  144. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
  145. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
  146. package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
  147. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.d.ts.map +1 -1
  148. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +40 -72
  149. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  150. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts +23 -3
  151. package/dist/components/widget/TradeOverview/TradeComplete/utils.d.ts.map +1 -1
  152. package/dist/components/widget/TradeOverview/TradeComplete/utils.js +67 -19
  153. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  154. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  155. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  156. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -1
  157. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -1
  158. package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -1
  159. package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -1
  160. package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
  161. package/dist/components/widget/TradeOverview/TradeOverview.js +40 -56
  162. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  163. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  164. package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
  165. package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
  166. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  167. package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
  168. package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -1
  169. package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
  170. package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
  171. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js +2 -2
  172. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
  173. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.d.ts.map +1 -1
  174. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js +42 -19
  175. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
  176. package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
  177. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js +3 -3
  178. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -1
  179. package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
  180. package/dist/components/widget/TradeParameters/state/slippageParamActionsAtom.js.map +1 -1
  181. package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
  182. package/dist/components/widget/Warning/Warning.js.map +1 -1
  183. package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
  184. package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
  185. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
  186. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.d.ts.map +1 -1
  187. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js +18 -24
  188. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
  189. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  190. package/dist/components/widget/YouGet/YouGet.js.map +1 -1
  191. package/dist/configurator/Configurator.d.ts.map +1 -1
  192. package/dist/core/ConnectWalletDrawerButton.js.map +1 -1
  193. package/dist/core/Toaster.js.map +1 -1
  194. package/dist/core/TradeFlowButton.js +154 -126
  195. package/dist/core/TradeFlowButton.js.map +1 -1
  196. package/dist/core/Updaters.d.ts.map +1 -1
  197. package/dist/core/Updaters.js +2 -0
  198. package/dist/core/Updaters.js.map +1 -1
  199. package/dist/core/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  200. package/dist/core/index.d.ts.map +1 -1
  201. package/dist/core/index.js +55 -28
  202. package/dist/core/index.js.map +1 -1
  203. package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  204. package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
  205. package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  206. package/dist/core/inputs/hooks/useTokenToInputProps.js +15 -15
  207. package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
  208. package/dist/core/inputs/state/inputAmountAtom.js.map +1 -1
  209. package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
  210. package/dist/core/inputs/state/selectedTokenAtom.js.map +1 -1
  211. package/dist/core/inputs/state/subscriptions.js.map +1 -1
  212. package/dist/core/logger.js.map +1 -1
  213. package/dist/core/state/chainToAtom.d.ts +2 -2
  214. package/dist/core/state/chainToAtom.js.map +1 -1
  215. package/dist/core/state/configActionsAtom.d.ts +1 -1
  216. package/dist/core/state/configActionsAtom.js.map +1 -1
  217. package/dist/core/state/configAtom.js.map +1 -1
  218. package/dist/core/state/externalProviderAtom.js.map +1 -1
  219. package/dist/core/swapDetails/fees.js.map +1 -1
  220. package/dist/core/swapDetails/orderRouting.js.map +1 -1
  221. package/dist/core/swapDetails/priceImpact.js.map +1 -1
  222. package/dist/core/swapDetails/useSwapDetailsListProps.js.map +1 -1
  223. package/dist/core/swapDetails/youGet.js.map +1 -1
  224. package/dist/external/.pnpm/{react-compiler-runtime@19.1.0-rc.2_react@19.1.0 → react-compiler-runtime@19.1.0-rc.2_react@19.1.1}/external/react-compiler-runtime/dist/index.js.map +1 -1
  225. package/dist/external/.pnpm/{vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33 → vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__7f2d7d5ed11750fbec42b3f5689c802d}/external/vaul/dist/index.js.map +1 -1
  226. package/dist/hooks/gas/useGasPrices.js.map +1 -1
  227. package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
  228. package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
  229. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.js.map +1 -1
  230. package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -1
  231. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -1
  232. package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -1
  233. package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -1
  234. package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -1
  235. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -1
  236. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -1
  237. package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -1
  238. package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -1
  239. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -1
  240. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -1
  241. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -1
  242. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -1
  243. package/dist/hooks/permit/utils/construct.js.map +1 -1
  244. package/dist/hooks/permit/utils/detect.js.map +1 -1
  245. package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
  246. package/dist/hooks/permit/utils/encodeArgs.js +1 -1
  247. package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
  248. package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
  249. package/dist/hooks/permit/utils/utils.js.map +1 -1
  250. package/dist/hooks/sdk/useGetContracts.js.map +1 -1
  251. package/dist/hooks/sdk/useSpender.js.map +1 -1
  252. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  253. package/dist/hooks/swap/prices/delta/orders/utils.d.ts +2 -0
  254. package/dist/hooks/swap/prices/delta/orders/utils.d.ts.map +1 -1
  255. package/dist/hooks/swap/prices/delta/orders/utils.js +4 -1
  256. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  257. package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js.map +1 -1
  258. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +14 -1
  259. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  260. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +60 -2
  261. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  262. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
  263. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts +8 -0
  264. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.d.ts.map +1 -1
  265. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +12 -3
  266. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  267. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
  268. package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
  269. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +14 -1
  270. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts.map +1 -1
  271. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +60 -2
  272. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  273. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
  274. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  275. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  276. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  277. package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
  278. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -1
  279. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -1
  280. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -1
  281. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +1 -0
  282. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  283. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +207 -458
  284. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  285. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  286. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +1 -0
  287. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
  288. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +210 -411
  289. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  290. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  291. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
  292. package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
  293. package/dist/hooks/tokens/balances/queries.js.map +1 -1
  294. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.d.ts.map +1 -1
  295. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js +18 -7
  296. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
  297. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts +3 -2
  298. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
  299. package/dist/hooks/tokens/balances/useInvalidateTokenData.js +60 -77
  300. package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
  301. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
  302. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
  303. package/dist/hooks/tokens/balances/useSelectedTokenBalances.d.ts +5 -0
  304. package/dist/hooks/tokens/balances/useSelectedTokenBalances.d.ts.map +1 -0
  305. package/dist/hooks/tokens/balances/useSelectedTokenBalances.js +38 -0
  306. package/dist/hooks/tokens/balances/useSelectedTokenBalances.js.map +1 -0
  307. package/dist/hooks/tokens/balances/useTokenBalance.d.ts +15 -0
  308. package/dist/hooks/tokens/balances/useTokenBalance.d.ts.map +1 -1
  309. package/dist/hooks/tokens/balances/useTokenBalance.js +2 -0
  310. package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
  311. package/dist/hooks/tokens/prices/queries.js.map +1 -1
  312. package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
  313. package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
  314. package/dist/hooks/tokens/useNativeToken.js.map +1 -1
  315. package/dist/hooks/tokens/useTokenLists.js.map +1 -1
  316. package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -1
  317. package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
  318. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  319. package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
  320. package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
  321. package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
  322. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  323. package/dist/hooks/txs/queries/utils.d.ts +3 -0
  324. package/dist/hooks/txs/queries/utils.d.ts.map +1 -0
  325. package/dist/hooks/txs/queries/utils.js +6 -0
  326. package/dist/hooks/txs/queries/utils.js.map +1 -0
  327. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  328. package/dist/hooks/useBridgeInfo.js.map +1 -1
  329. package/dist/hooks/useDebouncedInputState.js.map +1 -1
  330. package/dist/hooks/useEIP1559Enabled.js.map +1 -1
  331. package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
  332. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  333. package/dist/hooks/useMinViemClient.js.map +1 -1
  334. package/dist/hooks/useSDK.js +1 -1
  335. package/dist/hooks/useSDK.js.map +1 -1
  336. package/dist/hooks/useSlippage.js.map +1 -1
  337. package/dist/lib/ipfs.js.map +1 -1
  338. package/dist/lib/queryClient.d.ts.map +1 -1
  339. package/dist/lib/queryClient.js +32 -2
  340. package/dist/lib/queryClient.js.map +1 -1
  341. package/dist/lib/utils/copyToClipboard.js.map +1 -1
  342. package/dist/lib/utils/delta.js.map +1 -1
  343. package/dist/lib/utils/formatTokenBalance.js.map +1 -1
  344. package/dist/lib/utils/index.js.map +1 -1
  345. package/dist/lib/utils/logger.js.map +1 -1
  346. package/dist/lib/utils/price.js.map +1 -1
  347. package/dist/lib/utils/priceImpact.d.ts.map +1 -1
  348. package/dist/lib/utils/priceImpact.js +1 -1
  349. package/dist/lib/utils/priceImpact.js.map +1 -1
  350. package/dist/lib/utils/providerErrors.js.map +1 -1
  351. package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
  352. package/dist/lib/utils/toasts.js +0 -24
  353. package/dist/lib/utils/toasts.js.map +1 -1
  354. package/dist/lib/web3/privy/config.js +1 -1
  355. package/dist/lib/web3/wagmi/config.d.ts +12 -2
  356. package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
  357. package/dist/lib/web3/wagmi/config.js +6 -3
  358. package/dist/lib/web3/wagmi/config.js.map +1 -1
  359. package/dist/lib/web3/wagmi/constants.d.ts +12 -2
  360. package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
  361. package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts +25 -0
  362. package/dist/lib/web3/wagmi/isInsideSafeIframe.d.ts.map +1 -0
  363. package/dist/lib/web3/wagmi/isInsideSafeIframe.js +113 -0
  364. package/dist/lib/web3/wagmi/isInsideSafeIframe.js.map +1 -0
  365. package/dist/styles.css +81 -9
  366. package/dist/tokens/lists/constants.js.map +1 -1
  367. package/dist/tokens/lists/download.js.map +1 -1
  368. package/dist/tokens/lists/hooks.js.map +1 -1
  369. package/dist/tokens/lists/state/observer.js.map +1 -1
  370. package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
  371. package/dist/tokens/lists/state/tokenListsStateAtom.d.ts +2 -2
  372. package/dist/tokens/overrides.js.map +1 -1
  373. package/dist/tokens/queries.js.map +1 -1
  374. package/dist/tokens/stabeCoins/hooks.js.map +1 -1
  375. package/dist/tokens/state/constructTokens.js.map +1 -1
  376. package/dist/tokens/state/tokensAtom.js.map +1 -1
  377. package/dist/tokens/utils/filtering.js.map +1 -1
  378. package/dist/tokens/utils/sets.js.map +1 -1
  379. package/dist/tokens/utils/sorting.js.map +1 -1
  380. package/dist/tokens/utils/transferAmountsFromReceipt.d.ts +51 -0
  381. package/dist/tokens/utils/transferAmountsFromReceipt.d.ts.map +1 -0
  382. package/dist/tokens/utils/transferAmountsFromReceipt.js +281 -0
  383. package/dist/tokens/utils/transferAmountsFromReceipt.js.map +1 -0
  384. package/package.json +32 -31
  385. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts +0 -25
  386. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts.map +0 -1
  387. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js +0 -103
  388. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js.map +0 -1
  389. /package/dist/external/.pnpm/{react-compiler-runtime@19.1.0-rc.2_react@19.1.0 → react-compiler-runtime@19.1.0-rc.2_react@19.1.1}/external/react-compiler-runtime/dist/index.js +0 -0
  390. /package/dist/external/.pnpm/{vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33 → vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__7f2d7d5ed11750fbec42b3f5689c802d}/external/vaul/dist/index.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"useGasPrices.js","sources":["../../../src/hooks/gas/useGasPrices.ts"],"sourcesContent":["import axios from \"axios\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useChainId } from \"wagmi\";\nimport { API_URL } from \"@/lib/constants\";\nimport type { ConsolidatedGasPrices, GasPricesAPIResponse } from \"./types\";\nimport { isLegacyPriceResponse, weiToGwei } from \"./utils\";\nimport { gasPricesConfig } from \"./config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nconst GAS_PRICES_BASE_QUERY_KEY = \"gas-prices\";\n\ntype GasPricesQueryKey = [\n typeof GAS_PRICES_BASE_QUERY_KEY,\n chainId: SupportedChainId,\n eip1559Enabled: boolean,\n];\n\nexport function constructGasParamsQueryKey(\n chainId: SupportedChainId,\n eop1559Enabled: boolean\n): GasPricesQueryKey {\n return [GAS_PRICES_BASE_QUERY_KEY, chainId, eop1559Enabled];\n}\n\nexport function useGasPrices({\n chainId: _chainId,\n}: {\n chainId?: SupportedChainId;\n} = {}): UseQueryResult<ConsolidatedGasPrices, Error> {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n const config = gasPricesConfig[chainId];\n\n return useQuery<\n ConsolidatedGasPrices,\n Error,\n ConsolidatedGasPrices,\n GasPricesQueryKey\n >({\n queryKey: constructGasParamsQueryKey(chainId, config.eip1559),\n queryFn: async ({ signal }) => {\n const allowEip1559 = config.eip1559;\n\n const { data } = await axios.get<GasPricesAPIResponse>(\n `${API_URL}/prices/gas/${chainId}`,\n { signal, params: { eip1559: allowEip1559 } }\n );\n\n const legacyPrices = isLegacyPriceResponse(!allowEip1559, data)\n ? {\n slow: weiToGwei(data.safeLow),\n standard: weiToGwei(data.average),\n fast: weiToGwei(data.fast),\n instant: weiToGwei(data.fastest),\n }\n : {\n slow: weiToGwei(data.safeLow.legacyGasPrice),\n standard: weiToGwei(data.average.legacyGasPrice),\n fast: weiToGwei(data.fast.legacyGasPrice),\n instant: weiToGwei(data.fastest.legacyGasPrice),\n };\n\n const eip1559Prices = !isLegacyPriceResponse(!allowEip1559, data)\n ? {\n slow: {\n maxFeePerGas: weiToGwei(data.safeLow.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(\n data.safeLow.maxPriorityFeePerGas\n ),\n },\n standard: {\n maxFeePerGas: weiToGwei(data.average.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(\n data.average.maxPriorityFeePerGas\n ),\n },\n fast: {\n maxFeePerGas: weiToGwei(data.fast.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(data.fast.maxPriorityFeePerGas),\n },\n instant: {\n maxFeePerGas: weiToGwei(data.fastest.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(\n data.fastest.maxPriorityFeePerGas\n ),\n },\n }\n : undefined;\n\n return {\n legacyPrices,\n eip1559Prices,\n blockData: data.blockData,\n optimisticGasOracleData:\n data.optimismGasOracleData || data.baseGasOracleData,\n };\n },\n\n enabled: !!chainId,\n refetchInterval: import.meta.env.DEV\n ? config.refetchInterval * 2 // avoid rate limiting in dev\n : config.refetchInterval,\n });\n}\n"],"names":["GAS_PRICES_BASE_QUERY_KEY","constructGasParamsQueryKey","chainId","eop1559Enabled","useGasPrices","t0","$","_c","t1","_chainId","appChainId","useChainId","config","gasPricesConfig","t2","eip1559","t3","t4","signal","allowEip1559","data","axios","get","API_URL","params","legacyPrices","isLegacyPriceResponse","slow","weiToGwei","safeLow","standard","average","fast","instant","fastest","legacyGasPrice","eip1559Prices","maxFeePerGas","maxPriorityFeePerGas","undefined","blockData","optimisticGasOracleData","optimismGasOracleData","baseGasOracleData","t5","refetchInterval","t6","queryKey","queryFn","enabled","useQuery"],"mappings":"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"}
1
+ {"version":3,"file":"useGasPrices.js","sources":["../../../src/hooks/gas/useGasPrices.ts"],"sourcesContent":["import axios from \"axios\";\nimport { useQuery, type UseQueryResult } from \"@tanstack/react-query\";\nimport { useChainId } from \"wagmi\";\nimport { API_URL } from \"@/lib/constants\";\nimport type { ConsolidatedGasPrices, GasPricesAPIResponse } from \"./types\";\nimport { isLegacyPriceResponse, weiToGwei } from \"./utils\";\nimport { gasPricesConfig } from \"./config\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nconst GAS_PRICES_BASE_QUERY_KEY = \"gas-prices\";\n\ntype GasPricesQueryKey = [\n typeof GAS_PRICES_BASE_QUERY_KEY,\n chainId: SupportedChainId,\n eip1559Enabled: boolean,\n];\n\nexport function constructGasParamsQueryKey(\n chainId: SupportedChainId,\n eop1559Enabled: boolean\n): GasPricesQueryKey {\n return [GAS_PRICES_BASE_QUERY_KEY, chainId, eop1559Enabled];\n}\n\nexport function useGasPrices({\n chainId: _chainId,\n}: {\n chainId?: SupportedChainId;\n} = {}): UseQueryResult<ConsolidatedGasPrices, Error> {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n const config = gasPricesConfig[chainId];\n\n return useQuery<\n ConsolidatedGasPrices,\n Error,\n ConsolidatedGasPrices,\n GasPricesQueryKey\n >({\n queryKey: constructGasParamsQueryKey(chainId, config.eip1559),\n queryFn: async ({ signal }) => {\n const allowEip1559 = config.eip1559;\n\n const { data } = await axios.get<GasPricesAPIResponse>(\n `${API_URL}/prices/gas/${chainId}`,\n { signal, params: { eip1559: allowEip1559 } }\n );\n\n const legacyPrices = isLegacyPriceResponse(!allowEip1559, data)\n ? {\n slow: weiToGwei(data.safeLow),\n standard: weiToGwei(data.average),\n fast: weiToGwei(data.fast),\n instant: weiToGwei(data.fastest),\n }\n : {\n slow: weiToGwei(data.safeLow.legacyGasPrice),\n standard: weiToGwei(data.average.legacyGasPrice),\n fast: weiToGwei(data.fast.legacyGasPrice),\n instant: weiToGwei(data.fastest.legacyGasPrice),\n };\n\n const eip1559Prices = !isLegacyPriceResponse(!allowEip1559, data)\n ? {\n slow: {\n maxFeePerGas: weiToGwei(data.safeLow.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(\n data.safeLow.maxPriorityFeePerGas\n ),\n },\n standard: {\n maxFeePerGas: weiToGwei(data.average.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(\n data.average.maxPriorityFeePerGas\n ),\n },\n fast: {\n maxFeePerGas: weiToGwei(data.fast.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(data.fast.maxPriorityFeePerGas),\n },\n instant: {\n maxFeePerGas: weiToGwei(data.fastest.maxFeePerGas),\n maxPriorityFeePerGas: weiToGwei(\n data.fastest.maxPriorityFeePerGas\n ),\n },\n }\n : undefined;\n\n return {\n legacyPrices,\n eip1559Prices,\n blockData: data.blockData,\n optimisticGasOracleData:\n data.optimismGasOracleData || data.baseGasOracleData,\n };\n },\n\n enabled: !!chainId,\n refetchInterval: import.meta.env.DEV\n ? config.refetchInterval * 2 // avoid rate limiting in dev\n : config.refetchInterval,\n });\n}\n"],"names":["GAS_PRICES_BASE_QUERY_KEY","constructGasParamsQueryKey","chainId","eop1559Enabled","useGasPrices","t0","$","_c","t1","_chainId","appChainId","useChainId","config","gasPricesConfig","t2","eip1559","t3","t4","signal","allowEip1559","data","axios","get","API_URL","params","legacyPrices","isLegacyPriceResponse","slow","weiToGwei","safeLow","standard","average","fast","instant","fastest","legacyGasPrice","eip1559Prices","maxFeePerGas","maxPriorityFeePerGas","undefined","blockData","optimisticGasOracleData","optimismGasOracleData","baseGasOracleData","t5","refetchInterval","t6","queryKey","queryFn","enabled","useQuery"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsAccountContract.js","sources":["../../../src/hooks/getCode/useIsAccountContract.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useIsContractAtAddress } from \"./useIsContractAtAddress\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\nexport const useIsAccountContract = () => {\n const { address, chainId } = useAccount();\n\n // it makes more sense to check if the address is a contract on the same chain as it is connected too,\n // a Smart Contract Wallet will likely not be deployed on all chains the Widget supports\n const checkOnChainId =\n chainId && isSupportedChainId(chainId) ? chainId : undefined;\n // will default to Widget chainId anyway if Wallet is on an unsupported chain\n\n return useIsContractAtAddress({ address, chainId: checkOnChainId });\n};\n"],"names":["useIsAccountContract","$","_c","address","chainId","useAccount","t0","isSupportedChainId","undefined","checkOnChainId","t1","useIsContractAtAddress"],"mappings":";;;;;AAIO,MAAMA,uBAAuBA,MAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAClC,EAAA,MAAA;AAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,MAA6BC,UAAAA,EAAW;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAL,CAAAA,QAAAG,OAAAA,EAAA;AAKxCE,IAAAA,EAAAA,GAAAF,OAAAA,IAAWG,kBAAAA,CAAmBH,OAAO,CAAA,GAAIA,OAAAA,GAAOI,MAAAA;AAAYP,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAK,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAL,EAAA,CAAA,CAAA;AAAA;AAD9D,EAAA,MAAAQ,cAAAA,GACEH,EAAAA;AAA6D,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAT,EAAA,CAAA,CAAA,KAAAE,WAAAF,CAAAA,QAAAQ,cAAAA,EAAA;AAGjCC,IAAAA,EAAAA,GAAA;AAAA,MAAAP,OAAAA;AAAAA,MAAAC,OAAAA,EAAoBK;AAAAA,KAAc;AAAER,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAQ,cAAAA;AAAAR,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAA3DU,uBAAuBD,EAAoC,CAAA;AAAC;;;;"}
1
+ {"version":3,"file":"useIsAccountContract.js","sources":["../../../src/hooks/getCode/useIsAccountContract.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport { useIsContractAtAddress } from \"./useIsContractAtAddress\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\nexport const useIsAccountContract = () => {\n const { address, chainId } = useAccount();\n\n // it makes more sense to check if the address is a contract on the same chain as it is connected too,\n // a Smart Contract Wallet will likely not be deployed on all chains the Widget supports\n const checkOnChainId =\n chainId && isSupportedChainId(chainId) ? chainId : undefined;\n // will default to Widget chainId anyway if Wallet is on an unsupported chain\n\n return useIsContractAtAddress({ address, chainId: checkOnChainId });\n};\n"],"names":["useIsAccountContract","$","_c","address","chainId","useAccount","t0","isSupportedChainId","undefined","checkOnChainId","t1","useIsContractAtAddress"],"mappings":";;;;;AAIO,MAAMA,uBAAuBA,MAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAClC,EAAA,MAAA;AAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,MAA6BC,UAAAA,EAAW;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAL,CAAAA,QAAAG,OAAAA,EAAA;AAKxCE,IAAAA,EAAAA,GAAAF,OAAAA,IAAWG,kBAAAA,CAAmBH,OAAO,CAAA,GAAIA,OAAAA,GAAOI,MAAAA;AAAYP,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAK,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAL,EAAA,CAAA,CAAA;AAAA,EAAA;AAD9D,EAAA,MAAAQ,cAAAA,GACEH,EAAAA;AAA6D,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAT,EAAA,CAAA,CAAA,KAAAE,WAAAF,CAAAA,QAAAQ,cAAAA,EAAA;AAGjCC,IAAAA,EAAAA,GAAA;AAAA,MAAAP,OAAAA;AAAAA,MAAAC,OAAAA,EAAoBK;AAAAA,KAAc;AAAER,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAQ,cAAAA;AAAAR,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAA3DU,uBAAuBD,EAAoC,CAAA;AAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsContractAtAddress.js","sources":["../../../src/hooks/getCode/useIsContractAtAddress.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\n\nimport { isAddress } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport {\n constructIsContractAtAddressQueryKey,\n getIsContractAtAddress,\n} from \"./query\";\nimport type {\n GetIsContractAtAddressResult,\n IsContractAtAddressQueryKey,\n} from \"./types\";\n\nexport const useIsContractAtAddress = ({\n address,\n chainId: _chainId,\n}: {\n address?: string;\n chainId?: SupportedChainId;\n} = {}) => {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n return useQuery<\n GetIsContractAtAddressResult,\n Error,\n GetIsContractAtAddressResult,\n IsContractAtAddressQueryKey\n >({\n queryKey: constructIsContractAtAddressQueryKey({ address, chainId }),\n queryFn: async () => {\n assert(address && isAddress(address), \"address is required\");\n return getIsContractAtAddress({\n address,\n chainId,\n });\n },\n enabled: !!address && isAddress(address),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n};\n"],"names":["useIsContractAtAddress","t0","$","_c","t1","undefined","address","chainId","_chainId","appChainId","useChainId","t2","constructIsContractAtAddressQueryKey","t3","assert","isAddress","getIsContractAtAddress","t4","t5","queryKey","queryFn","enabled","staleTime","Infinity","gcTime","useQuery"],"mappings":"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"}
1
+ {"version":3,"file":"useIsContractAtAddress.js","sources":["../../../src/hooks/getCode/useIsContractAtAddress.ts"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\";\n\nimport { isAddress } from \"viem\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { useChainId } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport {\n constructIsContractAtAddressQueryKey,\n getIsContractAtAddress,\n} from \"./query\";\nimport type {\n GetIsContractAtAddressResult,\n IsContractAtAddressQueryKey,\n} from \"./types\";\n\nexport const useIsContractAtAddress = ({\n address,\n chainId: _chainId,\n}: {\n address?: string;\n chainId?: SupportedChainId;\n} = {}) => {\n const appChainId = useChainId();\n const chainId = _chainId ?? appChainId;\n\n return useQuery<\n GetIsContractAtAddressResult,\n Error,\n GetIsContractAtAddressResult,\n IsContractAtAddressQueryKey\n >({\n queryKey: constructIsContractAtAddressQueryKey({ address, chainId }),\n queryFn: async () => {\n assert(address && isAddress(address), \"address is required\");\n return getIsContractAtAddress({\n address,\n chainId,\n });\n },\n enabled: !!address && isAddress(address),\n staleTime: Infinity,\n gcTime: Infinity,\n });\n};\n"],"names":["useIsContractAtAddress","t0","$","_c","t1","undefined","address","chainId","_chainId","appChainId","useChainId","t2","constructIsContractAtAddressQueryKey","t3","assert","isAddress","getIsContractAtAddress","t4","t5","queryKey","queryFn","enabled","staleTime","Infinity","gcTime","useQuery"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSignArbitraryTypedData.js","sources":["../../../../../src/hooks/permit/hooks/common/useSignArbitraryTypedData.ts"],"sourcesContent":["import { useSignTypedData } from \"wagmi\";\nimport { type Hash } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { SignTypedDataVariables } from \"wagmi/query\";\n\nexport type UseSignedArbitraryTypedDataInput = {\n onSuccess?: (signature: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseSignedArbitraryTypedDataReturn = {\n signTypedData: (typedData: SignTypedDataVariables) => void;\n signTypedDataAsync: (typedData: SignTypedDataVariables) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n signature?: Hash;\n reset: () => void;\n};\n\nexport const useSignArbitraryTypedData = ({\n onSuccess,\n onError,\n}: UseSignedArbitraryTypedDataInput = {}): UseSignedArbitraryTypedDataReturn => {\n const { isConnected } = useAccount();\n\n const {\n signTypedData,\n signTypedDataAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: signature,\n reset,\n } = useSignTypedData();\n\n const signTx = (typedData: SignTypedDataVariables) => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(typedData, \"Typed data is required\");\n\n // Execute signature\n signTypedData(typedData, {\n onSuccess,\n onError,\n });\n };\n\n const signTxAsync = async (\n typedData: SignTypedDataVariables\n ): Promise<Hash> => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(typedData, \"Typed data is required\");\n\n // Execute signature and return the hash\n return signTypedDataAsync(typedData, {\n onSuccess,\n onError,\n });\n };\n\n return {\n signTypedData: signTx,\n signTypedDataAsync: signTxAsync,\n isPending,\n isSuccess,\n isError,\n error,\n signature,\n reset,\n };\n};\n"],"names":["useSignArbitraryTypedData","t0","$","_c","t1","undefined","onSuccess","onError","isConnected","useAccount","signTypedData","signTypedDataAsync","isPending","isSuccess","isError","error","data","signature","reset","useSignTypedData","t2","typedData","assert","signTx","t3","typedData_0","signTxAsync","t4"],"mappings":"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"}
1
+ {"version":3,"file":"useSignArbitraryTypedData.js","sources":["../../../../../src/hooks/permit/hooks/common/useSignArbitraryTypedData.ts"],"sourcesContent":["import { useSignTypedData } from \"wagmi\";\nimport { type Hash } from \"viem\";\nimport { useAccount } from \"wagmi\";\nimport { assert } from \"ts-essentials\";\nimport type { SignTypedDataVariables } from \"wagmi/query\";\n\nexport type UseSignedArbitraryTypedDataInput = {\n onSuccess?: (signature: Hash) => void;\n onError?: (error: Error) => void;\n};\n\nexport type UseSignedArbitraryTypedDataReturn = {\n signTypedData: (typedData: SignTypedDataVariables) => void;\n signTypedDataAsync: (typedData: SignTypedDataVariables) => Promise<Hash>;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n signature?: Hash;\n reset: () => void;\n};\n\nexport const useSignArbitraryTypedData = ({\n onSuccess,\n onError,\n}: UseSignedArbitraryTypedDataInput = {}): UseSignedArbitraryTypedDataReturn => {\n const { isConnected } = useAccount();\n\n const {\n signTypedData,\n signTypedDataAsync,\n isPending,\n isSuccess,\n isError,\n error,\n data: signature,\n reset,\n } = useSignTypedData();\n\n const signTx = (typedData: SignTypedDataVariables) => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(typedData, \"Typed data is required\");\n\n // Execute signature\n signTypedData(typedData, {\n onSuccess,\n onError,\n });\n };\n\n const signTxAsync = async (\n typedData: SignTypedDataVariables\n ): Promise<Hash> => {\n // Validate inputs using assert for better type safety\n assert(isConnected, \"Wallet not connected\");\n assert(typedData, \"Typed data is required\");\n\n // Execute signature and return the hash\n return signTypedDataAsync(typedData, {\n onSuccess,\n onError,\n });\n };\n\n return {\n signTypedData: signTx,\n signTypedDataAsync: signTxAsync,\n isPending,\n isSuccess,\n isError,\n error,\n signature,\n reset,\n };\n};\n"],"names":["useSignArbitraryTypedData","t0","$","_c","t1","undefined","onSuccess","onError","isConnected","useAccount","signTypedData","signTypedDataAsync","isPending","isSuccess","isError","error","data","signature","reset","useSignTypedData","t2","typedData","assert","signTx","t3","typedData_0","signTxAsync","t4"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSignPermit.js","sources":["../../../../../src/hooks/permit/hooks/common/useSignPermit.ts"],"sourcesContent":["import {\n useSignArbitraryTypedData,\n type UseSignedArbitraryTypedDataInput,\n} from \"./useSignArbitraryTypedData\";\nimport {\n constructPermitTypedData,\n type PermitTypedDataInput,\n} from \"../../utils/construct\";\n\nexport function useSignPermit({\n onSuccess,\n onError,\n}: UseSignedArbitraryTypedDataInput = {}) {\n const {\n signTypedData,\n signTypedDataAsync,\n isPending,\n isSuccess,\n isError,\n error,\n signature,\n reset,\n } = useSignArbitraryTypedData({ onSuccess, onError });\n\n const signPermit = (input: PermitTypedDataInput) => {\n const typedData = constructPermitTypedData(input);\n signTypedData(typedData);\n };\n\n const signPermitAsync = (input: PermitTypedDataInput) => {\n const typedData = constructPermitTypedData(input);\n return signTypedDataAsync(typedData);\n };\n\n return {\n signPermit,\n signPermitAsync,\n isPending,\n isSuccess,\n isError,\n error,\n signature,\n reset,\n };\n}\n"],"names":["useSignPermit","t0","$","_c","t1","undefined","onSuccess","onError","t2","signTypedData","signTypedDataAsync","isPending","isSuccess","isError","error","signature","reset","useSignArbitraryTypedData","t3","input","typedData","constructPermitTypedData","signPermit","t4","input_0","typedData_0","signPermitAsync","t5"],"mappings":"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"}
1
+ {"version":3,"file":"useSignPermit.js","sources":["../../../../../src/hooks/permit/hooks/common/useSignPermit.ts"],"sourcesContent":["import {\n useSignArbitraryTypedData,\n type UseSignedArbitraryTypedDataInput,\n} from \"./useSignArbitraryTypedData\";\nimport {\n constructPermitTypedData,\n type PermitTypedDataInput,\n} from \"../../utils/construct\";\n\nexport function useSignPermit({\n onSuccess,\n onError,\n}: UseSignedArbitraryTypedDataInput = {}) {\n const {\n signTypedData,\n signTypedDataAsync,\n isPending,\n isSuccess,\n isError,\n error,\n signature,\n reset,\n } = useSignArbitraryTypedData({ onSuccess, onError });\n\n const signPermit = (input: PermitTypedDataInput) => {\n const typedData = constructPermitTypedData(input);\n signTypedData(typedData);\n };\n\n const signPermitAsync = (input: PermitTypedDataInput) => {\n const typedData = constructPermitTypedData(input);\n return signTypedDataAsync(typedData);\n };\n\n return {\n signPermit,\n signPermitAsync,\n isPending,\n isSuccess,\n isError,\n error,\n signature,\n reset,\n };\n}\n"],"names":["useSignPermit","t0","$","_c","t1","undefined","onSuccess","onError","t2","signTypedData","signTypedDataAsync","isPending","isSuccess","isError","error","signature","reset","useSignArbitraryTypedData","t3","input","typedData","constructPermitTypedData","signPermit","t4","input_0","typedData_0","signPermitAsync","t5"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useWalletSupportsPermit.js","sources":["../../../../../src/hooks/permit/hooks/common/useWalletSupportsPermit.ts"],"sourcesContent":["import { useIsAccountContract } from \"@/hooks/getCode/useIsAccountContract\";\n\ntype UseWalletSupportsPermitResult = {\n permit1: boolean;\n permit2: boolean;\n};\n\nexport function useWalletSupportsPermit(): UseWalletSupportsPermitResult {\n const isWalletContract = useIsAccountContract().data?.isContract ?? false;\n // Multisig Smart Wallet signature can't be encoded for permitMethodArgs\n // simpler to just disable for all Smart Contract Wallets, multisig and not\n return {\n permit1: !isWalletContract,\n permit2: !isWalletContract,\n // @TODO enable for Permit2 Delta when support is added\n };\n}\n"],"names":["useWalletSupportsPermit","$","_c","isWalletContract","useIsAccountContract","data","isContract","t0","t1","t2","permit1","permit2"],"mappings":";;;AAOO,SAAAA,uBAAAA,GAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACL,EAAA,MAAAC,gBAAAA,GAAyBC,oBAAAA,EAAqB,CAACC,IAAAA,EAAAC,UAAAA,IAAA,KAAA;AAIpC,EAAA,MAAAC,MAACJ,gBAAAA;AACD,EAAA,MAAAK,MAACL,gBAAAA;AAAgB,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAR,EAAA,CAAA,CAAA,KAAAM,MAAAN,CAAAA,QAAAO,EAAAA,EAAA;AAFrBC,IAAAA,EAAAA,GAAA;AAAA,MAAAC,OAAAA,EACIH,EAAAA;AAAAA,MAAiBI,OAAAA,EACjBH;AAAAA,KAAiB;AAE3BP,IAAAA,CAAAA,MAAAM,EAAAA;AAAAN,IAAAA,CAAAA,MAAAO,EAAAA;AAAAP,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAJMQ,EAAAA;AAIN;;;;"}
1
+ {"version":3,"file":"useWalletSupportsPermit.js","sources":["../../../../../src/hooks/permit/hooks/common/useWalletSupportsPermit.ts"],"sourcesContent":["import { useIsAccountContract } from \"@/hooks/getCode/useIsAccountContract\";\n\ntype UseWalletSupportsPermitResult = {\n permit1: boolean;\n permit2: boolean;\n};\n\nexport function useWalletSupportsPermit(): UseWalletSupportsPermitResult {\n const isWalletContract = useIsAccountContract().data?.isContract ?? false;\n // Multisig Smart Wallet signature can't be encoded for permitMethodArgs\n // simpler to just disable for all Smart Contract Wallets, multisig and not\n return {\n permit1: !isWalletContract,\n permit2: !isWalletContract,\n // @TODO enable for Permit2 Delta when support is added\n };\n}\n"],"names":["useWalletSupportsPermit","$","_c","isWalletContract","useIsAccountContract","data","isContract","t0","t1","t2","permit1","permit2"],"mappings":";;;AAOO,SAAAA,uBAAAA,GAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACL,EAAA,MAAAC,gBAAAA,GAAyBC,oBAAAA,EAAqB,CAACC,IAAAA,EAAAC,UAAAA,IAAA,KAAA;AAIpC,EAAA,MAAAC,MAACJ,gBAAAA;AACD,EAAA,MAAAK,MAACL,gBAAAA;AAAgB,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAR,EAAA,CAAA,CAAA,KAAAM,MAAAN,CAAAA,QAAAO,EAAAA,EAAA;AAFrBC,IAAAA,EAAAA,GAAA;AAAA,MAAAC,OAAAA,EACIH,EAAAA;AAAAA,MAAiBI,OAAAA,EACjBH;AAAAA,KAAiB;AAE3BP,IAAAA,CAAAA,MAAAM,EAAAA;AAAAN,IAAAA,CAAAA,MAAAO,EAAAA;AAAAP,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAR,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAJMQ,EAAAA;AAIN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGetPermitInfo.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useGetPermitInfo.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Address } from \"viem\";\nimport {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport {\n detectPermitSupportType,\n type NotDetectedPermitSupport,\n type PermitSupportResult,\n} from \"../../utils/detect\";\nimport { useConfig } from \"wagmi\";\nimport { constructAddressLinkForChain } from \"@/lib/utils/explorer\";\nimport { assert } from \"ts-essentials\";\nimport { useLogger } from \"@/core/logger\";\n\ntype GetPermitInfoQueryKey = readonly [\n \"permitInfo\",\n Address?,\n SupportedChainId?,\n];\n\ntype PermitInfo = PermitSupportResult & {\n tokenAddress: Address;\n chainId: SupportedChainId;\n};\n\ntype NotDetectedPermitInfo = NotDetectedPermitSupport & {\n tokenAddress: Address;\n chainId: SupportedChainId;\n};\n\ntype PermitInfoResult = PermitInfo | NotDetectedPermitInfo;\n\nexport type UseGetPermitInfoParameters<Select = PermitInfoResult> = {\n tokenAddress?: Address;\n chainId?: SupportedChainId;\n query?: Omit<\n UseQueryOptions<PermitInfoResult, Error, Select, GetPermitInfoQueryKey>,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\nexport type UseGetPermitInfoReturnType<Select = PermitInfoResult> =\n UseQueryResult<Select, Error>;\n\nexport function useGetPermitInfo<Select = PermitInfoResult>({\n tokenAddress,\n chainId,\n query,\n}: UseGetPermitInfoParameters<Select>): UseGetPermitInfoReturnType<Select> {\n const logger = useLogger(\"PERMIT1::GetPermitInfo\");\n const config = useConfig();\n\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useQuery<\n PermitInfoResult,\n Error,\n Select,\n GetPermitInfoQueryKey\n >({\n queryKey: [\"permitInfo\", tokenAddress?.toLowerCase() as Address, chainId],\n queryFn: async () => {\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const permitSupport = await detectPermitSupportType({\n config,\n tokenAddress,\n chainId,\n });\n\n const result = {\n ...permitSupport,\n tokenAddress,\n chainId,\n };\n\n logger.log(\"result\", result);\n logger.log(\n \"check Token in explorer\",\n constructAddressLinkForChain({\n chainId,\n address: tokenAddress,\n }) + \"#writeContract\"\n );\n\n return result;\n },\n // Token Permit support won't change during App runtime\n staleTime: Infinity,\n gcTime: Infinity,\n ...query,\n enabled: queryEnabled && !!tokenAddress && !!chainId,\n });\n\n return queryResult;\n}\n"],"names":["useGetPermitInfo","t0","$","_c","tokenAddress","chainId","query","logger","useLogger","config","useConfig","queryEnabled","enabled","t1","toLowerCase","t2","t3","t4","assert","permitSupport","detectPermitSupportType","result","log","constructAddressLinkForChain","address","t5","t6","queryKey","queryFn","staleTime","Infinity","gcTime","queryResult","useQuery"],"mappings":"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"}
1
+ {"version":3,"file":"useGetPermitInfo.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useGetPermitInfo.ts"],"sourcesContent":["import type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type { Address } from \"viem\";\nimport {\n useQuery,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport {\n detectPermitSupportType,\n type NotDetectedPermitSupport,\n type PermitSupportResult,\n} from \"../../utils/detect\";\nimport { useConfig } from \"wagmi\";\nimport { constructAddressLinkForChain } from \"@/lib/utils/explorer\";\nimport { assert } from \"ts-essentials\";\nimport { useLogger } from \"@/core/logger\";\n\ntype GetPermitInfoQueryKey = readonly [\n \"permitInfo\",\n Address?,\n SupportedChainId?,\n];\n\ntype PermitInfo = PermitSupportResult & {\n tokenAddress: Address;\n chainId: SupportedChainId;\n};\n\ntype NotDetectedPermitInfo = NotDetectedPermitSupport & {\n tokenAddress: Address;\n chainId: SupportedChainId;\n};\n\ntype PermitInfoResult = PermitInfo | NotDetectedPermitInfo;\n\nexport type UseGetPermitInfoParameters<Select = PermitInfoResult> = {\n tokenAddress?: Address;\n chainId?: SupportedChainId;\n query?: Omit<\n UseQueryOptions<PermitInfoResult, Error, Select, GetPermitInfoQueryKey>,\n \"queryKey\" | \"queryFn\"\n >;\n};\n\nexport type UseGetPermitInfoReturnType<Select = PermitInfoResult> =\n UseQueryResult<Select, Error>;\n\nexport function useGetPermitInfo<Select = PermitInfoResult>({\n tokenAddress,\n chainId,\n query,\n}: UseGetPermitInfoParameters<Select>): UseGetPermitInfoReturnType<Select> {\n const logger = useLogger(\"PERMIT1::GetPermitInfo\");\n const config = useConfig();\n\n const queryEnabled = query?.enabled ?? true;\n\n const queryResult = useQuery<\n PermitInfoResult,\n Error,\n Select,\n GetPermitInfoQueryKey\n >({\n queryKey: [\"permitInfo\", tokenAddress?.toLowerCase() as Address, chainId],\n queryFn: async () => {\n assert(tokenAddress, \"tokenAddress is required\");\n assert(chainId, \"chainId is required\");\n\n const permitSupport = await detectPermitSupportType({\n config,\n tokenAddress,\n chainId,\n });\n\n const result = {\n ...permitSupport,\n tokenAddress,\n chainId,\n };\n\n logger.log(\"result\", result);\n logger.log(\n \"check Token in explorer\",\n constructAddressLinkForChain({\n chainId,\n address: tokenAddress,\n }) + \"#writeContract\"\n );\n\n return result;\n },\n // Token Permit support won't change during App runtime\n staleTime: Infinity,\n gcTime: Infinity,\n ...query,\n enabled: queryEnabled && !!tokenAddress && !!chainId,\n });\n\n return queryResult;\n}\n"],"names":["useGetPermitInfo","t0","$","_c","tokenAddress","chainId","query","logger","useLogger","config","useConfig","queryEnabled","enabled","t1","toLowerCase","t2","t3","t4","assert","permitSupport","detectPermitSupportType","result","log","constructAddressLinkForChain","address","t5","t6","queryKey","queryFn","staleTime","Infinity","gcTime","queryResult","useQuery"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGetSafePermitInfo.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useGetSafePermitInfo.ts"],"sourcesContent":["import type { Address } from \"viem\";\nimport { useGetPermitInfo } from \"./useGetPermitInfo\";\nimport { useTryToSignPermit1 } from \"./useTryToSignPermit1\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type {\n TrySignPermitFailure,\n TrySignPermitSuccess,\n} from \"../../utils/trySignPermit1\";\nimport type { PermitSupportResult } from \"../../utils/detect\";\nimport type { Prettify } from \"ts-essentials\";\n\ntype UseGetSafePermitInfoParameters = {\n tokenAddress?: Address;\n chainId?: SupportedChainId;\n enabled?: boolean;\n};\n\ntype UseGetSafePermitInfoSuccess = {\n testPermitResult?: TrySignPermitSuccess;\n safePermitInfo?: PermitSupportResult;\n};\n\ntype UseGetSafePermitInfoFailure = {\n testPermitResult?: TrySignPermitFailure;\n safePermitInfo?: undefined;\n};\n\nexport type UseGetSafePermitInfoResult = Prettify<\n (UseGetSafePermitInfoSuccess | UseGetSafePermitInfoFailure) & {\n isLoading: boolean;\n isError: boolean;\n error: Error | null;\n isSuccess: boolean;\n }\n>;\n\n/**\n * Prefer this hook for getting permitInfo\n * as it employs more checks\n */\nexport function useGetSafePermitInfo({\n tokenAddress,\n chainId,\n enabled = true, // enabled: false to get cached results\n}: UseGetSafePermitInfoParameters): UseGetSafePermitInfoResult {\n const permitInfoQuery = useGetPermitInfo({\n tokenAddress,\n chainId,\n query: {\n enabled,\n },\n });\n\n const trySignPermitQuery = useTryToSignPermit1({\n permitInfo:\n permitInfoQuery.data?.type !== \"NOT_DETECTED\"\n ? permitInfoQuery.data\n : undefined,\n tokenAddress: permitInfoQuery.data?.tokenAddress,\n chainId: permitInfoQuery.data?.chainId,\n query: {\n enabled,\n },\n });\n\n const testPermitResult = trySignPermitQuery.data;\n\n const safePermitInfo = testPermitResult?.success\n ? testPermitResult.permitInfo\n : undefined;\n const isLoading = permitInfoQuery.isLoading || trySignPermitQuery.isLoading;\n const isError = permitInfoQuery.isError || trySignPermitQuery.isError;\n const error = permitInfoQuery.error || trySignPermitQuery.error;\n const isSuccess = permitInfoQuery.isSuccess || trySignPermitQuery.isSuccess;\n\n if (testPermitResult?.success) {\n return {\n testPermitResult,\n safePermitInfo, // when present, Token can use some kind of Permit1\n isLoading,\n isError,\n error,\n isSuccess,\n };\n }\n\n return {\n testPermitResult,\n isLoading,\n isError,\n error,\n isSuccess,\n };\n}\n"],"names":["useGetSafePermitInfo","t0","$","_c","tokenAddress","chainId","enabled","t1","undefined","t2","t3","query","permitInfoQuery","useGetPermitInfo","t4","data","type","t5","t6","t7","t8","permitInfo","trySignPermitQuery","useTryToSignPermit1","testPermitResult","safePermitInfo","success","isLoading","isError","error","isSuccess","t9"],"mappings":"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"}
1
+ {"version":3,"file":"useGetSafePermitInfo.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useGetSafePermitInfo.ts"],"sourcesContent":["import type { Address } from \"viem\";\nimport { useGetPermitInfo } from \"./useGetPermitInfo\";\nimport { useTryToSignPermit1 } from \"./useTryToSignPermit1\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport type {\n TrySignPermitFailure,\n TrySignPermitSuccess,\n} from \"../../utils/trySignPermit1\";\nimport type { PermitSupportResult } from \"../../utils/detect\";\nimport type { Prettify } from \"ts-essentials\";\n\ntype UseGetSafePermitInfoParameters = {\n tokenAddress?: Address;\n chainId?: SupportedChainId;\n enabled?: boolean;\n};\n\ntype UseGetSafePermitInfoSuccess = {\n testPermitResult?: TrySignPermitSuccess;\n safePermitInfo?: PermitSupportResult;\n};\n\ntype UseGetSafePermitInfoFailure = {\n testPermitResult?: TrySignPermitFailure;\n safePermitInfo?: undefined;\n};\n\nexport type UseGetSafePermitInfoResult = Prettify<\n (UseGetSafePermitInfoSuccess | UseGetSafePermitInfoFailure) & {\n isLoading: boolean;\n isError: boolean;\n error: Error | null;\n isSuccess: boolean;\n }\n>;\n\n/**\n * Prefer this hook for getting permitInfo\n * as it employs more checks\n */\nexport function useGetSafePermitInfo({\n tokenAddress,\n chainId,\n enabled = true, // enabled: false to get cached results\n}: UseGetSafePermitInfoParameters): UseGetSafePermitInfoResult {\n const permitInfoQuery = useGetPermitInfo({\n tokenAddress,\n chainId,\n query: {\n enabled,\n },\n });\n\n const trySignPermitQuery = useTryToSignPermit1({\n permitInfo:\n permitInfoQuery.data?.type !== \"NOT_DETECTED\"\n ? permitInfoQuery.data\n : undefined,\n tokenAddress: permitInfoQuery.data?.tokenAddress,\n chainId: permitInfoQuery.data?.chainId,\n query: {\n enabled,\n },\n });\n\n const testPermitResult = trySignPermitQuery.data;\n\n const safePermitInfo = testPermitResult?.success\n ? testPermitResult.permitInfo\n : undefined;\n const isLoading = permitInfoQuery.isLoading || trySignPermitQuery.isLoading;\n const isError = permitInfoQuery.isError || trySignPermitQuery.isError;\n const error = permitInfoQuery.error || trySignPermitQuery.error;\n const isSuccess = permitInfoQuery.isSuccess || trySignPermitQuery.isSuccess;\n\n if (testPermitResult?.success) {\n return {\n testPermitResult,\n safePermitInfo, // when present, Token can use some kind of Permit1\n isLoading,\n isError,\n error,\n isSuccess,\n };\n }\n\n return {\n testPermitResult,\n isLoading,\n isError,\n error,\n isSuccess,\n };\n}\n"],"names":["useGetSafePermitInfo","t0","$","_c","tokenAddress","chainId","enabled","t1","undefined","t2","t3","query","permitInfoQuery","useGetPermitInfo","t4","data","type","t5","t6","t7","t8","permitInfo","trySignPermitQuery","useTryToSignPermit1","testPermitResult","safePermitInfo","success","isLoading","isError","error","isSuccess","t9"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePermit1Nonce.js","sources":["../../../../../src/hooks/permit/hooks/permit1/usePermit1Nonce.ts"],"sourcesContent":["import { useReadContracts } from \"wagmi\";\nimport { ERC_20_NONCES_ABI } from \"../../utils/constants\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { atom, useAtomValue, useSetAtom } from \"jotai\";\nimport type { Token } from \"@/tokens/state/types\";\nimport type {\n QueryObserverResult,\n RefetchOptions,\n} from \"@tanstack/react-query\";\nimport type { Address } from \"viem\";\nimport { useMemo } from \"react\";\nimport type { ReadContractsData } from \"wagmi/query\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\n\ninterface UsePermitNonceParams {\n token?: Address;\n owner?: Address;\n chainId?: SupportedChainId;\n enabled?: boolean;\n}\n\n// chainId:token:owner => unused nonce (next to be used, starting with 0)\nconst NoncesAtom = atom<Record<TokenNonceKey, bigint>>({});\n\ntype SetNonceInput = {\n token: Pick<Token, \"address\" | \"network\">;\n owner: Address;\n usedNonce?: bigint;\n};\n\ntype UseMarkNonceAsUsedResult = {\n // mark as minimum nonce to use for next Permit, after sending Order or tx out\n markNonceAsUsed: (input: SetNonceInput) => void;\n // clear saved minimum nonce to rely on fetched nonce, if Order or tx failed\n clearNonce: (input: Pick<SetNonceInput, \"token\" | \"owner\">) => void;\n};\n\nexport function useMarkNonceAsUsed(): UseMarkNonceAsUsedResult {\n const setNonces = useSetAtom(NoncesAtom);\n\n const markNonceAsUsed: UseMarkNonceAsUsedResult[\"markNonceAsUsed\"] = ({\n token,\n owner,\n usedNonce,\n }) => {\n setNonces((prev) => {\n const key = getNonceKey({\n token: token.address as Address,\n owner,\n chainId: token.network,\n });\n const prevNonce = usedNonce ?? prev[key] ?? 0n;\n return {\n ...prev,\n [key]: prevNonce + 1n,\n };\n });\n };\n\n const clearNonce: UseMarkNonceAsUsedResult[\"clearNonce\"] = ({\n token,\n owner,\n }) => {\n setNonces((prev) => {\n const key = getNonceKey({\n token: token.address as Address,\n owner,\n chainId: token.network,\n });\n\n if (prev[key] === undefined) return prev;\n\n const { [key]: _, ...withoutKey } = prev;\n return withoutKey;\n });\n };\n\n return {\n markNonceAsUsed,\n clearNonce,\n };\n}\n\ntype GetNonceInput = {\n token: Address;\n owner: Address;\n chainId: SupportedChainId;\n};\n\ntype TokenNonceKey = `${number}:${Address}:${Address}`;\n\nfunction getNonceKey({ token, owner, chainId }: GetNonceInput): TokenNonceKey {\n return `${chainId}:${token.toLowerCase() as Address}:${owner.toLowerCase() as Address}` as const;\n}\n\nexport type NonceMethod = (typeof ERC_20_NONCES_ABI)[number][\"name\"];\n\ntype PermitNonceResult = {\n nonceMethod: NonceMethod;\n nonceToUse: bigint;\n};\n\nexport type UsePermit1NonceResult = {\n // null when no nonce support detected\n nonceToUse?: PermitNonceResult[\"nonceToUse\"] | null;\n nonceMethod?: PermitNonceResult[\"nonceMethod\"] | null;\n isLoading: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n refetch: (\n options?: RefetchOptions\n ) => Promise<QueryObserverResult<PermitNonceResult | null, Error>>;\n};\n\nexport function usePermit1Nonce({\n token,\n owner,\n chainId,\n enabled = true,\n}: UsePermitNonceParams): UsePermit1NonceResult {\n const key =\n token && owner && chainId ? getNonceKey({ token, owner, chainId }) : null;\n\n const noncesMap = useAtomValue(NoncesAtom);\n const tokenNotETH = token && !isETHaddress(token);\n\n // explicitly memoize select\n const { contractCalls, select } = useMemo(() => {\n const select = (\n data: ReadContractsData<typeof contractCalls, true>\n ): PermitNonceResult | null => {\n const successIndex = data.findIndex((d) => d.status === \"success\");\n // no method successfully returned anything\n if (successIndex === -1) return null;\n const method = contractCalls[successIndex]?.functionName;\n const result = data[successIndex]?.result;\n\n // the vars will always be non-null at this point\n if (!method || result === undefined) return null;\n\n const lastUnusedNonce = key ? (noncesMap[key] ?? 0n) : 0n;\n const nonce = result > lastUnusedNonce ? result : lastUnusedNonce;\n\n return {\n nonceMethod: method,\n nonceToUse: nonce,\n };\n };\n\n const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n // for the case where the token or owner is not set, to match the types,\n // readContracts isn't run anyway because of enabled=false\n const tokenAddress = (token?.toLowerCase() as Address) ?? ZERO_ADDRESS;\n const ownerAddress = (owner?.toLowerCase() as Address) ?? ZERO_ADDRESS;\n\n const contractCalls = [\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonces\",\n args: [ownerAddress],\n },\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"_nonces\",\n args: [ownerAddress],\n },\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonce\",\n args: [ownerAddress],\n },\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"getNonce\",\n args: [ownerAddress],\n },\n ] as const;\n\n return {\n contractCalls,\n select,\n };\n }, [noncesMap, key, owner, token]);\n\n const {\n data: nonceResult,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n } = useReadContracts({\n allowFailure: true,\n contracts: contractCalls,\n query: {\n enabled: enabled && tokenNotETH && !!(token && owner && chainId),\n select,\n },\n });\n\n return {\n nonceToUse: nonceResult === null ? null : nonceResult?.nonceToUse,\n nonceMethod: nonceResult === null ? null : nonceResult?.nonceMethod,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n };\n}\n"],"names":["NoncesAtom","atom","useMarkNonceAsUsed","setNonces","useSetAtom","markNonceAsUsed","token","owner","usedNonce","prev","key","getNonceKey","address","chainId","network","prevNonce","clearNonce","undefined","_","withoutKey","toLowerCase","usePermit1Nonce","enabled","noncesMap","useAtomValue","tokenNotETH","isETHaddress","contractCalls","select","useMemo","data","successIndex","findIndex","d","status","method","functionName","result","lastUnusedNonce","nonce","nonceMethod","nonceToUse","ZERO_ADDRESS","tokenAddress","ownerAddress","abi","ERC_20_NONCES_ABI","args","nonceResult","isLoading","isError","isSuccess","error","refetch","useReadContracts","allowFailure","contracts","query"],"mappings":"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"}
1
+ {"version":3,"file":"usePermit1Nonce.js","sources":["../../../../../src/hooks/permit/hooks/permit1/usePermit1Nonce.ts"],"sourcesContent":["import { useReadContracts } from \"wagmi\";\nimport { ERC_20_NONCES_ABI } from \"../../utils/constants\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\nimport { atom, useAtomValue, useSetAtom } from \"jotai\";\nimport type { Token } from \"@/tokens/state/types\";\nimport type {\n QueryObserverResult,\n RefetchOptions,\n} from \"@tanstack/react-query\";\nimport type { Address } from \"viem\";\nimport { useMemo } from \"react\";\nimport type { ReadContractsData } from \"wagmi/query\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\n\ninterface UsePermitNonceParams {\n token?: Address;\n owner?: Address;\n chainId?: SupportedChainId;\n enabled?: boolean;\n}\n\n// chainId:token:owner => unused nonce (next to be used, starting with 0)\nconst NoncesAtom = atom<Record<TokenNonceKey, bigint>>({});\n\ntype SetNonceInput = {\n token: Pick<Token, \"address\" | \"network\">;\n owner: Address;\n usedNonce?: bigint;\n};\n\ntype UseMarkNonceAsUsedResult = {\n // mark as minimum nonce to use for next Permit, after sending Order or tx out\n markNonceAsUsed: (input: SetNonceInput) => void;\n // clear saved minimum nonce to rely on fetched nonce, if Order or tx failed\n clearNonce: (input: Pick<SetNonceInput, \"token\" | \"owner\">) => void;\n};\n\nexport function useMarkNonceAsUsed(): UseMarkNonceAsUsedResult {\n const setNonces = useSetAtom(NoncesAtom);\n\n const markNonceAsUsed: UseMarkNonceAsUsedResult[\"markNonceAsUsed\"] = ({\n token,\n owner,\n usedNonce,\n }) => {\n setNonces((prev) => {\n const key = getNonceKey({\n token: token.address as Address,\n owner,\n chainId: token.network,\n });\n const prevNonce = usedNonce ?? prev[key] ?? 0n;\n return {\n ...prev,\n [key]: prevNonce + 1n,\n };\n });\n };\n\n const clearNonce: UseMarkNonceAsUsedResult[\"clearNonce\"] = ({\n token,\n owner,\n }) => {\n setNonces((prev) => {\n const key = getNonceKey({\n token: token.address as Address,\n owner,\n chainId: token.network,\n });\n\n if (prev[key] === undefined) return prev;\n\n const { [key]: _, ...withoutKey } = prev;\n return withoutKey;\n });\n };\n\n return {\n markNonceAsUsed,\n clearNonce,\n };\n}\n\ntype GetNonceInput = {\n token: Address;\n owner: Address;\n chainId: SupportedChainId;\n};\n\ntype TokenNonceKey = `${number}:${Address}:${Address}`;\n\nfunction getNonceKey({ token, owner, chainId }: GetNonceInput): TokenNonceKey {\n return `${chainId}:${token.toLowerCase() as Address}:${owner.toLowerCase() as Address}` as const;\n}\n\nexport type NonceMethod = (typeof ERC_20_NONCES_ABI)[number][\"name\"];\n\ntype PermitNonceResult = {\n nonceMethod: NonceMethod;\n nonceToUse: bigint;\n};\n\nexport type UsePermit1NonceResult = {\n // null when no nonce support detected\n nonceToUse?: PermitNonceResult[\"nonceToUse\"] | null;\n nonceMethod?: PermitNonceResult[\"nonceMethod\"] | null;\n isLoading: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n refetch: (\n options?: RefetchOptions\n ) => Promise<QueryObserverResult<PermitNonceResult | null, Error>>;\n};\n\nexport function usePermit1Nonce({\n token,\n owner,\n chainId,\n enabled = true,\n}: UsePermitNonceParams): UsePermit1NonceResult {\n const key =\n token && owner && chainId ? getNonceKey({ token, owner, chainId }) : null;\n\n const noncesMap = useAtomValue(NoncesAtom);\n const tokenNotETH = token && !isETHaddress(token);\n\n // explicitly memoize select\n const { contractCalls, select } = useMemo(() => {\n const select = (\n data: ReadContractsData<typeof contractCalls, true>\n ): PermitNonceResult | null => {\n const successIndex = data.findIndex((d) => d.status === \"success\");\n // no method successfully returned anything\n if (successIndex === -1) return null;\n const method = contractCalls[successIndex]?.functionName;\n const result = data[successIndex]?.result;\n\n // the vars will always be non-null at this point\n if (!method || result === undefined) return null;\n\n const lastUnusedNonce = key ? (noncesMap[key] ?? 0n) : 0n;\n const nonce = result > lastUnusedNonce ? result : lastUnusedNonce;\n\n return {\n nonceMethod: method,\n nonceToUse: nonce,\n };\n };\n\n const ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n // for the case where the token or owner is not set, to match the types,\n // readContracts isn't run anyway because of enabled=false\n const tokenAddress = (token?.toLowerCase() as Address) ?? ZERO_ADDRESS;\n const ownerAddress = (owner?.toLowerCase() as Address) ?? ZERO_ADDRESS;\n\n const contractCalls = [\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonces\",\n args: [ownerAddress],\n },\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"_nonces\",\n args: [ownerAddress],\n },\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonce\",\n args: [ownerAddress],\n },\n {\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"getNonce\",\n args: [ownerAddress],\n },\n ] as const;\n\n return {\n contractCalls,\n select,\n };\n }, [noncesMap, key, owner, token]);\n\n const {\n data: nonceResult,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n } = useReadContracts({\n allowFailure: true,\n contracts: contractCalls,\n query: {\n enabled: enabled && tokenNotETH && !!(token && owner && chainId),\n select,\n },\n });\n\n return {\n nonceToUse: nonceResult === null ? null : nonceResult?.nonceToUse,\n nonceMethod: nonceResult === null ? null : nonceResult?.nonceMethod,\n isLoading,\n isError,\n isSuccess,\n error,\n refetch,\n };\n}\n"],"names":["NoncesAtom","atom","useMarkNonceAsUsed","setNonces","useSetAtom","markNonceAsUsed","token","owner","usedNonce","prev","key","getNonceKey","address","chainId","network","prevNonce","clearNonce","undefined","_","withoutKey","toLowerCase","usePermit1Nonce","enabled","noncesMap","useAtomValue","tokenNotETH","isETHaddress","contractCalls","select","useMemo","data","successIndex","findIndex","d","status","method","functionName","result","lastUnusedNonce","nonce","nonceMethod","nonceToUse","ZERO_ADDRESS","tokenAddress","ownerAddress","abi","ERC_20_NONCES_ABI","args","nonceResult","isLoading","isError","isSuccess","error","refetch","useReadContracts","allowFailure","contracts","query"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSignTokenPermit1.js","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"],"names":["useSignTokenPermit1","t0","$","_c","onSuccess","onError","token","value","spender","enabled","t1","undefined","permit1","isPermit1Supported","useWalletSupportsPermit","queriesEnabled","t2","address","t3","network","t4","tokenAddress","chainId","permitInfoQueryResult","useGetSafePermitInfo","owner","useAccount","t5","t6","t7","nonceQueryResult","usePermit1Nonce","t8","isLoading","t9","isError","t10","isSuccess","t11","error","t12","isPending","permitFetchingState","isPermitSupported","safePermitInfo","isPermitReadyToSign","nonceToUse","t13","signMut","useSignPermit","t14","permitSigningState","nonce","permitInfo","t15","params","_spender","_value","assert","deadline","produceSignatureDeadline","type","input","input_0","holder","expiry","allowed","producePermitInput","t16","params_0","input_1","signature","signPermitAsync","encodedArgs","encodePermit1MethodArgs","permit1EncodedArgs","signedPermitData","signPermit1Async","t17","params_1","input_2","signPermit","signPermit1","paramsNotAvailable","t18","params_2","_spender_0","_value_0","input_3","encodePermitArgs","t19","reset","useMarkPermit1NonceAsUsed","nonceUsedMarker","useMarkNonceAsUsed","domain","verifyingContract","markNonceAsUsed","usedNonce","signedPermitData_0","permitInfo_0","address_0","network_0","owner_0","clearNonce"],"mappings":"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"}
1
+ {"version":3,"file":"useSignTokenPermit1.js","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"],"names":["useSignTokenPermit1","t0","$","_c","onSuccess","onError","token","value","spender","enabled","t1","undefined","permit1","isPermit1Supported","useWalletSupportsPermit","queriesEnabled","t2","address","t3","network","t4","tokenAddress","chainId","permitInfoQueryResult","useGetSafePermitInfo","owner","useAccount","t5","t6","t7","nonceQueryResult","usePermit1Nonce","t8","isLoading","t9","isError","t10","isSuccess","t11","error","t12","isPending","permitFetchingState","isPermitSupported","safePermitInfo","isPermitReadyToSign","nonceToUse","t13","signMut","useSignPermit","t14","permitSigningState","nonce","permitInfo","t15","params","_spender","_value","assert","deadline","produceSignatureDeadline","type","input","input_0","holder","expiry","allowed","producePermitInput","t16","params_0","input_1","signature","signPermitAsync","encodedArgs","encodePermit1MethodArgs","permit1EncodedArgs","signedPermitData","signPermit1Async","t17","params_1","input_2","signPermit","signPermit1","paramsNotAvailable","t18","params_2","_spender_0","_value_0","input_3","encodePermitArgs","t19","reset","useMarkPermit1NonceAsUsed","nonceUsedMarker","useMarkNonceAsUsed","domain","verifyingContract","markNonceAsUsed","usedNonce","signedPermitData_0","permitInfo_0","address_0","network_0","owner_0","clearNonce"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenFromPermit1Nonce.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.ts"],"sourcesContent":["import { useTokenFromAtom } 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 = useTokenFromAtom();\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"],"names":["useTokenFromPermit1Nonce","t0","$","_c","t1","enabled","t2","undefined","tokenFrom","useTokenFromAtom","address","owner","useAccount","t3","t4","network","token","chainId","queryResult","usePermit1Nonce","t5"],"mappings":";;;;;;AAWO,SAAAA,yBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,EAAAA,EAAA;AAAkCG,IAAAA,EAAAA,MAAAH;AAEDC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA;AAFC,EAAA,MAAA;AAAA,IAAAG,OAAAA,EAAAC;AAAAA,GAAA,GAAAF,EAAAA;AACvC,EAAA,MAAAC,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAIA,EAAA,MAAAE,YAAkBC,gBAAAA,EAAiB;AACnC,EAAA,MAAA;AAAA,IAAAC,OAAAA,EAAAC;AAAAA,MAA2BC,UAAAA,EAAW;AAE7B,EAAA,MAAAC,KAAAL,SAAAA,CAASE,OAAAA;AAAmB,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAZ,EAAA,CAAA,CAAA,KAAAG,OAAAA,IAAAH,CAAAA,QAAAS,KAAAA,IAAAT,CAAAA,CAAA,CAAA,MAAAW,EAAAA,IAAAX,CAAAA,CAAA,CAAA,CAAA,KAAAM,UAAAO,OAAAA,EAAA;AADDD,IAAAA,EAAAA,GAAA;AAAA,MAAAE,KAAAA,EAC3BH,EAAAA;AAAAA,MAA4BF,KAAAA;AAAAA,MAAAM,SAE1BT,SAAAA,CAASO,OAAAA;AAAAA,MAAAV;AAAAA,KAAA;AAEnBH,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAS,KAAAA;AAAAT,IAAAA,CAAAA,MAAAW,EAAAA;AAAAX,IAAAA,CAAAA,CAAA,CAAA,IAAAM,SAAAA,CAAAO,OAAAA;AAAAb,IAAAA,CAAAA,MAAAY,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAZ,EAAA,CAAA,CAAA;AAAA;AALD,EAAA,MAAAgB,WAAAA,GAAoBC,gBAAgBL,EAKnC,CAAA;AAAE,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAlB,EAAA,CAAA,CAAA,KAAAgB,eAAAhB,CAAAA,QAAAM,SAAAA,EAAA;AAEIY,IAAAA,EAAAA,GAAA;AAAA,MAAA,GACFF,WAAAA;AAAAA,MAAWF,KAAAA,EACPR;AAAAA,KAAS;AACjBN,IAAAA,CAAAA,MAAAgB,WAAAA;AAAAhB,IAAAA,CAAAA,MAAAM,SAAAA;AAAAN,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAlB,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAHMkB,EAAAA;AAGN;;;;"}
1
+ {"version":3,"file":"useTokenFromPermit1Nonce.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.ts"],"sourcesContent":["import { useTokenFromAtom } 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 = useTokenFromAtom();\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"],"names":["useTokenFromPermit1Nonce","t0","$","_c","t1","enabled","t2","undefined","tokenFrom","useTokenFromAtom","address","owner","useAccount","t3","t4","network","token","chainId","queryResult","usePermit1Nonce","t5"],"mappings":";;;;;;AAWO,SAAAA,yBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,EAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,EAAAA,EAAA;AAAkCG,IAAAA,EAAAA,MAAAH;AAEDC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA,EAAA;AAFC,EAAA,MAAA;AAAA,IAAAG,OAAAA,EAAAC;AAAAA,GAAA,GAAAF,EAAAA;AACvC,EAAA,MAAAC,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAIA,EAAA,MAAAE,YAAkBC,gBAAAA,EAAiB;AACnC,EAAA,MAAA;AAAA,IAAAC,OAAAA,EAAAC;AAAAA,MAA2BC,UAAAA,EAAW;AAE7B,EAAA,MAAAC,KAAAL,SAAAA,CAASE,OAAAA;AAAmB,EAAA,IAAAI,EAAAA;AAAA,EAAA,IAAAZ,EAAA,CAAA,CAAA,KAAAG,OAAAA,IAAAH,CAAAA,QAAAS,KAAAA,IAAAT,CAAAA,CAAA,CAAA,MAAAW,EAAAA,IAAAX,CAAAA,CAAA,CAAA,CAAA,KAAAM,UAAAO,OAAAA,EAAA;AADDD,IAAAA,EAAAA,GAAA;AAAA,MAAAE,KAAAA,EAC3BH,EAAAA;AAAAA,MAA4BF,KAAAA;AAAAA,MAAAM,SAE1BT,SAAAA,CAASO,OAAAA;AAAAA,MAAAV;AAAAA,KAAA;AAEnBH,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAS,KAAAA;AAAAT,IAAAA,CAAAA,MAAAW,EAAAA;AAAAX,IAAAA,CAAAA,CAAA,CAAA,IAAAM,SAAAA,CAAAO,OAAAA;AAAAb,IAAAA,CAAAA,MAAAY,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAZ,EAAA,CAAA,CAAA;AAAA,EAAA;AALD,EAAA,MAAAgB,WAAAA,GAAoBC,gBAAgBL,EAKnC,CAAA;AAAE,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAlB,EAAA,CAAA,CAAA,KAAAgB,eAAAhB,CAAAA,QAAAM,SAAAA,EAAA;AAEIY,IAAAA,EAAAA,GAAA;AAAA,MAAA,GACFF,WAAAA;AAAAA,MAAWF,KAAAA,EACPR;AAAAA,KAAS;AACjBN,IAAAA,CAAAA,MAAAgB,WAAAA;AAAAhB,IAAAA,CAAAA,MAAAM,SAAAA;AAAAN,IAAAA,CAAAA,MAAAkB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAlB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAHMkB,EAAAA;AAGN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenFromPermitInfo.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermitInfo.ts"],"sourcesContent":["import { useTokenFromAtom } 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 = useTokenFromAtom();\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"],"names":["useTokenFromPermitInfo","t0","$","_c","t1","enabled","t2","undefined","tokenFrom","useTokenFromAtom","t3","address","t4","network","tokenAddress","chainId","queryResult","useGetSafePermitInfo","t5","token"],"mappings":";;;;;AAaO,SAAAA,uBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,EAAAA,EAAA;AAAgCG,IAAAA,EAAAA,MAAAH;AAECC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA;AAFD,EAAA,MAAA;AAAA,IAAAG,OAAAA,EAAAC;AAAAA,GAAA,GAAAF,EAAAA;AACrC,EAAA,MAAAC,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAIA,EAAA,MAAAE,YAAkBC,gBAAAA,EAAiB;AAEnB,EAAA,MAAAC,KAAAF,SAAAA,CAASG,OAAAA;AAAmB,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAV,CAAAA,CAAA,CAAA,CAAA,KAAAG,OAAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAQ,EAAAA,IAAAR,CAAAA,CAAA,CAAA,CAAA,KAAAM,SAAAA,CAAAK,OAAAA,EAAA;AADHD,IAAAA,EAAAA,GAAA;AAAA,MAAAE,YAAAA,EACzBJ,EAAAA;AAAAA,MAA4BK,SACjCP,SAAAA,CAASK,OAAAA;AAAAA,MAAAR;AAAAA,KAAA;AAEnBH,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAR,IAAAA,CAAAA,CAAA,CAAA,IAAAM,SAAAA,CAAAK,OAAAA;AAAAX,IAAAA,CAAAA,MAAAU,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAV,EAAA,CAAA,CAAA;AAAA;AAJD,EAAA,MAAAc,WAAAA,GAAoBC,qBAAqBL,EAIxC,CAAA;AAAE,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAhB,EAAA,CAAA,CAAA,KAAAc,eAAAd,CAAAA,QAAAM,SAAAA,EAAA;AAEIU,IAAAA,EAAAA,GAAA;AAAA,MAAA,GACFF,WAAAA;AAAAA,MAAWG,KAAAA,EACPX;AAAAA,KAAS;AACjBN,IAAAA,CAAAA,MAAAc,WAAAA;AAAAd,IAAAA,CAAAA,MAAAM,SAAAA;AAAAN,IAAAA,CAAAA,MAAAgB,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAhB,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OAHMgB,EAAAA;AAGN;;;;"}
1
+ {"version":3,"file":"useTokenFromPermitInfo.js","sources":["../../../../../src/hooks/permit/hooks/permit1/useTokenFromPermitInfo.ts"],"sourcesContent":["import { useTokenFromAtom } 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 = useTokenFromAtom();\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"],"names":["useTokenFromPermitInfo","t0","$","_c","t1","enabled","t2","undefined","tokenFrom","useTokenFromAtom","t3","address","t4","network","tokenAddress","chainId","queryResult","useGetSafePermitInfo","t5","token"],"mappings":";;;;;AAaO,SAAAA,uBAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,EAAAA,EAAA;AAAgCG,IAAAA,EAAAA,MAAAH;AAECC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA,EAAA;AAFD,EAAA,MAAA;AAAA,IAAAG,OAAAA,EAAAC;AAAAA,GAAA,GAAAF,EAAAA;AACrC,EAAA,MAAAC,OAAAA,GAAAC,EAAAA,KAAcC,MAAAA,UAAdD,EAAAA;AAIA,EAAA,MAAAE,YAAkBC,gBAAAA,EAAiB;AAEnB,EAAA,MAAAC,KAAAF,SAAAA,CAASG,OAAAA;AAAmB,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAV,CAAAA,CAAA,CAAA,CAAA,KAAAG,OAAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAQ,EAAAA,IAAAR,CAAAA,CAAA,CAAA,CAAA,KAAAM,SAAAA,CAAAK,OAAAA,EAAA;AADHD,IAAAA,EAAAA,GAAA;AAAA,MAAAE,YAAAA,EACzBJ,EAAAA;AAAAA,MAA4BK,SACjCP,SAAAA,CAASK,OAAAA;AAAAA,MAAAR;AAAAA,KAAA;AAEnBH,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAQ,EAAAA;AAAAR,IAAAA,CAAAA,CAAA,CAAA,IAAAM,SAAAA,CAAAK,OAAAA;AAAAX,IAAAA,CAAAA,MAAAU,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAV,EAAA,CAAA,CAAA;AAAA,EAAA;AAJD,EAAA,MAAAc,WAAAA,GAAoBC,qBAAqBL,EAIxC,CAAA;AAAE,EAAA,IAAAM,EAAAA;AAAA,EAAA,IAAAhB,EAAA,CAAA,CAAA,KAAAc,eAAAd,CAAAA,QAAAM,SAAAA,EAAA;AAEIU,IAAAA,EAAAA,GAAA;AAAA,MAAA,GACFF,WAAAA;AAAAA,MAAWG,KAAAA,EACPX;AAAAA,KAAS;AACjBN,IAAAA,CAAAA,MAAAc,WAAAA;AAAAd,IAAAA,CAAAA,MAAAM,SAAAA;AAAAN,IAAAA,CAAAA,MAAAgB,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAhB,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OAHMgB,EAAAA;AAGN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTryToSignPermit1.js","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,\n spenderAddress,\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"],"names":["useTryToSignPermit1","t0","$","_c","permitInfo","tokenAddress","spenderAddress","amount","chainId","query","logger","useLogger","config","useConfig","queryEnabled","enabled","t1","t2","assert","result","trySignPermit1","log","t3","t4","queryKey","queryFn","refetchOnMount","refetchOnWindowFocus","staleTime","Infinity","gcTime","retry","queryResult","useQuery"],"mappings":"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"}
1
+ {"version":3,"file":"useTryToSignPermit1.js","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,\n spenderAddress,\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"],"names":["useTryToSignPermit1","t0","$","_c","permitInfo","tokenAddress","spenderAddress","amount","chainId","query","logger","useLogger","config","useConfig","queryEnabled","enabled","t1","t2","assert","result","trySignPermit1","log","t3","t4","queryKey","queryFn","refetchOnMount","refetchOnWindowFocus","staleTime","Infinity","gcTime","retry","queryResult","useQuery"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePermit2Allowance.js","sources":["../../../../../src/hooks/permit/hooks/permit2/usePermit2Allowance.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport type { Address } from \"viem\";\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 spender?: Address;\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 spender,\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 = useTokenAllowance({\n tokenAddress: token?.address,\n spender: PERMIT2_ADDRESS,\n chainId: token?.network,\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 spender &&\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"],"names":["usePermit2Allowance","t0","$","_c","token","spender","amount","enabled","t1","undefined","logger","useLogger","address","user","useAccount","tokenNotETH","isETH","t2","t3","network","t4","tokenAddress","PERMIT2_ADDRESS","chainId","allowanceForPermit2Query","useTokenAllowance","enoughAllowanceForPermit2","data","canUsePermit2","once","log","allowance","error","t5","t6","isError","isLoading","isSuccess","refetch","permit2Allowance"],"mappings":"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"}
1
+ {"version":3,"file":"usePermit2Allowance.js","sources":["../../../../../src/hooks/permit/hooks/permit2/usePermit2Allowance.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport type { Address } from \"viem\";\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 spender?: Address;\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 spender,\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 = useTokenAllowance({\n tokenAddress: token?.address,\n spender: PERMIT2_ADDRESS,\n chainId: token?.network,\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 spender &&\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"],"names":["usePermit2Allowance","t0","$","_c","token","spender","amount","enabled","t1","undefined","logger","useLogger","address","user","useAccount","tokenNotETH","isETH","t2","t3","network","t4","tokenAddress","PERMIT2_ADDRESS","chainId","allowanceForPermit2Query","useTokenAllowance","enoughAllowanceForPermit2","data","canUsePermit2","once","log","allowance","error","t5","t6","isError","isLoading","isSuccess","refetch","permit2Allowance"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePermit2TransferFromNonce.js","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,\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"],"names":["PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY","usePermit2TransferFromNonce","owner","chainId","initWord","enabled","queryClient","useQueryClient","config","useConfig","logger","useLogger","queryKey","data","nonceState","isLoading","isError","isSuccess","error","refetch","useQuery","queryFn","assert","last","getQueryData","nextOpenWord","getNextOpenWord","startWord","word","warn","bitmap","bitPos","getFirstUnsetBit","nonce","BigInt","log","refetchOnWindowFocus","notifyOnChangeProps","nonceToUse","MAX","maxUint256","readContract","address","PERMIT2_ADDRESS","abi","PERMIT2_ABI","functionName","args","getLogger","mask","toString","length","useMarkNonceAsUsed","markNonceAsUsed","usedNonce","setQueryData","oldNonceState","newNonce","splitNonce"],"mappings":"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"}
1
+ {"version":3,"file":"usePermit2TransferFromNonce.js","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,\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"],"names":["PERMIT2_TRANSFER_FROM_NONCE_QUERY_KEY","usePermit2TransferFromNonce","owner","chainId","initWord","enabled","queryClient","useQueryClient","config","useConfig","logger","useLogger","queryKey","data","nonceState","isLoading","isError","isSuccess","error","refetch","useQuery","queryFn","assert","last","getQueryData","nextOpenWord","getNextOpenWord","startWord","word","warn","bitmap","bitPos","getFirstUnsetBit","nonce","BigInt","log","refetchOnWindowFocus","notifyOnChangeProps","nonceToUse","MAX","maxUint256","readContract","address","PERMIT2_ADDRESS","abi","PERMIT2_ABI","functionName","args","getLogger","mask","toString","length","useMarkNonceAsUsed","markNonceAsUsed","usedNonce","setQueryData","oldNonceState","newNonce","splitNonce"],"mappings":"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"}