@velora-dex/widget 0.0.14 → 0.0.16

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 (910) hide show
  1. package/README.md +91 -29
  2. package/dist/assets/circle-check.svg.js +12 -0
  3. package/dist/assets/circle-check.svg.js.map +1 -0
  4. package/dist/assets/circle-exclamation.svg.js +12 -0
  5. package/dist/assets/circle-exclamation.svg.js.map +1 -0
  6. package/dist/assets/copy.svg.js +12 -0
  7. package/dist/assets/copy.svg.js.map +1 -0
  8. package/dist/assets/external-url.svg.js +12 -0
  9. package/dist/assets/external-url.svg.js.map +1 -0
  10. package/dist/assets/logout.svg.js +12 -0
  11. package/dist/assets/logout.svg.js.map +1 -0
  12. package/dist/assets/spinner.svg.js.map +1 -0
  13. package/dist/assets/wS.svg.js +12 -0
  14. package/dist/assets/wS.svg.js.map +1 -0
  15. package/dist/assets/wS.svg2.js +4 -0
  16. package/dist/assets/wS.svg2.js.map +1 -0
  17. package/dist/components/ui/accordion.js +0 -10
  18. package/dist/components/ui/accordion.js.map +1 -1
  19. package/dist/components/ui/badge.js +0 -10
  20. package/dist/components/ui/badge.js.map +1 -1
  21. package/dist/components/ui/button.d.ts +1 -1
  22. package/dist/components/ui/button.js +1 -11
  23. package/dist/components/ui/button.js.map +1 -1
  24. package/dist/components/ui/card.js +1 -116
  25. package/dist/components/ui/card.js.map +1 -1
  26. package/dist/components/ui/dialog.js +2 -126
  27. package/dist/components/ui/dialog.js.map +1 -1
  28. package/dist/components/ui/drawer.d.ts +1 -1
  29. package/dist/components/ui/drawer.d.ts.map +1 -1
  30. package/dist/components/ui/drawer.js +2 -12
  31. package/dist/components/ui/drawer.js.map +1 -1
  32. package/dist/components/ui/dropdown-menu.js +22 -369
  33. package/dist/components/ui/dropdown-menu.js.map +1 -1
  34. package/dist/components/ui/input.js +0 -10
  35. package/dist/components/ui/input.js.map +1 -1
  36. package/dist/components/ui/progress.d.ts +13 -0
  37. package/dist/components/ui/progress.d.ts.map +1 -0
  38. package/dist/components/ui/progress.js +120 -0
  39. package/dist/components/ui/progress.js.map +1 -0
  40. package/dist/components/ui/skeleton.js +0 -10
  41. package/dist/components/ui/skeleton.js.map +1 -1
  42. package/dist/components/ui/sonner.d.ts.map +1 -1
  43. package/dist/components/ui/sonner.js +33 -19
  44. package/dist/components/ui/sonner.js.map +1 -1
  45. package/dist/components/ui/switch.d.ts +3 -1
  46. package/dist/components/ui/switch.d.ts.map +1 -1
  47. package/dist/components/ui/switch.js +30 -26
  48. package/dist/components/ui/switch.js.map +1 -1
  49. package/dist/components/ui/tooltip.d.ts.map +1 -1
  50. package/dist/components/ui/tooltip.js +15 -14
  51. package/dist/components/ui/tooltip.js.map +1 -1
  52. package/dist/components/web3/AccountButton.d.ts.map +1 -1
  53. package/dist/components/web3/AccountButton.js +98 -51
  54. package/dist/components/web3/AccountButton.js.map +1 -1
  55. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts +2 -0
  56. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts.map +1 -0
  57. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +92 -0
  58. package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -0
  59. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js +0 -10
  60. package/dist/components/web3/ConnectWallets/WalletConnectButtons.js.map +1 -1
  61. package/dist/components/web3/ConnectWallets/index.js +1 -11
  62. package/dist/components/web3/ConnectWallets/index.js.map +1 -1
  63. package/dist/components/web3/ConnectWallets/privy/button.js +0 -10
  64. package/dist/components/web3/ConnectWallets/privy/button.js.map +1 -1
  65. package/dist/components/web3/ConnectWallets/privy/connectRunner.js +0 -10
  66. package/dist/components/web3/ConnectWallets/privy/connectRunner.js.map +1 -1
  67. package/dist/components/web3/ConnectWallets/privy/iframe.js +0 -10
  68. package/dist/components/web3/ConnectWallets/privy/iframe.js.map +1 -1
  69. package/dist/components/web3/ConnectWallets/privy/provider.js +0 -10
  70. package/dist/components/web3/ConnectWallets/privy/provider.js.map +1 -1
  71. package/dist/components/web3/ConnectWallets/walletIcons.js +0 -10
  72. package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
  73. package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts +9 -0
  74. package/dist/components/web3/ConnectedWallet/ConnectedWallet.d.ts.map +1 -0
  75. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js +211 -0
  76. package/dist/components/web3/ConnectedWallet/ConnectedWallet.js.map +1 -0
  77. package/dist/components/web3/providers.d.ts.map +1 -1
  78. package/dist/components/web3/providers.js +10 -16
  79. package/dist/components/web3/providers.js.map +1 -1
  80. package/dist/components/widget/AppHeader/ActivityButton.js +0 -10
  81. package/dist/components/widget/AppHeader/ActivityButton.js.map +1 -1
  82. package/dist/components/widget/AppHeader/AppHeader.d.ts.map +1 -1
  83. package/dist/components/widget/AppHeader/AppHeader.js +2 -11
  84. package/dist/components/widget/AppHeader/AppHeader.js.map +1 -1
  85. package/dist/components/widget/Details/DetailWithTooltip.js +0 -10
  86. package/dist/components/widget/Details/DetailWithTooltip.js.map +1 -1
  87. package/dist/components/widget/Details/DetailWithValueList.js +0 -10
  88. package/dist/components/widget/Details/DetailWithValueList.js.map +1 -1
  89. package/dist/components/widget/Details/DetailWithValueListExpandable.js +0 -10
  90. package/dist/components/widget/Details/DetailWithValueListExpandable.js.map +1 -1
  91. package/dist/components/widget/Details/SwapDetailsExpandable.js +0 -10
  92. package/dist/components/widget/Details/SwapDetailsExpandable.js.map +1 -1
  93. package/dist/components/widget/Dialog/ConnectWalletDialog/ConnectWalletDialog.js +0 -10
  94. package/dist/components/widget/Dialog/ConnectWalletDialog/ConnectWalletDialog.js.map +1 -1
  95. package/dist/components/widget/Dialog/DialogRoot.js +0 -10
  96. package/dist/components/widget/Dialog/DialogRoot.js.map +1 -1
  97. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js +125 -145
  98. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressDialog.js.map +1 -1
  99. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js +0 -10
  100. package/dist/components/widget/Dialog/ReceiverAddressDialog/ReceiverAddressInput.js.map +1 -1
  101. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +1 -11
  102. package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
  103. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js +0 -10
  104. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/AcrossTokenList.js.map +1 -1
  105. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js +0 -10
  106. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/RegularTokenList.js.map +1 -1
  107. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.d.ts.map +1 -1
  108. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js +2 -13
  109. package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListBody.js.map +1 -1
  110. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js +0 -10
  111. package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
  112. package/dist/components/widget/Dialog/dialogByType.js +0 -10
  113. package/dist/components/widget/Dialog/dialogByType.js.map +1 -1
  114. package/dist/components/widget/Dialog/state/dialogAtom.js +1 -12
  115. package/dist/components/widget/Dialog/state/dialogAtom.js.map +1 -1
  116. package/dist/components/widget/Drawer/index.js +0 -10
  117. package/dist/components/widget/Drawer/index.js.map +1 -1
  118. package/dist/components/widget/Drawer/state/useDrawerControls.d.ts +7 -5
  119. package/dist/components/widget/Drawer/state/useDrawerControls.d.ts.map +1 -1
  120. package/dist/components/widget/Drawer/state/useDrawerControls.js +55 -44
  121. package/dist/components/widget/Drawer/state/useDrawerControls.js.map +1 -1
  122. package/dist/components/widget/Dropdown/DropdownWithItems.js +0 -10
  123. package/dist/components/widget/Dropdown/DropdownWithItems.js.map +1 -1
  124. package/dist/components/widget/Icon/CheckIcon.js +0 -10
  125. package/dist/components/widget/Icon/CheckIcon.js.map +1 -1
  126. package/dist/components/widget/Icon/ChevronIcon.js +0 -10
  127. package/dist/components/widget/Icon/ChevronIcon.js.map +1 -1
  128. package/dist/components/widget/Icon/DeltaIcon.js +0 -10
  129. package/dist/components/widget/Icon/DeltaIcon.js.map +1 -1
  130. package/dist/components/widget/Icon/EllipseIcon.js +0 -10
  131. package/dist/components/widget/Icon/EllipseIcon.js.map +1 -1
  132. package/dist/components/widget/Icon/InfoIcon.js +0 -10
  133. package/dist/components/widget/Icon/InfoIcon.js.map +1 -1
  134. package/dist/components/widget/Icon/MarketIcon.js +0 -10
  135. package/dist/components/widget/Icon/MarketIcon.js.map +1 -1
  136. package/dist/components/widget/Icon/SliderIcon.js +0 -10
  137. package/dist/components/widget/Icon/SliderIcon.js.map +1 -1
  138. package/dist/components/widget/Line/Line.d.ts +3 -1
  139. package/dist/components/widget/Line/Line.d.ts.map +1 -1
  140. package/dist/components/widget/Line/Line.js +22 -25
  141. package/dist/components/widget/Line/Line.js.map +1 -1
  142. package/dist/components/widget/NetworkIcon/NetworkIconSquare.d.ts.map +1 -1
  143. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js +22 -30
  144. package/dist/components/widget/NetworkIcon/NetworkIconSquare.js.map +1 -1
  145. package/dist/components/widget/NetworkIcon/assets/sqr/sonic.svg.js +12 -0
  146. package/dist/components/widget/NetworkIcon/assets/sqr/sonic.svg.js.map +1 -0
  147. package/dist/components/widget/NetworkIcon/assets/sqr/unichain.svg.js +12 -0
  148. package/dist/components/widget/NetworkIcon/assets/sqr/unichain.svg.js.map +1 -0
  149. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js +0 -10
  150. package/dist/components/widget/NetworkSwitcher/CompactNetworkSwitcher.js.map +1 -1
  151. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js +0 -10
  152. package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
  153. package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js +0 -10
  154. package/dist/components/widget/NetworkWithIcon/NetworkIconWithChevron.js.map +1 -1
  155. package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js +0 -10
  156. package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
  157. package/dist/components/widget/PoweredBy/PoweredBy.js +0 -10
  158. package/dist/components/widget/PoweredBy/PoweredBy.js.map +1 -1
  159. package/dist/components/widget/ReceiverAddress/ReceiverAddress.d.ts.map +1 -1
  160. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js +61 -62
  161. package/dist/components/widget/ReceiverAddress/ReceiverAddress.js.map +1 -1
  162. package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js +1 -12
  163. package/dist/components/widget/ReceiverAddress/state/receiverAddressAtom.js.map +1 -1
  164. package/dist/components/widget/ReceiverAddress/state/subscriptions.js +0 -10
  165. package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
  166. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js +0 -10
  167. package/dist/components/widget/RowVirtualizer/RowVirtualizerFixed.js.map +1 -1
  168. package/dist/components/widget/SelectToken/SelectTokenButton.d.ts.map +1 -1
  169. package/dist/components/widget/SelectToken/SelectTokenButton.js +106 -99
  170. package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
  171. package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js +0 -10
  172. package/dist/components/widget/SwapModeSwitcher/SwapModeSwitcherExpandable.js.map +1 -1
  173. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js +2 -13
  174. package/dist/components/widget/SwapModeSwitcher/state/swapModeActionsAtom.js.map +1 -1
  175. package/dist/components/widget/SwapModeSwitcher/state/swapModeAtom.js +3 -15
  176. package/dist/components/widget/SwapModeSwitcher/state/swapModeAtom.js.map +1 -1
  177. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js +3 -14
  178. package/dist/components/widget/SwapModeSwitcher/state/swapSideAtom.js.map +1 -1
  179. package/dist/components/widget/SwapRate/SwapRate.js +0 -10
  180. package/dist/components/widget/SwapRate/SwapRate.js.map +1 -1
  181. package/dist/components/widget/Toasts/CustomToast.d.ts +8 -0
  182. package/dist/components/widget/Toasts/CustomToast.d.ts.map +1 -0
  183. package/dist/components/widget/Toasts/CustomToast.js +222 -0
  184. package/dist/components/widget/Toasts/CustomToast.js.map +1 -0
  185. package/dist/components/widget/TokenBadge/TokenBadge.js +0 -10
  186. package/dist/components/widget/TokenBadge/TokenBadge.js.map +1 -1
  187. package/dist/components/widget/TokenInput/EmptyInput.js +0 -10
  188. package/dist/components/widget/TokenInput/EmptyInput.js.map +1 -1
  189. package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
  190. package/dist/components/widget/TokenInput/index.js +122 -147
  191. package/dist/components/widget/TokenInput/index.js.map +1 -1
  192. package/dist/components/widget/TokenInput/types.d.ts +1 -0
  193. package/dist/components/widget/TokenInput/types.d.ts.map +1 -1
  194. package/dist/components/widget/TokenSwitcher/TokenSwitcher.js +1 -11
  195. package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
  196. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts +2 -2
  197. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.d.ts.map +1 -1
  198. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js +20 -26
  199. package/dist/components/widget/TradeOverview/DeltaOrderTradeOverview.js.map +1 -1
  200. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts +2 -2
  201. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.d.ts.map +1 -1
  202. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js +20 -26
  203. package/dist/components/widget/TradeOverview/MarketSwapTradeOverview.js.map +1 -1
  204. package/dist/components/widget/TradeOverview/Step.js +1 -11
  205. package/dist/components/widget/TradeOverview/Step.js.map +1 -1
  206. package/dist/components/widget/TradeOverview/Stepper.js +5 -50
  207. package/dist/components/widget/TradeOverview/Stepper.js.map +1 -1
  208. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js +0 -10
  209. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteFooter.js.map +1 -1
  210. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js +0 -10
  211. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompleteHeader.js.map +1 -1
  212. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js +0 -10
  213. package/dist/components/widget/TradeOverview/TradeComplete/TradeCompletedDetails.js.map +1 -1
  214. package/dist/components/widget/TradeOverview/TradeComplete/index.js +1 -11
  215. package/dist/components/widget/TradeOverview/TradeComplete/index.js.map +1 -1
  216. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js +0 -10
  217. package/dist/components/widget/TradeOverview/TradeComplete/useTradeCompleteDetails.js.map +1 -1
  218. package/dist/components/widget/TradeOverview/TradeComplete/utils.js +0 -10
  219. package/dist/components/widget/TradeOverview/TradeComplete/utils.js.map +1 -1
  220. package/dist/components/widget/TradeOverview/TradeDetails.js +1 -11
  221. package/dist/components/widget/TradeOverview/TradeDetails.js.map +1 -1
  222. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.d.ts.map +1 -1
  223. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js +34 -15
  224. package/dist/components/widget/TradeOverview/TradeDetailsDisplay.js.map +1 -1
  225. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.d.ts +5 -0
  226. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.d.ts.map +1 -0
  227. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js +55 -0
  228. package/dist/components/widget/TradeOverview/TradeError/TradeErrorDetails.js.map +1 -0
  229. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts +5 -0
  230. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.d.ts.map +1 -0
  231. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js +43 -0
  232. package/dist/components/widget/TradeOverview/TradeError/TradeErrorFooter.js.map +1 -0
  233. package/dist/components/widget/TradeOverview/TradeError/index.d.ts +6 -0
  234. package/dist/components/widget/TradeOverview/TradeError/index.d.ts.map +1 -0
  235. package/dist/components/widget/TradeOverview/TradeError/index.js +55 -0
  236. package/dist/components/widget/TradeOverview/TradeError/index.js.map +1 -0
  237. package/dist/components/widget/TradeOverview/TradeError/utils.d.ts +4 -0
  238. package/dist/components/widget/TradeOverview/TradeError/utils.d.ts.map +1 -0
  239. package/dist/components/widget/TradeOverview/TradeError/utils.js +30 -0
  240. package/dist/components/widget/TradeOverview/TradeError/utils.js.map +1 -0
  241. package/dist/components/widget/TradeOverview/TradeOverview.d.ts +3 -1
  242. package/dist/components/widget/TradeOverview/TradeOverview.d.ts.map +1 -1
  243. package/dist/components/widget/TradeOverview/TradeOverview.js +156 -111
  244. package/dist/components/widget/TradeOverview/TradeOverview.js.map +1 -1
  245. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js +0 -10
  246. package/dist/components/widget/TradeOverview/TradeOverviewFooter.js.map +1 -1
  247. package/dist/components/widget/TradeOverview/TradeOverviewHeader.js +1 -11
  248. package/dist/components/widget/TradeOverview/TradeOverviewHeader.js.map +1 -1
  249. package/dist/components/widget/TradeOverview/VerticalDash.js +0 -10
  250. package/dist/components/widget/TradeOverview/VerticalDash.js.map +1 -1
  251. package/dist/components/widget/TradeOverview/assets/1_approving.lottie.js +4 -0
  252. package/dist/components/widget/TradeOverview/assets/1_approving.lottie.js.map +1 -0
  253. package/dist/components/widget/TradeOverview/assets/2_in_progress.lottie.js +4 -0
  254. package/dist/components/widget/TradeOverview/assets/2_in_progress.lottie.js.map +1 -0
  255. package/dist/components/widget/TradeOverview/assets/3_executing_step.lottie.js +4 -0
  256. package/dist/components/widget/TradeOverview/assets/3_executing_step.lottie.js.map +1 -0
  257. package/dist/components/widget/TradeOverview/assets/4_complete_step.lottie.js +4 -0
  258. package/dist/components/widget/TradeOverview/assets/4_complete_step.lottie.js.map +1 -0
  259. package/dist/components/widget/TradeOverview/assets/5_error_step.lottie.js +4 -0
  260. package/dist/components/widget/TradeOverview/assets/5_error_step.lottie.js.map +1 -0
  261. package/dist/components/widget/TradeOverview/steps.js +0 -10
  262. package/dist/components/widget/TradeOverview/steps.js.map +1 -1
  263. package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts +8 -3
  264. package/dist/components/widget/TradeOverview/tradeFlowContext.d.ts.map +1 -1
  265. package/dist/components/widget/TradeOverview/tradeFlowContext.js +17 -11
  266. package/dist/components/widget/TradeOverview/tradeFlowContext.js.map +1 -1
  267. package/dist/components/widget/TradeParameters/DeltaParameter.js +0 -10
  268. package/dist/components/widget/TradeParameters/DeltaParameter.js.map +1 -1
  269. package/dist/components/widget/TradeParameters/EIP1559Parameter.d.ts +2 -0
  270. package/dist/components/widget/TradeParameters/EIP1559Parameter.d.ts.map +1 -0
  271. package/dist/components/widget/TradeParameters/EIP1559Parameter.js +56 -0
  272. package/dist/components/widget/TradeParameters/EIP1559Parameter.js.map +1 -0
  273. package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js +0 -10
  274. package/dist/components/widget/TradeParameters/SlippageParameter/CustomSlippageInput.js.map +1 -1
  275. package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js +0 -10
  276. package/dist/components/widget/TradeParameters/SlippageParameter/EditSlippage.js.map +1 -1
  277. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.d.ts.map +1 -1
  278. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js +25 -26
  279. package/dist/components/widget/TradeParameters/SlippageParameter/SlippageParameter.js.map +1 -1
  280. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js +0 -10
  281. package/dist/components/widget/TradeParameters/SlippageParameter/hooks/useCustomSlippageProps.js.map +1 -1
  282. package/dist/components/widget/TradeParameters/TradeParameters.d.ts.map +1 -1
  283. package/dist/components/widget/TradeParameters/TradeParameters.js +61 -44
  284. package/dist/components/widget/TradeParameters/TradeParameters.js.map +1 -1
  285. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.d.ts +2 -0
  286. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.d.ts.map +1 -0
  287. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js +155 -0
  288. package/dist/components/widget/TradeParameters/TransactionSpeedParameter.js.map +1 -0
  289. package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.d.ts.map +1 -1
  290. package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js +24 -17
  291. package/dist/components/widget/TradeParameters/hooks/useIsNotDefaultAnyParameter.js.map +1 -1
  292. package/dist/components/widget/TradeParameters/state/constants.js +0 -10
  293. package/dist/components/widget/TradeParameters/state/constants.js.map +1 -1
  294. package/dist/components/widget/TradeParameters/state/deltaParamActionsAtom.js +2 -13
  295. package/dist/components/widget/TradeParameters/state/deltaParamActionsAtom.js.map +1 -1
  296. package/dist/components/widget/TradeParameters/state/deltaParamAtom.js +3 -15
  297. package/dist/components/widget/TradeParameters/state/deltaParamAtom.js.map +1 -1
  298. package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.d.ts +6 -0
  299. package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.d.ts.map +1 -0
  300. package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.js +10 -0
  301. package/dist/components/widget/TradeParameters/state/eip1559ParamAtom.js.map +1 -0
  302. package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.d.ts +8 -0
  303. package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.d.ts.map +1 -0
  304. package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.js +13 -0
  305. package/dist/components/widget/TradeParameters/state/gasPresetParamAtom.js.map +1 -0
  306. package/dist/components/widget/TradeParameters/state/resetParamsAtom.d.ts +4 -0
  307. package/dist/components/widget/TradeParameters/state/resetParamsAtom.d.ts.map +1 -0
  308. package/dist/components/widget/TradeParameters/state/resetParamsAtom.js +16 -0
  309. package/dist/components/widget/TradeParameters/state/resetParamsAtom.js.map +1 -0
  310. package/dist/components/widget/TradeParameters/state/slippageParamActionsAtom.js +2 -13
  311. package/dist/components/widget/TradeParameters/state/slippageParamActionsAtom.js.map +1 -1
  312. package/dist/components/widget/TradeParameters/state/slippageParamAtom.js +3 -15
  313. package/dist/components/widget/TradeParameters/state/slippageParamAtom.js.map +1 -1
  314. package/dist/components/widget/Warning/InsufficientBalanceMessage.js +0 -10
  315. package/dist/components/widget/Warning/InsufficientBalanceMessage.js.map +1 -1
  316. package/dist/components/widget/Warning/Warning.js +0 -10
  317. package/dist/components/widget/Warning/Warning.js.map +1 -1
  318. package/dist/components/widget/Warning/WarningMessage.js +0 -10
  319. package/dist/components/widget/Warning/WarningMessage.js.map +1 -1
  320. package/dist/components/widget/WrapEth/WrapEthContent.d.ts.map +1 -1
  321. package/dist/components/widget/WrapEth/WrapEthContent.js +64 -76
  322. package/dist/components/widget/WrapEth/WrapEthContent.js.map +1 -1
  323. package/dist/components/widget/WrapEth/WrapEthDrawerButton.d.ts +1 -1
  324. package/dist/components/widget/WrapEth/WrapEthDrawerButton.d.ts.map +1 -1
  325. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js +56 -57
  326. package/dist/components/widget/WrapEth/WrapEthDrawerButton.js.map +1 -1
  327. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.d.ts.map +1 -1
  328. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js +2 -11
  329. package/dist/components/widget/WrapEth/hooks/useSubmitDepositTxMutation.js.map +1 -1
  330. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js +0 -10
  331. package/dist/components/widget/WrapEth/hooks/useWrapEthProps.js.map +1 -1
  332. package/dist/components/widget/YouGet/YouGet.d.ts.map +1 -1
  333. package/dist/components/widget/YouGet/YouGet.js +97 -108
  334. package/dist/components/widget/YouGet/YouGet.js.map +1 -1
  335. package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33/external/vaul/dist/index.js +1626 -0
  336. package/dist/external/.pnpm/vaul@1.1.2_patch_hash_07b36ba5def3805dde9d543a880ba9e4caf55e5eb58e544faaa2c186846bf3c1__15df56ff48174365d34843c037ea8a33/external/vaul/dist/index.js.map +1 -0
  337. package/dist/hooks/gas/config.d.ts.map +1 -1
  338. package/dist/hooks/gas/config.js +9 -15
  339. package/dist/hooks/gas/config.js.map +1 -1
  340. package/dist/hooks/gas/types.d.ts +1 -1
  341. package/dist/hooks/gas/types.d.ts.map +1 -1
  342. package/dist/hooks/gas/useGasPrices.d.ts +8 -0
  343. package/dist/hooks/gas/useGasPrices.d.ts.map +1 -1
  344. package/dist/hooks/gas/useGasPrices.js +30 -31
  345. package/dist/hooks/gas/useGasPrices.js.map +1 -1
  346. package/dist/hooks/gas/utils.d.ts +5 -0
  347. package/dist/hooks/gas/utils.d.ts.map +1 -1
  348. package/dist/hooks/gas/utils.js +5 -12
  349. package/dist/hooks/gas/utils.js.map +1 -1
  350. package/dist/hooks/getCode/query.js +0 -10
  351. package/dist/hooks/getCode/query.js.map +1 -1
  352. package/dist/hooks/getCode/useIsAccountContract.d.ts.map +1 -1
  353. package/dist/hooks/getCode/useIsAccountContract.js +21 -18
  354. package/dist/hooks/getCode/useIsAccountContract.js.map +1 -1
  355. package/dist/hooks/getCode/useIsContractAtAddress.js +0 -10
  356. package/dist/hooks/getCode/useIsContractAtAddress.js.map +1 -1
  357. package/dist/hooks/permit/hooks/common/useSignArbitraryTypedData.d.ts.map +1 -0
  358. package/dist/hooks/permit/hooks/{useSignArbitraryTypedData.js → common/useSignArbitraryTypedData.js} +1 -11
  359. package/dist/hooks/permit/hooks/{useSignArbitraryTypedData.js.map → common/useSignArbitraryTypedData.js.map} +1 -1
  360. package/dist/hooks/permit/hooks/{useSignPermit.d.ts → common/useSignPermit.d.ts} +1 -1
  361. package/dist/hooks/permit/hooks/common/useSignPermit.d.ts.map +1 -0
  362. package/dist/hooks/permit/hooks/{useSignPermit.js → common/useSignPermit.js} +2 -12
  363. package/dist/hooks/permit/hooks/common/useSignPermit.js.map +1 -0
  364. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.d.ts +7 -0
  365. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.d.ts.map +1 -0
  366. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js +25 -0
  367. package/dist/hooks/permit/hooks/common/useWalletSupportsPermit.js.map +1 -0
  368. package/dist/hooks/permit/hooks/{useGetPermitInfo.d.ts → permit1/useGetPermitInfo.d.ts} +2 -2
  369. package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.d.ts.map +1 -0
  370. package/dist/hooks/permit/hooks/{useGetPermitInfo.js → permit1/useGetPermitInfo.js} +3 -13
  371. package/dist/hooks/permit/hooks/permit1/useGetPermitInfo.js.map +1 -0
  372. package/dist/hooks/permit/hooks/{useGetSafePermitInfo.d.ts → permit1/useGetSafePermitInfo.d.ts} +3 -3
  373. package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.d.ts.map +1 -0
  374. package/dist/hooks/permit/hooks/{useGetSafePermitInfo.js → permit1/useGetSafePermitInfo.js} +1 -11
  375. package/dist/hooks/permit/hooks/permit1/useGetSafePermitInfo.js.map +1 -0
  376. package/dist/hooks/permit/hooks/{usePermit1Nonce.d.ts → permit1/usePermit1Nonce.d.ts} +5 -5
  377. package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.d.ts.map +1 -0
  378. package/dist/hooks/permit/hooks/{usePermit1Nonce.js → permit1/usePermit1Nonce.js} +5 -14
  379. package/dist/hooks/permit/hooks/permit1/usePermit1Nonce.js.map +1 -0
  380. package/dist/hooks/permit/hooks/{useSignTokenFromPermit1.d.ts → permit1/useSignTokenPermit1.d.ts} +15 -14
  381. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.d.ts.map +1 -0
  382. package/dist/hooks/permit/hooks/{useSignTokenFromPermit1.js → permit1/useSignTokenPermit1.js} +75 -78
  383. package/dist/hooks/permit/hooks/permit1/useSignTokenPermit1.js.map +1 -0
  384. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.d.ts +10 -0
  385. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.d.ts.map +1 -0
  386. package/dist/hooks/permit/hooks/{useTokenFromPermit1Nonce.js → permit1/useTokenFromPermit1Nonce.js} +2 -12
  387. package/dist/hooks/permit/hooks/permit1/useTokenFromPermit1Nonce.js.map +1 -0
  388. package/dist/hooks/permit/hooks/{useTokenFromPermitInfo.d.ts → permit1/useTokenFromPermitInfo.d.ts} +1 -1
  389. package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.d.ts.map +1 -0
  390. package/dist/hooks/permit/hooks/{useTokenFromPermitInfo.js → permit1/useTokenFromPermitInfo.js} +2 -12
  391. package/dist/hooks/permit/hooks/permit1/useTokenFromPermitInfo.js.map +1 -0
  392. package/dist/hooks/permit/hooks/{useTryToSignPermit1.d.ts → permit1/useTryToSignPermit1.d.ts} +1 -1
  393. package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.d.ts.map +1 -0
  394. package/dist/hooks/permit/hooks/{useTryToSignPermit1.js → permit1/useTryToSignPermit1.js} +2 -12
  395. package/dist/hooks/permit/hooks/permit1/useTryToSignPermit1.js.map +1 -0
  396. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.d.ts +21 -0
  397. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.d.ts.map +1 -0
  398. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js +79 -0
  399. package/dist/hooks/permit/hooks/permit2/usePermit2Allowance.js.map +1 -0
  400. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.d.ts +76 -0
  401. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.d.ts.map +1 -0
  402. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js +143 -0
  403. package/dist/hooks/permit/hooks/permit2/usePermit2TransferFromNonce.js.map +1 -0
  404. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.d.ts +52 -0
  405. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.d.ts.map +1 -0
  406. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js +299 -0
  407. package/dist/hooks/permit/hooks/permit2/useSignTokenPermit2TransferFrom.js.map +1 -0
  408. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.d.ts +10 -0
  409. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.d.ts.map +1 -0
  410. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js +55 -0
  411. package/dist/hooks/permit/hooks/permit2/useTokenFromPermit2TransferFromNonce.js.map +1 -0
  412. package/dist/hooks/permit/utils/abi.d.ts +173 -0
  413. package/dist/hooks/permit/utils/abi.d.ts.map +1 -1
  414. package/dist/hooks/permit/utils/abi.js +174 -11
  415. package/dist/hooks/permit/utils/abi.js.map +1 -1
  416. package/dist/hooks/permit/utils/constants.js +0 -10
  417. package/dist/hooks/permit/utils/constants.js.map +1 -1
  418. package/dist/hooks/permit/utils/construct.d.ts +3 -4
  419. package/dist/hooks/permit/utils/construct.d.ts.map +1 -1
  420. package/dist/hooks/permit/utils/construct.js +1 -11
  421. package/dist/hooks/permit/utils/construct.js.map +1 -1
  422. package/dist/hooks/permit/utils/deadlines.d.ts +8 -0
  423. package/dist/hooks/permit/utils/deadlines.d.ts.map +1 -0
  424. package/dist/hooks/permit/utils/deadlines.js +15 -0
  425. package/dist/hooks/permit/utils/deadlines.js.map +1 -0
  426. package/dist/hooks/permit/utils/detect.js +0 -10
  427. package/dist/hooks/permit/utils/detect.js.map +1 -1
  428. package/dist/hooks/permit/utils/domainSeparator.js +0 -10
  429. package/dist/hooks/permit/utils/domainSeparator.js.map +1 -1
  430. package/dist/hooks/permit/utils/encodeArgs.d.ts +22 -4
  431. package/dist/hooks/permit/utils/encodeArgs.d.ts.map +1 -1
  432. package/dist/hooks/permit/utils/encodeArgs.js +33 -14
  433. package/dist/hooks/permit/utils/encodeArgs.js.map +1 -1
  434. package/dist/hooks/permit/utils/trySignPermit1.d.ts +1 -1
  435. package/dist/hooks/permit/utils/trySignPermit1.d.ts.map +1 -1
  436. package/dist/hooks/permit/utils/trySignPermit1.js +0 -10
  437. package/dist/hooks/permit/utils/trySignPermit1.js.map +1 -1
  438. package/dist/hooks/permit/utils/utils.js +0 -10
  439. package/dist/hooks/permit/utils/utils.js.map +1 -1
  440. package/dist/hooks/sdk/useGetContracts.js +0 -10
  441. package/dist/hooks/sdk/useGetContracts.js.map +1 -1
  442. package/dist/hooks/sdk/useSpender.js +0 -10
  443. package/dist/hooks/sdk/useSpender.js.map +1 -1
  444. package/dist/hooks/swap/prices/delta/bridge/utils.js +0 -10
  445. package/dist/hooks/swap/prices/delta/bridge/utils.js.map +1 -1
  446. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js +0 -10
  447. package/dist/hooks/swap/prices/delta/mutations/useCreateDeltaOrder.js.map +1 -1
  448. package/dist/hooks/swap/prices/delta/orders/utils.js +0 -10
  449. package/dist/hooks/swap/prices/delta/orders/utils.js.map +1 -1
  450. package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js +0 -10
  451. package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js.map +1 -1
  452. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +1 -0
  453. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
  454. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +4 -11
  455. package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
  456. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js +0 -10
  457. package/dist/hooks/swap/prices/delta/queries/useIsTokenSupportedInDelta.js.map +1 -1
  458. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js +0 -10
  459. package/dist/hooks/swap/prices/delta/queries/useWatchDeltaOrder.js.map +1 -1
  460. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js +0 -10
  461. package/dist/hooks/swap/prices/market/mutations/useBuildTx.js.map +1 -1
  462. package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js +0 -10
  463. package/dist/hooks/swap/prices/market/mutations/useSendMarketSwapTx.js.map +1 -1
  464. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +0 -10
  465. package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
  466. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js +0 -10
  467. package/dist/hooks/swap/prices/market/queries/useSpenderAndContracts.js.map +1 -1
  468. package/dist/hooks/swap/prices/usePricesParams.d.ts +1 -1
  469. package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
  470. package/dist/hooks/swap/prices/usePricesParams.js +87 -42
  471. package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
  472. package/dist/hooks/swap/prices/useSwapPrices.js +0 -11
  473. package/dist/hooks/swap/prices/useSwapPrices.js.map +1 -1
  474. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js +0 -10
  475. package/dist/hooks/swap/prices/useTokenInputsFromPrice.js.map +1 -1
  476. package/dist/hooks/swap/tradeFlow/common/errors.js +0 -10
  477. package/dist/hooks/swap/tradeFlow/common/errors.js.map +1 -1
  478. package/dist/hooks/swap/tradeFlow/common/types.d.ts +0 -1
  479. package/dist/hooks/swap/tradeFlow/common/types.d.ts.map +1 -1
  480. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts +18 -0
  481. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.d.ts.map +1 -0
  482. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js +190 -0
  483. package/dist/hooks/swap/tradeFlow/common/useApproveOrPermit.js.map +1 -0
  484. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.d.ts +20 -0
  485. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.d.ts.map +1 -0
  486. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js +81 -0
  487. package/dist/hooks/swap/tradeFlow/common/useConstructGasParams.js.map +1 -0
  488. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts +53 -0
  489. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.d.ts.map +1 -0
  490. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js +308 -0
  491. package/dist/hooks/swap/tradeFlow/common/useSignPermit1Or2.js.map +1 -0
  492. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts +25 -0
  493. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.d.ts.map +1 -0
  494. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js +103 -0
  495. package/dist/hooks/swap/tradeFlow/common/useTrackedPrice.js.map +1 -0
  496. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts +2 -0
  497. package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
  498. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +333 -408
  499. package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
  500. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts +3 -0
  501. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.d.ts.map +1 -1
  502. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js +33 -21
  503. package/dist/hooks/swap/tradeFlow/useDeltaSwapStep.js.map +1 -1
  504. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts +4 -0
  505. package/dist/hooks/swap/tradeFlow/useMarketFlow.d.ts.map +1 -1
  506. package/dist/hooks/swap/tradeFlow/useMarketFlow.js +296 -374
  507. package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
  508. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts +3 -0
  509. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
  510. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +34 -22
  511. package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
  512. package/dist/hooks/tokens/allowance/types.d.ts +3 -0
  513. package/dist/hooks/tokens/allowance/types.d.ts.map +1 -1
  514. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js +0 -10
  515. package/dist/hooks/tokens/allowance/useGenericTokenAllowance.js.map +1 -1
  516. package/dist/hooks/tokens/allowance/useTokenAllowance.d.ts +1 -1
  517. package/dist/hooks/tokens/allowance/useTokenAllowance.d.ts.map +1 -1
  518. package/dist/hooks/tokens/allowance/useTokenAllowance.js +32 -38
  519. package/dist/hooks/tokens/allowance/useTokenAllowance.js.map +1 -1
  520. package/dist/hooks/tokens/balances/queries.js +0 -10
  521. package/dist/hooks/tokens/balances/queries.js.map +1 -1
  522. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js +0 -10
  523. package/dist/hooks/tokens/balances/useAttachTokenBalanceMultichain.js.map +1 -1
  524. package/dist/hooks/tokens/balances/useInvalidateTokenData.d.ts.map +1 -1
  525. package/dist/hooks/tokens/balances/useInvalidateTokenData.js +0 -10
  526. package/dist/hooks/tokens/balances/useInvalidateTokenData.js.map +1 -1
  527. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.d.ts +1 -0
  528. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.d.ts.map +1 -1
  529. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js +41 -11
  530. package/dist/hooks/tokens/balances/useIsInsufficientTokenBalance.js.map +1 -1
  531. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js +0 -10
  532. package/dist/hooks/tokens/balances/useMultichainTokenBalances.js.map +1 -1
  533. package/dist/hooks/tokens/balances/useTokenBalance.js +0 -10
  534. package/dist/hooks/tokens/balances/useTokenBalance.js.map +1 -1
  535. package/dist/hooks/tokens/prices/queries.js +0 -10
  536. package/dist/hooks/tokens/prices/queries.js.map +1 -1
  537. package/dist/hooks/tokens/prices/useMultichainTokenPrices.js +0 -10
  538. package/dist/hooks/tokens/prices/useMultichainTokenPrices.js.map +1 -1
  539. package/dist/hooks/tokens/prices/useTokenPrices.js +0 -10
  540. package/dist/hooks/tokens/prices/useTokenPrices.js.map +1 -1
  541. package/dist/hooks/tokens/useNativeToken.js +0 -10
  542. package/dist/hooks/tokens/useNativeToken.js.map +1 -1
  543. package/dist/hooks/tokens/useTokenLists.d.ts +1 -0
  544. package/dist/hooks/tokens/useTokenLists.d.ts.map +1 -1
  545. package/dist/hooks/tokens/useTokenLists.js +15 -12
  546. package/dist/hooks/tokens/useTokenLists.js.map +1 -1
  547. package/dist/hooks/tokens/useTokenTaxFee.d.ts +12 -0
  548. package/dist/hooks/tokens/useTokenTaxFee.d.ts.map +1 -0
  549. package/dist/hooks/tokens/useTokenTaxFee.js +54 -0
  550. package/dist/hooks/tokens/useTokenTaxFee.js.map +1 -0
  551. package/dist/hooks/tokens/useTokensByAddress.js +0 -10
  552. package/dist/hooks/tokens/useTokensByAddress.js.map +1 -1
  553. package/dist/hooks/tokens/useTokensFromAcross.js +0 -10
  554. package/dist/hooks/tokens/useTokensFromAcross.js.map +1 -1
  555. package/dist/hooks/txs/index.d.ts +1 -1
  556. package/dist/hooks/txs/mutations/useApprove.d.ts +5 -4
  557. package/dist/hooks/txs/mutations/useApprove.d.ts.map +1 -1
  558. package/dist/hooks/txs/mutations/useApprove.js +55 -49
  559. package/dist/hooks/txs/mutations/useApprove.js.map +1 -1
  560. package/dist/hooks/txs/mutations/useDepositWeth.d.ts.map +1 -1
  561. package/dist/hooks/txs/mutations/useDepositWeth.js +37 -37
  562. package/dist/hooks/txs/mutations/useDepositWeth.js.map +1 -1
  563. package/dist/hooks/txs/mutations/useSendTx.js +0 -10
  564. package/dist/hooks/txs/mutations/useSendTx.js.map +1 -1
  565. package/dist/hooks/txs/queries/useAwaitTx.js +0 -10
  566. package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
  567. package/dist/hooks/useAvailableCrosses.js +0 -10
  568. package/dist/hooks/useAvailableCrosses.js.map +1 -1
  569. package/dist/hooks/useBridgeInfo.js +0 -10
  570. package/dist/hooks/useBridgeInfo.js.map +1 -1
  571. package/dist/hooks/useCurrentChain.js +0 -10
  572. package/dist/hooks/useCurrentChain.js.map +1 -1
  573. package/dist/hooks/useDebouncedInputState.js +0 -10
  574. package/dist/hooks/useDebouncedInputState.js.map +1 -1
  575. package/dist/hooks/useEIP1559Enabled.d.ts +6 -0
  576. package/dist/hooks/useEIP1559Enabled.d.ts.map +1 -0
  577. package/dist/hooks/useEIP1559Enabled.js +31 -0
  578. package/dist/hooks/useEIP1559Enabled.js.map +1 -0
  579. package/dist/hooks/useGlobalDeltaEnabled.js +0 -10
  580. package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
  581. package/dist/hooks/useIsCrosschainPossible.js +0 -10
  582. package/dist/hooks/useIsCrosschainPossible.js.map +1 -1
  583. package/dist/hooks/useMinViemClient.js +0 -10
  584. package/dist/hooks/useMinViemClient.js.map +1 -1
  585. package/dist/hooks/useSDK.js +0 -10
  586. package/dist/hooks/useSDK.js.map +1 -1
  587. package/dist/hooks/useSlippage.js +0 -10
  588. package/dist/hooks/useSlippage.js.map +1 -1
  589. package/dist/index.d.ts +2 -18
  590. package/dist/index.d.ts.map +1 -1
  591. package/dist/index.js +0 -32
  592. package/dist/index.js.map +1 -1
  593. package/dist/lib/constants/delta.d.ts.map +1 -1
  594. package/dist/lib/constants/delta.js +3 -12
  595. package/dist/lib/constants/delta.js.map +1 -1
  596. package/dist/lib/constants/index.js +0 -10
  597. package/dist/lib/constants/index.js.map +1 -1
  598. package/dist/lib/constants/time.js +0 -10
  599. package/dist/lib/constants/time.js.map +1 -1
  600. package/dist/lib/constants/weth.d.ts.map +1 -1
  601. package/dist/lib/constants/weth.js +24 -27
  602. package/dist/lib/constants/weth.js.map +1 -1
  603. package/dist/lib/ipfs.js +0 -10
  604. package/dist/lib/ipfs.js.map +1 -1
  605. package/dist/lib/queryClient.js +0 -10
  606. package/dist/lib/queryClient.js.map +1 -1
  607. package/dist/lib/utils/copyToClipboard.d.ts +2 -0
  608. package/dist/lib/utils/copyToClipboard.d.ts.map +1 -0
  609. package/dist/lib/utils/copyToClipboard.js +14 -0
  610. package/dist/lib/utils/copyToClipboard.js.map +1 -0
  611. package/dist/lib/utils/delta.js +0 -10
  612. package/dist/lib/utils/delta.js.map +1 -1
  613. package/dist/lib/utils/dexes.js +0 -10
  614. package/dist/lib/utils/dexes.js.map +1 -1
  615. package/dist/lib/utils/explorer.js +0 -10
  616. package/dist/lib/utils/explorer.js.map +1 -1
  617. package/dist/lib/utils/fee.js +0 -10
  618. package/dist/lib/utils/fee.js.map +1 -1
  619. package/dist/lib/utils/formatFiatPrice.js +0 -10
  620. package/dist/lib/utils/formatFiatPrice.js.map +1 -1
  621. package/dist/lib/utils/formatTokenBalance.js +0 -10
  622. package/dist/lib/utils/formatTokenBalance.js.map +1 -1
  623. package/dist/lib/utils/index.js +0 -10
  624. package/dist/lib/utils/index.js.map +1 -1
  625. package/dist/lib/utils/logger.js +21 -8
  626. package/dist/lib/utils/logger.js.map +1 -1
  627. package/dist/lib/utils/price.js +1 -11
  628. package/dist/lib/utils/price.js.map +1 -1
  629. package/dist/lib/utils/priceImpact.js +0 -10
  630. package/dist/lib/utils/priceImpact.js.map +1 -1
  631. package/dist/lib/utils/providerErrors.d.ts +12 -0
  632. package/dist/lib/utils/providerErrors.d.ts.map +1 -0
  633. package/dist/lib/utils/providerErrors.js +29 -0
  634. package/dist/lib/utils/providerErrors.js.map +1 -0
  635. package/dist/lib/utils/rate.js +0 -10
  636. package/dist/lib/utils/rate.js.map +1 -1
  637. package/dist/lib/utils/removeZeroDecimals.js +0 -10
  638. package/dist/lib/utils/removeZeroDecimals.js.map +1 -1
  639. package/dist/lib/utils/slippage.d.ts +5 -0
  640. package/dist/lib/utils/slippage.d.ts.map +1 -1
  641. package/dist/lib/utils/slippage.js +0 -10
  642. package/dist/lib/utils/slippage.js.map +1 -1
  643. package/dist/lib/utils/toDecimal.d.ts +1 -0
  644. package/dist/lib/utils/toDecimal.d.ts.map +1 -1
  645. package/dist/lib/utils/toDecimal.js +9 -14
  646. package/dist/lib/utils/toDecimal.js.map +1 -1
  647. package/dist/lib/utils/toasts.d.ts +2 -0
  648. package/dist/lib/utils/toasts.d.ts.map +1 -1
  649. package/dist/lib/utils/toasts.js +48 -37
  650. package/dist/lib/utils/toasts.js.map +1 -1
  651. package/dist/lib/web3/privy/config.js +1 -11
  652. package/dist/lib/web3/privy/config.js.map +1 -1
  653. package/dist/lib/web3/wagmi/config.d.ts +333 -35
  654. package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
  655. package/dist/lib/web3/wagmi/config.js +1 -11
  656. package/dist/lib/web3/wagmi/config.js.map +1 -1
  657. package/dist/lib/web3/wagmi/constants.d.ts +333 -35
  658. package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
  659. package/dist/lib/web3/wagmi/constants.js +5 -14
  660. package/dist/lib/web3/wagmi/constants.js.map +1 -1
  661. package/dist/lib/web3/wagmi/supportedChains.d.ts +1 -1
  662. package/dist/lib/web3/wagmi/supportedChains.d.ts.map +1 -1
  663. package/dist/lib/web3/wagmi/transports.d.ts.map +1 -1
  664. package/dist/lib/web3/wagmi/transports.js +3 -12
  665. package/dist/lib/web3/wagmi/transports.js.map +1 -1
  666. package/dist/lib/web3/wagmi/utils.js +0 -10
  667. package/dist/lib/web3/wagmi/utils.js.map +1 -1
  668. package/dist/styles.css +2965 -184
  669. package/dist/test/Configurator.d.ts.map +1 -1
  670. package/dist/test/TestButton.d.ts +2 -0
  671. package/dist/test/TestButton.d.ts.map +1 -0
  672. package/dist/test/logger-demo.d.ts +5 -0
  673. package/dist/test/logger-demo.d.ts.map +1 -0
  674. package/dist/tokens/blacklist.js +0 -10
  675. package/dist/tokens/blacklist.js.map +1 -1
  676. package/dist/tokens/constants.d.ts.map +1 -1
  677. package/dist/tokens/constants.js +4 -13
  678. package/dist/tokens/constants.js.map +1 -1
  679. package/dist/tokens/constructor.js +0 -10
  680. package/dist/tokens/constructor.js.map +1 -1
  681. package/dist/tokens/defaultTokens.d.ts.map +1 -1
  682. package/dist/tokens/defaultTokens.js +44 -32
  683. package/dist/tokens/defaultTokens.js.map +1 -1
  684. package/dist/tokens/hooks.js +0 -10
  685. package/dist/tokens/hooks.js.map +1 -1
  686. package/dist/tokens/lists/constants.js +0 -10
  687. package/dist/tokens/lists/constants.js.map +1 -1
  688. package/dist/tokens/lists/download.js +0 -10
  689. package/dist/tokens/lists/download.js.map +1 -1
  690. package/dist/tokens/lists/hooks.js +0 -10
  691. package/dist/tokens/lists/hooks.js.map +1 -1
  692. package/dist/tokens/lists/lists.json.d.ts +21 -0
  693. package/dist/tokens/lists/lists.json.js +21 -0
  694. package/dist/tokens/lists/lists.json.js.map +1 -1
  695. package/dist/tokens/lists/state/observer.js +0 -10
  696. package/dist/tokens/lists/state/observer.js.map +1 -1
  697. package/dist/tokens/lists/state/tokenListsActionsAtom.js +2 -13
  698. package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
  699. package/dist/tokens/lists/state/tokenListsStateAtom.d.ts +10 -6
  700. package/dist/tokens/lists/state/tokenListsStateAtom.d.ts.map +1 -1
  701. package/dist/tokens/lists/state/tokenListsStateAtom.js +2 -14
  702. package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
  703. package/dist/tokens/lists/state/types.d.ts +3 -2
  704. package/dist/tokens/lists/state/types.d.ts.map +1 -1
  705. package/dist/tokens/lists/utils.js +0 -10
  706. package/dist/tokens/lists/utils.js.map +1 -1
  707. package/dist/tokens/overrides.js +0 -10
  708. package/dist/tokens/overrides.js.map +1 -1
  709. package/dist/tokens/queries.js +0 -10
  710. package/dist/tokens/queries.js.map +1 -1
  711. package/dist/tokens/stabeCoins/hooks.js +0 -10
  712. package/dist/tokens/stabeCoins/hooks.js.map +1 -1
  713. package/dist/tokens/stabeCoins/index.js +0 -10
  714. package/dist/tokens/stabeCoins/index.js.map +1 -1
  715. package/dist/tokens/state/constructTokens.js +0 -10
  716. package/dist/tokens/state/constructTokens.js.map +1 -1
  717. package/dist/tokens/state/tokensAtom.js +2 -13
  718. package/dist/tokens/state/tokensAtom.js.map +1 -1
  719. package/dist/tokens/utils/areTokensSame.js +0 -10
  720. package/dist/tokens/utils/areTokensSame.js.map +1 -1
  721. package/dist/tokens/utils/eth.js +0 -10
  722. package/dist/tokens/utils/eth.js.map +1 -1
  723. package/dist/tokens/utils/filtering.js +0 -10
  724. package/dist/tokens/utils/filtering.js.map +1 -1
  725. package/dist/tokens/utils/sets.js +0 -10
  726. package/dist/tokens/utils/sets.js.map +1 -1
  727. package/dist/tokens/utils/sorting.js +0 -10
  728. package/dist/tokens/utils/sorting.js.map +1 -1
  729. package/dist/widget/ConnectWalletDrawerButton.d.ts +7 -0
  730. package/dist/widget/ConnectWalletDrawerButton.d.ts.map +1 -0
  731. package/dist/widget/ConnectWalletDrawerButton.js +95 -0
  732. package/dist/widget/ConnectWalletDrawerButton.js.map +1 -0
  733. package/dist/widget/DevTools.d.ts +2 -0
  734. package/dist/widget/DevTools.d.ts.map +1 -0
  735. package/dist/widget/Toaster.d.ts +2 -0
  736. package/dist/widget/Toaster.d.ts.map +1 -0
  737. package/dist/widget/Toaster.js +24 -0
  738. package/dist/widget/Toaster.js.map +1 -0
  739. package/dist/widget/TradeFlowButton.d.ts +16 -0
  740. package/dist/widget/TradeFlowButton.d.ts.map +1 -0
  741. package/dist/widget/TradeFlowButton.js +474 -0
  742. package/dist/widget/TradeFlowButton.js.map +1 -0
  743. package/dist/widget/Updaters.d.ts.map +1 -1
  744. package/dist/widget/Updaters.js +6 -12
  745. package/dist/widget/Updaters.js.map +1 -1
  746. package/dist/widget/across/utils.js +0 -10
  747. package/dist/widget/across/utils.js.map +1 -1
  748. package/dist/widget/button/hooks/useWidgetButtonExtraProps.d.ts.map +1 -1
  749. package/dist/widget/button/hooks/useWidgetButtonExtraProps.js +63 -40
  750. package/dist/widget/button/hooks/useWidgetButtonExtraProps.js.map +1 -1
  751. package/dist/widget/constants.d.ts +1 -0
  752. package/dist/widget/constants.d.ts.map +1 -1
  753. package/dist/widget/constants.js +2 -11
  754. package/dist/widget/constants.js.map +1 -1
  755. package/dist/widget/index.d.ts +1 -1
  756. package/dist/widget/index.d.ts.map +1 -1
  757. package/dist/widget/index.js +146 -486
  758. package/dist/widget/index.js.map +1 -1
  759. package/dist/widget/inputs/hooks/types.d.ts +1 -1
  760. package/dist/widget/inputs/hooks/types.d.ts.map +1 -1
  761. package/dist/widget/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
  762. package/dist/widget/inputs/hooks/useTokenFromInputProps.js +66 -64
  763. package/dist/widget/inputs/hooks/useTokenFromInputProps.js.map +1 -1
  764. package/dist/widget/inputs/hooks/useTokenSwitcherProps.js +0 -10
  765. package/dist/widget/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
  766. package/dist/widget/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
  767. package/dist/widget/inputs/hooks/useTokenToInputProps.js +46 -30
  768. package/dist/widget/inputs/hooks/useTokenToInputProps.js.map +1 -1
  769. package/dist/widget/inputs/state/inputAmountAtom.js +6 -20
  770. package/dist/widget/inputs/state/inputAmountAtom.js.map +1 -1
  771. package/dist/widget/inputs/state/selectedTokenActionsAtom.js +7 -20
  772. package/dist/widget/inputs/state/selectedTokenActionsAtom.js.map +1 -1
  773. package/dist/widget/inputs/state/selectedTokenAtom.js +2 -15
  774. package/dist/widget/inputs/state/selectedTokenAtom.js.map +1 -1
  775. package/dist/widget/inputs/state/subscriptions.js +0 -10
  776. package/dist/widget/inputs/state/subscriptions.js.map +1 -1
  777. package/dist/widget/state/chainToAtom.d.ts +2 -2
  778. package/dist/widget/state/chainToAtom.d.ts.map +1 -1
  779. package/dist/widget/state/chainToAtom.js +2 -13
  780. package/dist/widget/state/chainToAtom.js.map +1 -1
  781. package/dist/widget/state/configActionsAtom.d.ts.map +1 -1
  782. package/dist/widget/state/configActionsAtom.js +5 -14
  783. package/dist/widget/state/configActionsAtom.js.map +1 -1
  784. package/dist/widget/state/configAtom.d.ts +4 -1
  785. package/dist/widget/state/configAtom.d.ts.map +1 -1
  786. package/dist/widget/state/configAtom.js +3 -13
  787. package/dist/widget/state/configAtom.js.map +1 -1
  788. package/dist/widget/state/containerAtom.js +2 -13
  789. package/dist/widget/state/containerAtom.js.map +1 -1
  790. package/dist/widget/state/currentSwapInputAtom.js +1 -12
  791. package/dist/widget/state/currentSwapInputAtom.js.map +1 -1
  792. package/dist/widget/state/externalProviderAtom.d.ts +23 -0
  793. package/dist/widget/state/externalProviderAtom.d.ts.map +1 -0
  794. package/dist/widget/state/externalProviderAtom.js +20 -0
  795. package/dist/widget/state/externalProviderAtom.js.map +1 -0
  796. package/dist/widget/state/isCrosschainAtom.js +2 -13
  797. package/dist/widget/state/isCrosschainAtom.js.map +1 -1
  798. package/dist/widget/subscriptions.js +0 -10
  799. package/dist/widget/subscriptions.js.map +1 -1
  800. package/dist/widget/swapDetails/fees.js +0 -10
  801. package/dist/widget/swapDetails/fees.js.map +1 -1
  802. package/dist/widget/swapDetails/orderRouting.js +0 -10
  803. package/dist/widget/swapDetails/orderRouting.js.map +1 -1
  804. package/dist/widget/swapDetails/priceImpact.js +0 -10
  805. package/dist/widget/swapDetails/priceImpact.js.map +1 -1
  806. package/dist/widget/swapDetails/useSwapDetailsListProps.js +0 -10
  807. package/dist/widget/swapDetails/useSwapDetailsListProps.js.map +1 -1
  808. package/dist/widget/swapDetails/youGet.d.ts.map +1 -1
  809. package/dist/widget/swapDetails/youGet.js +2 -13
  810. package/dist/widget/swapDetails/youGet.js.map +1 -1
  811. package/dist/widget/types.d.ts +4 -0
  812. package/dist/widget/types.d.ts.map +1 -1
  813. package/package.json +9 -66
  814. package/dist/components/ui/counter.js +0 -43
  815. package/dist/components/ui/counter.js.map +0 -1
  816. package/dist/components/ui/header.js +0 -31
  817. package/dist/components/ui/header.js.map +0 -1
  818. package/dist/components/ui/select.js +0 -437
  819. package/dist/components/ui/select.js.map +0 -1
  820. package/dist/components/ui/vaul/browser.d.ts +0 -8
  821. package/dist/components/ui/vaul/browser.d.ts.map +0 -1
  822. package/dist/components/ui/vaul/browser.js +0 -37
  823. package/dist/components/ui/vaul/browser.js.map +0 -1
  824. package/dist/components/ui/vaul/constants.d.ts +0 -12
  825. package/dist/components/ui/vaul/constants.d.ts.map +0 -1
  826. package/dist/components/ui/vaul/constants.js +0 -24
  827. package/dist/components/ui/vaul/constants.js.map +0 -1
  828. package/dist/components/ui/vaul/context.d.ts +0 -38
  829. package/dist/components/ui/vaul/context.d.ts.map +0 -1
  830. package/dist/components/ui/vaul/context.js +0 -72
  831. package/dist/components/ui/vaul/context.js.map +0 -1
  832. package/dist/components/ui/vaul/helpers.d.ts +0 -17
  833. package/dist/components/ui/vaul/helpers.d.ts.map +0 -1
  834. package/dist/components/ui/vaul/helpers.js +0 -87
  835. package/dist/components/ui/vaul/helpers.js.map +0 -1
  836. package/dist/components/ui/vaul/index.d.ts +0 -140
  837. package/dist/components/ui/vaul/index.d.ts.map +0 -1
  838. package/dist/components/ui/vaul/index.js +0 -807
  839. package/dist/components/ui/vaul/index.js.map +0 -1
  840. package/dist/components/ui/vaul/types.d.ts +0 -7
  841. package/dist/components/ui/vaul/types.d.ts.map +0 -1
  842. package/dist/components/ui/vaul/use-composed-refs.d.ts +0 -14
  843. package/dist/components/ui/vaul/use-composed-refs.d.ts.map +0 -1
  844. package/dist/components/ui/vaul/use-composed-refs.js +0 -28
  845. package/dist/components/ui/vaul/use-composed-refs.js.map +0 -1
  846. package/dist/components/ui/vaul/use-controllable-state.d.ts +0 -9
  847. package/dist/components/ui/vaul/use-controllable-state.d.ts.map +0 -1
  848. package/dist/components/ui/vaul/use-controllable-state.js +0 -134
  849. package/dist/components/ui/vaul/use-controllable-state.js.map +0 -1
  850. package/dist/components/ui/vaul/use-position-fixed.d.ts +0 -19
  851. package/dist/components/ui/vaul/use-position-fixed.d.ts.map +0 -1
  852. package/dist/components/ui/vaul/use-position-fixed.js +0 -109
  853. package/dist/components/ui/vaul/use-position-fixed.js.map +0 -1
  854. package/dist/components/ui/vaul/use-prevent-scroll.d.ts +0 -18
  855. package/dist/components/ui/vaul/use-prevent-scroll.d.ts.map +0 -1
  856. package/dist/components/ui/vaul/use-prevent-scroll.js +0 -182
  857. package/dist/components/ui/vaul/use-prevent-scroll.js.map +0 -1
  858. package/dist/components/ui/vaul/use-scale-background.d.ts +0 -2
  859. package/dist/components/ui/vaul/use-scale-background.d.ts.map +0 -1
  860. package/dist/components/ui/vaul/use-scale-background.js +0 -68
  861. package/dist/components/ui/vaul/use-scale-background.js.map +0 -1
  862. package/dist/components/ui/vaul/use-snap-points.d.ts +0 -32
  863. package/dist/components/ui/vaul/use-snap-points.d.ts.map +0 -1
  864. package/dist/components/ui/vaul/use-snap-points.js +0 -222
  865. package/dist/components/ui/vaul/use-snap-points.js.map +0 -1
  866. package/dist/components/widget/Informative/Informative.js +0 -33
  867. package/dist/components/widget/Informative/Informative.js.map +0 -1
  868. package/dist/components/widget/NetworkIcon/assets/sqr/polygonZkEVM.svg.js +0 -12
  869. package/dist/components/widget/NetworkIcon/assets/sqr/polygonZkEVM.svg.js.map +0 -1
  870. package/dist/components/widget/SwapModeSwitcher/state/types.js +0 -11
  871. package/dist/components/widget/SwapModeSwitcher/state/types.js.map +0 -1
  872. package/dist/components/widget/TokenBadge/types.js +0 -11
  873. package/dist/components/widget/TokenBadge/types.js.map +0 -1
  874. package/dist/components/widget/TradeOverview/assets/spinner.svg.js.map +0 -1
  875. package/dist/hooks/permit/hooks/useGetPermitInfo.d.ts.map +0 -1
  876. package/dist/hooks/permit/hooks/useGetPermitInfo.js.map +0 -1
  877. package/dist/hooks/permit/hooks/useGetSafePermitInfo.d.ts.map +0 -1
  878. package/dist/hooks/permit/hooks/useGetSafePermitInfo.js.map +0 -1
  879. package/dist/hooks/permit/hooks/usePermit1Nonce.d.ts.map +0 -1
  880. package/dist/hooks/permit/hooks/usePermit1Nonce.js.map +0 -1
  881. package/dist/hooks/permit/hooks/useSignArbitraryTypedData.d.ts.map +0 -1
  882. package/dist/hooks/permit/hooks/useSignPermit.d.ts.map +0 -1
  883. package/dist/hooks/permit/hooks/useSignPermit.js.map +0 -1
  884. package/dist/hooks/permit/hooks/useSignTokenFromPermit1.d.ts.map +0 -1
  885. package/dist/hooks/permit/hooks/useSignTokenFromPermit1.js.map +0 -1
  886. package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.d.ts +0 -10
  887. package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.d.ts.map +0 -1
  888. package/dist/hooks/permit/hooks/useTokenFromPermit1Nonce.js.map +0 -1
  889. package/dist/hooks/permit/hooks/useTokenFromPermitInfo.d.ts.map +0 -1
  890. package/dist/hooks/permit/hooks/useTokenFromPermitInfo.js.map +0 -1
  891. package/dist/hooks/permit/hooks/useTryToSignPermit1.d.ts.map +0 -1
  892. package/dist/hooks/permit/hooks/useTryToSignPermit1.js.map +0 -1
  893. package/dist/hooks/txs/index.js +0 -13
  894. package/dist/hooks/txs/index.js.map +0 -1
  895. package/dist/styles/global.css.js +0 -4
  896. package/dist/styles/global.css.js.map +0 -1
  897. package/dist/test/connect/AccountDisplay.js +0 -93
  898. package/dist/test/connect/AccountDisplay.js.map +0 -1
  899. package/dist/test/connect/App.js +0 -78
  900. package/dist/test/connect/App.js.map +0 -1
  901. package/dist/test/connect/ConnectWallet.js +0 -110
  902. package/dist/test/connect/ConnectWallet.js.map +0 -1
  903. package/dist/test/connect/WagmiProfile.js +0 -406
  904. package/dist/test/connect/WagmiProfile.js.map +0 -1
  905. package/dist/test/connect/WalletActions.js +0 -324
  906. package/dist/test/connect/WalletActions.js.map +0 -1
  907. package/dist/tokens/state/types.js +0 -11
  908. package/dist/tokens/state/types.js.map +0 -1
  909. /package/dist/{components/widget/TradeOverview/assets → assets}/spinner.svg.js +0 -0
  910. /package/dist/hooks/permit/hooks/{useSignArbitraryTypedData.d.ts → common/useSignArbitraryTypedData.d.ts} +0 -0
@@ -1,15 +1,5 @@
1
1
  import 'viem';
2
2
 
3
- globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
4
- cache: /* @__PURE__ */ new Map(),
5
- get(name, inst) {
6
- if (this.cache.has(name)) {
7
- return this.cache.get(name);
8
- }
9
- this.cache.set(name, inst);
10
- return inst;
11
- }
12
- };
13
3
  const PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
14
4
  const PERMIT2_DOMAIN_NAME = "Permit2";
15
5
  const PERMIT2_TOKEN_PERMISSIONS = [{
@@ -223,5 +213,5 @@ function constructPermitTypedData(input) {
223
213
  throw new Error(`Unsupported permit input type`);
224
214
  }
225
215
 
226
- export { constructPermitTypedData };
216
+ export { PERMIT2_ADDRESS, constructPermitTypedData };
227
217
  //# sourceMappingURL=construct.js.map
@@ -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\nconst PERMIT2_ADDRESS = \"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 Permit1PermitInput {\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 permitInfo?: undefined;\n token: Address;\n spender: Address;\n nonce: bigint;\n amount: bigint;\n expiration: bigint;\n chainId: number;\n}\n\nexport type PermitTypedDataInput =\n | Permit1PermitInput\n | DaiPermitInput\n | 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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"}
@@ -0,0 +1,8 @@
1
+ export declare const PERMIT_VALIDITY_BUFFER: number;
2
+ export declare const ALLOWANCE_VALIDITY_BUFFER: number;
3
+ export declare const DELTA_DEFAULT_EXPIRY: number;
4
+ export declare function produceSignatureDeadline(): bigint;
5
+ export declare function produceAllowanceDeadline(): bigint;
6
+ export declare function produceDeltaOrderDeadline(): bigint;
7
+ export declare function toDeadline(expiration: number): bigint;
8
+ //# sourceMappingURL=deadlines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadlines.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/deadlines.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,QAA0B,CAAC;AAC9D,eAAO,MAAM,yBAAyB,QAA8B,CAAC;AAErE,eAAO,MAAM,oBAAoB,QAAiB,CAAC;AAGnD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAGD,wBAAgB,wBAAwB,IAAI,MAAM,CAEjD;AAKD,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAGD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAIrD"}
@@ -0,0 +1,15 @@
1
+ const PERMIT_VALIDITY_BUFFER = 3 * 24 * 60 * 60 * 1e3;
2
+ const DELTA_DEFAULT_EXPIRY = 60 * 60 * 1e3;
3
+ function produceSignatureDeadline() {
4
+ return toDeadline(PERMIT_VALIDITY_BUFFER);
5
+ }
6
+ function produceDeltaOrderDeadline() {
7
+ return toDeadline(DELTA_DEFAULT_EXPIRY);
8
+ }
9
+ function toDeadline(expiration) {
10
+ const deadline = Math.floor((Date.now() + expiration) / 1e3);
11
+ return BigInt(deadline);
12
+ }
13
+
14
+ export { DELTA_DEFAULT_EXPIRY, PERMIT_VALIDITY_BUFFER, produceDeltaOrderDeadline, produceSignatureDeadline, toDeadline };
15
+ //# sourceMappingURL=deadlines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deadlines.js","sources":["../../../../src/hooks/permit/utils/deadlines.ts"],"sourcesContent":["export const PERMIT_VALIDITY_BUFFER = 3 * 24 * 60 * 60 * 1000; // 3 days in milliseconds\nexport const ALLOWANCE_VALIDITY_BUFFER = 10 * PERMIT_VALIDITY_BUFFER; // 30 days in milliseconds\n// default deadline = 1 hour for Delta Order\nexport const DELTA_DEFAULT_EXPIRY = 60 * 60 * 1000; // 1 hour in milliseconds\n\n// deadline for Permit1 and Permit2 signature expiration to use up a signed Permit)\nexport function produceSignatureDeadline(): bigint {\n return toDeadline(PERMIT_VALIDITY_BUFFER);\n}\n\n// deadline for Token allowance expiration in Permit2\nexport function produceAllowanceDeadline(): bigint {\n return toDeadline(ALLOWANCE_VALIDITY_BUFFER);\n}\n\n// deadline for Permit2 TransferFrom signature expiration,\n// and for Delta Order deadline;\n// they must match exactly\nexport function produceDeltaOrderDeadline(): bigint {\n return toDeadline(DELTA_DEFAULT_EXPIRY);\n}\n\n// given expiration in milliseconds, return the deadline(now+expiration) in seconds\nexport function toDeadline(expiration: number): bigint {\n const deadline = Math.floor((Date.now() + expiration) / 1000);\n\n return BigInt(deadline);\n}\n"],"names":["PERMIT_VALIDITY_BUFFER","DELTA_DEFAULT_EXPIRY","produceSignatureDeadline","toDeadline","produceDeltaOrderDeadline","expiration","deadline","Math","floor","Date","now","BigInt"],"mappings":"AAAO,MAAMA,sBAAAA,GAAyB,CAAA,GAAI,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK;AAGlD,MAAMC,oBAAAA,GAAuB,KAAK,EAAA,GAAK;AAGvC,SAASC,wBAAAA,GAAmC;AACjD,EAAA,OAAOC,WAAWH,sBAAsB,CAAA;AAC1C;AAUO,SAASI,yBAAAA,GAAoC;AAClD,EAAA,OAAOD,WAAWF,oBAAoB,CAAA;AACxC;AAGO,SAASE,WAAWE,UAAAA,EAA4B;AACrD,EAAA,MAAMC,WAAWC,IAAAA,CAAKC,KAAAA,CAAAA,CAAOC,KAAKC,GAAAA,EAAI,GAAIL,cAAc,GAAI,CAAA;AAE5D,EAAA,OAAOM,OAAOL,QAAQ,CAAA;AACxB;;;;"}
@@ -6,16 +6,6 @@ import { getDomainFromEIP712Domain } from './utils.js';
6
6
  import { isETHaddress } from '../../../tokens/utils/eth.js';
7
7
  import { guessDomainParams } from './domainSeparator.js';
8
8
 
9
- globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
10
- cache: /* @__PURE__ */ new Map(),
11
- get(name, inst) {
12
- if (this.cache.has(name)) {
13
- return this.cache.get(name);
14
- }
15
- this.cache.set(name, inst);
16
- return inst;
17
- }
18
- };
19
9
  const NotDetectedResult = {
20
10
  type: "NOT_DETECTED",
21
11
  domain: null
@@ -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,15 +1,5 @@
1
1
  import { toHex, domainSeparator } from 'viem';
2
2
 
3
- globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
4
- cache: /* @__PURE__ */ new Map(),
5
- get(name, inst) {
6
- if (this.cache.has(name)) {
7
- return this.cache.get(name);
8
- }
9
- this.cache.set(name, inst);
10
- return inst;
11
- }
12
- };
13
3
  function getDomainSeparatorVersionChain({
14
4
  name,
15
5
  version,
@@ -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":"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"}
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":"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"}
@@ -1,11 +1,29 @@
1
- import { Hash } from 'viem';
2
- import { DaiPermitInput, Permit1PermitInput } from './construct';
3
- type EncodePermitMethodArgsInputEIP2612 = Pick<Permit1PermitInput, "owner" | "spender" | "value" | "nonce" | "deadline" | "type"> & {
1
+ import { Address, Hash } from 'viem';
2
+ import { DaiPermitInput, Permit1Input, Permit2Input } from './construct';
3
+ type EncodePermitMethodArgsInputEIP2612 = Pick<Permit1Input, "owner" | "spender" | "value" | "nonce" | "deadline" | "type"> & {
4
4
  signature: Hash;
5
5
  };
6
6
  type EncodePermitMethodArgsInputDAI = Pick<DaiPermitInput, "holder" | "spender" | "nonce" | "expiry" | "allowed" | "type"> & {
7
7
  signature: Hash;
8
8
  };
9
- export declare function encodePermitMethodArgs(input: EncodePermitMethodArgsInputEIP2612 | EncodePermitMethodArgsInputDAI): Hash;
9
+ export declare function encodePermit1MethodArgs(input: EncodePermitMethodArgsInputEIP2612 | EncodePermitMethodArgsInputDAI): Hash;
10
+ type EncodePermitMethodArgsInputPermit2TransferFrom = Pick<Permit2Input, "token" | "spender" | "nonce" | "amount" | "expiration" | "chainId"> & {
11
+ variant: "transferFrom";
12
+ signature: Hash;
13
+ owner: Address;
14
+ };
15
+ export declare function encodePermit2TransferFromMethodArgs(input: EncodePermitMethodArgsInputPermit2TransferFrom): Hash;
16
+ /**
17
+ * Builds the 96‑byte payload required by Permit2’s `permitTransferFrom`
18
+ * Delta contract (bytes32 nonce · bytes64 signature).
19
+ *
20
+ * @param sigData.nonce – numeric nonce as a bigint
21
+ * @param sigData.signature – compact 64‑byte (compact) signature (0x…128 hex digits)
22
+ * @returns 0x‑prefixed hex string, length = 2 + 96 × 2 = 194 chars
23
+ */
24
+ export declare function encodePermit2TransferFromSigDataForDelta(sigData: {
25
+ nonce: bigint;
26
+ signature: Hash;
27
+ }): Hash;
10
28
  export {};
11
29
  //# sourceMappingURL=encodeArgs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encodeArgs.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtE,KAAK,kCAAkC,GAAG,IAAI,CAC5C,kBAAkB,EAClB,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAC9D,GAAG;IACF,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,KAAK,8BAA8B,GAAG,IAAI,CACxC,cAAc,EACd,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAC/D,GAAG;IACF,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AASF,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,kCAAkC,GAAG,8BAA8B,GACzE,IAAI,CAuBN"}
1
+ {"version":3,"file":"encodeArgs.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,IAAI,EACV,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E,KAAK,kCAAkC,GAAG,IAAI,CAC5C,YAAY,EACZ,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAC9D,GAAG;IACF,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,KAAK,8BAA8B,GAAG,IAAI,CACxC,cAAc,EACd,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAC/D,GAAG;IACF,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AASF,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,kCAAkC,GAAG,8BAA8B,GACzE,IAAI,CAyBN;AAID,KAAK,8CAA8C,GAAG,IAAI,CACxD,YAAY,EACZ,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,YAAY,GAAG,SAAS,CACpE,GAAG;IACF,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAMF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,8CAA8C,GACpD,IAAI,CAqBN;AAED;;;;;;;GAOG;AACH,wBAAgB,wCAAwC,CAAC,OAAO,EAAE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB,GAAG,IAAI,CAUP"}
@@ -1,19 +1,9 @@
1
- import { parseSignature, encodeAbiParameters } from 'viem';
2
- import { EIP_2612_PERMIT_ABI, DAI_PERMIT_ABI } from './abi.js';
1
+ import { encodeAbiParameters, parseSignature, toHex, concatHex } from 'viem';
2
+ import { EIP_2612_PERMIT_ABI, DAI_PERMIT_ABI, PERMIT2_ABI } from './abi.js';
3
3
 
4
- globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
5
- cache: /* @__PURE__ */ new Map(),
6
- get(name, inst) {
7
- if (this.cache.has(name)) {
8
- return this.cache.get(name);
9
- }
10
- this.cache.set(name, inst);
11
- return inst;
12
- }
13
- };
14
4
  const EIP_2612_PERMIT_PARAMETERS = EIP_2612_PERMIT_ABI.find((abiItem) => abiItem.name === "permit").inputs;
15
5
  const DAI_PERMIT_PARAMETERS = DAI_PERMIT_ABI.find((abiItem) => abiItem.name === "permit").inputs;
16
- function encodePermitMethodArgs(input) {
6
+ function encodePermit1MethodArgs(input) {
17
7
  const {
18
8
  r,
19
9
  s,
@@ -24,6 +14,35 @@ function encodePermitMethodArgs(input) {
24
14
  }
25
15
  return encodeAbiParameters(DAI_PERMIT_PARAMETERS, [input.holder, input.spender, input.nonce, input.expiry, input.allowed, Number(v), r, s]);
26
16
  }
17
+ const PERMIT2_TRANSFER_FROM_PARAMETERS = PERMIT2_ABI.find((abiItem) => abiItem.name === "permitTransferFrom").inputs;
18
+ function encodePermit2TransferFromMethodArgs(input) {
19
+ return encodeAbiParameters(PERMIT2_TRANSFER_FROM_PARAMETERS, [
20
+ {
21
+ permitted: {
22
+ token: input.token,
23
+ amount: input.amount
24
+ },
25
+ nonce: input.nonce,
26
+ deadline: input.expiration
27
+ },
28
+ {
29
+ to: input.spender,
30
+ requestedAmount: input.amount
31
+ },
32
+ input.owner,
33
+ input.signature
34
+ // this could work with Multisig signature, because it's bytes without fixed length in ABI,
35
+ // but the Contract only supports compact signature for Permit2 TransferFrom,
36
+ // and compactSignature is made from full-length signature through parsing and serializing.
37
+ // Multisig signature is non-standard length and it can't be parsed
38
+ ]);
39
+ }
40
+ function encodePermit2TransferFromSigDataForDelta(sigData) {
41
+ const nonceHex = toHex(sigData.nonce, {
42
+ size: 32
43
+ });
44
+ return concatHex([nonceHex, sigData.signature]);
45
+ }
27
46
 
28
- export { encodePermitMethodArgs };
47
+ export { encodePermit1MethodArgs, encodePermit2TransferFromMethodArgs, encodePermit2TransferFromSigDataForDelta };
29
48
  //# sourceMappingURL=encodeArgs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"encodeArgs.js","sources":["../../../../src/hooks/permit/utils/encodeArgs.ts"],"sourcesContent":["import { encodeAbiParameters, parseSignature, type Hash } from \"viem\";\nimport { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI } from \"./abi\";\nimport type { DaiPermitInput, Permit1PermitInput } from \"./construct\";\n\ntype EncodePermitMethodArgsInputEIP2612 = Pick<\n Permit1PermitInput,\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 encodePermitMethodArgs(\n input: EncodePermitMethodArgsInputEIP2612 | EncodePermitMethodArgsInputDAI\n): Hash {\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"],"names":["EIP_2612_PERMIT_PARAMETERS","EIP_2612_PERMIT_ABI","find","abiItem","name","inputs","DAI_PERMIT_PARAMETERS","DAI_PERMIT_ABI","encodePermitMethodArgs","input","r","s","v","parseSignature","signature","type","encodeAbiParameters","owner","spender","value","deadline","Number","holder","nonce","expiry","allowed"],"mappings":";;;;;;;;;;;;;AAkBA,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,uBACdC,KAAAA,EACM;AACN,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;;;;"}
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,7 +1,7 @@
1
1
  import { Config } from '@wagmi/core';
2
2
  import { Address } from 'viem';
3
3
  import { NotDetectedPermitSupport, PermitSupportResult } from './detect';
4
- import { NonceMethod } from '../hooks/usePermit1Nonce';
4
+ import { NonceMethod } from '../hooks/permit1/usePermit1Nonce';
5
5
  import { SupportedChainId } from '../../../lib/web3/wagmi/types';
6
6
  export type TrySignPermitParams = {
7
7
  config: Config;
@@ -1 +1 @@
1
- {"version":3,"file":"trySignPermit1.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAY,KAAK,OAAO,EAA8B,MAAM,MAAM,CAAC;AAE1E,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAC;AAIlB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;IAC3D,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAU9E;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,EACnC,MAAM,EACN,OAAO,EACP,UAAU,EACV,YAAY,EACZ,cAAuC,EACvC,MAAwB,GACzB,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyOpD"}
1
+ {"version":3,"file":"trySignPermit1.d.ts","sourceRoot":"","sources":["../../../../src/hooks/permit/utils/trySignPermit1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,aAAa,CAAC;AACzD,OAAO,EAAY,KAAK,OAAO,EAA8B,MAAM,MAAM,CAAC;AAE1E,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,UAAU,CAAC;AAIlB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;IAC3D,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,mBAAmB,CAAC;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;IAC3D,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;AAU9E;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,EACnC,MAAM,EACN,OAAO,EACP,UAAU,EACV,YAAY,EACZ,cAAuC,EACvC,MAAwB,GACzB,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyOpD"}
@@ -5,16 +5,6 @@ import { constructPermitTypedData } from './construct.js';
5
5
  import { ERC_20_NONCES_ABI } from './constants.js';
6
6
  import { DAI_PERMIT_ABI, EIP_2612_PERMIT_ABI } from './abi.js';
7
7
 
8
- globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
9
- cache: /* @__PURE__ */ new Map(),
10
- get(name, inst) {
11
- if (this.cache.has(name)) {
12
- return this.cache.get(name);
13
- }
14
- this.cache.set(name, inst);
15
- return inst;
16
- }
17
- };
18
8
  const randomAcc = privateKeyToAccount(generatePrivateKey());
19
9
  const randomAccAddress = randomAcc.address;
20
10
  const RANDOM_SPENDER_ADDRESS = "0x0000000000000000000000000000000000000123";
@@ -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/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,13 +1,3 @@
1
- globalThis.jotaiAtomCache = globalThis.jotaiAtomCache || {
2
- cache: /* @__PURE__ */ new Map(),
3
- get(name, inst) {
4
- if (this.cache.has(name)) {
5
- return this.cache.get(name);
6
- }
7
- this.cache.set(name, inst);
8
- return inst;
9
- }
10
- };
11
1
  function getDomainFromEIP712Domain(eip712Domain) {
12
2
  const {
13
3
  fields,