@reown/appkit-cdn 1.8.15-ea982070c1d274f5971447c430b6d77717082e78.0 → 1.8.15-viem-upgrade.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/package.json +10 -10
  2. package/dist/ConstantsUtil-BTJjr2qs.js +0 -24
  3. package/dist/ConstantsUtil-BTJjr2qs.js.map +0 -1
  4. package/dist/ExchangeController-CncqkHeT.js +0 -265
  5. package/dist/ExchangeController-CncqkHeT.js.map +0 -1
  6. package/dist/HelpersUtil-CwxnHyjS.js +0 -141
  7. package/dist/HelpersUtil-CwxnHyjS.js.map +0 -1
  8. package/dist/NavigationUtil-Ci15WS4K.js +0 -9
  9. package/dist/NavigationUtil-Ci15WS4K.js.map +0 -1
  10. package/dist/PhArrowCircleDown-B41iUlWV.js +0 -74
  11. package/dist/PhArrowCircleDown-B41iUlWV.js.map +0 -1
  12. package/dist/PhArrowClockwise-BY8u5n41.js +0 -74
  13. package/dist/PhArrowClockwise-BY8u5n41.js.map +0 -1
  14. package/dist/PhArrowDown-ClD8GZ65.js +0 -74
  15. package/dist/PhArrowDown-ClD8GZ65.js.map +0 -1
  16. package/dist/PhArrowLeft-B8MXUz60.js +0 -74
  17. package/dist/PhArrowLeft-B8MXUz60.js.map +0 -1
  18. package/dist/PhArrowRight-Cewa_Slb.js +0 -74
  19. package/dist/PhArrowRight-Cewa_Slb.js.map +0 -1
  20. package/dist/PhArrowSquareOut-whgWh-lD.js +0 -74
  21. package/dist/PhArrowSquareOut-whgWh-lD.js.map +0 -1
  22. package/dist/PhArrowUp-B1HXBxie.js +0 -74
  23. package/dist/PhArrowUp-B1HXBxie.js.map +0 -1
  24. package/dist/PhArrowUpRight-CfFYe4FP.js +0 -74
  25. package/dist/PhArrowUpRight-CfFYe4FP.js.map +0 -1
  26. package/dist/PhArrowsClockwise-gL1Gkrtx.js +0 -74
  27. package/dist/PhArrowsClockwise-gL1Gkrtx.js.map +0 -1
  28. package/dist/PhArrowsDownUp-BqUEdUQr.js +0 -74
  29. package/dist/PhArrowsDownUp-BqUEdUQr.js.map +0 -1
  30. package/dist/PhArrowsLeftRight-BlZU63eY.js +0 -74
  31. package/dist/PhArrowsLeftRight-BlZU63eY.js.map +0 -1
  32. package/dist/PhBank-gbg_jlI7.js +0 -74
  33. package/dist/PhBank-gbg_jlI7.js.map +0 -1
  34. package/dist/PhBrowser-CMlD-YJw.js +0 -74
  35. package/dist/PhBrowser-CMlD-YJw.js.map +0 -1
  36. package/dist/PhCaretDown-3agTO8Jp.js +0 -74
  37. package/dist/PhCaretDown-3agTO8Jp.js.map +0 -1
  38. package/dist/PhCaretLeft-_MTni7Z5.js +0 -74
  39. package/dist/PhCaretLeft-_MTni7Z5.js.map +0 -1
  40. package/dist/PhCaretRight-Ci9fAHPG.js +0 -74
  41. package/dist/PhCaretRight-Ci9fAHPG.js.map +0 -1
  42. package/dist/PhCaretUp-vFG4Fame.js +0 -74
  43. package/dist/PhCaretUp-vFG4Fame.js.map +0 -1
  44. package/dist/PhCheck-mChGK6K_.js +0 -74
  45. package/dist/PhCheck-mChGK6K_.js.map +0 -1
  46. package/dist/PhCircleHalf-DZ7-vfxf.js +0 -74
  47. package/dist/PhCircleHalf-DZ7-vfxf.js.map +0 -1
  48. package/dist/PhClock-Bc5XWXb6.js +0 -74
  49. package/dist/PhClock-Bc5XWXb6.js.map +0 -1
  50. package/dist/PhCompass-Cu2MB-55.js +0 -74
  51. package/dist/PhCompass-Cu2MB-55.js.map +0 -1
  52. package/dist/PhCopy-BGUjyTts.js +0 -74
  53. package/dist/PhCopy-BGUjyTts.js.map +0 -1
  54. package/dist/PhCreditCard-vxFWID4B.js +0 -74
  55. package/dist/PhCreditCard-vxFWID4B.js.map +0 -1
  56. package/dist/PhCurrencyDollar-BfOoDhJr.js +0 -74
  57. package/dist/PhCurrencyDollar-BfOoDhJr.js.map +0 -1
  58. package/dist/PhDesktop-Cq6jwzbS.js +0 -74
  59. package/dist/PhDesktop-Cq6jwzbS.js.map +0 -1
  60. package/dist/PhDeviceMobile-BCtTp6jj.js +0 -74
  61. package/dist/PhDeviceMobile-BCtTp6jj.js.map +0 -1
  62. package/dist/PhDotsThree-BGgD-WIO.js +0 -74
  63. package/dist/PhDotsThree-BGgD-WIO.js.map +0 -1
  64. package/dist/PhEnvelope-CQiV0-zG.js +0 -74
  65. package/dist/PhEnvelope-CQiV0-zG.js.map +0 -1
  66. package/dist/PhFunnelSimple-BHGtxTNf.js +0 -74
  67. package/dist/PhFunnelSimple-BHGtxTNf.js.map +0 -1
  68. package/dist/PhGlobe-Q8oVkf6X.js +0 -74
  69. package/dist/PhGlobe-Q8oVkf6X.js.map +0 -1
  70. package/dist/PhIdentificationCard-Cz9LzvVR.js +0 -74
  71. package/dist/PhIdentificationCard-Cz9LzvVR.js.map +0 -1
  72. package/dist/PhImage-CP5_qKk-.js +0 -74
  73. package/dist/PhImage-CP5_qKk-.js.map +0 -1
  74. package/dist/PhInfo-CTlE1X9Z.js +0 -74
  75. package/dist/PhInfo-CTlE1X9Z.js.map +0 -1
  76. package/dist/PhLightbulb-CcLpnAAb.js +0 -74
  77. package/dist/PhLightbulb-CcLpnAAb.js.map +0 -1
  78. package/dist/PhMagnifyingGlass-n58GUAck.js +0 -74
  79. package/dist/PhMagnifyingGlass-n58GUAck.js.map +0 -1
  80. package/dist/PhPaperPlaneRight-C0sf2XV8.js +0 -74
  81. package/dist/PhPaperPlaneRight-C0sf2XV8.js.map +0 -1
  82. package/dist/PhPlus-BJxvt7Uc.js +0 -74
  83. package/dist/PhPlus-BJxvt7Uc.js.map +0 -1
  84. package/dist/PhPower-BvktxO2-.js +0 -74
  85. package/dist/PhPower-BvktxO2-.js.map +0 -1
  86. package/dist/PhPuzzlePiece-CDDyUPYo.js +0 -74
  87. package/dist/PhPuzzlePiece-CDDyUPYo.js.map +0 -1
  88. package/dist/PhQrCode-BlGI8529.js +0 -74
  89. package/dist/PhQrCode-BlGI8529.js.map +0 -1
  90. package/dist/PhQuestion-DGZj6iDZ.js +0 -74
  91. package/dist/PhQuestion-DGZj6iDZ.js.map +0 -1
  92. package/dist/PhQuestionMark-CTmeI7MQ.js +0 -74
  93. package/dist/PhQuestionMark-CTmeI7MQ.js.map +0 -1
  94. package/dist/PhSealCheck-BSlqkxnH.js +0 -74
  95. package/dist/PhSealCheck-BSlqkxnH.js.map +0 -1
  96. package/dist/PhSignOut-CEXxlRk3.js +0 -74
  97. package/dist/PhSignOut-CEXxlRk3.js.map +0 -1
  98. package/dist/PhSpinner-Do1pY8fG.js +0 -74
  99. package/dist/PhSpinner-Do1pY8fG.js.map +0 -1
  100. package/dist/PhTrash-JNKavmpg.js +0 -74
  101. package/dist/PhTrash-JNKavmpg.js.map +0 -1
  102. package/dist/PhUser-BW7E-xYg.js +0 -74
  103. package/dist/PhUser-BW7E-xYg.js.map +0 -1
  104. package/dist/PhVault-mzxUgBYN.js +0 -74
  105. package/dist/PhVault-mzxUgBYN.js.map +0 -1
  106. package/dist/PhWallet-BR9JThKU.js +0 -74
  107. package/dist/PhWallet-BR9JThKU.js.map +0 -1
  108. package/dist/PhWarning-DxuQ70WM.js +0 -74
  109. package/dist/PhWarning-DxuQ70WM.js.map +0 -1
  110. package/dist/PhWarningCircle-DCI0JC1F.js +0 -74
  111. package/dist/PhWarningCircle-DCI0JC1F.js.map +0 -1
  112. package/dist/PhX-CWNXqpGn.js +0 -74
  113. package/dist/PhX-CWNXqpGn.js.map +0 -1
  114. package/dist/SwapController-DsYbP4IS.js +0 -684
  115. package/dist/SwapController-DsYbP4IS.js.map +0 -1
  116. package/dist/WebCryptoP256-Czt7ZkJ7.js +0 -3299
  117. package/dist/WebCryptoP256-Czt7ZkJ7.js.map +0 -1
  118. package/dist/add-UkulHTXi.js +0 -20
  119. package/dist/add-UkulHTXi.js.map +0 -1
  120. package/dist/all-wallets-DhJCVmL_.js +0 -11
  121. package/dist/all-wallets-DhJCVmL_.js.map +0 -1
  122. package/dist/app-store-Ern3I2La.js +0 -22
  123. package/dist/app-store-Ern3I2La.js.map +0 -1
  124. package/dist/appkit-ppmICUF1.js +0 -118106
  125. package/dist/appkit-ppmICUF1.js.map +0 -1
  126. package/dist/appkit.js +0 -11
  127. package/dist/appkit.js.map +0 -1
  128. package/dist/apple-_SZ-XSIx.js +0 -23
  129. package/dist/apple-_SZ-XSIx.js.map +0 -1
  130. package/dist/arrow-bottom-D7Qlu6xE.js +0 -13
  131. package/dist/arrow-bottom-D7Qlu6xE.js.map +0 -1
  132. package/dist/arrow-bottom-circle-Cel-TDaT.js +0 -16
  133. package/dist/arrow-bottom-circle-Cel-TDaT.js.map +0 -1
  134. package/dist/arrow-left-ByNxCvA_.js +0 -13
  135. package/dist/arrow-left-ByNxCvA_.js.map +0 -1
  136. package/dist/arrow-right-yep9R_ud.js +0 -13
  137. package/dist/arrow-right-yep9R_ud.js.map +0 -1
  138. package/dist/arrow-top-C1WlBAfk.js +0 -13
  139. package/dist/arrow-top-C1WlBAfk.js.map +0 -1
  140. package/dist/async-directive-C9EnweIr.js +0 -73
  141. package/dist/async-directive-C9EnweIr.js.map +0 -1
  142. package/dist/bank-Dm8zmIr0.js +0 -19
  143. package/dist/bank-Dm8zmIr0.js.map +0 -1
  144. package/dist/basic-UB459qAF.js +0 -4914
  145. package/dist/basic-UB459qAF.js.map +0 -1
  146. package/dist/browser-5XoTmr4n.js +0 -1991
  147. package/dist/browser-5XoTmr4n.js.map +0 -1
  148. package/dist/browser-LYv8PF5c.js +0 -19
  149. package/dist/browser-LYv8PF5c.js.map +0 -1
  150. package/dist/card-CEQLkIir.js +0 -19
  151. package/dist/card-CEQLkIir.js.map +0 -1
  152. package/dist/ccip-Dj8tRQd7.js +0 -164
  153. package/dist/ccip-Dj8tRQd7.js.map +0 -1
  154. package/dist/checkmark-DPFC_0yn.js +0 -16
  155. package/dist/checkmark-DPFC_0yn.js.map +0 -1
  156. package/dist/checkmark-bold-Hwfezlkn.js +0 -13
  157. package/dist/checkmark-bold-Hwfezlkn.js.map +0 -1
  158. package/dist/chevron-bottom-qsPvhQDo.js +0 -13
  159. package/dist/chevron-bottom-qsPvhQDo.js.map +0 -1
  160. package/dist/chevron-left-CA4SOr_F.js +0 -13
  161. package/dist/chevron-left-CA4SOr_F.js.map +0 -1
  162. package/dist/chevron-right-TeVZyORZ.js +0 -13
  163. package/dist/chevron-right-TeVZyORZ.js.map +0 -1
  164. package/dist/chevron-top-B7LCiM2n.js +0 -13
  165. package/dist/chevron-top-B7LCiM2n.js.map +0 -1
  166. package/dist/chrome-store-CU7w_5QC.js +0 -66
  167. package/dist/chrome-store-CU7w_5QC.js.map +0 -1
  168. package/dist/class-map-B814K2ej.js +0 -101
  169. package/dist/class-map-B814K2ej.js.map +0 -1
  170. package/dist/clock-DcbItfiJ.js +0 -13
  171. package/dist/clock-DcbItfiJ.js.map +0 -1
  172. package/dist/close-B22QsrS0.js +0 -13
  173. package/dist/close-B22QsrS0.js.map +0 -1
  174. package/dist/clsx.m-D57qXwfE.js +0 -21
  175. package/dist/clsx.m-D57qXwfE.js.map +0 -1
  176. package/dist/coinPlaceholder-BNrjpg6-.js +0 -13
  177. package/dist/coinPlaceholder-BNrjpg6-.js.map +0 -1
  178. package/dist/compass-C7GRFU39.js +0 -13
  179. package/dist/compass-C7GRFU39.js.map +0 -1
  180. package/dist/copy-BcrOhyLL.js +0 -20
  181. package/dist/copy-BcrOhyLL.js.map +0 -1
  182. package/dist/core-BI_Ap4BF.js +0 -16288
  183. package/dist/core-BI_Ap4BF.js.map +0 -1
  184. package/dist/cursor-AJkpyAWk.js +0 -8
  185. package/dist/cursor-AJkpyAWk.js.map +0 -1
  186. package/dist/cursor-transparent-C1dF4GFm.js +0 -17
  187. package/dist/cursor-transparent-C1dF4GFm.js.map +0 -1
  188. package/dist/data-capture-CqwQ1053.js +0 -549
  189. package/dist/data-capture-CqwQ1053.js.map +0 -1
  190. package/dist/desktop-C60oOo59.js +0 -14
  191. package/dist/desktop-C60oOo59.js.map +0 -1
  192. package/dist/disconnect-DqS517fE.js +0 -13
  193. package/dist/disconnect-DqS517fE.js.map +0 -1
  194. package/dist/discord-D1qNpgLJ.js +0 -22
  195. package/dist/discord-D1qNpgLJ.js.map +0 -1
  196. package/dist/email-UK97sxf8.js +0 -421
  197. package/dist/email-UK97sxf8.js.map +0 -1
  198. package/dist/embedded-wallet-f8ft4R2q.js +0 -952
  199. package/dist/embedded-wallet-f8ft4R2q.js.map +0 -1
  200. package/dist/etherscan-BWSY3GuJ.js +0 -11
  201. package/dist/etherscan-BWSY3GuJ.js.map +0 -1
  202. package/dist/exclamation-triangle-nypPoZ5T.js +0 -9
  203. package/dist/exclamation-triangle-nypPoZ5T.js.map +0 -1
  204. package/dist/extension-BuFHuaRl.js +0 -13
  205. package/dist/extension-BuFHuaRl.js.map +0 -1
  206. package/dist/external-link-L3QQJwck.js +0 -13
  207. package/dist/external-link-L3QQJwck.js.map +0 -1
  208. package/dist/facebook-BbbjiGyt.js +0 -31
  209. package/dist/facebook-BbbjiGyt.js.map +0 -1
  210. package/dist/farcaster-CDar3vjq.js +0 -17
  211. package/dist/farcaster-CDar3vjq.js.map +0 -1
  212. package/dist/features-Dne1ZyJy.js +0 -319
  213. package/dist/features-Dne1ZyJy.js.map +0 -1
  214. package/dist/filters-BprVfwTM.js +0 -13
  215. package/dist/filters-BprVfwTM.js.map +0 -1
  216. package/dist/github-BFRFSS65.js +0 -23
  217. package/dist/github-BFRFSS65.js.map +0 -1
  218. package/dist/google-DX3b-tuu.js +0 -23
  219. package/dist/google-DX3b-tuu.js.map +0 -1
  220. package/dist/hashTypedData-MEx8_Z-J.js +0 -262
  221. package/dist/hashTypedData-MEx8_Z-J.js.map +0 -1
  222. package/dist/help-circle-PtWG4XV9.js +0 -17
  223. package/dist/help-circle-PtWG4XV9.js.map +0 -1
  224. package/dist/id-BKzsrqpW.js +0 -17
  225. package/dist/id-BKzsrqpW.js.map +0 -1
  226. package/dist/if-defined-CyuCf775.js +0 -11
  227. package/dist/if-defined-CyuCf775.js.map +0 -1
  228. package/dist/image-2qjHFSqv.js +0 -9
  229. package/dist/image-2qjHFSqv.js.map +0 -1
  230. package/dist/index-57er67ch.js +0 -131
  231. package/dist/index-57er67ch.js.map +0 -1
  232. package/dist/index-B-MpJOWW.js +0 -3987
  233. package/dist/index-B-MpJOWW.js.map +0 -1
  234. package/dist/index-B2f4UbAK.js +0 -257
  235. package/dist/index-B2f4UbAK.js.map +0 -1
  236. package/dist/index-B4xD2s69.js +0 -62
  237. package/dist/index-B4xD2s69.js.map +0 -1
  238. package/dist/index-BF4uePO9.js +0 -126
  239. package/dist/index-BF4uePO9.js.map +0 -1
  240. package/dist/index-BG3007yu.js +0 -542
  241. package/dist/index-BG3007yu.js.map +0 -1
  242. package/dist/index-BPqsyCu1.js +0 -249
  243. package/dist/index-BPqsyCu1.js.map +0 -1
  244. package/dist/index-BTFeMb7h.js +0 -2277
  245. package/dist/index-BTFeMb7h.js.map +0 -1
  246. package/dist/index-B_z_MPZ-.js +0 -180
  247. package/dist/index-B_z_MPZ-.js.map +0 -1
  248. package/dist/index-Biw_bFmP.js +0 -70
  249. package/dist/index-Biw_bFmP.js.map +0 -1
  250. package/dist/index-BnY1urGu.js +0 -441
  251. package/dist/index-BnY1urGu.js.map +0 -1
  252. package/dist/index-C1OrBJOZ.js +0 -218
  253. package/dist/index-C1OrBJOZ.js.map +0 -1
  254. package/dist/index-CHvzOG0E.js +0 -1372
  255. package/dist/index-CHvzOG0E.js.map +0 -1
  256. package/dist/index-CKaIBA_q.js +0 -153
  257. package/dist/index-CKaIBA_q.js.map +0 -1
  258. package/dist/index-CLefivQ6.js +0 -124
  259. package/dist/index-CLefivQ6.js.map +0 -1
  260. package/dist/index-COvWUE72.js +0 -716
  261. package/dist/index-COvWUE72.js.map +0 -1
  262. package/dist/index-CRhk6ovx.js +0 -198
  263. package/dist/index-CRhk6ovx.js.map +0 -1
  264. package/dist/index-CfTNvhZC.js +0 -967
  265. package/dist/index-CfTNvhZC.js.map +0 -1
  266. package/dist/index-CjCwufpz.js +0 -120
  267. package/dist/index-CjCwufpz.js.map +0 -1
  268. package/dist/index-Ck3zz_LE.js +0 -984
  269. package/dist/index-Ck3zz_LE.js.map +0 -1
  270. package/dist/index-CqVDx2Ua.js +0 -9350
  271. package/dist/index-CqVDx2Ua.js.map +0 -1
  272. package/dist/index-CrF2nCtM.js +0 -211
  273. package/dist/index-CrF2nCtM.js.map +0 -1
  274. package/dist/index-Crnbnlbl.js +0 -8825
  275. package/dist/index-Crnbnlbl.js.map +0 -1
  276. package/dist/index-D7bwcPcO.js +0 -147
  277. package/dist/index-D7bwcPcO.js.map +0 -1
  278. package/dist/index-DAmhDlFG.js +0 -985
  279. package/dist/index-DAmhDlFG.js.map +0 -1
  280. package/dist/index-DF9XlWjQ.js +0 -456
  281. package/dist/index-DF9XlWjQ.js.map +0 -1
  282. package/dist/index-DGtLnlsD.js +0 -521
  283. package/dist/index-DGtLnlsD.js.map +0 -1
  284. package/dist/index-DIDlQZ9c.js +0 -1582
  285. package/dist/index-DIDlQZ9c.js.map +0 -1
  286. package/dist/index-DJe9wj3q.js +0 -136
  287. package/dist/index-DJe9wj3q.js.map +0 -1
  288. package/dist/index-DPlE9Qgr.js +0 -73
  289. package/dist/index-DPlE9Qgr.js.map +0 -1
  290. package/dist/index-DVXtgl7V.js +0 -7481
  291. package/dist/index-DVXtgl7V.js.map +0 -1
  292. package/dist/index-DWLAu0nH.js +0 -110
  293. package/dist/index-DWLAu0nH.js.map +0 -1
  294. package/dist/index-DXCwyaz_.js +0 -147
  295. package/dist/index-DXCwyaz_.js.map +0 -1
  296. package/dist/index-D_NteNrS.js +0 -198
  297. package/dist/index-D_NteNrS.js.map +0 -1
  298. package/dist/index-Dg65-p7m.js +0 -7258
  299. package/dist/index-Dg65-p7m.js.map +0 -1
  300. package/dist/index-Du7PdWv1.js +0 -181
  301. package/dist/index-Du7PdWv1.js.map +0 -1
  302. package/dist/index-HOjNYM_k.js +0 -92
  303. package/dist/index-HOjNYM_k.js.map +0 -1
  304. package/dist/index-MwW0rp8T.js +0 -286
  305. package/dist/index-MwW0rp8T.js.map +0 -1
  306. package/dist/index-OCzLDbWt.js +0 -18322
  307. package/dist/index-OCzLDbWt.js.map +0 -1
  308. package/dist/index-Sf3UCmHB.js +0 -611
  309. package/dist/index-Sf3UCmHB.js.map +0 -1
  310. package/dist/index-Zt_Jj4gf.js +0 -520
  311. package/dist/index-Zt_Jj4gf.js.map +0 -1
  312. package/dist/index-kb6zqfNt.js +0 -1178
  313. package/dist/index-kb6zqfNt.js.map +0 -1
  314. package/dist/index-rYPftA0P.js +0 -52
  315. package/dist/index-rYPftA0P.js.map +0 -1
  316. package/dist/index-tdPUUHj0.js +0 -281
  317. package/dist/index-tdPUUHj0.js.map +0 -1
  318. package/dist/index-wVp4UjVg.js +0 -182
  319. package/dist/index-wVp4UjVg.js.map +0 -1
  320. package/dist/index-ywRnp0Bi.js +0 -109
  321. package/dist/index-ywRnp0Bi.js.map +0 -1
  322. package/dist/index.es-BrfaQK0n.js +0 -8391
  323. package/dist/index.es-BrfaQK0n.js.map +0 -1
  324. package/dist/info-BhM-vMtG.js +0 -8
  325. package/dist/info-BhM-vMtG.js.map +0 -1
  326. package/dist/info-circle-DwGnsKMj.js +0 -17
  327. package/dist/info-circle-DwGnsKMj.js.map +0 -1
  328. package/dist/jsxRuntime.module-BW0yCO8A.js +0 -14
  329. package/dist/jsxRuntime.module-BW0yCO8A.js.map +0 -1
  330. package/dist/lightbulb-BvGmXMuo.js +0 -8
  331. package/dist/lightbulb-BvGmXMuo.js.map +0 -1
  332. package/dist/localBatchGatewayRequest-CLL1gABv.js +0 -103
  333. package/dist/localBatchGatewayRequest-CLL1gABv.js.map +0 -1
  334. package/dist/mail-Cl70v1Dx.js +0 -13
  335. package/dist/mail-Cl70v1Dx.js.map +0 -1
  336. package/dist/metamask-sdk-BzQ933Ju.js +0 -16699
  337. package/dist/metamask-sdk-BzQ933Ju.js.map +0 -1
  338. package/dist/mobile-BCINjy0Y.js +0 -14
  339. package/dist/mobile-BCINjy0Y.js.map +0 -1
  340. package/dist/more-Cozw6-SQ.js +0 -16
  341. package/dist/more-Cozw6-SQ.js.map +0 -1
  342. package/dist/native-Dc_5StoC.js +0 -17
  343. package/dist/native-Dc_5StoC.js.map +0 -1
  344. package/dist/network-placeholder-o2Dz_YnK.js +0 -19
  345. package/dist/network-placeholder-o2Dz_YnK.js.map +0 -1
  346. package/dist/nftPlaceholder-Bjf9SAC-.js +0 -13
  347. package/dist/nftPlaceholder-Bjf9SAC-.js.map +0 -1
  348. package/dist/off-BsVJ8v6H.js +0 -13
  349. package/dist/off-BsVJ8v6H.js.map +0 -1
  350. package/dist/onramp-C4DqYEmw.js +0 -979
  351. package/dist/onramp-C4DqYEmw.js.map +0 -1
  352. package/dist/parseAbiParameters-DfJcIE_w.js +0 -757
  353. package/dist/parseAbiParameters-DfJcIE_w.js.map +0 -1
  354. package/dist/parseSignature-MJforcG6.js +0 -4690
  355. package/dist/parseSignature-MJforcG6.js.map +0 -1
  356. package/dist/pay-with-exchange-DC29BzBo.js +0 -603
  357. package/dist/pay-with-exchange-DC29BzBo.js.map +0 -1
  358. package/dist/play-store-DIOK4cBW.js +0 -37
  359. package/dist/play-store-DIOK4cBW.js.map +0 -1
  360. package/dist/plus-Cxls3O6G.js +0 -18
  361. package/dist/plus-Cxls3O6G.js.map +0 -1
  362. package/dist/property-8UcTqffH.js +0 -623
  363. package/dist/property-8UcTqffH.js.map +0 -1
  364. package/dist/qr-code-Cp6lpAcY.js +0 -11
  365. package/dist/qr-code-Cp6lpAcY.js.map +0 -1
  366. package/dist/receive-BLI57snb.js +0 -262
  367. package/dist/receive-BLI57snb.js.map +0 -1
  368. package/dist/recycle-horizontal-AEJ_nbSP.js +0 -14
  369. package/dist/recycle-horizontal-AEJ_nbSP.js.map +0 -1
  370. package/dist/ref-BobNUvS_.js +0 -43
  371. package/dist/ref-BobNUvS_.js.map +0 -1
  372. package/dist/refresh-7roUeD2M.js +0 -13
  373. package/dist/refresh-7roUeD2M.js.map +0 -1
  374. package/dist/reown-logo-xggoIKX2.js +0 -17
  375. package/dist/reown-logo-xggoIKX2.js.map +0 -1
  376. package/dist/search-DgzcpMUb.js +0 -13
  377. package/dist/search-DgzcpMUb.js.map +0 -1
  378. package/dist/secp256k1-D_j0Z4BY.js +0 -2031
  379. package/dist/secp256k1-D_j0Z4BY.js.map +0 -1
  380. package/dist/send-D7M2-Upc.js +0 -20
  381. package/dist/send-D7M2-Upc.js.map +0 -1
  382. package/dist/send-TAzhXOOa.js +0 -1365
  383. package/dist/send-TAzhXOOa.js.map +0 -1
  384. package/dist/socials-BXTq602s.js +0 -796
  385. package/dist/socials-BXTq602s.js.map +0 -1
  386. package/dist/swapHorizontal-2gzDDUNF.js +0 -13
  387. package/dist/swapHorizontal-2gzDDUNF.js.map +0 -1
  388. package/dist/swapHorizontalBold-C1cHwAjU.js +0 -13
  389. package/dist/swapHorizontalBold-C1cHwAjU.js.map +0 -1
  390. package/dist/swapHorizontalMedium-BQno5vep.js +0 -21
  391. package/dist/swapHorizontalMedium-BQno5vep.js.map +0 -1
  392. package/dist/swapHorizontalRoundedBold-CYmZDeQ5.js +0 -13
  393. package/dist/swapHorizontalRoundedBold-CYmZDeQ5.js.map +0 -1
  394. package/dist/swapVertical-BhRPysBs.js +0 -13
  395. package/dist/swapVertical-BhRPysBs.js.map +0 -1
  396. package/dist/swaps-DQ-uUZvX.js +0 -2121
  397. package/dist/swaps-DQ-uUZvX.js.map +0 -1
  398. package/dist/telegram-B-YOyhte.js +0 -21
  399. package/dist/telegram-B-YOyhte.js.map +0 -1
  400. package/dist/three-dots-8mr70UzU.js +0 -10
  401. package/dist/three-dots-8mr70UzU.js.map +0 -1
  402. package/dist/transactions-C4p83vMQ.js +0 -38
  403. package/dist/transactions-C4p83vMQ.js.map +0 -1
  404. package/dist/twitch-C2ccExfT.js +0 -23
  405. package/dist/twitch-C2ccExfT.js.map +0 -1
  406. package/dist/twitterIcon-IkT5wPxq.js +0 -11
  407. package/dist/twitterIcon-IkT5wPxq.js.map +0 -1
  408. package/dist/vanilla-CgG5xMJO.js +0 -448
  409. package/dist/vanilla-CgG5xMJO.js.map +0 -1
  410. package/dist/verify-BfilAaob.js +0 -13
  411. package/dist/verify-BfilAaob.js.map +0 -1
  412. package/dist/verify-filled-COkWKgPo.js +0 -13
  413. package/dist/verify-filled-COkWKgPo.js.map +0 -1
  414. package/dist/w3m-modal-9MzgEqm3.js +0 -1725
  415. package/dist/w3m-modal-9MzgEqm3.js.map +0 -1
  416. package/dist/w3m-modal-DBQU256b.js +0 -2008
  417. package/dist/w3m-modal-DBQU256b.js.map +0 -1
  418. package/dist/wallet-9D5svrZj.js +0 -13
  419. package/dist/wallet-9D5svrZj.js.map +0 -1
  420. package/dist/wallet-placeholder-CfLGKG93.js +0 -19
  421. package/dist/wallet-placeholder-CfLGKG93.js.map +0 -1
  422. package/dist/wallet-standard-CkMoUaGA.js +0 -523
  423. package/dist/wallet-standard-CkMoUaGA.js.map +0 -1
  424. package/dist/walletconnect-MtAz2u7z.js +0 -39
  425. package/dist/walletconnect-MtAz2u7z.js.map +0 -1
  426. package/dist/warning-circle-Cf2AJecu.js +0 -17
  427. package/dist/warning-circle-Cf2AJecu.js.map +0 -1
  428. package/dist/x-B0KhGb39.js +0 -17
  429. package/dist/x-B0KhGb39.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseSignature-MJforcG6.js","sources":["../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/errors/log.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/abi/encodeEventTopics.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/createContractEventFilter.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/estimateContractGas.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getLogs.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getContractEvents.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/internal/bytes.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Bytes.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/simulateContract.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/watchContractEvent.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/errors/calls.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/wallet/sendCalls.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/wallet/getCallsStatus.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/wallet/waitForCallsStatus.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/errors.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/encodedLabelToLabelhash.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/namehash.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/encodeLabelhash.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/labelhash.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/packetToBytes.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/ens/getEnsAddress.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/errors/ens.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/avatar/utils.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/ens/avatar/parseAvatarRecord.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/ens/getEnsText.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/ens/getEnsAvatar.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/ens/getEnsName.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/ens/getEnsResolver.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/createAccessList.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/createBlockFilter.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/createEventFilter.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getBlobBaseFee.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getBlockTransactionCount.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getCode.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/errors/eip712.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getEip712Domain.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/formatters/feeHistory.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getFeeHistory.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getFilterLogs.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/abi/encodePacked.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/authorization/verifyAuthorization.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/nonceManager.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/rpc/id.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/rpc/http.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/constants/bytes.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/internal/lru.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Caches.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Hash.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/PublicKey.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Address.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Solidity.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/internal/abiParameters.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/internal/cursor.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/AbiParameters.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Rlp.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Signature.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Authorization.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/Secp256k1.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/erc8010/SignatureErc8010.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/signature/serializeErc6492Signature.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/formatters/proof.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getProof.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getStorageAt.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/getTransactionConfirmations.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/simulateBlocks.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/internal/abiItem.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/AbiItem.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/AbiConstructor.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/core/AbiFunction.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/constants/address.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/simulateCalls.js","../../../node_modules/.pnpm/ox@0.9.6_typescript@5.9.2_zod@4.1.12/node_modules/ox/_esm/erc6492/SignatureErc6492.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/signature/serializeSignature.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/verifyHash.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/verifyMessage.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/verifyTypedData.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/watchBlocks.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/public/watchEvent.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/siwe/parseSiweMessage.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/siwe/validateSiweMessage.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/siwe/verifySiweMessage.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/clients/decorators/public.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/clients/createPublicClient.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/actions/wallet/prepareAuthorization.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/errors/transport.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/clients/transports/http.js","../../../node_modules/.pnpm/viem@2.37.9_bufferutil@4.0.9_typescript@5.9.2_utf-8-validate@5.0.10_zod@4.1.12/node_modules/viem/_esm/utils/signature/parseSignature.js"],"sourcesContent":["import { BaseError } from './base.js';\nexport class FilterTypeNotSupportedError extends BaseError {\n constructor(type) {\n super(`Filter type \"${type}\" is not supported.`, {\n name: 'FilterTypeNotSupportedError',\n });\n }\n}\n//# sourceMappingURL=log.js.map","import { AbiEventNotFoundError, } from '../../errors/abi.js';\nimport { FilterTypeNotSupportedError, } from '../../errors/log.js';\nimport { toBytes } from '../encoding/toBytes.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { toEventSelector, } from '../hash/toEventSelector.js';\nimport { encodeAbiParameters, } from './encodeAbiParameters.js';\nimport { formatAbiItem } from './formatAbiItem.js';\nimport { getAbiItem } from './getAbiItem.js';\nconst docsPath = '/docs/contract/encodeEventTopics';\nexport function encodeEventTopics(parameters) {\n const { abi, eventName, args } = parameters;\n let abiItem = abi[0];\n if (eventName) {\n const item = getAbiItem({ abi, name: eventName });\n if (!item)\n throw new AbiEventNotFoundError(eventName, { docsPath });\n abiItem = item;\n }\n if (abiItem.type !== 'event')\n throw new AbiEventNotFoundError(undefined, { docsPath });\n const definition = formatAbiItem(abiItem);\n const signature = toEventSelector(definition);\n let topics = [];\n if (args && 'inputs' in abiItem) {\n const indexedInputs = abiItem.inputs?.filter((param) => 'indexed' in param && param.indexed);\n const args_ = Array.isArray(args)\n ? args\n : Object.values(args).length > 0\n ? (indexedInputs?.map((x) => args[x.name]) ?? [])\n : [];\n if (args_.length > 0) {\n topics =\n indexedInputs?.map((param, i) => {\n if (Array.isArray(args_[i]))\n return args_[i].map((_, j) => encodeArg({ param, value: args_[i][j] }));\n return typeof args_[i] !== 'undefined' && args_[i] !== null\n ? encodeArg({ param, value: args_[i] })\n : null;\n }) ?? [];\n }\n }\n return [signature, ...topics];\n}\nfunction encodeArg({ param, value, }) {\n if (param.type === 'string' || param.type === 'bytes')\n return keccak256(toBytes(value));\n if (param.type === 'tuple' || param.type.match(/^(.*)\\[(\\d+)?\\]$/))\n throw new FilterTypeNotSupportedError(param.type);\n return encodeAbiParameters([param], [value]);\n}\n//# sourceMappingURL=encodeEventTopics.js.map","import { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs).\n *\n * - Docs: https://viem.sh/docs/contract/createContractEventFilter\n *\n * @param client - Client to use\n * @param parameters - {@link CreateContractEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateContractEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createContractEventFilter } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createContractEventFilter(client, {\n * abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']),\n * })\n */\nexport async function createContractEventFilter(client, parameters) {\n const { address, abi, args, eventName, fromBlock, strict, toBlock } = parameters;\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newFilter',\n });\n const topics = eventName\n ? encodeEventTopics({\n abi,\n args,\n eventName,\n })\n : undefined;\n const id = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock: typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n topics,\n },\n ],\n });\n return {\n abi,\n args,\n eventName,\n id,\n request: getRequest(id),\n strict: Boolean(strict),\n type: 'event',\n };\n}\n//# sourceMappingURL=createContractEventFilter.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { estimateGas, } from './estimateGas.js';\n/**\n * Estimates the gas required to successfully execute a contract write function call.\n *\n * - Docs: https://viem.sh/docs/contract/estimateContractGas\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link EstimateContractGasParameters}\n * @returns The gas estimate (in wei). {@link EstimateContractGasReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { estimateContractGas } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const gas = await estimateContractGas(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint() public']),\n * functionName: 'mint',\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * })\n */\nexport async function estimateContractGas(client, parameters) {\n const { abi, address, args, functionName, dataSuffix, ...request } = parameters;\n const data = encodeFunctionData({\n abi,\n args,\n functionName,\n });\n try {\n const gas = await getAction(client, estimateGas, 'estimateGas')({\n data: `${data}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n to: address,\n ...request,\n });\n return gas;\n }\n catch (error) {\n const account = request.account ? parseAccount(request.account) : undefined;\n throw getContractError(error, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/estimateContractGas',\n functionName,\n sender: account?.address,\n });\n }\n}\n//# sourceMappingURL=estimateContractGas.js.map","import { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatLog, } from '../../utils/formatters/log.js';\n/**\n * Returns a list of event logs matching the provided parameters.\n *\n * - Docs: https://viem.sh/docs/actions/public/getLogs\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/logs_event-logs\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param client - Client to use\n * @param parameters - {@link GetLogsParameters}\n * @returns A list of event logs. {@link GetLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getLogs } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await getLogs(client)\n */\nexport async function getLogs(client, { address, blockHash, fromBlock, toBlock, event, events: events_, args, strict: strict_, } = {}) {\n const strict = strict_ ?? false;\n const events = events_ ?? (event ? [event] : undefined);\n let topics = [];\n if (events) {\n const encoded = events.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args: events_ ? undefined : args,\n }));\n // TODO: Clean up type casting\n topics = [encoded];\n if (event)\n topics = topics[0];\n }\n let logs;\n if (blockHash) {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [{ address, topics, blockHash }],\n });\n }\n else {\n logs = await client.request({\n method: 'eth_getLogs',\n params: [\n {\n address,\n topics,\n fromBlock: typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n },\n ],\n });\n }\n const formattedLogs = logs.map((log) => formatLog(log));\n if (!events)\n return formattedLogs;\n return parseEventLogs({\n abi: events,\n args: args,\n logs: formattedLogs,\n strict,\n });\n}\n//# sourceMappingURL=getLogs.js.map","import { getAbiItem, } from '../../utils/abi/getAbiItem.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getLogs, } from './getLogs.js';\n/**\n * Returns a list of event logs emitted by a contract.\n *\n * - Docs: https://viem.sh/docs/contract/getContractEvents#getcontractevents\n * - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs)\n *\n * @param client - Client to use\n * @param parameters - {@link GetContractEventsParameters}\n * @returns A list of event logs. {@link GetContractEventsReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getContractEvents } from 'viem/public'\n * import { wagmiAbi } from './abi'\n *\n * const client = createClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const logs = await getContractEvents(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: wagmiAbi,\n * eventName: 'Transfer'\n * })\n */\nexport async function getContractEvents(client, parameters) {\n const { abi, address, args, blockHash, eventName, fromBlock, toBlock, strict, } = parameters;\n const event = eventName\n ? getAbiItem({ abi, name: eventName })\n : undefined;\n const events = !event\n ? abi.filter((x) => x.type === 'event')\n : undefined;\n return getAction(client, getLogs, 'getLogs')({\n address,\n args,\n blockHash,\n event,\n events,\n fromBlock,\n toBlock,\n strict,\n });\n}\n//# sourceMappingURL=getContractEvents.js.map","import * as Bytes from '../Bytes.js';\n/** @internal */\nexport function assertSize(bytes, size_) {\n if (Bytes.size(bytes) > size_)\n throw new Bytes.SizeOverflowError({\n givenSize: Bytes.size(bytes),\n maxSize: size_,\n });\n}\n/** @internal */\nexport function assertStartOffset(value, start) {\n if (typeof start === 'number' && start > 0 && start > Bytes.size(value) - 1)\n throw new Bytes.SliceOffsetOutOfBoundsError({\n offset: start,\n position: 'start',\n size: Bytes.size(value),\n });\n}\n/** @internal */\nexport function assertEndOffset(value, start, end) {\n if (typeof start === 'number' &&\n typeof end === 'number' &&\n Bytes.size(value) !== end - start) {\n throw new Bytes.SliceOffsetOutOfBoundsError({\n offset: end,\n position: 'end',\n size: Bytes.size(value),\n });\n }\n}\n/** @internal */\nexport const charCodeMap = {\n zero: 48,\n nine: 57,\n A: 65,\n F: 70,\n a: 97,\n f: 102,\n};\n/** @internal */\nexport function charCodeToBase16(char) {\n if (char >= charCodeMap.zero && char <= charCodeMap.nine)\n return char - charCodeMap.zero;\n if (char >= charCodeMap.A && char <= charCodeMap.F)\n return char - (charCodeMap.A - 10);\n if (char >= charCodeMap.a && char <= charCodeMap.f)\n return char - (charCodeMap.a - 10);\n return undefined;\n}\n/** @internal */\nexport function pad(bytes, options = {}) {\n const { dir, size = 32 } = options;\n if (size === 0)\n return bytes;\n if (bytes.length > size)\n throw new Bytes.SizeExceedsPaddingSizeError({\n size: bytes.length,\n targetSize: size,\n type: 'Bytes',\n });\n const paddedBytes = new Uint8Array(size);\n for (let i = 0; i < size; i++) {\n const padEnd = dir === 'right';\n paddedBytes[padEnd ? i : size - i - 1] =\n bytes[padEnd ? i : bytes.length - i - 1];\n }\n return paddedBytes;\n}\n/** @internal */\nexport function trim(value, options = {}) {\n const { dir = 'left' } = options;\n let data = value;\n let sliceLength = 0;\n for (let i = 0; i < data.length - 1; i++) {\n if (data[dir === 'left' ? i : data.length - i - 1].toString() === '0')\n sliceLength++;\n else\n break;\n }\n data =\n dir === 'left'\n ? data.slice(sliceLength)\n : data.slice(0, data.length - sliceLength);\n return data;\n}\n//# sourceMappingURL=bytes.js.map","import { equalBytes } from '@noble/curves/abstract/utils';\nimport * as Errors from './Errors.js';\nimport * as Hex from './Hex.js';\nimport * as internal from './internal/bytes.js';\nimport * as internal_hex from './internal/hex.js';\nimport * as Json from './Json.js';\nconst decoder = /*#__PURE__*/ new TextDecoder();\nconst encoder = /*#__PURE__*/ new TextEncoder();\n/**\n * Asserts if the given value is {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.assert('abc')\n * // @error: Bytes.InvalidBytesTypeError:\n * // @error: Value `\"abc\"` of type `string` is an invalid Bytes value.\n * // @error: Bytes values must be of type `Uint8Array`.\n * ```\n *\n * @param value - Value to assert.\n */\nexport function assert(value) {\n if (value instanceof Uint8Array)\n return;\n if (!value)\n throw new InvalidBytesTypeError(value);\n if (typeof value !== 'object')\n throw new InvalidBytesTypeError(value);\n if (!('BYTES_PER_ELEMENT' in value))\n throw new InvalidBytesTypeError(value);\n if (value.BYTES_PER_ELEMENT !== 1 || value.constructor.name !== 'Uint8Array')\n throw new InvalidBytesTypeError(value);\n}\n/**\n * Concatenates two or more {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const bytes = Bytes.concat(\n * Bytes.from([1]),\n * Bytes.from([69]),\n * Bytes.from([420, 69]),\n * )\n * // @log: Uint8Array [ 1, 69, 420, 69 ]\n * ```\n *\n * @param values - Values to concatenate.\n * @returns Concatenated {@link ox#Bytes.Bytes}.\n */\nexport function concat(...values) {\n let length = 0;\n for (const arr of values) {\n length += arr.length;\n }\n const result = new Uint8Array(length);\n for (let i = 0, index = 0; i < values.length; i++) {\n const arr = values[i];\n result.set(arr, index);\n index += arr.length;\n }\n return result;\n}\n/**\n * Instantiates a {@link ox#Bytes.Bytes} value from a `Uint8Array`, a hex string, or an array of unsigned 8-bit integers.\n *\n * :::tip\n *\n * To instantiate from a **Boolean**, **String**, or **Number**, use one of the following:\n *\n * - `Bytes.fromBoolean`\n *\n * - `Bytes.fromString`\n *\n * - `Bytes.fromNumber`\n *\n * :::\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.from([255, 124, 5, 4])\n * // @log: Uint8Array([255, 124, 5, 4])\n *\n * const data = Bytes.from('0xdeadbeef')\n * // @log: Uint8Array([222, 173, 190, 239])\n * ```\n *\n * @param value - Value to convert.\n * @returns A {@link ox#Bytes.Bytes} instance.\n */\nexport function from(value) {\n if (value instanceof Uint8Array)\n return value;\n if (typeof value === 'string')\n return fromHex(value);\n return fromArray(value);\n}\n/**\n * Converts an array of unsigned 8-bit integers into {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromArray([255, 124, 5, 4])\n * // @log: Uint8Array([255, 124, 5, 4])\n * ```\n *\n * @param value - Value to convert.\n * @returns A {@link ox#Bytes.Bytes} instance.\n */\nexport function fromArray(value) {\n return value instanceof Uint8Array ? value : new Uint8Array(value);\n}\n/**\n * Encodes a boolean value into {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromBoolean(true)\n * // @log: Uint8Array([1])\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromBoolean(true, { size: 32 })\n * // @log: Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1])\n * ```\n *\n * @param value - Boolean value to encode.\n * @param options - Encoding options.\n * @returns Encoded {@link ox#Bytes.Bytes}.\n */\nexport function fromBoolean(value, options = {}) {\n const { size } = options;\n const bytes = new Uint8Array(1);\n bytes[0] = Number(value);\n if (typeof size === 'number') {\n internal.assertSize(bytes, size);\n return padLeft(bytes, size);\n }\n return bytes;\n}\n/**\n * Encodes a {@link ox#Hex.Hex} value into {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromHex('0x48656c6c6f20776f726c6421')\n * // @log: Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromHex('0x48656c6c6f20776f726c6421', { size: 32 })\n * // @log: Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n * ```\n *\n * @param value - {@link ox#Hex.Hex} value to encode.\n * @param options - Encoding options.\n * @returns Encoded {@link ox#Bytes.Bytes}.\n */\nexport function fromHex(value, options = {}) {\n const { size } = options;\n let hex = value;\n if (size) {\n internal_hex.assertSize(value, size);\n hex = Hex.padRight(value, size);\n }\n let hexString = hex.slice(2);\n if (hexString.length % 2)\n hexString = `0${hexString}`;\n const length = hexString.length / 2;\n const bytes = new Uint8Array(length);\n for (let index = 0, j = 0; index < length; index++) {\n const nibbleLeft = internal.charCodeToBase16(hexString.charCodeAt(j++));\n const nibbleRight = internal.charCodeToBase16(hexString.charCodeAt(j++));\n if (nibbleLeft === undefined || nibbleRight === undefined) {\n throw new Errors.BaseError(`Invalid byte sequence (\"${hexString[j - 2]}${hexString[j - 1]}\" in \"${hexString}\").`);\n }\n bytes[index] = nibbleLeft * 16 + nibbleRight;\n }\n return bytes;\n}\n/**\n * Encodes a number value into {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromNumber(420)\n * // @log: Uint8Array([1, 164])\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromNumber(420, { size: 4 })\n * // @log: Uint8Array([0, 0, 1, 164])\n * ```\n *\n * @param value - Number value to encode.\n * @param options - Encoding options.\n * @returns Encoded {@link ox#Bytes.Bytes}.\n */\nexport function fromNumber(value, options) {\n const hex = Hex.fromNumber(value, options);\n return fromHex(hex);\n}\n/**\n * Encodes a string into {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromString('Hello world!')\n * // @log: Uint8Array([72, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 33])\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.fromString('Hello world!', { size: 32 })\n * // @log: Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n * ```\n *\n * @param value - String to encode.\n * @param options - Encoding options.\n * @returns Encoded {@link ox#Bytes.Bytes}.\n */\nexport function fromString(value, options = {}) {\n const { size } = options;\n const bytes = encoder.encode(value);\n if (typeof size === 'number') {\n internal.assertSize(bytes, size);\n return padRight(bytes, size);\n }\n return bytes;\n}\n/**\n * Checks if two {@link ox#Bytes.Bytes} values are equal.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.isEqual(Bytes.from([1]), Bytes.from([1]))\n * // @log: true\n *\n * Bytes.isEqual(Bytes.from([1]), Bytes.from([2]))\n * // @log: false\n * ```\n *\n * @param bytesA - First {@link ox#Bytes.Bytes} value.\n * @param bytesB - Second {@link ox#Bytes.Bytes} value.\n * @returns `true` if the two values are equal, otherwise `false`.\n */\nexport function isEqual(bytesA, bytesB) {\n return equalBytes(bytesA, bytesB);\n}\n/**\n * Pads a {@link ox#Bytes.Bytes} value to the left with zero bytes until it reaches the given `size` (default: 32 bytes).\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.padLeft(Bytes.from([1]), 4)\n * // @log: Uint8Array([0, 0, 0, 1])\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} value to pad.\n * @param size - Size to pad the {@link ox#Bytes.Bytes} value to.\n * @returns Padded {@link ox#Bytes.Bytes} value.\n */\nexport function padLeft(value, size) {\n return internal.pad(value, { dir: 'left', size });\n}\n/**\n * Pads a {@link ox#Bytes.Bytes} value to the right with zero bytes until it reaches the given `size` (default: 32 bytes).\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.padRight(Bytes.from([1]), 4)\n * // @log: Uint8Array([1, 0, 0, 0])\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} value to pad.\n * @param size - Size to pad the {@link ox#Bytes.Bytes} value to.\n * @returns Padded {@link ox#Bytes.Bytes} value.\n */\nexport function padRight(value, size) {\n return internal.pad(value, { dir: 'right', size });\n}\n/**\n * Generates random {@link ox#Bytes.Bytes} of the specified length.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const bytes = Bytes.random(32)\n * // @log: Uint8Array([... x32])\n * ```\n *\n * @param length - Length of the random {@link ox#Bytes.Bytes} to generate.\n * @returns Random {@link ox#Bytes.Bytes} of the specified length.\n */\nexport function random(length) {\n return crypto.getRandomValues(new Uint8Array(length));\n}\n/**\n * Retrieves the size of a {@link ox#Bytes.Bytes} value.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.size(Bytes.from([1, 2, 3, 4]))\n * // @log: 4\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} value.\n * @returns Size of the {@link ox#Bytes.Bytes} value.\n */\nexport function size(value) {\n return value.length;\n}\n/**\n * Returns a section of a {@link ox#Bytes.Bytes} value given a start/end bytes offset.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.slice(\n * Bytes.from([1, 2, 3, 4, 5, 6, 7, 8, 9]),\n * 1,\n * 4,\n * )\n * // @log: Uint8Array([2, 3, 4])\n * ```\n *\n * @param value - The {@link ox#Bytes.Bytes} value.\n * @param start - Start offset.\n * @param end - End offset.\n * @param options - Slice options.\n * @returns Sliced {@link ox#Bytes.Bytes} value.\n */\nexport function slice(value, start, end, options = {}) {\n const { strict } = options;\n internal.assertStartOffset(value, start);\n const value_ = value.slice(start, end);\n if (strict)\n internal.assertEndOffset(value_, start, end);\n return value_;\n}\n/**\n * Decodes a {@link ox#Bytes.Bytes} into a bigint.\n *\n * @example\n * ```ts\n * import { Bytes } from 'ox'\n *\n * Bytes.toBigInt(Bytes.from([1, 164]))\n * // @log: 420n\n * ```\n *\n * @param bytes - The {@link ox#Bytes.Bytes} to decode.\n * @param options - Decoding options.\n * @returns Decoded bigint.\n */\nexport function toBigInt(bytes, options = {}) {\n const { size } = options;\n if (typeof size !== 'undefined')\n internal.assertSize(bytes, size);\n const hex = Hex.fromBytes(bytes, options);\n return Hex.toBigInt(hex, options);\n}\n/**\n * Decodes a {@link ox#Bytes.Bytes} into a boolean.\n *\n * @example\n * ```ts\n * import { Bytes } from 'ox'\n *\n * Bytes.toBoolean(Bytes.from([1]))\n * // @log: true\n * ```\n *\n * @param bytes - The {@link ox#Bytes.Bytes} to decode.\n * @param options - Decoding options.\n * @returns Decoded boolean.\n */\nexport function toBoolean(bytes, options = {}) {\n const { size } = options;\n let bytes_ = bytes;\n if (typeof size !== 'undefined') {\n internal.assertSize(bytes_, size);\n bytes_ = trimLeft(bytes_);\n }\n if (bytes_.length > 1 || bytes_[0] > 1)\n throw new InvalidBytesBooleanError(bytes_);\n return Boolean(bytes_[0]);\n}\n/**\n * Encodes a {@link ox#Bytes.Bytes} value into a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.toHex(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // '0x48656c6c6f20576f726c6421'\n * ```\n *\n * @param value - The {@link ox#Bytes.Bytes} to decode.\n * @param options - Options.\n * @returns Decoded {@link ox#Hex.Hex} value.\n */\nexport function toHex(value, options = {}) {\n return Hex.fromBytes(value, options);\n}\n/**\n * Decodes a {@link ox#Bytes.Bytes} into a number.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.toNumber(Bytes.from([1, 164]))\n * // @log: 420\n * ```\n */\nexport function toNumber(bytes, options = {}) {\n const { size } = options;\n if (typeof size !== 'undefined')\n internal.assertSize(bytes, size);\n const hex = Hex.fromBytes(bytes, options);\n return Hex.toNumber(hex, options);\n}\n/**\n * Decodes a {@link ox#Bytes.Bytes} into a string.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * const data = Bytes.toString(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))\n * // @log: 'Hello world'\n * ```\n *\n * @param bytes - The {@link ox#Bytes.Bytes} to decode.\n * @param options - Options.\n * @returns Decoded string.\n */\nexport function toString(bytes, options = {}) {\n const { size } = options;\n let bytes_ = bytes;\n if (typeof size !== 'undefined') {\n internal.assertSize(bytes_, size);\n bytes_ = trimRight(bytes_);\n }\n return decoder.decode(bytes_);\n}\n/**\n * Trims leading zeros from a {@link ox#Bytes.Bytes} value.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.trimLeft(Bytes.from([0, 0, 0, 0, 1, 2, 3]))\n * // @log: Uint8Array([1, 2, 3])\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} value.\n * @returns Trimmed {@link ox#Bytes.Bytes} value.\n */\nexport function trimLeft(value) {\n return internal.trim(value, { dir: 'left' });\n}\n/**\n * Trims trailing zeros from a {@link ox#Bytes.Bytes} value.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.trimRight(Bytes.from([1, 2, 3, 0, 0, 0, 0]))\n * // @log: Uint8Array([1, 2, 3])\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} value.\n * @returns Trimmed {@link ox#Bytes.Bytes} value.\n */\nexport function trimRight(value) {\n return internal.trim(value, { dir: 'right' });\n}\n/**\n * Checks if the given value is {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.validate('0x')\n * // @log: false\n *\n * Bytes.validate(Bytes.from([1, 2, 3]))\n * // @log: true\n * ```\n *\n * @param value - Value to check.\n * @returns `true` if the value is {@link ox#Bytes.Bytes}, otherwise `false`.\n */\nexport function validate(value) {\n try {\n assert(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/**\n * Thrown when the bytes value cannot be represented as a boolean.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.toBoolean(Bytes.from([5]))\n * // @error: Bytes.InvalidBytesBooleanError: Bytes value `[5]` is not a valid boolean.\n * // @error: The bytes array must contain a single byte of either a `0` or `1` value.\n * ```\n */\nexport class InvalidBytesBooleanError extends Errors.BaseError {\n constructor(bytes) {\n super(`Bytes value \\`${bytes}\\` is not a valid boolean.`, {\n metaMessages: [\n 'The bytes array must contain a single byte of either a `0` or `1` value.',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Bytes.InvalidBytesBooleanError'\n });\n }\n}\n/**\n * Thrown when a value cannot be converted to bytes.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Bytes } from 'ox'\n *\n * Bytes.from('foo')\n * // @error: Bytes.InvalidBytesTypeError: Value `foo` of type `string` is an invalid Bytes value.\n * ```\n */\nexport class InvalidBytesTypeError extends Errors.BaseError {\n constructor(value) {\n super(`Value \\`${typeof value === 'object' ? Json.stringify(value) : value}\\` of type \\`${typeof value}\\` is an invalid Bytes value.`, {\n metaMessages: ['Bytes values must be of type `Bytes`.'],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Bytes.InvalidBytesTypeError'\n });\n }\n}\n/**\n * Thrown when a size exceeds the maximum allowed size.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.fromString('Hello World!', { size: 8 })\n * // @error: Bytes.SizeOverflowError: Size cannot exceed `8` bytes. Given size: `12` bytes.\n * ```\n */\nexport class SizeOverflowError extends Errors.BaseError {\n constructor({ givenSize, maxSize }) {\n super(`Size cannot exceed \\`${maxSize}\\` bytes. Given size: \\`${givenSize}\\` bytes.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Bytes.SizeOverflowError'\n });\n }\n}\n/**\n * Thrown when a slice offset is out-of-bounds.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.slice(Bytes.from([1, 2, 3]), 4)\n * // @error: Bytes.SliceOffsetOutOfBoundsError: Slice starting at offset `4` is out-of-bounds (size: `3`).\n * ```\n */\nexport class SliceOffsetOutOfBoundsError extends Errors.BaseError {\n constructor({ offset, position, size, }) {\n super(`Slice ${position === 'start' ? 'starting' : 'ending'} at offset \\`${offset}\\` is out-of-bounds (size: \\`${size}\\`).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Bytes.SliceOffsetOutOfBoundsError'\n });\n }\n}\n/**\n * Thrown when a the padding size exceeds the maximum allowed size.\n *\n * @example\n * ```ts twoslash\n * import { Bytes } from 'ox'\n *\n * Bytes.padLeft(Bytes.fromString('Hello World!'), 8)\n * // @error: [Bytes.SizeExceedsPaddingSizeError: Bytes size (`12`) exceeds padding size (`8`).\n * ```\n */\nexport class SizeExceedsPaddingSizeError extends Errors.BaseError {\n constructor({ size, targetSize, type, }) {\n super(`${type.charAt(0).toUpperCase()}${type\n .slice(1)\n .toLowerCase()} size (\\`${size}\\`) exceeds padding size (\\`${targetSize}\\`).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Bytes.SizeExceedsPaddingSizeError'\n });\n }\n}\n//# sourceMappingURL=Bytes.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getContractError, } from '../../utils/errors/getContractError.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { call } from './call.js';\n/**\n * Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.\n *\n * - Docs: https://viem.sh/docs/contract/simulateContract\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts_writing-to-contracts\n *\n * This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions.\n *\n * Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData).\n *\n * @param client - Client to use\n * @param parameters - {@link SimulateContractParameters}\n * @returns The simulation result and write request. {@link SimulateContractReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateContract } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const result = await simulateContract(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['function mint(uint32) view returns (uint32)']),\n * functionName: 'mint',\n * args: ['69420'],\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function simulateContract(client, parameters) {\n const { abi, address, args, dataSuffix, functionName, ...callRequest } = parameters;\n const account = callRequest.account\n ? parseAccount(callRequest.account)\n : client.account;\n const calldata = encodeFunctionData({ abi, args, functionName });\n try {\n const { data } = await getAction(client, call, 'call')({\n batch: false,\n data: `${calldata}${dataSuffix ? dataSuffix.replace('0x', '') : ''}`,\n to: address,\n ...callRequest,\n account,\n });\n const result = decodeFunctionResult({\n abi,\n args,\n functionName,\n data: data || '0x',\n });\n const minimizedAbi = abi.filter((abiItem) => 'name' in abiItem && abiItem.name === parameters.functionName);\n return {\n result,\n request: {\n abi: minimizedAbi,\n address,\n args,\n dataSuffix,\n functionName,\n ...callRequest,\n account,\n },\n };\n }\n catch (error) {\n throw getContractError(error, {\n abi,\n address,\n args,\n docsPath: '/docs/contract/simulateContract',\n functionName,\n sender: account?.address,\n });\n }\n}\n//# sourceMappingURL=simulateContract.js.map","import { DecodeLogDataMismatch, DecodeLogTopicsMismatch, } from '../../errors/abi.js';\nimport { InvalidInputRpcError } from '../../errors/rpc.js';\nimport { decodeEventLog } from '../../utils/abi/decodeEventLog.js';\nimport { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { formatLog } from '../../utils/formatters/log.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { createContractEventFilter } from './createContractEventFilter.js';\nimport { getBlockNumber } from './getBlockNumber.js';\nimport { getContractEvents, } from './getContractEvents.js';\nimport { getFilterChanges } from './getFilterChanges.js';\nimport { uninstallFilter } from './uninstallFilter.js';\n/**\n * Watches and returns emitted contract event logs.\n *\n * - Docs: https://viem.sh/docs/contract/watchContractEvent\n *\n * This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs).\n *\n * `watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchContractEventParameters}\n * @returns A function that can be invoked to stop watching for new event logs. {@link WatchContractEventReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbi } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchContractEvent } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchContractEvent(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']),\n * eventName: 'Transfer',\n * args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' },\n * onLogs: (logs) => console.log(logs),\n * })\n */\nexport function watchContractEvent(client, parameters) {\n const { abi, address, args, batch = true, eventName, fromBlock, onError, onLogs, poll: poll_, pollingInterval = client.pollingInterval, strict: strict_, } = parameters;\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined')\n return poll_;\n if (typeof fromBlock === 'bigint')\n return true;\n if (client.transport.type === 'webSocket' ||\n client.transport.type === 'ipc')\n return false;\n if (client.transport.type === 'fallback' &&\n (client.transport.transports[0].config.type === 'webSocket' ||\n client.transport.transports[0].config.type === 'ipc'))\n return false;\n return true;\n })();\n const pollContractEvent = () => {\n const strict = strict_ ?? false;\n const observerId = stringify([\n 'watchContractEvent',\n address,\n args,\n batch,\n client.uid,\n eventName,\n pollingInterval,\n strict,\n fromBlock,\n ]);\n return observe(observerId, { onLogs, onError }, (emit) => {\n let previousBlockNumber;\n if (fromBlock !== undefined)\n previousBlockNumber = fromBlock - 1n;\n let filter;\n let initialized = false;\n const unwatch = poll(async () => {\n if (!initialized) {\n try {\n filter = (await getAction(client, createContractEventFilter, 'createContractEventFilter')({\n abi,\n address,\n args: args,\n eventName: eventName,\n strict: strict,\n fromBlock,\n }));\n }\n catch { }\n initialized = true;\n return;\n }\n try {\n let logs;\n if (filter) {\n logs = await getAction(client, getFilterChanges, 'getFilterChanges')({ filter });\n }\n else {\n // If the filter doesn't exist, we will fall back to use `getLogs`.\n // The fall back exists because some RPC Providers do not support filters.\n // Fetch the block number to use for `getLogs`.\n const blockNumber = await getAction(client, getBlockNumber, 'getBlockNumber')({});\n // If the block number has changed, we will need to fetch the logs.\n // If the block number doesn't exist, we are yet to reach the first poll interval,\n // so do not emit any logs.\n if (previousBlockNumber && previousBlockNumber < blockNumber) {\n logs = await getAction(client, getContractEvents, 'getContractEvents')({\n abi,\n address,\n args,\n eventName,\n fromBlock: previousBlockNumber + 1n,\n toBlock: blockNumber,\n strict,\n });\n }\n else {\n logs = [];\n }\n previousBlockNumber = blockNumber;\n }\n if (logs.length === 0)\n return;\n if (batch)\n emit.onLogs(logs);\n else\n for (const log of logs)\n emit.onLogs([log]);\n }\n catch (err) {\n // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.\n // Reinitialize the filter when this occurs\n if (filter && err instanceof InvalidInputRpcError)\n initialized = false;\n emit.onError?.(err);\n }\n }, {\n emitOnBegin: true,\n interval: pollingInterval,\n });\n return async () => {\n if (filter)\n await getAction(client, uninstallFilter, 'uninstallFilter')({ filter });\n unwatch();\n };\n });\n };\n const subscribeContractEvent = () => {\n const strict = strict_ ?? false;\n const observerId = stringify([\n 'watchContractEvent',\n address,\n args,\n batch,\n client.uid,\n eventName,\n pollingInterval,\n strict,\n ]);\n let active = true;\n let unsubscribe = () => (active = false);\n return observe(observerId, { onLogs, onError }, (emit) => {\n ;\n (async () => {\n try {\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find((transport) => transport.config.type === 'webSocket' ||\n transport.config.type === 'ipc');\n if (!transport)\n return client.transport;\n return transport.value;\n }\n return client.transport;\n })();\n const topics = eventName\n ? encodeEventTopics({\n abi: abi,\n eventName: eventName,\n args,\n })\n : [];\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['logs', { address, topics }],\n onData(data) {\n if (!active)\n return;\n const log = data.result;\n try {\n const { eventName, args } = decodeEventLog({\n abi: abi,\n data: log.data,\n topics: log.topics,\n strict: strict_,\n });\n const formatted = formatLog(log, {\n args,\n eventName: eventName,\n });\n emit.onLogs([formatted]);\n }\n catch (err) {\n let eventName;\n let isUnnamed;\n if (err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict_)\n return;\n eventName = err.abiItem.name;\n isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name));\n }\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n const formatted = formatLog(log, {\n args: isUnnamed ? [] : {},\n eventName,\n });\n emit.onLogs([formatted]);\n }\n },\n onError(error) {\n emit.onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return () => unsubscribe();\n });\n };\n return enablePolling ? pollContractEvent() : subscribeContractEvent();\n}\n//# sourceMappingURL=watchContractEvent.js.map","import { BaseError } from './base.js';\nexport class BundleFailedError extends BaseError {\n constructor(result) {\n super(`Call bundle failed with status: ${result.statusCode}`, {\n name: 'BundleFailedError',\n });\n Object.defineProperty(this, \"result\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.result = result;\n }\n}\n//# sourceMappingURL=calls.js.map","import { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { BaseError } from '../../errors/base.js';\nimport { AtomicityNotSupportedError, UnsupportedNonOptionalCapabilityError, } from '../../errors/rpc.js';\nimport { encodeFunctionData } from '../../utils/abi/encodeFunctionData.js';\nimport { concat } from '../../utils/data/concat.js';\nimport { hexToBigInt } from '../../utils/encoding/fromHex.js';\nimport { numberToHex } from '../../utils/encoding/toHex.js';\nimport { getTransactionError } from '../../utils/errors/getTransactionError.js';\nimport { sendTransaction } from './sendTransaction.js';\nexport const fallbackMagicIdentifier = '0x5792579257925792579257925792579257925792579257925792579257925792';\nexport const fallbackTransactionErrorMagicIdentifier = numberToHex(0, {\n size: 32,\n});\n/**\n * Requests the connected wallet to send a batch of calls.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/sendCalls\n * - JSON-RPC Methods: [`wallet_sendCalls`](https://eips.ethereum.org/EIPS/eip-5792)\n *\n * @param client - Client to use\n * @returns Transaction identifier. {@link SendCallsReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { sendCalls } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const id = await sendCalls(client, {\n * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * calls: [\n * {\n * data: '0xdeadbeef',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * },\n * {\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: 69420n,\n * },\n * ],\n * })\n */\nexport async function sendCalls(client, parameters) {\n const { account: account_ = client.account, capabilities, chain = client.chain, experimental_fallback, experimental_fallbackDelay = 32, forceAtomic = false, id, version = '2.0.0', } = parameters;\n const account = account_ ? parseAccount(account_) : null;\n const calls = parameters.calls.map((call_) => {\n const call = call_;\n const data = call.abi\n ? encodeFunctionData({\n abi: call.abi,\n functionName: call.functionName,\n args: call.args,\n })\n : call.data;\n return {\n data: call.dataSuffix && data ? concat([data, call.dataSuffix]) : data,\n to: call.to,\n value: call.value ? numberToHex(call.value) : undefined,\n };\n });\n try {\n const response = await client.request({\n method: 'wallet_sendCalls',\n params: [\n {\n atomicRequired: forceAtomic,\n calls,\n capabilities,\n chainId: numberToHex(chain.id),\n from: account?.address,\n id,\n version,\n },\n ],\n }, { retryCount: 0 });\n if (typeof response === 'string')\n return { id: response };\n return response;\n }\n catch (err) {\n const error = err;\n // If the transport does not support EIP-5792, fall back to\n // `eth_sendTransaction`.\n if (experimental_fallback &&\n (error.name === 'MethodNotFoundRpcError' ||\n error.name === 'MethodNotSupportedRpcError' ||\n error.name === 'UnknownRpcError' ||\n error.details\n .toLowerCase()\n .includes('does not exist / is not available') ||\n error.details.toLowerCase().includes('missing or invalid. request()') ||\n error.details\n .toLowerCase()\n .includes('did not match any variant of untagged enum') ||\n error.details\n .toLowerCase()\n .includes('account upgraded to unsupported contract') ||\n error.details.toLowerCase().includes('eip-7702 not supported') ||\n error.details.toLowerCase().includes('unsupported wc_ method') ||\n error.details.toLowerCase().includes('feature toggled misconfigured'))) {\n if (capabilities) {\n const hasNonOptionalCapability = Object.values(capabilities).some((capability) => !capability.optional);\n if (hasNonOptionalCapability) {\n const message = 'non-optional `capabilities` are not supported on fallback to `eth_sendTransaction`.';\n throw new UnsupportedNonOptionalCapabilityError(new BaseError(message, {\n details: message,\n }));\n }\n }\n if (forceAtomic && calls.length > 1) {\n const message = '`forceAtomic` is not supported on fallback to `eth_sendTransaction`.';\n throw new AtomicityNotSupportedError(new BaseError(message, {\n details: message,\n }));\n }\n const promises = [];\n for (const call of calls) {\n const promise = sendTransaction(client, {\n account,\n chain,\n data: call.data,\n to: call.to,\n value: call.value ? hexToBigInt(call.value) : undefined,\n });\n promises.push(promise);\n // Note: some browser wallets require a small delay between transactions\n // to prevent duplicate JSON-RPC requests.\n if (experimental_fallbackDelay > 0)\n await new Promise((resolve) => setTimeout(resolve, experimental_fallbackDelay));\n }\n const results = await Promise.allSettled(promises);\n if (results.every((r) => r.status === 'rejected'))\n throw results[0].reason;\n const hashes = results.map((result) => {\n if (result.status === 'fulfilled')\n return result.value;\n return fallbackTransactionErrorMagicIdentifier;\n });\n return {\n id: concat([\n ...hashes,\n numberToHex(chain.id, { size: 32 }),\n fallbackMagicIdentifier,\n ]),\n };\n }\n throw getTransactionError(err, {\n ...parameters,\n account,\n chain: parameters.chain,\n });\n }\n}\n//# sourceMappingURL=sendCalls.js.map","import { sliceHex } from '../../utils/data/slice.js';\nimport { trim } from '../../utils/data/trim.js';\nimport { hexToBigInt, hexToNumber } from '../../utils/encoding/fromHex.js';\nimport { receiptStatuses } from '../../utils/formatters/transactionReceipt.js';\nimport { fallbackMagicIdentifier, fallbackTransactionErrorMagicIdentifier, } from './sendCalls.js';\n/**\n * Returns the status of a call batch that was sent via `sendCalls`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/getCallsStatus\n * - JSON-RPC Methods: [`wallet_getCallsStatus`](https://eips.ethereum.org/EIPS/eip-5792)\n *\n * @param client - Client to use\n * @returns Status of the calls. {@link GetCallsStatusReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getCallsStatus } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n * const { receipts, status } = await getCallsStatus(client, { id: '0xdeadbeef' })\n */\nexport async function getCallsStatus(client, parameters) {\n async function getStatus(id) {\n const isTransactions = id.endsWith(fallbackMagicIdentifier.slice(2));\n if (isTransactions) {\n const chainId = trim(sliceHex(id, -64, -32));\n const hashes = sliceHex(id, 0, -64)\n .slice(2)\n .match(/.{1,64}/g);\n const receipts = await Promise.all(hashes.map((hash) => fallbackTransactionErrorMagicIdentifier.slice(2) !== hash\n ? client.request({\n method: 'eth_getTransactionReceipt',\n params: [`0x${hash}`],\n }, { dedupe: true })\n : undefined));\n const status = (() => {\n if (receipts.some((r) => r === null))\n return 100; // pending\n if (receipts.every((r) => r?.status === '0x1'))\n return 200; // success\n if (receipts.every((r) => r?.status === '0x0'))\n return 500; // complete failure\n return 600; // partial failure\n })();\n return {\n atomic: false,\n chainId: hexToNumber(chainId),\n receipts: receipts.filter(Boolean),\n status,\n version: '2.0.0',\n };\n }\n return client.request({\n method: 'wallet_getCallsStatus',\n params: [id],\n });\n }\n const { atomic = false, chainId, receipts, version = '2.0.0', ...response } = await getStatus(parameters.id);\n const [status, statusCode] = (() => {\n const statusCode = response.status;\n if (statusCode >= 100 && statusCode < 200)\n return ['pending', statusCode];\n if (statusCode >= 200 && statusCode < 300)\n return ['success', statusCode];\n if (statusCode >= 300 && statusCode < 700)\n return ['failure', statusCode];\n // @ts-expect-error: for backwards compatibility\n if (statusCode === 'CONFIRMED')\n return ['success', 200];\n // @ts-expect-error: for backwards compatibility\n if (statusCode === 'PENDING')\n return ['pending', 100];\n return [undefined, statusCode];\n })();\n return {\n ...response,\n atomic,\n // @ts-expect-error: for backwards compatibility\n chainId: chainId ? hexToNumber(chainId) : undefined,\n receipts: receipts?.map((receipt) => ({\n ...receipt,\n blockNumber: hexToBigInt(receipt.blockNumber),\n gasUsed: hexToBigInt(receipt.gasUsed),\n status: receiptStatuses[receipt.status],\n })) ?? [],\n statusCode,\n status,\n version,\n };\n}\n//# sourceMappingURL=getCallsStatus.js.map","import { BaseError } from '../../errors/base.js';\nimport { BundleFailedError } from '../../errors/calls.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { withResolvers } from '../../utils/promise/withResolvers.js';\nimport { withRetry, } from '../../utils/promise/withRetry.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getCallsStatus, } from './getCallsStatus.js';\n/**\n * Waits for the status & receipts of a call bundle that was sent via `sendCalls`.\n *\n * - Docs: https://viem.sh/docs/actions/wallet/waitForCallsStatus\n * - JSON-RPC Methods: [`wallet_getCallsStatus`](https://eips.ethereum.org/EIPS/eip-5792)\n *\n * @param client - Client to use\n * @param parameters - {@link WaitForCallsStatusParameters}\n * @returns Status & receipts of the call bundle. {@link WaitForCallsStatusReturnType}\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { waitForCallsStatus } from 'viem/actions'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum),\n * })\n *\n * const { receipts, status } = await waitForCallsStatus(client, { id: '0xdeadbeef' })\n */\nexport async function waitForCallsStatus(client, parameters) {\n const { id, pollingInterval = client.pollingInterval, status = ({ statusCode }) => statusCode === 200 || statusCode >= 300, retryCount = 4, retryDelay = ({ count }) => ~~(1 << count) * 200, // exponential backoff\n timeout = 60_000, throwOnFailure = false, } = parameters;\n const observerId = stringify(['waitForCallsStatus', client.uid, id]);\n const { promise, resolve, reject } = withResolvers();\n let timer;\n const unobserve = observe(observerId, { resolve, reject }, (emit) => {\n const unpoll = poll(async () => {\n const done = (fn) => {\n clearTimeout(timer);\n unpoll();\n fn();\n unobserve();\n };\n try {\n const result = await withRetry(async () => {\n const result = await getAction(client, getCallsStatus, 'getCallsStatus')({ id });\n if (throwOnFailure && result.status === 'failure')\n throw new BundleFailedError(result);\n return result;\n }, {\n retryCount,\n delay: retryDelay,\n });\n if (!status(result))\n return;\n done(() => emit.resolve(result));\n }\n catch (error) {\n done(() => emit.reject(error));\n }\n }, {\n interval: pollingInterval,\n emitOnBegin: true,\n });\n return unpoll;\n });\n timer = timeout\n ? setTimeout(() => {\n unobserve();\n clearTimeout(timer);\n reject(new WaitForCallsStatusTimeoutError({ id }));\n }, timeout)\n : undefined;\n return await promise;\n}\nexport class WaitForCallsStatusTimeoutError extends BaseError {\n constructor({ id }) {\n super(`Timed out while waiting for call bundle with id \"${id}\" to be confirmed.`, { name: 'WaitForCallsStatusTimeoutError' });\n }\n}\n//# sourceMappingURL=waitForCallsStatus.js.map","import { BaseError } from '../../errors/base.js';\nimport { ContractFunctionRevertedError } from '../../errors/contract.js';\n/*\n * @description Checks if error is a valid null result UniversalResolver error\n */\nexport function isNullUniversalResolverError(err) {\n if (!(err instanceof BaseError))\n return false;\n const cause = err.walk((e) => e instanceof ContractFunctionRevertedError);\n if (!(cause instanceof ContractFunctionRevertedError))\n return false;\n if (cause.data?.errorName === 'HttpError')\n return true;\n if (cause.data?.errorName === 'ResolverError')\n return true;\n if (cause.data?.errorName === 'ResolverNotContract')\n return true;\n if (cause.data?.errorName === 'ResolverNotFound')\n return true;\n if (cause.data?.errorName === 'ReverseAddressMismatch')\n return true;\n if (cause.data?.errorName === 'UnsupportedResolverProfile')\n return true;\n return false;\n}\n//# sourceMappingURL=errors.js.map","import { isHex } from '../data/isHex.js';\nexport function encodedLabelToLabelhash(label) {\n if (label.length !== 66)\n return null;\n if (label.indexOf('[') !== 0)\n return null;\n if (label.indexOf(']') !== 65)\n return null;\n const hash = `0x${label.slice(1, 65)}`;\n if (!isHex(hash))\n return null;\n return hash;\n}\n//# sourceMappingURL=encodedLabelToLabelhash.js.map","import { concat } from '../data/concat.js';\nimport { stringToBytes, toBytes, } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { encodedLabelToLabelhash, } from './encodedLabelToLabelhash.js';\n/**\n * @description Hashes ENS name\n *\n * - Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `namehash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * namehash('wevm.eth')\n * '0x08c85f2f4059e930c45a6aeff9dcd3bd95dc3c5c1cddef6a0626b31152248560'\n *\n * @link https://eips.ethereum.org/EIPS/eip-137\n */\nexport function namehash(name) {\n let result = new Uint8Array(32).fill(0);\n if (!name)\n return bytesToHex(result);\n const labels = name.split('.');\n // Iterate in reverse order building up hash\n for (let i = labels.length - 1; i >= 0; i -= 1) {\n const hashFromEncodedLabel = encodedLabelToLabelhash(labels[i]);\n const hashed = hashFromEncodedLabel\n ? toBytes(hashFromEncodedLabel)\n : keccak256(stringToBytes(labels[i]), 'bytes');\n result = keccak256(concat([result, hashed]), 'bytes');\n }\n return bytesToHex(result);\n}\n//# sourceMappingURL=namehash.js.map","export function encodeLabelhash(hash) {\n return `[${hash.slice(2)}]`;\n}\n//# sourceMappingURL=encodeLabelhash.js.map","import { stringToBytes, } from '../encoding/toBytes.js';\nimport { bytesToHex } from '../encoding/toHex.js';\nimport { keccak256 } from '../hash/keccak256.js';\nimport { encodedLabelToLabelhash, } from './encodedLabelToLabelhash.js';\n/**\n * @description Hashes ENS label\n *\n * - Since ENS labels prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS labels](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `labelhash`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @example\n * labelhash('eth')\n * '0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0'\n */\nexport function labelhash(label) {\n const result = new Uint8Array(32).fill(0);\n if (!label)\n return bytesToHex(result);\n return encodedLabelToLabelhash(label) || keccak256(stringToBytes(label));\n}\n//# sourceMappingURL=labelhash.js.map","import { stringToBytes, } from '../encoding/toBytes.js';\nimport { encodeLabelhash, } from './encodeLabelhash.js';\nimport { labelhash } from './labelhash.js';\n/*\n * @description Encodes a DNS packet into a ByteArray containing a UDP payload.\n *\n * @example\n * packetToBytes('awkweb.eth')\n * '0x0661776b7765620365746800'\n *\n * @see https://docs.ens.domains/resolution/names#dns\n *\n */\nexport function packetToBytes(packet) {\n // strip leading and trailing `.`\n const value = packet.replace(/^\\.|\\.$/gm, '');\n if (value.length === 0)\n return new Uint8Array(1);\n const bytes = new Uint8Array(stringToBytes(value).byteLength + 2);\n let offset = 0;\n const list = value.split('.');\n for (let i = 0; i < list.length; i++) {\n let encoded = stringToBytes(list[i]);\n // if the length is > 255, make the encoded label value a labelhash\n // this is compatible with the universal resolver\n if (encoded.byteLength > 255)\n encoded = stringToBytes(encodeLabelhash(labelhash(list[i])));\n bytes[offset] = encoded.length;\n bytes.set(encoded, offset + 1);\n offset += encoded.length + 1;\n }\n if (bytes.byteLength !== offset + 1)\n return bytes.slice(0, offset + 1);\n return bytes;\n}\n//# sourceMappingURL=packetToBytes.js.map","import { addressResolverAbi, universalResolverResolveAbi, } from '../../constants/abis.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { trim } from '../../utils/data/trim.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { localBatchGatewayUrl } from '../../utils/ens/localBatchGatewayRequest.js';\nimport { namehash } from '../../utils/ens/namehash.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets address for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAddress\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAddressParameters}\n * @returns Address for ENS name or `null` if not found. {@link GetEnsAddressReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAddress, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAddress = await getEnsAddress(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0xd2135CfB216b74109775236E36d4b433F1DF507B'\n */\nexport async function getEnsAddress(client, parameters) {\n const { blockNumber, blockTag, coinType, name, gatewayUrls, strict } = parameters;\n const { chain } = client;\n const universalResolverAddress = (() => {\n if (parameters.universalResolverAddress)\n return parameters.universalResolverAddress;\n if (!chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n return getChainContractAddress({\n blockNumber,\n chain,\n contract: 'ensUniversalResolver',\n });\n })();\n const tlds = chain?.ensTlds;\n if (tlds && !tlds.some((tld) => name.endsWith(tld)))\n return null;\n const args = (() => {\n if (coinType != null)\n return [namehash(name), BigInt(coinType)];\n return [namehash(name)];\n })();\n try {\n const functionData = encodeFunctionData({\n abi: addressResolverAbi,\n functionName: 'addr',\n args,\n });\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n functionName: 'resolveWithGateways',\n args: [\n toHex(packetToBytes(name)),\n functionData,\n gatewayUrls ?? [localBatchGatewayUrl],\n ],\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const res = await readContractAction(readContractParameters);\n if (res[0] === '0x')\n return null;\n const address = decodeFunctionResult({\n abi: addressResolverAbi,\n args,\n functionName: 'addr',\n data: res[0],\n });\n if (address === '0x')\n return null;\n if (trim(address) === '0x00')\n return null;\n return address;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsAddress.js.map","import { BaseError } from './base.js';\nexport class EnsAvatarInvalidMetadataError extends BaseError {\n constructor({ data }) {\n super('Unable to extract image from metadata. The metadata may be malformed or invalid.', {\n metaMessages: [\n '- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.',\n '',\n `Provided data: ${JSON.stringify(data)}`,\n ],\n name: 'EnsAvatarInvalidMetadataError',\n });\n }\n}\nexport class EnsAvatarInvalidNftUriError extends BaseError {\n constructor({ reason }) {\n super(`ENS NFT avatar URI is invalid. ${reason}`, {\n name: 'EnsAvatarInvalidNftUriError',\n });\n }\n}\nexport class EnsAvatarUriResolutionError extends BaseError {\n constructor({ uri }) {\n super(`Unable to resolve ENS avatar URI \"${uri}\". The URI may be malformed, invalid, or does not respond with a valid image.`, { name: 'EnsAvatarUriResolutionError' });\n }\n}\nexport class EnsAvatarUnsupportedNamespaceError extends BaseError {\n constructor({ namespace }) {\n super(`ENS NFT avatar namespace \"${namespace}\" is not supported. Must be \"erc721\" or \"erc1155\".`, { name: 'EnsAvatarUnsupportedNamespaceError' });\n }\n}\nexport class EnsInvalidChainIdError extends BaseError {\n constructor({ chainId }) {\n super(`Invalid ENSIP-11 chainId: ${chainId}. Must be between 0 and 0x7fffffff, or 1.`, {\n name: 'EnsInvalidChainIdError',\n });\n }\n}\n//# sourceMappingURL=ens.js.map","import { readContract, } from '../../../actions/public/readContract.js';\nimport { EnsAvatarInvalidMetadataError, EnsAvatarInvalidNftUriError, EnsAvatarUnsupportedNamespaceError, EnsAvatarUriResolutionError, } from '../../../errors/ens.js';\nconst networkRegex = /(?<protocol>https?:\\/\\/[^/]*|ipfs:\\/|ipns:\\/|ar:\\/)?(?<root>\\/)?(?<subpath>ipfs\\/|ipns\\/)?(?<target>[\\w\\-.]+)(?<subtarget>\\/.*)?/;\nconst ipfsHashRegex = /^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\\/(?<target>[\\w\\-.]+))?(?<subtarget>\\/.*)?$/;\nconst base64Regex = /^data:([a-zA-Z\\-/+]*);base64,([^\"].*)/;\nconst dataURIRegex = /^data:([a-zA-Z\\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;\n/** @internal */\nexport async function isImageUri(uri) {\n try {\n const res = await fetch(uri, { method: 'HEAD' });\n // retrieve content type header to check if content is image\n if (res.status === 200) {\n const contentType = res.headers.get('content-type');\n return contentType?.startsWith('image/');\n }\n return false;\n }\n catch (error) {\n // if error is not cors related then fail\n if (typeof error === 'object' && typeof error.response !== 'undefined') {\n return false;\n }\n // fail in NodeJS, since the error is not cors but any other network issue\n if (!Object.hasOwn(globalThis, 'Image'))\n return false;\n // in case of cors, use image api to validate if given url is an actual image\n return new Promise((resolve) => {\n const img = new Image();\n img.onload = () => {\n resolve(true);\n };\n img.onerror = () => {\n resolve(false);\n };\n img.src = uri;\n });\n }\n}\n/** @internal */\nexport function getGateway(custom, defaultGateway) {\n if (!custom)\n return defaultGateway;\n if (custom.endsWith('/'))\n return custom.slice(0, -1);\n return custom;\n}\nexport function resolveAvatarUri({ uri, gatewayUrls, }) {\n const isEncoded = base64Regex.test(uri);\n if (isEncoded)\n return { uri, isOnChain: true, isEncoded };\n const ipfsGateway = getGateway(gatewayUrls?.ipfs, 'https://ipfs.io');\n const arweaveGateway = getGateway(gatewayUrls?.arweave, 'https://arweave.net');\n const networkRegexMatch = uri.match(networkRegex);\n const { protocol, subpath, target, subtarget = '', } = networkRegexMatch?.groups || {};\n const isIPNS = protocol === 'ipns:/' || subpath === 'ipns/';\n const isIPFS = protocol === 'ipfs:/' || subpath === 'ipfs/' || ipfsHashRegex.test(uri);\n if (uri.startsWith('http') && !isIPNS && !isIPFS) {\n let replacedUri = uri;\n if (gatewayUrls?.arweave)\n replacedUri = uri.replace(/https:\\/\\/arweave.net/g, gatewayUrls?.arweave);\n return { uri: replacedUri, isOnChain: false, isEncoded: false };\n }\n if ((isIPNS || isIPFS) && target) {\n return {\n uri: `${ipfsGateway}/${isIPNS ? 'ipns' : 'ipfs'}/${target}${subtarget}`,\n isOnChain: false,\n isEncoded: false,\n };\n }\n if (protocol === 'ar:/' && target) {\n return {\n uri: `${arweaveGateway}/${target}${subtarget || ''}`,\n isOnChain: false,\n isEncoded: false,\n };\n }\n let parsedUri = uri.replace(dataURIRegex, '');\n if (parsedUri.startsWith('<svg')) {\n // if svg, base64 encode\n parsedUri = `data:image/svg+xml;base64,${btoa(parsedUri)}`;\n }\n if (parsedUri.startsWith('data:') || parsedUri.startsWith('{')) {\n return {\n uri: parsedUri,\n isOnChain: true,\n isEncoded: false,\n };\n }\n throw new EnsAvatarUriResolutionError({ uri });\n}\nexport function getJsonImage(data) {\n // validation check for json data, must include one of theses properties\n if (typeof data !== 'object' ||\n (!('image' in data) && !('image_url' in data) && !('image_data' in data))) {\n throw new EnsAvatarInvalidMetadataError({ data });\n }\n return data.image || data.image_url || data.image_data;\n}\nexport async function getMetadataAvatarUri({ gatewayUrls, uri, }) {\n try {\n const res = await fetch(uri).then((res) => res.json());\n const image = await parseAvatarUri({\n gatewayUrls,\n uri: getJsonImage(res),\n });\n return image;\n }\n catch {\n throw new EnsAvatarUriResolutionError({ uri });\n }\n}\nexport async function parseAvatarUri({ gatewayUrls, uri, }) {\n const { uri: resolvedURI, isOnChain } = resolveAvatarUri({ uri, gatewayUrls });\n if (isOnChain)\n return resolvedURI;\n // check if resolvedURI is an image, if it is return the url\n const isImage = await isImageUri(resolvedURI);\n if (isImage)\n return resolvedURI;\n throw new EnsAvatarUriResolutionError({ uri });\n}\nexport function parseNftUri(uri_) {\n let uri = uri_;\n // parse valid nft spec (CAIP-22/CAIP-29)\n // @see: https://github.com/ChainAgnostic/CAIPs/tree/master/CAIPs\n if (uri.startsWith('did:nft:')) {\n // convert DID to CAIP\n uri = uri.replace('did:nft:', '').replace(/_/g, '/');\n }\n const [reference, asset_namespace, tokenID] = uri.split('/');\n const [eip_namespace, chainID] = reference.split(':');\n const [erc_namespace, contractAddress] = asset_namespace.split(':');\n if (!eip_namespace || eip_namespace.toLowerCase() !== 'eip155')\n throw new EnsAvatarInvalidNftUriError({ reason: 'Only EIP-155 supported' });\n if (!chainID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Chain ID not found' });\n if (!contractAddress)\n throw new EnsAvatarInvalidNftUriError({\n reason: 'Contract address not found',\n });\n if (!tokenID)\n throw new EnsAvatarInvalidNftUriError({ reason: 'Token ID not found' });\n if (!erc_namespace)\n throw new EnsAvatarInvalidNftUriError({ reason: 'ERC namespace not found' });\n return {\n chainID: Number.parseInt(chainID, 10),\n namespace: erc_namespace.toLowerCase(),\n contractAddress: contractAddress,\n tokenID,\n };\n}\nexport async function getNftTokenUri(client, { nft }) {\n if (nft.namespace === 'erc721') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'tokenURI',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: 'tokenId', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'tokenURI',\n args: [BigInt(nft.tokenID)],\n });\n }\n if (nft.namespace === 'erc1155') {\n return readContract(client, {\n address: nft.contractAddress,\n abi: [\n {\n name: 'uri',\n type: 'function',\n stateMutability: 'view',\n inputs: [{ name: '_id', type: 'uint256' }],\n outputs: [{ name: '', type: 'string' }],\n },\n ],\n functionName: 'uri',\n args: [BigInt(nft.tokenID)],\n });\n }\n throw new EnsAvatarUnsupportedNamespaceError({ namespace: nft.namespace });\n}\n//# sourceMappingURL=utils.js.map","import { getJsonImage, getMetadataAvatarUri, getNftTokenUri, parseAvatarUri, parseNftUri, resolveAvatarUri, } from './utils.js';\n/*\n * @description Parses an ENS avatar record.\n *\n * @example\n * parseAvatarRecord('eip155:1/erc1155:0xb32979486938aa9694bfc898f35dbed459f44424/10063')\n * 'https://ipfs.io/ipfs/QmSP4nq9fnN9dAiCj42ug9Wa79rqmQerZXZch82VqpiH7U/image.gif'\n *\n * @see https://docs.ens.domains/web/avatars\n *\n */\nexport async function parseAvatarRecord(client, { gatewayUrls, record, }) {\n if (/eip155:/i.test(record))\n return parseNftAvatarUri(client, { gatewayUrls, record });\n return parseAvatarUri({ uri: record, gatewayUrls });\n}\nasync function parseNftAvatarUri(client, { gatewayUrls, record, }) {\n // parse NFT URI into properties\n const nft = parseNftUri(record);\n // fetch tokenURI from the NFT contract\n const nftUri = await getNftTokenUri(client, { nft });\n // resolve the URI from the fetched tokenURI\n const { uri: resolvedNftUri, isOnChain, isEncoded, } = resolveAvatarUri({ uri: nftUri, gatewayUrls });\n // if the resolved URI is on chain, return the data\n if (isOnChain &&\n (resolvedNftUri.includes('data:application/json;base64,') ||\n resolvedNftUri.startsWith('{'))) {\n const encodedJson = isEncoded\n ? // if it is encoded, decode it\n atob(resolvedNftUri.replace('data:application/json;base64,', ''))\n : // if it isn't encoded assume it is a JSON string, but it could be anything (it will error if it is)\n resolvedNftUri;\n const decoded = JSON.parse(encodedJson);\n return parseAvatarUri({ uri: getJsonImage(decoded), gatewayUrls });\n }\n let uriTokenId = nft.tokenID;\n if (nft.namespace === 'erc1155')\n uriTokenId = uriTokenId.replace('0x', '').padStart(64, '0');\n return getMetadataAvatarUri({\n gatewayUrls,\n uri: resolvedNftUri.replace(/(?:0x)?{id}/, uriTokenId),\n });\n}\n//# sourceMappingURL=parseAvatarRecord.js.map","import { textResolverAbi, universalResolverResolveAbi, } from '../../constants/abis.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { localBatchGatewayUrl } from '../../utils/ens/localBatchGatewayRequest.js';\nimport { namehash } from '../../utils/ens/namehash.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets a text record for specified ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsTextParameters}\n * @returns Address for ENS resolver. {@link GetEnsTextReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsText, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const twitterRecord = await getEnsText(client, {\n * name: normalize('wevm.eth'),\n * key: 'com.twitter',\n * })\n * // 'wevm_dev'\n */\nexport async function getEnsText(client, parameters) {\n const { blockNumber, blockTag, key, name, gatewayUrls, strict } = parameters;\n const { chain } = client;\n const universalResolverAddress = (() => {\n if (parameters.universalResolverAddress)\n return parameters.universalResolverAddress;\n if (!chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n return getChainContractAddress({\n blockNumber,\n chain,\n contract: 'ensUniversalResolver',\n });\n })();\n const tlds = chain?.ensTlds;\n if (tlds && !tlds.some((tld) => name.endsWith(tld)))\n return null;\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverResolveAbi,\n args: [\n toHex(packetToBytes(name)),\n encodeFunctionData({\n abi: textResolverAbi,\n functionName: 'text',\n args: [namehash(name), key],\n }),\n gatewayUrls ?? [localBatchGatewayUrl],\n ],\n functionName: 'resolveWithGateways',\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const res = await readContractAction(readContractParameters);\n if (res[0] === '0x')\n return null;\n const record = decodeFunctionResult({\n abi: textResolverAbi,\n functionName: 'text',\n data: res[0],\n });\n return record === '' ? null : record;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsText.js.map","import { parseAvatarRecord, } from '../../utils/ens/avatar/parseAvatarRecord.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getEnsText, } from './getEnsText.js';\n/**\n * Gets the avatar of an ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsAvatarParameters}\n * @returns Avatar URI or `null` if not found. {@link GetEnsAvatarReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsAvatar, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensAvatar = await getEnsAvatar(client, {\n * name: normalize('wevm.eth'),\n * })\n * // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio'\n */\nexport async function getEnsAvatar(client, { blockNumber, blockTag, assetGatewayUrls, name, gatewayUrls, strict, universalResolverAddress, }) {\n const record = await getAction(client, getEnsText, 'getEnsText')({\n blockNumber,\n blockTag,\n key: 'avatar',\n name,\n universalResolverAddress,\n gatewayUrls,\n strict,\n });\n if (!record)\n return null;\n try {\n return await parseAvatarRecord(client, {\n record,\n gatewayUrls: assetGatewayUrls,\n });\n }\n catch {\n return null;\n }\n}\n//# sourceMappingURL=getEnsAvatar.js.map","import { universalResolverReverseAbi } from '../../constants/abis.js';\nimport { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { isNullUniversalResolverError } from '../../utils/ens/errors.js';\nimport { localBatchGatewayUrl } from '../../utils/ens/localBatchGatewayRequest.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets primary name for specified address.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsName\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `reverse(bytes)` on ENS Universal Resolver Contract to \"reverse resolve\" the address to the primary ENS name.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsNameParameters}\n * @returns Name or `null` if not found. {@link GetEnsNameReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsName } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const ensName = await getEnsName(client, {\n * address: '0xd2135CfB216b74109775236E36d4b433F1DF507B',\n * })\n * // 'wevm.eth'\n */\nexport async function getEnsName(client, parameters) {\n const { address, blockNumber, blockTag, coinType = 60n, gatewayUrls, strict, } = parameters;\n const { chain } = client;\n const universalResolverAddress = (() => {\n if (parameters.universalResolverAddress)\n return parameters.universalResolverAddress;\n if (!chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n return getChainContractAddress({\n blockNumber,\n chain,\n contract: 'ensUniversalResolver',\n });\n })();\n try {\n const readContractParameters = {\n address: universalResolverAddress,\n abi: universalResolverReverseAbi,\n args: [address, coinType, gatewayUrls ?? [localBatchGatewayUrl]],\n functionName: 'reverseWithGateways',\n blockNumber,\n blockTag,\n };\n const readContractAction = getAction(client, readContract, 'readContract');\n const [name] = await readContractAction(readContractParameters);\n return name || null;\n }\n catch (err) {\n if (strict)\n throw err;\n if (isNullUniversalResolverError(err))\n return null;\n throw err;\n }\n}\n//# sourceMappingURL=getEnsName.js.map","import { getChainContractAddress, } from '../../utils/chain/getChainContractAddress.js';\nimport { toHex } from '../../utils/encoding/toHex.js';\nimport { packetToBytes, } from '../../utils/ens/packetToBytes.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from '../public/readContract.js';\n/**\n * Gets resolver for ENS name.\n *\n * - Docs: https://viem.sh/docs/ens/actions/getEnsResolver\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens\n *\n * Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name.\n *\n * Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this.\n *\n * @param client - Client to use\n * @param parameters - {@link GetEnsResolverParameters}\n * @returns Address for ENS resolver. {@link GetEnsResolverReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getEnsResolver, normalize } from 'viem/ens'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const resolverAddress = await getEnsResolver(client, {\n * name: normalize('wevm.eth'),\n * })\n * // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41'\n */\nexport async function getEnsResolver(client, parameters) {\n const { blockNumber, blockTag, name } = parameters;\n const { chain } = client;\n const universalResolverAddress = (() => {\n if (parameters.universalResolverAddress)\n return parameters.universalResolverAddress;\n if (!chain)\n throw new Error('client chain not configured. universalResolverAddress is required.');\n return getChainContractAddress({\n blockNumber,\n chain,\n contract: 'ensUniversalResolver',\n });\n })();\n const tlds = chain?.ensTlds;\n if (tlds && !tlds.some((tld) => name.endsWith(tld)))\n throw new Error(`${name} is not a valid ENS TLD (${tlds?.join(', ')}) for chain \"${chain.name}\" (id: ${chain.id}).`);\n const [resolverAddress] = await getAction(client, readContract, 'readContract')({\n address: universalResolverAddress,\n abi: [\n {\n inputs: [{ type: 'bytes' }],\n name: 'findResolver',\n outputs: [\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint256' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n ],\n functionName: 'findResolver',\n args: [toHex(packetToBytes(name))],\n blockNumber,\n blockTag,\n });\n return resolverAddress;\n}\n//# sourceMappingURL=getEnsResolver.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { getCallError, } from '../../utils/errors/getCallError.js';\nimport { extract } from '../../utils/formatters/extract.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { assertRequest } from '../../utils/transaction/assertRequest.js';\n/**\n * Creates an EIP-2930 access list.\n *\n * - Docs: https://viem.sh/docs/actions/public/createAccessList\n * - JSON-RPC Methods: `eth_createAccessList`\n *\n * @param client - Client to use\n * @param parameters - {@link CreateAccessListParameters}\n * @returns The access list. {@link CreateAccessListReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createAccessList } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const data = await createAccessList(client, {\n * account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266',\n * data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * })\n */\nexport async function createAccessList(client, args) {\n const { account: account_ = client.account, blockNumber, blockTag = 'latest', blobs, data, gas, gasPrice, maxFeePerBlobGas, maxFeePerGas, maxPriorityFeePerGas, to, value, ...rest } = args;\n const account = account_ ? parseAccount(account_) : undefined;\n try {\n assertRequest(args);\n const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n const block = blockNumberHex || blockTag;\n const chainFormat = client.chain?.formatters?.transactionRequest?.format;\n const format = chainFormat || formatTransactionRequest;\n const request = format({\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { format: chainFormat }),\n from: account?.address,\n blobs,\n data,\n gas,\n gasPrice,\n maxFeePerBlobGas,\n maxFeePerGas,\n maxPriorityFeePerGas,\n to,\n value,\n });\n const response = await client.request({\n method: 'eth_createAccessList',\n params: [request, block],\n });\n return {\n accessList: response.accessList,\n gasUsed: BigInt(response.gasUsed),\n };\n }\n catch (err) {\n throw getCallError(err, {\n ...args,\n account,\n chain: client.chain,\n });\n }\n}\n//# sourceMappingURL=createAccessList.js.map","import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createBlockFilter\n * - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter)\n *\n * @param client - Client to use\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateBlockFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createBlockFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createBlockFilter(client)\n * // { id: \"0x345a6572337856574a76364e457a4366\", type: 'block' }\n */\nexport async function createBlockFilter(client) {\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newBlockFilter',\n });\n const id = await client.request({\n method: 'eth_newBlockFilter',\n });\n return { id, request: getRequest(id), type: 'block' };\n}\n//# sourceMappingURL=createBlockFilter.js.map","import { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js';\n/**\n * Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges).\n *\n * - Docs: https://viem.sh/docs/actions/public/createEventFilter\n * - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter)\n *\n * @param client - Client to use\n * @param parameters - {@link CreateEventFilterParameters}\n * @returns [`Filter`](https://viem.sh/docs/glossary/types#filter). {@link CreateEventFilterReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',\n * })\n */\nexport async function createEventFilter(client, { address, args, event, events: events_, fromBlock, strict, toBlock, } = {}) {\n const events = events_ ?? (event ? [event] : undefined);\n const getRequest = createFilterRequestScope(client, {\n method: 'eth_newFilter',\n });\n let topics = [];\n if (events) {\n const encoded = events.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args,\n }));\n // TODO: Clean up type casting\n topics = [encoded];\n if (event)\n topics = topics[0];\n }\n const id = await client.request({\n method: 'eth_newFilter',\n params: [\n {\n address,\n fromBlock: typeof fromBlock === 'bigint' ? numberToHex(fromBlock) : fromBlock,\n toBlock: typeof toBlock === 'bigint' ? numberToHex(toBlock) : toBlock,\n ...(topics.length ? { topics } : {}),\n },\n ],\n });\n return {\n abi: events,\n args,\n eventName: event ? event.name : undefined,\n fromBlock,\n id,\n request: getRequest(id),\n strict: Boolean(strict),\n toBlock,\n type: 'event',\n };\n}\n//# sourceMappingURL=createEventFilter.js.map","/**\n * Returns the base fee per blob gas in wei.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlobBaseFee\n * - JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee)\n *\n * @param client - Client to use\n * @returns The blob base fee (in wei). {@link GetBlobBaseFeeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlobBaseFee } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const blobBaseFee = await getBlobBaseFee(client)\n */\nexport async function getBlobBaseFee(client) {\n const baseFee = await client.request({\n method: 'eth_blobBaseFee',\n });\n return BigInt(baseFee);\n}\n//# sourceMappingURL=getBlobBaseFee.js.map","import { hexToNumber, } from '../../utils/encoding/fromHex.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the number of Transactions at a block number, hash, or tag.\n *\n * - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount\n * - JSON-RPC Methods:\n * - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`.\n * - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`.\n *\n * @param client - Client to use\n * @param parameters - {@link GetBlockTransactionCountParameters}\n * @returns The block transaction count. {@link GetBlockTransactionCountReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getBlockTransactionCount } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const count = await getBlockTransactionCount(client)\n */\nexport async function getBlockTransactionCount(client, { blockHash, blockNumber, blockTag = 'latest', } = {}) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n let count;\n if (blockHash) {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByHash',\n params: [blockHash],\n }, { dedupe: true });\n }\n else {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByNumber',\n params: [blockNumberHex || blockTag],\n }, { dedupe: Boolean(blockNumberHex) });\n }\n return hexToNumber(count);\n}\n//# sourceMappingURL=getBlockTransactionCount.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Retrieves the bytecode at an address.\n *\n * - Docs: https://viem.sh/docs/contract/getCode\n * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)\n *\n * @param client - Client to use\n * @param parameters - {@link GetCodeParameters}\n * @returns The contract's bytecode. {@link GetCodeReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getCode } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getCode(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * })\n */\nexport async function getCode(client, { address, blockNumber, blockTag = 'latest' }) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const hex = await client.request({\n method: 'eth_getCode',\n params: [address, blockNumberHex || blockTag],\n }, { dedupe: Boolean(blockNumberHex) });\n if (hex === '0x')\n return undefined;\n return hex;\n}\n//# sourceMappingURL=getCode.js.map","import { BaseError } from './base.js';\nexport class Eip712DomainNotFoundError extends BaseError {\n constructor({ address }) {\n super(`No EIP-712 domain found on contract \"${address}\".`, {\n metaMessages: [\n 'Ensure that:',\n `- The contract is deployed at the address \"${address}\".`,\n '- `eip712Domain()` function exists on the contract.',\n '- `eip712Domain()` function matches signature to ERC-5267 specification.',\n ],\n name: 'Eip712DomainNotFoundError',\n });\n }\n}\n//# sourceMappingURL=eip712.js.map","import { Eip712DomainNotFoundError, } from '../../errors/eip712.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { readContract, } from './readContract.js';\n/**\n * Reads the EIP-712 domain from a contract, based on the ERC-5267 specification.\n *\n * @param client - A {@link Client} instance.\n * @param parameters - The parameters of the action. {@link GetEip712DomainParameters}\n * @returns The EIP-712 domain, fields, and extensions. {@link GetEip712DomainReturnType}\n *\n * @example\n * ```ts\n * import { createPublicClient, http, getEip712Domain } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const domain = await getEip712Domain(client, {\n * address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * })\n * // {\n * // domain: {\n * // name: 'ExampleContract',\n * // version: '1',\n * // chainId: 1,\n * // verifyingContract: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n * // },\n * // fields: '0x0f',\n * // extensions: [],\n * // }\n * ```\n */\nexport async function getEip712Domain(client, parameters) {\n const { address, factory, factoryData } = parameters;\n try {\n const [fields, name, version, chainId, verifyingContract, salt, extensions,] = await getAction(client, readContract, 'readContract')({\n abi,\n address,\n functionName: 'eip712Domain',\n factory,\n factoryData,\n });\n return {\n domain: {\n name,\n version,\n chainId: Number(chainId),\n verifyingContract,\n salt,\n },\n extensions,\n fields,\n };\n }\n catch (e) {\n const error = e;\n if (error.name === 'ContractFunctionExecutionError' &&\n error.cause.name === 'ContractFunctionZeroDataError') {\n throw new Eip712DomainNotFoundError({ address });\n }\n throw error;\n }\n}\nconst abi = [\n {\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', type: 'bytes1' },\n { name: 'name', type: 'string' },\n { name: 'version', type: 'string' },\n { name: 'chainId', type: 'uint256' },\n { name: 'verifyingContract', type: 'address' },\n { name: 'salt', type: 'bytes32' },\n { name: 'extensions', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n];\n//# sourceMappingURL=getEip712Domain.js.map","export function formatFeeHistory(feeHistory) {\n return {\n baseFeePerGas: feeHistory.baseFeePerGas.map((value) => BigInt(value)),\n gasUsedRatio: feeHistory.gasUsedRatio,\n oldestBlock: BigInt(feeHistory.oldestBlock),\n reward: feeHistory.reward?.map((reward) => reward.map((value) => BigInt(value))),\n };\n}\n//# sourceMappingURL=feeHistory.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatFeeHistory, } from '../../utils/formatters/feeHistory.js';\n/**\n * Returns a collection of historical gas information.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFeeHistory\n * - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory)\n *\n * @param client - Client to use\n * @param parameters - {@link GetFeeHistoryParameters}\n * @returns The gas estimate (in wei). {@link GetFeeHistoryReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getFeeHistory } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const feeHistory = await getFeeHistory(client, {\n * blockCount: 4,\n * rewardPercentiles: [25, 75],\n * })\n */\nexport async function getFeeHistory(client, { blockCount, blockNumber, blockTag = 'latest', rewardPercentiles, }) {\n const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n const feeHistory = await client.request({\n method: 'eth_feeHistory',\n params: [\n numberToHex(blockCount),\n blockNumberHex || blockTag,\n rewardPercentiles,\n ],\n }, { dedupe: Boolean(blockNumberHex) });\n return formatFeeHistory(feeHistory);\n}\n//# sourceMappingURL=getFeeHistory.js.map","import { parseEventLogs } from '../../utils/abi/parseEventLogs.js';\nimport { formatLog, } from '../../utils/formatters/log.js';\n/**\n * Returns a list of event logs since the filter was created.\n *\n * - Docs: https://viem.sh/docs/actions/public/getFilterLogs\n * - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs)\n *\n * `getFilterLogs` is only compatible with **event filters**.\n *\n * @param client - Client to use\n * @param parameters - {@link GetFilterLogsParameters}\n * @returns A list of event logs. {@link GetFilterLogsReturnType}\n *\n * @example\n * import { createPublicClient, http, parseAbiItem } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { createEventFilter, getFilterLogs } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const filter = await createEventFilter(client, {\n * address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',\n * event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'),\n * })\n * const logs = await getFilterLogs(client, { filter })\n */\nexport async function getFilterLogs(_client, { filter, }) {\n const strict = filter.strict ?? false;\n const logs = await filter.request({\n method: 'eth_getFilterLogs',\n params: [filter.id],\n });\n const formattedLogs = logs.map((log) => formatLog(log));\n if (!filter.abi)\n return formattedLogs;\n return parseEventLogs({\n abi: filter.abi,\n logs: formattedLogs,\n strict,\n });\n}\n//# sourceMappingURL=getFilterLogs.js.map","import { AbiEncodingLengthMismatchError, BytesSizeMismatchError, UnsupportedPackedAbiType, } from '../../errors/abi.js';\nimport { InvalidAddressError, } from '../../errors/address.js';\nimport { isAddress } from '../address/isAddress.js';\nimport { concatHex } from '../data/concat.js';\nimport { pad } from '../data/pad.js';\nimport { boolToHex, numberToHex, stringToHex, } from '../encoding/toHex.js';\nimport { arrayRegex, bytesRegex, integerRegex } from '../regex.js';\nexport function encodePacked(types, values) {\n if (types.length !== values.length)\n throw new AbiEncodingLengthMismatchError({\n expectedLength: types.length,\n givenLength: values.length,\n });\n const data = [];\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n const value = values[i];\n data.push(encode(type, value));\n }\n return concatHex(data);\n}\nfunction encode(type, value, isArray = false) {\n if (type === 'address') {\n const address = value;\n if (!isAddress(address))\n throw new InvalidAddressError({ address });\n return pad(address.toLowerCase(), {\n size: isArray ? 32 : null,\n });\n }\n if (type === 'string')\n return stringToHex(value);\n if (type === 'bytes')\n return value;\n if (type === 'bool')\n return pad(boolToHex(value), { size: isArray ? 32 : 1 });\n const intMatch = type.match(integerRegex);\n if (intMatch) {\n const [_type, baseType, bits = '256'] = intMatch;\n const size = Number.parseInt(bits, 10) / 8;\n return numberToHex(value, {\n size: isArray ? 32 : size,\n signed: baseType === 'int',\n });\n }\n const bytesMatch = type.match(bytesRegex);\n if (bytesMatch) {\n const [_type, size] = bytesMatch;\n if (Number.parseInt(size, 10) !== (value.length - 2) / 2)\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size, 10),\n givenSize: (value.length - 2) / 2,\n });\n return pad(value, { dir: 'right', size: isArray ? 32 : null });\n }\n const arrayMatch = type.match(arrayRegex);\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch;\n const data = [];\n for (let i = 0; i < value.length; i++) {\n data.push(encode(childType, value[i], true));\n }\n if (data.length === 0)\n return '0x';\n return concatHex(data);\n }\n throw new UnsupportedPackedAbiType(type);\n}\n//# sourceMappingURL=encodePacked.js.map","import { getAddress } from '../address/getAddress.js';\nimport { isAddressEqual, } from '../address/isAddressEqual.js';\nimport { recoverAuthorizationAddress, } from './recoverAuthorizationAddress.js';\n/**\n * Verify that an Authorization object was signed by the provided address.\n *\n * - Docs {@link https://viem.sh/docs/utilities/verifyAuthorization}\n *\n * @param parameters - {@link VerifyAuthorizationParameters}\n * @returns Whether or not the signature is valid. {@link VerifyAuthorizationReturnType}\n */\nexport async function verifyAuthorization({ address, authorization, signature, }) {\n return isAddressEqual(getAddress(address), await recoverAuthorizationAddress({\n authorization,\n signature,\n }));\n}\n//# sourceMappingURL=verifyAuthorization.js.map","import { getTransactionCount } from '../actions/public/getTransactionCount.js';\nimport { LruMap } from './lru.js';\n/**\n * Creates a nonce manager for auto-incrementing transaction nonces.\n *\n * - Docs: https://viem.sh/docs/accounts/createNonceManager\n *\n * @example\n * ```ts\n * const nonceManager = createNonceManager({\n * source: jsonRpc(),\n * })\n * ```\n */\nexport function createNonceManager(parameters) {\n const { source } = parameters;\n const deltaMap = new Map();\n const nonceMap = new LruMap(8192);\n const promiseMap = new Map();\n const getKey = ({ address, chainId }) => `${address}.${chainId}`;\n return {\n async consume({ address, chainId, client }) {\n const key = getKey({ address, chainId });\n const promise = this.get({ address, chainId, client });\n this.increment({ address, chainId });\n const nonce = await promise;\n await source.set({ address, chainId }, nonce);\n nonceMap.set(key, nonce);\n return nonce;\n },\n async increment({ address, chainId }) {\n const key = getKey({ address, chainId });\n const delta = deltaMap.get(key) ?? 0;\n deltaMap.set(key, delta + 1);\n },\n async get({ address, chainId, client }) {\n const key = getKey({ address, chainId });\n let promise = promiseMap.get(key);\n if (!promise) {\n promise = (async () => {\n try {\n const nonce = await source.get({ address, chainId, client });\n const previousNonce = nonceMap.get(key) ?? 0;\n if (previousNonce > 0 && nonce <= previousNonce)\n return previousNonce + 1;\n nonceMap.delete(key);\n return nonce;\n }\n finally {\n this.reset({ address, chainId });\n }\n })();\n promiseMap.set(key, promise);\n }\n const delta = deltaMap.get(key) ?? 0;\n return delta + (await promise);\n },\n reset({ address, chainId }) {\n const key = getKey({ address, chainId });\n deltaMap.delete(key);\n promiseMap.delete(key);\n },\n };\n}\n/** JSON-RPC source for a nonce manager. */\nexport function jsonRpc() {\n return {\n async get(parameters) {\n const { address, client } = parameters;\n return getTransactionCount(client, {\n address,\n blockTag: 'pending',\n });\n },\n set() { },\n };\n}\n////////////////////////////////////////////////////////////////////////////////////////////\n// Default\n/** Default Nonce Manager with a JSON-RPC source. */\nexport const nonceManager = /*#__PURE__*/ createNonceManager({\n source: jsonRpc(),\n});\n//# sourceMappingURL=nonceManager.js.map","function createIdStore() {\n return {\n current: 0,\n take() {\n return this.current++;\n },\n reset() {\n this.current = 0;\n },\n };\n}\nexport const idCache = /*#__PURE__*/ createIdStore();\n//# sourceMappingURL=id.js.map","import { HttpRequestError, TimeoutError, } from '../../errors/request.js';\nimport { withTimeout, } from '../promise/withTimeout.js';\nimport { stringify } from '../stringify.js';\nimport { idCache } from './id.js';\nexport function getHttpRpcClient(url, options = {}) {\n return {\n async request(params) {\n const { body, fetchFn = options.fetchFn ?? fetch, onRequest = options.onRequest, onResponse = options.onResponse, timeout = options.timeout ?? 10_000, } = params;\n const fetchOptions = {\n ...(options.fetchOptions ?? {}),\n ...(params.fetchOptions ?? {}),\n };\n const { headers, method, signal: signal_ } = fetchOptions;\n try {\n const response = await withTimeout(async ({ signal }) => {\n const init = {\n ...fetchOptions,\n body: Array.isArray(body)\n ? stringify(body.map((body) => ({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n })))\n : stringify({\n jsonrpc: '2.0',\n id: body.id ?? idCache.take(),\n ...body,\n }),\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n method: method || 'POST',\n signal: signal_ || (timeout > 0 ? signal : null),\n };\n const request = new Request(url, init);\n const args = (await onRequest?.(request, init)) ?? { ...init, url };\n const response = await fetchFn(args.url ?? url, args);\n return response;\n }, {\n errorInstance: new TimeoutError({ body, url }),\n timeout,\n signal: true,\n });\n if (onResponse)\n await onResponse(response);\n let data;\n if (response.headers.get('Content-Type')?.startsWith('application/json'))\n data = await response.json();\n else {\n data = await response.text();\n try {\n data = JSON.parse(data || '{}');\n }\n catch (err) {\n if (response.ok)\n throw err;\n data = { error: data };\n }\n }\n if (!response.ok) {\n throw new HttpRequestError({\n body,\n details: stringify(data.error) || response.statusText,\n headers: response.headers,\n status: response.status,\n url,\n });\n }\n return data;\n }\n catch (err) {\n if (err instanceof HttpRequestError)\n throw err;\n if (err instanceof TimeoutError)\n throw err;\n throw new HttpRequestError({\n body,\n cause: err,\n url,\n });\n }\n },\n };\n}\n//# sourceMappingURL=http.js.map","export const erc6492MagicBytes = '0x6492649264926492649264926492649264926492649264926492649264926492';\nexport const zeroHash = '0x0000000000000000000000000000000000000000000000000000000000000000';\n//# sourceMappingURL=bytes.js.map","/**\n * @internal\n *\n * Map with a LRU (Least recently used) policy.\n * @see https://en.wikipedia.org/wiki/Cache_replacement_policies#LRU\n */\nexport class LruMap extends Map {\n constructor(size) {\n super();\n Object.defineProperty(this, \"maxSize\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.maxSize = size;\n }\n get(key) {\n const value = super.get(key);\n if (super.has(key) && value !== undefined) {\n this.delete(key);\n super.set(key, value);\n }\n return value;\n }\n set(key, value) {\n super.set(key, value);\n if (this.maxSize && this.size > this.maxSize) {\n const firstKey = this.keys().next().value;\n if (firstKey)\n this.delete(firstKey);\n }\n return this;\n }\n}\n//# sourceMappingURL=lru.js.map","import { LruMap } from './internal/lru.js';\nconst caches = {\n checksum: /*#__PURE__*/ new LruMap(8192),\n};\nexport const checksum = caches.checksum;\n/**\n * Clears all global caches.\n *\n * @example\n * ```ts\n * import { Caches } from 'ox'\n * Caches.clear()\n * ```\n */\nexport function clear() {\n for (const cache of Object.values(caches))\n cache.clear();\n}\n//# sourceMappingURL=Caches.js.map","import { ripemd160 as noble_ripemd160 } from '@noble/hashes/ripemd160';\nimport { keccak_256 as noble_keccak256 } from '@noble/hashes/sha3';\nimport { sha256 as noble_sha256 } from '@noble/hashes/sha256';\nimport * as Bytes from './Bytes.js';\nimport * as Hex from './Hex.js';\n/**\n * Calculates the [Keccak256](https://en.wikipedia.org/wiki/SHA-3) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.\n *\n * This function is a re-export of `keccak_256` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library.\n *\n * @example\n * ```ts twoslash\n * import { Hash } from 'ox'\n *\n * Hash.keccak256('0xdeadbeef')\n * // @log: '0xd4fd4e189132273036449fc9e11198c739161b4c0116a9a2dccdfa1c492006f1'\n * ```\n *\n * @example\n * ### Calculate Hash of a String\n *\n * ```ts twoslash\n * import { Hash, Hex } from 'ox'\n *\n * Hash.keccak256(Hex.fromString('hello world'))\n * // @log: '0x3ea2f1d0abf3fc66cf29eebb70cbd4e7fe762ef8a09bcc06c8edf641230afec0'\n * ```\n *\n * @example\n * ### Configure Return Type\n *\n * ```ts twoslash\n * import { Hash } from 'ox'\n *\n * Hash.keccak256('0xdeadbeef', { as: 'Bytes' })\n * // @log: Uint8Array [...]\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.\n * @param options - Options.\n * @returns Keccak256 hash.\n */\nexport function keccak256(value, options = {}) {\n const { as = typeof value === 'string' ? 'Hex' : 'Bytes' } = options;\n const bytes = noble_keccak256(Bytes.from(value));\n if (as === 'Bytes')\n return bytes;\n return Hex.fromBytes(bytes);\n}\n/**\n * Calculates the [Ripemd160](https://en.wikipedia.org/wiki/RIPEMD) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.\n *\n * This function is a re-export of `ripemd160` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library.\n *\n * @example\n * ```ts twoslash\n * import { Hash } from 'ox'\n *\n * Hash.ripemd160('0xdeadbeef')\n * // '0x226821c2f5423e11fe9af68bd285c249db2e4b5a'\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.\n * @param options - Options.\n * @returns Ripemd160 hash.\n */\nexport function ripemd160(value, options = {}) {\n const { as = typeof value === 'string' ? 'Hex' : 'Bytes' } = options;\n const bytes = noble_ripemd160(Bytes.from(value));\n if (as === 'Bytes')\n return bytes;\n return Hex.fromBytes(bytes);\n}\n/**\n * Calculates the [Sha256](https://en.wikipedia.org/wiki/SHA-256) hash of a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.\n *\n * This function is a re-export of `sha256` from [`@noble/hashes`](https://github.com/paulmillr/noble-hashes), an audited & minimal JS hashing library.\n *\n * @example\n * ```ts twoslash\n * import { Hash } from 'ox'\n *\n * Hash.sha256('0xdeadbeef')\n * // '0x5f78c33274e43fa9de5659265c1d917e25c03722dcb0b8d27db8d5feaa813953'\n * ```\n *\n * @param value - {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value.\n * @param options - Options.\n * @returns Sha256 hash.\n */\nexport function sha256(value, options = {}) {\n const { as = typeof value === 'string' ? 'Hex' : 'Bytes' } = options;\n const bytes = noble_sha256(Bytes.from(value));\n if (as === 'Bytes')\n return bytes;\n return Hex.fromBytes(bytes);\n}\n/**\n * Checks if a string is a valid hash value.\n *\n * @example\n * ```ts twoslash\n * import { Hash } from 'ox'\n *\n * Hash.validate('0x')\n * // @log: false\n *\n * Hash.validate('0x3ea2f1d0abf3fc66cf29eebb70cbd4e7fe762ef8a09bcc06c8edf641230afec0')\n * // @log: true\n * ```\n *\n * @param value - Value to check.\n * @returns Whether the value is a valid hash.\n */\nexport function validate(value) {\n return Hex.validate(value) && Hex.size(value) === 32;\n}\n//# sourceMappingURL=Hash.js.map","import * as Bytes from './Bytes.js';\nimport * as Errors from './Errors.js';\nimport * as Hex from './Hex.js';\nimport * as Json from './Json.js';\n/**\n * Asserts that a {@link ox#PublicKey.PublicKey} is valid.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * PublicKey.assert({\n * prefix: 4,\n * y: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * })\n * // @error: PublicKey.InvalidError: Value \\`{\"y\":\"1\"}\\` is not a valid public key.\n * // @error: Public key must contain:\n * // @error: - an `x` and `prefix` value (compressed)\n * // @error: - an `x`, `y`, and `prefix` value (uncompressed)\n * ```\n *\n * @param publicKey - The public key object to assert.\n */\nexport function assert(publicKey, options = {}) {\n const { compressed } = options;\n const { prefix, x, y } = publicKey;\n // Uncompressed\n if (compressed === false ||\n (typeof x === 'bigint' && typeof y === 'bigint')) {\n if (prefix !== 4)\n throw new InvalidPrefixError({\n prefix,\n cause: new InvalidUncompressedPrefixError(),\n });\n return;\n }\n // Compressed\n if (compressed === true ||\n (typeof x === 'bigint' && typeof y === 'undefined')) {\n if (prefix !== 3 && prefix !== 2)\n throw new InvalidPrefixError({\n prefix,\n cause: new InvalidCompressedPrefixError(),\n });\n return;\n }\n // Unknown/invalid\n throw new InvalidError({ publicKey });\n}\n/**\n * Compresses a {@link ox#PublicKey.PublicKey}.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.from({\n * prefix: 4,\n * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * })\n *\n * const compressed = PublicKey.compress(publicKey) // [!code focus]\n * // @log: {\n * // @log: prefix: 3,\n * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * // @log: }\n * ```\n *\n * @param publicKey - The public key to compress.\n * @returns The compressed public key.\n */\nexport function compress(publicKey) {\n const { x, y } = publicKey;\n return {\n prefix: y % 2n === 0n ? 2 : 3,\n x,\n };\n}\n/**\n * Instantiates a typed {@link ox#PublicKey.PublicKey} object from a {@link ox#PublicKey.PublicKey}, {@link ox#Bytes.Bytes}, or {@link ox#Hex.Hex}.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.from({\n * prefix: 4,\n * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * })\n * // @log: {\n * // @log: prefix: 4,\n * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * // @log: }\n * ```\n *\n * @example\n * ### From Serialized\n *\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.from('0x048318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5')\n * // @log: {\n * // @log: prefix: 4,\n * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * // @log: }\n * ```\n *\n * @param value - The public key value to instantiate.\n * @returns The instantiated {@link ox#PublicKey.PublicKey}.\n */\nexport function from(value) {\n const publicKey = (() => {\n if (Hex.validate(value))\n return fromHex(value);\n if (Bytes.validate(value))\n return fromBytes(value);\n const { prefix, x, y } = value;\n if (typeof x === 'bigint' && typeof y === 'bigint')\n return { prefix: prefix ?? 0x04, x, y };\n return { prefix, x };\n })();\n assert(publicKey);\n return publicKey;\n}\n/**\n * Deserializes a {@link ox#PublicKey.PublicKey} from a {@link ox#Bytes.Bytes} value.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.fromBytes(new Uint8Array([128, 3, 131, ...]))\n * // @log: {\n * // @log: prefix: 4,\n * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * // @log: }\n * ```\n *\n * @param publicKey - The serialized public key.\n * @returns The deserialized public key.\n */\nexport function fromBytes(publicKey) {\n return fromHex(Hex.fromBytes(publicKey));\n}\n/**\n * Deserializes a {@link ox#PublicKey.PublicKey} from a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.fromHex('0x8318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5')\n * // @log: {\n * // @log: prefix: 4,\n * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * // @log: }\n * ```\n *\n * @example\n * ### Deserializing a Compressed Public Key\n *\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.fromHex('0x038318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed75')\n * // @log: {\n * // @log: prefix: 3,\n * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * // @log: }\n * ```\n *\n * @param publicKey - The serialized public key.\n * @returns The deserialized public key.\n */\nexport function fromHex(publicKey) {\n if (publicKey.length !== 132 &&\n publicKey.length !== 130 &&\n publicKey.length !== 68)\n throw new InvalidSerializedSizeError({ publicKey });\n if (publicKey.length === 130) {\n const x = BigInt(Hex.slice(publicKey, 0, 32));\n const y = BigInt(Hex.slice(publicKey, 32, 64));\n return {\n prefix: 4,\n x,\n y,\n };\n }\n if (publicKey.length === 132) {\n const prefix = Number(Hex.slice(publicKey, 0, 1));\n const x = BigInt(Hex.slice(publicKey, 1, 33));\n const y = BigInt(Hex.slice(publicKey, 33, 65));\n return {\n prefix,\n x,\n y,\n };\n }\n const prefix = Number(Hex.slice(publicKey, 0, 1));\n const x = BigInt(Hex.slice(publicKey, 1, 33));\n return {\n prefix,\n x,\n };\n}\n/**\n * Serializes a {@link ox#PublicKey.PublicKey} to {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.from({\n * prefix: 4,\n * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * })\n *\n * const bytes = PublicKey.toBytes(publicKey) // [!code focus]\n * // @log: Uint8Array [128, 3, 131, ...]\n * ```\n *\n * @param publicKey - The public key to serialize.\n * @returns The serialized public key.\n */\nexport function toBytes(publicKey, options = {}) {\n return Bytes.fromHex(toHex(publicKey, options));\n}\n/**\n * Serializes a {@link ox#PublicKey.PublicKey} to {@link ox#Hex.Hex}.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.from({\n * prefix: 4,\n * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,\n * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,\n * })\n *\n * const hex = PublicKey.toHex(publicKey) // [!code focus]\n * // @log: '0x048318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5'\n * ```\n *\n * @param publicKey - The public key to serialize.\n * @returns The serialized public key.\n */\nexport function toHex(publicKey, options = {}) {\n assert(publicKey);\n const { prefix, x, y } = publicKey;\n const { includePrefix = true } = options;\n const publicKey_ = Hex.concat(includePrefix ? Hex.fromNumber(prefix, { size: 1 }) : '0x', Hex.fromNumber(x, { size: 32 }), \n // If the public key is not compressed, add the y coordinate.\n typeof y === 'bigint' ? Hex.fromNumber(y, { size: 32 }) : '0x');\n return publicKey_;\n}\n/**\n * Validates a {@link ox#PublicKey.PublicKey}. Returns `true` if valid, `false` otherwise.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * const valid = PublicKey.validate({\n * prefix: 4,\n * y: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * })\n * // @log: false\n * ```\n *\n * @param publicKey - The public key object to assert.\n */\nexport function validate(publicKey, options = {}) {\n try {\n assert(publicKey, options);\n return true;\n }\n catch (_error) {\n return false;\n }\n}\n/**\n * Thrown when a public key is invalid.\n *\n * @example\n * ```ts twoslash\n * import { PublicKey } from 'ox'\n *\n * PublicKey.assert({ y: 1n })\n * // @error: PublicKey.InvalidError: Value `{\"y\":1n}` is not a valid public key.\n * // @error: Public key must contain:\n * // @error: - an `x` and `prefix` value (compressed)\n * // @error: - an `x`, `y`, and `prefix` value (uncompressed)\n * ```\n */\nexport class InvalidError extends Errors.BaseError {\n constructor({ publicKey }) {\n super(`Value \\`${Json.stringify(publicKey)}\\` is not a valid public key.`, {\n metaMessages: [\n 'Public key must contain:',\n '- an `x` and `prefix` value (compressed)',\n '- an `x`, `y`, and `prefix` value (uncompressed)',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'PublicKey.InvalidError'\n });\n }\n}\n/** Thrown when a public key has an invalid prefix. */\nexport class InvalidPrefixError extends Errors.BaseError {\n constructor({ prefix, cause }) {\n super(`Prefix \"${prefix}\" is invalid.`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'PublicKey.InvalidPrefixError'\n });\n }\n}\n/** Thrown when the public key has an invalid prefix for a compressed public key. */\nexport class InvalidCompressedPrefixError extends Errors.BaseError {\n constructor() {\n super('Prefix must be 2 or 3 for compressed public keys.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'PublicKey.InvalidCompressedPrefixError'\n });\n }\n}\n/** Thrown when the public key has an invalid prefix for an uncompressed public key. */\nexport class InvalidUncompressedPrefixError extends Errors.BaseError {\n constructor() {\n super('Prefix must be 4 for uncompressed public keys.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'PublicKey.InvalidUncompressedPrefixError'\n });\n }\n}\n/** Thrown when the public key has an invalid serialized size. */\nexport class InvalidSerializedSizeError extends Errors.BaseError {\n constructor({ publicKey }) {\n super(`Value \\`${publicKey}\\` is an invalid public key size.`, {\n metaMessages: [\n 'Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).',\n `Received ${Hex.size(Hex.from(publicKey))} bytes.`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'PublicKey.InvalidSerializedSizeError'\n });\n }\n}\n//# sourceMappingURL=PublicKey.js.map","import * as Bytes from './Bytes.js';\nimport * as Caches from './Caches.js';\nimport * as Errors from './Errors.js';\nimport * as Hash from './Hash.js';\nimport * as PublicKey from './PublicKey.js';\nconst addressRegex = /^0x[a-fA-F0-9]{40}$/;\n/**\n * Asserts that the given value is a valid {@link ox#Address.Address}.\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.assert('0xA0Cf798816D4b9b9866b5330EEa46a18382f251e')\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.assert('0xdeadbeef')\n * // @error: InvalidAddressError: Address \"0xdeadbeef\" is invalid.\n * ```\n *\n * @param value - Value to assert if it is a valid address.\n * @param options - Assertion options.\n */\nexport function assert(value, options = {}) {\n const { strict = true } = options;\n if (!addressRegex.test(value))\n throw new InvalidAddressError({\n address: value,\n cause: new InvalidInputError(),\n });\n if (strict) {\n if (value.toLowerCase() === value)\n return;\n if (checksum(value) !== value)\n throw new InvalidAddressError({\n address: value,\n cause: new InvalidChecksumError(),\n });\n }\n}\n/**\n * Computes the checksum address for the given {@link ox#Address.Address}.\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.checksum('0xa0cf798816d4b9b9866b5330eea46a18382f251e')\n * // @log: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'\n * ```\n *\n * @param address - The address to compute the checksum for.\n * @returns The checksummed address.\n */\nexport function checksum(address) {\n if (Caches.checksum.has(address))\n return Caches.checksum.get(address);\n assert(address, { strict: false });\n const hexAddress = address.substring(2).toLowerCase();\n const hash = Hash.keccak256(Bytes.fromString(hexAddress), { as: 'Bytes' });\n const characters = hexAddress.split('');\n for (let i = 0; i < 40; i += 2) {\n if (hash[i >> 1] >> 4 >= 8 && characters[i]) {\n characters[i] = characters[i].toUpperCase();\n }\n if ((hash[i >> 1] & 0x0f) >= 8 && characters[i + 1]) {\n characters[i + 1] = characters[i + 1].toUpperCase();\n }\n }\n const result = `0x${characters.join('')}`;\n Caches.checksum.set(address, result);\n return result;\n}\n/**\n * Converts a stringified address to a typed (checksummed) {@link ox#Address.Address}.\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.from('0xa0cf798816d4b9b9866b5330eea46a18382f251e')\n * // @log: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.from('0xa0cf798816d4b9b9866b5330eea46a18382f251e', {\n * checksum: false\n * })\n * // @log: '0xa0cf798816d4b9b9866b5330eea46a18382f251e'\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.from('hello')\n * // @error: InvalidAddressError: Address \"0xa\" is invalid.\n * ```\n *\n * @param address - An address string to convert to a typed Address.\n * @param options - Conversion options.\n * @returns The typed Address.\n */\nexport function from(address, options = {}) {\n const { checksum: checksumVal = false } = options;\n assert(address);\n if (checksumVal)\n return checksum(address);\n return address;\n}\n/**\n * Converts an ECDSA public key to an {@link ox#Address.Address}.\n *\n * @example\n * ```ts twoslash\n * import { Address, PublicKey } from 'ox'\n *\n * const publicKey = PublicKey.from(\n * '0x048318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5',\n * )\n * const address = Address.fromPublicKey(publicKey)\n * // @log: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266'\n * ```\n *\n * @param publicKey - The ECDSA public key to convert to an {@link ox#Address.Address}.\n * @param options - Conversion options.\n * @returns The {@link ox#Address.Address} corresponding to the public key.\n */\nexport function fromPublicKey(publicKey, options = {}) {\n const address = Hash.keccak256(`0x${PublicKey.toHex(publicKey).slice(4)}`).substring(26);\n return from(`0x${address}`, options);\n}\n/**\n * Checks if two {@link ox#Address.Address} are equal.\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.isEqual(\n * '0xa0cf798816d4b9b9866b5330eea46a18382f251e',\n * '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'\n * )\n * // @log: true\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.isEqual(\n * '0xa0cf798816d4b9b9866b5330eea46a18382f251e',\n * '0xA0Cf798816D4b9b9866b5330EEa46a18382f251f'\n * )\n * // @log: false\n * ```\n *\n * @param addressA - The first address to compare.\n * @param addressB - The second address to compare.\n * @returns Whether the addresses are equal.\n */\nexport function isEqual(addressA, addressB) {\n assert(addressA, { strict: false });\n assert(addressB, { strict: false });\n return addressA.toLowerCase() === addressB.toLowerCase();\n}\n/**\n * Checks if the given address is a valid {@link ox#Address.Address}.\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.validate('0xA0Cf798816D4b9b9866b5330EEa46a18382f251e')\n * // @log: true\n * ```\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.validate('0xdeadbeef')\n * // @log: false\n * ```\n *\n * @param address - Value to check if it is a valid address.\n * @param options - Check options.\n * @returns Whether the address is a valid address.\n */\nexport function validate(address, options = {}) {\n const { strict = true } = options ?? {};\n try {\n assert(address, { strict });\n return true;\n }\n catch {\n return false;\n }\n}\n/**\n * Thrown when an address is invalid.\n *\n * @example\n * ```ts twoslash\n * import { Address } from 'ox'\n *\n * Address.from('0x123')\n * // @error: Address.InvalidAddressError: Address `0x123` is invalid.\n * ```\n */\nexport class InvalidAddressError extends Errors.BaseError {\n constructor({ address, cause }) {\n super(`Address \"${address}\" is invalid.`, {\n cause,\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Address.InvalidAddressError'\n });\n }\n}\n/** Thrown when an address is not a 20 byte (40 hexadecimal character) value. */\nexport class InvalidInputError extends Errors.BaseError {\n constructor() {\n super('Address is not a 20 byte (40 hexadecimal character) value.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Address.InvalidInputError'\n });\n }\n}\n/** Thrown when an address does not match its checksum counterpart. */\nexport class InvalidChecksumError extends Errors.BaseError {\n constructor() {\n super('Address does not match its checksum counterpart.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Address.InvalidChecksumError'\n });\n }\n}\n//# sourceMappingURL=Address.js.map","export const arrayRegex = /^(.*)\\[([0-9]*)\\]$/;\n// `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n// https://regexr.com/6va55\nexport const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;\n// `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n// https://regexr.com/6v8hp\nexport const integerRegex = /^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;\nexport const maxInt8 = 2n ** (8n - 1n) - 1n;\nexport const maxInt16 = 2n ** (16n - 1n) - 1n;\nexport const maxInt24 = 2n ** (24n - 1n) - 1n;\nexport const maxInt32 = 2n ** (32n - 1n) - 1n;\nexport const maxInt40 = 2n ** (40n - 1n) - 1n;\nexport const maxInt48 = 2n ** (48n - 1n) - 1n;\nexport const maxInt56 = 2n ** (56n - 1n) - 1n;\nexport const maxInt64 = 2n ** (64n - 1n) - 1n;\nexport const maxInt72 = 2n ** (72n - 1n) - 1n;\nexport const maxInt80 = 2n ** (80n - 1n) - 1n;\nexport const maxInt88 = 2n ** (88n - 1n) - 1n;\nexport const maxInt96 = 2n ** (96n - 1n) - 1n;\nexport const maxInt104 = 2n ** (104n - 1n) - 1n;\nexport const maxInt112 = 2n ** (112n - 1n) - 1n;\nexport const maxInt120 = 2n ** (120n - 1n) - 1n;\nexport const maxInt128 = 2n ** (128n - 1n) - 1n;\nexport const maxInt136 = 2n ** (136n - 1n) - 1n;\nexport const maxInt144 = 2n ** (144n - 1n) - 1n;\nexport const maxInt152 = 2n ** (152n - 1n) - 1n;\nexport const maxInt160 = 2n ** (160n - 1n) - 1n;\nexport const maxInt168 = 2n ** (168n - 1n) - 1n;\nexport const maxInt176 = 2n ** (176n - 1n) - 1n;\nexport const maxInt184 = 2n ** (184n - 1n) - 1n;\nexport const maxInt192 = 2n ** (192n - 1n) - 1n;\nexport const maxInt200 = 2n ** (200n - 1n) - 1n;\nexport const maxInt208 = 2n ** (208n - 1n) - 1n;\nexport const maxInt216 = 2n ** (216n - 1n) - 1n;\nexport const maxInt224 = 2n ** (224n - 1n) - 1n;\nexport const maxInt232 = 2n ** (232n - 1n) - 1n;\nexport const maxInt240 = 2n ** (240n - 1n) - 1n;\nexport const maxInt248 = 2n ** (248n - 1n) - 1n;\nexport const maxInt256 = 2n ** (256n - 1n) - 1n;\nexport const minInt8 = -(2n ** (8n - 1n));\nexport const minInt16 = -(2n ** (16n - 1n));\nexport const minInt24 = -(2n ** (24n - 1n));\nexport const minInt32 = -(2n ** (32n - 1n));\nexport const minInt40 = -(2n ** (40n - 1n));\nexport const minInt48 = -(2n ** (48n - 1n));\nexport const minInt56 = -(2n ** (56n - 1n));\nexport const minInt64 = -(2n ** (64n - 1n));\nexport const minInt72 = -(2n ** (72n - 1n));\nexport const minInt80 = -(2n ** (80n - 1n));\nexport const minInt88 = -(2n ** (88n - 1n));\nexport const minInt96 = -(2n ** (96n - 1n));\nexport const minInt104 = -(2n ** (104n - 1n));\nexport const minInt112 = -(2n ** (112n - 1n));\nexport const minInt120 = -(2n ** (120n - 1n));\nexport const minInt128 = -(2n ** (128n - 1n));\nexport const minInt136 = -(2n ** (136n - 1n));\nexport const minInt144 = -(2n ** (144n - 1n));\nexport const minInt152 = -(2n ** (152n - 1n));\nexport const minInt160 = -(2n ** (160n - 1n));\nexport const minInt168 = -(2n ** (168n - 1n));\nexport const minInt176 = -(2n ** (176n - 1n));\nexport const minInt184 = -(2n ** (184n - 1n));\nexport const minInt192 = -(2n ** (192n - 1n));\nexport const minInt200 = -(2n ** (200n - 1n));\nexport const minInt208 = -(2n ** (208n - 1n));\nexport const minInt216 = -(2n ** (216n - 1n));\nexport const minInt224 = -(2n ** (224n - 1n));\nexport const minInt232 = -(2n ** (232n - 1n));\nexport const minInt240 = -(2n ** (240n - 1n));\nexport const minInt248 = -(2n ** (248n - 1n));\nexport const minInt256 = -(2n ** (256n - 1n));\nexport const maxUint8 = 2n ** 8n - 1n;\nexport const maxUint16 = 2n ** 16n - 1n;\nexport const maxUint24 = 2n ** 24n - 1n;\nexport const maxUint32 = 2n ** 32n - 1n;\nexport const maxUint40 = 2n ** 40n - 1n;\nexport const maxUint48 = 2n ** 48n - 1n;\nexport const maxUint56 = 2n ** 56n - 1n;\nexport const maxUint64 = 2n ** 64n - 1n;\nexport const maxUint72 = 2n ** 72n - 1n;\nexport const maxUint80 = 2n ** 80n - 1n;\nexport const maxUint88 = 2n ** 88n - 1n;\nexport const maxUint96 = 2n ** 96n - 1n;\nexport const maxUint104 = 2n ** 104n - 1n;\nexport const maxUint112 = 2n ** 112n - 1n;\nexport const maxUint120 = 2n ** 120n - 1n;\nexport const maxUint128 = 2n ** 128n - 1n;\nexport const maxUint136 = 2n ** 136n - 1n;\nexport const maxUint144 = 2n ** 144n - 1n;\nexport const maxUint152 = 2n ** 152n - 1n;\nexport const maxUint160 = 2n ** 160n - 1n;\nexport const maxUint168 = 2n ** 168n - 1n;\nexport const maxUint176 = 2n ** 176n - 1n;\nexport const maxUint184 = 2n ** 184n - 1n;\nexport const maxUint192 = 2n ** 192n - 1n;\nexport const maxUint200 = 2n ** 200n - 1n;\nexport const maxUint208 = 2n ** 208n - 1n;\nexport const maxUint216 = 2n ** 216n - 1n;\nexport const maxUint224 = 2n ** 224n - 1n;\nexport const maxUint232 = 2n ** 232n - 1n;\nexport const maxUint240 = 2n ** 240n - 1n;\nexport const maxUint248 = 2n ** 248n - 1n;\nexport const maxUint256 = 2n ** 256n - 1n;\n//# sourceMappingURL=Solidity.js.map","import * as AbiParameters from '../AbiParameters.js';\nimport * as Address from '../Address.js';\nimport * as Bytes from '../Bytes.js';\nimport * as Errors from '../Errors.js';\nimport * as Hex from '../Hex.js';\nimport { integerRegex } from '../Solidity.js';\n/** @internal */\nexport function decodeParameter(cursor, param, options) {\n const { checksumAddress, staticPosition } = options;\n const arrayComponents = getArrayComponents(param.type);\n if (arrayComponents) {\n const [length, type] = arrayComponents;\n return decodeArray(cursor, { ...param, type }, { checksumAddress, length, staticPosition });\n }\n if (param.type === 'tuple')\n return decodeTuple(cursor, param, {\n checksumAddress,\n staticPosition,\n });\n if (param.type === 'address')\n return decodeAddress(cursor, { checksum: checksumAddress });\n if (param.type === 'bool')\n return decodeBool(cursor);\n if (param.type.startsWith('bytes'))\n return decodeBytes(cursor, param, { staticPosition });\n if (param.type.startsWith('uint') || param.type.startsWith('int'))\n return decodeNumber(cursor, param);\n if (param.type === 'string')\n return decodeString(cursor, { staticPosition });\n throw new AbiParameters.InvalidTypeError(param.type);\n}\nconst sizeOfLength = 32;\nconst sizeOfOffset = 32;\n/** @internal */\nexport function decodeAddress(cursor, options = {}) {\n const { checksum = false } = options;\n const value = cursor.readBytes(32);\n const wrap = (address) => checksum ? Address.checksum(address) : address;\n return [wrap(Hex.fromBytes(Bytes.slice(value, -20))), 32];\n}\n/** @internal */\nexport function decodeArray(cursor, param, options) {\n const { checksumAddress, length, staticPosition } = options;\n // If the length of the array is not known in advance (dynamic array),\n // this means we will need to wonder off to the pointer and decode.\n if (!length) {\n // Dealing with a dynamic type, so get the offset of the array data.\n const offset = Bytes.toNumber(cursor.readBytes(sizeOfOffset));\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset;\n const startOfData = start + sizeOfLength;\n // Get the length of the array from the offset.\n cursor.setPosition(start);\n const length = Bytes.toNumber(cursor.readBytes(sizeOfLength));\n // Check if the array has any dynamic children.\n const dynamicChild = hasDynamicChild(param);\n let consumed = 0;\n const value = [];\n for (let i = 0; i < length; ++i) {\n // If any of the children is dynamic, then all elements will be offset pointer, thus size of one slot (32 bytes).\n // Otherwise, elements will be the size of their encoding (consumed bytes).\n cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed));\n const [data, consumed_] = decodeParameter(cursor, param, {\n checksumAddress,\n staticPosition: startOfData,\n });\n consumed += consumed_;\n value.push(data);\n }\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n }\n // If the length of the array is known in advance,\n // and the length of an element deeply nested in the array is not known,\n // we need to decode the offset of the array data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the array data.\n const offset = Bytes.toNumber(cursor.readBytes(sizeOfOffset));\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset;\n const value = [];\n for (let i = 0; i < length; ++i) {\n // Move cursor along to the next slot (next offset pointer).\n cursor.setPosition(start + i * 32);\n const [data] = decodeParameter(cursor, param, {\n checksumAddress,\n staticPosition: start,\n });\n value.push(data);\n }\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n }\n // If the length of the array is known in advance and the array is deeply static,\n // then we can just decode each element in sequence.\n let consumed = 0;\n const value = [];\n for (let i = 0; i < length; ++i) {\n const [data, consumed_] = decodeParameter(cursor, param, {\n checksumAddress,\n staticPosition: staticPosition + consumed,\n });\n consumed += consumed_;\n value.push(data);\n }\n return [value, consumed];\n}\n/** @internal */\nexport function decodeBool(cursor) {\n return [Bytes.toBoolean(cursor.readBytes(32), { size: 32 }), 32];\n}\n/** @internal */\nexport function decodeBytes(cursor, param, { staticPosition }) {\n const [_, size] = param.type.split('bytes');\n if (!size) {\n // Dealing with dynamic types, so get the offset of the bytes data.\n const offset = Bytes.toNumber(cursor.readBytes(32));\n // Set position of the cursor to start of bytes data.\n cursor.setPosition(staticPosition + offset);\n const length = Bytes.toNumber(cursor.readBytes(32));\n // If there is no length, we have zero data.\n if (length === 0) {\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return ['0x', 32];\n }\n const data = cursor.readBytes(length);\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [Hex.fromBytes(data), 32];\n }\n const value = Hex.fromBytes(cursor.readBytes(Number.parseInt(size, 10), 32));\n return [value, 32];\n}\n/** @internal */\nexport function decodeNumber(cursor, param) {\n const signed = param.type.startsWith('int');\n const size = Number.parseInt(param.type.split('int')[1] || '256', 10);\n const value = cursor.readBytes(32);\n return [\n size > 48\n ? Bytes.toBigInt(value, { signed })\n : Bytes.toNumber(value, { signed }),\n 32,\n ];\n}\n/** @internal */\nexport function decodeTuple(cursor, param, options) {\n const { checksumAddress, staticPosition } = options;\n // Tuples can have unnamed components (i.e. they are arrays), so we must\n // determine whether the tuple is named or unnamed. In the case of a named\n // tuple, the value will be an object where each property is the name of the\n // component. In the case of an unnamed tuple, the value will be an array.\n const hasUnnamedChild = param.components.length === 0 || param.components.some(({ name }) => !name);\n // Initialize the value to an object or an array, depending on whether the\n // tuple is named or unnamed.\n const value = hasUnnamedChild ? [] : {};\n let consumed = 0;\n // If the tuple has a dynamic child, we must first decode the offset to the\n // tuple data.\n if (hasDynamicChild(param)) {\n // Dealing with dynamic types, so get the offset of the tuple data.\n const offset = Bytes.toNumber(cursor.readBytes(sizeOfOffset));\n // Start is the static position of referencing slot + offset.\n const start = staticPosition + offset;\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i];\n cursor.setPosition(start + consumed);\n const [data, consumed_] = decodeParameter(cursor, component, {\n checksumAddress,\n staticPosition: start,\n });\n consumed += consumed_;\n value[hasUnnamedChild ? i : component?.name] = data;\n }\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n }\n // If the tuple has static children, we can just decode each component\n // in sequence.\n for (let i = 0; i < param.components.length; ++i) {\n const component = param.components[i];\n const [data, consumed_] = decodeParameter(cursor, component, {\n checksumAddress,\n staticPosition,\n });\n value[hasUnnamedChild ? i : component?.name] = data;\n consumed += consumed_;\n }\n return [value, consumed];\n}\n/** @internal */\nexport function decodeString(cursor, { staticPosition }) {\n // Get offset to start of string data.\n const offset = Bytes.toNumber(cursor.readBytes(32));\n // Start is the static position of current slot + offset.\n const start = staticPosition + offset;\n cursor.setPosition(start);\n const length = Bytes.toNumber(cursor.readBytes(32));\n // If there is no length, we have zero data (empty string).\n if (length === 0) {\n cursor.setPosition(staticPosition + 32);\n return ['', 32];\n }\n const data = cursor.readBytes(length, 32);\n const value = Bytes.toString(Bytes.trimLeft(data));\n // As we have gone wondering, restore to the original position + next slot.\n cursor.setPosition(staticPosition + 32);\n return [value, 32];\n}\n/** @internal */\nexport function prepareParameters({ checksumAddress, parameters, values, }) {\n const preparedParameters = [];\n for (let i = 0; i < parameters.length; i++) {\n preparedParameters.push(prepareParameter({\n checksumAddress,\n parameter: parameters[i],\n value: values[i],\n }));\n }\n return preparedParameters;\n}\n/** @internal */\nexport function prepareParameter({ checksumAddress = false, parameter: parameter_, value, }) {\n const parameter = parameter_;\n const arrayComponents = getArrayComponents(parameter.type);\n if (arrayComponents) {\n const [length, type] = arrayComponents;\n return encodeArray(value, {\n checksumAddress,\n length,\n parameter: {\n ...parameter,\n type,\n },\n });\n }\n if (parameter.type === 'tuple') {\n return encodeTuple(value, {\n checksumAddress,\n parameter: parameter,\n });\n }\n if (parameter.type === 'address') {\n return encodeAddress(value, {\n checksum: checksumAddress,\n });\n }\n if (parameter.type === 'bool') {\n return encodeBoolean(value);\n }\n if (parameter.type.startsWith('uint') || parameter.type.startsWith('int')) {\n const signed = parameter.type.startsWith('int');\n const [, , size = '256'] = integerRegex.exec(parameter.type) ?? [];\n return encodeNumber(value, {\n signed,\n size: Number(size),\n });\n }\n if (parameter.type.startsWith('bytes')) {\n return encodeBytes(value, { type: parameter.type });\n }\n if (parameter.type === 'string') {\n return encodeString(value);\n }\n throw new AbiParameters.InvalidTypeError(parameter.type);\n}\n/** @internal */\nexport function encode(preparedParameters) {\n // 1. Compute the size of the static part of the parameters.\n let staticSize = 0;\n for (let i = 0; i < preparedParameters.length; i++) {\n const { dynamic, encoded } = preparedParameters[i];\n if (dynamic)\n staticSize += 32;\n else\n staticSize += Hex.size(encoded);\n }\n // 2. Split the parameters into static and dynamic parts.\n const staticParameters = [];\n const dynamicParameters = [];\n let dynamicSize = 0;\n for (let i = 0; i < preparedParameters.length; i++) {\n const { dynamic, encoded } = preparedParameters[i];\n if (dynamic) {\n staticParameters.push(Hex.fromNumber(staticSize + dynamicSize, { size: 32 }));\n dynamicParameters.push(encoded);\n dynamicSize += Hex.size(encoded);\n }\n else {\n staticParameters.push(encoded);\n }\n }\n // 3. Concatenate static and dynamic parts.\n return Hex.concat(...staticParameters, ...dynamicParameters);\n}\n/** @internal */\nexport function encodeAddress(value, options) {\n const { checksum = false } = options;\n Address.assert(value, { strict: checksum });\n return {\n dynamic: false,\n encoded: Hex.padLeft(value.toLowerCase()),\n };\n}\n/** @internal */\nexport function encodeArray(value, options) {\n const { checksumAddress, length, parameter } = options;\n const dynamic = length === null;\n if (!Array.isArray(value))\n throw new AbiParameters.InvalidArrayError(value);\n if (!dynamic && value.length !== length)\n throw new AbiParameters.ArrayLengthMismatchError({\n expectedLength: length,\n givenLength: value.length,\n type: `${parameter.type}[${length}]`,\n });\n let dynamicChild = false;\n const preparedParameters = [];\n for (let i = 0; i < value.length; i++) {\n const preparedParam = prepareParameter({\n checksumAddress,\n parameter,\n value: value[i],\n });\n if (preparedParam.dynamic)\n dynamicChild = true;\n preparedParameters.push(preparedParam);\n }\n if (dynamic || dynamicChild) {\n const data = encode(preparedParameters);\n if (dynamic) {\n const length = Hex.fromNumber(preparedParameters.length, { size: 32 });\n return {\n dynamic: true,\n encoded: preparedParameters.length > 0 ? Hex.concat(length, data) : length,\n };\n }\n if (dynamicChild)\n return { dynamic: true, encoded: data };\n }\n return {\n dynamic: false,\n encoded: Hex.concat(...preparedParameters.map(({ encoded }) => encoded)),\n };\n}\n/** @internal */\nexport function encodeBytes(value, { type }) {\n const [, parametersize] = type.split('bytes');\n const bytesSize = Hex.size(value);\n if (!parametersize) {\n let value_ = value;\n // If the size is not divisible by 32 bytes, pad the end\n // with empty bytes to the ceiling 32 bytes.\n if (bytesSize % 32 !== 0)\n value_ = Hex.padRight(value_, Math.ceil((value.length - 2) / 2 / 32) * 32);\n return {\n dynamic: true,\n encoded: Hex.concat(Hex.padLeft(Hex.fromNumber(bytesSize, { size: 32 })), value_),\n };\n }\n if (bytesSize !== Number.parseInt(parametersize, 10))\n throw new AbiParameters.BytesSizeMismatchError({\n expectedSize: Number.parseInt(parametersize, 10),\n value,\n });\n return { dynamic: false, encoded: Hex.padRight(value) };\n}\n/** @internal */\nexport function encodeBoolean(value) {\n if (typeof value !== 'boolean')\n throw new Errors.BaseError(`Invalid boolean value: \"${value}\" (type: ${typeof value}). Expected: \\`true\\` or \\`false\\`.`);\n return { dynamic: false, encoded: Hex.padLeft(Hex.fromBoolean(value)) };\n}\n/** @internal */\nexport function encodeNumber(value, { signed, size }) {\n if (typeof size === 'number') {\n const max = 2n ** (BigInt(size) - (signed ? 1n : 0n)) - 1n;\n const min = signed ? -max - 1n : 0n;\n if (value > max || value < min)\n throw new Hex.IntegerOutOfRangeError({\n max: max.toString(),\n min: min.toString(),\n signed,\n size: size / 8,\n value: value.toString(),\n });\n }\n return {\n dynamic: false,\n encoded: Hex.fromNumber(value, {\n size: 32,\n signed,\n }),\n };\n}\n/** @internal */\nexport function encodeString(value) {\n const hexValue = Hex.fromString(value);\n const partsLength = Math.ceil(Hex.size(hexValue) / 32);\n const parts = [];\n for (let i = 0; i < partsLength; i++) {\n parts.push(Hex.padRight(Hex.slice(hexValue, i * 32, (i + 1) * 32)));\n }\n return {\n dynamic: true,\n encoded: Hex.concat(Hex.padRight(Hex.fromNumber(Hex.size(hexValue), { size: 32 })), ...parts),\n };\n}\n/** @internal */\nexport function encodeTuple(value, options) {\n const { checksumAddress, parameter } = options;\n let dynamic = false;\n const preparedParameters = [];\n for (let i = 0; i < parameter.components.length; i++) {\n const param_ = parameter.components[i];\n const index = Array.isArray(value) ? i : param_.name;\n const preparedParam = prepareParameter({\n checksumAddress,\n parameter: param_,\n value: value[index],\n });\n preparedParameters.push(preparedParam);\n if (preparedParam.dynamic)\n dynamic = true;\n }\n return {\n dynamic,\n encoded: dynamic\n ? encode(preparedParameters)\n : Hex.concat(...preparedParameters.map(({ encoded }) => encoded)),\n };\n}\n/** @internal */\nexport function getArrayComponents(type) {\n const matches = type.match(/^(.*)\\[(\\d+)?\\]$/);\n return matches\n ? // Return `null` if the array is dynamic.\n [matches[2] ? Number(matches[2]) : null, matches[1]]\n : undefined;\n}\n/** @internal */\nexport function hasDynamicChild(param) {\n const { type } = param;\n if (type === 'string')\n return true;\n if (type === 'bytes')\n return true;\n if (type.endsWith('[]'))\n return true;\n if (type === 'tuple')\n return param.components?.some(hasDynamicChild);\n const arrayComponents = getArrayComponents(param.type);\n if (arrayComponents &&\n hasDynamicChild({\n ...param,\n type: arrayComponents[1],\n }))\n return true;\n return false;\n}\n//# sourceMappingURL=abiParameters.js.map","import * as Errors from '../Errors.js';\nconst staticCursor = {\n bytes: new Uint8Array(),\n dataView: new DataView(new ArrayBuffer(0)),\n position: 0,\n positionReadCount: new Map(),\n recursiveReadCount: 0,\n recursiveReadLimit: Number.POSITIVE_INFINITY,\n assertReadLimit() {\n if (this.recursiveReadCount >= this.recursiveReadLimit)\n throw new RecursiveReadLimitExceededError({\n count: this.recursiveReadCount + 1,\n limit: this.recursiveReadLimit,\n });\n },\n assertPosition(position) {\n if (position < 0 || position > this.bytes.length - 1)\n throw new PositionOutOfBoundsError({\n length: this.bytes.length,\n position,\n });\n },\n decrementPosition(offset) {\n if (offset < 0)\n throw new NegativeOffsetError({ offset });\n const position = this.position - offset;\n this.assertPosition(position);\n this.position = position;\n },\n getReadCount(position) {\n return this.positionReadCount.get(position || this.position) || 0;\n },\n incrementPosition(offset) {\n if (offset < 0)\n throw new NegativeOffsetError({ offset });\n const position = this.position + offset;\n this.assertPosition(position);\n this.position = position;\n },\n inspectByte(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position);\n return this.bytes[position];\n },\n inspectBytes(length, position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + length - 1);\n return this.bytes.subarray(position, position + length);\n },\n inspectUint8(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position);\n return this.bytes[position];\n },\n inspectUint16(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + 1);\n return this.dataView.getUint16(position);\n },\n inspectUint24(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + 2);\n return ((this.dataView.getUint16(position) << 8) +\n this.dataView.getUint8(position + 2));\n },\n inspectUint32(position_) {\n const position = position_ ?? this.position;\n this.assertPosition(position + 3);\n return this.dataView.getUint32(position);\n },\n pushByte(byte) {\n this.assertPosition(this.position);\n this.bytes[this.position] = byte;\n this.position++;\n },\n pushBytes(bytes) {\n this.assertPosition(this.position + bytes.length - 1);\n this.bytes.set(bytes, this.position);\n this.position += bytes.length;\n },\n pushUint8(value) {\n this.assertPosition(this.position);\n this.bytes[this.position] = value;\n this.position++;\n },\n pushUint16(value) {\n this.assertPosition(this.position + 1);\n this.dataView.setUint16(this.position, value);\n this.position += 2;\n },\n pushUint24(value) {\n this.assertPosition(this.position + 2);\n this.dataView.setUint16(this.position, value >> 8);\n this.dataView.setUint8(this.position + 2, value & ~4294967040);\n this.position += 3;\n },\n pushUint32(value) {\n this.assertPosition(this.position + 3);\n this.dataView.setUint32(this.position, value);\n this.position += 4;\n },\n readByte() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectByte();\n this.position++;\n return value;\n },\n readBytes(length, size) {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectBytes(length);\n this.position += size ?? length;\n return value;\n },\n readUint8() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint8();\n this.position += 1;\n return value;\n },\n readUint16() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint16();\n this.position += 2;\n return value;\n },\n readUint24() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint24();\n this.position += 3;\n return value;\n },\n readUint32() {\n this.assertReadLimit();\n this._touch();\n const value = this.inspectUint32();\n this.position += 4;\n return value;\n },\n get remaining() {\n return this.bytes.length - this.position;\n },\n setPosition(position) {\n const oldPosition = this.position;\n this.assertPosition(position);\n this.position = position;\n return () => (this.position = oldPosition);\n },\n _touch() {\n if (this.recursiveReadLimit === Number.POSITIVE_INFINITY)\n return;\n const count = this.getReadCount();\n this.positionReadCount.set(this.position, count + 1);\n if (count > 0)\n this.recursiveReadCount++;\n },\n};\n/** @internal */\nexport function create(bytes, { recursiveReadLimit = 8_192 } = {}) {\n const cursor = Object.create(staticCursor);\n cursor.bytes = bytes;\n cursor.dataView = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n cursor.positionReadCount = new Map();\n cursor.recursiveReadLimit = recursiveReadLimit;\n return cursor;\n}\n/** @internal */\nexport class NegativeOffsetError extends Errors.BaseError {\n constructor({ offset }) {\n super(`Offset \\`${offset}\\` cannot be negative.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Cursor.NegativeOffsetError'\n });\n }\n}\n/** @internal */\nexport class PositionOutOfBoundsError extends Errors.BaseError {\n constructor({ length, position }) {\n super(`Position \\`${position}\\` is out of bounds (\\`0 < position < ${length}\\`).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Cursor.PositionOutOfBoundsError'\n });\n }\n}\n/** @internal */\nexport class RecursiveReadLimitExceededError extends Errors.BaseError {\n constructor({ count, limit }) {\n super(`Recursive read limit of \\`${limit}\\` exceeded (recursive read count: \\`${count}\\`).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Cursor.RecursiveReadLimitExceededError'\n });\n }\n}\n//# sourceMappingURL=cursor.js.map","import * as abitype from 'abitype';\nimport * as Address from './Address.js';\nimport * as Bytes from './Bytes.js';\nimport * as Errors from './Errors.js';\nimport * as Hex from './Hex.js';\nimport * as internal from './internal/abiParameters.js';\nimport * as Cursor from './internal/cursor.js';\nimport * as Solidity from './Solidity.js';\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function decode(parameters, data, options = {}) {\n const { as = 'Array', checksumAddress = false } = options;\n const bytes = typeof data === 'string' ? Bytes.fromHex(data) : data;\n const cursor = Cursor.create(bytes);\n if (Bytes.size(bytes) === 0 && parameters.length > 0)\n throw new ZeroDataError();\n if (Bytes.size(bytes) && Bytes.size(bytes) < 32)\n throw new DataSizeTooSmallError({\n data: typeof data === 'string' ? data : Hex.fromBytes(data),\n parameters: parameters,\n size: Bytes.size(bytes),\n });\n let consumed = 0;\n const values = as === 'Array' ? [] : {};\n for (let i = 0; i < parameters.length; ++i) {\n const param = parameters[i];\n cursor.setPosition(consumed);\n const [data, consumed_] = internal.decodeParameter(cursor, param, {\n checksumAddress,\n staticPosition: 0,\n });\n consumed += consumed_;\n if (as === 'Array')\n values.push(data);\n else\n values[param.name ?? i] = data;\n }\n return values;\n}\n/**\n * Encodes primitive values into ABI encoded data as per the [Application Binary Interface (ABI) Specification](https://docs.soliditylang.org/en/latest/abi-spec).\n *\n * @example\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * const data = AbiParameters.encode(\n * AbiParameters.from(['string', 'uint', 'bool']),\n * ['wagmi', 420n, true],\n * )\n * ```\n *\n * @example\n * ### JSON Parameters\n *\n * Specify **JSON ABI** Parameters as schema:\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * const data = AbiParameters.encode(\n * [\n * { type: 'string', name: 'name' },\n * { type: 'uint', name: 'age' },\n * { type: 'bool', name: 'isOwner' },\n * ],\n * ['wagmi', 420n, true],\n * )\n * ```\n *\n * @param parameters - The set of ABI parameters to encode, in the shape of the `inputs` or `outputs` attribute of an ABI Item. These parameters must include valid [ABI types](https://docs.soliditylang.org/en/latest/types.html).\n * @param values - The set of primitive values that correspond to the ABI types defined in `parameters`.\n * @returns ABI encoded data.\n */\nexport function encode(parameters, values, options) {\n const { checksumAddress = false } = options ?? {};\n if (parameters.length !== values.length)\n throw new LengthMismatchError({\n expectedLength: parameters.length,\n givenLength: values.length,\n });\n // Prepare the parameters to determine dynamic types to encode.\n const preparedParameters = internal.prepareParameters({\n checksumAddress,\n parameters: parameters,\n values: values,\n });\n const data = internal.encode(preparedParameters);\n if (data.length === 0)\n return '0x';\n return data;\n}\n/**\n * Encodes an array of primitive values to a [packed ABI encoding](https://docs.soliditylang.org/en/latest/abi-spec.html#non-standard-packed-mode).\n *\n * @example\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * const encoded = AbiParameters.encodePacked(\n * ['address', 'string'],\n * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 'hello world'],\n * )\n * // @log: '0xd8da6bf26964af9d7eed9e03e53415d37aa9604568656c6c6f20776f726c64'\n * ```\n *\n * @param types - Set of ABI types to pack encode.\n * @param values - The set of primitive values that correspond to the ABI types defined in `types`.\n * @returns The encoded packed data.\n */\nexport function encodePacked(types, values) {\n if (types.length !== values.length)\n throw new LengthMismatchError({\n expectedLength: types.length,\n givenLength: values.length,\n });\n const data = [];\n for (let i = 0; i < types.length; i++) {\n const type = types[i];\n const value = values[i];\n data.push(encodePacked.encode(type, value));\n }\n return Hex.concat(...data);\n}\n(function (encodePacked) {\n // eslint-disable-next-line jsdoc/require-jsdoc\n function encode(type, value, isArray = false) {\n if (type === 'address') {\n const address = value;\n Address.assert(address);\n return Hex.padLeft(address.toLowerCase(), isArray ? 32 : 0);\n }\n if (type === 'string')\n return Hex.fromString(value);\n if (type === 'bytes')\n return value;\n if (type === 'bool')\n return Hex.padLeft(Hex.fromBoolean(value), isArray ? 32 : 1);\n const intMatch = type.match(Solidity.integerRegex);\n if (intMatch) {\n const [_type, baseType, bits = '256'] = intMatch;\n const size = Number.parseInt(bits, 10) / 8;\n return Hex.fromNumber(value, {\n size: isArray ? 32 : size,\n signed: baseType === 'int',\n });\n }\n const bytesMatch = type.match(Solidity.bytesRegex);\n if (bytesMatch) {\n const [_type, size] = bytesMatch;\n if (Number.parseInt(size, 10) !== (value.length - 2) / 2)\n throw new BytesSizeMismatchError({\n expectedSize: Number.parseInt(size, 10),\n value: value,\n });\n return Hex.padRight(value, isArray ? 32 : 0);\n }\n const arrayMatch = type.match(Solidity.arrayRegex);\n if (arrayMatch && Array.isArray(value)) {\n const [_type, childType] = arrayMatch;\n const data = [];\n for (let i = 0; i < value.length; i++) {\n data.push(encode(childType, value[i], true));\n }\n if (data.length === 0)\n return '0x';\n return Hex.concat(...data);\n }\n throw new InvalidTypeError(type);\n }\n encodePacked.encode = encode;\n})(encodePacked || (encodePacked = {}));\n/**\n * Formats {@link ox#AbiParameters.AbiParameters} into **Human Readable ABI Parameters**.\n *\n * @example\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * const formatted = AbiParameters.format([\n * {\n * name: 'spender',\n * type: 'address',\n * },\n * {\n * name: 'amount',\n * type: 'uint256',\n * },\n * ])\n *\n * formatted\n * // ^?\n *\n *\n * ```\n *\n * @param parameters - The ABI Parameters to format.\n * @returns The formatted ABI Parameters .\n */\nexport function format(parameters) {\n return abitype.formatAbiParameters(parameters);\n}\n/**\n * Parses arbitrary **JSON ABI Parameters** or **Human Readable ABI Parameters** into typed {@link ox#AbiParameters.AbiParameters}.\n *\n * @example\n * ### JSON Parameters\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * const parameters = AbiParameters.from([\n * {\n * name: 'spender',\n * type: 'address',\n * },\n * {\n * name: 'amount',\n * type: 'uint256',\n * },\n * ])\n *\n * parameters\n * //^?\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * ### Human Readable Parameters\n *\n * Human Readable ABI Parameters can be parsed into a typed {@link ox#AbiParameters.AbiParameters}:\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * const parameters = AbiParameters.from('address spender, uint256 amount')\n *\n * parameters\n * //^?\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * It is possible to specify `struct`s along with your definitions:\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * const parameters = AbiParameters.from([\n * 'struct Foo { address spender; uint256 amount; }', // [!code hl]\n * 'Foo foo, address bar',\n * ])\n *\n * parameters\n * //^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n *\n *\n * @param parameters - The ABI Parameters to parse.\n * @returns The typed ABI Parameters.\n */\nexport function from(parameters) {\n if (Array.isArray(parameters) && typeof parameters[0] === 'string')\n return abitype.parseAbiParameters(parameters);\n if (typeof parameters === 'string')\n return abitype.parseAbiParameters(parameters);\n return parameters;\n}\n/**\n * Throws when the data size is too small for the given parameters.\n *\n * @example\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * AbiParameters.decode([{ type: 'uint256' }], '0x010f')\n * // ↑ ❌ 2 bytes\n * // @error: AbiParameters.DataSizeTooSmallError: Data size of 2 bytes is too small for given parameters.\n * // @error: Params: (uint256)\n * // @error: Data: 0x010f (2 bytes)\n * ```\n *\n * ### Solution\n *\n * Pass a valid data size.\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * AbiParameters.decode([{ type: 'uint256' }], '0x00000000000000000000000000000000000000000000000000000000000010f')\n * // ↑ ✅ 32 bytes\n * ```\n */\nexport class DataSizeTooSmallError extends Errors.BaseError {\n constructor({ data, parameters, size, }) {\n super(`Data size of ${size} bytes is too small for given parameters.`, {\n metaMessages: [\n `Params: (${abitype.formatAbiParameters(parameters)})`,\n `Data: ${data} (${size} bytes)`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiParameters.DataSizeTooSmallError'\n });\n }\n}\n/**\n * Throws when zero data is provided, but data is expected.\n *\n * @example\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * AbiParameters.decode([{ type: 'uint256' }], '0x')\n * // ↑ ❌ zero data\n * // @error: AbiParameters.DataSizeTooSmallError: Data size of 2 bytes is too small for given parameters.\n * // @error: Params: (uint256)\n * // @error: Data: 0x010f (2 bytes)\n * ```\n *\n * ### Solution\n *\n * Pass valid data.\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * AbiParameters.decode([{ type: 'uint256' }], '0x00000000000000000000000000000000000000000000000000000000000010f')\n * // ↑ ✅ 32 bytes\n * ```\n */\nexport class ZeroDataError extends Errors.BaseError {\n constructor() {\n super('Cannot decode zero data (\"0x\") with ABI parameters.');\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiParameters.ZeroDataError'\n });\n }\n}\n/**\n * The length of the array value does not match the length specified in the corresponding ABI parameter.\n *\n * ### Example\n *\n * ```ts twoslash\n * // @noErrors\n * import { AbiParameters } from 'ox'\n * // ---cut---\n * AbiParameters.encode(AbiParameters.from('uint256[3]'), [[69n, 420n]])\n * // ↑ expected: 3 ↑ ❌ length: 2\n * // @error: AbiParameters.ArrayLengthMismatchError: ABI encoding array length mismatch\n * // @error: for type `uint256[3]`. Expected: `3`. Given: `2`.\n * ```\n *\n * ### Solution\n *\n * Pass an array of the correct length.\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n * // ---cut---\n * AbiParameters.encode(AbiParameters.from(['uint256[3]']), [[69n, 420n, 69n]])\n * // ↑ ✅ length: 3\n * ```\n */\nexport class ArrayLengthMismatchError extends Errors.BaseError {\n constructor({ expectedLength, givenLength, type, }) {\n super(`Array length mismatch for type \\`${type}\\`. Expected: \\`${expectedLength}\\`. Given: \\`${givenLength}\\`.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiParameters.ArrayLengthMismatchError'\n });\n }\n}\n/**\n * The size of the bytes value does not match the size specified in the corresponding ABI parameter.\n *\n * ### Example\n *\n * ```ts twoslash\n * // @noErrors\n * import { AbiParameters } from 'ox'\n * // ---cut---\n * AbiParameters.encode(AbiParameters.from('bytes8'), [['0xdeadbeefdeadbeefdeadbeef']])\n * // ↑ expected: 8 bytes ↑ ❌ size: 12 bytes\n * // @error: BytesSizeMismatchError: Size of bytes \"0xdeadbeefdeadbeefdeadbeef\"\n * // @error: (bytes12) does not match expected size (bytes8).\n * ```\n *\n * ### Solution\n *\n * Pass a bytes value of the correct size.\n *\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n * // ---cut---\n * AbiParameters.encode(AbiParameters.from(['bytes8']), ['0xdeadbeefdeadbeef'])\n * // ↑ ✅ size: 8 bytes\n * ```\n */\nexport class BytesSizeMismatchError extends Errors.BaseError {\n constructor({ expectedSize, value, }) {\n super(`Size of bytes \"${value}\" (bytes${Hex.size(value)}) does not match expected size (bytes${expectedSize}).`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiParameters.BytesSizeMismatchError'\n });\n }\n}\n/**\n * The length of the values to encode does not match the length of the ABI parameters.\n *\n * ### Example\n *\n * ```ts twoslash\n * // @noErrors\n * import { AbiParameters } from 'ox'\n * // ---cut---\n * AbiParameters.encode(AbiParameters.from(['string', 'uint256']), ['hello'])\n * // @error: LengthMismatchError: ABI encoding params/values length mismatch.\n * // @error: Expected length (params): 2\n * // @error: Given length (values): 1\n * ```\n *\n * ### Solution\n *\n * Pass the correct number of values to encode.\n *\n * ### Solution\n *\n * Pass a [valid ABI type](https://docs.soliditylang.org/en/develop/abi-spec.html#types).\n */\nexport class LengthMismatchError extends Errors.BaseError {\n constructor({ expectedLength, givenLength, }) {\n super([\n 'ABI encoding parameters/values length mismatch.',\n `Expected length (parameters): ${expectedLength}`,\n `Given length (values): ${givenLength}`,\n ].join('\\n'));\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiParameters.LengthMismatchError'\n });\n }\n}\n/**\n * The value provided is not a valid array as specified in the corresponding ABI parameter.\n *\n * ### Example\n *\n * ```ts twoslash\n * // @noErrors\n * import { AbiParameters } from 'ox'\n * // ---cut---\n * AbiParameters.encode(AbiParameters.from(['uint256[3]']), [69])\n * ```\n *\n * ### Solution\n *\n * Pass an array value.\n */\nexport class InvalidArrayError extends Errors.BaseError {\n constructor(value) {\n super(`Value \\`${value}\\` is not a valid array.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiParameters.InvalidArrayError'\n });\n }\n}\n/**\n * Throws when the ABI parameter type is invalid.\n *\n * @example\n * ```ts twoslash\n * import { AbiParameters } from 'ox'\n *\n * AbiParameters.decode([{ type: 'lol' }], '0x00000000000000000000000000000000000000000000000000000000000010f')\n * // ↑ ❌ invalid type\n * // @error: AbiParameters.InvalidTypeError: Type `lol` is not a valid ABI Type.\n * ```\n */\nexport class InvalidTypeError extends Errors.BaseError {\n constructor(type) {\n super(`Type \\`${type}\\` is not a valid ABI Type.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiParameters.InvalidTypeError'\n });\n }\n}\n//# sourceMappingURL=AbiParameters.js.map","import * as Bytes from './Bytes.js';\nimport * as Errors from './Errors.js';\nimport * as Hex from './Hex.js';\nimport * as Cursor from './internal/cursor.js';\n/**\n * Decodes a Recursive-Length Prefix (RLP) value into a {@link ox#Bytes.Bytes} value.\n *\n * @example\n * ```ts twoslash\n * import { Rlp } from 'ox'\n * Rlp.toBytes('0x8b68656c6c6f20776f726c64')\n * // Uint8Array([139, 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100])\n * ```\n *\n * @param value - The value to decode.\n * @returns The decoded {@link ox#Bytes.Bytes} value.\n */\nexport function toBytes(value) {\n return to(value, 'Bytes');\n}\n/**\n * Decodes a Recursive-Length Prefix (RLP) value into a {@link ox#Hex.Hex} value.\n *\n * @example\n * ```ts twoslash\n * import { Rlp } from 'ox'\n * Rlp.toHex('0x8b68656c6c6f20776f726c64')\n * // 0x68656c6c6f20776f726c64\n * ```\n *\n * @param value - The value to decode.\n * @returns The decoded {@link ox#Hex.Hex} value.\n */\nexport function toHex(value) {\n return to(value, 'Hex');\n}\n/////////////////////////////////////////////////////////////////////////////////\n// Internal\n/////////////////////////////////////////////////////////////////////////////////\n/** @internal */\nexport function to(value, to) {\n const to_ = to ?? (typeof value === 'string' ? 'Hex' : 'Bytes');\n const bytes = (() => {\n if (typeof value === 'string') {\n if (value.length > 3 && value.length % 2 !== 0)\n throw new Hex.InvalidLengthError(value);\n return Bytes.fromHex(value);\n }\n return value;\n })();\n const cursor = Cursor.create(bytes, {\n recursiveReadLimit: Number.POSITIVE_INFINITY,\n });\n const result = decodeRlpCursor(cursor, to_);\n return result;\n}\n/** @internal */\n/** @internal */\nexport function decodeRlpCursor(cursor, to = 'Hex') {\n if (cursor.bytes.length === 0)\n return (to === 'Hex' ? Hex.fromBytes(cursor.bytes) : cursor.bytes);\n const prefix = cursor.readByte();\n if (prefix < 0x80)\n cursor.decrementPosition(1);\n // bytes\n if (prefix < 0xc0) {\n const length = readLength(cursor, prefix, 0x80);\n const bytes = cursor.readBytes(length);\n return (to === 'Hex' ? Hex.fromBytes(bytes) : bytes);\n }\n // list\n const length = readLength(cursor, prefix, 0xc0);\n return readList(cursor, length, to);\n}\n/** @internal */\nexport function readLength(cursor, prefix, offset) {\n if (offset === 0x80 && prefix < 0x80)\n return 1;\n if (prefix <= offset + 55)\n return prefix - offset;\n if (prefix === offset + 55 + 1)\n return cursor.readUint8();\n if (prefix === offset + 55 + 2)\n return cursor.readUint16();\n if (prefix === offset + 55 + 3)\n return cursor.readUint24();\n if (prefix === offset + 55 + 4)\n return cursor.readUint32();\n throw new Errors.BaseError('Invalid RLP prefix');\n}\n/** @internal */\nexport function readList(cursor, length, to) {\n const position = cursor.position;\n const value = [];\n while (cursor.position - position < length)\n value.push(decodeRlpCursor(cursor, to));\n return value;\n}\n/**\n * Encodes a {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value into a Recursive-Length Prefix (RLP) value.\n *\n * @example\n * ```ts twoslash\n * import { Bytes, Rlp } from 'ox'\n *\n * Rlp.from('0x68656c6c6f20776f726c64', { as: 'Hex' })\n * // @log: 0x8b68656c6c6f20776f726c64\n *\n * Rlp.from(Bytes.from([139, 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]), { as: 'Bytes' })\n * // @log: Uint8Array([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100])\n * ```\n *\n * @param value - The {@link ox#Bytes.Bytes} or {@link ox#Hex.Hex} value to encode.\n * @param options - Options.\n * @returns The RLP value.\n */\nexport function from(value, options) {\n const { as } = options;\n const encodable = getEncodable(value);\n const cursor = Cursor.create(new Uint8Array(encodable.length));\n encodable.encode(cursor);\n if (as === 'Hex')\n return Hex.fromBytes(cursor.bytes);\n return cursor.bytes;\n}\n/**\n * Encodes a {@link ox#Bytes.Bytes} value into a Recursive-Length Prefix (RLP) value.\n *\n * @example\n * ```ts twoslash\n * import { Bytes, Rlp } from 'ox'\n *\n * Rlp.fromBytes(Bytes.from([139, 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]))\n * // @log: Uint8Array([104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100])\n * ```\n *\n * @param bytes - The {@link ox#Bytes.Bytes} value to encode.\n * @param options - Options.\n * @returns The RLP value.\n */\nexport function fromBytes(bytes, options = {}) {\n const { as = 'Bytes' } = options;\n return from(bytes, { as });\n}\n/**\n * Encodes a {@link ox#Hex.Hex} value into a Recursive-Length Prefix (RLP) value.\n *\n * @example\n * ```ts twoslash\n * import { Rlp } from 'ox'\n *\n * Rlp.fromHex('0x68656c6c6f20776f726c64')\n * // @log: 0x8b68656c6c6f20776f726c64\n * ```\n *\n * @param hex - The {@link ox#Hex.Hex} value to encode.\n * @param options - Options.\n * @returns The RLP value.\n */\nexport function fromHex(hex, options = {}) {\n const { as = 'Hex' } = options;\n return from(hex, { as });\n}\n/////////////////////////////////////////////////////////////////////////////////\n// Internal\n/////////////////////////////////////////////////////////////////////////////////\nfunction getEncodable(bytes) {\n if (Array.isArray(bytes))\n return getEncodableList(bytes.map((x) => getEncodable(x)));\n return getEncodableBytes(bytes);\n}\nfunction getEncodableList(list) {\n const bodyLength = list.reduce((acc, x) => acc + x.length, 0);\n const sizeOfBodyLength = getSizeOfLength(bodyLength);\n const length = (() => {\n if (bodyLength <= 55)\n return 1 + bodyLength;\n return 1 + sizeOfBodyLength + bodyLength;\n })();\n return {\n length,\n encode(cursor) {\n if (bodyLength <= 55) {\n cursor.pushByte(0xc0 + bodyLength);\n }\n else {\n cursor.pushByte(0xc0 + 55 + sizeOfBodyLength);\n if (sizeOfBodyLength === 1)\n cursor.pushUint8(bodyLength);\n else if (sizeOfBodyLength === 2)\n cursor.pushUint16(bodyLength);\n else if (sizeOfBodyLength === 3)\n cursor.pushUint24(bodyLength);\n else\n cursor.pushUint32(bodyLength);\n }\n for (const { encode } of list) {\n encode(cursor);\n }\n },\n };\n}\nfunction getEncodableBytes(bytesOrHex) {\n const bytes = typeof bytesOrHex === 'string' ? Bytes.fromHex(bytesOrHex) : bytesOrHex;\n const sizeOfBytesLength = getSizeOfLength(bytes.length);\n const length = (() => {\n if (bytes.length === 1 && bytes[0] < 0x80)\n return 1;\n if (bytes.length <= 55)\n return 1 + bytes.length;\n return 1 + sizeOfBytesLength + bytes.length;\n })();\n return {\n length,\n encode(cursor) {\n if (bytes.length === 1 && bytes[0] < 0x80) {\n cursor.pushBytes(bytes);\n }\n else if (bytes.length <= 55) {\n cursor.pushByte(0x80 + bytes.length);\n cursor.pushBytes(bytes);\n }\n else {\n cursor.pushByte(0x80 + 55 + sizeOfBytesLength);\n if (sizeOfBytesLength === 1)\n cursor.pushUint8(bytes.length);\n else if (sizeOfBytesLength === 2)\n cursor.pushUint16(bytes.length);\n else if (sizeOfBytesLength === 3)\n cursor.pushUint24(bytes.length);\n else\n cursor.pushUint32(bytes.length);\n cursor.pushBytes(bytes);\n }\n },\n };\n}\nfunction getSizeOfLength(length) {\n if (length < 2 ** 8)\n return 1;\n if (length < 2 ** 16)\n return 2;\n if (length < 2 ** 24)\n return 3;\n if (length < 2 ** 32)\n return 4;\n throw new Errors.BaseError('Length is too large.');\n}\n//# sourceMappingURL=Rlp.js.map","import { secp256k1 } from '@noble/curves/secp256k1';\nimport * as Bytes from './Bytes.js';\nimport * as Errors from './Errors.js';\nimport * as Hex from './Hex.js';\nimport * as Json from './Json.js';\nimport * as Solidity from './Solidity.js';\n/**\n * Asserts that a Signature is valid.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * Signature.assert({\n * r: -49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * yParity: 1,\n * })\n * // @error: InvalidSignatureRError:\n * // @error: Value `-549...n` is an invalid r value.\n * // @error: r must be a positive integer less than 2^256.\n * ```\n *\n * @param signature - The signature object to assert.\n */\nexport function assert(signature, options = {}) {\n const { recovered } = options;\n if (typeof signature.r === 'undefined')\n throw new MissingPropertiesError({ signature });\n if (typeof signature.s === 'undefined')\n throw new MissingPropertiesError({ signature });\n if (recovered && typeof signature.yParity === 'undefined')\n throw new MissingPropertiesError({ signature });\n if (signature.r < 0n || signature.r > Solidity.maxUint256)\n throw new InvalidRError({ value: signature.r });\n if (signature.s < 0n || signature.s > Solidity.maxUint256)\n throw new InvalidSError({ value: signature.s });\n if (typeof signature.yParity === 'number' &&\n signature.yParity !== 0 &&\n signature.yParity !== 1)\n throw new InvalidYParityError({ value: signature.yParity });\n}\n/**\n * Deserializes a {@link ox#Bytes.Bytes} signature into a structured {@link ox#Signature.Signature}.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Signature } from 'ox'\n *\n * Signature.fromBytes(new Uint8Array([128, 3, 131, ...]))\n * // @log: { r: 5231...n, s: 3522...n, yParity: 0 }\n * ```\n *\n * @param signature - The serialized signature.\n * @returns The deserialized {@link ox#Signature.Signature}.\n */\nexport function fromBytes(signature) {\n return fromHex(Hex.fromBytes(signature));\n}\n/**\n * Deserializes a {@link ox#Hex.Hex} signature into a structured {@link ox#Signature.Signature}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * Signature.fromHex('0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c')\n * // @log: { r: 5231...n, s: 3522...n, yParity: 0 }\n * ```\n *\n * @param serialized - The serialized signature.\n * @returns The deserialized {@link ox#Signature.Signature}.\n */\nexport function fromHex(signature) {\n if (signature.length !== 130 && signature.length !== 132)\n throw new InvalidSerializedSizeError({ signature });\n const r = BigInt(Hex.slice(signature, 0, 32));\n const s = BigInt(Hex.slice(signature, 32, 64));\n const yParity = (() => {\n const yParity = Number(`0x${signature.slice(130)}`);\n if (Number.isNaN(yParity))\n return undefined;\n try {\n return vToYParity(yParity);\n }\n catch {\n throw new InvalidYParityError({ value: yParity });\n }\n })();\n if (typeof yParity === 'undefined')\n return {\n r,\n s,\n };\n return {\n r,\n s,\n yParity,\n };\n}\n/**\n * Extracts a {@link ox#Signature.Signature} from an arbitrary object that may include signature properties.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Signature } from 'ox'\n *\n * Signature.extract({\n * baz: 'barry',\n * foo: 'bar',\n * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * yParity: 1,\n * zebra: 'stripes',\n * })\n * // @log: {\n * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * // @log: yParity: 1\n * // @log: }\n * ```\n *\n * @param value - The arbitrary object to extract the signature from.\n * @returns The extracted {@link ox#Signature.Signature}.\n */\nexport function extract(value) {\n if (typeof value.r === 'undefined')\n return undefined;\n if (typeof value.s === 'undefined')\n return undefined;\n return from(value);\n}\n/**\n * Instantiates a typed {@link ox#Signature.Signature} object from a {@link ox#Signature.Signature}, {@link ox#Signature.Legacy}, {@link ox#Bytes.Bytes}, or {@link ox#Hex.Hex}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * Signature.from({\n * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * yParity: 1,\n * })\n * // @log: {\n * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * // @log: yParity: 1\n * // @log: }\n * ```\n *\n * @example\n * ### From Serialized\n *\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * Signature.from('0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db801')\n * // @log: {\n * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * // @log: yParity: 1,\n * // @log: }\n * ```\n *\n * @example\n * ### From Legacy\n *\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * Signature.from({\n * r: 47323457007453657207889730243826965761922296599680473886588287015755652701072n,\n * s: 57228803202727131502949358313456071280488184270258293674242124340113824882788n,\n * v: 27,\n * })\n * // @log: {\n * // @log: r: 47323457007453657207889730243826965761922296599680473886588287015755652701072n,\n * // @log: s: 57228803202727131502949358313456071280488184270258293674242124340113824882788n,\n * // @log: yParity: 0\n * // @log: }\n * ```\n *\n * @param signature - The signature value to instantiate.\n * @returns The instantiated {@link ox#Signature.Signature}.\n */\nexport function from(signature) {\n const signature_ = (() => {\n if (typeof signature === 'string')\n return fromHex(signature);\n if (signature instanceof Uint8Array)\n return fromBytes(signature);\n if (typeof signature.r === 'string')\n return fromRpc(signature);\n if (signature.v)\n return fromLegacy(signature);\n return {\n r: signature.r,\n s: signature.s,\n ...(typeof signature.yParity !== 'undefined'\n ? { yParity: signature.yParity }\n : {}),\n };\n })();\n assert(signature_);\n return signature_;\n}\n/**\n * Converts a DER-encoded signature to a {@link ox#Signature.Signature}.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Signature } from 'ox'\n *\n * const signature = Signature.fromDerBytes(new Uint8Array([132, 51, 23, ...]))\n * // @log: {\n * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * // @log: }\n * ```\n *\n * @param signature - The DER-encoded signature to convert.\n * @returns The {@link ox#Signature.Signature}.\n */\nexport function fromDerBytes(signature) {\n return fromDerHex(Hex.fromBytes(signature));\n}\n/**\n * Converts a DER-encoded signature to a {@link ox#Signature.Signature}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.fromDerHex('0x304402206e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf02204a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8')\n * // @log: {\n * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * // @log: }\n * ```\n *\n * @param signature - The DER-encoded signature to convert.\n * @returns The {@link ox#Signature.Signature}.\n */\nexport function fromDerHex(signature) {\n const { r, s } = secp256k1.Signature.fromDER(Hex.from(signature).slice(2));\n return { r, s };\n}\n/**\n * Converts a {@link ox#Signature.Legacy} into a {@link ox#Signature.Signature}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const legacy = Signature.fromLegacy({ r: 1n, s: 2n, v: 28 })\n * // @log: { r: 1n, s: 2n, yParity: 1 }\n * ```\n *\n * @param signature - The {@link ox#Signature.Legacy} to convert.\n * @returns The converted {@link ox#Signature.Signature}.\n */\nexport function fromLegacy(signature) {\n return {\n r: signature.r,\n s: signature.s,\n yParity: vToYParity(signature.v),\n };\n}\n/**\n * Converts a {@link ox#Signature.Rpc} into a {@link ox#Signature.Signature}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.fromRpc({\n * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',\n * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',\n * yParity: '0x0',\n * })\n * ```\n *\n * @param signature - The {@link ox#Signature.Rpc} to convert.\n * @returns The converted {@link ox#Signature.Signature}.\n */\nexport function fromRpc(signature) {\n const yParity = (() => {\n const v = signature.v ? Number(signature.v) : undefined;\n let yParity = signature.yParity ? Number(signature.yParity) : undefined;\n if (typeof v === 'number' && typeof yParity !== 'number')\n yParity = vToYParity(v);\n if (typeof yParity !== 'number')\n throw new InvalidYParityError({ value: signature.yParity });\n return yParity;\n })();\n return {\n r: BigInt(signature.r),\n s: BigInt(signature.s),\n yParity,\n };\n}\n/**\n * Converts a {@link ox#Signature.Tuple} to a {@link ox#Signature.Signature}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.fromTuple(['0x01', '0x7b', '0x1c8'])\n * // @log: {\n * // @log: r: 123n,\n * // @log: s: 456n,\n * // @log: yParity: 1,\n * // @log: }\n * ```\n *\n * @param tuple - The {@link ox#Signature.Tuple} to convert.\n * @returns The {@link ox#Signature.Signature}.\n */\nexport function fromTuple(tuple) {\n const [yParity, r, s] = tuple;\n return from({\n r: r === '0x' ? 0n : BigInt(r),\n s: s === '0x' ? 0n : BigInt(s),\n yParity: yParity === '0x' ? 0 : Number(yParity),\n });\n}\n/**\n * Serializes a {@link ox#Signature.Signature} to {@link ox#Bytes.Bytes}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.toBytes({\n * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * yParity: 1\n * })\n * // @log: Uint8Array [102, 16, 10, ...]\n * ```\n *\n * @param signature - The signature to serialize.\n * @returns The serialized signature.\n */\nexport function toBytes(signature) {\n return Bytes.fromHex(toHex(signature));\n}\n/**\n * Serializes a {@link ox#Signature.Signature} to {@link ox#Hex.Hex}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.toHex({\n * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * yParity: 1\n * })\n * // @log: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c'\n * ```\n *\n * @param signature - The signature to serialize.\n * @returns The serialized signature.\n */\nexport function toHex(signature) {\n assert(signature);\n const r = signature.r;\n const s = signature.s;\n const signature_ = Hex.concat(Hex.fromNumber(r, { size: 32 }), Hex.fromNumber(s, { size: 32 }), \n // If the signature is recovered, add the recovery byte to the signature.\n typeof signature.yParity === 'number'\n ? Hex.fromNumber(yParityToV(signature.yParity), { size: 1 })\n : '0x');\n return signature_;\n}\n/**\n * Converts a {@link ox#Signature.Signature} to DER-encoded format.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.from({\n * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * })\n *\n * const signature_der = Signature.toDerBytes(signature)\n * // @log: Uint8Array [132, 51, 23, ...]\n * ```\n *\n * @param signature - The signature to convert.\n * @returns The DER-encoded signature.\n */\nexport function toDerBytes(signature) {\n const sig = new secp256k1.Signature(signature.r, signature.s);\n return sig.toDERRawBytes();\n}\n/**\n * Converts a {@link ox#Signature.Signature} to DER-encoded format.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.from({\n * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * })\n *\n * const signature_der = Signature.toDerHex(signature)\n * // @log: '0x304402206e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf02204a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8'\n * ```\n *\n * @param signature - The signature to convert.\n * @returns The DER-encoded signature.\n */\nexport function toDerHex(signature) {\n const sig = new secp256k1.Signature(signature.r, signature.s);\n return `0x${sig.toDERHex()}`;\n}\n/**\n * Converts a {@link ox#Signature.Signature} into a {@link ox#Signature.Legacy}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const legacy = Signature.toLegacy({ r: 1n, s: 2n, yParity: 1 })\n * // @log: { r: 1n, s: 2n, v: 28 }\n * ```\n *\n * @param signature - The {@link ox#Signature.Signature} to convert.\n * @returns The converted {@link ox#Signature.Legacy}.\n */\nexport function toLegacy(signature) {\n return {\n r: signature.r,\n s: signature.s,\n v: yParityToV(signature.yParity),\n };\n}\n/**\n * Converts a {@link ox#Signature.Signature} into a {@link ox#Signature.Rpc}.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signature = Signature.toRpc({\n * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * yParity: 1\n * })\n * ```\n *\n * @param signature - The {@link ox#Signature.Signature} to convert.\n * @returns The converted {@link ox#Signature.Rpc}.\n */\nexport function toRpc(signature) {\n const { r, s, yParity } = signature;\n return {\n r: Hex.fromNumber(r, { size: 32 }),\n s: Hex.fromNumber(s, { size: 32 }),\n yParity: yParity === 0 ? '0x0' : '0x1',\n };\n}\n/**\n * Converts a {@link ox#Signature.Signature} to a serialized {@link ox#Signature.Tuple} to be used for signatures in Transaction Envelopes, EIP-7702 Authorization Lists, etc.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const signatureTuple = Signature.toTuple({\n * r: 123n,\n * s: 456n,\n * yParity: 1,\n * })\n * // @log: [yParity: '0x01', r: '0x7b', s: '0x1c8']\n * ```\n *\n * @param signature - The {@link ox#Signature.Signature} to convert.\n * @returns The {@link ox#Signature.Tuple}.\n */\nexport function toTuple(signature) {\n const { r, s, yParity } = signature;\n return [\n yParity ? '0x01' : '0x',\n r === 0n ? '0x' : Hex.trimLeft(Hex.fromNumber(r)),\n s === 0n ? '0x' : Hex.trimLeft(Hex.fromNumber(s)),\n ];\n}\n/**\n * Validates a Signature. Returns `true` if the signature is valid, `false` otherwise.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const valid = Signature.validate({\n * r: -49782753348462494199823712700004552394425719014458918871452329774910450607807n,\n * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,\n * yParity: 1,\n * })\n * // @log: false\n * ```\n *\n * @param signature - The signature object to assert.\n */\nexport function validate(signature, options = {}) {\n try {\n assert(signature, options);\n return true;\n }\n catch {\n return false;\n }\n}\n/**\n * Converts a ECDSA `v` value to a `yParity` value.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const yParity = Signature.vToYParity(28)\n * // @log: 1\n * ```\n *\n * @param v - The ECDSA `v` value to convert.\n * @returns The `yParity` value.\n */\nexport function vToYParity(v) {\n if (v === 0 || v === 27)\n return 0;\n if (v === 1 || v === 28)\n return 1;\n if (v >= 35)\n return v % 2 === 0 ? 1 : 0;\n throw new InvalidVError({ value: v });\n}\n/**\n * Converts a ECDSA `v` value to a `yParity` value.\n *\n * @example\n * ```ts twoslash\n * import { Signature } from 'ox'\n *\n * const v = Signature.yParityToV(1)\n * // @log: 28\n * ```\n *\n * @param yParity - The ECDSA `yParity` value to convert.\n * @returns The `v` value.\n */\nexport function yParityToV(yParity) {\n if (yParity === 0)\n return 27;\n if (yParity === 1)\n return 28;\n throw new InvalidYParityError({ value: yParity });\n}\n/** Thrown when the serialized signature is of an invalid size. */\nexport class InvalidSerializedSizeError extends Errors.BaseError {\n constructor({ signature }) {\n super(`Value \\`${signature}\\` is an invalid signature size.`, {\n metaMessages: [\n 'Expected: 64 bytes or 65 bytes.',\n `Received ${Hex.size(Hex.from(signature))} bytes.`,\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Signature.InvalidSerializedSizeError'\n });\n }\n}\n/** Thrown when the signature is missing either an `r`, `s`, or `yParity` property. */\nexport class MissingPropertiesError extends Errors.BaseError {\n constructor({ signature }) {\n super(`Signature \\`${Json.stringify(signature)}\\` is missing either an \\`r\\`, \\`s\\`, or \\`yParity\\` property.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Signature.MissingPropertiesError'\n });\n }\n}\n/** Thrown when the signature has an invalid `r` value. */\nexport class InvalidRError extends Errors.BaseError {\n constructor({ value }) {\n super(`Value \\`${value}\\` is an invalid r value. r must be a positive integer less than 2^256.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Signature.InvalidRError'\n });\n }\n}\n/** Thrown when the signature has an invalid `s` value. */\nexport class InvalidSError extends Errors.BaseError {\n constructor({ value }) {\n super(`Value \\`${value}\\` is an invalid s value. s must be a positive integer less than 2^256.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Signature.InvalidSError'\n });\n }\n}\n/** Thrown when the signature has an invalid `yParity` value. */\nexport class InvalidYParityError extends Errors.BaseError {\n constructor({ value }) {\n super(`Value \\`${value}\\` is an invalid y-parity value. Y-parity must be 0 or 1.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Signature.InvalidYParityError'\n });\n }\n}\n/** Thrown when the signature has an invalid `v` value. */\nexport class InvalidVError extends Errors.BaseError {\n constructor({ value }) {\n super(`Value \\`${value}\\` is an invalid v value. v must be 27, 28 or >=35.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'Signature.InvalidVError'\n });\n }\n}\n//# sourceMappingURL=Signature.js.map","import * as Hash from './Hash.js';\nimport * as Hex from './Hex.js';\nimport * as Rlp from './Rlp.js';\nimport * as Signature from './Signature.js';\n/**\n * Converts an [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Authorization object into a typed {@link ox#Authorization.Authorization}.\n *\n * @example\n * An Authorization can be instantiated from an [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Authorization tuple in object format.\n *\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.from({\n * address: '0x1234567890abcdef1234567890abcdef12345678',\n * chainId: 1,\n * nonce: 69n,\n * })\n * ```\n *\n * @example\n * ### Attaching Signatures\n *\n * A {@link ox#Signature.Signature} can be attached with the `signature` option. The example below demonstrates signing\n * an Authorization with {@link ox#Secp256k1.(sign:function)}.\n *\n * ```ts twoslash\n * import { Authorization, Secp256k1 } from 'ox'\n *\n * const authorization = Authorization.from({\n * address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * chainId: 1,\n * nonce: 40n,\n * })\n *\n * const signature = Secp256k1.sign({\n * payload: Authorization.getSignPayload(authorization),\n * privateKey: '0x...',\n * })\n *\n * const authorization_signed = Authorization.from(authorization, { signature }) // [!code focus]\n * ```\n *\n * @param authorization - An [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Authorization tuple in object format.\n * @param options - Authorization options.\n * @returns The {@link ox#Authorization.Authorization}.\n */\nexport function from(authorization, options = {}) {\n if (typeof authorization.chainId === 'string')\n return fromRpc(authorization);\n return { ...authorization, ...options.signature };\n}\n/**\n * Converts an {@link ox#Authorization.Rpc} to an {@link ox#Authorization.Authorization}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.fromRpc({\n * address: '0x0000000000000000000000000000000000000000',\n * chainId: '0x1',\n * nonce: '0x1',\n * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',\n * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',\n * yParity: '0x0',\n * })\n * ```\n *\n * @param authorization - The RPC-formatted Authorization.\n * @returns A signed {@link ox#Authorization.Authorization}.\n */\nexport function fromRpc(authorization) {\n const { address, chainId, nonce } = authorization;\n const signature = Signature.extract(authorization);\n return {\n address,\n chainId: Number(chainId),\n nonce: BigInt(nonce),\n ...signature,\n };\n}\n/**\n * Converts an {@link ox#Authorization.ListRpc} to an {@link ox#Authorization.List}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorizationList = Authorization.fromRpcList([{\n * address: '0x0000000000000000000000000000000000000000',\n * chainId: '0x1',\n * nonce: '0x1',\n * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',\n * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',\n * yParity: '0x0',\n * }])\n * ```\n *\n * @param authorizationList - The RPC-formatted Authorization list.\n * @returns A signed {@link ox#Authorization.List}.\n */\nexport function fromRpcList(authorizationList) {\n return authorizationList.map(fromRpc);\n}\n/**\n * Converts an {@link ox#Authorization.Tuple} to an {@link ox#Authorization.Authorization}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.fromTuple([\n * '0x1',\n * '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * '0x3'\n * ])\n * // @log: {\n * // @log: address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * // @log: chainId: 1,\n * // @log: nonce: 3n\n * // @log: }\n * ```\n *\n * @example\n * It is also possible to append a Signature tuple to the end of an Authorization tuple.\n *\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.fromTuple([\n * '0x1',\n * '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * '0x3',\n * '0x1',\n * '0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90',\n * '0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064',\n * ])\n * // @log: {\n * // @log: address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * // @log: chainId: 1,\n * // @log: nonce: 3n\n * // @log: r: BigInt('0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90'),\n * // @log: s: BigInt('0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064'),\n * // @log: yParity: 0,\n * // @log: }\n * ```\n *\n * @param tuple - The [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Authorization tuple.\n * @returns The {@link ox#Authorization.Authorization}.\n */\nexport function fromTuple(tuple) {\n const [chainId, address, nonce, yParity, r, s] = tuple;\n let args = {\n address,\n chainId: chainId === '0x' ? 0 : Number(chainId),\n nonce: nonce === '0x' ? 0n : BigInt(nonce),\n };\n if (yParity && r && s)\n args = { ...args, ...Signature.fromTuple([yParity, r, s]) };\n return from(args);\n}\n/**\n * Converts an {@link ox#Authorization.TupleList} to an {@link ox#Authorization.List}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorizationList = Authorization.fromTupleList([\n * ['0x1', '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c', '0x3'],\n * ['0x3', '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c', '0x14'],\n * ])\n * // @log: [\n * // @log: {\n * // @log: address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * // @log: chainId: 1,\n * // @log: nonce: 3n,\n * // @log: },\n * // @log: {\n * // @log: address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * // @log: chainId: 3,\n * // @log: nonce: 20n,\n * // @log: },\n * // @log: ]\n * ```\n *\n * @example\n * It is also possible to append a Signature tuple to the end of an Authorization tuple.\n *\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorizationList = Authorization.fromTupleList([\n * ['0x1', '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c', '0x3', '0x1', '0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90', '0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064'],\n * ['0x3', '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c', '0x14', '0x1', '0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90', '0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064'],\n * ])\n * // @log: [\n * // @log: {\n * // @log: address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * // @log: chainId: 1,\n * // @log: nonce: 3n,\n * // @log: r: BigInt('0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90'),\n * // @log: s: BigInt('0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064'),\n * // @log: yParity: 0,\n * // @log: },\n * // @log: {\n * // @log: address: '0xbe95c3f554e9fc85ec51be69a3d807a0d55bcf2c',\n * // @log: chainId: 3,\n * // @log: nonce: 20n,\n * // @log: r: BigInt('0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90'),\n * // @log: s: BigInt('0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064'),\n * // @log: yParity: 0,\n * // @log: },\n * // @log: ]\n * ```\n *\n * @param tupleList - The [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Authorization tuple list.\n * @returns An {@link ox#Authorization.List}.\n */\nexport function fromTupleList(tupleList) {\n const list = [];\n for (const tuple of tupleList)\n list.push(fromTuple(tuple));\n return list;\n}\n/**\n * Computes the sign payload for an {@link ox#Authorization.Authorization} in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.\n *\n * @example\n * The example below demonstrates computing the sign payload for an {@link ox#Authorization.Authorization}. This payload\n * can then be passed to signing functions like {@link ox#Secp256k1.(sign:function)}.\n *\n * ```ts twoslash\n * import { Authorization, Secp256k1 } from 'ox'\n *\n * const authorization = Authorization.from({\n * address: '0x1234567890abcdef1234567890abcdef12345678',\n * chainId: 1,\n * nonce: 69n,\n * })\n *\n * const payload = Authorization.getSignPayload(authorization) // [!code focus]\n *\n * const signature = Secp256k1.sign({\n * payload,\n * privateKey: '0x...',\n * })\n * ```\n *\n * @param authorization - The {@link ox#Authorization.Authorization}.\n * @returns The sign payload.\n */\nexport function getSignPayload(authorization) {\n return hash(authorization, { presign: true });\n}\n/**\n * Computes the hash for an {@link ox#Authorization.Authorization} in [EIP-7702 format](https://eips.ethereum.org/EIPS/eip-7702): `keccak256('0x05' || rlp([chain_id, address, nonce]))`.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.from({\n * address: '0x1234567890abcdef1234567890abcdef12345678',\n * chainId: 1,\n * nonce: 69n,\n * })\n *\n * const hash = Authorization.hash(authorization) // [!code focus]\n * ```\n *\n * @param authorization - The {@link ox#Authorization.Authorization}.\n * @returns The hash.\n */\nexport function hash(authorization, options = {}) {\n const { presign } = options;\n return Hash.keccak256(Hex.concat('0x05', Rlp.fromHex(toTuple(presign\n ? {\n address: authorization.address,\n chainId: authorization.chainId,\n nonce: authorization.nonce,\n }\n : authorization))));\n}\n/**\n * Converts an {@link ox#Authorization.Authorization} to an {@link ox#Authorization.Rpc}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.toRpc({\n * address: '0x0000000000000000000000000000000000000000',\n * chainId: 1,\n * nonce: 1n,\n * r: 44944627813007772897391531230081695102703289123332187696115181104739239197517n,\n * s: 36528503505192438307355164441104001310566505351980369085208178712678799181120n,\n * yParity: 0,\n * })\n * ```\n *\n * @param authorization - An Authorization.\n * @returns An RPC-formatted Authorization.\n */\nexport function toRpc(authorization) {\n const { address, chainId, nonce, ...signature } = authorization;\n return {\n address,\n chainId: Hex.fromNumber(chainId),\n nonce: Hex.fromNumber(nonce),\n ...Signature.toRpc(signature),\n };\n}\n/**\n * Converts an {@link ox#Authorization.List} to an {@link ox#Authorization.ListRpc}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.toRpcList([{\n * address: '0x0000000000000000000000000000000000000000',\n * chainId: 1,\n * nonce: 1n,\n * r: 44944627813007772897391531230081695102703289123332187696115181104739239197517n,\n * s: 36528503505192438307355164441104001310566505351980369085208178712678799181120n,\n * yParity: 0,\n * }])\n * ```\n *\n * @param authorizationList - An Authorization List.\n * @returns An RPC-formatted Authorization List.\n */\nexport function toRpcList(authorizationList) {\n return authorizationList.map(toRpc);\n}\n/**\n * Converts an {@link ox#Authorization.Authorization} to an {@link ox#Authorization.Tuple}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization = Authorization.from({\n * address: '0x1234567890abcdef1234567890abcdef12345678',\n * chainId: 1,\n * nonce: 69n,\n * })\n *\n * const tuple = Authorization.toTuple(authorization) // [!code focus]\n * // @log: [\n * // @log: address: '0x1234567890abcdef1234567890abcdef12345678',\n * // @log: chainId: 1,\n * // @log: nonce: 69n,\n * // @log: ]\n * ```\n *\n * @param authorization - The {@link ox#Authorization.Authorization}.\n * @returns An [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Authorization tuple.\n */\nexport function toTuple(authorization) {\n const { address, chainId, nonce } = authorization;\n const signature = Signature.extract(authorization);\n return [\n chainId ? Hex.fromNumber(chainId) : '0x',\n address,\n nonce ? Hex.fromNumber(nonce) : '0x',\n ...(signature ? Signature.toTuple(signature) : []),\n ];\n}\n/**\n * Converts an {@link ox#Authorization.List} to an {@link ox#Authorization.TupleList}.\n *\n * @example\n * ```ts twoslash\n * import { Authorization } from 'ox'\n *\n * const authorization_1 = Authorization.from({\n * address: '0x1234567890abcdef1234567890abcdef12345678',\n * chainId: 1,\n * nonce: 69n,\n * })\n * const authorization_2 = Authorization.from({\n * address: '0x1234567890abcdef1234567890abcdef12345678',\n * chainId: 3,\n * nonce: 20n,\n * })\n *\n * const tuple = Authorization.toTupleList([authorization_1, authorization_2]) // [!code focus]\n * // @log: [\n * // @log: [\n * // @log: address: '0x1234567890abcdef1234567890abcdef12345678',\n * // @log: chainId: 1,\n * // @log: nonce: 69n,\n * // @log: ],\n * // @log: [\n * // @log: address: '0x1234567890abcdef1234567890abcdef12345678',\n * // @log: chainId: 3,\n * // @log: nonce: 20n,\n * // @log: ],\n * // @log: ]\n * ```\n *\n * @param list - An {@link ox#Authorization.List}.\n * @returns An [EIP-7702](https://eips.ethereum.org/EIPS/eip-7702) Authorization tuple list.\n */\nexport function toTupleList(list) {\n if (!list || list.length === 0)\n return [];\n const tupleList = [];\n for (const authorization of list)\n tupleList.push(toTuple(authorization));\n return tupleList;\n}\n//# sourceMappingURL=Authorization.js.map","import { secp256k1 } from '@noble/curves/secp256k1';\nimport * as Address from './Address.js';\nimport * as Bytes from './Bytes.js';\nimport * as Hex from './Hex.js';\nimport * as Entropy from './internal/entropy.js';\nimport * as PublicKey from './PublicKey.js';\n/** Re-export of noble/curves secp256k1 utilities. */\nexport const noble = secp256k1;\n/**\n * Creates a new secp256k1 ECDSA key pair consisting of a private key and its corresponding public key.\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const { privateKey, publicKey } = Secp256k1.createKeyPair()\n * ```\n *\n * @param options - The options to generate the key pair.\n * @returns The generated key pair containing both private and public keys.\n */\nexport function createKeyPair(options = {}) {\n const { as = 'Hex' } = options;\n const privateKey = randomPrivateKey({ as });\n const publicKey = getPublicKey({ privateKey });\n return {\n privateKey: privateKey,\n publicKey,\n };\n}\n/**\n * Computes the secp256k1 ECDSA public key from a provided private key.\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const publicKey = Secp256k1.getPublicKey({ privateKey: '0x...' })\n * ```\n *\n * @param options - The options to compute the public key.\n * @returns The computed public key.\n */\nexport function getPublicKey(options) {\n const { privateKey } = options;\n const point = secp256k1.ProjectivePoint.fromPrivateKey(Hex.from(privateKey).slice(2));\n return PublicKey.from(point);\n}\n/**\n * Computes a shared secret using ECDH (Elliptic Curve Diffie-Hellman) between a private key and a public key.\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const { privateKey: privateKeyA } = Secp256k1.createKeyPair()\n * const { publicKey: publicKeyB } = Secp256k1.createKeyPair()\n *\n * const sharedSecret = Secp256k1.getSharedSecret({\n * privateKey: privateKeyA,\n * publicKey: publicKeyB\n * })\n * ```\n *\n * @param options - The options to compute the shared secret.\n * @returns The computed shared secret.\n */\nexport function getSharedSecret(options) {\n const { as = 'Hex', privateKey, publicKey } = options;\n const point = secp256k1.ProjectivePoint.fromHex(PublicKey.toHex(publicKey).slice(2));\n const sharedPoint = point.multiply(secp256k1.utils.normPrivateKeyToScalar(Hex.from(privateKey).slice(2)));\n const sharedSecret = sharedPoint.toRawBytes(true); // compressed format\n if (as === 'Hex')\n return Hex.fromBytes(sharedSecret);\n return sharedSecret;\n}\n/**\n * Generates a random ECDSA private key on the secp256k1 curve.\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const privateKey = Secp256k1.randomPrivateKey()\n * ```\n *\n * @param options - The options to generate the private key.\n * @returns The generated private key.\n */\nexport function randomPrivateKey(options = {}) {\n const { as = 'Hex' } = options;\n const bytes = secp256k1.utils.randomPrivateKey();\n if (as === 'Hex')\n return Hex.fromBytes(bytes);\n return bytes;\n}\n/**\n * Recovers the signing address from the signed payload and signature.\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const signature = Secp256k1.sign({ payload: '0xdeadbeef', privateKey: '0x...' })\n *\n * const address = Secp256k1.recoverAddress({ // [!code focus]\n * payload: '0xdeadbeef', // [!code focus]\n * signature, // [!code focus]\n * }) // [!code focus]\n * ```\n *\n * @param options - The recovery options.\n * @returns The recovered address.\n */\nexport function recoverAddress(options) {\n return Address.fromPublicKey(recoverPublicKey(options));\n}\n/**\n * Recovers the signing public key from the signed payload and signature.\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const signature = Secp256k1.sign({ payload: '0xdeadbeef', privateKey: '0x...' })\n *\n * const publicKey = Secp256k1.recoverPublicKey({ // [!code focus]\n * payload: '0xdeadbeef', // [!code focus]\n * signature, // [!code focus]\n * }) // [!code focus]\n * ```\n *\n * @param options - The recovery options.\n * @returns The recovered public key.\n */\nexport function recoverPublicKey(options) {\n const { payload, signature } = options;\n const { r, s, yParity } = signature;\n const signature_ = new secp256k1.Signature(BigInt(r), BigInt(s)).addRecoveryBit(yParity);\n const point = signature_.recoverPublicKey(Hex.from(payload).substring(2));\n return PublicKey.from(point);\n}\n/**\n * Signs the payload with the provided private key.\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const signature = Secp256k1.sign({ // [!code focus]\n * payload: '0xdeadbeef', // [!code focus]\n * privateKey: '0x...' // [!code focus]\n * }) // [!code focus]\n * ```\n *\n * @param options - The signing options.\n * @returns The ECDSA {@link ox#Signature.Signature}.\n */\nexport function sign(options) {\n const { extraEntropy = Entropy.extraEntropy, hash, payload, privateKey, } = options;\n const { r, s, recovery } = secp256k1.sign(Bytes.from(payload), Bytes.from(privateKey), {\n extraEntropy: typeof extraEntropy === 'boolean'\n ? extraEntropy\n : Hex.from(extraEntropy).slice(2),\n lowS: true,\n ...(hash ? { prehash: true } : {}),\n });\n return {\n r,\n s,\n yParity: recovery,\n };\n}\n/**\n * Verifies a payload was signed by the provided address.\n *\n * @example\n * ### Verify with Ethereum Address\n *\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const signature = Secp256k1.sign({ payload: '0xdeadbeef', privateKey: '0x...' })\n *\n * const verified = Secp256k1.verify({ // [!code focus]\n * address: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', // [!code focus]\n * payload: '0xdeadbeef', // [!code focus]\n * signature, // [!code focus]\n * }) // [!code focus]\n * ```\n *\n * @example\n * ### Verify with Public Key\n *\n * ```ts twoslash\n * import { Secp256k1 } from 'ox'\n *\n * const privateKey = '0x...'\n * const publicKey = Secp256k1.getPublicKey({ privateKey })\n * const signature = Secp256k1.sign({ payload: '0xdeadbeef', privateKey })\n *\n * const verified = Secp256k1.verify({ // [!code focus]\n * publicKey, // [!code focus]\n * payload: '0xdeadbeef', // [!code focus]\n * signature, // [!code focus]\n * }) // [!code focus]\n * ```\n *\n * @param options - The verification options.\n * @returns Whether the payload was signed by the provided address.\n */\nexport function verify(options) {\n const { address, hash, payload, publicKey, signature } = options;\n if (address)\n return Address.isEqual(address, recoverAddress({ payload, signature }));\n return secp256k1.verify(signature, Bytes.from(payload), PublicKey.toBytes(publicKey), ...(hash ? [{ prehash: true, lowS: true }] : []));\n}\n//# sourceMappingURL=Secp256k1.js.map","import * as AbiParameters from '../core/AbiParameters.js';\nimport * as Authorization from '../core/Authorization.js';\nimport * as Errors from '../core/Errors.js';\nimport * as Hex from '../core/Hex.js';\nimport * as Secp256k1 from '../core/Secp256k1.js';\nimport * as Signature from '../core/Signature.js';\n/**\n * Magic bytes used to identify ERC-8010 wrapped signatures.\n */\nexport const magicBytes = '0x8010801080108010801080108010801080108010801080108010801080108010';\n/** Suffix ABI parameters for the ERC-8010 wrapped signature. */\nexport const suffixParameters = AbiParameters.from('(uint256 chainId, address delegation, uint256 nonce, uint8 yParity, uint256 r, uint256 s), address to, bytes data');\n/**\n * Asserts that the wrapped signature is valid.\n *\n * @example\n * ```ts twoslash\n * import { SignatureErc8010 } from 'ox/erc8010'\n *\n * SignatureErc8010.assert('0xdeadbeef')\n * // @error: InvalidWrappedSignatureError: Value `0xdeadbeef` is an invalid ERC-8010 wrapped signature.\n * ```\n *\n * @param value - The value to assert.\n */\nexport function assert(value) {\n if (typeof value === 'string') {\n if (Hex.slice(value, -32) !== magicBytes)\n throw new InvalidWrappedSignatureError(value);\n }\n else\n Signature.assert(value.authorization);\n}\n/**\n * Parses an [ERC-8010 wrapped signature](https://github.com/jxom/ERCs/blob/16f7e3891fff2e1e9c25dea0485497739db8a816/ERCS/erc-8010.md) into its constituent parts.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Secp256k1 } from 'ox'\n * import { SignatureErc8010 } from 'ox/erc8010' // [!code focus]\n *\n * const signature = Secp256k1.sign({\n * payload: '0x...',\n * privateKey: '0x...',\n * })\n *\n * // Instantiate from serialized format. // [!code focus]\n * const wrapped = SignatureErc8010.from('0x...') // [!code focus]\n * // @log: { authorization: { ... }, data: '0x...', signature: { ... } } // [!code focus]\n *\n * // Instantiate from constituent parts. // [!code focus]\n * const wrapped = SignatureErc8010.from({ // [!code focus]\n * authorization: { ... }, // [!code focus]\n * data: '0x...', // [!code focus]\n * signature, // [!code focus]\n * })\n * // @log: { authorization: { ... }, data: '0x...', signature: { ... } }\n * ```\n *\n * @param value - Value to parse.\n * @returns Parsed value.\n */\nexport function from(value) {\n if (typeof value === 'string')\n return unwrap(value);\n return value;\n}\n/**\n * Unwraps an [ERC-8010 wrapped signature](https://github.com/jxom/ERCs/blob/16f7e3891fff2e1e9c25dea0485497739db8a816/ERCS/erc-8010.md) into its constituent parts.\n *\n * @example\n * ```ts twoslash\n * import { SignatureErc8010 } from 'ox/erc8010'\n *\n * const { authorization, data, signature } = SignatureErc8010.unwrap('0x...')\n * ```\n *\n * @param wrapped - Wrapped signature to unwrap.\n * @returns Unwrapped signature.\n */\nexport function unwrap(wrapped) {\n assert(wrapped);\n const suffixLength = Hex.toNumber(Hex.slice(wrapped, -64, -32));\n const suffix = Hex.slice(wrapped, -suffixLength - 64, -64);\n const signature = Hex.slice(wrapped, 0, -suffixLength - 64);\n const [auth, to, data] = AbiParameters.decode(suffixParameters, suffix);\n const authorization = Authorization.from({\n address: auth.delegation,\n chainId: Number(auth.chainId),\n nonce: auth.nonce,\n yParity: auth.yParity,\n r: auth.r,\n s: auth.s,\n });\n return {\n authorization,\n signature,\n ...(data && data !== '0x' ? { data, to } : {}),\n };\n}\n/**\n * Wraps a signature into [ERC-8010 format](https://github.com/jxom/ERCs/blob/16f7e3891fff2e1e9c25dea0485497739db8a816/ERCS/erc-8010.md).\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Secp256k1, Signature } from 'ox'\n * import { SignatureErc8010 } from 'ox/erc8010' // [!code focus]\n *\n * const signature = Secp256k1.sign({\n * payload: '0x...',\n * privateKey: '0x...',\n * })\n *\n * const wrapped = SignatureErc8010.wrap({ // [!code focus]\n * authorization: { ... }, // [!code focus]\n * data: '0xdeadbeef', // [!code focus]\n * signature: Signature.toHex(signature), // [!code focus]\n * }) // [!code focus]\n * ```\n *\n * @param value - Values to wrap.\n * @returns Wrapped signature.\n */\nexport function wrap(value) {\n const { data, signature } = value;\n assert(value);\n const self = Secp256k1.recoverAddress({\n payload: Authorization.getSignPayload(value.authorization),\n signature: Signature.from(value.authorization),\n });\n const suffix = AbiParameters.encode(suffixParameters, [\n {\n ...value.authorization,\n delegation: value.authorization.address,\n chainId: BigInt(value.authorization.chainId),\n },\n value.to ?? self,\n data ?? '0x',\n ]);\n const suffixLength = Hex.fromNumber(Hex.size(suffix), { size: 32 });\n return Hex.concat(signature, suffix, suffixLength, magicBytes);\n}\n/**\n * Validates a wrapped signature. Returns `true` if the wrapped signature is valid, `false` otherwise.\n *\n * @example\n * ```ts twoslash\n * import { SignatureErc8010 } from 'ox/erc8010'\n *\n * const valid = SignatureErc8010.validate('0xdeadbeef')\n * // @log: false\n * ```\n *\n * @param value - The value to validate.\n * @returns `true` if the value is valid, `false` otherwise.\n */\nexport function validate(value) {\n try {\n assert(value);\n return true;\n }\n catch {\n return false;\n }\n}\n/** Thrown when the ERC-8010 wrapped signature is invalid. */\nexport class InvalidWrappedSignatureError extends Errors.BaseError {\n constructor(wrapped) {\n super(`Value \\`${wrapped}\\` is an invalid ERC-8010 wrapped signature.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'SignatureErc8010.InvalidWrappedSignatureError'\n });\n }\n}\n//# sourceMappingURL=SignatureErc8010.js.map","import { erc6492MagicBytes } from '../../constants/bytes.js';\nimport { encodeAbiParameters } from '../abi/encodeAbiParameters.js';\nimport { concatHex } from '../data/concat.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\n/**\n * @description Serializes a ERC-6492 flavoured signature into hex format.\n *\n * @param signature ERC-6492 signature in object format.\n * @returns ERC-6492 signature in hex format.\n *\n * @example\n * serializeSignature({ address: '0x...', data: '0x...', signature: '0x...' })\n * // '0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b000000000000000000000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492'\n */\nexport function serializeErc6492Signature(parameters) {\n const { address, data, signature, to = 'hex' } = parameters;\n const signature_ = concatHex([\n encodeAbiParameters([{ type: 'address' }, { type: 'bytes' }, { type: 'bytes' }], [address, data, signature]),\n erc6492MagicBytes,\n ]);\n if (to === 'hex')\n return signature_;\n return hexToBytes(signature_);\n}\n//# sourceMappingURL=serializeErc6492Signature.js.map","import { hexToNumber } from '../index.js';\nfunction formatStorageProof(storageProof) {\n return storageProof.map((proof) => ({\n ...proof,\n value: BigInt(proof.value),\n }));\n}\nexport function formatProof(proof) {\n return {\n ...proof,\n balance: proof.balance ? BigInt(proof.balance) : undefined,\n nonce: proof.nonce ? hexToNumber(proof.nonce) : undefined,\n storageProof: proof.storageProof\n ? formatStorageProof(proof.storageProof)\n : undefined,\n };\n}\n//# sourceMappingURL=proof.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { formatProof, } from '../../utils/formatters/proof.js';\n/**\n * Returns the account and storage values of the specified account including the Merkle-proof.\n *\n * - Docs: https://viem.sh/docs/actions/public/getProof\n * - JSON-RPC Methods:\n * - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186)\n *\n * @param client - Client to use\n * @param parameters - {@link GetProofParameters}\n * @returns Proof data. {@link GetProofReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getProof } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const block = await getProof(client, {\n * address: '0x...',\n * storageKeys: ['0x...'],\n * })\n */\nexport async function getProof(client, { address, blockNumber, blockTag: blockTag_, storageKeys, }) {\n const blockTag = blockTag_ ?? 'latest';\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const proof = await client.request({\n method: 'eth_getProof',\n params: [address, storageKeys, blockNumberHex || blockTag],\n });\n return formatProof(proof);\n}\n//# sourceMappingURL=getProof.js.map","import { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * Returns the value from a storage slot at a given address.\n *\n * - Docs: https://viem.sh/docs/contract/getStorageAt\n * - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat)\n *\n * @param client - Client to use\n * @param parameters - {@link GetStorageAtParameters}\n * @returns The value of the storage slot. {@link GetStorageAtReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getStorageAt } from 'viem/contract'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const code = await getStorageAt(client, {\n * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',\n * slot: toHex(0),\n * })\n */\nexport async function getStorageAt(client, { address, blockNumber, blockTag = 'latest', slot }) {\n const blockNumberHex = blockNumber !== undefined ? numberToHex(blockNumber) : undefined;\n const data = await client.request({\n method: 'eth_getStorageAt',\n params: [address, slot, blockNumberHex || blockTag],\n });\n return data;\n}\n//# sourceMappingURL=getStorageAt.js.map","import { getAction } from '../../utils/getAction.js';\nimport { getBlockNumber, } from './getBlockNumber.js';\nimport { getTransaction, } from './getTransaction.js';\n/**\n * Returns the number of blocks passed (confirmations) since the transaction was processed on a block.\n *\n * - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations\n * - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions_fetching-transactions\n * - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations)\n *\n * @param client - Client to use\n * @param parameters - {@link GetTransactionConfirmationsParameters}\n * @returns The number of blocks passed since the transaction was processed. If confirmations is 0, then the Transaction has not been confirmed & processed yet. {@link GetTransactionConfirmationsReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { getTransactionConfirmations } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const confirmations = await getTransactionConfirmations(client, {\n * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',\n * })\n */\nexport async function getTransactionConfirmations(client, { hash, transactionReceipt }) {\n const [blockNumber, transaction] = await Promise.all([\n getAction(client, getBlockNumber, 'getBlockNumber')({}),\n hash\n ? getAction(client, getTransaction, 'getTransaction')({ hash })\n : undefined,\n ]);\n const transactionBlockNumber = transactionReceipt?.blockNumber || transaction?.blockNumber;\n if (!transactionBlockNumber)\n return 0n;\n return blockNumber - transactionBlockNumber + 1n;\n}\n//# sourceMappingURL=getTransactionConfirmations.js.map","import * as BlockOverrides from 'ox/BlockOverrides';\nimport { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AbiDecodingZeroDataError } from '../../errors/abi.js';\nimport { RawContractError } from '../../errors/contract.js';\nimport { UnknownNodeError } from '../../errors/node.js';\nimport { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { concat } from '../../utils/data/concat.js';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\nimport { getContractError } from '../../utils/errors/getContractError.js';\nimport { getNodeError, } from '../../utils/errors/getNodeError.js';\nimport { formatBlock, } from '../../utils/formatters/block.js';\nimport { formatLog } from '../../utils/formatters/log.js';\nimport { formatTransactionRequest, } from '../../utils/formatters/transactionRequest.js';\nimport { serializeStateOverride, } from '../../utils/stateOverride.js';\nimport { assertRequest, } from '../../utils/transaction/assertRequest.js';\n/**\n * Simulates a set of calls on block(s) with optional block and state overrides.\n *\n * @example\n * ```ts\n * import { createClient, http, parseEther } from 'viem'\n * import { simulate } from 'viem/actions'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const result = await simulate(client, {\n * blocks: [{\n * blockOverrides: {\n * number: 69420n,\n * },\n * calls: [{\n * {\n * account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',\n * data: '0xdeadbeef',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * },\n * {\n * account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: parseEther('1'),\n * },\n * }],\n * stateOverrides: [{\n * address: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',\n * balance: parseEther('10'),\n * }],\n * }]\n * })\n * ```\n *\n * @param client - Client to use.\n * @param parameters - {@link SimulateBlocksParameters}\n * @returns Simulated blocks. {@link SimulateBlocksReturnType}\n */\nexport async function simulateBlocks(client, parameters) {\n const { blockNumber, blockTag = client.experimental_blockTag ?? 'latest', blocks, returnFullTransactions, traceTransfers, validation, } = parameters;\n try {\n const blockStateCalls = [];\n for (const block of blocks) {\n const blockOverrides = block.blockOverrides\n ? BlockOverrides.toRpc(block.blockOverrides)\n : undefined;\n const calls = block.calls.map((call_) => {\n const call = call_;\n const account = call.account ? parseAccount(call.account) : undefined;\n const data = call.abi ? encodeFunctionData(call) : call.data;\n const request = {\n ...call,\n data: call.dataSuffix\n ? concat([data || '0x', call.dataSuffix])\n : data,\n from: call.from ?? account?.address,\n };\n assertRequest(request);\n return formatTransactionRequest(request);\n });\n const stateOverrides = block.stateOverrides\n ? serializeStateOverride(block.stateOverrides)\n : undefined;\n blockStateCalls.push({\n blockOverrides,\n calls,\n stateOverrides,\n });\n }\n const blockNumberHex = typeof blockNumber === 'bigint' ? numberToHex(blockNumber) : undefined;\n const block = blockNumberHex || blockTag;\n const result = await client.request({\n method: 'eth_simulateV1',\n params: [\n { blockStateCalls, returnFullTransactions, traceTransfers, validation },\n block,\n ],\n });\n return result.map((block, i) => ({\n ...formatBlock(block),\n calls: block.calls.map((call, j) => {\n const { abi, args, functionName, to } = blocks[i].calls[j];\n const data = call.error?.data ?? call.returnData;\n const gasUsed = BigInt(call.gasUsed);\n const logs = call.logs?.map((log) => formatLog(log));\n const status = call.status === '0x1' ? 'success' : 'failure';\n const result = abi && status === 'success' && data !== '0x'\n ? decodeFunctionResult({\n abi,\n data,\n functionName,\n })\n : null;\n const error = (() => {\n if (status === 'success')\n return undefined;\n let error;\n if (call.error?.data === '0x')\n error = new AbiDecodingZeroDataError();\n else if (call.error)\n error = new RawContractError(call.error);\n if (!error)\n return undefined;\n return getContractError(error, {\n abi: (abi ?? []),\n address: to ?? '0x',\n args,\n functionName: functionName ?? '<unknown>',\n });\n })();\n return {\n data,\n gasUsed,\n logs,\n status,\n ...(status === 'success'\n ? {\n result,\n }\n : {\n error,\n }),\n };\n }),\n }));\n }\n catch (e) {\n const cause = e;\n const error = getNodeError(cause, {});\n if (error instanceof UnknownNodeError)\n throw cause;\n throw error;\n }\n}\n//# sourceMappingURL=simulateBlocks.js.map","import * as Address from '../Address.js';\nimport * as Errors from '../Errors.js';\n/** @internal */\nexport function normalizeSignature(signature) {\n let active = true;\n let current = '';\n let level = 0;\n let result = '';\n let valid = false;\n for (let i = 0; i < signature.length; i++) {\n const char = signature[i];\n // If the character is a separator, we want to reactivate.\n if (['(', ')', ','].includes(char))\n active = true;\n // If the character is a \"level\" token, we want to increment/decrement.\n if (char === '(')\n level++;\n if (char === ')')\n level--;\n // If we aren't active, we don't want to mutate the result.\n if (!active)\n continue;\n // If level === 0, we are at the definition level.\n if (level === 0) {\n if (char === ' ' && ['event', 'function', 'error', ''].includes(result))\n result = '';\n else {\n result += char;\n // If we are at the end of the definition, we must be finished.\n if (char === ')') {\n valid = true;\n break;\n }\n }\n continue;\n }\n // Ignore spaces\n if (char === ' ') {\n // If the previous character is a separator, and the current section isn't empty, we want to deactivate.\n if (signature[i - 1] !== ',' && current !== ',' && current !== ',(') {\n current = '';\n active = false;\n }\n continue;\n }\n result += char;\n current += char;\n }\n if (!valid)\n throw new Errors.BaseError('Unable to normalize signature.');\n return result;\n}\n/** @internal */\nexport function isArgOfType(arg, abiParameter) {\n const argType = typeof arg;\n const abiParameterType = abiParameter.type;\n switch (abiParameterType) {\n case 'address':\n return Address.validate(arg, { strict: false });\n case 'bool':\n return argType === 'boolean';\n case 'function':\n return argType === 'string';\n case 'string':\n return argType === 'string';\n default: {\n if (abiParameterType === 'tuple' && 'components' in abiParameter)\n return Object.values(abiParameter.components).every((component, index) => {\n return isArgOfType(Object.values(arg)[index], component);\n });\n // `(u)int<M>`: (un)signed integer type of `M` bits, `0 < M <= 256`, `M % 8 == 0`\n // https://regexr.com/6v8hp\n if (/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(abiParameterType))\n return argType === 'number' || argType === 'bigint';\n // `bytes<M>`: binary type of `M` bytes, `0 < M <= 32`\n // https://regexr.com/6va55\n if (/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(abiParameterType))\n return argType === 'string' || arg instanceof Uint8Array;\n // fixed-length (`<type>[M]`) and dynamic (`<type>[]`) arrays\n // https://regexr.com/6va6i\n if (/[a-z]+[1-9]{0,3}(\\[[0-9]{0,}\\])+$/.test(abiParameterType)) {\n return (Array.isArray(arg) &&\n arg.every((x) => isArgOfType(x, {\n ...abiParameter,\n // Pop off `[]` or `[M]` from end of type\n type: abiParameterType.replace(/(\\[[0-9]{0,}\\])$/, ''),\n })));\n }\n return false;\n }\n }\n}\n/** @internal */\nexport function getAmbiguousTypes(sourceParameters, targetParameters, args) {\n for (const parameterIndex in sourceParameters) {\n const sourceParameter = sourceParameters[parameterIndex];\n const targetParameter = targetParameters[parameterIndex];\n if (sourceParameter.type === 'tuple' &&\n targetParameter.type === 'tuple' &&\n 'components' in sourceParameter &&\n 'components' in targetParameter)\n return getAmbiguousTypes(sourceParameter.components, targetParameter.components, args[parameterIndex]);\n const types = [sourceParameter.type, targetParameter.type];\n const ambiguous = (() => {\n if (types.includes('address') && types.includes('bytes20'))\n return true;\n if (types.includes('address') && types.includes('string'))\n return Address.validate(args[parameterIndex], {\n strict: false,\n });\n if (types.includes('address') && types.includes('bytes'))\n return Address.validate(args[parameterIndex], {\n strict: false,\n });\n return false;\n })();\n if (ambiguous)\n return types;\n }\n return;\n}\n//# sourceMappingURL=abiItem.js.map","import * as abitype from 'abitype';\nimport * as Errors from './Errors.js';\nimport * as Hash from './Hash.js';\nimport * as Hex from './Hex.js';\nimport * as internal from './internal/abiItem.js';\n/**\n * Formats an {@link ox#AbiItem.AbiItem} into a **Human Readable ABI Item**.\n *\n * @example\n * ```ts twoslash\n * import { AbiItem } from 'ox'\n *\n * const formatted = AbiItem.format({\n * type: 'function',\n * name: 'approve',\n * stateMutability: 'nonpayable',\n * inputs: [\n * {\n * name: 'spender',\n * type: 'address',\n * },\n * {\n * name: 'amount',\n * type: 'uint256',\n * },\n * ],\n * outputs: [{ type: 'bool' }],\n * })\n *\n * formatted\n * // ^?\n *\n *\n * ```\n *\n * @param abiItem - The ABI Item to format.\n * @returns The formatted ABI Item .\n */\nexport function format(abiItem) {\n return abitype.formatAbiItem(abiItem);\n}\n/**\n * Parses an arbitrary **JSON ABI Item** or **Human Readable ABI Item** into a typed {@link ox#AbiItem.AbiItem}.\n *\n * @example\n * ### JSON ABIs\n *\n * ```ts twoslash\n * import { AbiItem } from 'ox'\n *\n * const abiItem = AbiItem.from({\n * type: 'function',\n * name: 'approve',\n * stateMutability: 'nonpayable',\n * inputs: [\n * {\n * name: 'spender',\n * type: 'address',\n * },\n * {\n * name: 'amount',\n * type: 'uint256',\n * },\n * ],\n * outputs: [{ type: 'bool' }],\n * })\n *\n * abiItem\n * //^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * ### Human Readable ABIs\n *\n * A Human Readable ABI can be parsed into a typed ABI object:\n *\n * ```ts twoslash\n * import { AbiItem } from 'ox'\n *\n * const abiItem = AbiItem.from(\n * 'function approve(address spender, uint256 amount) returns (bool)' // [!code hl]\n * )\n *\n * abiItem\n * //^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * It is possible to specify `struct`s along with your definitions:\n *\n * ```ts twoslash\n * import { AbiItem } from 'ox'\n *\n * const abiItem = AbiItem.from([\n * 'struct Foo { address spender; uint256 amount; }', // [!code hl]\n * 'function approve(Foo foo) returns (bool)',\n * ])\n *\n * abiItem\n * //^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n *\n *\n * @param abiItem - The ABI Item to parse.\n * @returns The typed ABI Item.\n */\nexport function from(abiItem, options = {}) {\n const { prepare = true } = options;\n const item = (() => {\n if (Array.isArray(abiItem))\n return abitype.parseAbiItem(abiItem);\n if (typeof abiItem === 'string')\n return abitype.parseAbiItem(abiItem);\n return abiItem;\n })();\n return {\n ...item,\n ...(prepare ? { hash: getSignatureHash(item) } : {}),\n };\n}\n/**\n * Extracts an {@link ox#AbiItem.AbiItem} from an {@link ox#Abi.Abi} given a name and optional arguments.\n *\n * @example\n * ABI Items can be extracted by their name using the `name` option:\n *\n * ```ts twoslash\n * import { Abi, AbiItem } from 'ox'\n *\n * const abi = Abi.from([\n * 'function foo()',\n * 'event Transfer(address owner, address to, uint256 tokenId)',\n * 'function bar(string a) returns (uint256 x)',\n * ])\n *\n * const item = AbiItem.fromAbi(abi, 'Transfer') // [!code focus]\n * // ^?\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * ### Extracting by Selector\n *\n * ABI Items can be extract by their selector when {@link ox#Hex.Hex} is provided to `name`.\n *\n * ```ts twoslash\n * import { Abi, AbiItem } from 'ox'\n *\n * const abi = Abi.from([\n * 'function foo()',\n * 'event Transfer(address owner, address to, uint256 tokenId)',\n * 'function bar(string a) returns (uint256 x)',\n * ])\n * const item = AbiItem.fromAbi(abi, '0x095ea7b3') // [!code focus]\n * // ^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * :::note\n *\n * Extracting via a hex selector is useful when extracting an ABI Item from an `eth_call` RPC response,\n * a Transaction `input`, or from Event Log `topics`.\n *\n * :::\n *\n * @param abi - The ABI to extract from.\n * @param name - The name (or selector) of the ABI item to extract.\n * @param options - Extraction options.\n * @returns The ABI item.\n */\nexport function fromAbi(abi, name, options) {\n const { args = [], prepare = true } = (options ??\n {});\n const isSelector = Hex.validate(name, { strict: false });\n const abiItems = abi.filter((abiItem) => {\n if (isSelector) {\n if (abiItem.type === 'function' || abiItem.type === 'error')\n return getSelector(abiItem) === Hex.slice(name, 0, 4);\n if (abiItem.type === 'event')\n return getSignatureHash(abiItem) === name;\n return false;\n }\n return 'name' in abiItem && abiItem.name === name;\n });\n if (abiItems.length === 0)\n throw new NotFoundError({ name: name });\n if (abiItems.length === 1)\n return {\n ...abiItems[0],\n ...(prepare ? { hash: getSignatureHash(abiItems[0]) } : {}),\n };\n let matchedAbiItem;\n for (const abiItem of abiItems) {\n if (!('inputs' in abiItem))\n continue;\n if (!args || args.length === 0) {\n if (!abiItem.inputs || abiItem.inputs.length === 0)\n return {\n ...abiItem,\n ...(prepare ? { hash: getSignatureHash(abiItem) } : {}),\n };\n continue;\n }\n if (!abiItem.inputs)\n continue;\n if (abiItem.inputs.length === 0)\n continue;\n if (abiItem.inputs.length !== args.length)\n continue;\n const matched = args.every((arg, index) => {\n const abiParameter = 'inputs' in abiItem && abiItem.inputs[index];\n if (!abiParameter)\n return false;\n return internal.isArgOfType(arg, abiParameter);\n });\n if (matched) {\n // Check for ambiguity against already matched parameters (e.g. `address` vs `bytes20`).\n if (matchedAbiItem &&\n 'inputs' in matchedAbiItem &&\n matchedAbiItem.inputs) {\n const ambiguousTypes = internal.getAmbiguousTypes(abiItem.inputs, matchedAbiItem.inputs, args);\n if (ambiguousTypes)\n throw new AmbiguityError({\n abiItem,\n type: ambiguousTypes[0],\n }, {\n abiItem: matchedAbiItem,\n type: ambiguousTypes[1],\n });\n }\n matchedAbiItem = abiItem;\n }\n }\n const abiItem = (() => {\n if (matchedAbiItem)\n return matchedAbiItem;\n const [abiItem, ...overloads] = abiItems;\n return { ...abiItem, overloads };\n })();\n if (!abiItem)\n throw new NotFoundError({ name: name });\n return {\n ...abiItem,\n ...(prepare ? { hash: getSignatureHash(abiItem) } : {}),\n };\n}\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function getSelector(...parameters) {\n const abiItem = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, name] = parameters;\n return fromAbi(abi, name);\n }\n return parameters[0];\n })();\n return Hex.slice(getSignatureHash(abiItem), 0, 4);\n}\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function getSignature(...parameters) {\n const abiItem = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, name] = parameters;\n return fromAbi(abi, name);\n }\n return parameters[0];\n })();\n const signature = (() => {\n if (typeof abiItem === 'string')\n return abiItem;\n return abitype.formatAbiItem(abiItem);\n })();\n return internal.normalizeSignature(signature);\n}\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function getSignatureHash(...parameters) {\n const abiItem = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, name] = parameters;\n return fromAbi(abi, name);\n }\n return parameters[0];\n })();\n if (typeof abiItem !== 'string' && 'hash' in abiItem && abiItem.hash)\n return abiItem.hash;\n return Hash.keccak256(Hex.fromString(getSignature(abiItem)));\n}\n/**\n * Throws when ambiguous types are found on overloaded ABI items.\n *\n * @example\n * ```ts twoslash\n * import { Abi, AbiFunction } from 'ox'\n *\n * const foo = Abi.from(['function foo(address)', 'function foo(bytes20)'])\n * AbiFunction.fromAbi(foo, 'foo', {\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // @error: AbiItem.AmbiguityError: Found ambiguous types in overloaded ABI Items.\n * // @error: `bytes20` in `foo(bytes20)`, and\n * // @error: `address` in `foo(address)`\n * // @error: These types encode differently and cannot be distinguished at runtime.\n * // @error: Remove one of the ambiguous items in the ABI.\n * ```\n *\n * ### Solution\n *\n * Remove one of the ambiguous types from the ABI.\n *\n * ```ts twoslash\n * import { Abi, AbiFunction } from 'ox'\n *\n * const foo = Abi.from([\n * 'function foo(address)',\n * 'function foo(bytes20)' // [!code --]\n * ])\n * AbiFunction.fromAbi(foo, 'foo', {\n * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],\n * })\n * // @error: AbiItem.AmbiguityError: Found ambiguous types in overloaded ABI Items.\n * // @error: `bytes20` in `foo(bytes20)`, and\n * // @error: `address` in `foo(address)`\n * // @error: These types encode differently and cannot be distinguished at runtime.\n * // @error: Remove one of the ambiguous items in the ABI.\n * ```\n */\nexport class AmbiguityError extends Errors.BaseError {\n constructor(x, y) {\n super('Found ambiguous types in overloaded ABI Items.', {\n metaMessages: [\n // TODO: abitype to add support for signature-formatted ABI items.\n `\\`${x.type}\\` in \\`${internal.normalizeSignature(abitype.formatAbiItem(x.abiItem))}\\`, and`,\n `\\`${y.type}\\` in \\`${internal.normalizeSignature(abitype.formatAbiItem(y.abiItem))}\\``,\n '',\n 'These types encode differently and cannot be distinguished at runtime.',\n 'Remove one of the ambiguous items in the ABI.',\n ],\n });\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiItem.AmbiguityError'\n });\n }\n}\n/**\n * Throws when an ABI item is not found in the ABI.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Abi, AbiFunction } from 'ox'\n *\n * const foo = Abi.from([\n * 'function foo(address)',\n * 'function bar(uint)'\n * ])\n * AbiFunction.fromAbi(foo, 'baz')\n * // @error: AbiItem.NotFoundError: ABI function with name \"baz\" not found.\n * ```\n *\n * ### Solution\n *\n * Ensure the ABI item exists on the ABI.\n *\n * ```ts twoslash\n * // @noErrors\n * import { Abi, AbiFunction } from 'ox'\n *\n * const foo = Abi.from([\n * 'function foo(address)',\n * 'function bar(uint)',\n * 'function baz(bool)' // [!code ++]\n * ])\n * AbiFunction.fromAbi(foo, 'baz')\n * ```\n */\nexport class NotFoundError extends Errors.BaseError {\n constructor({ name, data, type = 'item', }) {\n const selector = (() => {\n if (name)\n return ` with name \"${name}\"`;\n if (data)\n return ` with data \"${data}\"`;\n return '';\n })();\n super(`ABI ${type}${selector} not found.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiItem.NotFoundError'\n });\n }\n}\n/**\n * Throws when the selector size is invalid.\n *\n * @example\n * ```ts twoslash\n * import { Abi, AbiFunction } from 'ox'\n *\n * const foo = Abi.from([\n * 'function foo(address)',\n * 'function bar(uint)'\n * ])\n * AbiFunction.fromAbi(foo, '0xaaa')\n * // @error: AbiItem.InvalidSelectorSizeError: Selector size is invalid. Expected 4 bytes. Received 2 bytes (\"0xaaa\").\n * ```\n *\n * ### Solution\n *\n * Ensure the selector size is 4 bytes.\n *\n * ```ts twoslash\n * // @noErrors\n * import { Abi, AbiFunction } from 'ox'\n *\n * const foo = Abi.from([\n * 'function foo(address)',\n * 'function bar(uint)'\n * ])\n * AbiFunction.fromAbi(foo, '0x7af82b1a')\n * ```\n */\nexport class InvalidSelectorSizeError extends Errors.BaseError {\n constructor({ data }) {\n super(`Selector size is invalid. Expected 4 bytes. Received ${Hex.size(data)} bytes (\"${data}\").`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'AbiItem.InvalidSelectorSizeError'\n });\n }\n}\n//# sourceMappingURL=AbiItem.js.map","import * as abitype from 'abitype';\nimport * as AbiItem from './AbiItem.js';\nimport * as AbiParameters from './AbiParameters.js';\nimport * as Hex from './Hex.js';\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function decode(...parameters) {\n const [abiConstructor, options] = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, options] = parameters;\n return [fromAbi(abi), options];\n }\n return parameters;\n })();\n const { bytecode } = options;\n if (abiConstructor.inputs.length === 0)\n return undefined;\n const data = options.data.replace(bytecode, '0x');\n return AbiParameters.decode(abiConstructor.inputs, data);\n}\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function encode(...parameters) {\n const [abiConstructor, options] = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, options] = parameters;\n return [fromAbi(abi), options];\n }\n return parameters;\n })();\n const { bytecode, args } = options;\n return Hex.concat(bytecode, abiConstructor.inputs?.length && args?.length\n ? AbiParameters.encode(abiConstructor.inputs, args)\n : '0x');\n}\n/** @internal */\nexport function format(abiConstructor) {\n return abitype.formatAbiItem(abiConstructor);\n}\n/** @internal */\nexport function from(abiConstructor) {\n return AbiItem.from(abiConstructor);\n}\n/** @internal */\nexport function fromAbi(abi) {\n const item = abi.find((item) => item.type === 'constructor');\n if (!item)\n throw new AbiItem.NotFoundError({ name: 'constructor' });\n return item;\n}\n//# sourceMappingURL=AbiConstructor.js.map","import * as abitype from 'abitype';\nimport * as AbiItem from './AbiItem.js';\nimport * as AbiParameters from './AbiParameters.js';\nimport * as Hex from './Hex.js';\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function decodeData(...parameters) {\n const [abiFunction, data] = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, name, data] = parameters;\n return [fromAbi(abi, name), data];\n }\n return parameters;\n })();\n const { overloads } = abiFunction;\n if (Hex.size(data) < 4)\n throw new AbiItem.InvalidSelectorSizeError({ data });\n if (abiFunction.inputs.length === 0)\n return undefined;\n const item = overloads\n ? fromAbi([abiFunction, ...overloads], data)\n : abiFunction;\n if (Hex.size(data) <= 4)\n return undefined;\n return AbiParameters.decode(item.inputs, Hex.slice(data, 4));\n}\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function decodeResult(...parameters) {\n const [abiFunction, data, options = {}] = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, name, data, options] = parameters;\n return [fromAbi(abi, name), data, options];\n }\n return parameters;\n })();\n const values = AbiParameters.decode(abiFunction.outputs, data, options);\n if (values && Object.keys(values).length === 0)\n return undefined;\n if (values && Object.keys(values).length === 1) {\n if (Array.isArray(values))\n return values[0];\n return Object.values(values)[0];\n }\n return values;\n}\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function encodeData(...parameters) {\n const [abiFunction, args = []] = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, name, args] = parameters;\n return [fromAbi(abi, name, { args }), args];\n }\n const [abiFunction, args] = parameters;\n return [abiFunction, args];\n })();\n const { overloads } = abiFunction;\n const item = overloads\n ? fromAbi([abiFunction, ...overloads], abiFunction.name, {\n args,\n })\n : abiFunction;\n const selector = getSelector(item);\n const data = args.length > 0 ? AbiParameters.encode(item.inputs, args) : undefined;\n return data ? Hex.concat(selector, data) : selector;\n}\n// eslint-disable-next-line jsdoc/require-jsdoc\nexport function encodeResult(...parameters) {\n const [abiFunction, output, options = {}] = (() => {\n if (Array.isArray(parameters[0])) {\n const [abi, name, output, options] = parameters;\n return [fromAbi(abi, name), output, options];\n }\n return parameters;\n })();\n const { as = 'Array' } = options;\n const values = (() => {\n if (abiFunction.outputs.length === 1)\n return [output];\n if (Array.isArray(output))\n return output;\n if (as === 'Object')\n return Object.values(output);\n return [output];\n })();\n return AbiParameters.encode(abiFunction.outputs, values);\n}\n/**\n * Formats an {@link ox#AbiFunction.AbiFunction} into a **Human Readable ABI Function**.\n *\n * @example\n * ```ts twoslash\n * import { AbiFunction } from 'ox'\n *\n * const formatted = AbiFunction.format({\n * type: 'function',\n * name: 'approve',\n * stateMutability: 'nonpayable',\n * inputs: [\n * {\n * name: 'spender',\n * type: 'address',\n * },\n * {\n * name: 'amount',\n * type: 'uint256',\n * },\n * ],\n * outputs: [{ type: 'bool' }],\n * })\n *\n * formatted\n * // ^?\n *\n *\n * ```\n *\n * @param abiFunction - The ABI Function to format.\n * @returns The formatted ABI Function.\n */\nexport function format(abiFunction) {\n return abitype.formatAbiItem(abiFunction);\n}\n/**\n * Parses an arbitrary **JSON ABI Function** or **Human Readable ABI Function** into a typed {@link ox#AbiFunction.AbiFunction}.\n *\n * @example\n * ### JSON ABIs\n *\n * ```ts twoslash\n * import { AbiFunction } from 'ox'\n *\n * const approve = AbiFunction.from({\n * type: 'function',\n * name: 'approve',\n * stateMutability: 'nonpayable',\n * inputs: [\n * {\n * name: 'spender',\n * type: 'address',\n * },\n * {\n * name: 'amount',\n * type: 'uint256',\n * },\n * ],\n * outputs: [{ type: 'bool' }],\n * })\n *\n * approve\n * //^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * ### Human Readable ABIs\n *\n * A Human Readable ABI can be parsed into a typed ABI object:\n *\n * ```ts twoslash\n * import { AbiFunction } from 'ox'\n *\n * const approve = AbiFunction.from(\n * 'function approve(address spender, uint256 amount) returns (bool)' // [!code hl]\n * )\n *\n * approve\n * //^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * It is possible to specify `struct`s along with your definitions:\n *\n * ```ts twoslash\n * import { AbiFunction } from 'ox'\n *\n * const approve = AbiFunction.from([\n * 'struct Foo { address spender; uint256 amount; }', // [!code hl]\n * 'function approve(Foo foo) returns (bool)',\n * ])\n *\n * approve\n * //^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n *\n *\n * @param abiFunction - The ABI Function to parse.\n * @returns Typed ABI Function.\n */\nexport function from(abiFunction, options = {}) {\n return AbiItem.from(abiFunction, options);\n}\n/**\n * Extracts an {@link ox#AbiFunction.AbiFunction} from an {@link ox#Abi.Abi} given a name and optional arguments.\n *\n * @example\n * ### Extracting by Name\n *\n * ABI Functions can be extracted by their name using the `name` option:\n *\n * ```ts twoslash\n * import { Abi, AbiFunction } from 'ox'\n *\n * const abi = Abi.from([\n * 'function foo()',\n * 'event Transfer(address owner, address to, uint256 tokenId)',\n * 'function bar(string a) returns (uint256 x)',\n * ])\n *\n * const item = AbiFunction.fromAbi(abi, 'foo') // [!code focus]\n * // ^?\n *\n *\n *\n *\n *\n *\n * ```\n *\n * @example\n * ### Extracting by Selector\n *\n * ABI Functions can be extract by their selector when {@link ox#Hex.Hex} is provided to `name`.\n *\n * ```ts twoslash\n * import { Abi, AbiFunction } from 'ox'\n *\n * const abi = Abi.from([\n * 'function foo()',\n * 'event Transfer(address owner, address to, uint256 tokenId)',\n * 'function bar(string a) returns (uint256 x)',\n * ])\n * const item = AbiFunction.fromAbi(abi, '0x095ea7b3') // [!code focus]\n * // ^?\n *\n *\n *\n *\n *\n *\n *\n *\n *\n * ```\n *\n * :::note\n *\n * Extracting via a hex selector is useful when extracting an ABI Function from an `eth_call` RPC response or\n * from a Transaction `input`.\n *\n * :::\n *\n * @param abi - The ABI to extract from.\n * @param name - The name (or selector) of the ABI item to extract.\n * @param options - Extraction options.\n * @returns The ABI item.\n */\nexport function fromAbi(abi, name, options) {\n const item = AbiItem.fromAbi(abi, name, options);\n if (item.type !== 'function')\n throw new AbiItem.NotFoundError({ name, type: 'function' });\n return item;\n}\n/**\n * Computes the [4-byte selector](https://solidity-by-example.org/function-selector/) for an {@link ox#AbiFunction.AbiFunction}.\n *\n * Useful for computing function selectors for calldata.\n *\n * @example\n * ```ts twoslash\n * import { AbiFunction } from 'ox'\n *\n * const selector = AbiFunction.getSelector('function ownerOf(uint256 tokenId)')\n * // @log: '0x6352211e'\n * ```\n *\n * @example\n * ```ts twoslash\n * import { AbiFunction } from 'ox'\n *\n * const selector = AbiFunction.getSelector({\n * inputs: [{ type: 'uint256' }],\n * name: 'ownerOf',\n * outputs: [],\n * stateMutability: 'view',\n * type: 'function'\n * })\n * // @log: '0x6352211e'\n * ```\n *\n * @param abiItem - The ABI item to compute the selector for.\n * @returns The first 4 bytes of the {@link ox#Hash.(keccak256:function)} hash of the function signature.\n */\nexport function getSelector(abiItem) {\n return AbiItem.getSelector(abiItem);\n}\n//# sourceMappingURL=AbiFunction.js.map","export const entryPoint06Address = '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789';\nexport const entryPoint07Address = '0x0000000071727De22E5E9d8BAf0edAc6f37da032';\nexport const entryPoint08Address = '0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108';\nexport const ethAddress = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';\nexport const zeroAddress = '0x0000000000000000000000000000000000000000';\n//# sourceMappingURL=address.js.map","import * as AbiConstructor from 'ox/AbiConstructor';\nimport * as AbiFunction from 'ox/AbiFunction';\nimport { parseAccount } from '../../accounts/utils/parseAccount.js';\nimport { ethAddress, zeroAddress } from '../../constants/address.js';\nimport { deploylessCallViaBytecodeBytecode } from '../../constants/contracts.js';\nimport { BaseError } from '../../errors/base.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { hexToBigInt } from '../../utils/index.js';\nimport { createAccessList, } from './createAccessList.js';\nimport { simulateBlocks, } from './simulateBlocks.js';\nconst getBalanceCode = '0x6080604052348015600e575f80fd5b5061016d8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f8b2cb4f1461002d575b5f80fd5b610047600480360381019061004291906100db565b61005d565b604051610054919061011e565b60405180910390f35b5f8173ffffffffffffffffffffffffffffffffffffffff16319050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100aa82610081565b9050919050565b6100ba816100a0565b81146100c4575f80fd5b50565b5f813590506100d5816100b1565b92915050565b5f602082840312156100f0576100ef61007d565b5b5f6100fd848285016100c7565b91505092915050565b5f819050919050565b61011881610106565b82525050565b5f6020820190506101315f83018461010f565b9291505056fea26469706673582212203b9fe929fe995c7cf9887f0bdba8a36dd78e8b73f149b17d2d9ad7cd09d2dc6264736f6c634300081a0033';\n/**\n * Simulates execution of a batch of calls.\n *\n * @param client - Client to use\n * @param parameters - {@link SimulateCallsParameters}\n * @returns Results. {@link SimulateCallsReturnType}\n *\n * @example\n * ```ts\n * import { createPublicClient, http, parseEther } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { simulateCalls } from 'viem/actions'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n *\n * const result = await simulateCalls(client, {\n * account: '0x5a0b54d5dc17e482fe8b0bdca5320161b95fb929',\n * calls: [{\n * {\n * data: '0xdeadbeef',\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * },\n * {\n * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',\n * value: parseEther('1'),\n * },\n * ]\n * })\n * ```\n */\nexport async function simulateCalls(client, parameters) {\n const { blockNumber, blockTag, calls, stateOverrides, traceAssetChanges, traceTransfers, validation, } = parameters;\n const account = parameters.account\n ? parseAccount(parameters.account)\n : undefined;\n if (traceAssetChanges && !account)\n throw new BaseError('`account` is required when `traceAssetChanges` is true');\n // Derive bytecode to extract ETH balance via a contract call.\n const getBalanceData = account\n ? AbiConstructor.encode(AbiConstructor.from('constructor(bytes, bytes)'), {\n bytecode: deploylessCallViaBytecodeBytecode,\n args: [\n getBalanceCode,\n AbiFunction.encodeData(AbiFunction.from('function getBalance(address)'), [account.address]),\n ],\n })\n : undefined;\n // Fetch ERC20/721 addresses that were \"touched\" from the calls.\n const assetAddresses = traceAssetChanges\n ? await Promise.all(parameters.calls.map(async (call) => {\n if (!call.data && !call.abi)\n return;\n const { accessList } = await createAccessList(client, {\n account: account.address,\n ...call,\n data: call.abi ? encodeFunctionData(call) : call.data,\n });\n return accessList.map(({ address, storageKeys }) => storageKeys.length > 0 ? address : null);\n })).then((x) => x.flat().filter(Boolean))\n : [];\n const blocks = await simulateBlocks(client, {\n blockNumber,\n blockTag: blockTag,\n blocks: [\n ...(traceAssetChanges\n ? [\n // ETH pre balances\n {\n calls: [{ data: getBalanceData }],\n stateOverrides,\n },\n // Asset pre balances\n {\n calls: assetAddresses.map((address, i) => ({\n abi: [\n AbiFunction.from('function balanceOf(address) returns (uint256)'),\n ],\n functionName: 'balanceOf',\n args: [account.address],\n to: address,\n from: zeroAddress,\n nonce: i,\n })),\n stateOverrides: [\n {\n address: zeroAddress,\n nonce: 0,\n },\n ],\n },\n ]\n : []),\n {\n calls: [...calls, {}].map((call) => ({\n ...call,\n from: account?.address,\n })),\n stateOverrides,\n },\n ...(traceAssetChanges\n ? [\n // ETH post balances\n {\n calls: [{ data: getBalanceData }],\n },\n // Asset post balances\n {\n calls: assetAddresses.map((address, i) => ({\n abi: [\n AbiFunction.from('function balanceOf(address) returns (uint256)'),\n ],\n functionName: 'balanceOf',\n args: [account.address],\n to: address,\n from: zeroAddress,\n nonce: i,\n })),\n stateOverrides: [\n {\n address: zeroAddress,\n nonce: 0,\n },\n ],\n },\n // Decimals\n {\n calls: assetAddresses.map((address, i) => ({\n to: address,\n abi: [\n AbiFunction.from('function decimals() returns (uint256)'),\n ],\n functionName: 'decimals',\n from: zeroAddress,\n nonce: i,\n })),\n stateOverrides: [\n {\n address: zeroAddress,\n nonce: 0,\n },\n ],\n },\n // Token URI\n {\n calls: assetAddresses.map((address, i) => ({\n to: address,\n abi: [\n AbiFunction.from('function tokenURI(uint256) returns (string)'),\n ],\n functionName: 'tokenURI',\n args: [0n],\n from: zeroAddress,\n nonce: i,\n })),\n stateOverrides: [\n {\n address: zeroAddress,\n nonce: 0,\n },\n ],\n },\n // Symbols\n {\n calls: assetAddresses.map((address, i) => ({\n to: address,\n abi: [AbiFunction.from('function symbol() returns (string)')],\n functionName: 'symbol',\n from: zeroAddress,\n nonce: i,\n })),\n stateOverrides: [\n {\n address: zeroAddress,\n nonce: 0,\n },\n ],\n },\n ]\n : []),\n ],\n traceTransfers,\n validation,\n });\n const block_results = traceAssetChanges ? blocks[2] : blocks[0];\n const [block_ethPre, block_assetsPre, , block_ethPost, block_assetsPost, block_decimals, block_tokenURI, block_symbols,] = traceAssetChanges ? blocks : [];\n // Extract call results from the simulation.\n const { calls: block_calls, ...block } = block_results;\n const results = block_calls.slice(0, -1) ?? [];\n // Extract pre-execution ETH and asset balances.\n const ethPre = block_ethPre?.calls ?? [];\n const assetsPre = block_assetsPre?.calls ?? [];\n const balancesPre = [...ethPre, ...assetsPre].map((call) => call.status === 'success' ? hexToBigInt(call.data) : null);\n // Extract post-execution ETH and asset balances.\n const ethPost = block_ethPost?.calls ?? [];\n const assetsPost = block_assetsPost?.calls ?? [];\n const balancesPost = [...ethPost, ...assetsPost].map((call) => call.status === 'success' ? hexToBigInt(call.data) : null);\n // Extract asset symbols & decimals.\n const decimals = (block_decimals?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);\n const symbols = (block_symbols?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);\n const tokenURI = (block_tokenURI?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);\n const changes = [];\n for (const [i, balancePost] of balancesPost.entries()) {\n const balancePre = balancesPre[i];\n if (typeof balancePost !== 'bigint')\n continue;\n if (typeof balancePre !== 'bigint')\n continue;\n const decimals_ = decimals[i - 1];\n const symbol_ = symbols[i - 1];\n const tokenURI_ = tokenURI[i - 1];\n const token = (() => {\n if (i === 0)\n return {\n address: ethAddress,\n decimals: 18,\n symbol: 'ETH',\n };\n return {\n address: assetAddresses[i - 1],\n decimals: tokenURI_ || decimals_ ? Number(decimals_ ?? 1) : undefined,\n symbol: symbol_ ?? undefined,\n };\n })();\n if (changes.some((change) => change.token.address === token.address))\n continue;\n changes.push({\n token,\n value: {\n pre: balancePre,\n post: balancePost,\n diff: balancePost - balancePre,\n },\n });\n }\n return {\n assetChanges: changes,\n block,\n results,\n };\n}\n//# sourceMappingURL=simulateCalls.js.map","import * as AbiParameters from '../core/AbiParameters.js';\nimport * as Errors from '../core/Errors.js';\nimport * as Hex from '../core/Hex.js';\n/**\n * Magic bytes used to identify ERC-6492 wrapped signatures.\n */\nexport const magicBytes = '0x6492649264926492649264926492649264926492649264926492649264926492';\n/**\n * Deployless ERC-6492 signature verification bytecode.\n */\nexport const universalSignatureValidatorBytecode = '0x608060405234801561001057600080fd5b5060405161069438038061069483398101604081905261002f9161051e565b600061003c848484610048565b9050806000526001601ff35b60007f64926492649264926492649264926492649264926492649264926492649264926100748361040c565b036101e7576000606080848060200190518101906100929190610577565b60405192955090935091506000906001600160a01b038516906100b69085906105dd565b6000604051808303816000865af19150503d80600081146100f3576040519150601f19603f3d011682016040523d82523d6000602084013e6100f8565b606091505b50509050876001600160a01b03163b60000361016057806101605760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90610190908b9087906004016105f9565b602060405180830381865afa1580156101ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d19190610633565b6001600160e01b03191614945050505050610405565b6001600160a01b0384163b1561027a57604051630b135d3f60e11b808252906001600160a01b03861690631626ba7e9061022790879087906004016105f9565b602060405180830381865afa158015610244573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102689190610633565b6001600160e01b031916149050610405565b81516041146102df5760405162461bcd60e51b815260206004820152603a602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e6774680000000000006064820152608401610157565b6102e7610425565b5060208201516040808401518451859392600091859190811061030c5761030c61065d565b016020015160f81c9050601b811480159061032b57508060ff16601c14155b1561038c5760405162461bcd60e51b815260206004820152603b602482015260008051602061067483398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c756500000000006064820152608401610157565b60408051600081526020810180835289905260ff83169181019190915260608101849052608081018390526001600160a01b0389169060019060a0016020604051602081039080840390855afa1580156103ea573d6000803e3d6000fd5b505050602060405103516001600160a01b0316149450505050505b9392505050565b600060208251101561041d57600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b038116811461045857600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561048c578181015183820152602001610474565b50506000910152565b600082601f8301126104a657600080fd5b81516001600160401b038111156104bf576104bf61045b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156104ed576104ed61045b565b60405281815283820160200185101561050557600080fd5b610516826020830160208701610471565b949350505050565b60008060006060848603121561053357600080fd5b835161053e81610443565b6020850151604086015191945092506001600160401b0381111561056157600080fd5b61056d86828701610495565b9150509250925092565b60008060006060848603121561058c57600080fd5b835161059781610443565b60208501519093506001600160401b038111156105b357600080fd5b6105bf86828701610495565b604086015190935090506001600160401b0381111561056157600080fd5b600082516105ef818460208701610471565b9190910192915050565b828152604060208201526000825180604084015261061e816060850160208701610471565b601f01601f1916919091016060019392505050565b60006020828403121561064557600080fd5b81516001600160e01b03198116811461040557600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572';\n/**\n * ABI for the ERC-6492 universal deployless signature validator contract.\n *\n * Constructor return value is `0x1` (valid) or `0x0` (invalid).\n */\nexport const universalSignatureValidatorAbi = [\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'constructor',\n },\n {\n inputs: [\n {\n name: '_signer',\n type: 'address',\n },\n {\n name: '_hash',\n type: 'bytes32',\n },\n {\n name: '_signature',\n type: 'bytes',\n },\n ],\n outputs: [\n {\n type: 'bool',\n },\n ],\n stateMutability: 'nonpayable',\n type: 'function',\n name: 'isValidSig',\n },\n];\n/**\n * Asserts that the wrapped signature is valid.\n *\n * @example\n * ```ts twoslash\n * import { SignatureErc6492 } from 'ox/erc6492'\n *\n * SignatureErc6492.assert('0xdeadbeef')\n * // @error: InvalidWrappedSignatureError: Value `0xdeadbeef` is an invalid ERC-6492 wrapped signature.\n * ```\n *\n * @param wrapped - The wrapped signature to assert.\n */\nexport function assert(wrapped) {\n if (Hex.slice(wrapped, -32) !== magicBytes)\n throw new InvalidWrappedSignatureError(wrapped);\n}\n/**\n * Parses an [ERC-6492 wrapped signature](https://eips.ethereum.org/EIPS/eip-6492#specification) into its constituent parts.\n *\n * @example\n * ```ts twoslash\n * // @noErrors\n * import { Secp256k1 } from 'ox'\n * import { SignatureErc6492 } from 'ox/erc6492' // [!code focus]\n *\n * const signature = Secp256k1.sign({\n * payload: '0x...',\n * privateKey: '0x...',\n * })\n *\n * // Instantiate from serialized format. // [!code focus]\n * const wrapped = SignatureErc6492.from('0x...') // [!code focus]\n * // @log: { data: '0x...', signature: { ... }, to: '0x...', } // [!code focus]\n *\n * // Instantiate from constituent parts. // [!code focus]\n * const wrapped = SignatureErc6492.from({ // [!code focus]\n * data: '0x...', // [!code focus]\n * signature, // [!code focus]\n * to: '0x...', // [!code focus]\n * })\n * // @log: { data: '0x...', signature: { ... }, to: '0x...', }\n * ```\n *\n * @param wrapped - Wrapped signature to parse.\n * @returns Wrapped signature.\n */\nexport function from(wrapped) {\n if (typeof wrapped === 'string')\n return unwrap(wrapped);\n return wrapped;\n}\n/**\n * Parses an [ERC-6492 wrapped signature](https://eips.ethereum.org/EIPS/eip-6492#specification) into its constituent parts.\n *\n * @example\n * ```ts twoslash\n * import { SignatureErc6492 } from 'ox/erc6492'\n *\n * const { data, signature, to } = SignatureErc6492.unwrap('0x...')\n * ```\n *\n * @param wrapped - Wrapped signature to parse.\n * @returns Wrapped signature.\n */\nexport function unwrap(wrapped) {\n assert(wrapped);\n const [to, data, signature] = AbiParameters.decode(AbiParameters.from('address, bytes, bytes'), wrapped);\n return { data, signature, to };\n}\n/**\n * Serializes an [ERC-6492 wrapped signature](https://eips.ethereum.org/EIPS/eip-6492#specification).\n *\n * @example\n * ```ts twoslash\n * import { Secp256k1, Signature } from 'ox'\n * import { SignatureErc6492 } from 'ox/erc6492' // [!code focus]\n *\n * const signature = Secp256k1.sign({\n * payload: '0x...',\n * privateKey: '0x...',\n * })\n *\n * const wrapped = SignatureErc6492.wrap({ // [!code focus]\n * data: '0xdeadbeef', // [!code focus]\n * signature: Signature.toHex(signature), // [!code focus]\n * to: '0x00000000219ab540356cBB839Cbe05303d7705Fa', // [!code focus]\n * }) // [!code focus]\n * ```\n *\n * @param value - Wrapped signature to serialize.\n * @returns Serialized wrapped signature.\n */\nexport function wrap(value) {\n const { data, signature, to } = value;\n return Hex.concat(AbiParameters.encode(AbiParameters.from('address, bytes, bytes'), [\n to,\n data,\n signature,\n ]), magicBytes);\n}\n/**\n * Validates a wrapped signature. Returns `true` if the wrapped signature is valid, `false` otherwise.\n *\n * @example\n * ```ts twoslash\n * import { SignatureErc6492 } from 'ox/erc6492'\n *\n * const valid = SignatureErc6492.validate('0xdeadbeef')\n * // @log: false\n * ```\n *\n * @param wrapped - The wrapped signature to validate.\n * @returns `true` if the wrapped signature is valid, `false` otherwise.\n */\nexport function validate(wrapped) {\n try {\n assert(wrapped);\n return true;\n }\n catch {\n return false;\n }\n}\n/** Thrown when the ERC-6492 wrapped signature is invalid. */\nexport class InvalidWrappedSignatureError extends Errors.BaseError {\n constructor(wrapped) {\n super(`Value \\`${wrapped}\\` is an invalid ERC-6492 wrapped signature.`);\n Object.defineProperty(this, \"name\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 'SignatureErc6492.InvalidWrappedSignatureError'\n });\n }\n}\n//# sourceMappingURL=SignatureErc6492.js.map","import { secp256k1 } from '@noble/curves/secp256k1';\nimport { hexToBigInt } from '../encoding/fromHex.js';\nimport { hexToBytes } from '../encoding/toBytes.js';\n/**\n * @description Converts a signature into hex format.\n *\n * @param signature The signature to convert.\n * @returns The signature in hex format.\n *\n * @example\n * serializeSignature({\n * r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf',\n * s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8',\n * yParity: 1\n * })\n * // \"0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c\"\n */\nexport function serializeSignature({ r, s, to = 'hex', v, yParity, }) {\n const yParity_ = (() => {\n if (yParity === 0 || yParity === 1)\n return yParity;\n if (v && (v === 27n || v === 28n || v >= 35n))\n return v % 2n === 0n ? 1 : 0;\n throw new Error('Invalid `v` or `yParity` value');\n })();\n const signature = `0x${new secp256k1.Signature(hexToBigInt(r), hexToBigInt(s)).toCompactHex()}${yParity_ === 0 ? '1b' : '1c'}`;\n if (to === 'hex')\n return signature;\n return hexToBytes(signature);\n}\n//# sourceMappingURL=serializeSignature.js.map","import { SignatureErc6492 } from 'ox/erc6492';\nimport { SignatureErc8010 } from 'ox/erc8010';\nimport { erc1271Abi, erc6492SignatureValidatorAbi, multicall3Abi, } from '../../constants/abis.js';\nimport { erc6492SignatureValidatorByteCode, multicall3Bytecode, } from '../../constants/contracts.js';\nimport { CallExecutionError, ContractFunctionExecutionError, } from '../../errors/contract.js';\nimport { encodeDeployData, } from '../../utils/abi/encodeDeployData.js';\nimport { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';\nimport { getAddress, } from '../../utils/address/getAddress.js';\nimport { isAddressEqual, } from '../../utils/address/isAddressEqual.js';\nimport { verifyAuthorization } from '../../utils/authorization/verifyAuthorization.js';\nimport { concatHex } from '../../utils/data/concat.js';\nimport { isHex } from '../../utils/data/isHex.js';\nimport { hexToBool } from '../../utils/encoding/fromHex.js';\nimport { bytesToHex, numberToHex, } from '../../utils/encoding/toHex.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { recoverAddress, } from '../../utils/signature/recoverAddress.js';\nimport { serializeSignature, } from '../../utils/signature/serializeSignature.js';\nimport { call } from './call.js';\nimport { getCode } from './getCode.js';\nimport { readContract } from './readContract.js';\n/**\n * Verifies a message hash onchain using ERC-6492.\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyHashParameters}\n * @returns Whether or not the signature is valid. {@link VerifyHashReturnType}\n */\nexport async function verifyHash(client, parameters) {\n const { address, hash, erc6492VerifierAddress: verifierAddress = parameters.universalSignatureVerifierAddress ??\n client.chain?.contracts?.erc6492Verifier?.address, multicallAddress = parameters.multicallAddress ??\n client.chain?.contracts?.multicall3?.address, } = parameters;\n const signature = (() => {\n const signature = parameters.signature;\n if (isHex(signature))\n return signature;\n if (typeof signature === 'object' && 'r' in signature && 's' in signature)\n return serializeSignature(signature);\n return bytesToHex(signature);\n })();\n try {\n if (SignatureErc8010.validate(signature))\n return await verifyErc8010(client, {\n ...parameters,\n multicallAddress,\n signature,\n });\n return await verifyErc6492(client, {\n ...parameters,\n verifierAddress,\n signature,\n });\n }\n catch (error) {\n // Fallback attempt to verify the signature via ECDSA recovery.\n try {\n const verified = isAddressEqual(getAddress(address), await recoverAddress({ hash, signature }));\n if (verified)\n return true;\n }\n catch { }\n if (error instanceof VerificationError) {\n // if the execution fails, the signature was not valid and an internal method inside of the validator reverted\n // this can happen for many reasons, for example if signer can not be recovered from the signature\n // or if the signature has no valid format\n return false;\n }\n throw error;\n }\n}\n/** @internal */\nexport async function verifyErc8010(client, parameters) {\n const { address, blockNumber, blockTag, hash, multicallAddress } = parameters;\n const { authorization: authorization_ox, data: initData, signature, to, } = SignatureErc8010.unwrap(parameters.signature);\n // Check if already delegated\n const code = await getCode(client, {\n address,\n blockNumber,\n blockTag,\n });\n // If already delegated, perform standard ERC-1271 verification.\n if (code === concatHex(['0xef0100', authorization_ox.address]))\n return await verifyErc1271(client, {\n address,\n blockNumber,\n blockTag,\n hash,\n signature,\n });\n const authorization = {\n address: authorization_ox.address,\n chainId: Number(authorization_ox.chainId),\n nonce: Number(authorization_ox.nonce),\n r: numberToHex(authorization_ox.r, { size: 32 }),\n s: numberToHex(authorization_ox.s, { size: 32 }),\n yParity: authorization_ox.yParity,\n };\n const valid = await verifyAuthorization({\n address,\n authorization,\n });\n if (!valid)\n throw new VerificationError();\n // Deployless verification.\n const results = await getAction(client, readContract, 'readContract')({\n ...(multicallAddress\n ? { address: multicallAddress }\n : { code: multicall3Bytecode }),\n authorizationList: [authorization],\n abi: multicall3Abi,\n blockNumber,\n blockTag: 'pending',\n functionName: 'aggregate3',\n args: [\n [\n ...(initData\n ? [\n {\n allowFailure: true,\n target: to ?? address,\n callData: initData,\n },\n ]\n : []),\n {\n allowFailure: true,\n target: address,\n callData: encodeFunctionData({\n abi: erc1271Abi,\n functionName: 'isValidSignature',\n args: [hash, signature],\n }),\n },\n ],\n ],\n });\n const data = results[results.length - 1]?.returnData;\n if (data?.startsWith('0x1626ba7e'))\n return true;\n throw new VerificationError();\n}\n/** @internal */\n// biome-ignore lint/correctness/noUnusedVariables: _\nasync function verifyErc6492(client, parameters) {\n const { address, factory, factoryData, hash, signature, verifierAddress, ...rest } = parameters;\n const wrappedSignature = await (async () => {\n // If no `factory` or `factoryData` is provided, it is assumed that the\n // address is not a Smart Account, or the Smart Account is already deployed.\n if (!factory && !factoryData)\n return signature;\n // If the signature is already wrapped, return the signature.\n if (SignatureErc6492.validate(signature))\n return signature;\n // If the Smart Account is not deployed, wrap the signature with a 6492 wrapper\n // to perform counterfactual validation.\n return SignatureErc6492.wrap({\n data: factoryData,\n signature,\n to: factory,\n });\n })();\n const args = verifierAddress\n ? {\n to: verifierAddress,\n data: encodeFunctionData({\n abi: erc6492SignatureValidatorAbi,\n functionName: 'isValidSig',\n args: [address, hash, wrappedSignature],\n }),\n ...rest,\n }\n : {\n data: encodeDeployData({\n abi: erc6492SignatureValidatorAbi,\n args: [address, hash, wrappedSignature],\n bytecode: erc6492SignatureValidatorByteCode,\n }),\n ...rest,\n };\n const { data } = await getAction(client, call, 'call')(args).catch((error) => {\n if (error instanceof CallExecutionError)\n throw new VerificationError();\n throw error;\n });\n if (hexToBool(data ?? '0x0'))\n return true;\n throw new VerificationError();\n}\n/** @internal */\nexport async function verifyErc1271(client, parameters) {\n const { address, blockNumber, blockTag, hash, signature } = parameters;\n const result = await getAction(client, readContract, 'readContract')({\n address,\n abi: erc1271Abi,\n args: [hash, signature],\n blockNumber,\n blockTag,\n functionName: 'isValidSignature',\n }).catch((error) => {\n if (error instanceof ContractFunctionExecutionError)\n throw new VerificationError();\n throw error;\n });\n if (result.startsWith('0x1626ba7e'))\n return true;\n throw new VerificationError();\n}\nclass VerificationError extends Error {\n}\n//# sourceMappingURL=verifyHash.js.map","import { hashMessage } from '../../utils/signature/hashMessage.js';\nimport { verifyHash, } from './verifyHash.js';\n/**\n * Verify that a message was signed by the provided address.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyMessage}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifyMessageReturnType}\n */\nexport async function verifyMessage(client, { address, message, factory, factoryData, signature, ...callRequest }) {\n const hash = hashMessage(message);\n return verifyHash(client, {\n address,\n factory: factory,\n factoryData: factoryData,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifyMessage.js.map","import { hashTypedData, } from '../../utils/signature/hashTypedData.js';\nimport { verifyHash, } from './verifyHash.js';\n/**\n * Verify that typed data was signed by the provided address.\n *\n * - Docs {@link https://viem.sh/docs/actions/public/verifyTypedData}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifyTypedDataParameters}\n * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}\n */\nexport async function verifyTypedData(client, parameters) {\n const { address, factory, factoryData, signature, message, primaryType, types, domain, ...callRequest } = parameters;\n const hash = hashTypedData({ message, primaryType, types, domain });\n return verifyHash(client, {\n address,\n factory: factory,\n factoryData: factoryData,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifyTypedData.js.map","import { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { getBlock } from './getBlock.js';\n/**\n * Watches and returns information for incoming blocks.\n *\n * - Docs: https://viem.sh/docs/actions/public/watchBlocks\n * - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks_watching-blocks\n * - JSON-RPC Methods:\n * - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval.\n * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `\"newHeads\"` event.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchBlocksParameters}\n * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlocksReturnType}\n *\n * @example\n * import { createPublicClient, watchBlocks, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchBlocks(client, {\n * onBlock: (block) => console.log(block),\n * })\n */\nexport function watchBlocks(client, { blockTag = client.experimental_blockTag ?? 'latest', emitMissed = false, emitOnBegin = false, onBlock, onError, includeTransactions: includeTransactions_, poll: poll_, pollingInterval = client.pollingInterval, }) {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined')\n return poll_;\n if (client.transport.type === 'webSocket' ||\n client.transport.type === 'ipc')\n return false;\n if (client.transport.type === 'fallback' &&\n (client.transport.transports[0].config.type === 'webSocket' ||\n client.transport.transports[0].config.type === 'ipc'))\n return false;\n return true;\n })();\n const includeTransactions = includeTransactions_ ?? false;\n let prevBlock;\n const pollBlocks = () => {\n const observerId = stringify([\n 'watchBlocks',\n client.uid,\n blockTag,\n emitMissed,\n emitOnBegin,\n includeTransactions,\n pollingInterval,\n ]);\n return observe(observerId, { onBlock, onError }, (emit) => poll(async () => {\n try {\n const block = await getAction(client, getBlock, 'getBlock')({\n blockTag,\n includeTransactions,\n });\n if (block.number !== null && prevBlock?.number != null) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (block.number === prevBlock.number)\n return;\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (block.number - prevBlock.number > 1 && emitMissed) {\n for (let i = prevBlock?.number + 1n; i < block.number; i++) {\n const block = (await getAction(client, getBlock, 'getBlock')({\n blockNumber: i,\n includeTransactions,\n }));\n emit.onBlock(block, prevBlock);\n prevBlock = block;\n }\n }\n }\n if (\n // If no previous block exists, emit.\n prevBlock?.number == null ||\n // If the block tag is \"pending\" with no block number, emit.\n (blockTag === 'pending' && block?.number == null) ||\n // If the next block number is greater than the previous block number, emit.\n // We don't want to emit blocks in the past.\n (block.number !== null && block.number > prevBlock.number)) {\n emit.onBlock(block, prevBlock);\n prevBlock = block;\n }\n }\n catch (err) {\n emit.onError?.(err);\n }\n }, {\n emitOnBegin,\n interval: pollingInterval,\n }));\n };\n const subscribeBlocks = () => {\n let active = true;\n let emitFetched = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n if (emitOnBegin) {\n getAction(client, getBlock, 'getBlock')({\n blockTag,\n includeTransactions,\n })\n .then((block) => {\n if (!active)\n return;\n if (!emitFetched)\n return;\n onBlock(block, undefined);\n emitFetched = false;\n })\n .catch(onError);\n }\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find((transport) => transport.config.type === 'webSocket' ||\n transport.config.type === 'ipc');\n if (!transport)\n return client.transport;\n return transport.value;\n }\n return client.transport;\n })();\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['newHeads'],\n async onData(data) {\n if (!active)\n return;\n const block = (await getAction(client, getBlock, 'getBlock')({\n blockNumber: data.result?.number,\n includeTransactions,\n }).catch(() => { }));\n if (!active)\n return;\n onBlock(block, prevBlock);\n emitFetched = false;\n prevBlock = block;\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return () => unsubscribe();\n };\n return enablePolling ? pollBlocks() : subscribeBlocks();\n}\n//# sourceMappingURL=watchBlocks.js.map","import { DecodeLogDataMismatch, DecodeLogTopicsMismatch, } from '../../errors/abi.js';\nimport { InvalidInputRpcError } from '../../errors/rpc.js';\nimport { decodeEventLog } from '../../utils/abi/decodeEventLog.js';\nimport { encodeEventTopics, } from '../../utils/abi/encodeEventTopics.js';\nimport { formatLog } from '../../utils/formatters/log.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { observe } from '../../utils/observe.js';\nimport { poll } from '../../utils/poll.js';\nimport { stringify } from '../../utils/stringify.js';\nimport { createEventFilter, } from './createEventFilter.js';\nimport { getBlockNumber } from './getBlockNumber.js';\nimport { getFilterChanges } from './getFilterChanges.js';\nimport { getLogs } from './getLogs.js';\nimport { uninstallFilter } from './uninstallFilter.js';\n/**\n * Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log).\n *\n * - Docs: https://viem.sh/docs/actions/public/watchEvent\n * - JSON-RPC Methods:\n * - **RPC Provider supports `eth_newFilter`:**\n * - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize).\n * - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges).\n * - **RPC Provider does not support `eth_newFilter`:**\n * - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval.\n *\n * This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs).\n *\n * `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead.\n *\n * @param client - Client to use\n * @param parameters - {@link WatchEventParameters}\n * @returns A function that can be invoked to stop watching for new Event Logs. {@link WatchEventReturnType}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n * import { watchEvent } from 'viem/public'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const unwatch = watchEvent(client, {\n * onLogs: (logs) => console.log(logs),\n * })\n */\nexport function watchEvent(client, { address, args, batch = true, event, events, fromBlock, onError, onLogs, poll: poll_, pollingInterval = client.pollingInterval, strict: strict_, }) {\n const enablePolling = (() => {\n if (typeof poll_ !== 'undefined')\n return poll_;\n if (typeof fromBlock === 'bigint')\n return true;\n if (client.transport.type === 'webSocket' ||\n client.transport.type === 'ipc')\n return false;\n if (client.transport.type === 'fallback' &&\n (client.transport.transports[0].config.type === 'webSocket' ||\n client.transport.transports[0].config.type === 'ipc'))\n return false;\n return true;\n })();\n const strict = strict_ ?? false;\n const pollEvent = () => {\n const observerId = stringify([\n 'watchEvent',\n address,\n args,\n batch,\n client.uid,\n event,\n pollingInterval,\n fromBlock,\n ]);\n return observe(observerId, { onLogs, onError }, (emit) => {\n let previousBlockNumber;\n if (fromBlock !== undefined)\n previousBlockNumber = fromBlock - 1n;\n let filter;\n let initialized = false;\n const unwatch = poll(async () => {\n if (!initialized) {\n try {\n filter = (await getAction(client, createEventFilter, 'createEventFilter')({\n address,\n args,\n event: event,\n events,\n strict,\n fromBlock,\n }));\n }\n catch { }\n initialized = true;\n return;\n }\n try {\n let logs;\n if (filter) {\n logs = await getAction(client, getFilterChanges, 'getFilterChanges')({ filter });\n }\n else {\n // If the filter doesn't exist, we will fall back to use `getLogs`.\n // The fall back exists because some RPC Providers do not support filters.\n // Fetch the block number to use for `getLogs`.\n const blockNumber = await getAction(client, getBlockNumber, 'getBlockNumber')({});\n // If the block number has changed, we will need to fetch the logs.\n // If the block number doesn't exist, we are yet to reach the first poll interval,\n // so do not emit any logs.\n if (previousBlockNumber && previousBlockNumber !== blockNumber) {\n logs = await getAction(client, getLogs, 'getLogs')({\n address,\n args,\n event: event,\n events,\n fromBlock: previousBlockNumber + 1n,\n toBlock: blockNumber,\n });\n }\n else {\n logs = [];\n }\n previousBlockNumber = blockNumber;\n }\n if (logs.length === 0)\n return;\n if (batch)\n emit.onLogs(logs);\n else\n for (const log of logs)\n emit.onLogs([log]);\n }\n catch (err) {\n // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.\n // Reinitialize the filter when this occurs\n if (filter && err instanceof InvalidInputRpcError)\n initialized = false;\n emit.onError?.(err);\n }\n }, {\n emitOnBegin: true,\n interval: pollingInterval,\n });\n return async () => {\n if (filter)\n await getAction(client, uninstallFilter, 'uninstallFilter')({ filter });\n unwatch();\n };\n });\n };\n const subscribeEvent = () => {\n let active = true;\n let unsubscribe = () => (active = false);\n (async () => {\n try {\n const transport = (() => {\n if (client.transport.type === 'fallback') {\n const transport = client.transport.transports.find((transport) => transport.config.type === 'webSocket' ||\n transport.config.type === 'ipc');\n if (!transport)\n return client.transport;\n return transport.value;\n }\n return client.transport;\n })();\n const events_ = events ?? (event ? [event] : undefined);\n let topics = [];\n if (events_) {\n const encoded = events_.flatMap((event) => encodeEventTopics({\n abi: [event],\n eventName: event.name,\n args,\n }));\n // TODO: Clean up type casting\n topics = [encoded];\n if (event)\n topics = topics[0];\n }\n const { unsubscribe: unsubscribe_ } = await transport.subscribe({\n params: ['logs', { address, topics }],\n onData(data) {\n if (!active)\n return;\n const log = data.result;\n try {\n const { eventName, args } = decodeEventLog({\n abi: events_ ?? [],\n data: log.data,\n topics: log.topics,\n strict,\n });\n const formatted = formatLog(log, { args, eventName });\n onLogs([formatted]);\n }\n catch (err) {\n let eventName;\n let isUnnamed;\n if (err instanceof DecodeLogDataMismatch ||\n err instanceof DecodeLogTopicsMismatch) {\n // If strict mode is on, and log data/topics do not match event definition, skip.\n if (strict_)\n return;\n eventName = err.abiItem.name;\n isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name));\n }\n // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).\n const formatted = formatLog(log, {\n args: isUnnamed ? [] : {},\n eventName,\n });\n onLogs([formatted]);\n }\n },\n onError(error) {\n onError?.(error);\n },\n });\n unsubscribe = unsubscribe_;\n if (!active)\n unsubscribe();\n }\n catch (err) {\n onError?.(err);\n }\n })();\n return () => unsubscribe();\n };\n return enablePolling ? pollEvent() : subscribeEvent();\n}\n//# sourceMappingURL=watchEvent.js.map","/**\n * @description Parses EIP-4361 formatted message into message fields object.\n *\n * @see https://eips.ethereum.org/EIPS/eip-4361\n *\n * @returns EIP-4361 fields object\n */\nexport function parseSiweMessage(message) {\n const { scheme, statement, ...prefix } = (message.match(prefixRegex)\n ?.groups ?? {});\n const { chainId, expirationTime, issuedAt, notBefore, requestId, ...suffix } = (message.match(suffixRegex)?.groups ?? {});\n const resources = message.split('Resources:')[1]?.split('\\n- ').slice(1);\n return {\n ...prefix,\n ...suffix,\n ...(chainId ? { chainId: Number(chainId) } : {}),\n ...(expirationTime ? { expirationTime: new Date(expirationTime) } : {}),\n ...(issuedAt ? { issuedAt: new Date(issuedAt) } : {}),\n ...(notBefore ? { notBefore: new Date(notBefore) } : {}),\n ...(requestId ? { requestId } : {}),\n ...(resources ? { resources } : {}),\n ...(scheme ? { scheme } : {}),\n ...(statement ? { statement } : {}),\n };\n}\n// https://regexr.com/80gdj\nconst prefixRegex = /^(?:(?<scheme>[a-zA-Z][a-zA-Z0-9+-.]*):\\/\\/)?(?<domain>[a-zA-Z0-9+-.]*(?::[0-9]{1,5})?) (?:wants you to sign in with your Ethereum account:\\n)(?<address>0x[a-fA-F0-9]{40})\\n\\n(?:(?<statement>.*)\\n\\n)?/;\n// https://regexr.com/80gf9\nconst suffixRegex = /(?:URI: (?<uri>.+))\\n(?:Version: (?<version>.+))\\n(?:Chain ID: (?<chainId>\\d+))\\n(?:Nonce: (?<nonce>[a-zA-Z0-9]+))\\n(?:Issued At: (?<issuedAt>.+))(?:\\nExpiration Time: (?<expirationTime>.+))?(?:\\nNot Before: (?<notBefore>.+))?(?:\\nRequest ID: (?<requestId>.+))?/;\n//# sourceMappingURL=parseSiweMessage.js.map","import { isAddress } from '../address/isAddress.js';\nimport { isAddressEqual } from '../address/isAddressEqual.js';\n/**\n * @description Validates EIP-4361 message.\n *\n * @see https://eips.ethereum.org/EIPS/eip-4361\n */\nexport function validateSiweMessage(parameters) {\n const { address, domain, message, nonce, scheme, time = new Date(), } = parameters;\n if (domain && message.domain !== domain)\n return false;\n if (nonce && message.nonce !== nonce)\n return false;\n if (scheme && message.scheme !== scheme)\n return false;\n if (message.expirationTime && time >= message.expirationTime)\n return false;\n if (message.notBefore && time < message.notBefore)\n return false;\n try {\n if (!message.address)\n return false;\n if (!isAddress(message.address, { strict: false }))\n return false;\n if (address && !isAddressEqual(message.address, address))\n return false;\n }\n catch {\n return false;\n }\n return true;\n}\n//# sourceMappingURL=validateSiweMessage.js.map","import { hashMessage } from '../../utils/signature/hashMessage.js';\nimport { parseSiweMessage } from '../../utils/siwe/parseSiweMessage.js';\nimport { validateSiweMessage, } from '../../utils/siwe/validateSiweMessage.js';\nimport { verifyHash, } from '../public/verifyHash.js';\n/**\n * Verifies [EIP-4361](https://eips.ethereum.org/EIPS/eip-4361) formatted message was signed.\n *\n * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).\n *\n * - Docs {@link https://viem.sh/docs/siwe/actions/verifySiweMessage}\n *\n * @param client - Client to use.\n * @param parameters - {@link VerifySiweMessageParameters}\n * @returns Whether or not the signature is valid. {@link VerifySiweMessageReturnType}\n */\nexport async function verifySiweMessage(client, parameters) {\n const { address, domain, message, nonce, scheme, signature, time = new Date(), ...callRequest } = parameters;\n const parsed = parseSiweMessage(message);\n if (!parsed.address)\n return false;\n const isValid = validateSiweMessage({\n address,\n domain,\n message: parsed,\n nonce,\n scheme,\n time,\n });\n if (!isValid)\n return false;\n const hash = hashMessage(message);\n return verifyHash(client, {\n address: parsed.address,\n hash,\n signature,\n ...callRequest,\n });\n}\n//# sourceMappingURL=verifySiweMessage.js.map","import { getEnsAddress, } from '../../actions/ens/getEnsAddress.js';\nimport { getEnsAvatar, } from '../../actions/ens/getEnsAvatar.js';\nimport { getEnsName, } from '../../actions/ens/getEnsName.js';\nimport { getEnsResolver, } from '../../actions/ens/getEnsResolver.js';\nimport { getEnsText, } from '../../actions/ens/getEnsText.js';\nimport { call, } from '../../actions/public/call.js';\nimport { createAccessList, } from '../../actions/public/createAccessList.js';\nimport { createBlockFilter, } from '../../actions/public/createBlockFilter.js';\nimport { createContractEventFilter, } from '../../actions/public/createContractEventFilter.js';\nimport { createEventFilter, } from '../../actions/public/createEventFilter.js';\nimport { createPendingTransactionFilter, } from '../../actions/public/createPendingTransactionFilter.js';\nimport { estimateContractGas, } from '../../actions/public/estimateContractGas.js';\nimport { estimateFeesPerGas, } from '../../actions/public/estimateFeesPerGas.js';\nimport { estimateGas, } from '../../actions/public/estimateGas.js';\nimport { estimateMaxPriorityFeePerGas, } from '../../actions/public/estimateMaxPriorityFeePerGas.js';\nimport { getBalance, } from '../../actions/public/getBalance.js';\nimport { getBlobBaseFee, } from '../../actions/public/getBlobBaseFee.js';\nimport { getBlock, } from '../../actions/public/getBlock.js';\nimport { getBlockNumber, } from '../../actions/public/getBlockNumber.js';\nimport { getBlockTransactionCount, } from '../../actions/public/getBlockTransactionCount.js';\nimport { getChainId, } from '../../actions/public/getChainId.js';\nimport { getCode, } from '../../actions/public/getCode.js';\nimport { getContractEvents, } from '../../actions/public/getContractEvents.js';\nimport { getEip712Domain, } from '../../actions/public/getEip712Domain.js';\nimport { getFeeHistory, } from '../../actions/public/getFeeHistory.js';\nimport { getFilterChanges, } from '../../actions/public/getFilterChanges.js';\nimport { getFilterLogs, } from '../../actions/public/getFilterLogs.js';\nimport { getGasPrice, } from '../../actions/public/getGasPrice.js';\nimport { getLogs, } from '../../actions/public/getLogs.js';\nimport { getProof, } from '../../actions/public/getProof.js';\nimport { getStorageAt, } from '../../actions/public/getStorageAt.js';\nimport { getTransaction, } from '../../actions/public/getTransaction.js';\nimport { getTransactionConfirmations, } from '../../actions/public/getTransactionConfirmations.js';\nimport { getTransactionCount, } from '../../actions/public/getTransactionCount.js';\nimport { getTransactionReceipt, } from '../../actions/public/getTransactionReceipt.js';\nimport { multicall, } from '../../actions/public/multicall.js';\nimport { readContract, } from '../../actions/public/readContract.js';\nimport { simulateBlocks, } from '../../actions/public/simulateBlocks.js';\nimport { simulateCalls, } from '../../actions/public/simulateCalls.js';\nimport { simulateContract, } from '../../actions/public/simulateContract.js';\nimport { uninstallFilter, } from '../../actions/public/uninstallFilter.js';\nimport { verifyHash, } from '../../actions/public/verifyHash.js';\nimport { verifyMessage, } from '../../actions/public/verifyMessage.js';\nimport { verifyTypedData, } from '../../actions/public/verifyTypedData.js';\nimport { waitForTransactionReceipt, } from '../../actions/public/waitForTransactionReceipt.js';\nimport { watchBlockNumber, } from '../../actions/public/watchBlockNumber.js';\nimport { watchBlocks, } from '../../actions/public/watchBlocks.js';\nimport { watchContractEvent, } from '../../actions/public/watchContractEvent.js';\nimport { watchEvent, } from '../../actions/public/watchEvent.js';\nimport { watchPendingTransactions, } from '../../actions/public/watchPendingTransactions.js';\nimport { verifySiweMessage, } from '../../actions/siwe/verifySiweMessage.js';\nimport { prepareTransactionRequest, } from '../../actions/wallet/prepareTransactionRequest.js';\nimport { sendRawTransaction, } from '../../actions/wallet/sendRawTransaction.js';\nexport function publicActions(client) {\n return {\n call: (args) => call(client, args),\n createAccessList: (args) => createAccessList(client, args),\n createBlockFilter: () => createBlockFilter(client),\n createContractEventFilter: (args) => createContractEventFilter(client, args),\n createEventFilter: (args) => createEventFilter(client, args),\n createPendingTransactionFilter: () => createPendingTransactionFilter(client),\n estimateContractGas: (args) => estimateContractGas(client, args),\n estimateGas: (args) => estimateGas(client, args),\n getBalance: (args) => getBalance(client, args),\n getBlobBaseFee: () => getBlobBaseFee(client),\n getBlock: (args) => getBlock(client, args),\n getBlockNumber: (args) => getBlockNumber(client, args),\n getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),\n getBytecode: (args) => getCode(client, args),\n getChainId: () => getChainId(client),\n getCode: (args) => getCode(client, args),\n getContractEvents: (args) => getContractEvents(client, args),\n getEip712Domain: (args) => getEip712Domain(client, args),\n getEnsAddress: (args) => getEnsAddress(client, args),\n getEnsAvatar: (args) => getEnsAvatar(client, args),\n getEnsName: (args) => getEnsName(client, args),\n getEnsResolver: (args) => getEnsResolver(client, args),\n getEnsText: (args) => getEnsText(client, args),\n getFeeHistory: (args) => getFeeHistory(client, args),\n estimateFeesPerGas: (args) => estimateFeesPerGas(client, args),\n getFilterChanges: (args) => getFilterChanges(client, args),\n getFilterLogs: (args) => getFilterLogs(client, args),\n getGasPrice: () => getGasPrice(client),\n getLogs: (args) => getLogs(client, args),\n getProof: (args) => getProof(client, args),\n estimateMaxPriorityFeePerGas: (args) => estimateMaxPriorityFeePerGas(client, args),\n getStorageAt: (args) => getStorageAt(client, args),\n getTransaction: (args) => getTransaction(client, args),\n getTransactionConfirmations: (args) => getTransactionConfirmations(client, args),\n getTransactionCount: (args) => getTransactionCount(client, args),\n getTransactionReceipt: (args) => getTransactionReceipt(client, args),\n multicall: (args) => multicall(client, args),\n prepareTransactionRequest: (args) => prepareTransactionRequest(client, args),\n readContract: (args) => readContract(client, args),\n sendRawTransaction: (args) => sendRawTransaction(client, args),\n simulate: (args) => simulateBlocks(client, args),\n simulateBlocks: (args) => simulateBlocks(client, args),\n simulateCalls: (args) => simulateCalls(client, args),\n simulateContract: (args) => simulateContract(client, args),\n verifyHash: (args) => verifyHash(client, args),\n verifyMessage: (args) => verifyMessage(client, args),\n verifySiweMessage: (args) => verifySiweMessage(client, args),\n verifyTypedData: (args) => verifyTypedData(client, args),\n uninstallFilter: (args) => uninstallFilter(client, args),\n waitForTransactionReceipt: (args) => waitForTransactionReceipt(client, args),\n watchBlocks: (args) => watchBlocks(client, args),\n watchBlockNumber: (args) => watchBlockNumber(client, args),\n watchContractEvent: (args) => watchContractEvent(client, args),\n watchEvent: (args) => watchEvent(client, args),\n watchPendingTransactions: (args) => watchPendingTransactions(client, args),\n };\n}\n//# sourceMappingURL=public.js.map","import { createClient, } from './createClient.js';\nimport { publicActions } from './decorators/public.js';\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://viem.sh/docs/clients/public\n *\n * A Public Client is an interface to \"public\" [JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Public Client. {@link PublicClient}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n */\nexport function createPublicClient(parameters) {\n const { key = 'public', name = 'Public Client' } = parameters;\n const client = createClient({\n ...parameters,\n key,\n name,\n type: 'publicClient',\n });\n return client.extend(publicActions);\n}\n//# sourceMappingURL=createPublicClient.js.map","import { parseAccount, } from '../../accounts/utils/parseAccount.js';\nimport { AccountNotFoundError, } from '../../errors/account.js';\nimport { isAddressEqual } from '../../utils/address/isAddressEqual.js';\nimport { getAction } from '../../utils/getAction.js';\nimport { getChainId } from '../public/getChainId.js';\nimport { getTransactionCount } from '../public/getTransactionCount.js';\n/**\n * Prepares an [EIP-7702 Authorization](https://eips.ethereum.org/EIPS/eip-7702) object for signing.\n * This Action will fill the required fields of the Authorization object if they are not provided (e.g. `nonce` and `chainId`).\n *\n * With the prepared Authorization object, you can use [`signAuthorization`](https://viem.sh/docs/eip7702/signAuthorization) to sign over the Authorization object.\n *\n * @param client - Client to use\n * @param parameters - {@link PrepareAuthorizationParameters}\n * @returns The prepared Authorization object. {@link PrepareAuthorizationReturnType}\n *\n * @example\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareAuthorization } from 'viem/experimental'\n *\n * const client = createClient({\n * chain: mainnet,\n * transport: http(),\n * })\n * const authorization = await prepareAuthorization(client, {\n * account: privateKeyToAccount('0x..'),\n * contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n *\n * @example\n * // Account Hoisting\n * import { createClient, http } from 'viem'\n * import { privateKeyToAccount } from 'viem/accounts'\n * import { mainnet } from 'viem/chains'\n * import { prepareAuthorization } from 'viem/experimental'\n *\n * const client = createClient({\n * account: privateKeyToAccount('0x…'),\n * chain: mainnet,\n * transport: http(),\n * })\n * const authorization = await prepareAuthorization(client, {\n * contractAddress: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',\n * })\n */\nexport async function prepareAuthorization(client, parameters) {\n const { account: account_ = client.account, chainId, nonce } = parameters;\n if (!account_)\n throw new AccountNotFoundError({\n docsPath: '/docs/eip7702/prepareAuthorization',\n });\n const account = parseAccount(account_);\n const executor = (() => {\n if (!parameters.executor)\n return undefined;\n if (parameters.executor === 'self')\n return parameters.executor;\n return parseAccount(parameters.executor);\n })();\n const authorization = {\n address: parameters.contractAddress ?? parameters.address,\n chainId,\n nonce,\n };\n if (typeof authorization.chainId === 'undefined')\n authorization.chainId =\n client.chain?.id ??\n (await getAction(client, getChainId, 'getChainId')({}));\n if (typeof authorization.nonce === 'undefined') {\n authorization.nonce = await getAction(client, getTransactionCount, 'getTransactionCount')({\n address: account.address,\n blockTag: 'pending',\n });\n if (executor === 'self' ||\n (executor?.address && isAddressEqual(executor.address, account.address)))\n authorization.nonce += 1;\n }\n return authorization;\n}\n//# sourceMappingURL=prepareAuthorization.js.map","import { BaseError } from './base.js';\nexport class UrlRequiredError extends BaseError {\n constructor() {\n super('No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.', {\n docsPath: '/docs/clients/intro',\n name: 'UrlRequiredError',\n });\n }\n}\n//# sourceMappingURL=transport.js.map","import { RpcRequestError } from '../../errors/request.js';\nimport { UrlRequiredError, } from '../../errors/transport.js';\nimport { createBatchScheduler } from '../../utils/promise/createBatchScheduler.js';\nimport { getHttpRpcClient, } from '../../utils/rpc/http.js';\nimport { createTransport, } from './createTransport.js';\n/**\n * @description Creates a HTTP transport that connects to a JSON-RPC API.\n */\nexport function http(\n/** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\nurl, config = {}) {\n const { batch, fetchFn, fetchOptions, key = 'http', methods, name = 'HTTP JSON-RPC', onFetchRequest, onFetchResponse, retryDelay, raw, } = config;\n return ({ chain, retryCount: retryCount_, timeout: timeout_ }) => {\n const { batchSize = 1000, wait = 0 } = typeof batch === 'object' ? batch : {};\n const retryCount = config.retryCount ?? retryCount_;\n const timeout = timeout_ ?? config.timeout ?? 10_000;\n const url_ = url || chain?.rpcUrls.default.http[0];\n if (!url_)\n throw new UrlRequiredError();\n const rpcClient = getHttpRpcClient(url_, {\n fetchFn,\n fetchOptions,\n onRequest: onFetchRequest,\n onResponse: onFetchResponse,\n timeout,\n });\n return createTransport({\n key,\n methods,\n name,\n async request({ method, params }) {\n const body = { method, params };\n const { schedule } = createBatchScheduler({\n id: url_,\n wait,\n shouldSplitBatch(requests) {\n return requests.length > batchSize;\n },\n fn: (body) => rpcClient.request({\n body,\n }),\n sort: (a, b) => a.id - b.id,\n });\n const fn = async (body) => batch\n ? schedule(body)\n : [\n await rpcClient.request({\n body,\n }),\n ];\n const [{ error, result }] = await fn(body);\n if (raw)\n return { error, result };\n if (error)\n throw new RpcRequestError({\n body,\n error,\n url: url_,\n });\n return result;\n },\n retryCount,\n retryDelay,\n timeout,\n type: 'http',\n }, {\n fetchOptions,\n url: url_,\n });\n };\n}\n//# sourceMappingURL=http.js.map","import { secp256k1 } from '@noble/curves/secp256k1';\nimport { numberToHex, } from '../../utils/encoding/toHex.js';\n/**\n * @description Parses a hex formatted signature into a structured signature.\n *\n * @param signatureHex Signature in hex format.\n * @returns The structured signature.\n *\n * @example\n * parseSignature('0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c')\n * // { r: '0x...', s: '0x...', v: 28n }\n */\nexport function parseSignature(signatureHex) {\n const { r, s } = secp256k1.Signature.fromCompact(signatureHex.slice(2, 130));\n const yParityOrV = Number(`0x${signatureHex.slice(130)}`);\n const [v, yParity] = (() => {\n if (yParityOrV === 0 || yParityOrV === 1)\n return [undefined, yParityOrV];\n if (yParityOrV === 27)\n return [BigInt(yParityOrV), 0];\n if (yParityOrV === 28)\n return [BigInt(yParityOrV), 1];\n throw new Error('Invalid yParityOrV value');\n })();\n if (typeof v !== 'undefined')\n return {\n r: numberToHex(r, { size: 32 }),\n s: numberToHex(s, { size: 32 }),\n v,\n yParity,\n };\n return {\n r: numberToHex(r, { size: 32 }),\n s: numberToHex(s, { size: 32 }),\n yParity,\n };\n}\n//# sourceMappingURL=parseSignature.js.map"],"names":["abi","keccak256","event","Bytes.size","Bytes.SizeOverflowError","size","Bytes.SizeExceedsPaddingSizeError","assert","from","fromHex","internal_hex.assertSize","Hex.padRight","internal.charCodeToBase16","Errors.BaseError","internal.assertSize","internal.pad","Hex.fromBytes","Hex.toBigInt","Hex.toNumber","internal.trim","validate","Json.stringify","stringify","transport","eventName","args","call","chainId","trim","receipts","hash","status","statusCode","result","toHex","res","extract","encodePacked","encode","InvalidAddressError","pad","integerRegex","bytesRegex","BytesSizeMismatchError","arrayRegex","LruMap","body","response","checksum","noble_keccak256","Bytes.from","Hex.validate","Bytes.validate","fromBytes","InvalidSerializedSizeError","x","Hex.slice","prefix","Hex.concat","Hex.fromNumber","Hex.size","Hex.from","Caches.checksum","Hash.keccak256","Bytes.fromString","PublicKey.toHex","AbiParameters.InvalidTypeError","wrap","Address.checksum","Bytes.slice","Bytes.toNumber","length","consumed","value","Bytes.toBoolean","Bytes.toBigInt","Bytes.toString","Bytes.trimLeft","Address.assert","Hex.padLeft","AbiParameters.InvalidArrayError","AbiParameters.ArrayLengthMismatchError","AbiParameters.BytesSizeMismatchError","Hex.fromBoolean","Hex.IntegerOutOfRangeError","Hex.fromString","Bytes.fromHex","Cursor.create","data","internal.decodeParameter","internal.prepareParameters","internal.encode","Solidity.integerRegex","Solidity.bytesRegex","Solidity.arrayRegex","abitype.parseAbiParameters","abitype.formatAbiParameters","Solidity.maxUint256","yParity","fromRpc","toTuple","Hex.trimLeft","Signature.extract","Rlp.fromHex","Signature.toTuple","Address.fromPublicKey","PublicKey.from","magicBytes","AbiParameters.from","InvalidWrappedSignatureError","Signature.assert","AbiParameters.decode","Authorization.from","Secp256k1.recoverAddress","Authorization.getSignPayload","Signature.from","AbiParameters.encode","block","BlockOverrides.toRpc","error","_a","Address.validate","abitype.parseAbiItem","fromAbi","abiItem","getSelector","internal.isArgOfType","internal.getAmbiguousTypes","abitype.formatAbiItem","internal.normalizeSignature","options","AbiItem.from","item","AbiItem.NotFoundError","abiFunction","AbiItem.fromAbi","AbiItem.getSelector","AbiConstructor.encode","AbiConstructor.from","AbiFunction.encodeData","AbiFunction.from","signature","SignatureErc8010.validate","recoverAddress","SignatureErc8010.unwrap","SignatureErc6492.validate","SignatureErc6492.wrap"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86]}