@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":"useSignTokenPermit2TransferFrom.js","sources":["../../../../../src/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport {\n isAddress,\n parseSignature,\n serializeCompactSignature,\n signatureToCompactSignature,\n type Address,\n type Hash,\n type Hex,\n} from \"viem\";\nimport { useSignPermit } from \"../common/useSignPermit\";\nimport type { Permit2Input } from \"../../utils/construct\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { encodePermit2TransferFromMethodArgs } from \"../../utils/encodeArgs\";\nimport { usePermit2Allowance } from \"./usePermit2Allowance\";\nimport {\n useMarkNonceAsUsed,\n usePermit2TransferFromNonce,\n} from \"./usePermit2TransferFromNonce\";\nimport { produceSignatureDeadline } from \"../../utils/deadlines\";\nimport { useWalletSupportsPermit } from \"../common/useWalletSupportsPermit\";\n\ntype UseSignTokenPermit2TransferFromParams = {\n onSuccess?: (signature: Hex) => void;\n onError?: (error: Error) => void;\n token?: Pick<Token, \"address\" | \"network\">;\n value?: bigint;\n spender?: Address;\n enabled?: boolean;\n};\n\ntype QueryMutState = {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type SignedPermit2Result = {\n signature: Hash;\n permit2TransferFromEncodedArgs: Hash;\n signedPermitData: Permit2Input & {\n variant: \"transferFrom\";\n owner: Address;\n };\n};\n\nexport type SignPermit2TransferFromInput = {\n // sometimes we need specific deadline that is available only outside the hook\n deadline?: bigint;\n // e.g. on delta the order.deadline must exactly match permit2.deadline\n} & Pick<UseSignTokenPermit2TransferFromParams, \"value\" | \"spender\">;\n\nexport type UseSignTokenPermit2TransferFromResult = {\n signPermit2: (params?: SignPermit2TransferFromInput) => void;\n signPermit2Async: (\n params?: SignPermit2TransferFromInput\n ) => Promise<SignedPermit2Result>;\n encodePermitArgs: (params?: SignPermit2TransferFromInput) => Hash | undefined;\n isPermitSupported: boolean;\n isPermitReadyToSign: boolean;\n permitFetchingState: QueryMutState;\n permitSigningState: QueryMutState;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n reset: () => void;\n signature?: Hash;\n};\n\nexport function useSignTokenPermit2TransferFrom({\n onSuccess,\n onError,\n token,\n value,\n spender,\n enabled = true,\n}: UseSignTokenPermit2TransferFromParams): UseSignTokenPermit2TransferFromResult {\n const { permit2: isPermit2Supported } = useWalletSupportsPermit();\n\n const queriesEnabled = enabled && isPermit2Supported;\n\n const permit2AllowanceQueryResult = usePermit2Allowance({\n token,\n spender,\n amount: value,\n enabled: queriesEnabled,\n });\n\n const { address: owner } = useAccount();\n\n const nonceQueryResult = usePermit2TransferFromNonce({\n owner,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const permitFetchingState = {\n isPending:\n permit2AllowanceQueryResult.isLoading || nonceQueryResult.isLoading,\n isError: permit2AllowanceQueryResult.isError || nonceQueryResult.isError,\n isSuccess:\n permit2AllowanceQueryResult.isSuccess || nonceQueryResult.isSuccess,\n error: permit2AllowanceQueryResult.error || nonceQueryResult.error,\n };\n\n const isPermitSupported =\n permit2AllowanceQueryResult.canUsePermit2 &&\n permit2AllowanceQueryResult.enoughAllowanceForPermit2 &&\n isPermit2Supported;\n const isPermitReadyToSign =\n isPermitSupported &&\n !!owner &&\n typeof nonceQueryResult.nonceToUse === \"bigint\";\n\n const signMut = useSignPermit({\n onSuccess,\n onError,\n });\n\n const permitSigningState = {\n isPending: signMut.isPending,\n isError: signMut.isError,\n isSuccess: signMut.isSuccess,\n error: signMut.error,\n };\n\n const isPending =\n permitFetchingState.isPending || permitSigningState.isPending;\n const isError = permitFetchingState.isError || permitSigningState.isError;\n const isSuccess =\n permitFetchingState.isSuccess || permitSigningState.isSuccess;\n const error = permitFetchingState.error || permitSigningState.error;\n\n const nonce = nonceQueryResult.nonceToUse;\n\n const producePermitInput = (params?: SignPermit2TransferFromInput) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n const deadline = params?.deadline || produceSignatureDeadline();\n\n assert(owner, \"Account not connected\");\n assert(typeof nonce === \"bigint\", \"Nonce not available\");\n assert(_spender, \"Spender not available\");\n assert(_value, \"Value not available or 0\");\n assert(token?.address && isAddress(token.address), \"Token not available\");\n\n const permit2Input = {\n type: \"permit2\",\n variant: \"transferFrom\",\n token: token.address,\n spender: _spender,\n nonce,\n amount: _value,\n expiration: deadline,\n chainId: token.network,\n } as const satisfies Permit2Input;\n return permit2Input;\n };\n\n const signPermit2Async: UseSignTokenPermit2TransferFromResult[\"signPermit2Async\"] =\n async (params) => {\n assert(owner, \"Account not connected\");\n const _input = producePermitInput(params);\n const input = {\n ..._input,\n owner,\n };\n const signature = await signMut.signPermitAsync(input);\n\n // contract requires Compact Signature\n const compactSignature = serializeCompactSignature(\n // this is unusable with Multisig Smart Wallets, because signature is non-standard length and it can'be parsed\n signatureToCompactSignature(parseSignature(signature))\n );\n\n const encodedArgs = encodePermit2TransferFromMethodArgs({\n ...input,\n signature: compactSignature,\n });\n\n return {\n signature: compactSignature,\n permit2TransferFromEncodedArgs: encodedArgs,\n signedPermitData: input,\n };\n };\n\n const signPermit2: UseSignTokenPermit2TransferFromResult[\"signPermit2\"] = (\n params\n ) => {\n const input = producePermitInput(params);\n signMut.signPermit(input);\n };\n\n const paramsNotAvailable = typeof nonce !== \"bigint\" || !owner;\n\n const encodePermitArgs: UseSignTokenPermit2TransferFromResult[\"encodePermitArgs\"] =\n (params) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n if (!signMut.signature || paramsNotAvailable || !_spender || !_value) {\n return;\n }\n const input = producePermitInput({\n spender: _spender,\n value: _value,\n });\n\n return encodePermit2TransferFromMethodArgs({\n ...input,\n signature: signMut.signature,\n owner,\n });\n };\n\n return {\n signPermit2,\n signPermit2Async,\n encodePermitArgs,\n isPermitSupported,\n isPermitReadyToSign,\n permitFetchingState,\n permitSigningState,\n isPending,\n isSuccess,\n isError,\n error,\n reset: signMut.reset,\n signature: signMut.signature,\n };\n}\n\ntype UseMarkPermit2NonceAsUsedResult = {\n markNonceAsUsed: (\n signedPermitData: Permit2Input & { owner: Address }\n ) => void;\n};\n\nexport function useMarkPermit2NonceAsUsed(): UseMarkPermit2NonceAsUsedResult {\n const nonceUsedMarker = useMarkNonceAsUsed();\n\n const markNonceAsUsed: UseMarkPermit2NonceAsUsedResult[\"markNonceAsUsed\"] = ({\n owner,\n chainId,\n nonce,\n }) => {\n nonceUsedMarker.markNonceAsUsed({\n owner,\n chainId,\n usedNonce: nonce,\n });\n };\n\n return {\n markNonceAsUsed,\n };\n}\n"],"names":["useSignTokenPermit2TransferFrom","t0","$","_c","onSuccess","onError","token","value","spender","enabled","t1","undefined","permit2","isPermit2Supported","useWalletSupportsPermit","queriesEnabled","t2","amount","permit2AllowanceQueryResult","usePermit2Allowance","address","owner","useAccount","t3","network","t4","chainId","nonceQueryResult","usePermit2TransferFromNonce","t5","isLoading","t6","isError","t7","isSuccess","t8","error","t9","isPending","permitFetchingState","isPermitSupported","canUsePermit2","enoughAllowanceForPermit2","isPermitReadyToSign","nonceToUse","t10","signMut","useSignPermit","t11","permitSigningState","nonce","t12","params","_spender","_value","deadline","produceSignatureDeadline","assert","isAddress","permit2Input","type","variant","expiration","producePermitInput","t13","params_0","_input","input","signature","signPermitAsync","compactSignature","serializeCompactSignature","signatureToCompactSignature","parseSignature","encodedArgs","encodePermit2TransferFromMethodArgs","permit2TransferFromEncodedArgs","signedPermitData","signPermit2Async","t14","params_1","input_0","signPermit","signPermit2","paramsNotAvailable","t15","params_2","_spender_0","_value_0","input_1","encodePermitArgs","t16","reset","useMarkPermit2NonceAsUsed","nonceUsedMarker","useMarkNonceAsUsed","markNonceAsUsed","usedNonce"],"mappings":"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"}
1
+ {"version":3,"file":"useSignTokenPermit2TransferFrom.js","sources":["../../../../../src/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.ts"],"sourcesContent":["import { useAccount } from \"wagmi\";\nimport {\n isAddress,\n parseSignature,\n serializeCompactSignature,\n signatureToCompactSignature,\n type Address,\n type Hash,\n type Hex,\n} from \"viem\";\nimport { useSignPermit } from \"../common/useSignPermit\";\nimport type { Permit2Input } from \"../../utils/construct\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { assert } from \"ts-essentials\";\nimport { encodePermit2TransferFromMethodArgs } from \"../../utils/encodeArgs\";\nimport { usePermit2Allowance } from \"./usePermit2Allowance\";\nimport {\n useMarkNonceAsUsed,\n usePermit2TransferFromNonce,\n} from \"./usePermit2TransferFromNonce\";\nimport { produceSignatureDeadline } from \"../../utils/deadlines\";\nimport { useWalletSupportsPermit } from \"../common/useWalletSupportsPermit\";\n\ntype UseSignTokenPermit2TransferFromParams = {\n onSuccess?: (signature: Hex) => void;\n onError?: (error: Error) => void;\n token?: Pick<Token, \"address\" | \"network\">;\n value?: bigint;\n spender?: Address;\n enabled?: boolean;\n};\n\ntype QueryMutState = {\n isPending: boolean;\n isError: boolean;\n isSuccess: boolean;\n error: Error | null;\n};\n\nexport type SignedPermit2Result = {\n signature: Hash;\n permit2TransferFromEncodedArgs: Hash;\n signedPermitData: Permit2Input & {\n variant: \"transferFrom\";\n owner: Address;\n };\n};\n\nexport type SignPermit2TransferFromInput = {\n // sometimes we need specific deadline that is available only outside the hook\n deadline?: bigint;\n // e.g. on delta the order.deadline must exactly match permit2.deadline\n} & Pick<UseSignTokenPermit2TransferFromParams, \"value\" | \"spender\">;\n\nexport type UseSignTokenPermit2TransferFromResult = {\n signPermit2: (params?: SignPermit2TransferFromInput) => void;\n signPermit2Async: (\n params?: SignPermit2TransferFromInput\n ) => Promise<SignedPermit2Result>;\n encodePermitArgs: (params?: SignPermit2TransferFromInput) => Hash | undefined;\n isPermitSupported: boolean;\n isPermitReadyToSign: boolean;\n permitFetchingState: QueryMutState;\n permitSigningState: QueryMutState;\n isPending: boolean;\n isSuccess: boolean;\n isError: boolean;\n error: Error | null;\n reset: () => void;\n signature?: Hash;\n};\n\nexport function useSignTokenPermit2TransferFrom({\n onSuccess,\n onError,\n token,\n value,\n spender,\n enabled = true,\n}: UseSignTokenPermit2TransferFromParams): UseSignTokenPermit2TransferFromResult {\n const { permit2: isPermit2Supported } = useWalletSupportsPermit();\n\n const queriesEnabled = enabled && isPermit2Supported;\n\n const permit2AllowanceQueryResult = usePermit2Allowance({\n token,\n spender,\n amount: value,\n enabled: queriesEnabled,\n });\n\n const { address: owner } = useAccount();\n\n const nonceQueryResult = usePermit2TransferFromNonce({\n owner,\n chainId: token?.network,\n enabled: queriesEnabled,\n });\n\n const permitFetchingState = {\n isPending:\n permit2AllowanceQueryResult.isLoading || nonceQueryResult.isLoading,\n isError: permit2AllowanceQueryResult.isError || nonceQueryResult.isError,\n isSuccess:\n permit2AllowanceQueryResult.isSuccess || nonceQueryResult.isSuccess,\n error: permit2AllowanceQueryResult.error || nonceQueryResult.error,\n };\n\n const isPermitSupported =\n permit2AllowanceQueryResult.canUsePermit2 &&\n permit2AllowanceQueryResult.enoughAllowanceForPermit2 &&\n isPermit2Supported;\n const isPermitReadyToSign =\n isPermitSupported &&\n !!owner &&\n typeof nonceQueryResult.nonceToUse === \"bigint\";\n\n const signMut = useSignPermit({\n onSuccess,\n onError,\n });\n\n const permitSigningState = {\n isPending: signMut.isPending,\n isError: signMut.isError,\n isSuccess: signMut.isSuccess,\n error: signMut.error,\n };\n\n const isPending =\n permitFetchingState.isPending || permitSigningState.isPending;\n const isError = permitFetchingState.isError || permitSigningState.isError;\n const isSuccess =\n permitFetchingState.isSuccess || permitSigningState.isSuccess;\n const error = permitFetchingState.error || permitSigningState.error;\n\n const nonce = nonceQueryResult.nonceToUse;\n\n const producePermitInput = (params?: SignPermit2TransferFromInput) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n const deadline = params?.deadline || produceSignatureDeadline();\n\n assert(owner, \"Account not connected\");\n assert(typeof nonce === \"bigint\", \"Nonce not available\");\n assert(_spender, \"Spender not available\");\n assert(_value, \"Value not available or 0\");\n assert(token?.address && isAddress(token.address), \"Token not available\");\n\n const permit2Input = {\n type: \"permit2\",\n variant: \"transferFrom\",\n token: token.address,\n spender: _spender,\n nonce,\n amount: _value,\n expiration: deadline,\n chainId: token.network,\n } as const satisfies Permit2Input;\n return permit2Input;\n };\n\n const signPermit2Async: UseSignTokenPermit2TransferFromResult[\"signPermit2Async\"] =\n async (params) => {\n assert(owner, \"Account not connected\");\n const _input = producePermitInput(params);\n const input = {\n ..._input,\n owner,\n };\n const signature = await signMut.signPermitAsync(input);\n\n // contract requires Compact Signature\n const compactSignature = serializeCompactSignature(\n // this is unusable with Multisig Smart Wallets, because signature is non-standard length and it can'be parsed\n signatureToCompactSignature(parseSignature(signature))\n );\n\n const encodedArgs = encodePermit2TransferFromMethodArgs({\n ...input,\n signature: compactSignature,\n });\n\n return {\n signature: compactSignature,\n permit2TransferFromEncodedArgs: encodedArgs,\n signedPermitData: input,\n };\n };\n\n const signPermit2: UseSignTokenPermit2TransferFromResult[\"signPermit2\"] = (\n params\n ) => {\n const input = producePermitInput(params);\n signMut.signPermit(input);\n };\n\n const paramsNotAvailable = typeof nonce !== \"bigint\" || !owner;\n\n const encodePermitArgs: UseSignTokenPermit2TransferFromResult[\"encodePermitArgs\"] =\n (params) => {\n const _spender = params?.spender || spender;\n const _value = params?.value || value;\n\n if (!signMut.signature || paramsNotAvailable || !_spender || !_value) {\n return;\n }\n const input = producePermitInput({\n spender: _spender,\n value: _value,\n });\n\n return encodePermit2TransferFromMethodArgs({\n ...input,\n signature: signMut.signature,\n owner,\n });\n };\n\n return {\n signPermit2,\n signPermit2Async,\n encodePermitArgs,\n isPermitSupported,\n isPermitReadyToSign,\n permitFetchingState,\n permitSigningState,\n isPending,\n isSuccess,\n isError,\n error,\n reset: signMut.reset,\n signature: signMut.signature,\n };\n}\n\ntype UseMarkPermit2NonceAsUsedResult = {\n markNonceAsUsed: (\n signedPermitData: Permit2Input & { owner: Address }\n ) => void;\n};\n\nexport function useMarkPermit2NonceAsUsed(): UseMarkPermit2NonceAsUsedResult {\n const nonceUsedMarker = useMarkNonceAsUsed();\n\n const markNonceAsUsed: UseMarkPermit2NonceAsUsedResult[\"markNonceAsUsed\"] = ({\n owner,\n chainId,\n nonce,\n }) => {\n nonceUsedMarker.markNonceAsUsed({\n owner,\n chainId,\n usedNonce: nonce,\n });\n };\n\n return {\n markNonceAsUsed,\n };\n}\n"],"names":["useSignTokenPermit2TransferFrom","t0","$","_c","onSuccess","onError","token","value","spender","enabled","t1","undefined","permit2","isPermit2Supported","useWalletSupportsPermit","queriesEnabled","t2","amount","permit2AllowanceQueryResult","usePermit2Allowance","address","owner","useAccount","t3","network","t4","chainId","nonceQueryResult","usePermit2TransferFromNonce","t5","isLoading","t6","isError","t7","isSuccess","t8","error","t9","isPending","permitFetchingState","isPermitSupported","canUsePermit2","enoughAllowanceForPermit2","isPermitReadyToSign","nonceToUse","t10","signMut","useSignPermit","t11","permitSigningState","nonce","t12","params","_spender","_value","deadline","produceSignatureDeadline","assert","isAddress","permit2Input","type","variant","expiration","producePermitInput","t13","params_0","_input","input","signature","signPermitAsync","compactSignature","serializeCompactSignature","signatureToCompactSignature","parseSignature","encodedArgs","encodePermit2TransferFromMethodArgs","permit2TransferFromEncodedArgs","signedPermitData","signPermit2Async","t14","params_1","input_0","signPermit","signPermit2","paramsNotAvailable","t15","params_2","_spender_0","_value_0","input_1","encodePermitArgs","t16","reset","useMarkPermit2NonceAsUsed","nonceUsedMarker","useMarkNonceAsUsed","markNonceAsUsed","usedNonce"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTokenFromPermit2TransferFromNonce.js","sources":["../../../../../src/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.ts"],"sourcesContent":["import { useTokenFromAtom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useAccount } from \"wagmi\";\nimport {\n usePermit2TransferFromNonce,\n type UsePermit2TransferFromNonceResult,\n} from \"./usePermit2TransferFromNonce\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermit2TransferFromNonce({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UsePermit2TransferFromNonceResult & {\n token: Token;\n} {\n const tokenFrom = useTokenFromAtom();\n const { address: owner } = useAccount();\n const queryResult = usePermit2TransferFromNonce({\n owner,\n // Permit2 TransferFromnonce is not token-specific,\n // but we will use it for signing for Token from\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"names":["useTokenFromPermit2TransferFromNonce","t0","$","_c","t1","enabled","t2","undefined","tokenFrom","useTokenFromAtom","address","owner","useAccount","t3","network","chainId","queryResult","usePermit2TransferFromNonce","t4","token"],"mappings":";;;;;AAYO,SAAAA,qCAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,EAAAA,EAAA;AAA8CG,IAAAA,EAAAA,MAAAH;AAEbC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA;AAFa,EAAA,MAAA;AAAA,IAAAG,OAAAA,EAAAC;AAAAA,GAAA,GAAAF,EAAAA;AACnD,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;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAX,CAAAA,CAAA,CAAA,CAAA,KAAAG,OAAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAS,KAAAA,IAAAT,CAAAA,CAAA,CAAA,CAAA,KAAAM,SAAAA,CAAAM,OAAAA,EAAA;AACQD,IAAAA,EAAAA,GAAA;AAAA,MAAAF,KAAAA;AAAAA,MAAAI,SAIrCP,SAAAA,CAASM,OAAAA;AAAAA,MAAAT;AAAAA,KAAA;AAEnBH,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAS,KAAAA;AAAAT,IAAAA,CAAAA,CAAA,CAAA,IAAAM,SAAAA,CAAAM,OAAAA;AAAAZ,IAAAA,CAAAA,MAAAW,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAX,EAAA,CAAA,CAAA;AAAA;AAND,EAAA,MAAAc,WAAAA,GAAoBC,4BAA4BJ,EAM/C,CAAA;AAAE,EAAA,IAAAK,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":"useTokenFromPermit2TransferFromNonce.js","sources":["../../../../../src/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.ts"],"sourcesContent":["import { useTokenFromAtom } from \"@/core/inputs/state/selectedTokenAtom\";\nimport type { Token } from \"@/tokens/state/types\";\nimport { useAccount } from \"wagmi\";\nimport {\n usePermit2TransferFromNonce,\n type UsePermit2TransferFromNonceResult,\n} from \"./usePermit2TransferFromNonce\";\n\ntype UseTokenFromPermitInfoParameters = {\n enabled?: boolean;\n};\n\nexport function useTokenFromPermit2TransferFromNonce({\n enabled = true, // enabled: false to get cached results\n}: UseTokenFromPermitInfoParameters = {}): UsePermit2TransferFromNonceResult & {\n token: Token;\n} {\n const tokenFrom = useTokenFromAtom();\n const { address: owner } = useAccount();\n const queryResult = usePermit2TransferFromNonce({\n owner,\n // Permit2 TransferFromnonce is not token-specific,\n // but we will use it for signing for Token from\n chainId: tokenFrom.network,\n enabled,\n });\n\n return {\n ...queryResult,\n token: tokenFrom,\n };\n}\n"],"names":["useTokenFromPermit2TransferFromNonce","t0","$","_c","t1","enabled","t2","undefined","tokenFrom","useTokenFromAtom","address","owner","useAccount","t3","network","chainId","queryResult","usePermit2TransferFromNonce","t4","token"],"mappings":";;;;;AAYO,SAAAA,qCAAAC,EAAAA,EAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAAA,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAF,CAAAA,QAAAD,EAAAA,EAAA;AAA8CG,IAAAA,EAAAA,MAAAH;AAEbC,IAAAA,CAAAA,MAAAD,EAAAA;AAAAC,IAAAA,CAAAA,MAAAE,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAF,EAAA,CAAA,CAAA;AAAA,EAAA;AAFa,EAAA,MAAA;AAAA,IAAAG,OAAAA,EAAAC;AAAAA,GAAA,GAAAF,EAAAA;AACnD,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;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAX,CAAAA,CAAA,CAAA,CAAA,KAAAG,OAAAA,IAAAH,CAAAA,CAAA,CAAA,CAAA,KAAAS,KAAAA,IAAAT,CAAAA,CAAA,CAAA,CAAA,KAAAM,SAAAA,CAAAM,OAAAA,EAAA;AACQD,IAAAA,EAAAA,GAAA;AAAA,MAAAF,KAAAA;AAAAA,MAAAI,SAIrCP,SAAAA,CAASM,OAAAA;AAAAA,MAAAT;AAAAA,KAAA;AAEnBH,IAAAA,CAAAA,MAAAG,OAAAA;AAAAH,IAAAA,CAAAA,MAAAS,KAAAA;AAAAT,IAAAA,CAAAA,CAAA,CAAA,IAAAM,SAAAA,CAAAM,OAAAA;AAAAZ,IAAAA,CAAAA,MAAAW,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAX,EAAA,CAAA,CAAA;AAAA,EAAA;AAND,EAAA,MAAAc,WAAAA,GAAoBC,4BAA4BJ,EAM/C,CAAA;AAAE,EAAA,IAAAK,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":"construct.js","sources":["../../../../src/hooks/permit/utils/construct.ts"],"sourcesContent":["import { type PermitSupportDAI, type PermitSupportEIP2612 } from \"./detect\";\nimport { type Address, type Hex } from \"viem\";\n\nexport const PERMIT2_ADDRESS =\n \"0x000000000022D473030F116dDEE9F6B43aC78BA3\" as const;\nconst PERMIT2_DOMAIN_NAME = \"Permit2\" as const;\n\nconst PERMIT2_TOKEN_PERMISSIONS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n] as const;\n\nconst PERMIT2_TRANSFER_FROM_TYPES = {\n PermitTransferFrom: [\n { name: \"permitted\", type: \"TokenPermissions\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n TokenPermissions: PERMIT2_TOKEN_PERMISSIONS,\n} as const;\n\nconst PERMIT2_PERMIT_DETAILS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint160\" },\n { name: \"expiration\", type: \"uint48\" },\n { name: \"nonce\", type: \"uint48\" },\n] as const;\n\nconst PERMIT2_PERMIT_SINGLE_TYPES = {\n PermitSingle: [\n { name: \"details\", type: \"PermitDetails\" },\n { name: \"spender\", type: \"address\" },\n { name: \"sigDeadline\", type: \"uint256\" },\n ],\n PermitDetails: PERMIT2_PERMIT_DETAILS,\n} as const;\n\nexport interface Permit1Input {\n type: \"permit1\";\n permitInfo: PermitSupportEIP2612;\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n}\n\nexport interface DaiPermitInput {\n type: \"dai\";\n permitInfo: PermitSupportDAI;\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n}\n\nexport interface Permit2Input {\n type: \"permit2\";\n variant: \"single\" | \"transferFrom\";\n token: Address;\n spender: Address;\n nonce: bigint;\n amount: bigint;\n expiration: bigint;\n chainId: number;\n}\n\nexport type PermitTypedDataInput = Permit1Input | DaiPermitInput | Permit2Input;\n\n// EIP-712 Type Definitions\ninterface EIP712Type {\n name: string;\n type: string;\n}\n\ninterface EIP712Domain {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex;\n}\n\n// Return type for Permit2\ninterface Permit2TypedDataSingle {\n types: typeof PERMIT2_PERMIT_SINGLE_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitSingle\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n details: {\n token: Address;\n amount: bigint;\n nonce: bigint;\n expiration: bigint;\n };\n spender: Address;\n sigDeadline: bigint;\n };\n}\ninterface Permit2TypedDataTransferFrom {\n types: typeof PERMIT2_TRANSFER_FROM_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitTransferFrom\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n permitted: {\n token: Address;\n amount: bigint;\n };\n spender: Address;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for Permit1 Permit\ninterface Permit1PermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for DAI Permit\ninterface DaiPermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n };\n}\n\n// Union type for all possible return types\nexport type PermitTypedDataReturn =\n | Permit2TypedDataSingle\n | Permit2TypedDataTransferFrom\n | Permit1PermitTypedData\n | DaiPermitTypedData;\n\nexport function constructPermitTypedData(\n input: PermitTypedDataInput\n): PermitTypedDataReturn {\n if (input.type === \"permit2\") {\n const { token, spender, nonce, amount, expiration, variant, chainId } =\n input;\n\n if (variant === \"single\") {\n return {\n types: {\n ...PERMIT2_PERMIT_SINGLE_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitSingle\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n details: { token, amount, nonce, expiration },\n spender,\n sigDeadline: expiration,\n },\n };\n }\n\n if (variant === \"transferFrom\") {\n return {\n types: {\n ...PERMIT2_TRANSFER_FROM_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitTransferFrom\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n permitted: {\n token,\n amount,\n },\n spender,\n nonce,\n deadline: expiration,\n },\n };\n }\n }\n\n if (input.type === \"permit1\") {\n const { owner, spender, value, nonce, deadline, permitInfo } = input;\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { owner, spender, value, nonce, deadline },\n };\n }\n\n if (input.type === \"dai\") {\n const { holder, spender, nonce, expiry, allowed, permitInfo } = input;\n\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"holder\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"expiry\", type: \"uint256\" },\n { name: \"allowed\", type: \"bool\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { holder, spender, nonce, expiry, allowed },\n };\n }\n\n throw new Error(`Unsupported permit input type`);\n}\n\n// Example usage:\n// constructPermitTypedData({ type: 'permit1', variant: 'transfer', permitInfo, to, value, nonce, deadline });\n"],"names":["PERMIT2_ADDRESS","PERMIT2_DOMAIN_NAME","PERMIT2_TOKEN_PERMISSIONS","name","type","PERMIT2_TRANSFER_FROM_TYPES","PermitTransferFrom","TokenPermissions","PERMIT2_PERMIT_DETAILS","PERMIT2_PERMIT_SINGLE_TYPES","PermitSingle","PermitDetails","constructPermitTypedData","input","token","spender","nonce","amount","expiration","variant","chainId","types","primaryType","domain","verifyingContract","message","details","sigDeadline","permitted","deadline","owner","value","permitInfo","Permit","holder","expiry","allowed","Error"],"mappings":"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"}
1
+ {"version":3,"file":"construct.js","sources":["../../../../src/hooks/permit/utils/construct.ts"],"sourcesContent":["import { type PermitSupportDAI, type PermitSupportEIP2612 } from \"./detect\";\nimport { type Address, type Hex } from \"viem\";\n\nexport const PERMIT2_ADDRESS =\n \"0x000000000022D473030F116dDEE9F6B43aC78BA3\" as const;\nconst PERMIT2_DOMAIN_NAME = \"Permit2\" as const;\n\nconst PERMIT2_TOKEN_PERMISSIONS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint256\" },\n] as const;\n\nconst PERMIT2_TRANSFER_FROM_TYPES = {\n PermitTransferFrom: [\n { name: \"permitted\", type: \"TokenPermissions\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n TokenPermissions: PERMIT2_TOKEN_PERMISSIONS,\n} as const;\n\nconst PERMIT2_PERMIT_DETAILS = [\n { name: \"token\", type: \"address\" },\n { name: \"amount\", type: \"uint160\" },\n { name: \"expiration\", type: \"uint48\" },\n { name: \"nonce\", type: \"uint48\" },\n] as const;\n\nconst PERMIT2_PERMIT_SINGLE_TYPES = {\n PermitSingle: [\n { name: \"details\", type: \"PermitDetails\" },\n { name: \"spender\", type: \"address\" },\n { name: \"sigDeadline\", type: \"uint256\" },\n ],\n PermitDetails: PERMIT2_PERMIT_DETAILS,\n} as const;\n\nexport interface Permit1Input {\n type: \"permit1\";\n permitInfo: PermitSupportEIP2612;\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n}\n\nexport interface DaiPermitInput {\n type: \"dai\";\n permitInfo: PermitSupportDAI;\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n}\n\nexport interface Permit2Input {\n type: \"permit2\";\n variant: \"single\" | \"transferFrom\";\n token: Address;\n spender: Address;\n nonce: bigint;\n amount: bigint;\n expiration: bigint;\n chainId: number;\n}\n\nexport type PermitTypedDataInput = Permit1Input | DaiPermitInput | Permit2Input;\n\n// EIP-712 Type Definitions\ninterface EIP712Type {\n name: string;\n type: string;\n}\n\ninterface EIP712Domain {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex;\n}\n\n// Return type for Permit2\ninterface Permit2TypedDataSingle {\n types: typeof PERMIT2_PERMIT_SINGLE_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitSingle\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n details: {\n token: Address;\n amount: bigint;\n nonce: bigint;\n expiration: bigint;\n };\n spender: Address;\n sigDeadline: bigint;\n };\n}\ninterface Permit2TypedDataTransferFrom {\n types: typeof PERMIT2_TRANSFER_FROM_TYPES & {\n // EIP712Domain: EIP712Type[];\n };\n primaryType: \"PermitTransferFrom\";\n domain: {\n name: typeof PERMIT2_DOMAIN_NAME;\n chainId?: number;\n verifyingContract: typeof PERMIT2_ADDRESS;\n };\n message: {\n permitted: {\n token: Address;\n amount: bigint;\n };\n spender: Address;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for Permit1 Permit\ninterface Permit1PermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n };\n}\n\n// Return type for DAI Permit\ninterface DaiPermitTypedData {\n types: {\n // EIP712Domain: EIP712Type[];\n Permit: EIP712Type[];\n };\n primaryType: \"Permit\";\n domain: EIP712Domain;\n message: {\n holder: Address;\n spender: Address;\n nonce: bigint;\n expiry: bigint;\n allowed: boolean;\n };\n}\n\n// Union type for all possible return types\nexport type PermitTypedDataReturn =\n | Permit2TypedDataSingle\n | Permit2TypedDataTransferFrom\n | Permit1PermitTypedData\n | DaiPermitTypedData;\n\nexport function constructPermitTypedData(\n input: PermitTypedDataInput\n): PermitTypedDataReturn {\n if (input.type === \"permit2\") {\n const { token, spender, nonce, amount, expiration, variant, chainId } =\n input;\n\n if (variant === \"single\") {\n return {\n types: {\n ...PERMIT2_PERMIT_SINGLE_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitSingle\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n details: { token, amount, nonce, expiration },\n spender,\n sigDeadline: expiration,\n },\n };\n }\n\n if (variant === \"transferFrom\") {\n return {\n types: {\n ...PERMIT2_TRANSFER_FROM_TYPES,\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n },\n primaryType: \"PermitTransferFrom\",\n domain: {\n name: PERMIT2_DOMAIN_NAME,\n chainId,\n verifyingContract: PERMIT2_ADDRESS, // Uniswap Permit2\n },\n message: {\n permitted: {\n token,\n amount,\n },\n spender,\n nonce,\n deadline: expiration,\n },\n };\n }\n }\n\n if (input.type === \"permit1\") {\n const { owner, spender, value, nonce, deadline, permitInfo } = input;\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"owner\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint256\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { owner, spender, value, nonce, deadline },\n };\n }\n\n if (input.type === \"dai\") {\n const { holder, spender, nonce, expiry, allowed, permitInfo } = input;\n\n return {\n types: {\n // EIP712Domain: [\n // { name: \"name\", type: \"string\" },\n // { name: \"version\", type: \"string\" },\n // { name: \"chainId\", type: \"uint256\" },\n // { name: \"verifyingContract\", type: \"address\" },\n // ],\n Permit: [\n { name: \"holder\", type: \"address\" },\n { name: \"spender\", type: \"address\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"expiry\", type: \"uint256\" },\n { name: \"allowed\", type: \"bool\" },\n ],\n },\n primaryType: \"Permit\",\n domain: permitInfo.domain,\n message: { holder, spender, nonce, expiry, allowed },\n };\n }\n\n throw new Error(`Unsupported permit input type`);\n}\n\n// Example usage:\n// constructPermitTypedData({ type: 'permit1', variant: 'transfer', permitInfo, to, value, nonce, deadline });\n"],"names":["PERMIT2_ADDRESS","PERMIT2_DOMAIN_NAME","PERMIT2_TOKEN_PERMISSIONS","name","type","PERMIT2_TRANSFER_FROM_TYPES","PermitTransferFrom","TokenPermissions","PERMIT2_PERMIT_DETAILS","PERMIT2_PERMIT_SINGLE_TYPES","PermitSingle","PermitDetails","constructPermitTypedData","input","token","spender","nonce","amount","expiration","variant","chainId","types","primaryType","domain","verifyingContract","message","details","sigDeadline","permitted","deadline","owner","value","permitInfo","Permit","holder","expiry","allowed","Error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sources":["../../../../src/hooks/permit/utils/detect.ts"],"sourcesContent":["import { type Address, type Hex, isAddress } from \"viem\";\nimport { type Config, readContracts, getBytecode } from \"@wagmi/core\";\nimport { EIP_2612_PERMIT_ABI, UPGRADABLE_ERC_20_ABI } from \"./abi\";\nimport {\n DOMAIN_TYPEHASH_ABI,\n DOMAIN_HASHES_WITHOUT_VERSION,\n EIP712_DOMAIN_ABI,\n PERMIT_TYPEHASH_ABI,\n VERSIONS_ABI,\n EIP2612_PERMIT_TYPEHASH,\n DAI_LIKE_PERMIT_TYPEHASH,\n DOMAIN_ABIS,\n} from \"./constants\";\nimport { getDomainFromEIP712Domain } from \"./utils\";\nimport type { MapTuple } from \"./types\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { guessDomainParams } from \"./domainSeparator\";\n\nexport type PermitType = \"eip2612\" | \"dai\";\n\nexport type PermitSupportDAI = PermitSupportResultBase & { type: \"dai\" };\nexport type PermitSupportEIP2612 = PermitSupportResultBase & {\n type: \"eip2612\";\n};\n\ntype PermitSupportResultBase = {\n type: PermitType;\n domain: {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex; //\n };\n domainSeparator?: string;\n};\n\nexport type PermitSupportResult = PermitSupportDAI | PermitSupportEIP2612;\n\nexport type NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\";\n domain: null;\n};\n\nconst NotDetectedResult: NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\",\n domain: null,\n};\n\n/* const PERMIT_SIGNATURES = [\n {\n type: \"eip2612\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // value\n \"uint256\", // deadline\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n {\n type: \"dai\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // nonce\n \"uint256\", // expiry\n \"bool\", // allowed\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n];\n\n]; */\n\nexport const EIP_2612_PERMIT_SELECTOR = \"0xd505accf\"; // EIP2612.permit\nexport const DAI_PERMIT_SELECTOR = \"0x8fcbaf0c\"; // DAI.permit\n\nexport type DetectPermitSupportParams = {\n config: Config;\n tokenAddress: Address;\n chainId: number;\n};\n\nexport async function detectPermitSupportType({\n config,\n tokenAddress,\n chainId,\n}: DetectPermitSupportParams): Promise<\n PermitSupportResult | NotDetectedPermitSupport\n> {\n if (isETHaddress(tokenAddress)) {\n return NotDetectedResult;\n }\n\n const domainResults = await readContracts(config, {\n allowFailure: true,\n contracts: [\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"DOMAIN_SEPARATOR\", // @TODO maybe not needed\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_TYPEHASH_ABI,\n functionName: \"DOMAIN_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: PERMIT_TYPEHASH_ABI,\n functionName: \"PERMIT_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"name\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n // @TODO see how version gets assigned and then deleted for UNI 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 (mainnet)\n functionName: \"version\", // standard\n // @TODO chewck what a Proxy contract like 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 (USDC.e on Polygon) returns,\n // because of the fallback method it may return success with 0x instead of error\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"EIP712_VERSION\", // non-standard, in USDC.e on Polygon\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"ERC712_VERSION\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: UPGRADABLE_ERC_20_ABI,\n functionName: \"implementation\",\n // sometimes implementation() is guarded by a modifier, like aEthUSDT on mainnet,\n // then it's unreadable\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP712_DOMAIN_ABI,\n functionName: \"eip712Domain\", // standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndChain,\n functionName: \"eip712Domain\", // non-standard, Lido stETH on mainnet\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndSalt,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.withoutVersion,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n ],\n });\n\n type TupleOfResutls = MapTuple<typeof domainResults, \"result\">;\n\n const [\n domainSeparator,\n domainTypehash,\n permitTypehash,\n name,\n version,\n versionAlt1,\n versionAlt2,\n proxyImplementation,\n eip712Domain,\n eip712DomainVersionAndChain,\n eip712DomainVersionAndSalt,\n eip712DomainWithoutVersion,\n ] = domainResults.map((r) => r.result) as TupleOfResutls;\n\n if (!name) return NotDetectedResult;\n\n let domain: PermitSupportResult[\"domain\"] | null = null;\n\n if (eip712Domain) {\n const [\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n ] = eip712Domain;\n\n // if Token is a Proxy, then depending on the fallback method implementation,\n // the result may return partial eip712Domain that actually comes from an alternative eip712Domain impelmentation,\n // but in that case only the first fields that are the same between all implementations will be correct,\n // no verifyingContract\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = getDomainFromEIP712Domain({\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n });\n }\n }\n if (!domain && eip712DomainVersionAndChain) {\n const [name, version, chainId, verifyingContract] =\n eip712DomainVersionAndChain;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n if (!domain && eip712DomainVersionAndSalt) {\n const [name, version, verifyingContract, salt] = eip712DomainVersionAndSalt;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n verifyingContract,\n salt,\n };\n }\n }\n if (!domain && eip712DomainWithoutVersion) {\n const [name, chainId, verifyingContract] = eip712DomainWithoutVersion;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n\n if (\n domain &&\n (eip712Domain ||\n eip712DomainVersionAndChain ||\n eip712DomainVersionAndSalt ||\n eip712DomainWithoutVersion)\n ) {\n // eip712Domain is for EIP2612 Permit\n return {\n type: \"eip2612\",\n domain,\n domainSeparator,\n };\n }\n\n let permitType: PermitType | null = null;\n\n if (permitTypehash) {\n if (permitTypehash.toLowerCase() === EIP2612_PERMIT_TYPEHASH) {\n permitType = \"eip2612\";\n }\n\n if (permitTypehash.toLowerCase() === DAI_LIKE_PERMIT_TYPEHASH) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) {\n const contractWithMethods =\n proxyImplementation && isAddress(proxyImplementation)\n ? proxyImplementation\n : tokenAddress;\n\n const bytecode = await getBytecode(config, {\n address: contractWithMethods,\n chainId,\n });\n if (!bytecode) return NotDetectedResult;\n\n // see if permit() method with expected signature is available,\n // but this check will not catch Proxy Contracts\n if (bytecode.includes(EIP_2612_PERMIT_SELECTOR.slice(2))) {\n permitType = \"eip2612\";\n }\n\n if (bytecode.includes(DAI_PERMIT_SELECTOR.slice(2))) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) return NotDetectedResult;\n\n if (!domain) {\n domain = {\n name,\n // default to 1 if not found, sometimes version is not exposed publicly\n version: version || versionAlt1 || versionAlt2, // @TODO check maybe we need to drop version\n verifyingContract: tokenAddress,\n chainId,\n };\n\n // fetched domainSeparator, but not version,\n // version can not exist or just not publicly exposed,\n // ex. aEthUSDT on mainnet\n if (domainSeparator) {\n const guessedParams = guessDomainParams({\n domain,\n chainId,\n domainSeparator,\n });\n domain.version = guessedParams.version;\n domain.chainId = guessedParams.chainId;\n domain.salt = guessedParams.salt;\n }\n\n if (\n domainTypehash &&\n DOMAIN_HASHES_WITHOUT_VERSION.includes(\n domainTypehash.toLowerCase() as Address\n )\n ) {\n delete domain.version;\n } else if (domain.version === undefined) {\n delete domain.version;\n }\n\n if (domain.chainId === undefined) {\n delete domain.chainId;\n }\n\n if (domain.salt === undefined) {\n delete domain.salt;\n }\n }\n\n return {\n type: permitType,\n domain,\n domainSeparator,\n };\n}\n"],"names":["NotDetectedResult","type","domain","EIP_2612_PERMIT_SELECTOR","DAI_PERMIT_SELECTOR","detectPermitSupportType","config","tokenAddress","chainId","isETHaddress","domainResults","readContracts","allowFailure","contracts","abi","EIP_2612_PERMIT_ABI","functionName","address","args","DOMAIN_TYPEHASH_ABI","PERMIT_TYPEHASH_ABI","VERSIONS_ABI","UPGRADABLE_ERC_20_ABI","EIP712_DOMAIN_ABI","DOMAIN_ABIS","versionAndChain","versionAndSalt","withoutVersion","domainSeparator","domainTypehash","permitTypehash","name","version","versionAlt1","versionAlt2","proxyImplementation","eip712Domain","eip712DomainVersionAndChain","eip712DomainVersionAndSalt","eip712DomainWithoutVersion","map","r","result","fields","verifyingContract","salt","extensions","toLowerCase","getDomainFromEIP712Domain","Number","permitType","EIP2612_PERMIT_TYPEHASH","DAI_LIKE_PERMIT_TYPEHASH","contractWithMethods","isAddress","bytecode","getBytecode","includes","slice","guessedParams","guessDomainParams","DOMAIN_HASHES_WITHOUT_VERSION","undefined"],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sources":["../../../../src/hooks/permit/utils/detect.ts"],"sourcesContent":["import { type Address, type Hex, isAddress } from \"viem\";\nimport { type Config, readContracts, getBytecode } from \"@wagmi/core\";\nimport { EIP_2612_PERMIT_ABI, UPGRADABLE_ERC_20_ABI } from \"./abi\";\nimport {\n DOMAIN_TYPEHASH_ABI,\n DOMAIN_HASHES_WITHOUT_VERSION,\n EIP712_DOMAIN_ABI,\n PERMIT_TYPEHASH_ABI,\n VERSIONS_ABI,\n EIP2612_PERMIT_TYPEHASH,\n DAI_LIKE_PERMIT_TYPEHASH,\n DOMAIN_ABIS,\n} from \"./constants\";\nimport { getDomainFromEIP712Domain } from \"./utils\";\nimport type { MapTuple } from \"./types\";\nimport { isETHaddress } from \"@/tokens/utils/eth\";\nimport { guessDomainParams } from \"./domainSeparator\";\n\nexport type PermitType = \"eip2612\" | \"dai\";\n\nexport type PermitSupportDAI = PermitSupportResultBase & { type: \"dai\" };\nexport type PermitSupportEIP2612 = PermitSupportResultBase & {\n type: \"eip2612\";\n};\n\ntype PermitSupportResultBase = {\n type: PermitType;\n domain: {\n name: string;\n version?: string;\n chainId?: number;\n verifyingContract: Address;\n salt?: Hex; //\n };\n domainSeparator?: string;\n};\n\nexport type PermitSupportResult = PermitSupportDAI | PermitSupportEIP2612;\n\nexport type NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\";\n domain: null;\n};\n\nconst NotDetectedResult: NotDetectedPermitSupport = {\n type: \"NOT_DETECTED\",\n domain: null,\n};\n\n/* const PERMIT_SIGNATURES = [\n {\n type: \"eip2612\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // value\n \"uint256\", // deadline\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n {\n type: \"dai\",\n name: \"permit\",\n inputs: [\n \"address\", // owner\n \"address\", // spender\n \"uint256\", // nonce\n \"uint256\", // expiry\n \"bool\", // allowed\n \"uint8\", // v\n \"bytes32\", // r\n \"bytes32\", // s\n ],\n },\n];\n\n]; */\n\nexport const EIP_2612_PERMIT_SELECTOR = \"0xd505accf\"; // EIP2612.permit\nexport const DAI_PERMIT_SELECTOR = \"0x8fcbaf0c\"; // DAI.permit\n\nexport type DetectPermitSupportParams = {\n config: Config;\n tokenAddress: Address;\n chainId: number;\n};\n\nexport async function detectPermitSupportType({\n config,\n tokenAddress,\n chainId,\n}: DetectPermitSupportParams): Promise<\n PermitSupportResult | NotDetectedPermitSupport\n> {\n if (isETHaddress(tokenAddress)) {\n return NotDetectedResult;\n }\n\n const domainResults = await readContracts(config, {\n allowFailure: true,\n contracts: [\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"DOMAIN_SEPARATOR\", // @TODO maybe not needed\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_TYPEHASH_ABI,\n functionName: \"DOMAIN_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: PERMIT_TYPEHASH_ABI,\n functionName: \"PERMIT_TYPEHASH\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n functionName: \"name\",\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP_2612_PERMIT_ABI,\n // @TODO see how version gets assigned and then deleted for UNI 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 (mainnet)\n functionName: \"version\", // standard\n // @TODO chewck what a Proxy contract like 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 (USDC.e on Polygon) returns,\n // because of the fallback method it may return success with 0x instead of error\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"EIP712_VERSION\", // non-standard, in USDC.e on Polygon\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: VERSIONS_ABI,\n functionName: \"ERC712_VERSION\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: UPGRADABLE_ERC_20_ABI,\n functionName: \"implementation\",\n // sometimes implementation() is guarded by a modifier, like aEthUSDT on mainnet,\n // then it's unreadable\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: EIP712_DOMAIN_ABI,\n functionName: \"eip712Domain\", // standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndChain,\n functionName: \"eip712Domain\", // non-standard, Lido stETH on mainnet\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.versionAndSalt,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n {\n chainId,\n abi: DOMAIN_ABIS.withoutVersion,\n functionName: \"eip712Domain\", // non-standard\n address: tokenAddress,\n args: [],\n },\n ],\n });\n\n type TupleOfResutls = MapTuple<typeof domainResults, \"result\">;\n\n const [\n domainSeparator,\n domainTypehash,\n permitTypehash,\n name,\n version,\n versionAlt1,\n versionAlt2,\n proxyImplementation,\n eip712Domain,\n eip712DomainVersionAndChain,\n eip712DomainVersionAndSalt,\n eip712DomainWithoutVersion,\n ] = domainResults.map((r) => r.result) as TupleOfResutls;\n\n if (!name) return NotDetectedResult;\n\n let domain: PermitSupportResult[\"domain\"] | null = null;\n\n if (eip712Domain) {\n const [\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n ] = eip712Domain;\n\n // if Token is a Proxy, then depending on the fallback method implementation,\n // the result may return partial eip712Domain that actually comes from an alternative eip712Domain impelmentation,\n // but in that case only the first fields that are the same between all implementations will be correct,\n // no verifyingContract\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = getDomainFromEIP712Domain({\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n });\n }\n }\n if (!domain && eip712DomainVersionAndChain) {\n const [name, version, chainId, verifyingContract] =\n eip712DomainVersionAndChain;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n if (!domain && eip712DomainVersionAndSalt) {\n const [name, version, verifyingContract, salt] = eip712DomainVersionAndSalt;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n version,\n verifyingContract,\n salt,\n };\n }\n }\n if (!domain && eip712DomainWithoutVersion) {\n const [name, chainId, verifyingContract] = eip712DomainWithoutVersion;\n\n if (verifyingContract.toLowerCase() === tokenAddress.toLowerCase()) {\n domain = {\n name,\n chainId: Number(chainId),\n verifyingContract,\n };\n }\n }\n\n if (\n domain &&\n (eip712Domain ||\n eip712DomainVersionAndChain ||\n eip712DomainVersionAndSalt ||\n eip712DomainWithoutVersion)\n ) {\n // eip712Domain is for EIP2612 Permit\n return {\n type: \"eip2612\",\n domain,\n domainSeparator,\n };\n }\n\n let permitType: PermitType | null = null;\n\n if (permitTypehash) {\n if (permitTypehash.toLowerCase() === EIP2612_PERMIT_TYPEHASH) {\n permitType = \"eip2612\";\n }\n\n if (permitTypehash.toLowerCase() === DAI_LIKE_PERMIT_TYPEHASH) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) {\n const contractWithMethods =\n proxyImplementation && isAddress(proxyImplementation)\n ? proxyImplementation\n : tokenAddress;\n\n const bytecode = await getBytecode(config, {\n address: contractWithMethods,\n chainId,\n });\n if (!bytecode) return NotDetectedResult;\n\n // see if permit() method with expected signature is available,\n // but this check will not catch Proxy Contracts\n if (bytecode.includes(EIP_2612_PERMIT_SELECTOR.slice(2))) {\n permitType = \"eip2612\";\n }\n\n if (bytecode.includes(DAI_PERMIT_SELECTOR.slice(2))) {\n permitType = \"dai\";\n }\n }\n\n if (!permitType) return NotDetectedResult;\n\n if (!domain) {\n domain = {\n name,\n // default to 1 if not found, sometimes version is not exposed publicly\n version: version || versionAlt1 || versionAlt2, // @TODO check maybe we need to drop version\n verifyingContract: tokenAddress,\n chainId,\n };\n\n // fetched domainSeparator, but not version,\n // version can not exist or just not publicly exposed,\n // ex. aEthUSDT on mainnet\n if (domainSeparator) {\n const guessedParams = guessDomainParams({\n domain,\n chainId,\n domainSeparator,\n });\n domain.version = guessedParams.version;\n domain.chainId = guessedParams.chainId;\n domain.salt = guessedParams.salt;\n }\n\n if (\n domainTypehash &&\n DOMAIN_HASHES_WITHOUT_VERSION.includes(\n domainTypehash.toLowerCase() as Address\n )\n ) {\n delete domain.version;\n } else if (domain.version === undefined) {\n delete domain.version;\n }\n\n if (domain.chainId === undefined) {\n delete domain.chainId;\n }\n\n if (domain.salt === undefined) {\n delete domain.salt;\n }\n }\n\n return {\n type: permitType,\n domain,\n domainSeparator,\n };\n}\n"],"names":["NotDetectedResult","type","domain","EIP_2612_PERMIT_SELECTOR","DAI_PERMIT_SELECTOR","detectPermitSupportType","config","tokenAddress","chainId","isETHaddress","domainResults","readContracts","allowFailure","contracts","abi","EIP_2612_PERMIT_ABI","functionName","address","args","DOMAIN_TYPEHASH_ABI","PERMIT_TYPEHASH_ABI","VERSIONS_ABI","UPGRADABLE_ERC_20_ABI","EIP712_DOMAIN_ABI","DOMAIN_ABIS","versionAndChain","versionAndSalt","withoutVersion","domainSeparator","domainTypehash","permitTypehash","name","version","versionAlt1","versionAlt2","proxyImplementation","eip712Domain","eip712DomainVersionAndChain","eip712DomainVersionAndSalt","eip712DomainWithoutVersion","map","r","result","fields","verifyingContract","salt","extensions","toLowerCase","getDomainFromEIP712Domain","Number","permitType","EIP2612_PERMIT_TYPEHASH","DAI_LIKE_PERMIT_TYPEHASH","contractWithMethods","isAddress","bytecode","getBytecode","includes","slice","guessedParams","guessDomainParams","DOMAIN_HASHES_WITHOUT_VERSION","undefined"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"domainSeparator.js","sources":["../../../../src/hooks/permit/utils/domainSeparator.ts"],"sourcesContent":["import { type Address, type Hex, domainSeparator, toHex } from \"viem\";\nimport type { PermitSupportResult } from \"./detect\";\n\nexport function getDomainSeparatorVersionChain({\n name,\n version,\n chainId,\n verifyingContract,\n}: {\n name: string;\n version: string;\n chainId: bigint;\n verifyingContract: Address;\n}): Hex {\n /**\n * Internally does\n const EIP712_DOMAIN_TYPEHASH = keccak256(\n toBytes(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")\n );\n\n const nameHash = keccak256(toBytes(name));\n const versionHash = keccak256(toBytes(version));\n\n const encoded = encodeAbiParameters(\n [\n { type: 'bytes32', name: 'typeHash' },\n { type: 'bytes32', name: 'nameHash' },\n { type: 'bytes32', name: 'versionHash' },\n { type: 'uint256', name: 'chainId' },\n { type: 'address', name: 'verifyingContract' },\n ],\n [EIP712_DOMAIN_TYPEHASH, nameHash, versionHash, chainId, verifyingContract]\n );\n\n return keccak256(encoded);\n */\n return domainSeparator({\n domain: {\n name,\n version,\n chainId,\n verifyingContract,\n },\n });\n}\n\nexport function getDomainSeparatorChain({\n name,\n chainId,\n verifyingContract,\n}: {\n name: string;\n chainId: bigint;\n verifyingContract: Address;\n}): Hex {\n return domainSeparator({\n domain: {\n name,\n chainId,\n verifyingContract,\n },\n });\n}\n\nexport function getDomainSeparatorVersionSalt({\n name,\n version,\n salt,\n verifyingContract,\n}: {\n name: string;\n version: string;\n salt: Hex;\n verifyingContract: Address;\n}): Hex {\n return domainSeparator({\n domain: {\n name,\n version,\n verifyingContract,\n salt,\n },\n });\n}\n\ntype ComputeDomainSeparatorParams = {\n salt?: Hex; // used as salt (ex. USDC.e on Polygon)\n domain: Pick<\n PermitSupportResult[\"domain\"],\n \"name\" | \"version\" | \"verifyingContract\"\n >;\n chainId: number;\n};\n\nfunction computeDomainSeparator({\n salt,\n domain,\n chainId,\n}: ComputeDomainSeparatorParams): Hex {\n if (salt) {\n /** with salt (ex. USDC.e on Polygon)\n * DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n EIP712_DOMAIN_TYPEHASH,\n keccak256(bytes(name)),\n keccak256(bytes(version)),\n address(this),\n bytes32(chainId) // salt\n )\n );\n }\n */\n\n const domainSeparator = getDomainSeparatorVersionSalt({\n name: domain.name,\n version: domain.version || \"1\", // salt is used together with version\n salt,\n verifyingContract: domain.verifyingContract,\n });\n\n return domainSeparator;\n }\n\n if (domain.version) {\n /** standard domainSeparator, with version and chainId\n * DOMAIN_SEPARATOR = keccak256(abi.encode(\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name)),\n keccak256(bytes(version)),\n chainId, // uint256\n address(this)\n ));\n */\n const domainSeparator = getDomainSeparatorVersionChain({\n name: domain.name,\n version: domain.version, // salt is used together with version\n chainId: BigInt(chainId),\n verifyingContract: domain.verifyingContract,\n });\n\n return domainSeparator;\n }\n\n /** without version\n * DOMAIN_SEPARATOR = keccak256(abi.encode(\n keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name)),\n chainId, // uint256\n address(this)\n ));\n */\n\n const domainSeparator = getDomainSeparatorChain({\n name: domain.name,\n chainId: BigInt(chainId),\n verifyingContract: domain.verifyingContract,\n });\n\n return domainSeparator;\n}\n\ntype GuessDomainVersionParams = {\n domain: Pick<\n PermitSupportResult[\"domain\"],\n \"name\" | \"verifyingContract\" | \"version\"\n >;\n chainId: number;\n domainSeparator: string;\n};\n\ntype GuessDomainVersionResult =\n | {\n version: string;\n chainId?: never;\n salt?: never;\n }\n | { chainId: number; version?: never; salt?: never }\n | {\n version: string;\n chainId: number;\n salt?: never;\n }\n | {\n version: string;\n salt: Hex;\n chainId?: never;\n };\n\nexport function guessDomainParams({\n domain,\n chainId,\n domainSeparator,\n}: GuessDomainVersionParams): GuessDomainVersionResult {\n // version was read from the contract, so it's included for certain\n if (domain.version) {\n const standardDomainSeparator = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: domain.version, // maybe version=1, very often\n verifyingContract: domain.verifyingContract,\n },\n chainId,\n });\n\n if (\n standardDomainSeparator.toLowerCase() === domainSeparator.toLowerCase()\n ) {\n return {\n version: domain.version,\n chainId,\n };\n }\n\n // left-padded to bytes32\n const salt = toHex(chainId, { size: 32 }); // chainId used as salt (ex. USDC.e on Polygon)\n\n const domainSeparatorWithSalt = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: domain.version,\n verifyingContract: domain.verifyingContract,\n },\n salt,\n chainId,\n });\n\n if (\n domainSeparatorWithSalt.toLowerCase() === domainSeparator.toLowerCase()\n ) {\n return {\n version: domain.version,\n salt,\n };\n }\n\n // even rarer domainSeparator, can't really guess params\n return { chainId, version: domain.version };\n }\n\n const standardDomainSeparator = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"1\", // maybe version=1, very often\n verifyingContract: domain.verifyingContract,\n },\n chainId,\n });\n\n if (standardDomainSeparator.toLowerCase() === domainSeparator.toLowerCase()) {\n return {\n version: \"1\",\n chainId,\n };\n }\n\n const domainSeparatorWithoutVersion = computeDomainSeparator({\n // maybe without version, often for older tokens\n domain: { name: domain.name, verifyingContract: domain.verifyingContract },\n chainId,\n });\n\n if (\n domainSeparatorWithoutVersion.toLowerCase() ===\n domainSeparator.toLowerCase()\n ) {\n return {\n chainId,\n };\n }\n\n const salt = toHex(chainId, { size: 32 }); // chainId used as salt (ex. USDC.e on Polygon)\n\n const domainSeparatorWithSalt = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"1\",\n verifyingContract: domain.verifyingContract,\n },\n salt,\n chainId,\n });\n\n if (domainSeparatorWithSalt.toLowerCase() === domainSeparator.toLowerCase()) {\n return {\n version: \"1\",\n salt,\n };\n }\n\n const domainSeparatorV2 = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"2\", // maybe version=2, often on newer tokens,\n // but usually exposed publicly, together with eip712Domain\n verifyingContract: domain.verifyingContract,\n },\n chainId,\n });\n\n if (domainSeparatorV2.toLowerCase() === domainSeparator.toLowerCase()) {\n return {\n version: \"2\",\n chainId,\n };\n }\n\n const domainSeparatorWithSaltV2 = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"2\",\n verifyingContract: domain.verifyingContract,\n },\n salt, // version=2, but with salt\n chainId,\n });\n\n if (\n domainSeparatorWithSaltV2.toLowerCase() === domainSeparator.toLowerCase()\n ) {\n return {\n version: \"2\",\n salt,\n };\n }\n\n // even rarer domainSeparator, can't really guess params\n return { chainId };\n}\n"],"names":["getDomainSeparatorVersionChain","name","version","chainId","verifyingContract","domainSeparator","domain","getDomainSeparatorChain","getDomainSeparatorVersionSalt","salt","computeDomainSeparator","BigInt","guessDomainParams","standardDomainSeparator","toLowerCase","toHex","size","domainSeparatorWithSalt","domainSeparatorWithoutVersion","domainSeparatorV2","domainSeparatorWithSaltV2"],"mappings":";;AAGO,SAASA,8BAAAA,CAA+B;AAAA,EAC7CC,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC;AAMF,CAAA,EAAQ;AAuBN,EAAA,OAAOC,eAAAA,CAAgB;AAAA,IACrBC,MAAAA,EAAQ;AAAA,MACNL,IAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC;AAAAA;AACF,GACD,CAAA;AACH;AAEO,SAASG,uBAAAA,CAAwB;AAAA,EACtCN,IAAAA;AAAAA,EACAE,OAAAA;AAAAA,EACAC;AAKF,CAAA,EAAQ;AACN,EAAA,OAAOC,eAAAA,CAAgB;AAAA,IACrBC,MAAAA,EAAQ;AAAA,MACNL,IAAAA;AAAAA,MACAE,OAAAA;AAAAA,MACAC;AAAAA;AACF,GACD,CAAA;AACH;AAEO,SAASI,6BAAAA,CAA8B;AAAA,EAC5CP,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAO,IAAAA;AAAAA,EACAL;AAMF,CAAA,EAAQ;AACN,EAAA,OAAOC,eAAAA,CAAgB;AAAA,IACrBC,MAAAA,EAAQ;AAAA,MACNL,IAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAE,iBAAAA;AAAAA,MACAK;AAAAA;AACF,GACD,CAAA;AACH;AAWA,SAASC,sBAAAA,CAAuB;AAAA,EAC9BD,IAAAA;AAAAA,EACAH,MAAAA;AAAAA,EACAH;AAC4B,CAAA,EAAQ;AACpC,EAAA,IAAIM,IAAAA,EAAM;AAcR,IAAA,MAAMJ,mBAAkBG,6BAAAA,CAA8B;AAAA,MACpDP,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAASI,OAAOJ,OAAAA,IAAW,GAAA;AAAA;AAAA,MAC3BO,IAAAA;AAAAA,MACAL,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC3B,CAAA;AAED,IAAA,OAAOC,gBAAAA;AAAAA;AAGT,EAAA,IAAIC,OAAOJ,OAAAA,EAAS;AAUlB,IAAA,MAAMG,mBAAkBL,8BAAAA,CAA+B;AAAA,MACrDC,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA;AAAAA,MAChBC,OAAAA,EAASQ,OAAOR,OAAO,CAAA;AAAA,MACvBC,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC3B,CAAA;AAED,IAAA,OAAOC,gBAAAA;AAAAA;AAYT,EAAA,MAAMA,mBAAkBE,uBAAAA,CAAwB;AAAA,IAC9CN,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,IACbE,OAAAA,EAASQ,OAAOR,OAAO,CAAA;AAAA,IACvBC,mBAAmBE,MAAAA,CAAOF;AAAAA,GAC3B,CAAA;AAED,EAAA,OAAOC,gBAAAA;AACT;AA6BO,SAASO,iBAAAA,CAAkB;AAAA,EAChCN,MAAAA;AAAAA,EACAH,OAAAA;AAAAA,EACAE,eAAAA,EAAAA;AACwB,CAAA,EAA6B;AAErD,EAAA,IAAIC,OAAOJ,OAAAA,EAAS;AAClB,IAAA,MAAMW,2BAA0BH,sBAAAA,CAAuB;AAAA,MACrDJ,MAAAA,EAAQ;AAAA,QACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,QACbC,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA;AAAAA,QAChBE,mBAAmBE,MAAAA,CAAOF;AAAAA,OAC5B;AAAA,MACAD;AAAAA,KACD,CAAA;AAED,IAAA,IACEU,wBAAAA,CAAwBC,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EACtE;AACA,MAAA,OAAO;AAAA,QACLZ,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA,QAChBC;AAAAA,OACF;AAAA;AAIF,IAAA,MAAMM,KAAAA,GAAOM,MAAMZ,OAAAA,EAAS;AAAA,MAAEa,IAAAA,EAAM;AAAA,KAAI,CAAA;AAExC,IAAA,MAAMC,2BAA0BP,sBAAAA,CAAuB;AAAA,MACrDJ,MAAAA,EAAQ;AAAA,QACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,QACbC,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA,QAChBE,mBAAmBE,MAAAA,CAAOF;AAAAA,OAC5B;AAAA,MACAK,IAAAA,EAAAA,KAAAA;AAAAA,MACAN;AAAAA,KACD,CAAA;AAED,IAAA,IACEc,wBAAAA,CAAwBH,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EACtE;AACA,MAAA,OAAO;AAAA,QACLZ,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA,QAChBO,IAAAA,EAAAA;AAAAA,OACF;AAAA;AAIF,IAAA,OAAO;AAAA,MAAEN,OAAAA;AAAAA,MAASD,SAASI,MAAAA,CAAOJ;AAAAA,KAAQ;AAAA;AAG5C,EAAA,MAAMW,0BAA0BH,sBAAAA,CAAuB;AAAA,IACrDJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA;AAAA,MACTE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAD;AAAAA,GACD,CAAA;AAED,EAAA,IAAIU,uBAAAA,CAAwBC,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EAAG;AAC3E,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTC;AAAAA,KACF;AAAA;AAGF,EAAA,MAAMe,gCAAgCR,sBAAAA,CAAuB;AAAA;AAAA,IAE3DJ,MAAAA,EAAQ;AAAA,MAAEL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MAAMG,mBAAmBE,MAAAA,CAAOF;AAAAA,KAAkB;AAAA,IACzED;AAAAA,GACD,CAAA;AAED,EAAA,IACEe,6BAAAA,CAA8BJ,WAAAA,EAAY,KAC1CT,gBAAAA,CAAgBS,aAAY,EAC5B;AACA,IAAA,OAAO;AAAA,MACLX;AAAAA,KACF;AAAA;AAGF,EAAA,MAAMM,IAAAA,GAAOM,MAAMZ,OAAAA,EAAS;AAAA,IAAEa,IAAAA,EAAM;AAAA,GAAI,CAAA;AAExC,EAAA,MAAMC,0BAA0BP,sBAAAA,CAAuB;AAAA,IACrDJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA,MACTE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAK,IAAAA;AAAAA,IACAN;AAAAA,GACD,CAAA;AAED,EAAA,IAAIc,uBAAAA,CAAwBH,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EAAG;AAC3E,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTO;AAAAA,KACF;AAAA;AAGF,EAAA,MAAMU,oBAAoBT,sBAAAA,CAAuB;AAAA,IAC/CJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA;AAAA;AAAA,MAETE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAD;AAAAA,GACD,CAAA;AAED,EAAA,IAAIgB,iBAAAA,CAAkBL,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EAAG;AACrE,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTC;AAAAA,KACF;AAAA;AAGF,EAAA,MAAMiB,4BAA4BV,sBAAAA,CAAuB;AAAA,IACvDJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA,MACTE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAK,IAAAA;AAAAA;AAAAA,IACAN;AAAAA,GACD,CAAA;AAED,EAAA,IACEiB,yBAAAA,CAA0BN,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EACxE;AACA,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTO;AAAAA,KACF;AAAA;AAIF,EAAA,OAAO;AAAA,IAAEN;AAAAA,GAAQ;AACnB;;;;"}
1
+ {"version":3,"file":"domainSeparator.js","sources":["../../../../src/hooks/permit/utils/domainSeparator.ts"],"sourcesContent":["import { type Address, type Hex, domainSeparator, toHex } from \"viem\";\nimport type { PermitSupportResult } from \"./detect\";\n\nexport function getDomainSeparatorVersionChain({\n name,\n version,\n chainId,\n verifyingContract,\n}: {\n name: string;\n version: string;\n chainId: bigint;\n verifyingContract: Address;\n}): Hex {\n /**\n * Internally does\n const EIP712_DOMAIN_TYPEHASH = keccak256(\n toBytes(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\")\n );\n\n const nameHash = keccak256(toBytes(name));\n const versionHash = keccak256(toBytes(version));\n\n const encoded = encodeAbiParameters(\n [\n { type: 'bytes32', name: 'typeHash' },\n { type: 'bytes32', name: 'nameHash' },\n { type: 'bytes32', name: 'versionHash' },\n { type: 'uint256', name: 'chainId' },\n { type: 'address', name: 'verifyingContract' },\n ],\n [EIP712_DOMAIN_TYPEHASH, nameHash, versionHash, chainId, verifyingContract]\n );\n\n return keccak256(encoded);\n */\n return domainSeparator({\n domain: {\n name,\n version,\n chainId,\n verifyingContract,\n },\n });\n}\n\nexport function getDomainSeparatorChain({\n name,\n chainId,\n verifyingContract,\n}: {\n name: string;\n chainId: bigint;\n verifyingContract: Address;\n}): Hex {\n return domainSeparator({\n domain: {\n name,\n chainId,\n verifyingContract,\n },\n });\n}\n\nexport function getDomainSeparatorVersionSalt({\n name,\n version,\n salt,\n verifyingContract,\n}: {\n name: string;\n version: string;\n salt: Hex;\n verifyingContract: Address;\n}): Hex {\n return domainSeparator({\n domain: {\n name,\n version,\n verifyingContract,\n salt,\n },\n });\n}\n\ntype ComputeDomainSeparatorParams = {\n salt?: Hex; // used as salt (ex. USDC.e on Polygon)\n domain: Pick<\n PermitSupportResult[\"domain\"],\n \"name\" | \"version\" | \"verifyingContract\"\n >;\n chainId: number;\n};\n\nfunction computeDomainSeparator({\n salt,\n domain,\n chainId,\n}: ComputeDomainSeparatorParams): Hex {\n if (salt) {\n /** with salt (ex. USDC.e on Polygon)\n * DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n EIP712_DOMAIN_TYPEHASH,\n keccak256(bytes(name)),\n keccak256(bytes(version)),\n address(this),\n bytes32(chainId) // salt\n )\n );\n }\n */\n\n const domainSeparator = getDomainSeparatorVersionSalt({\n name: domain.name,\n version: domain.version || \"1\", // salt is used together with version\n salt,\n verifyingContract: domain.verifyingContract,\n });\n\n return domainSeparator;\n }\n\n if (domain.version) {\n /** standard domainSeparator, with version and chainId\n * DOMAIN_SEPARATOR = keccak256(abi.encode(\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name)),\n keccak256(bytes(version)),\n chainId, // uint256\n address(this)\n ));\n */\n const domainSeparator = getDomainSeparatorVersionChain({\n name: domain.name,\n version: domain.version, // salt is used together with version\n chainId: BigInt(chainId),\n verifyingContract: domain.verifyingContract,\n });\n\n return domainSeparator;\n }\n\n /** without version\n * DOMAIN_SEPARATOR = keccak256(abi.encode(\n keccak256(\"EIP712Domain(string name,uint256 chainId,address verifyingContract)\"),\n keccak256(bytes(name)),\n chainId, // uint256\n address(this)\n ));\n */\n\n const domainSeparator = getDomainSeparatorChain({\n name: domain.name,\n chainId: BigInt(chainId),\n verifyingContract: domain.verifyingContract,\n });\n\n return domainSeparator;\n}\n\ntype GuessDomainVersionParams = {\n domain: Pick<\n PermitSupportResult[\"domain\"],\n \"name\" | \"verifyingContract\" | \"version\"\n >;\n chainId: number;\n domainSeparator: string;\n};\n\ntype GuessDomainVersionResult =\n | {\n version: string;\n chainId?: never;\n salt?: never;\n }\n | { chainId: number; version?: never; salt?: never }\n | {\n version: string;\n chainId: number;\n salt?: never;\n }\n | {\n version: string;\n salt: Hex;\n chainId?: never;\n };\n\nexport function guessDomainParams({\n domain,\n chainId,\n domainSeparator,\n}: GuessDomainVersionParams): GuessDomainVersionResult {\n // version was read from the contract, so it's included for certain\n if (domain.version) {\n const standardDomainSeparator = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: domain.version, // maybe version=1, very often\n verifyingContract: domain.verifyingContract,\n },\n chainId,\n });\n\n if (\n standardDomainSeparator.toLowerCase() === domainSeparator.toLowerCase()\n ) {\n return {\n version: domain.version,\n chainId,\n };\n }\n\n // left-padded to bytes32\n const salt = toHex(chainId, { size: 32 }); // chainId used as salt (ex. USDC.e on Polygon)\n\n const domainSeparatorWithSalt = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: domain.version,\n verifyingContract: domain.verifyingContract,\n },\n salt,\n chainId,\n });\n\n if (\n domainSeparatorWithSalt.toLowerCase() === domainSeparator.toLowerCase()\n ) {\n return {\n version: domain.version,\n salt,\n };\n }\n\n // even rarer domainSeparator, can't really guess params\n return { chainId, version: domain.version };\n }\n\n const standardDomainSeparator = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"1\", // maybe version=1, very often\n verifyingContract: domain.verifyingContract,\n },\n chainId,\n });\n\n if (standardDomainSeparator.toLowerCase() === domainSeparator.toLowerCase()) {\n return {\n version: \"1\",\n chainId,\n };\n }\n\n const domainSeparatorWithoutVersion = computeDomainSeparator({\n // maybe without version, often for older tokens\n domain: { name: domain.name, verifyingContract: domain.verifyingContract },\n chainId,\n });\n\n if (\n domainSeparatorWithoutVersion.toLowerCase() ===\n domainSeparator.toLowerCase()\n ) {\n return {\n chainId,\n };\n }\n\n const salt = toHex(chainId, { size: 32 }); // chainId used as salt (ex. USDC.e on Polygon)\n\n const domainSeparatorWithSalt = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"1\",\n verifyingContract: domain.verifyingContract,\n },\n salt,\n chainId,\n });\n\n if (domainSeparatorWithSalt.toLowerCase() === domainSeparator.toLowerCase()) {\n return {\n version: \"1\",\n salt,\n };\n }\n\n const domainSeparatorV2 = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"2\", // maybe version=2, often on newer tokens,\n // but usually exposed publicly, together with eip712Domain\n verifyingContract: domain.verifyingContract,\n },\n chainId,\n });\n\n if (domainSeparatorV2.toLowerCase() === domainSeparator.toLowerCase()) {\n return {\n version: \"2\",\n chainId,\n };\n }\n\n const domainSeparatorWithSaltV2 = computeDomainSeparator({\n domain: {\n name: domain.name,\n version: \"2\",\n verifyingContract: domain.verifyingContract,\n },\n salt, // version=2, but with salt\n chainId,\n });\n\n if (\n domainSeparatorWithSaltV2.toLowerCase() === domainSeparator.toLowerCase()\n ) {\n return {\n version: \"2\",\n salt,\n };\n }\n\n // even rarer domainSeparator, can't really guess params\n return { chainId };\n}\n"],"names":["getDomainSeparatorVersionChain","name","version","chainId","verifyingContract","domainSeparator","domain","getDomainSeparatorChain","getDomainSeparatorVersionSalt","salt","computeDomainSeparator","BigInt","guessDomainParams","standardDomainSeparator","toLowerCase","toHex","size","domainSeparatorWithSalt","domainSeparatorWithoutVersion","domainSeparatorV2","domainSeparatorWithSaltV2"],"mappings":";;AAGO,SAASA,8BAAAA,CAA+B;AAAA,EAC7CC,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC;AAMF,CAAA,EAAQ;AAuBN,EAAA,OAAOC,eAAAA,CAAgB;AAAA,IACrBC,MAAAA,EAAQ;AAAA,MACNL,IAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAC;AAAAA;AACF,GACD,CAAA;AACH;AAEO,SAASG,uBAAAA,CAAwB;AAAA,EACtCN,IAAAA;AAAAA,EACAE,OAAAA;AAAAA,EACAC;AAKF,CAAA,EAAQ;AACN,EAAA,OAAOC,eAAAA,CAAgB;AAAA,IACrBC,MAAAA,EAAQ;AAAA,MACNL,IAAAA;AAAAA,MACAE,OAAAA;AAAAA,MACAC;AAAAA;AACF,GACD,CAAA;AACH;AAEO,SAASI,6BAAAA,CAA8B;AAAA,EAC5CP,IAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAO,IAAAA;AAAAA,EACAL;AAMF,CAAA,EAAQ;AACN,EAAA,OAAOC,eAAAA,CAAgB;AAAA,IACrBC,MAAAA,EAAQ;AAAA,MACNL,IAAAA;AAAAA,MACAC,OAAAA;AAAAA,MACAE,iBAAAA;AAAAA,MACAK;AAAAA;AACF,GACD,CAAA;AACH;AAWA,SAASC,sBAAAA,CAAuB;AAAA,EAC9BD,IAAAA;AAAAA,EACAH,MAAAA;AAAAA,EACAH;AAC4B,CAAA,EAAQ;AACpC,EAAA,IAAIM,IAAAA,EAAM;AAcR,IAAA,MAAMJ,mBAAkBG,6BAAAA,CAA8B;AAAA,MACpDP,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAASI,OAAOJ,OAAAA,IAAW,GAAA;AAAA;AAAA,MAC3BO,IAAAA;AAAAA,MACAL,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC3B,CAAA;AAED,IAAA,OAAOC,gBAAAA;AAAAA,EACT;AAEA,EAAA,IAAIC,OAAOJ,OAAAA,EAAS;AAUlB,IAAA,MAAMG,mBAAkBL,8BAAAA,CAA+B;AAAA,MACrDC,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA;AAAAA,MAChBC,OAAAA,EAASQ,OAAOR,OAAO,CAAA;AAAA,MACvBC,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC3B,CAAA;AAED,IAAA,OAAOC,gBAAAA;AAAAA,EACT;AAWA,EAAA,MAAMA,mBAAkBE,uBAAAA,CAAwB;AAAA,IAC9CN,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,IACbE,OAAAA,EAASQ,OAAOR,OAAO,CAAA;AAAA,IACvBC,mBAAmBE,MAAAA,CAAOF;AAAAA,GAC3B,CAAA;AAED,EAAA,OAAOC,gBAAAA;AACT;AA6BO,SAASO,iBAAAA,CAAkB;AAAA,EAChCN,MAAAA;AAAAA,EACAH,OAAAA;AAAAA,EACAE,eAAAA,EAAAA;AACwB,CAAA,EAA6B;AAErD,EAAA,IAAIC,OAAOJ,OAAAA,EAAS;AAClB,IAAA,MAAMW,2BAA0BH,sBAAAA,CAAuB;AAAA,MACrDJ,MAAAA,EAAQ;AAAA,QACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,QACbC,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA;AAAAA,QAChBE,mBAAmBE,MAAAA,CAAOF;AAAAA,OAC5B;AAAA,MACAD;AAAAA,KACD,CAAA;AAED,IAAA,IACEU,wBAAAA,CAAwBC,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EACtE;AACA,MAAA,OAAO;AAAA,QACLZ,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA,QAChBC;AAAAA,OACF;AAAA,IACF;AAGA,IAAA,MAAMM,KAAAA,GAAOM,MAAMZ,OAAAA,EAAS;AAAA,MAAEa,IAAAA,EAAM;AAAA,KAAI,CAAA;AAExC,IAAA,MAAMC,2BAA0BP,sBAAAA,CAAuB;AAAA,MACrDJ,MAAAA,EAAQ;AAAA,QACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,QACbC,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA,QAChBE,mBAAmBE,MAAAA,CAAOF;AAAAA,OAC5B;AAAA,MACAK,IAAAA,EAAAA,KAAAA;AAAAA,MACAN;AAAAA,KACD,CAAA;AAED,IAAA,IACEc,wBAAAA,CAAwBH,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EACtE;AACA,MAAA,OAAO;AAAA,QACLZ,SAASI,MAAAA,CAAOJ,OAAAA;AAAAA,QAChBO,IAAAA,EAAAA;AAAAA,OACF;AAAA,IACF;AAGA,IAAA,OAAO;AAAA,MAAEN,OAAAA;AAAAA,MAASD,SAASI,MAAAA,CAAOJ;AAAAA,KAAQ;AAAA,EAC5C;AAEA,EAAA,MAAMW,0BAA0BH,sBAAAA,CAAuB;AAAA,IACrDJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA;AAAA,MACTE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAD;AAAAA,GACD,CAAA;AAED,EAAA,IAAIU,uBAAAA,CAAwBC,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EAAG;AAC3E,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTC;AAAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAMe,gCAAgCR,sBAAAA,CAAuB;AAAA;AAAA,IAE3DJ,MAAAA,EAAQ;AAAA,MAAEL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MAAMG,mBAAmBE,MAAAA,CAAOF;AAAAA,KAAkB;AAAA,IACzED;AAAAA,GACD,CAAA;AAED,EAAA,IACEe,6BAAAA,CAA8BJ,WAAAA,EAAY,KAC1CT,gBAAAA,CAAgBS,aAAY,EAC5B;AACA,IAAA,OAAO;AAAA,MACLX;AAAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAMM,IAAAA,GAAOM,MAAMZ,OAAAA,EAAS;AAAA,IAAEa,IAAAA,EAAM;AAAA,GAAI,CAAA;AAExC,EAAA,MAAMC,0BAA0BP,sBAAAA,CAAuB;AAAA,IACrDJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA,MACTE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAK,IAAAA;AAAAA,IACAN;AAAAA,GACD,CAAA;AAED,EAAA,IAAIc,uBAAAA,CAAwBH,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EAAG;AAC3E,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTO;AAAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAMU,oBAAoBT,sBAAAA,CAAuB;AAAA,IAC/CJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA;AAAA;AAAA,MAETE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAD;AAAAA,GACD,CAAA;AAED,EAAA,IAAIgB,iBAAAA,CAAkBL,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EAAG;AACrE,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTC;AAAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAMiB,4BAA4BV,sBAAAA,CAAuB;AAAA,IACvDJ,MAAAA,EAAQ;AAAA,MACNL,MAAMK,MAAAA,CAAOL,IAAAA;AAAAA,MACbC,OAAAA,EAAS,GAAA;AAAA,MACTE,mBAAmBE,MAAAA,CAAOF;AAAAA,KAC5B;AAAA,IACAK,IAAAA;AAAAA;AAAAA,IACAN;AAAAA,GACD,CAAA;AAED,EAAA,IACEiB,yBAAAA,CAA0BN,WAAAA,EAAY,KAAMT,gBAAAA,CAAgBS,aAAY,EACxE;AACA,IAAA,OAAO;AAAA,MACLZ,OAAAA,EAAS,GAAA;AAAA,MACTO;AAAAA,KACF;AAAA,EACF;AAGA,EAAA,OAAO;AAAA,IAAEN;AAAAA,GAAQ;AACnB;;;;"}
@@ -1,4 +1,4 @@
1
- import { encodeAbiParameters, parseSignature, toHex, concatHex } from 'viem';
1
+ import { toHex, concatHex, encodeAbiParameters, parseSignature } from 'viem';
2
2
  import { EIP_2612_PERMIT_ABI, DAI_PERMIT_ABI, PERMIT2_ABI } from './abi.js';
3
3
 
4
4
  const EIP_2612_PERMIT_PARAMETERS = EIP_2612_PERMIT_ABI.find((abiItem) => abiItem.name === "permit").inputs;
@@ -1 +1 @@
1
- {"version":3,"file":"encodeArgs.js","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"sourcesContent":["import {\n encodeAbiParameters,\n parseSignature,\n concatHex,\n toHex,\n type Address,\n type Hash,\n} from \"viem\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI, PERMIT2_ABI } from \"./abi\";\nimport type { DaiPermitInput, Permit1Input, Permit2Input } from \"./construct\";\n\ntype EncodePermitMethodArgsInputEIP2612 = Pick<\n Permit1Input,\n \"owner\" | \"spender\" | \"value\" | \"nonce\" | \"deadline\" | \"type\"\n> & {\n signature: Hash;\n};\n\ntype EncodePermitMethodArgsInputDAI = Pick<\n DaiPermitInput,\n \"holder\" | \"spender\" | \"nonce\" | \"expiry\" | \"allowed\" | \"type\"\n> & {\n signature: Hash;\n};\n\nconst EIP_2612_PERMIT_PARAMETERS = EIP_2612_PERMIT_ABI.find(\n (abiItem) => abiItem.name === \"permit\"\n)!.inputs;\nconst DAI_PERMIT_PARAMETERS = DAI_PERMIT_ABI.find(\n (abiItem) => abiItem.name === \"permit\"\n)!.inputs;\n\nexport function encodePermit1MethodArgs(\n input: EncodePermitMethodArgsInputEIP2612 | EncodePermitMethodArgsInputDAI\n): Hash {\n // this is unusable with Multisig Smart Wallets, because signature is non-standard length and it can'be parsed\n // @TODO implement bundle txs (Approve + Swap) for Multisig Smart Wallets (and in general wallets that support bundle txs)\n const { r, s, v } = parseSignature(input.signature);\n if (input.type === \"permit1\") {\n return encodeAbiParameters(EIP_2612_PERMIT_PARAMETERS, [\n input.owner,\n input.spender,\n input.value,\n input.deadline,\n Number(v),\n r,\n s,\n ]);\n }\n return encodeAbiParameters(DAI_PERMIT_PARAMETERS, [\n input.holder,\n input.spender,\n input.nonce,\n input.expiry,\n input.allowed,\n Number(v),\n r,\n s,\n ]);\n}\n\n/// Permit2 TransferFrom /////\n\ntype EncodePermitMethodArgsInputPermit2TransferFrom = Pick<\n Permit2Input,\n \"token\" | \"spender\" | \"nonce\" | \"amount\" | \"expiration\" | \"chainId\"\n> & {\n variant: \"transferFrom\";\n signature: Hash;\n owner: Address;\n};\n\nconst PERMIT2_TRANSFER_FROM_PARAMETERS = PERMIT2_ABI.find(\n (abiItem) => abiItem.name === \"permitTransferFrom\"\n)!.inputs;\n\nexport function encodePermit2TransferFromMethodArgs(\n input: EncodePermitMethodArgsInputPermit2TransferFrom\n): Hash {\n return encodeAbiParameters(PERMIT2_TRANSFER_FROM_PARAMETERS, [\n {\n permitted: {\n token: input.token,\n amount: input.amount,\n },\n nonce: input.nonce,\n deadline: input.expiration,\n },\n {\n to: input.spender,\n requestedAmount: input.amount,\n },\n input.owner,\n input.signature,\n // this could work with Multisig signature, because it's bytes without fixed length in ABI,\n // but the Contract only supports compact signature for Permit2 TransferFrom,\n // and compactSignature is made from full-length signature through parsing and serializing.\n // Multisig signature is non-standard length and it can't be parsed\n ] as const);\n}\n\n/**\n * Builds the 96‑byte payload required by Permit2’s `permitTransferFrom`\n * Delta contract (bytes32 nonce · bytes64 signature).\n *\n * @param sigData.nonce – numeric nonce as a bigint\n * @param sigData.signature – compact 64‑byte (compact) signature (0x…128 hex digits)\n * @returns 0x‑prefixed hex string, length = 2 + 96 × 2 = 194 chars\n */\nexport function encodePermit2TransferFromSigDataForDelta(sigData: {\n nonce: bigint;\n signature: Hash;\n}): Hash {\n // In the Delta Contract, specifically for Permit2 transferFrom, we have signature consisting of\n // bytes32(permit2nonce) + bytes64(signature) = bytes96 Permit2 Transfer format\n\n // 1. Convert nonce → BigInt → 32‑byte left‑padded hex (0x…64 hex digits)\n const nonceHex = toHex(sigData.nonce, { size: 32 });\n\n // 2. Join the fixed‑width pieces → bytes96\n return concatHex([nonceHex, sigData.signature]);\n // currently doesn't work with Multisig signature, because of the Delta Contract implementation\n}\n"],"names":["EIP_2612_PERMIT_PARAMETERS","EIP_2612_PERMIT_ABI","find","abiItem","name","inputs","DAI_PERMIT_PARAMETERS","DAI_PERMIT_ABI","encodePermit1MethodArgs","input","r","s","v","parseSignature","signature","type","encodeAbiParameters","owner","spender","value","deadline","Number","holder","nonce","expiry","allowed","PERMIT2_TRANSFER_FROM_PARAMETERS","PERMIT2_ABI","encodePermit2TransferFromMethodArgs","permitted","token","amount","expiration","to","requestedAmount","encodePermit2TransferFromSigDataForDelta","sigData","nonceHex","toHex","size","concatHex"],"mappings":";;;AAyBA,MAAMA,6BAA6BC,mBAAAA,CAAoBC,IAAAA,CACpDC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,QAChC,CAAA,CAAGC,MAAAA;AACH,MAAMC,wBAAwBC,cAAAA,CAAeL,IAAAA,CAC1CC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,QAChC,CAAA,CAAGC,MAAAA;AAEI,SAASG,wBACdC,KAAAA,EACM;AAGN,EAAA,MAAM;AAAA,IAAEC,CAAAA;AAAAA,IAAGC,CAAAA;AAAAA,IAAGC;AAAAA,GAAE,GAAIC,cAAAA,CAAeJ,KAAAA,CAAMK,SAAS,CAAA;AAClD,EAAA,IAAIL,KAAAA,CAAMM,SAAS,SAAA,EAAW;AAC5B,IAAA,OAAOC,oBAAoBhB,0BAAAA,EAA4B,CACrDS,KAAAA,CAAMQ,KAAAA,EACNR,MAAMS,OAAAA,EACNT,KAAAA,CAAMU,KAAAA,EACNV,KAAAA,CAAMW,UACNC,MAAAA,CAAOT,CAAC,CAAA,EACRF,CAAAA,EACAC,CAAC,CACF,CAAA;AAAA;AAEH,EAAA,OAAOK,oBAAoBV,qBAAAA,EAAuB,CAChDG,MAAMa,MAAAA,EACNb,KAAAA,CAAMS,SACNT,KAAAA,CAAMc,KAAAA,EACNd,KAAAA,CAAMe,MAAAA,EACNf,MAAMgB,OAAAA,EACNJ,MAAAA,CAAOT,CAAC,CAAA,EACRF,CAAAA,EACAC,CAAC,CACF,CAAA;AACH;AAaA,MAAMe,mCAAmCC,WAAAA,CAAYzB,IAAAA,CAClDC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,oBAChC,CAAA,CAAGC,MAAAA;AAEI,SAASuB,oCACdnB,KAAAA,EACM;AACN,EAAA,OAAOO,oBAAoBU,gCAAAA,EAAkC;AAAA,IAC3D;AAAA,MACEG,SAAAA,EAAW;AAAA,QACTC,OAAOrB,KAAAA,CAAMqB,KAAAA;AAAAA,QACbC,QAAQtB,KAAAA,CAAMsB;AAAAA,OAChB;AAAA,MACAR,OAAOd,KAAAA,CAAMc,KAAAA;AAAAA,MACbH,UAAUX,KAAAA,CAAMuB;AAAAA,KAClB;AAAA,IACA;AAAA,MACEC,IAAIxB,KAAAA,CAAMS,OAAAA;AAAAA,MACVgB,iBAAiBzB,KAAAA,CAAMsB;AAAAA,KACzB;AAAA,IACAtB,KAAAA,CAAMQ,KAAAA;AAAAA,IACNR,KAAAA,CAAMK;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAKE,CAAA;AACZ;AAUO,SAASqB,yCAAyCC,OAAAA,EAGhD;AAKP,EAAA,MAAMC,QAAAA,GAAWC,KAAAA,CAAMF,OAAAA,CAAQb,KAAAA,EAAO;AAAA,IAAEgB,IAAAA,EAAM;AAAA,GAAI,CAAA;AAGlD,EAAA,OAAOC,SAAAA,CAAU,CAACH,QAAAA,EAAUD,OAAAA,CAAQtB,SAAS,CAAC,CAAA;AAEhD;;;;"}
1
+ {"version":3,"file":"encodeArgs.js","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"sourcesContent":["import {\n encodeAbiParameters,\n parseSignature,\n concatHex,\n toHex,\n type Address,\n type Hash,\n} from \"viem\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI, PERMIT2_ABI } from \"./abi\";\nimport type { DaiPermitInput, Permit1Input, Permit2Input } from \"./construct\";\n\ntype EncodePermitMethodArgsInputEIP2612 = Pick<\n Permit1Input,\n \"owner\" | \"spender\" | \"value\" | \"nonce\" | \"deadline\" | \"type\"\n> & {\n signature: Hash;\n};\n\ntype EncodePermitMethodArgsInputDAI = Pick<\n DaiPermitInput,\n \"holder\" | \"spender\" | \"nonce\" | \"expiry\" | \"allowed\" | \"type\"\n> & {\n signature: Hash;\n};\n\nconst EIP_2612_PERMIT_PARAMETERS = EIP_2612_PERMIT_ABI.find(\n (abiItem) => abiItem.name === \"permit\"\n)!.inputs;\nconst DAI_PERMIT_PARAMETERS = DAI_PERMIT_ABI.find(\n (abiItem) => abiItem.name === \"permit\"\n)!.inputs;\n\nexport function encodePermit1MethodArgs(\n input: EncodePermitMethodArgsInputEIP2612 | EncodePermitMethodArgsInputDAI\n): Hash {\n // this is unusable with Multisig Smart Wallets, because signature is non-standard length and it can'be parsed\n // @TODO implement bundle txs (Approve + Swap) for Multisig Smart Wallets (and in general wallets that support bundle txs)\n const { r, s, v } = parseSignature(input.signature);\n if (input.type === \"permit1\") {\n return encodeAbiParameters(EIP_2612_PERMIT_PARAMETERS, [\n input.owner,\n input.spender,\n input.value,\n input.deadline,\n Number(v),\n r,\n s,\n ]);\n }\n return encodeAbiParameters(DAI_PERMIT_PARAMETERS, [\n input.holder,\n input.spender,\n input.nonce,\n input.expiry,\n input.allowed,\n Number(v),\n r,\n s,\n ]);\n}\n\n/// Permit2 TransferFrom /////\n\ntype EncodePermitMethodArgsInputPermit2TransferFrom = Pick<\n Permit2Input,\n \"token\" | \"spender\" | \"nonce\" | \"amount\" | \"expiration\" | \"chainId\"\n> & {\n variant: \"transferFrom\";\n signature: Hash;\n owner: Address;\n};\n\nconst PERMIT2_TRANSFER_FROM_PARAMETERS = PERMIT2_ABI.find(\n (abiItem) => abiItem.name === \"permitTransferFrom\"\n)!.inputs;\n\nexport function encodePermit2TransferFromMethodArgs(\n input: EncodePermitMethodArgsInputPermit2TransferFrom\n): Hash {\n return encodeAbiParameters(PERMIT2_TRANSFER_FROM_PARAMETERS, [\n {\n permitted: {\n token: input.token,\n amount: input.amount,\n },\n nonce: input.nonce,\n deadline: input.expiration,\n },\n {\n to: input.spender,\n requestedAmount: input.amount,\n },\n input.owner,\n input.signature,\n // this could work with Multisig signature, because it's bytes without fixed length in ABI,\n // but the Contract only supports compact signature for Permit2 TransferFrom,\n // and compactSignature is made from full-length signature through parsing and serializing.\n // Multisig signature is non-standard length and it can't be parsed\n ] as const);\n}\n\n/**\n * Builds the 96‑byte payload required by Permit2’s `permitTransferFrom`\n * Delta contract (bytes32 nonce · bytes64 signature).\n *\n * @param sigData.nonce – numeric nonce as a bigint\n * @param sigData.signature – compact 64‑byte (compact) signature (0x…128 hex digits)\n * @returns 0x‑prefixed hex string, length = 2 + 96 × 2 = 194 chars\n */\nexport function encodePermit2TransferFromSigDataForDelta(sigData: {\n nonce: bigint;\n signature: Hash;\n}): Hash {\n // In the Delta Contract, specifically for Permit2 transferFrom, we have signature consisting of\n // bytes32(permit2nonce) + bytes64(signature) = bytes96 Permit2 Transfer format\n\n // 1. Convert nonce → BigInt → 32‑byte left‑padded hex (0x…64 hex digits)\n const nonceHex = toHex(sigData.nonce, { size: 32 });\n\n // 2. Join the fixed‑width pieces → bytes96\n return concatHex([nonceHex, sigData.signature]);\n // currently doesn't work with Multisig signature, because of the Delta Contract implementation\n}\n"],"names":["EIP_2612_PERMIT_PARAMETERS","EIP_2612_PERMIT_ABI","find","abiItem","name","inputs","DAI_PERMIT_PARAMETERS","DAI_PERMIT_ABI","encodePermit1MethodArgs","input","r","s","v","parseSignature","signature","type","encodeAbiParameters","owner","spender","value","deadline","Number","holder","nonce","expiry","allowed","PERMIT2_TRANSFER_FROM_PARAMETERS","PERMIT2_ABI","encodePermit2TransferFromMethodArgs","permitted","token","amount","expiration","to","requestedAmount","encodePermit2TransferFromSigDataForDelta","sigData","nonceHex","toHex","size","concatHex"],"mappings":";;;AAyBA,MAAMA,6BAA6BC,mBAAAA,CAAoBC,IAAAA,CACpDC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,QAChC,CAAA,CAAGC,MAAAA;AACH,MAAMC,wBAAwBC,cAAAA,CAAeL,IAAAA,CAC1CC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,QAChC,CAAA,CAAGC,MAAAA;AAEI,SAASG,wBACdC,KAAAA,EACM;AAGN,EAAA,MAAM;AAAA,IAAEC,CAAAA;AAAAA,IAAGC,CAAAA;AAAAA,IAAGC;AAAAA,GAAE,GAAIC,cAAAA,CAAeJ,KAAAA,CAAMK,SAAS,CAAA;AAClD,EAAA,IAAIL,KAAAA,CAAMM,SAAS,SAAA,EAAW;AAC5B,IAAA,OAAOC,oBAAoBhB,0BAAAA,EAA4B,CACrDS,KAAAA,CAAMQ,KAAAA,EACNR,MAAMS,OAAAA,EACNT,KAAAA,CAAMU,KAAAA,EACNV,KAAAA,CAAMW,UACNC,MAAAA,CAAOT,CAAC,CAAA,EACRF,CAAAA,EACAC,CAAC,CACF,CAAA;AAAA,EACH;AACA,EAAA,OAAOK,oBAAoBV,qBAAAA,EAAuB,CAChDG,MAAMa,MAAAA,EACNb,KAAAA,CAAMS,SACNT,KAAAA,CAAMc,KAAAA,EACNd,KAAAA,CAAMe,MAAAA,EACNf,MAAMgB,OAAAA,EACNJ,MAAAA,CAAOT,CAAC,CAAA,EACRF,CAAAA,EACAC,CAAC,CACF,CAAA;AACH;AAaA,MAAMe,mCAAmCC,WAAAA,CAAYzB,IAAAA,CAClDC,aAAYA,OAAAA,CAAQC,IAAAA,KAAS,oBAChC,CAAA,CAAGC,MAAAA;AAEI,SAASuB,oCACdnB,KAAAA,EACM;AACN,EAAA,OAAOO,oBAAoBU,gCAAAA,EAAkC;AAAA,IAC3D;AAAA,MACEG,SAAAA,EAAW;AAAA,QACTC,OAAOrB,KAAAA,CAAMqB,KAAAA;AAAAA,QACbC,QAAQtB,KAAAA,CAAMsB;AAAAA,OAChB;AAAA,MACAR,OAAOd,KAAAA,CAAMc,KAAAA;AAAAA,MACbH,UAAUX,KAAAA,CAAMuB;AAAAA,KAClB;AAAA,IACA;AAAA,MACEC,IAAIxB,KAAAA,CAAMS,OAAAA;AAAAA,MACVgB,iBAAiBzB,KAAAA,CAAMsB;AAAAA,KACzB;AAAA,IACAtB,KAAAA,CAAMQ,KAAAA;AAAAA,IACNR,KAAAA,CAAMK;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAKE,CAAA;AACZ;AAUO,SAASqB,yCAAyCC,OAAAA,EAGhD;AAKP,EAAA,MAAMC,QAAAA,GAAWC,KAAAA,CAAMF,OAAAA,CAAQb,KAAAA,EAAO;AAAA,IAAEgB,IAAAA,EAAM;AAAA,GAAI,CAAA;AAGlD,EAAA,OAAOC,SAAAA,CAAU,CAACH,QAAAA,EAAUD,OAAAA,CAAQtB,SAAS,CAAC,CAAA;AAEhD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"trySignPermit1.js","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"sourcesContent":["import { type Config, readContracts } from \"@wagmi/core\";\nimport { type Hex, type Address, parseEther, parseSignature } from \"viem\";\nimport { generatePrivateKey, privateKeyToAccount } from \"viem/accounts\";\nimport {\n type NotDetectedPermitSupport,\n type PermitSupportResult,\n} from \"./detect\";\nimport { constructPermitTypedData } from \"./construct\";\nimport { ERC_20_NONCES_ABI } from \"./constants\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI } from \"./abi\";\nimport type { NonceMethod } from \"../hooks/permit1/usePermit1Nonce\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport type TrySignPermitParams = {\n config: Config;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n tokenAddress: Address;\n spenderAddress?: Address;\n amount?: bigint;\n chainId: SupportedChainId;\n};\n\nexport type TrySignPermitSuccess = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult;\n success: true;\n error: null;\n nonceBefore: bigint;\n nonceAfter: bigint;\n nonceMethod: NonceMethod;\n};\n\nexport type TrySignPermitFailure = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n success: false;\n error: string;\n};\n\nexport type TrySignPermitResult = TrySignPermitSuccess | TrySignPermitFailure;\n\n// Create a random wallet for testing,\n// wallet starts with nonce=0 everywhere\nconst randomAcc = privateKeyToAccount(generatePrivateKey());\nconst randomAccAddress = randomAcc.address;\n\n// not ZERO_ADDRESS to avoid possible !=address(0) checks\nconst RANDOM_SPENDER_ADDRESS = \"0x0000000000000000000000000000000000000123\";\n\n/**\n * Ultimate check if signing a permit will succeed with detected permitInfo\n * Tests permit functionality by:\n * 1. Creating a random wallet\n * 2. Reading the wallet's nonce\n * 3. Signing permit data with the wallet\n * 4. Making a multicall with: [read nonce, permit(), read nonce]\n * 5. Verifying the nonce increased (indicating permit was processed)\n */\nexport async function trySignPermit1({\n config,\n chainId,\n permitInfo,\n tokenAddress,\n spenderAddress = RANDOM_SPENDER_ADDRESS,\n amount = parseEther(\"1\"),\n}: TrySignPermitParams): Promise<TrySignPermitResult> {\n if (permitInfo.type === \"NOT_DETECTED\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit not detected\",\n };\n }\n\n try {\n // Create a deadline 1 hour from now\n const deadline = BigInt(Math.floor(Date.now() / 1000) + 3600);\n\n // Read nonce before permit\n const nonceBefore = await readNonce({\n config,\n tokenAddress,\n ownerAddress: randomAccAddress,\n chainId,\n });\n\n if (nonceBefore === null) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonce\",\n };\n }\n\n // Construct permit typed data\n const permitTypedData =\n permitInfo.type === \"dai\"\n ? constructPermitTypedData({\n type: \"dai\",\n permitInfo,\n holder: randomAccAddress,\n spender: spenderAddress,\n nonce: nonceBefore.nonce,\n expiry: deadline,\n allowed: true,\n })\n : constructPermitTypedData({\n type: \"permit1\",\n permitInfo,\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n });\n\n // Only support EIP-2612 and DAI permit types\n if (\n permitTypedData.primaryType !== \"Permit\" ||\n !(\"domain\" in permitTypedData && \"message\" in permitTypedData)\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error:\n \"Unsupported permit type for trySignPermit (only EIP-2612 and DAI supported)\",\n };\n }\n\n // Sign the permit data using the account's signTypedData method\n const signature = await randomAcc.signTypedData({\n domain: permitTypedData.domain,\n types: permitTypedData.types,\n primaryType: permitTypedData.primaryType,\n message: permitTypedData.message,\n });\n\n // Split signature into v, r, s\n const { v, r, s } = parseSignature(signature);\n\n // Ensure v is defined and convert to number for permit calls\n if (v === undefined) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to parse signature - v component is undefined\",\n };\n }\n\n // Convert v to number for permit calls\n const vNumber = Number(v);\n\n // Create permit call data\n let permitCallData: unknown[];\n if (permitInfo.type === \"dai\") {\n permitCallData = createPermitCallData({\n permitType: \"dai\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n } else {\n permitCallData = createPermitCallData({\n permitType: \"eip2612\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n }\n\n // Create multicall with: [read nonce, permit(), read nonce]\n const multicallContracts = [\n // 1. Read nonce before permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n // 2. Call permit function\n {\n chainId,\n address: tokenAddress,\n abi: permitInfo.type === \"dai\" ? DAI_PERMIT_ABI : EIP_2612_PERMIT_ABI,\n functionName: \"permit\",\n args: permitCallData as\n | [Address, Address, bigint, bigint, boolean, number, Hex, Hex]\n | [Address, Address, bigint, bigint, number, Hex, Hex],\n },\n // 3. Read nonce after permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n ] as const;\n\n // Execute the multicall\n const multicallResult = await readContracts(config, {\n allowFailure: true,\n contracts: multicallContracts,\n });\n\n // Extract results\n const [nonceBeforeResult, permitResult, nonceAfterResult] = multicallResult;\n\n // Check if all results exist\n if (!nonceBeforeResult || !permitResult || !nonceAfterResult) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Multicall returned incomplete results\",\n };\n }\n\n // Check if permit call succeeded\n if (permitResult.status === \"failure\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: `Permit call failed: ${permitResult.error?.message || \"Unknown error\"}`,\n };\n }\n\n // Check if we can read nonces\n if (\n nonceBeforeResult.status === \"failure\" ||\n nonceAfterResult.status === \"failure\"\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonces in multicall\",\n };\n }\n\n const nonceBeforeMulticall = nonceBeforeResult.result as bigint;\n const nonceAfterMulticall = nonceAfterResult.result as bigint;\n\n // Verify nonce increased (indicating permit was processed)\n const nonceIncreased = nonceAfterMulticall > nonceBeforeMulticall;\n\n if (!nonceIncreased) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit simulation failed - nonce did not increase\",\n };\n }\n\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: true,\n nonceBefore: nonceBeforeMulticall,\n nonceAfter: nonceAfterMulticall,\n nonceMethod: nonceBefore.nonceMethod,\n error: null,\n };\n } catch (error) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error occurred\",\n };\n }\n}\n\ntype ReadNonceParams = {\n config: Config;\n tokenAddress: Address;\n ownerAddress: Address;\n chainId: SupportedChainId;\n};\n\n/**\n * Reads the nonce for a given address and token\n */\nasync function readNonce({\n config,\n tokenAddress,\n ownerAddress,\n chainId,\n}: ReadNonceParams): Promise<{\n nonce: bigint;\n nonceMethod: NonceMethod;\n} | null> {\n const contractCalls = [\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"_nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonce\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"getNonce\",\n args: [ownerAddress],\n },\n ] as const;\n\n const results = await readContracts(config, {\n allowFailure: true,\n contracts: contractCalls,\n });\n\n const validNonceIndex = results.findIndex(\n (result) => result.status === \"success\"\n );\n\n if (validNonceIndex === -1) {\n return null;\n }\n\n const nonce = results[validNonceIndex]?.result as bigint;\n const nonceMethod = contractCalls[validNonceIndex]\n ?.functionName as NonceMethod;\n\n return { nonce, nonceMethod };\n}\n\n/**\n * Creates the call data for permit function based on permit type\n */\nfunction createPermitCallData({\n permitType,\n owner,\n spender,\n value,\n nonce,\n deadline,\n v,\n r,\n s,\n}: {\n permitType: \"eip2612\" | \"dai\";\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n v: number;\n r: Hex;\n s: Hex;\n}): unknown[] {\n if (permitType === \"dai\") {\n // DAI permit: (holder, spender, nonce, expiry, allowed, v, r, s)\n return [owner, spender, nonce, deadline, true, v, r, s];\n } else {\n // EIP2612 permit: (owner, spender, value, deadline, v, r, s)\n return [owner, spender, value, deadline, v, r, s];\n }\n}\n"],"names":["randomAcc","privateKeyToAccount","generatePrivateKey","randomAccAddress","address","RANDOM_SPENDER_ADDRESS","trySignPermit1","config","chainId","permitInfo","tokenAddress","spenderAddress","amount","parseEther","type","success","error","deadline","BigInt","Math","floor","Date","now","nonceBefore","readNonce","ownerAddress","permitTypedData","constructPermitTypedData","holder","spender","nonce","expiry","allowed","owner","value","primaryType","signature","signTypedData","domain","types","message","v","r","s","parseSignature","undefined","vNumber","Number","permitCallData","createPermitCallData","permitType","multicallContracts","abi","ERC_20_NONCES_ABI","functionName","nonceMethod","args","DAI_PERMIT_ABI","EIP_2612_PERMIT_ABI","multicallResult","readContracts","allowFailure","contracts","nonceBeforeResult","permitResult","nonceAfterResult","status","nonceBeforeMulticall","result","nonceAfterMulticall","nonceIncreased","nonceAfter","Error","contractCalls","results","validNonceIndex","findIndex"],"mappings":"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"}
1
+ {"version":3,"file":"trySignPermit1.js","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"sourcesContent":["import { type Config, readContracts } from \"@wagmi/core\";\nimport { type Hex, type Address, parseEther, parseSignature } from \"viem\";\nimport { generatePrivateKey, privateKeyToAccount } from \"viem/accounts\";\nimport {\n type NotDetectedPermitSupport,\n type PermitSupportResult,\n} from \"./detect\";\nimport { constructPermitTypedData } from \"./construct\";\nimport { ERC_20_NONCES_ABI } from \"./constants\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI } from \"./abi\";\nimport type { NonceMethod } from \"../hooks/permit1/usePermit1Nonce\";\nimport type { SupportedChainId } from \"@/lib/web3/wagmi/types\";\n\nexport type TrySignPermitParams = {\n config: Config;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n tokenAddress: Address;\n spenderAddress?: Address;\n amount?: bigint;\n chainId: SupportedChainId;\n};\n\nexport type TrySignPermitSuccess = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult;\n success: true;\n error: null;\n nonceBefore: bigint;\n nonceAfter: bigint;\n nonceMethod: NonceMethod;\n};\n\nexport type TrySignPermitFailure = {\n tokenAddress: Address;\n chainId: SupportedChainId;\n permitInfo: PermitSupportResult | NotDetectedPermitSupport;\n success: false;\n error: string;\n};\n\nexport type TrySignPermitResult = TrySignPermitSuccess | TrySignPermitFailure;\n\n// Create a random wallet for testing,\n// wallet starts with nonce=0 everywhere\nconst randomAcc = privateKeyToAccount(generatePrivateKey());\nconst randomAccAddress = randomAcc.address;\n\n// not ZERO_ADDRESS to avoid possible !=address(0) checks\nconst RANDOM_SPENDER_ADDRESS = \"0x0000000000000000000000000000000000000123\";\n\n/**\n * Ultimate check if signing a permit will succeed with detected permitInfo\n * Tests permit functionality by:\n * 1. Creating a random wallet\n * 2. Reading the wallet's nonce\n * 3. Signing permit data with the wallet\n * 4. Making a multicall with: [read nonce, permit(), read nonce]\n * 5. Verifying the nonce increased (indicating permit was processed)\n */\nexport async function trySignPermit1({\n config,\n chainId,\n permitInfo,\n tokenAddress,\n spenderAddress = RANDOM_SPENDER_ADDRESS,\n amount = parseEther(\"1\"),\n}: TrySignPermitParams): Promise<TrySignPermitResult> {\n if (permitInfo.type === \"NOT_DETECTED\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit not detected\",\n };\n }\n\n try {\n // Create a deadline 1 hour from now\n const deadline = BigInt(Math.floor(Date.now() / 1000) + 3600);\n\n // Read nonce before permit\n const nonceBefore = await readNonce({\n config,\n tokenAddress,\n ownerAddress: randomAccAddress,\n chainId,\n });\n\n if (nonceBefore === null) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonce\",\n };\n }\n\n // Construct permit typed data\n const permitTypedData =\n permitInfo.type === \"dai\"\n ? constructPermitTypedData({\n type: \"dai\",\n permitInfo,\n holder: randomAccAddress,\n spender: spenderAddress,\n nonce: nonceBefore.nonce,\n expiry: deadline,\n allowed: true,\n })\n : constructPermitTypedData({\n type: \"permit1\",\n permitInfo,\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n });\n\n // Only support EIP-2612 and DAI permit types\n if (\n permitTypedData.primaryType !== \"Permit\" ||\n !(\"domain\" in permitTypedData && \"message\" in permitTypedData)\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error:\n \"Unsupported permit type for trySignPermit (only EIP-2612 and DAI supported)\",\n };\n }\n\n // Sign the permit data using the account's signTypedData method\n const signature = await randomAcc.signTypedData({\n domain: permitTypedData.domain,\n types: permitTypedData.types,\n primaryType: permitTypedData.primaryType,\n message: permitTypedData.message,\n });\n\n // Split signature into v, r, s\n const { v, r, s } = parseSignature(signature);\n\n // Ensure v is defined and convert to number for permit calls\n if (v === undefined) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to parse signature - v component is undefined\",\n };\n }\n\n // Convert v to number for permit calls\n const vNumber = Number(v);\n\n // Create permit call data\n let permitCallData: unknown[];\n if (permitInfo.type === \"dai\") {\n permitCallData = createPermitCallData({\n permitType: \"dai\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n } else {\n permitCallData = createPermitCallData({\n permitType: \"eip2612\",\n owner: randomAccAddress,\n spender: spenderAddress,\n value: amount,\n nonce: nonceBefore.nonce,\n deadline,\n v: vNumber,\n r,\n s,\n });\n }\n\n // Create multicall with: [read nonce, permit(), read nonce]\n const multicallContracts = [\n // 1. Read nonce before permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n // 2. Call permit function\n {\n chainId,\n address: tokenAddress,\n abi: permitInfo.type === \"dai\" ? DAI_PERMIT_ABI : EIP_2612_PERMIT_ABI,\n functionName: \"permit\",\n args: permitCallData as\n | [Address, Address, bigint, bigint, boolean, number, Hex, Hex]\n | [Address, Address, bigint, bigint, number, Hex, Hex],\n },\n // 3. Read nonce after permit\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: nonceBefore.nonceMethod,\n args: [randomAccAddress],\n },\n ] as const;\n\n // Execute the multicall\n const multicallResult = await readContracts(config, {\n allowFailure: true,\n contracts: multicallContracts,\n });\n\n // Extract results\n const [nonceBeforeResult, permitResult, nonceAfterResult] = multicallResult;\n\n // Check if all results exist\n if (!nonceBeforeResult || !permitResult || !nonceAfterResult) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Multicall returned incomplete results\",\n };\n }\n\n // Check if permit call succeeded\n if (permitResult.status === \"failure\") {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: `Permit call failed: ${permitResult.error?.message || \"Unknown error\"}`,\n };\n }\n\n // Check if we can read nonces\n if (\n nonceBeforeResult.status === \"failure\" ||\n nonceAfterResult.status === \"failure\"\n ) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Failed to read nonces in multicall\",\n };\n }\n\n const nonceBeforeMulticall = nonceBeforeResult.result as bigint;\n const nonceAfterMulticall = nonceAfterResult.result as bigint;\n\n // Verify nonce increased (indicating permit was processed)\n const nonceIncreased = nonceAfterMulticall > nonceBeforeMulticall;\n\n if (!nonceIncreased) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: \"Permit simulation failed - nonce did not increase\",\n };\n }\n\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: true,\n nonceBefore: nonceBeforeMulticall,\n nonceAfter: nonceAfterMulticall,\n nonceMethod: nonceBefore.nonceMethod,\n error: null,\n };\n } catch (error) {\n return {\n tokenAddress,\n chainId,\n permitInfo,\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error occurred\",\n };\n }\n}\n\ntype ReadNonceParams = {\n config: Config;\n tokenAddress: Address;\n ownerAddress: Address;\n chainId: SupportedChainId;\n};\n\n/**\n * Reads the nonce for a given address and token\n */\nasync function readNonce({\n config,\n tokenAddress,\n ownerAddress,\n chainId,\n}: ReadNonceParams): Promise<{\n nonce: bigint;\n nonceMethod: NonceMethod;\n} | null> {\n const contractCalls = [\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"_nonces\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"nonce\",\n args: [ownerAddress],\n },\n {\n chainId,\n address: tokenAddress,\n abi: ERC_20_NONCES_ABI,\n functionName: \"getNonce\",\n args: [ownerAddress],\n },\n ] as const;\n\n const results = await readContracts(config, {\n allowFailure: true,\n contracts: contractCalls,\n });\n\n const validNonceIndex = results.findIndex(\n (result) => result.status === \"success\"\n );\n\n if (validNonceIndex === -1) {\n return null;\n }\n\n const nonce = results[validNonceIndex]?.result as bigint;\n const nonceMethod = contractCalls[validNonceIndex]\n ?.functionName as NonceMethod;\n\n return { nonce, nonceMethod };\n}\n\n/**\n * Creates the call data for permit function based on permit type\n */\nfunction createPermitCallData({\n permitType,\n owner,\n spender,\n value,\n nonce,\n deadline,\n v,\n r,\n s,\n}: {\n permitType: \"eip2612\" | \"dai\";\n owner: Address;\n spender: Address;\n value: bigint;\n nonce: bigint;\n deadline: bigint;\n v: number;\n r: Hex;\n s: Hex;\n}): unknown[] {\n if (permitType === \"dai\") {\n // DAI permit: (holder, spender, nonce, expiry, allowed, v, r, s)\n return [owner, spender, nonce, deadline, true, v, r, s];\n } else {\n // EIP2612 permit: (owner, spender, value, deadline, v, r, s)\n return [owner, spender, value, deadline, v, r, s];\n }\n}\n"],"names":["randomAcc","privateKeyToAccount","generatePrivateKey","randomAccAddress","address","RANDOM_SPENDER_ADDRESS","trySignPermit1","config","chainId","permitInfo","tokenAddress","spenderAddress","amount","parseEther","type","success","error","deadline","BigInt","Math","floor","Date","now","nonceBefore","readNonce","ownerAddress","permitTypedData","constructPermitTypedData","holder","spender","nonce","expiry","allowed","owner","value","primaryType","signature","signTypedData","domain","types","message","v","r","s","parseSignature","undefined","vNumber","Number","permitCallData","createPermitCallData","permitType","multicallContracts","abi","ERC_20_NONCES_ABI","functionName","nonceMethod","args","DAI_PERMIT_ABI","EIP_2612_PERMIT_ABI","multicallResult","readContracts","allowFailure","contracts","nonceBeforeResult","permitResult","nonceAfterResult","status","nonceBeforeMulticall","result","nonceAfterMulticall","nonceIncreased","nonceAfter","Error","contractCalls","results","validNonceIndex","findIndex"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/hooks/permit/utils/utils.ts"],"sourcesContent":["import type { Address, Hex } from \"viem\";\nimport type { PermitSupportResult } from \"./detect\";\n// Based on https://eips.ethereum.org/EIPS/eip-5267#javascript\n\ntype EIP712DomainTuple = {\n fields: Hex;\n name: string;\n version: string;\n chainId: bigint;\n verifyingContract: Address;\n salt: Hex;\n extensions: readonly bigint[];\n};\n\n/** Retrieves the EIP-712 domain of a contract using EIP-5267 without extensions. */\nexport function getDomainFromEIP712Domain(\n eip712Domain: EIP712DomainTuple\n): PermitSupportResult[\"domain\"] | null {\n const {\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n } = eip712Domain;\n\n if (extensions.length > 0) {\n // throw Error(\"Extensions not implemented\");\n return null;\n }\n\n return buildBasicDomain(\n Number(fields),\n name,\n version,\n chainId,\n verifyingContract,\n salt\n );\n}\n\nconst fieldNames = [\n \"name\",\n \"version\",\n \"chainId\",\n \"verifyingContract\",\n \"salt\",\n] as const;\n\n/** Builds a domain object without extensions based on the return values of `eip712Domain()`. */\nfunction buildBasicDomain(\n fields: number,\n name: string,\n version: string,\n chainId: bigint,\n verifyingContract: Address,\n salt: Hex\n): PermitSupportResult[\"domain\"] {\n const domain = {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n salt,\n };\n\n for (const [i, field] of fieldNames.entries()) {\n if (!(fields & (1 << i))) {\n delete domain[field];\n }\n }\n\n return domain;\n}\n"],"names":["getDomainFromEIP712Domain","eip712Domain","fields","name","version","chainId","verifyingContract","salt","extensions","length","buildBasicDomain","Number","fieldNames","domain","i","field","entries"],"mappings":"AAeO,SAASA,0BACdC,YAAAA,EACsC;AACtC,EAAA,MAAM;AAAA,IACJC,MAAAA;AAAAA,IACAC,IAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,iBAAAA;AAAAA,IACAC,IAAAA;AAAAA,IACAC;AAAAA,GACF,GAAIP,YAAAA;AAEJ,EAAA,IAAIO,UAAAA,CAAWC,SAAS,CAAA,EAAG;AAEzB,IAAA,OAAO,IAAA;AAAA;AAGT,EAAA,OAAOC,gBAAAA,CACLC,OAAOT,MAAM,CAAA,EACbC,MACAC,OAAAA,EACAC,OAAAA,EACAC,mBACAC,IACF,CAAA;AACF;AAEA,MAAMK,aAAa,CACjB,MAAA,EACA,SAAA,EACA,SAAA,EACA,qBACA,MAAM,CAAA;AAIR,SAASF,iBACPR,MAAAA,EACAC,IAAAA,EACAC,OAAAA,EACAC,OAAAA,EACAC,mBACAC,IAAAA,EAC+B;AAC/B,EAAA,MAAMM,MAAAA,GAAS;AAAA,IACbV,IAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,OAAAA,EAASM,OAAON,OAAO,CAAA;AAAA,IACvBC,iBAAAA;AAAAA,IACAC;AAAAA,GACF;AAEA,EAAA,KAAA,MAAW,CAACO,CAAAA,EAAGC,KAAK,CAAA,IAAKH,UAAAA,CAAWI,SAAQ,EAAG;AAC7C,IAAA,IAAI,EAAEd,MAAAA,GAAU,CAAA,IAAKY,CAAAA,CAAAA,EAAK;AACxB,MAAA,OAAOD,OAAOE,KAAK,CAAA;AAAA;AACrB;AAGF,EAAA,OAAOF,MAAAA;AACT;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/hooks/permit/utils/utils.ts"],"sourcesContent":["import type { Address, Hex } from \"viem\";\nimport type { PermitSupportResult } from \"./detect\";\n// Based on https://eips.ethereum.org/EIPS/eip-5267#javascript\n\ntype EIP712DomainTuple = {\n fields: Hex;\n name: string;\n version: string;\n chainId: bigint;\n verifyingContract: Address;\n salt: Hex;\n extensions: readonly bigint[];\n};\n\n/** Retrieves the EIP-712 domain of a contract using EIP-5267 without extensions. */\nexport function getDomainFromEIP712Domain(\n eip712Domain: EIP712DomainTuple\n): PermitSupportResult[\"domain\"] | null {\n const {\n fields,\n name,\n version,\n chainId,\n verifyingContract,\n salt,\n extensions,\n } = eip712Domain;\n\n if (extensions.length > 0) {\n // throw Error(\"Extensions not implemented\");\n return null;\n }\n\n return buildBasicDomain(\n Number(fields),\n name,\n version,\n chainId,\n verifyingContract,\n salt\n );\n}\n\nconst fieldNames = [\n \"name\",\n \"version\",\n \"chainId\",\n \"verifyingContract\",\n \"salt\",\n] as const;\n\n/** Builds a domain object without extensions based on the return values of `eip712Domain()`. */\nfunction buildBasicDomain(\n fields: number,\n name: string,\n version: string,\n chainId: bigint,\n verifyingContract: Address,\n salt: Hex\n): PermitSupportResult[\"domain\"] {\n const domain = {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n salt,\n };\n\n for (const [i, field] of fieldNames.entries()) {\n if (!(fields & (1 << i))) {\n delete domain[field];\n }\n }\n\n return domain;\n}\n"],"names":["getDomainFromEIP712Domain","eip712Domain","fields","name","version","chainId","verifyingContract","salt","extensions","length","buildBasicDomain","Number","fieldNames","domain","i","field","entries"],"mappings":"AAeO,SAASA,0BACdC,YAAAA,EACsC;AACtC,EAAA,MAAM;AAAA,IACJC,MAAAA;AAAAA,IACAC,IAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,iBAAAA;AAAAA,IACAC,IAAAA;AAAAA,IACAC;AAAAA,GACF,GAAIP,YAAAA;AAEJ,EAAA,IAAIO,UAAAA,CAAWC,SAAS,CAAA,EAAG;AAEzB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAOC,gBAAAA,CACLC,OAAOT,MAAM,CAAA,EACbC,MACAC,OAAAA,EACAC,OAAAA,EACAC,mBACAC,IACF,CAAA;AACF;AAEA,MAAMK,aAAa,CACjB,MAAA,EACA,SAAA,EACA,SAAA,EACA,qBACA,MAAM,CAAA;AAIR,SAASF,iBACPR,MAAAA,EACAC,IAAAA,EACAC,OAAAA,EACAC,OAAAA,EACAC,mBACAC,IAAAA,EAC+B;AAC/B,EAAA,MAAMM,MAAAA,GAAS;AAAA,IACbV,IAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,OAAAA,EAASM,OAAON,OAAO,CAAA;AAAA,IACvBC,iBAAAA;AAAAA,IACAC;AAAAA,GACF;AAEA,EAAA,KAAA,MAAW,CAACO,CAAAA,EAAGC,KAAK,CAAA,IAAKH,UAAAA,CAAWI,SAAQ,EAAG;AAC7C,IAAA,IAAI,EAAEd,MAAAA,GAAU,CAAA,IAAKY,CAAAA,CAAAA,EAAK;AACxB,MAAA,OAAOD,OAAOE,KAAK,CAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,OAAOF,MAAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGetContracts.js","sources":["../../../src/hooks/sdk/useGetContracts.ts"],"sourcesContent":["import { type UseQueryResult } from \"@tanstack/react-query\";\n\nimport { useChainId } from \"wagmi\";\nimport type { AdaptersContractsResult } from \"./types\";\nimport { useGetContractsQuery } from \"../swap/prices/market/queries/useSpenderAndContracts\";\n\nexport const useGetContracts = (): UseQueryResult<\n AdaptersContractsResult,\n Error\n> => {\n const chainId = useChainId();\n\n const result = useGetContractsQuery({ chainId });\n\n return result;\n};\n"],"names":["useGetContracts","$","_c","chainId","useChainId","t0","result","useGetContractsQuery"],"mappings":";;;;;AAMO,MAAMA,kBAAkBA,MAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAI7B,EAAA,MAAAC,UAAgBC,UAAAA,EAAW;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAJ,CAAAA,QAAAE,OAAAA,EAAA;AAEOE,IAAAA,EAAAA,GAAA;AAAA,MAAAF;AAAAA,KAAA;AAAWF,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA;AAA/C,EAAA,MAAAK,MAAAA,GAAeC,qBAAqBF,EAAW,CAAA;AAAE,EAAA,OAE1CC,MAAAA;AAAM;;;;"}
1
+ {"version":3,"file":"useGetContracts.js","sources":["../../../src/hooks/sdk/useGetContracts.ts"],"sourcesContent":["import { type UseQueryResult } from \"@tanstack/react-query\";\n\nimport { useChainId } from \"wagmi\";\nimport type { AdaptersContractsResult } from \"./types\";\nimport { useGetContractsQuery } from \"../swap/prices/market/queries/useSpenderAndContracts\";\n\nexport const useGetContracts = (): UseQueryResult<\n AdaptersContractsResult,\n Error\n> => {\n const chainId = useChainId();\n\n const result = useGetContractsQuery({ chainId });\n\n return result;\n};\n"],"names":["useGetContracts","$","_c","chainId","useChainId","t0","result","useGetContractsQuery"],"mappings":";;;;;AAMO,MAAMA,kBAAkBA,MAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AAI7B,EAAA,MAAAC,UAAgBC,UAAAA,EAAW;AAAE,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAJ,CAAAA,QAAAE,OAAAA,EAAA;AAEOE,IAAAA,EAAAA,GAAA;AAAA,MAAAF;AAAAA,KAAA;AAAWF,IAAAA,CAAAA,MAAAE,OAAAA;AAAAF,IAAAA,CAAAA,MAAAI,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAJ,EAAA,CAAA,CAAA;AAAA,EAAA;AAA/C,EAAA,MAAAK,MAAAA,GAAeC,qBAAqBF,EAAW,CAAA;AAAE,EAAA,OAE1CC,MAAAA;AAAM;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSpender.js","sources":["../../../src/hooks/sdk/useSpender.ts"],"sourcesContent":["import type { SpenderContractType } from \"./types\";\nimport { useGetContracts } from \"./useGetContracts\";\n\nexport const useSpender = (contractType?: SpenderContractType) => {\n const { data, isLoading, isError, error } = useGetContracts();\n const spender = data && contractType ? data[contractType] : undefined;\n\n return {\n spender,\n isError,\n isLoading,\n error,\n };\n};\n"],"names":["useSpender","contractType","$","_c","data","isLoading","isError","error","useGetContracts","spender","undefined","t0"],"mappings":";;;AAGO,MAAMA,aAAaC,CAAAA,YAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACxB,EAAA,MAAA;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,MAA4CC,eAAAA,EAAgB;AAC5D,EAAA,MAAAC,OAAAA,GAAgBL,IAAAA,IAAQH,YAAAA,GAAeG,IAAAA,CAAKH,YAAY,CAAA,GAAAS,MAAAA;AAAc,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAT,CAAAA,CAAA,CAAA,CAAA,KAAAK,KAAAA,IAAAL,EAAA,CAAA,CAAA,KAAAI,OAAAA,IAAAJ,CAAAA,CAAA,CAAA,CAAA,KAAAG,SAAAA,IAAAH,CAAAA,QAAAO,OAAAA,EAAA;AAE/DE,IAAAA,EAAAA,GAAA;AAAA,MAAAF,OAAAA;AAAAA,MAAAH,OAAAA;AAAAA,MAAAD,SAAAA;AAAAA,MAAAE;AAAAA,KAAA;AAKNL,IAAAA,CAAAA,MAAAK,KAAAA;AAAAL,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAG,SAAAA;AAAAH,IAAAA,CAAAA,MAAAO,OAAAA;AAAAP,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,GAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA;AAAA,EAAA,OALMS,EAAAA;AAKN;;;;"}
1
+ {"version":3,"file":"useSpender.js","sources":["../../../src/hooks/sdk/useSpender.ts"],"sourcesContent":["import type { SpenderContractType } from \"./types\";\nimport { useGetContracts } from \"./useGetContracts\";\n\nexport const useSpender = (contractType?: SpenderContractType) => {\n const { data, isLoading, isError, error } = useGetContracts();\n const spender = data && contractType ? data[contractType] : undefined;\n\n return {\n spender,\n isError,\n isLoading,\n error,\n };\n};\n"],"names":["useSpender","contractType","$","_c","data","isLoading","isError","error","useGetContracts","spender","undefined","t0"],"mappings":";;;AAGO,MAAMA,aAAaC,CAAAA,YAAAA,KAAA;AAAA,EAAA,MAAAC,CAAAA,GAAAC,cAAA,CAAA,CAAA;AACxB,EAAA,MAAA;AAAA,IAAAC,IAAAA;AAAAA,IAAAC,SAAAA;AAAAA,IAAAC,OAAAA;AAAAA,IAAAC;AAAAA,MAA4CC,eAAAA,EAAgB;AAC5D,EAAA,MAAAC,OAAAA,GAAgBL,IAAAA,IAAQH,YAAAA,GAAeG,IAAAA,CAAKH,YAAY,CAAA,GAAAS,MAAAA;AAAc,EAAA,IAAAC,EAAAA;AAAA,EAAA,IAAAT,CAAAA,CAAA,CAAA,CAAA,KAAAK,KAAAA,IAAAL,EAAA,CAAA,CAAA,KAAAI,OAAAA,IAAAJ,CAAAA,CAAA,CAAA,CAAA,KAAAG,SAAAA,IAAAH,CAAAA,QAAAO,OAAAA,EAAA;AAE/DE,IAAAA,EAAAA,GAAA;AAAA,MAAAF,OAAAA;AAAAA,MAAAH,OAAAA;AAAAA,MAAAD,SAAAA;AAAAA,MAAAE;AAAAA,KAAA;AAKNL,IAAAA,CAAAA,MAAAK,KAAAA;AAAAL,IAAAA,CAAAA,MAAAI,OAAAA;AAAAJ,IAAAA,CAAAA,MAAAG,SAAAA;AAAAH,IAAAA,CAAAA,MAAAO,OAAAA;AAAAP,IAAAA,CAAAA,MAAAS,EAAAA;AAAAA,EAAA,CAAA,MAAA;AAAAA,IAAAA,EAAAA,GAAAT,EAAA,CAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OALMS,EAAAA;AAKN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCreateDeltaOrder.js","sources":["../../../../../../src/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.ts"],"sourcesContent":["import { useDeltaSDK } from \"@/hooks/useSDK\";\nimport {\n useMutation,\n type UseMutationOptions,\n type UseMutationResult,\n} from \"@tanstack/react-query\";\nimport type {\n BuildDeltaOrderDataParams,\n DeltaAuction,\n MinViemClient,\n} from \"@velora-dex/sdk\";\nimport { assert } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\ntype CreateDeltaOrderParams = BuildDeltaOrderDataParams;\ntype CreateDeltaOrderReturn = DeltaAuction;\n\ntype CreateDeltaOrderInput = {\n orderInput: CreateDeltaOrderParams;\n referrerAddress?: string;\n signal?: AbortSignal; // since we have separate actions, we can abort in-between\n};\n\ntype CreateDeltaOrderMutationOptions = Omit<\n UseMutationOptions<CreateDeltaOrderReturn, Error, CreateDeltaOrderInput>,\n \"mutationFn\"\n>;\n\ntype CreateDeltaOrderMutInput = {\n mutationOptions?: CreateDeltaOrderMutationOptions;\n chainId: number;\n account?: Address;\n client?: MinViemClient;\n};\n\nexport const DELTA_ORDER_MUTATION_KEY = \"createDeltaOrder\";\n\nexport function useCreateDeltaOrder({\n mutationOptions,\n chainId,\n account,\n client,\n}: CreateDeltaOrderMutInput): UseMutationResult<\n CreateDeltaOrderReturn,\n Error,\n CreateDeltaOrderInput\n> {\n const { sdk } = useDeltaSDK({ chainId, account, client });\n\n return useMutation<\n CreateDeltaOrderReturn,\n Error,\n CreateDeltaOrderInput,\n unknown\n >({\n mutationKey: [DELTA_ORDER_MUTATION_KEY],\n mutationFn: async ({ orderInput, referrerAddress, signal }) => {\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n assert(\n \"signDeltaOrder\" in sdk,\n \"signDeltaOrder is not available on this SDK\"\n );\n // Note: This mutation requires the SDK to be initialized with account and client\n // to access signDeltaOrder functionality\n\n // Step 1: Build the Delta order\n const signableTypedData = await sdk.buildDeltaOrder(orderInput);\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n // Step 2: Sign the Delta order (only available on full DeltaSDK, not ReadOnlyDeltaSDK)\n const signature = await sdk.signDeltaOrder(signableTypedData);\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n // Step 3: Submit the Delta order to the API\n const orderFromAPI = await sdk.postDeltaOrder({\n signature,\n order: signableTypedData.data,\n partner: orderInput.partner,\n referrerAddress,\n });\n\n return orderFromAPI;\n },\n ...mutationOptions,\n });\n}\n"],"names":["DELTA_ORDER_MUTATION_KEY","useCreateDeltaOrder","t0","$","_c","mutationOptions","chainId","account","client","t1","sdk","useDeltaSDK","t2","Symbol","for","t3","t4","orderInput","referrerAddress","signal","throwIfAborted","assert","signableTypedData","buildDeltaOrder","signature","signDeltaOrder","orderFromAPI","postDeltaOrder","order","data","partner","mutationKey","mutationFn","useMutation"],"mappings":"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"}
1
+ {"version":3,"file":"useCreateDeltaOrder.js","sources":["../../../../../../src/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.ts"],"sourcesContent":["import { useDeltaSDK } from \"@/hooks/useSDK\";\nimport {\n useMutation,\n type UseMutationOptions,\n type UseMutationResult,\n} from \"@tanstack/react-query\";\nimport type {\n BuildDeltaOrderDataParams,\n DeltaAuction,\n MinViemClient,\n} from \"@velora-dex/sdk\";\nimport { assert } from \"ts-essentials\";\nimport type { Address } from \"viem\";\n\ntype CreateDeltaOrderParams = BuildDeltaOrderDataParams;\ntype CreateDeltaOrderReturn = DeltaAuction;\n\ntype CreateDeltaOrderInput = {\n orderInput: CreateDeltaOrderParams;\n referrerAddress?: string;\n signal?: AbortSignal; // since we have separate actions, we can abort in-between\n};\n\ntype CreateDeltaOrderMutationOptions = Omit<\n UseMutationOptions<CreateDeltaOrderReturn, Error, CreateDeltaOrderInput>,\n \"mutationFn\"\n>;\n\ntype CreateDeltaOrderMutInput = {\n mutationOptions?: CreateDeltaOrderMutationOptions;\n chainId: number;\n account?: Address;\n client?: MinViemClient;\n};\n\nexport const DELTA_ORDER_MUTATION_KEY = \"createDeltaOrder\";\n\nexport function useCreateDeltaOrder({\n mutationOptions,\n chainId,\n account,\n client,\n}: CreateDeltaOrderMutInput): UseMutationResult<\n CreateDeltaOrderReturn,\n Error,\n CreateDeltaOrderInput\n> {\n const { sdk } = useDeltaSDK({ chainId, account, client });\n\n return useMutation<\n CreateDeltaOrderReturn,\n Error,\n CreateDeltaOrderInput,\n unknown\n >({\n mutationKey: [DELTA_ORDER_MUTATION_KEY],\n mutationFn: async ({ orderInput, referrerAddress, signal }) => {\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n assert(\n \"signDeltaOrder\" in sdk,\n \"signDeltaOrder is not available on this SDK\"\n );\n // Note: This mutation requires the SDK to be initialized with account and client\n // to access signDeltaOrder functionality\n\n // Step 1: Build the Delta order\n const signableTypedData = await sdk.buildDeltaOrder(orderInput);\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n // Step 2: Sign the Delta order (only available on full DeltaSDK, not ReadOnlyDeltaSDK)\n const signature = await sdk.signDeltaOrder(signableTypedData);\n\n // if aborted by this point, throw an error\n signal?.throwIfAborted();\n\n // Step 3: Submit the Delta order to the API\n const orderFromAPI = await sdk.postDeltaOrder({\n signature,\n order: signableTypedData.data,\n partner: orderInput.partner,\n referrerAddress,\n });\n\n return orderFromAPI;\n },\n ...mutationOptions,\n });\n}\n"],"names":["DELTA_ORDER_MUTATION_KEY","useCreateDeltaOrder","t0","$","_c","mutationOptions","chainId","account","client","t1","sdk","useDeltaSDK","t2","Symbol","for","t3","t4","orderInput","referrerAddress","signal","throwIfAborted","assert","signableTypedData","buildDeltaOrder","signature","signDeltaOrder","orderFromAPI","postDeltaOrder","order","data","partner","mutationKey","mutationFn","useMutation"],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { BridgeStatus, DeltaAuction, DeltaAuctionOrder } from '@velora-dex/sdk';
2
2
  import { MarkOptional, MarkRequired } from 'ts-essentials';
3
3
  import { DeltaAuctionStatus, ExecutedDeltaAuction, FailedDeltaAuction } from './types';
4
+ import { DeltaOrderFromAPI } from '../queries/useDeltaOrders';
4
5
  export declare function isOrderCrosschain(order: Pick<DeltaAuctionOrder, "bridge">): boolean;
6
+ export declare function isDeltaOrderFromApi(data: unknown): data is DeltaOrderFromAPI;
5
7
  export declare function isBridgedOrderExecuted(order: Pick<DeltaAuction, "bridgeStatus" | "bridgeMetadata">): order is MarkRequired<DeltaAuction, "bridgeMetadata"> & {
6
8
  bridgeStatus: "filled";
7
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/swap/prices/delta/orders/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GACvC,OAAO,CAET;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,gBAAgB,CAAC,GAC3D,KAAK,IAAI,YAAY,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG;IACzD,YAAY,EAAE,QAAQ,CAAC;CACxB,CAEA;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,gBAAgB,CAAC,GAC3D,KAAK,IAAI,YAAY,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG;IACzD,YAAY,EAAE,UAAU,CAAC;CAC1B,CAEA;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,EAChD,iBAAiB,UAAO,GACvB,OAAO,IAAI,oBAAoB,CASjC;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,EAChD,iBAAiB,UAAO,GACvB,OAAO,IAAI,kBAAkB,CAgB/B;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,GAC/C,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;IACtD,MAAM,EAAE,SAAS,CAAC;CACnB,CAEA;AAKD,eAAO,MAAM,uBAAuB;;;;;;;CAenC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAI/B,CAAC;AAGF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,kBAAkB,GAC9B,iBAAiB,CAQnB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,YAAY,EAAE,YAAY,GAAG,IAAI,GAChC,iBAAiB,CAWnB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,GAC7D,iBAAiB,CAInB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../../src/hooks/swap/prices/delta/orders/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GACvC,OAAO,CAET;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,iBAAiB,CAU5E;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,gBAAgB,CAAC,GAC3D,KAAK,IAAI,YAAY,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG;IACzD,YAAY,EAAE,QAAQ,CAAC;CACxB,CAEA;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,GAAG,gBAAgB,CAAC,GAC3D,KAAK,IAAI,YAAY,CAAC,YAAY,EAAE,gBAAgB,CAAC,GAAG;IACzD,YAAY,EAAE,UAAU,CAAC;CAC1B,CAEA;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,EAChD,iBAAiB,UAAO,GACvB,OAAO,IAAI,oBAAoB,CASjC;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,EAChD,iBAAiB,UAAO,GACvB,OAAO,IAAI,kBAAkB,CAgB/B;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,GAC/C,OAAO,IAAI,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG;IACtD,MAAM,EAAE,SAAS,CAAC;CACnB,CAEA;AAKD,eAAO,MAAM,uBAAuB;;;;;;;CAenC,CAAC;AAEF,eAAO,MAAM,mBAAmB;;;;CAI/B,CAAC;AAGF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,kBAAkB,GAC9B,iBAAiB,CAQnB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,EAC1B,YAAY,EAAE,YAAY,GAAG,IAAI,GAChC,iBAAiB,CAWnB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,GAC7D,iBAAiB,CAInB"}