viem 0.0.1-alpha.15 → 0.0.1-alpha.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/dist/chains.js +6 -5
  2. package/dist/chains.js.map +1 -0
  3. package/dist/chains.mjs +2 -1
  4. package/dist/chains.mjs.map +1 -0
  5. package/dist/{chunk-KGXH5DYI.js → chunk-4XREGFHD.js} +12 -11
  6. package/dist/chunk-4XREGFHD.js.map +1 -0
  7. package/dist/{chunk-PPDHFNFM.mjs → chunk-B7A2CAHU.mjs} +3 -2
  8. package/dist/chunk-B7A2CAHU.mjs.map +1 -0
  9. package/dist/{chunk-QMLDI5JU.js → chunk-EWTLCB3N.js} +3 -1
  10. package/dist/chunk-EWTLCB3N.js.map +1 -0
  11. package/dist/{chunk-PHAG5KUF.mjs → chunk-KCMYVU3Z.mjs} +2 -1
  12. package/dist/chunk-KCMYVU3Z.mjs.map +1 -0
  13. package/dist/{chunk-2HENAFQN.mjs → chunk-KM6AFT2K.mjs} +3 -1
  14. package/dist/chunk-KM6AFT2K.mjs.map +1 -0
  15. package/dist/{chunk-IMYI7Z6M.js → chunk-LQXQPPTU.js} +14 -13
  16. package/dist/chunk-LQXQPPTU.js.map +1 -0
  17. package/dist/{chunk-SX7GPOCZ.mjs → chunk-TSJ3OOJW.mjs} +2 -1
  18. package/dist/chunk-TSJ3OOJW.mjs.map +1 -0
  19. package/dist/{chunk-NYXBQHNJ.mjs → chunk-U7QDLGQL.mjs} +2 -1
  20. package/dist/chunk-U7QDLGQL.mjs.map +1 -0
  21. package/dist/{chunk-HTYEJEWI.js → chunk-WTXKCAG7.js} +50 -49
  22. package/dist/chunk-WTXKCAG7.js.map +1 -0
  23. package/dist/{chunk-EMQSYKNY.js → chunk-XJKOJIX3.js} +12 -11
  24. package/dist/chunk-XJKOJIX3.js.map +1 -0
  25. package/dist/clients/index.js +4 -3
  26. package/dist/clients/index.js.map +1 -0
  27. package/dist/clients/index.mjs +3 -2
  28. package/dist/clients/index.mjs.map +1 -0
  29. package/dist/index.js +7 -6
  30. package/dist/index.js.map +1 -0
  31. package/dist/index.mjs +6 -5
  32. package/dist/index.mjs.map +1 -0
  33. package/dist/public.js +5 -4
  34. package/dist/public.js.map +1 -0
  35. package/dist/public.mjs +4 -3
  36. package/dist/public.mjs.map +1 -0
  37. package/dist/test.js +4 -3
  38. package/dist/test.js.map +1 -0
  39. package/dist/test.mjs +3 -2
  40. package/dist/test.mjs.map +1 -0
  41. package/dist/utils/index.js +3 -2
  42. package/dist/utils/index.js.map +1 -0
  43. package/dist/utils/index.mjs +2 -1
  44. package/dist/utils/index.mjs.map +1 -0
  45. package/dist/wallet.js +4 -3
  46. package/dist/wallet.js.map +1 -0
  47. package/dist/wallet.mjs +3 -2
  48. package/dist/wallet.mjs.map +1 -0
  49. package/dist/window.js +1 -1
  50. package/dist/window.js.map +1 -0
  51. package/dist/window.mjs +1 -0
  52. package/dist/window.mjs.map +1 -0
  53. package/package.json +3 -1
  54. package/src/_test/abis.ts +1225 -0
  55. package/src/_test/bench.ts +15 -0
  56. package/src/_test/constants.ts +63 -0
  57. package/src/_test/globalSetup.ts +11 -0
  58. package/src/_test/index.ts +20 -0
  59. package/src/_test/setup.ts +8 -0
  60. package/src/_test/utils.ts +112 -0
  61. package/src/actions/index.test.ts +72 -0
  62. package/src/actions/index.ts +156 -0
  63. package/src/actions/public/call.bench.ts +48 -0
  64. package/src/actions/public/call.test.ts +99 -0
  65. package/src/actions/public/call.ts +96 -0
  66. package/src/actions/public/callContract.bench.ts +24 -0
  67. package/src/actions/public/callContract.test.ts +285 -0
  68. package/src/actions/public/callContract.ts +80 -0
  69. package/src/actions/public/createBlockFilter.bench.ts +11 -0
  70. package/src/actions/public/createBlockFilter.test.ts +9 -0
  71. package/src/actions/public/createBlockFilter.ts +14 -0
  72. package/src/actions/public/createEventFilter.test.ts +245 -0
  73. package/src/actions/public/createEventFilter.ts +81 -0
  74. package/src/actions/public/createPendingTransactionFilter.bench.ts +11 -0
  75. package/src/actions/public/createPendingTransactionFilter.test.ts +9 -0
  76. package/src/actions/public/createPendingTransactionFilter.ts +14 -0
  77. package/src/actions/public/deployContract.test.ts +56 -0
  78. package/src/actions/public/deployContract.ts +39 -0
  79. package/src/actions/public/estimateGas.bench.ts +46 -0
  80. package/src/actions/public/estimateGas.test.ts +92 -0
  81. package/src/actions/public/estimateGas.ts +61 -0
  82. package/src/actions/public/getBalance.test.ts +83 -0
  83. package/src/actions/public/getBalance.ts +37 -0
  84. package/src/actions/public/getBlock.bench.ts +28 -0
  85. package/src/actions/public/getBlock.test.ts +575 -0
  86. package/src/actions/public/getBlock.ts +66 -0
  87. package/src/actions/public/getBlockNumber.bench.ts +28 -0
  88. package/src/actions/public/getBlockNumber.test.ts +27 -0
  89. package/src/actions/public/getBlockNumber.ts +32 -0
  90. package/src/actions/public/getBlockTransactionCount.bench.ts +15 -0
  91. package/src/actions/public/getBlockTransactionCount.test.ts +57 -0
  92. package/src/actions/public/getBlockTransactionCount.ts +53 -0
  93. package/src/actions/public/getBytecode.test.ts +27 -0
  94. package/src/actions/public/getBytecode.ts +32 -0
  95. package/src/actions/public/getChainId.bench.ts +15 -0
  96. package/src/actions/public/getChainId.test.ts +8 -0
  97. package/src/actions/public/getChainId.ts +7 -0
  98. package/src/actions/public/getFeeHistory.bench.ts +18 -0
  99. package/src/actions/public/getFeeHistory.test.ts +137 -0
  100. package/src/actions/public/getFeeHistory.ts +44 -0
  101. package/src/actions/public/getFilterChanges.bench.ts +13 -0
  102. package/src/actions/public/getFilterChanges.test.ts +187 -0
  103. package/src/actions/public/getFilterChanges.ts +23 -0
  104. package/src/actions/public/getFilterLogs.test.ts +102 -0
  105. package/src/actions/public/getFilterLogs.ts +20 -0
  106. package/src/actions/public/getGasPrice.bench.ts +28 -0
  107. package/src/actions/public/getGasPrice.test.ts +8 -0
  108. package/src/actions/public/getGasPrice.ts +15 -0
  109. package/src/actions/public/getTransaction.bench.ts +33 -0
  110. package/src/actions/public/getTransaction.test.ts +311 -0
  111. package/src/actions/public/getTransaction.ts +96 -0
  112. package/src/actions/public/getTransactionConfirmations.test.ts +69 -0
  113. package/src/actions/public/getTransactionConfirmations.ts +39 -0
  114. package/src/actions/public/getTransactionCount.test.ts +56 -0
  115. package/src/actions/public/getTransactionCount.ts +34 -0
  116. package/src/actions/public/getTransactionReceipt.bench.ts +33 -0
  117. package/src/actions/public/getTransactionReceipt.test.ts +217 -0
  118. package/src/actions/public/getTransactionReceipt.ts +35 -0
  119. package/src/actions/public/index.test.ts +36 -0
  120. package/src/actions/public/index.ts +120 -0
  121. package/src/actions/public/uninstallFilter.bench.ts +13 -0
  122. package/src/actions/public/uninstallFilter.test.ts +65 -0
  123. package/src/actions/public/uninstallFilter.ts +17 -0
  124. package/src/actions/public/waitForTransactionReceipt.test.ts +322 -0
  125. package/src/actions/public/waitForTransactionReceipt.ts +171 -0
  126. package/src/actions/public/watchBlockNumber.test.ts +166 -0
  127. package/src/actions/public/watchBlockNumber.ts +79 -0
  128. package/src/actions/public/watchBlocks.test.ts +185 -0
  129. package/src/actions/public/watchBlocks.ts +95 -0
  130. package/src/actions/public/watchPendingTransactions.test.ts +116 -0
  131. package/src/actions/public/watchPendingTransactions.ts +73 -0
  132. package/src/actions/test/dropTransaction.test.ts +34 -0
  133. package/src/actions/test/dropTransaction.ts +17 -0
  134. package/src/actions/test/getAutomine.test.ts +14 -0
  135. package/src/actions/test/getAutomine.ts +11 -0
  136. package/src/actions/test/getTxpoolContent.test.ts +45 -0
  137. package/src/actions/test/getTxpoolContent.ts +7 -0
  138. package/src/actions/test/getTxpoolStatus.test.ts +41 -0
  139. package/src/actions/test/getTxpoolStatus.ts +12 -0
  140. package/src/actions/test/impersonateAccount.test.ts +28 -0
  141. package/src/actions/test/impersonateAccount.ts +17 -0
  142. package/src/actions/test/increaseTime.test.ts +18 -0
  143. package/src/actions/test/increaseTime.ts +17 -0
  144. package/src/actions/test/index.test.ts +38 -0
  145. package/src/actions/test/index.ts +77 -0
  146. package/src/actions/test/inspectTxpool.test.ts +50 -0
  147. package/src/actions/test/inspectTxpool.ts +7 -0
  148. package/src/actions/test/mine.test.ts +20 -0
  149. package/src/actions/test/mine.ts +16 -0
  150. package/src/actions/test/removeBlockTimestampInterval.test.ts +23 -0
  151. package/src/actions/test/removeBlockTimestampInterval.ts +7 -0
  152. package/src/actions/test/reset.test.ts +19 -0
  153. package/src/actions/test/reset.ts +18 -0
  154. package/src/actions/test/revert.test.ts +39 -0
  155. package/src/actions/test/revert.ts +14 -0
  156. package/src/actions/test/sendUnsignedTransaction.test.ts +52 -0
  157. package/src/actions/test/sendUnsignedTransaction.ts +19 -0
  158. package/src/actions/test/setAutomine.test.ts +14 -0
  159. package/src/actions/test/setAutomine.ts +8 -0
  160. package/src/actions/test/setBalance.test.ts +29 -0
  161. package/src/actions/test/setBalance.ts +20 -0
  162. package/src/actions/test/setBlockGasLimit.test.ts +21 -0
  163. package/src/actions/test/setBlockGasLimit.ts +17 -0
  164. package/src/actions/test/setBlockTimestampInterval.test.ts +23 -0
  165. package/src/actions/test/setBlockTimestampInterval.ts +16 -0
  166. package/src/actions/test/setCode.test.ts +26 -0
  167. package/src/actions/test/setCode.ts +19 -0
  168. package/src/actions/test/setCoinbase.test.ts +11 -0
  169. package/src/actions/test/setCoinbase.ts +17 -0
  170. package/src/actions/test/setIntervalMining.test.ts +30 -0
  171. package/src/actions/test/setIntervalMining.ts +16 -0
  172. package/src/actions/test/setLoggingEnabled.test.ts +10 -0
  173. package/src/actions/test/setLoggingEnabled.ts +8 -0
  174. package/src/actions/test/setMinGasPrice.test.ts +22 -0
  175. package/src/actions/test/setMinGasPrice.ts +17 -0
  176. package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +23 -0
  177. package/src/actions/test/setNextBlockBaseFeePerGas.ts +17 -0
  178. package/src/actions/test/setNextBlockTimestamp.test.ts +19 -0
  179. package/src/actions/test/setNextBlockTimestamp.ts +17 -0
  180. package/src/actions/test/setNonce.test.ts +28 -0
  181. package/src/actions/test/setNonce.ts +20 -0
  182. package/src/actions/test/setRpcUrl.test.ts +9 -0
  183. package/src/actions/test/setRpcUrl.ts +8 -0
  184. package/src/actions/test/setStorageAt.test.ts +36 -0
  185. package/src/actions/test/setStorageAt.ts +26 -0
  186. package/src/actions/test/snapshot.test.ts +18 -0
  187. package/src/actions/test/snapshot.ts +7 -0
  188. package/src/actions/test/stopImpersonatingAccount.test.ts +31 -0
  189. package/src/actions/test/stopImpersonatingAccount.ts +17 -0
  190. package/src/actions/wallet/addChain.test.ts +14 -0
  191. package/src/actions/wallet/addChain.ts +21 -0
  192. package/src/actions/wallet/getAccounts.test.ts +22 -0
  193. package/src/actions/wallet/getAccounts.ts +7 -0
  194. package/src/actions/wallet/getPermissions.test.ts +24 -0
  195. package/src/actions/wallet/getPermissions.ts +9 -0
  196. package/src/actions/wallet/index.test.ts +19 -0
  197. package/src/actions/wallet/index.ts +27 -0
  198. package/src/actions/wallet/requestAccounts.test.ts +13 -0
  199. package/src/actions/wallet/requestAccounts.ts +7 -0
  200. package/src/actions/wallet/requestPermissions.test.ts +26 -0
  201. package/src/actions/wallet/requestPermissions.ts +19 -0
  202. package/src/actions/wallet/sendTransaction.bench.ts +57 -0
  203. package/src/actions/wallet/sendTransaction.test.ts +440 -0
  204. package/src/actions/wallet/sendTransaction.ts +76 -0
  205. package/src/actions/wallet/signMessage.test.ts +62 -0
  206. package/src/actions/wallet/signMessage.ts +35 -0
  207. package/src/actions/wallet/switchChain.test.ts +22 -0
  208. package/src/actions/wallet/switchChain.ts +19 -0
  209. package/src/actions/wallet/watchAsset.test.ts +41 -0
  210. package/src/actions/wallet/watchAsset.ts +16 -0
  211. package/src/chains.test.ts +1134 -0
  212. package/src/chains.ts +167 -0
  213. package/src/clients/createClient.test.ts +295 -0
  214. package/src/clients/createClient.ts +81 -0
  215. package/src/clients/createPublicClient.test.ts +165 -0
  216. package/src/clients/createPublicClient.ts +49 -0
  217. package/src/clients/createTestClient.test.ts +145 -0
  218. package/src/clients/createTestClient.ts +72 -0
  219. package/src/clients/createWalletClient.test.ts +121 -0
  220. package/src/clients/createWalletClient.ts +54 -0
  221. package/src/clients/index.test.ts +19 -0
  222. package/src/clients/index.ts +31 -0
  223. package/src/clients/transports/createTransport.test.ts +58 -0
  224. package/src/clients/transports/createTransport.ts +48 -0
  225. package/src/clients/transports/custom.test.ts +98 -0
  226. package/src/clients/transports/custom.ts +34 -0
  227. package/src/clients/transports/fallback.test.ts +223 -0
  228. package/src/clients/transports/fallback.ts +48 -0
  229. package/src/clients/transports/http.test.ts +110 -0
  230. package/src/clients/transports/http.ts +51 -0
  231. package/src/clients/transports/index.test.ts +15 -0
  232. package/src/clients/transports/index.ts +17 -0
  233. package/src/clients/transports/webSocket.test.ts +164 -0
  234. package/src/clients/transports/webSocket.ts +117 -0
  235. package/src/constants.test.ts +27 -0
  236. package/src/constants.ts +18 -0
  237. package/src/errors/abi.test.ts +83 -0
  238. package/src/errors/abi.ts +238 -0
  239. package/src/errors/address.test.ts +14 -0
  240. package/src/errors/address.ts +9 -0
  241. package/src/errors/base.test.ts +72 -0
  242. package/src/errors/base.ts +57 -0
  243. package/src/errors/block.test.ts +24 -0
  244. package/src/errors/block.ts +18 -0
  245. package/src/errors/contract.ts +125 -0
  246. package/src/errors/data.ts +20 -0
  247. package/src/errors/encoding.ts +60 -0
  248. package/src/errors/index.ts +77 -0
  249. package/src/errors/log.ts +8 -0
  250. package/src/errors/request.test.ts +331 -0
  251. package/src/errors/request.ts +163 -0
  252. package/src/errors/rpc.test.ts +88 -0
  253. package/src/errors/rpc.ts +113 -0
  254. package/src/errors/transaction.test.ts +83 -0
  255. package/src/errors/transaction.ts +54 -0
  256. package/src/errors/transport.test.ts +12 -0
  257. package/src/errors/transport.ts +12 -0
  258. package/src/index.test.ts +208 -0
  259. package/src/index.ts +353 -0
  260. package/src/public.ts +80 -0
  261. package/src/test.ts +51 -0
  262. package/src/types/block.ts +71 -0
  263. package/src/types/contract.ts +327 -0
  264. package/src/types/eip1193.ts +1038 -0
  265. package/src/types/fee.ts +47 -0
  266. package/src/types/filter.ts +8 -0
  267. package/src/types/index.ts +72 -0
  268. package/src/types/log.ts +22 -0
  269. package/src/types/misc.ts +4 -0
  270. package/src/types/rpc.ts +35 -0
  271. package/src/types/transaction.ts +145 -0
  272. package/src/types/utils.ts +67 -0
  273. package/src/types/window.ts +9 -0
  274. package/src/utils/abi/decodeAbi.bench.ts +135 -0
  275. package/src/utils/abi/decodeAbi.test.ts +1615 -0
  276. package/src/utils/abi/decodeAbi.ts +296 -0
  277. package/src/utils/abi/decodeDeployData.test.ts +159 -0
  278. package/src/utils/abi/decodeDeployData.ts +41 -0
  279. package/src/utils/abi/decodeErrorResult.test.ts +130 -0
  280. package/src/utils/abi/decodeErrorResult.ts +28 -0
  281. package/src/utils/abi/decodeFunctionData.test.ts +140 -0
  282. package/src/utils/abi/decodeFunctionData.ts +29 -0
  283. package/src/utils/abi/decodeFunctionResult.test.ts +262 -0
  284. package/src/utils/abi/decodeFunctionResult.ts +53 -0
  285. package/src/utils/abi/encodeAbi.bench.ts +163 -0
  286. package/src/utils/abi/encodeAbi.test.ts +1414 -0
  287. package/src/utils/abi/encodeAbi.ts +258 -0
  288. package/src/utils/abi/encodeDeployData.test.ts +131 -0
  289. package/src/utils/abi/encodeDeployData.ts +37 -0
  290. package/src/utils/abi/encodeErrorResult.test.ts +197 -0
  291. package/src/utils/abi/encodeErrorResult.ts +40 -0
  292. package/src/utils/abi/encodeEventTopics.test.ts +348 -0
  293. package/src/utils/abi/encodeEventTopics.ts +69 -0
  294. package/src/utils/abi/encodeFunctionData.test.ts +140 -0
  295. package/src/utils/abi/encodeFunctionData.ts +38 -0
  296. package/src/utils/abi/encodeFunctionResult.test.ts +284 -0
  297. package/src/utils/abi/encodeFunctionResult.ts +39 -0
  298. package/src/utils/abi/formatAbiItemWithArgs.test.ts +291 -0
  299. package/src/utils/abi/formatAbiItemWithArgs.ts +27 -0
  300. package/src/utils/abi/formatAbiItemWithParams.test.ts +335 -0
  301. package/src/utils/abi/formatAbiItemWithParams.ts +41 -0
  302. package/src/utils/abi/getAbiItem.ts +5 -0
  303. package/src/utils/abi/index.test.ts +23 -0
  304. package/src/utils/abi/index.ts +38 -0
  305. package/src/utils/address/getAddress.bench.ts +22 -0
  306. package/src/utils/address/getAddress.test.ts +46 -0
  307. package/src/utils/address/getAddress.ts +28 -0
  308. package/src/utils/address/getContractAddress.bench.ts +20 -0
  309. package/src/utils/address/getContractAddress.test.ts +78 -0
  310. package/src/utils/address/getContractAddress.ts +59 -0
  311. package/src/utils/address/index.test.ts +17 -0
  312. package/src/utils/address/index.ts +16 -0
  313. package/src/utils/address/isAddress.test.ts +10 -0
  314. package/src/utils/address/isAddress.ts +10 -0
  315. package/src/utils/address/isAddressEqual.test.ts +55 -0
  316. package/src/utils/address/isAddressEqual.ts +6 -0
  317. package/src/utils/buildRequest.test.ts +365 -0
  318. package/src/utils/buildRequest.ts +45 -0
  319. package/src/utils/contract/extractFunctionParts.test.ts +109 -0
  320. package/src/utils/contract/extractFunctionParts.ts +27 -0
  321. package/src/utils/contract/getContractError.test.ts +97 -0
  322. package/src/utils/contract/getContractError.ts +70 -0
  323. package/src/utils/contract/index.test.ts +15 -0
  324. package/src/utils/contract/index.ts +8 -0
  325. package/src/utils/data/concat.test.ts +35 -0
  326. package/src/utils/data/concat.ts +34 -0
  327. package/src/utils/data/index.test.ts +23 -0
  328. package/src/utils/data/index.ts +13 -0
  329. package/src/utils/data/isBytes.test.ts +9 -0
  330. package/src/utils/data/isBytes.ts +7 -0
  331. package/src/utils/data/isHex.test.ts +13 -0
  332. package/src/utils/data/isHex.ts +5 -0
  333. package/src/utils/data/pad.bench.ts +39 -0
  334. package/src/utils/data/pad.test.ts +367 -0
  335. package/src/utils/data/pad.ts +53 -0
  336. package/src/utils/data/size.test.ts +18 -0
  337. package/src/utils/data/size.ts +13 -0
  338. package/src/utils/data/slice.test.ts +203 -0
  339. package/src/utils/data/slice.ts +60 -0
  340. package/src/utils/data/trim.bench.ts +50 -0
  341. package/src/utils/data/trim.test.ts +175 -0
  342. package/src/utils/data/trim.ts +33 -0
  343. package/src/utils/encoding/decodeBytes.bench.ts +40 -0
  344. package/src/utils/encoding/decodeBytes.test.ts +144 -0
  345. package/src/utils/encoding/decodeBytes.ts +63 -0
  346. package/src/utils/encoding/decodeHex.bench.ts +24 -0
  347. package/src/utils/encoding/decodeHex.test.ts +167 -0
  348. package/src/utils/encoding/decodeHex.ts +76 -0
  349. package/src/utils/encoding/decodeRlp.bench.ts +34 -0
  350. package/src/utils/encoding/decodeRlp.test.ts +350 -0
  351. package/src/utils/encoding/decodeRlp.ts +121 -0
  352. package/src/utils/encoding/encodeBytes.bench.ts +41 -0
  353. package/src/utils/encoding/encodeBytes.test.ts +676 -0
  354. package/src/utils/encoding/encodeBytes.ts +59 -0
  355. package/src/utils/encoding/encodeHex.bench.ts +60 -0
  356. package/src/utils/encoding/encodeHex.test.ts +232 -0
  357. package/src/utils/encoding/encodeHex.ts +104 -0
  358. package/src/utils/encoding/encodeRlp.bench.ts +54 -0
  359. package/src/utils/encoding/encodeRlp.test.ts +254 -0
  360. package/src/utils/encoding/encodeRlp.ts +48 -0
  361. package/src/utils/encoding/index.test.ts +32 -0
  362. package/src/utils/encoding/index.ts +36 -0
  363. package/src/utils/formatters/block.bench.ts +51 -0
  364. package/src/utils/formatters/block.test.ts +115 -0
  365. package/src/utils/formatters/block.ts +36 -0
  366. package/src/utils/formatters/extract.test.ts +14 -0
  367. package/src/utils/formatters/extract.ts +18 -0
  368. package/src/utils/formatters/feeHistory.test.ts +66 -0
  369. package/src/utils/formatters/feeHistory.ts +12 -0
  370. package/src/utils/formatters/format.test.ts +93 -0
  371. package/src/utils/formatters/format.ts +53 -0
  372. package/src/utils/formatters/index.test.ts +17 -0
  373. package/src/utils/formatters/index.ts +24 -0
  374. package/src/utils/formatters/log.test.ts +79 -0
  375. package/src/utils/formatters/log.ts +12 -0
  376. package/src/utils/formatters/transaction.test.ts +271 -0
  377. package/src/utils/formatters/transaction.ts +51 -0
  378. package/src/utils/formatters/transactionReceipt.bench.ts +73 -0
  379. package/src/utils/formatters/transactionReceipt.test.ts +151 -0
  380. package/src/utils/formatters/transactionReceipt.ts +54 -0
  381. package/src/utils/formatters/transactionRequest.bench.ts +29 -0
  382. package/src/utils/formatters/transactionRequest.test.ts +237 -0
  383. package/src/utils/formatters/transactionRequest.ts +47 -0
  384. package/src/utils/hash/getEventSignature.test.ts +61 -0
  385. package/src/utils/hash/getEventSignature.ts +4 -0
  386. package/src/utils/hash/getFunctionSignature.test.ts +22 -0
  387. package/src/utils/hash/getFunctionSignature.ts +5 -0
  388. package/src/utils/hash/hashFunction.test.ts +65 -0
  389. package/src/utils/hash/hashFunction.ts +12 -0
  390. package/src/utils/hash/index.test.ts +13 -0
  391. package/src/utils/hash/index.ts +5 -0
  392. package/src/utils/hash/keccak256.test.ts +59 -0
  393. package/src/utils/hash/keccak256.ts +23 -0
  394. package/src/utils/index.test.ts +87 -0
  395. package/src/utils/index.ts +126 -0
  396. package/src/utils/observe.test.ts +176 -0
  397. package/src/utils/observe.ts +66 -0
  398. package/src/utils/poll.test.ts +127 -0
  399. package/src/utils/poll.ts +42 -0
  400. package/src/utils/promise/index.test.ts +14 -0
  401. package/src/utils/promise/index.ts +3 -0
  402. package/src/utils/promise/withCache.test.ts +97 -0
  403. package/src/utils/promise/withCache.ts +73 -0
  404. package/src/utils/promise/withRetry.test.ts +231 -0
  405. package/src/utils/promise/withRetry.ts +61 -0
  406. package/src/utils/promise/withTimeout.test.ts +37 -0
  407. package/src/utils/promise/withTimeout.ts +39 -0
  408. package/src/utils/rpc.test.ts +992 -0
  409. package/src/utils/rpc.ts +292 -0
  410. package/src/utils/stringify.test.ts +13 -0
  411. package/src/utils/stringify.ts +5 -0
  412. package/src/utils/uid.ts +14 -0
  413. package/src/utils/unit/formatEther.test.ts +75 -0
  414. package/src/utils/unit/formatEther.ts +6 -0
  415. package/src/utils/unit/formatGwei.test.ts +32 -0
  416. package/src/utils/unit/formatGwei.ts +6 -0
  417. package/src/utils/unit/formatUnit.bench.ts +26 -0
  418. package/src/utils/unit/formatUnit.test.ts +40 -0
  419. package/src/utils/unit/formatUnit.ts +16 -0
  420. package/src/utils/unit/index.test.ts +16 -0
  421. package/src/utils/unit/index.ts +6 -0
  422. package/src/utils/unit/parseEther.test.ts +126 -0
  423. package/src/utils/unit/parseEther.ts +6 -0
  424. package/src/utils/unit/parseGwei.test.ts +50 -0
  425. package/src/utils/unit/parseGwei.ts +6 -0
  426. package/src/utils/unit/parseUnit.bench.ts +26 -0
  427. package/src/utils/unit/parseUnit.test.ts +54 -0
  428. package/src/utils/unit/parseUnit.ts +27 -0
  429. package/src/utils/wait.ts +3 -0
  430. package/src/wallet.ts +23 -0
  431. package/src/window.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/clients/transports/createTransport.ts","../src/clients/transports/custom.ts","../src/clients/transports/fallback.ts","../src/clients/transports/http.ts","../src/clients/transports/webSocket.ts","../src/utils/uid.ts","../src/clients/createClient.ts","../src/clients/createPublicClient.ts","../src/clients/createTestClient.ts","../src/clients/createWalletClient.ts"],"sourcesContent":["import type { Chain } from '../../chains'\nimport type { Requests } from '../../types/eip1193'\n\nexport type BaseRpcRequests = {\n request(...args: any): Promise<any>\n}\n\nexport type TransportConfig<\n TType extends string = string,\n TRequests extends BaseRpcRequests['request'] = Requests['request'],\n> = {\n /** The name of the transport. */\n name: string\n /** The key of the transport. */\n key: string\n /** The JSON-RPC request function that matches the EIP-1193 request spec. */\n request: TRequests\n /** The type of the transport. */\n type: TType\n}\n\nexport type Transport<\n TType extends string = string,\n TRpcAttributes = Record<string, any>,\n> = <TChain extends Chain = Chain>({\n chain,\n}: {\n chain?: TChain\n}) => {\n config: TransportConfig<TType>\n value?: TRpcAttributes\n}\n\n/**\n * @description Creates an transport intended to be used with a client.\n */\nexport function createTransport<\n TType extends string = string,\n TRpcAttributes = any,\n>(\n config: TransportConfig<TType>,\n value?: TRpcAttributes,\n): ReturnType<Transport<TType, TRpcAttributes>> {\n return {\n config,\n value,\n }\n}\n","import type {\n BaseRpcRequests,\n Transport,\n TransportConfig,\n} from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype EthereumProvider = { request: BaseRpcRequests['request'] }\n\nexport type CustomTransportConfig = {\n /** The key of the transport. */\n key?: TransportConfig['key']\n /** The name of the transport. */\n name?: TransportConfig['name']\n}\n\nexport type CustomTransport = Transport<'custom', EthereumProvider['request']>\n\n/**\n * @description Creates a custom transport given an EIP-1193 compliant `request` attribute.\n */\nexport function custom<TProvider extends EthereumProvider>(\n /** An Ethereum provider with an EIP-1193 \"request\" attribute. */\n provider: TProvider,\n { key = 'custom', name = 'Custom Provider' }: CustomTransportConfig = {},\n): CustomTransport {\n return () =>\n createTransport({\n key,\n name,\n request: provider.request.bind(provider),\n type: 'custom',\n })\n}\n","import type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type FallbackTransportConfig = {\n /** The key of the Fallback transport. */\n key?: TransportConfig['key']\n /** The name of the Fallback transport. */\n name?: TransportConfig['name']\n}\n\nexport type FallbackTransport = Transport<\n 'fallback',\n { transports: Transport[] }\n>\n\nexport function fallback(\n transports: Transport[],\n { key = 'fallback', name = 'Fallback' }: FallbackTransportConfig = {},\n): FallbackTransport {\n return ({ chain }) =>\n createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const fetch = async (i: number = 0): Promise<any> => {\n const transport = transports[i]({ chain })\n try {\n return await transport.config.request({\n method,\n params,\n } as any)\n } catch (err) {\n if (i < transports.length - 1) return fetch(i + 1)\n throw err\n }\n }\n return fetch()\n },\n type: 'fallback',\n },\n {\n transports: transports.map(\n (fn) => fn({ chain }) as unknown as Transport,\n ),\n },\n )\n}\n","import { UrlRequiredError } from '../../errors'\nimport { rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\nexport type HttpTransportConfig = {\n /** The key of the HTTP transport. */\n key?: TransportConfig['key']\n /** The name of the HTTP transport. */\n name?: TransportConfig['name']\n}\n\nexport type HttpTransport = Transport<\n 'http',\n {\n url?: string\n }\n>\n\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. */\n url?: string,\n { key = 'http', name = 'HTTP JSON-RPC' }: HttpTransportConfig = {},\n): HttpTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.http[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const { result } = await rpc.http(url_, {\n body: {\n method,\n params,\n },\n })\n return result\n },\n type: 'http',\n },\n {\n url,\n },\n )\n }\n}\n","import { UrlRequiredError } from '../../errors'\nimport type { Hash } from '../../types'\nimport type { RpcResponse } from '../../utils/rpc'\nimport { getSocket, rpc } from '../../utils/rpc'\nimport type { Transport, TransportConfig } from './createTransport'\nimport { createTransport } from './createTransport'\n\ntype WebSocketTransportSubscribeArgs = {\n onData: (data: RpcResponse) => void\n onError?: (error: any) => void\n}\n\ntype WebSocketTransportSubscribeResponse = {\n subscriptionId: Hash\n unsubscribe: () => Promise<RpcResponse<boolean>>\n}\n\ntype WebSocketTransportSubscribe = {\n subscribe(\n args: WebSocketTransportSubscribeArgs & {\n /**\n * @description Add information about compiled contracts\n * @link https://hardhat.org/hardhat-network/docs/reference#hardhat_addcompilationresult\n */\n params: ['newHeads']\n },\n ): Promise<WebSocketTransportSubscribeResponse>\n}\n\nexport type WebSocketTransportConfig = {\n /** The key of the WebSocket transport. */\n key?: TransportConfig['key']\n /** The name of the WebSocket transport. */\n name?: TransportConfig['name']\n}\n\nexport type WebSocketTransport = Transport<\n 'webSocket',\n {\n getSocket(): Promise<WebSocket>\n subscribe: WebSocketTransportSubscribe['subscribe']\n }\n>\n\n/**\n * @description Creates a WebSocket transport that connects to a JSON-RPC API.\n */\nexport function webSocket(\n /** URL of the JSON-RPC API. Defaults to the chain's public RPC URL. */\n url?: string,\n {\n key = 'webSocket',\n name = 'WebSocket JSON-RPC',\n }: WebSocketTransportConfig = {},\n): WebSocketTransport {\n return ({ chain }) => {\n const url_ = url || chain?.rpcUrls.default.webSocket?.[0]\n if (!url_) throw new UrlRequiredError()\n return createTransport(\n {\n key,\n name,\n async request({ method, params }) {\n const socket = await getSocket(url_)\n const { result } = await rpc.webSocketAsync(socket, {\n body: { method, params },\n })\n return result\n },\n type: 'webSocket',\n },\n {\n getSocket() {\n return getSocket(url_)\n },\n async subscribe({ params, onData, onError }: any) {\n const socket = await getSocket(url_)\n const { result: subscriptionId } = await new Promise<any>(\n (resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_subscribe',\n params,\n },\n onData: (data) => {\n if (typeof data.id === 'number') {\n resolve(data)\n return\n }\n onData(data)\n },\n onError: (error) => {\n reject(error)\n onError?.(error)\n },\n }),\n )\n return {\n subscriptionId,\n async unsubscribe() {\n return new Promise<any>((resolve, reject) =>\n rpc.webSocket(socket, {\n body: {\n method: 'eth_unsubscribe',\n params: [subscriptionId],\n },\n onData: resolve,\n onError: reject,\n }),\n )\n },\n }\n },\n },\n )\n }\n}\n","let size = 256\nlet index = size\nlet buffer: string\n\nexport function uid(length = 11) {\n if (!buffer || index + length > size * 2) {\n buffer = ''\n index = 0\n for (let i = 0; i < size; i++) {\n buffer += ((256 + Math.random() * 256) | 0).toString(16).substring(1)\n }\n }\n return buffer.substring(index, index++ + length)\n}\n","import type { Chain } from '../chains'\nimport type { Requests } from '../types/eip1193'\nimport { buildRequest } from '../utils/buildRequest'\nimport { uid } from '../utils/uid'\nimport type { BaseRpcRequests, Transport } from './transports/createTransport'\n\nexport type Client<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = {\n /** Chain for the client. */\n chain?: TChain\n /** A key for the client. */\n key: string\n /** A name for the client. */\n name: string\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval: number\n /** Request function wrapped with friendly error handling */\n request: TRequests['request']\n /** The RPC transport (http, webSocket, custom, etc) */\n transport: ReturnType<TTransport>['config'] & ReturnType<TTransport>['value']\n /** The type of client. */\n type: string\n /** A unique ID for the client. */\n uid: string\n}\n\nexport type ClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TRequests extends BaseRpcRequests = Requests,\n> = Partial<\n Pick<\n Client<TTransport, TChain, TRequests>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'type'\n >\n> & {\n transport: TTransport\n}\n\n/**\n * @description Creates a base RPC client with the given transport.\n *\n * - Intended to be used as a base for other RPC clients.\n * - Has access to _all_ EIP-1474 RPC methods.\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createClient, http } from 'viem/clients'\n * const client = createClient(http({ chain: mainnet }))\n */\nexport function createClient<\n TTransport extends Transport,\n TChain extends Chain,\n TRequests extends BaseRpcRequests,\n>({\n chain,\n key = 'base',\n name = 'Base Client',\n pollingInterval = 4_000,\n transport,\n type = 'base',\n}: ClientConfig<TTransport, TChain, TRequests>): Client<\n TTransport,\n TChain,\n TRequests\n> {\n const { config, value } = transport({ chain })\n return {\n chain,\n key,\n name,\n pollingInterval,\n request: buildRequest(config.request),\n transport: { ...config, ...value },\n type,\n uid: uid(),\n }\n}\n","import type { Chain } from '../chains'\nimport type { PublicRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\n\nexport type PublicClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Pick<\n ClientConfig<TTransport, TChain>,\n 'chain' | 'key' | 'name' | 'pollingInterval' | 'transport'\n>\n\nexport type PublicClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, PublicRequests>\n\n/**\n * @description Creates a public client with a given transport.\n *\n * - Only has access to \"public\" EIP-1474 RPC methods (ie. `eth_blockNumber`, etc).\n *\n * @example\n * import { mainnet } from 'viem/chains'\n * import { createPublicClient, http } from 'viem/clients'\n * const client = createPublicClient(http({ chain: mainnet }))\n */\nexport function createPublicClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n chain,\n key = 'public',\n name = 'Public Client',\n transport,\n pollingInterval,\n}: PublicClientConfig<TTransport, TChain>): PublicClient<TTransport, TChain> {\n chain\n return createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'publicClient',\n })\n}\n","import type { TestRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Chain } from '../chains'\n\ntype TestClientModes = 'anvil' | 'hardhat'\n\nexport type TestClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the client. */\n key?: ClientConfig['key']\n /** Mode of the test client. Available: \"anvil\" | \"hardhat\" */\n mode: TMode\n /** The name of the client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type TestClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n TMode extends TestClientModes = TestClientModes,\n> = Client<TTransport, TChain, TestRequests<TMode>> & {\n mode: TMode\n}\n\n/**\n * @description Creates a test client with a given transport.\n *\n * - Only has access to \"test\" RPC methods (ie. `anvil_setBalance`,\n * `evm_mine`, etc).\n *\n * @example\n * import { createTestClient, http } from 'viem'\n * import { local } from 'viem/chains'\n * const client = createTestClient({ chain: local, mode: 'anvil', transport: http() })\n */\nexport function createTestClient<\n TTransport extends Transport,\n TChain extends Chain,\n TMode extends TestClientModes,\n>({\n chain,\n key = 'test',\n name = 'Test Client',\n mode,\n pollingInterval,\n transport,\n}: TestClientConfig<TTransport, TChain, TMode>): TestClient<\n TTransport,\n TChain,\n TMode\n> {\n return {\n ...createClient({\n chain,\n key,\n name,\n pollingInterval,\n transport,\n type: 'testClient',\n }),\n mode,\n }\n}\n","import type { SignableRequests, WalletRequests } from '../types/eip1193'\nimport type { Transport } from './transports/createTransport'\nimport type { Client, ClientConfig } from './createClient'\nimport { createClient } from './createClient'\nimport type { Chain } from '../chains'\n\nexport type WalletClientConfig<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = {\n chain?: ClientConfig<TTransport, TChain>['chain']\n /** The key of the Wallet Client. */\n key?: ClientConfig['key']\n /** The name of the Wallet Client. */\n name?: ClientConfig['name']\n /** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */\n pollingInterval?: ClientConfig['pollingInterval']\n transport: ClientConfig<TTransport, TChain>['transport']\n}\n\nexport type WalletClient<\n TTransport extends Transport = Transport,\n TChain extends Chain = Chain,\n> = Client<TTransport, TChain, SignableRequests & WalletRequests>\n\n/**\n * @description Creates a wallet client with a given transport.\n *\n * - Only has access to \"wallet\" & \"signable\" EIP-1474 RPC methods\n * (ie. `eth_sendTransaction`, `eth_requestAccounts`, etc).\n *\n * @example\n * import { createWalletClient, custom } from 'viem'\n * const client = createWalletClient(\n * custom(window.ethereum)\n * )\n */\nexport function createWalletClient<\n TTransport extends Transport,\n TChain extends Chain,\n>({\n transport,\n key = 'wallet',\n name = 'Wallet Client',\n pollingInterval,\n}: WalletClientConfig<TTransport, TChain>): WalletClient<TTransport, TChain> {\n return createClient({\n key,\n name,\n pollingInterval,\n transport,\n type: 'walletClient',\n })\n}\n"],"mappings":"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","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  formatTransactionRequest,
3
3
  hexToNumber,
4
4
  numberToHex
5
- } from "./chunk-2HENAFQN.mjs";
5
+ } from "./chunk-KM6AFT2K.mjs";
6
6
 
7
7
  // src/actions/test/dropTransaction.ts
8
8
  async function dropTransaction(client, { hash }) {
@@ -253,3 +253,4 @@ export {
253
253
  snapshot,
254
254
  stopImpersonatingAccount
255
255
  };
256
+ //# sourceMappingURL=chunk-U7QDLGQL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/actions/test/dropTransaction.ts","../src/actions/test/getAutomine.ts","../src/actions/test/getTxpoolContent.ts","../src/actions/test/getTxpoolStatus.ts","../src/actions/test/impersonateAccount.ts","../src/actions/test/increaseTime.ts","../src/actions/test/inspectTxpool.ts","../src/actions/test/mine.ts","../src/actions/test/removeBlockTimestampInterval.ts","../src/actions/test/reset.ts","../src/actions/test/revert.ts","../src/actions/test/sendUnsignedTransaction.ts","../src/actions/test/setAutomine.ts","../src/actions/test/setBalance.ts","../src/actions/test/setBlockGasLimit.ts","../src/actions/test/setBlockTimestampInterval.ts","../src/actions/test/setCode.ts","../src/actions/test/setCoinbase.ts","../src/actions/test/setIntervalMining.ts","../src/actions/test/setLoggingEnabled.ts","../src/actions/test/setMinGasPrice.ts","../src/actions/test/setNextBlockBaseFeePerGas.ts","../src/actions/test/setNextBlockTimestamp.ts","../src/actions/test/setNonce.ts","../src/actions/test/setStorageAt.ts","../src/actions/test/snapshot.ts","../src/actions/test/stopImpersonatingAccount.ts"],"sourcesContent":["import type { TestClient } from '../../clients'\nimport type { Hash } from '../../types'\n\nexport type DropTransactionArgs = {\n /** The hash of the transaction to drop. */\n hash: Hash\n}\n\nexport async function dropTransaction(\n client: TestClient,\n { hash }: DropTransactionArgs,\n) {\n return await client.request({\n method: `${client.mode}_dropTransaction`,\n params: [hash],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type GetAutomineResponse = boolean\n\nexport async function getAutomine(\n client: TestClient,\n): Promise<GetAutomineResponse> {\n return await client.request({\n method: `${client.mode}_getAutomine`,\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function getTxpoolContent(client: TestClient) {\n return await client.request({\n method: 'txpool_content',\n })\n}\n","import type { TestClient } from '../../clients'\nimport { hexToNumber } from '../../utils'\n\nexport async function getTxpoolStatus(client: TestClient) {\n const { pending, queued } = await client.request({\n method: 'txpool_status',\n })\n return {\n pending: hexToNumber(pending),\n queued: hexToNumber(queued),\n }\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\n\nexport type ImpersonateAccountArgs = {\n /** The account to impersonate. */\n address: Address\n}\n\nexport async function impersonateAccount(\n client: TestClient,\n { address }: ImpersonateAccountArgs,\n) {\n return await client.request({\n method: `${client.mode}_impersonateAccount`,\n params: [address],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type IncreaseTimeArgs = {\n /** The amount of seconds to jump forward in time. */\n seconds: number\n}\n\nexport async function increaseTime(\n client: TestClient,\n { seconds }: IncreaseTimeArgs,\n) {\n return await client.request({\n method: 'evm_increaseTime',\n params: [numberToHex(seconds)],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function inspectTxpool(client: TestClient) {\n return await client.request({\n method: 'txpool_inspect',\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type MineArgs = {\n /** Number of blocks to mine. */\n blocks: number\n /** Interval between each block in seconds. */\n interval?: number\n}\n\nexport async function mine(client: TestClient, { blocks, interval }: MineArgs) {\n return await client.request({\n method: `${client.mode}_mine`,\n params: [numberToHex(blocks), numberToHex(interval || 0)],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function removeBlockTimestampInterval(client: TestClient) {\n return await client.request({\n method: `${client.mode}_removeBlockTimestampInterval`,\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type ResetArgs = {\n /** The block number to reset from. */\n blockNumber?: bigint\n /** The JSON RPC URL. */\n jsonRpcUrl?: string\n}\n\nexport async function reset(\n client: TestClient,\n { blockNumber, jsonRpcUrl }: ResetArgs = {},\n) {\n return await client.request({\n method: `${client.mode}_reset`,\n params: [{ forking: { blockNumber: Number(blockNumber), jsonRpcUrl } }],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Quantity } from '../../types'\n\nexport type RevertArgs = {\n /** The snapshot ID to revert to. */\n id: Quantity\n}\n\nexport async function revert(client: TestClient, { id }: RevertArgs) {\n return await client.request({\n method: 'evm_revert',\n params: [id],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Hash, TransactionRequest } from '../../types'\nimport { formatTransactionRequest } from '../../utils'\n\nexport type SendUnsignedTransactionArgs = TransactionRequest\n\nexport type SendUnsignedTransactionResponse = Hash\n\nexport async function sendUnsignedTransaction(\n client: TestClient,\n request: SendUnsignedTransactionArgs,\n): Promise<SendUnsignedTransactionResponse> {\n const request_ = formatTransactionRequest(request)\n const hash = await client.request({\n method: 'eth_sendUnsignedTransaction',\n params: [request_],\n })\n return hash\n}\n","import type { TestClient } from '../../clients'\n\nexport async function setAutomine(client: TestClient, enabled: boolean) {\n return await client.request({\n method: 'evm_setAutomine',\n params: [enabled],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SetBalanceArgs = {\n /** The account address. */\n address: Address\n /** Amount (in wei) to set */\n value: bigint\n}\n\nexport async function setBalance(\n client: TestClient,\n { address, value }: SetBalanceArgs,\n) {\n return await client.request({\n method: `${client.mode}_setBalance`,\n params: [address, numberToHex(value)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetBlockGasLimitArgs = {\n /** Gas limit (in wei). */\n gasLimit: bigint\n}\n\nexport async function setBlockGasLimit(\n client: TestClient,\n { gasLimit }: SetBlockGasLimitArgs,\n) {\n return await client.request({\n method: 'evm_setBlockGasLimit',\n params: [numberToHex(gasLimit)],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type SetBlockTimestampIntervalArgs = {\n /** The interval (in seconds). */\n interval: number\n}\n\nexport async function setBlockTimestampInterval(\n client: TestClient,\n { interval }: SetBlockTimestampIntervalArgs,\n) {\n return await client.request({\n method: `${client.mode}_setBlockTimestampInterval`,\n params: [interval],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address, Hex } from '../../types'\n\nexport type SetCodeArgs = {\n /** The account address. */\n address: Address\n /** The bytecode to set */\n bytecode: Hex\n}\n\nexport async function setCode(\n client: TestClient,\n { address, bytecode }: SetCodeArgs,\n) {\n return await client.request({\n method: `${client.mode}_setCode`,\n params: [address, bytecode],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\n\nexport type SetCoinbaseArgs = {\n /** The coinbase address. */\n address: Address\n}\n\nexport async function setCoinbase(\n client: TestClient,\n { address }: SetCoinbaseArgs,\n) {\n return await client.request({\n method: `${client.mode}_setCoinbase`,\n params: [address],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport type SetIntervalMiningArgs = {\n /** The mining interval. */\n interval: number\n}\n\nexport async function setIntervalMining(\n client: TestClient,\n { interval }: SetIntervalMiningArgs,\n) {\n return await client.request({\n method: 'evm_setIntervalMining',\n params: [interval],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function setLoggingEnabled(client: TestClient, enabled: boolean) {\n return await client.request({\n method: `${client.mode}_setLoggingEnabled`,\n params: [enabled],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetMinGasPriceArgs = {\n /** The gas price. */\n gasPrice: bigint\n}\n\nexport async function setMinGasPrice(\n client: TestClient,\n { gasPrice }: SetMinGasPriceArgs,\n) {\n return await client.request({\n method: `${client.mode}_setMinGasPrice`,\n params: [numberToHex(gasPrice)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetNextBlockBaseFeePerGasArgs = {\n /** Base fee per gas (in wei). */\n baseFeePerGas: bigint\n}\n\nexport async function setNextBlockBaseFeePerGas(\n client: TestClient,\n { baseFeePerGas }: SetNextBlockBaseFeePerGasArgs,\n) {\n return await client.request({\n method: `${client.mode}_setNextBlockBaseFeePerGas`,\n params: [numberToHex(baseFeePerGas)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport { numberToHex } from '../../utils'\n\nexport type SetNextBlockTimestampArgs = {\n /** The timestamp (in seconds). */\n timestamp: bigint\n}\n\nexport async function setNextBlockTimestamp(\n client: TestClient,\n { timestamp }: SetNextBlockTimestampArgs,\n) {\n return await client.request({\n method: 'evm_setNextBlockTimestamp',\n params: [numberToHex(timestamp)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SetNonceArgs = {\n /** The account address. */\n address: Address\n /** The nonce to set. */\n nonce: number\n}\n\nexport async function setNonce(\n client: TestClient,\n { address, nonce }: SetNonceArgs,\n) {\n return await client.request({\n method: `${client.mode}_setNonce`,\n params: [address, numberToHex(nonce)],\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address, Hash, Hex } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type SetStorageAtArgs = {\n /** The account address. */\n address: Address\n /** The storage slot (index). Can either be a number or hash value. */\n index: number | Hash\n /** The value to store as a 32 byte hex string. */\n value: Hex\n}\n\nexport async function setStorageAt(\n client: TestClient,\n { address, index, value }: SetStorageAtArgs,\n) {\n return await client.request({\n method: `${client.mode}_setStorageAt`,\n params: [\n address,\n typeof index === 'number' ? numberToHex(index) : index,\n value,\n ],\n })\n}\n","import type { TestClient } from '../../clients'\n\nexport async function snapshot(client: TestClient) {\n return await client.request({\n method: 'evm_snapshot',\n })\n}\n","import type { TestClient } from '../../clients'\nimport type { Address } from '../../types'\n\nexport type StopImpersonatingAccountArgs = {\n /** The account to impersonate. */\n address: Address\n}\n\nexport async function stopImpersonatingAccount(\n client: TestClient,\n { address }: StopImpersonatingAccountArgs,\n) {\n return await client.request({\n method: `${client.mode}_stopImpersonatingAccount`,\n params: [address],\n })\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunkKGXH5DYIjs = require('./chunk-KGXH5DYI.js');
3
+ var _chunk4XREGFHDjs = require('./chunk-4XREGFHD.js');
4
4
 
5
5
 
6
6
 
@@ -24,7 +24,7 @@ var _chunkKGXH5DYIjs = require('./chunk-KGXH5DYI.js');
24
24
 
25
25
 
26
26
 
27
- var _chunkQMLDI5JUjs = require('./chunk-QMLDI5JU.js');
27
+ var _chunkEWTLCB3Njs = require('./chunk-EWTLCB3N.js');
28
28
 
29
29
  // src/actions/public/call.ts
30
30
  async function call(client, {
@@ -44,10 +44,10 @@ async function call(client, {
44
44
  ...rest
45
45
  }) {
46
46
  if (maxFeePerGas !== void 0 && maxPriorityFeePerGas !== void 0 && maxFeePerGas < maxPriorityFeePerGas)
47
- throw new (0, _chunkQMLDI5JUjs.InvalidGasArgumentsError)();
48
- const blockNumberHex = blockNumber ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
47
+ throw new (0, _chunkEWTLCB3Njs.InvalidGasArgumentsError)();
48
+ const blockNumberHex = blockNumber ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
49
49
  const formatter = _optionalChain([chain, 'optionalAccess', _ => _.formatters, 'optionalAccess', _2 => _2.transactionRequest]);
50
- const request_ = _chunkQMLDI5JUjs.format.call(void 0,
50
+ const request_ = _chunkEWTLCB3Njs.format.call(void 0,
51
51
  {
52
52
  from,
53
53
  accessList,
@@ -59,10 +59,10 @@ async function call(client, {
59
59
  nonce,
60
60
  to,
61
61
  value,
62
- ..._chunkQMLDI5JUjs.extract.call(void 0, rest, { formatter })
62
+ ..._chunkEWTLCB3Njs.extract.call(void 0, rest, { formatter })
63
63
  },
64
64
  {
65
- formatter: formatter || _chunkQMLDI5JUjs.formatTransactionRequest
65
+ formatter: formatter || _chunkEWTLCB3Njs.formatTransactionRequest
66
66
  }
67
67
  );
68
68
  const response = await client.request({
@@ -82,7 +82,7 @@ async function callContract(client, {
82
82
  functionName,
83
83
  ...callRequest
84
84
  }) {
85
- const calldata = _chunkQMLDI5JUjs.encodeFunctionData.call(void 0, {
85
+ const calldata = _chunkEWTLCB3Njs.encodeFunctionData.call(void 0, {
86
86
  abi,
87
87
  args,
88
88
  functionName
@@ -93,13 +93,13 @@ async function callContract(client, {
93
93
  to: address,
94
94
  ...callRequest
95
95
  });
96
- return _chunkQMLDI5JUjs.decodeFunctionResult.call(void 0, {
96
+ return _chunkEWTLCB3Njs.decodeFunctionResult.call(void 0, {
97
97
  abi,
98
98
  functionName,
99
99
  data: data || "0x"
100
100
  });
101
101
  } catch (err) {
102
- throw _chunkQMLDI5JUjs.getContractError.call(void 0, err, {
102
+ throw _chunkEWTLCB3Njs.getContractError.call(void 0, err, {
103
103
  abi,
104
104
  address,
105
105
  args,
@@ -127,12 +127,12 @@ async function createBlockFilter(client) {
127
127
 
128
128
  // src/actions/public/deployContract.ts
129
129
  function deployContract(walletClient, { abi, args, bytecode, ...request }) {
130
- const calldata = _chunkQMLDI5JUjs.encodeDeployData.call(void 0, {
130
+ const calldata = _chunkEWTLCB3Njs.encodeDeployData.call(void 0, {
131
131
  abi,
132
132
  args,
133
133
  bytecode
134
134
  });
135
- return _chunkKGXH5DYIjs.sendTransaction.call(void 0, walletClient, {
135
+ return _chunk4XREGFHDjs.sendTransaction.call(void 0, walletClient, {
136
136
  ...request,
137
137
  data: calldata
138
138
  });
@@ -151,16 +151,16 @@ async function estimateGas(client, {
151
151
  to,
152
152
  value
153
153
  }) {
154
- const blockNumberHex = blockNumber ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
154
+ const blockNumberHex = blockNumber ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
155
155
  const parameters = {
156
156
  data,
157
157
  from,
158
- gas: gas ? _chunkQMLDI5JUjs.numberToHex.call(void 0, gas) : void 0,
159
- gasPrice: gasPrice ? _chunkQMLDI5JUjs.numberToHex.call(void 0, gasPrice) : void 0,
160
- maxFeePerGas: maxFeePerGas ? _chunkQMLDI5JUjs.numberToHex.call(void 0, maxFeePerGas) : void 0,
161
- maxPriorityFeePerGas: maxPriorityFeePerGas ? _chunkQMLDI5JUjs.numberToHex.call(void 0, maxPriorityFeePerGas) : void 0,
158
+ gas: gas ? _chunkEWTLCB3Njs.numberToHex.call(void 0, gas) : void 0,
159
+ gasPrice: gasPrice ? _chunkEWTLCB3Njs.numberToHex.call(void 0, gasPrice) : void 0,
160
+ maxFeePerGas: maxFeePerGas ? _chunkEWTLCB3Njs.numberToHex.call(void 0, maxFeePerGas) : void 0,
161
+ maxPriorityFeePerGas: maxPriorityFeePerGas ? _chunkEWTLCB3Njs.numberToHex.call(void 0, maxPriorityFeePerGas) : void 0,
162
162
  to,
163
- value: value ? _chunkQMLDI5JUjs.numberToHex.call(void 0, value) : void 0
163
+ value: value ? _chunkEWTLCB3Njs.numberToHex.call(void 0, value) : void 0
164
164
  };
165
165
  const balance = await client.request({
166
166
  method: "eth_estimateGas",
@@ -171,7 +171,7 @@ async function estimateGas(client, {
171
171
 
172
172
  // src/actions/public/getBalance.ts
173
173
  async function getBalance(client, { address, blockNumber, blockTag = "latest" }) {
174
- const blockNumberHex = blockNumber ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
174
+ const blockNumberHex = blockNumber ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
175
175
  const balance = await client.request({
176
176
  method: "eth_getBalance",
177
177
  params: [address, blockNumberHex || blockTag]
@@ -186,7 +186,7 @@ async function getBlock(client, {
186
186
  blockTag = "latest",
187
187
  includeTransactions = false
188
188
  } = {}) {
189
- const blockNumberHex = blockNumber !== void 0 ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
189
+ const blockNumberHex = blockNumber !== void 0 ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
190
190
  let block = null;
191
191
  if (blockHash) {
192
192
  block = await client.request({
@@ -200,19 +200,19 @@ async function getBlock(client, {
200
200
  });
201
201
  }
202
202
  if (!block)
203
- throw new (0, _chunkQMLDI5JUjs.BlockNotFoundError)({ blockHash, blockNumber });
204
- return _chunkQMLDI5JUjs.format.call(void 0, block, {
205
- formatter: _optionalChain([client, 'access', _3 => _3.chain, 'optionalAccess', _4 => _4.formatters, 'optionalAccess', _5 => _5.block]) || _chunkQMLDI5JUjs.formatBlock
203
+ throw new (0, _chunkEWTLCB3Njs.BlockNotFoundError)({ blockHash, blockNumber });
204
+ return _chunkEWTLCB3Njs.format.call(void 0, block, {
205
+ formatter: _optionalChain([client, 'access', _3 => _3.chain, 'optionalAccess', _4 => _4.formatters, 'optionalAccess', _5 => _5.block]) || _chunkEWTLCB3Njs.formatBlock
206
206
  });
207
207
  }
208
208
 
209
209
  // src/actions/public/getBlockNumber.ts
210
210
  var cacheKey = (id) => `blockNumber.${id}`;
211
211
  function getBlockNumberCache(id) {
212
- return _chunkQMLDI5JUjs.getCache.call(void 0, cacheKey(id));
212
+ return _chunkEWTLCB3Njs.getCache.call(void 0, cacheKey(id));
213
213
  }
214
214
  async function getBlockNumber(client, { maxAge = client.pollingInterval } = {}) {
215
- const blockNumberHex = await _chunkQMLDI5JUjs.withCache.call(void 0,
215
+ const blockNumberHex = await _chunkEWTLCB3Njs.withCache.call(void 0,
216
216
  () => client.request({
217
217
  method: "eth_blockNumber"
218
218
  }),
@@ -227,7 +227,7 @@ async function getBlockTransactionCount(client, {
227
227
  blockNumber,
228
228
  blockTag = "latest"
229
229
  } = {}) {
230
- const blockNumberHex = blockNumber !== void 0 ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
230
+ const blockNumberHex = blockNumber !== void 0 ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
231
231
  let count = null;
232
232
  if (blockHash) {
233
233
  count = await client.request({
@@ -240,12 +240,12 @@ async function getBlockTransactionCount(client, {
240
240
  params: [blockNumberHex || blockTag]
241
241
  });
242
242
  }
243
- return _chunkQMLDI5JUjs.hexToNumber.call(void 0, count);
243
+ return _chunkEWTLCB3Njs.hexToNumber.call(void 0, count);
244
244
  }
245
245
 
246
246
  // src/actions/public/getBytecode.ts
247
247
  async function getBytecode(client, { address, blockNumber, blockTag = "latest" }) {
248
- const blockNumberHex = blockNumber !== void 0 ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
248
+ const blockNumberHex = blockNumber !== void 0 ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
249
249
  const hex = await client.request({
250
250
  method: "eth_getCode",
251
251
  params: [address, blockNumberHex || blockTag]
@@ -258,7 +258,7 @@ async function getBytecode(client, { address, blockNumber, blockTag = "latest" }
258
258
  // src/actions/public/getChainId.ts
259
259
  async function getChainId(client) {
260
260
  const chainIdHex = await client.request({ method: "eth_chainId" });
261
- return _chunkQMLDI5JUjs.hexToNumber.call(void 0, chainIdHex);
261
+ return _chunkEWTLCB3Njs.hexToNumber.call(void 0, chainIdHex);
262
262
  }
263
263
 
264
264
  // src/actions/public/getFeeHistory.ts
@@ -268,16 +268,16 @@ async function getFeeHistory(client, {
268
268
  blockTag = "latest",
269
269
  rewardPercentiles
270
270
  }) {
271
- const blockNumberHex = blockNumber ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
271
+ const blockNumberHex = blockNumber ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
272
272
  const feeHistory = await client.request({
273
273
  method: "eth_feeHistory",
274
274
  params: [
275
- _chunkQMLDI5JUjs.numberToHex.call(void 0, blockCount),
275
+ _chunkEWTLCB3Njs.numberToHex.call(void 0, blockCount),
276
276
  blockNumberHex || blockTag,
277
277
  rewardPercentiles
278
278
  ]
279
279
  });
280
- return _chunkQMLDI5JUjs.formatFeeHistory.call(void 0, feeHistory);
280
+ return _chunkEWTLCB3Njs.formatFeeHistory.call(void 0, feeHistory);
281
281
  }
282
282
 
283
283
  // src/actions/public/getFilterChanges.ts
@@ -287,7 +287,7 @@ async function getFilterChanges(client, { filter }) {
287
287
  params: [filter.id]
288
288
  });
289
289
  return logs.map(
290
- (log) => typeof log === "string" ? log : _chunkQMLDI5JUjs.formatLog.call(void 0, log)
290
+ (log) => typeof log === "string" ? log : _chunkEWTLCB3Njs.formatLog.call(void 0, log)
291
291
  );
292
292
  }
293
293
 
@@ -297,7 +297,7 @@ async function getFilterLogs(client, { filter }) {
297
297
  method: "eth_getFilterLogs",
298
298
  params: [filter.id]
299
299
  });
300
- return logs.map(_chunkQMLDI5JUjs.formatLog);
300
+ return logs.map(_chunkEWTLCB3Njs.formatLog);
301
301
  }
302
302
 
303
303
  // src/actions/public/getGasPrice.ts
@@ -316,7 +316,7 @@ async function getTransaction(client, {
316
316
  hash,
317
317
  index
318
318
  }) {
319
- const blockNumberHex = blockNumber !== void 0 ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : void 0;
319
+ const blockNumberHex = blockNumber !== void 0 ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : void 0;
320
320
  let transaction = null;
321
321
  if (hash) {
322
322
  transaction = await client.request({
@@ -326,24 +326,24 @@ async function getTransaction(client, {
326
326
  } else if (blockHash) {
327
327
  transaction = await client.request({
328
328
  method: "eth_getTransactionByBlockHashAndIndex",
329
- params: [blockHash, _chunkQMLDI5JUjs.numberToHex.call(void 0, index)]
329
+ params: [blockHash, _chunkEWTLCB3Njs.numberToHex.call(void 0, index)]
330
330
  });
331
331
  } else if (blockNumberHex || blockTag) {
332
332
  transaction = await client.request({
333
333
  method: "eth_getTransactionByBlockNumberAndIndex",
334
- params: [blockNumberHex || blockTag, _chunkQMLDI5JUjs.numberToHex.call(void 0, index)]
334
+ params: [blockNumberHex || blockTag, _chunkEWTLCB3Njs.numberToHex.call(void 0, index)]
335
335
  });
336
336
  }
337
337
  if (!transaction)
338
- throw new (0, _chunkQMLDI5JUjs.TransactionNotFoundError)({
338
+ throw new (0, _chunkEWTLCB3Njs.TransactionNotFoundError)({
339
339
  blockHash,
340
340
  blockNumber,
341
341
  blockTag,
342
342
  hash,
343
343
  index
344
344
  });
345
- return _chunkQMLDI5JUjs.format.call(void 0, transaction, {
346
- formatter: _optionalChain([client, 'access', _6 => _6.chain, 'optionalAccess', _7 => _7.formatters, 'optionalAccess', _8 => _8.transaction]) || _chunkQMLDI5JUjs.formatTransaction
345
+ return _chunkEWTLCB3Njs.format.call(void 0, transaction, {
346
+ formatter: _optionalChain([client, 'access', _6 => _6.chain, 'optionalAccess', _7 => _7.formatters, 'optionalAccess', _8 => _8.transaction]) || _chunkEWTLCB3Njs.formatTransaction
347
347
  });
348
348
  }
349
349
 
@@ -363,9 +363,9 @@ async function getTransactionConfirmations(client, { hash, transactionReceipt })
363
363
  async function getTransactionCount(client, { address, blockTag = "latest", blockNumber }) {
364
364
  const count = await client.request({
365
365
  method: "eth_getTransactionCount",
366
- params: [address, blockNumber ? _chunkQMLDI5JUjs.numberToHex.call(void 0, blockNumber) : blockTag]
366
+ params: [address, blockNumber ? _chunkEWTLCB3Njs.numberToHex.call(void 0, blockNumber) : blockTag]
367
367
  });
368
- return _chunkQMLDI5JUjs.hexToNumber.call(void 0, count);
368
+ return _chunkEWTLCB3Njs.hexToNumber.call(void 0, count);
369
369
  }
370
370
 
371
371
  // src/actions/public/getTransactionReceipt.ts
@@ -375,9 +375,9 @@ async function getTransactionReceipt(client, { hash }) {
375
375
  params: [hash]
376
376
  });
377
377
  if (!receipt)
378
- throw new (0, _chunkQMLDI5JUjs.TransactionReceiptNotFoundError)({ hash });
379
- return _chunkQMLDI5JUjs.format.call(void 0, receipt, {
380
- formatter: _optionalChain([client, 'access', _11 => _11.chain, 'optionalAccess', _12 => _12.formatters, 'optionalAccess', _13 => _13.transactionReceipt]) || _chunkQMLDI5JUjs.formatTransactionReceipt
378
+ throw new (0, _chunkEWTLCB3Njs.TransactionReceiptNotFoundError)({ hash });
379
+ return _chunkEWTLCB3Njs.format.call(void 0, receipt, {
380
+ formatter: _optionalChain([client, 'access', _11 => _11.chain, 'optionalAccess', _12 => _12.formatters, 'optionalAccess', _13 => _13.transactionReceipt]) || _chunkEWTLCB3Njs.formatTransactionReceipt
381
381
  });
382
382
  }
383
383
 
@@ -440,12 +440,12 @@ function poll(fn, { emitOnBegin, initialWaitTime, interval }) {
440
440
  if (emitOnBegin)
441
441
  data = await fn({ unpoll: unwatch });
442
442
  const initialWait = await _asyncNullishCoalesce(await _optionalChain([initialWaitTime, 'optionalCall', _17 => _17(data)]), async () => ( interval));
443
- await _chunkQMLDI5JUjs.wait.call(void 0, initialWait);
443
+ await _chunkEWTLCB3Njs.wait.call(void 0, initialWait);
444
444
  const poll2 = async () => {
445
445
  if (!active)
446
446
  return;
447
447
  await fn({ unpoll: unwatch });
448
- await _chunkQMLDI5JUjs.wait.call(void 0, interval);
448
+ await _chunkEWTLCB3Njs.wait.call(void 0, interval);
449
449
  poll2();
450
450
  };
451
451
  poll2();
@@ -626,7 +626,7 @@ async function waitForTransactionReceipt(client, {
626
626
  return new Promise((resolve, reject) => {
627
627
  if (timeout)
628
628
  setTimeout(
629
- () => reject(new (0, _chunkQMLDI5JUjs.WaitForTransactionReceiptTimeoutError)({ hash })),
629
+ () => reject(new (0, _chunkEWTLCB3Njs.WaitForTransactionReceiptTimeoutError)({ hash })),
630
630
  timeout
631
631
  );
632
632
  const unobserve = observe(
@@ -656,7 +656,7 @@ async function waitForTransactionReceipt(client, {
656
656
  return;
657
657
  done(() => emit.resolve(receipt));
658
658
  } catch (err) {
659
- if (transaction && (err instanceof _chunkQMLDI5JUjs.TransactionNotFoundError || err instanceof _chunkQMLDI5JUjs.TransactionReceiptNotFoundError)) {
659
+ if (transaction && (err instanceof _chunkEWTLCB3Njs.TransactionNotFoundError || err instanceof _chunkEWTLCB3Njs.TransactionReceiptNotFoundError)) {
660
660
  replacedTransaction = transaction;
661
661
  const block = await getBlock(client, {
662
662
  blockNumber,
@@ -727,3 +727,4 @@ async function waitForTransactionReceipt(client, {
727
727
 
728
728
 
729
729
  exports.call = call; exports.callContract = callContract; exports.createPendingTransactionFilter = createPendingTransactionFilter; exports.createBlockFilter = createBlockFilter; exports.deployContract = deployContract; exports.estimateGas = estimateGas; exports.getBalance = getBalance; exports.getBlock = getBlock; exports.getBlockNumberCache = getBlockNumberCache; exports.getBlockNumber = getBlockNumber; exports.getBlockTransactionCount = getBlockTransactionCount; exports.getBytecode = getBytecode; exports.getChainId = getChainId; exports.getFeeHistory = getFeeHistory; exports.getFilterChanges = getFilterChanges; exports.getFilterLogs = getFilterLogs; exports.getGasPrice = getGasPrice; exports.getTransaction = getTransaction; exports.getTransactionConfirmations = getTransactionConfirmations; exports.getTransactionCount = getTransactionCount; exports.getTransactionReceipt = getTransactionReceipt; exports.uninstallFilter = uninstallFilter; exports.waitForTransactionReceipt = waitForTransactionReceipt; exports.watchBlockNumber = watchBlockNumber; exports.watchBlocks = watchBlocks; exports.watchPendingTransactions = watchPendingTransactions;
730
+ //# sourceMappingURL=chunk-WTXKCAG7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/actions/public/call.ts","../src/actions/public/callContract.ts","../src/actions/public/createPendingTransactionFilter.ts","../src/actions/public/createBlockFilter.ts","../src/actions/public/deployContract.ts","../src/actions/public/estimateGas.ts","../src/actions/public/getBalance.ts","../src/actions/public/getBlock.ts","../src/actions/public/getBlockNumber.ts","../src/actions/public/getBlockTransactionCount.ts","../src/actions/public/getBytecode.ts","../src/actions/public/getChainId.ts","../src/actions/public/getFeeHistory.ts","../src/actions/public/getFilterChanges.ts","../src/actions/public/getFilterLogs.ts","../src/actions/public/getGasPrice.ts","../src/actions/public/getTransaction.ts","../src/actions/public/getTransactionConfirmations.ts","../src/actions/public/getTransactionCount.ts","../src/actions/public/getTransactionReceipt.ts","../src/actions/public/uninstallFilter.ts","../src/utils/observe.ts","../src/utils/poll.ts","../src/actions/public/watchBlockNumber.ts","../src/actions/public/watchBlocks.ts","../src/actions/public/watchPendingTransactions.ts","../src/actions/public/waitForTransactionReceipt.ts"],"names":["listeners","cleanup","poll","block"],"mappings":"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","sourcesContent":["import type { Chain, Formatter } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport { InvalidGasArgumentsError } from '../../errors'\nimport type {\n Address,\n BlockTag,\n Hex,\n MergeIntersectionProperties,\n TransactionRequest,\n} from '../../types'\nimport { extract, Formatted, TransactionRequestFormatter } from '../../utils'\nimport { format, formatTransactionRequest, numberToHex } from '../../utils'\n\nexport type FormattedCall<\n TFormatter extends Formatter | undefined = Formatter,\n> = MergeIntersectionProperties<\n Formatted<TFormatter, TransactionRequest, true>,\n TransactionRequest\n>\n\nexport type CallArgs<TChain extends Chain = Chain> = FormattedCall<\n TransactionRequestFormatter<TChain>\n> & {\n chain?: TChain\n from?: Address\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag\n }\n )\n\nexport type CallResponse = { data: Hex | undefined }\n\nexport async function call<TChain extends Chain>(\n client: PublicClient,\n {\n blockNumber,\n blockTag = 'latest',\n chain,\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n ...rest\n }: CallArgs<TChain>,\n): Promise<CallResponse> {\n if (\n maxFeePerGas !== undefined &&\n maxPriorityFeePerGas !== undefined &&\n maxFeePerGas < maxPriorityFeePerGas\n )\n throw new InvalidGasArgumentsError()\n\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n\n const formatter = chain?.formatters?.transactionRequest\n const request_ = format(\n {\n from,\n accessList,\n data,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n nonce,\n to,\n value,\n // Pick out extra data that might exist on the chain's transaction request type.\n ...extract(rest, { formatter }),\n } as TransactionRequest,\n {\n formatter: formatter || formatTransactionRequest,\n },\n )\n\n const response = await client.request({\n method: 'eth_call',\n params: [request_, blockNumberHex || blockTag],\n })\n if (response === '0x') return { data: undefined }\n return { data: response }\n}\n","import { Abi } from 'abitype'\n\nimport type { Chain, Formatter } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport type {\n Address,\n ExtractArgsFromAbi,\n ExtractResultFromAbi,\n ExtractFunctionNameFromAbi,\n GetValue,\n} from '../../types'\nimport {\n EncodeFunctionDataArgs,\n decodeFunctionResult,\n encodeFunctionData,\n getContractError,\n} from '../../utils'\nimport { call, CallArgs, FormattedCall } from './call'\n\nexport type FormattedCallContract<\n TFormatter extends Formatter | undefined = Formatter,\n> = FormattedCall<TFormatter>\n\nexport type CallContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = any,\n> = Omit<CallArgs<TChain>, 'from' | 'to' | 'data' | 'value'> & {\n address: Address\n abi: TAbi\n from?: Address\n functionName: ExtractFunctionNameFromAbi<TAbi, TFunctionName>\n value?: GetValue<TAbi, TFunctionName, CallArgs<TChain>['value']>\n} & ExtractArgsFromAbi<TAbi, TFunctionName>\n\nexport type CallContractResponse<\n TAbi extends Abi | readonly unknown[] = Abi,\n TFunctionName extends string = string,\n> = ExtractResultFromAbi<TAbi, TFunctionName>\n\nexport async function callContract<\n TChain extends Chain,\n TAbi extends Abi = Abi,\n TFunctionName extends string = any,\n>(\n client: PublicClient,\n {\n abi,\n address,\n args,\n functionName,\n ...callRequest\n }: CallContractArgs<TChain, TAbi, TFunctionName>,\n): Promise<CallContractResponse<TAbi, TFunctionName>> {\n const calldata = encodeFunctionData({\n abi,\n args,\n functionName,\n } as unknown as EncodeFunctionDataArgs<TAbi, TFunctionName>)\n try {\n const { data } = await call(client, {\n data: calldata,\n to: address,\n ...callRequest,\n } as unknown as CallArgs<TChain>)\n return decodeFunctionResult({\n abi,\n functionName,\n data: data || '0x',\n }) as CallContractResponse<TAbi, TFunctionName>\n } catch (err) {\n throw getContractError(err, {\n abi,\n address,\n args,\n functionName,\n sender: callRequest.from,\n })\n }\n}\n","import type { PublicClient } from '../../clients'\n\nimport type { Filter } from '../../types'\n\nexport type CreatePendingTransactionFilterResponse = Filter<'transaction'>\n\nexport async function createPendingTransactionFilter(\n client: PublicClient,\n): Promise<CreatePendingTransactionFilterResponse> {\n const id = await client.request({\n method: 'eth_newPendingTransactionFilter',\n })\n return { id, type: 'transaction' }\n}\n","import type { PublicClient } from '../../clients'\n\nimport type { Filter } from '../../types'\n\nexport type CreateBlockFilterResponse = Filter<'block'>\n\nexport async function createBlockFilter(\n client: PublicClient,\n): Promise<CreateBlockFilterResponse> {\n const id = await client.request({\n method: 'eth_newBlockFilter',\n })\n return { id, type: 'block' }\n}\n","import { Abi } from 'abitype'\nimport { Chain } from '../../chains'\nimport { WalletClient } from '../../clients'\n\nimport { ExtractConstructorArgsFromAbi, Hex } from '../../types'\nimport { encodeDeployData } from '../../utils'\nimport {\n sendTransaction,\n SendTransactionArgs,\n SendTransactionResponse,\n} from '../wallet'\n\nexport type DeployContractArgs<\n TChain extends Chain = Chain,\n TAbi extends Abi = Abi,\n> = Omit<\n SendTransactionArgs<TChain>,\n 'accessList' | 'to' | 'data' | 'value'\n> & {\n abi: TAbi\n bytecode: Hex\n} & ExtractConstructorArgsFromAbi<TAbi>\n\nexport type DeployContractResponse = SendTransactionResponse\n\nexport function deployContract<TChain extends Chain, TAbi extends Abi = Abi>(\n walletClient: WalletClient,\n { abi, args, bytecode, ...request }: DeployContractArgs<TChain, TAbi>,\n): Promise<DeployContractResponse> {\n const calldata = encodeDeployData({\n abi,\n args,\n bytecode,\n } as unknown as DeployContractArgs<TChain, TAbi>)\n return sendTransaction(walletClient, {\n ...request,\n data: calldata,\n } as unknown as SendTransactionArgs<TChain>)\n}\n","import type { PublicClient } from '../../clients'\nimport type {\n BlockTag,\n EstimateGasParameters,\n RpcEstimateGasParameters,\n} from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type EstimateGasArgs = EstimateGasParameters &\n (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag\n }\n )\n\nexport type EstimateGasResponse = bigint\n\n/**\n * @description Estimates the gas necessary to complete a transaction without submitting it to the network.\n */\nexport async function estimateGas(\n client: PublicClient,\n {\n blockNumber,\n blockTag = 'latest',\n data,\n from,\n gas,\n gasPrice,\n maxFeePerGas,\n maxPriorityFeePerGas,\n to,\n value,\n }: EstimateGasArgs,\n): Promise<EstimateGasResponse> {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n const parameters = {\n data,\n from,\n gas: gas ? numberToHex(gas) : undefined,\n gasPrice: gasPrice ? numberToHex(gasPrice) : undefined,\n maxFeePerGas: maxFeePerGas ? numberToHex(maxFeePerGas) : undefined,\n maxPriorityFeePerGas: maxPriorityFeePerGas\n ? numberToHex(maxPriorityFeePerGas)\n : undefined,\n to,\n value: value ? numberToHex(value) : undefined,\n } as RpcEstimateGasParameters\n const balance = await client.request({\n method: 'eth_estimateGas',\n params: [parameters, blockNumberHex || blockTag],\n })\n return BigInt(balance)\n}\n","import type { PublicClient } from '../../clients'\nimport type { Address, BlockTag } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type GetBalanceArgs = {\n /** The address of the account. */\n address: Address\n} & (\n | {\n /** The balance of the account at a block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The balance of the account at a block tag. */\n blockTag?: BlockTag\n }\n)\n\nexport type GetBalanceResponse = bigint\n\n/**\n * @description Returns the balance of an address in wei.\n */\nexport async function getBalance(\n client: PublicClient,\n { address, blockNumber, blockTag = 'latest' }: GetBalanceArgs,\n): Promise<GetBalanceResponse> {\n const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined\n\n const balance = await client.request({\n method: 'eth_getBalance',\n params: [address, blockNumberHex || blockTag],\n })\n return BigInt(balance)\n}\n","import type { Chain } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport { BlockNotFoundError } from '../../errors'\nimport type { BlockTag, Hash, RpcBlock } from '../../types'\nimport type { BlockFormatter, FormattedBlock } from '../../utils'\nimport { format, formatBlock, numberToHex } from '../../utils'\n\nexport type GetBlockArgs = {\n /** Whether or not to include transaction data in the response. */\n includeTransactions?: boolean\n} & (\n | {\n /** Hash of the block. */\n blockHash?: Hash\n blockNumber?: never\n blockTag?: never\n }\n | {\n blockHash?: never\n /** The block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockHash?: never\n blockNumber?: never\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag\n }\n)\n\nexport type GetBlockResponse<TChain extends Chain = Chain> = FormattedBlock<\n BlockFormatter<TChain>\n>\n\nexport async function getBlock<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n blockHash,\n blockNumber,\n blockTag = 'latest',\n includeTransactions = false,\n }: GetBlockArgs = {},\n): Promise<GetBlockResponse<TChain>> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let block: RpcBlock | null = null\n if (blockHash) {\n block = await client.request({\n method: 'eth_getBlockByHash',\n params: [blockHash, includeTransactions],\n })\n } else {\n block = await client.request({\n method: 'eth_getBlockByNumber',\n params: [blockNumberHex || blockTag, includeTransactions],\n })\n }\n\n if (!block) throw new BlockNotFoundError({ blockHash, blockNumber })\n\n return format(block, {\n formatter: client.chain?.formatters?.block || formatBlock,\n })\n}\n","import type { PublicClient } from '../../clients'\nimport { getCache, withCache } from '../../utils/promise'\n\nexport type GetBlockNumberArgs = {\n /** The maximum age (in ms) of the cached value. */\n maxAge?: number\n}\n\nexport type GetBlockNumberResponse = bigint\n\nconst cacheKey = (id: string) => `blockNumber.${id}`\n\nexport function getBlockNumberCache(id: string) {\n return getCache(cacheKey(id))\n}\n\n/**\n * @description Returns the number of the most recent block seen.\n */\nexport async function getBlockNumber(\n client: PublicClient,\n { maxAge = client.pollingInterval }: GetBlockNumberArgs = {},\n): Promise<GetBlockNumberResponse> {\n const blockNumberHex = await withCache(\n () =>\n client.request({\n method: 'eth_blockNumber',\n }),\n { cacheKey: cacheKey(client.uid), maxAge },\n )\n return BigInt(blockNumberHex)\n}\n","import type { Chain } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport type { BlockTag, Hash, Quantity } from '../../types'\nimport { hexToNumber, numberToHex } from '../../utils'\n\nexport type GetBlockTransactionCountArgs =\n | {\n /** Hash of the block. */\n blockHash?: Hash\n blockNumber?: never\n blockTag?: never\n }\n | {\n blockHash?: never\n /** The block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockHash?: never\n blockNumber?: never\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag\n }\n\nexport type GetBlockTransactionCountResponse = number\n\nexport async function getBlockTransactionCount<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n blockHash,\n blockNumber,\n blockTag = 'latest',\n }: GetBlockTransactionCountArgs = {},\n): Promise<GetBlockTransactionCountResponse> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let count: Quantity | null = null\n if (blockHash) {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByHash',\n params: [blockHash],\n })\n } else {\n count = await client.request({\n method: 'eth_getBlockTransactionCountByNumber',\n params: [blockNumberHex || blockTag],\n })\n }\n\n return hexToNumber(count)\n}\n","import { PublicClient } from '../../clients'\nimport { Address, BlockTag, Hex } from '../../types'\nimport { numberToHex } from '../../utils'\n\nexport type GetBytecodeArgs = {\n address: Address\n} & (\n | {\n blockNumber?: never\n blockTag?: BlockTag\n }\n | {\n blockNumber?: bigint\n blockTag?: never\n }\n)\n\nexport type GetBytecodeResponse = Hex | undefined\n\nexport async function getBytecode(\n client: PublicClient,\n { address, blockNumber, blockTag = 'latest' }: GetBytecodeArgs,\n): Promise<GetBytecodeResponse> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n const hex = await client.request({\n method: 'eth_getCode',\n params: [address, blockNumberHex || blockTag],\n })\n if (hex === '0x') return undefined\n return hex\n}\n","import type { PublicClient } from '../../clients'\nimport { hexToNumber } from '../../utils'\n\nexport async function getChainId(client: PublicClient) {\n const chainIdHex = await client.request({ method: 'eth_chainId' })\n return hexToNumber(chainIdHex)\n}\n","import type { PublicClient } from '../../clients'\nimport type { BlockTag, FeeHistory } from '../../types'\n\nimport { numberToHex } from '../../utils'\nimport { formatFeeHistory } from '../../utils/formatters'\n\nexport type GetFeeHistoryArgs = {\n blockCount: number\n rewardPercentiles: number[]\n} & (\n | {\n blockNumber?: never\n blockTag?: BlockTag\n }\n | {\n blockNumber?: bigint\n blockTag?: never\n }\n)\nexport type GetFeeHistoryResponse = FeeHistory\n\n/**\n * @description Returns a collection of historical gas information.\n */\nexport async function getFeeHistory(\n client: PublicClient,\n {\n blockCount,\n blockNumber,\n blockTag = 'latest',\n rewardPercentiles,\n }: GetFeeHistoryArgs,\n): Promise<GetFeeHistoryResponse> {\n const blockNumberHex = blockNumber ? 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 })\n return formatFeeHistory(feeHistory)\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter, FilterType, Hash, Log } from '../../types'\n\nimport { formatLog } from '../../utils/formatters/log'\n\nexport type GetFilterChangesArgs<TFilterType extends FilterType> = {\n filter: Filter<TFilterType>\n}\nexport type GetFilterChangesResponse<TFilterType extends FilterType> =\n TFilterType extends 'event' ? Log[] : Hash[]\n\nexport async function getFilterChanges<TFilterType extends FilterType>(\n client: PublicClient,\n { filter }: GetFilterChangesArgs<TFilterType>,\n) {\n const logs = await client.request({\n method: 'eth_getFilterChanges',\n params: [filter.id],\n })\n return logs.map((log) =>\n typeof log === 'string' ? log : formatLog(log),\n ) as GetFilterChangesResponse<TFilterType>\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter, FilterType, Hash, Log } from '../../types'\n\nimport { formatLog } from '../../utils/formatters/log'\n\nexport type GetFilterLogsArgs = {\n filter: Filter<'event'>\n}\nexport type GetFilterLogsResponse = Log[]\n\nexport async function getFilterLogs<TFilterType extends FilterType>(\n client: PublicClient,\n { filter }: GetFilterLogsArgs,\n): Promise<GetFilterLogsResponse> {\n const logs = await client.request({\n method: 'eth_getFilterLogs',\n params: [filter.id],\n })\n return logs.map(formatLog)\n}\n","import type { PublicClient } from '../../clients'\n\nexport type GetGasPriceResponse = bigint\n\n/**\n * @description Returns the current price of gas (in wei).\n */\nexport async function getGasPrice(\n client: PublicClient,\n): Promise<GetGasPriceResponse> {\n const gasPrice = await client.request({\n method: 'eth_gasPrice',\n })\n return BigInt(gasPrice)\n}\n","import type { Chain } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport { TransactionNotFoundError } from '../../errors'\nimport type { BlockTag, Hash, RpcTransaction } from '../../types'\nimport { format, numberToHex } from '../../utils'\nimport type {\n FormattedTransaction,\n TransactionFormatter,\n} from '../../utils/formatters/transaction'\nimport { formatTransaction } from '../../utils/formatters/transaction'\n\nexport type GetTransactionArgs =\n | {\n /** The block hash */\n blockHash: Hash\n blockNumber?: never\n blockTag?: never\n hash?: never\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: never\n /** The block number */\n blockNumber: bigint\n blockTag?: never\n hash?: never\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: never\n blockNumber?: never\n /** The block tag. */\n blockTag: BlockTag\n hash?: never\n /** The index of the transaction on the block. */\n index: number\n }\n | {\n blockHash?: never\n blockNumber?: never\n blockTag?: never\n /** The hash of the transaction. */\n hash: Hash\n index?: number\n }\n\nexport type GetTransactionResponse<TChain extends Chain = Chain> =\n FormattedTransaction<TransactionFormatter<TChain>>\n\n/** @description Returns information about a transaction given a hash or block identifier. */\nexport async function getTransaction<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n blockHash,\n blockNumber,\n blockTag = 'latest',\n hash,\n index,\n }: GetTransactionArgs,\n): Promise<GetTransactionResponse<TChain>> {\n const blockNumberHex =\n blockNumber !== undefined ? numberToHex(blockNumber) : undefined\n\n let transaction: RpcTransaction | null = null\n if (hash) {\n transaction = await client.request({\n method: 'eth_getTransactionByHash',\n params: [hash],\n })\n } else if (blockHash) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockHashAndIndex',\n params: [blockHash, numberToHex(index)],\n })\n } else if (blockNumberHex || blockTag) {\n transaction = await client.request({\n method: 'eth_getTransactionByBlockNumberAndIndex',\n params: [blockNumberHex || blockTag, numberToHex(index)],\n })\n }\n\n if (!transaction)\n throw new TransactionNotFoundError({\n blockHash,\n blockNumber,\n blockTag,\n hash,\n index,\n })\n\n return format(transaction, {\n formatter: client.chain?.formatters?.transaction || formatTransaction,\n })\n}\n","import type { Chain } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport type { Hash } from '../../types'\nimport type {\n FormattedTransactionReceipt,\n TransactionReceiptFormatter,\n} from '../../utils'\nimport { getBlockNumber } from './getBlockNumber'\nimport { getTransaction } from './getTransaction'\n\nexport type GetTransactionConfirmationsArgs<TChain extends Chain> =\n | {\n /** The transaction hash. */\n hash: Hash\n transactionReceipt?: never\n }\n | {\n hash?: never\n /** The transaction receipt. */\n transactionReceipt: FormattedTransactionReceipt<\n TransactionReceiptFormatter<TChain>\n >\n }\n\nexport type GetTransactionConfirmationsResponse = bigint\n\nexport async function getTransactionConfirmations<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n { hash, transactionReceipt }: GetTransactionConfirmationsArgs<TChain>,\n): Promise<GetTransactionConfirmationsResponse> {\n const [blockNumber, transaction] = await Promise.all([\n getBlockNumber(client),\n hash ? getTransaction(client, { hash }) : undefined,\n ])\n const transactionBlockNumber =\n transactionReceipt?.blockNumber || transaction?.blockNumber\n if (!transactionBlockNumber) return 0n\n return blockNumber - transactionBlockNumber! + 1n\n}\n","import type { PublicClient } from '../../clients'\nimport type { Address, BlockTag } from '../../types'\nimport { hexToNumber, numberToHex } from '../../utils'\n\nexport type GetTransactionCountArgs = {\n /** The account address. */\n address: Address\n} & (\n | {\n /** The block number. */\n blockNumber?: bigint\n blockTag?: never\n }\n | {\n blockNumber?: never\n /** The block tag. Defaults to 'latest'. */\n blockTag?: BlockTag\n }\n)\nexport type GetTransactionCountResponse = number\n\n/**\n * @description Returns the number of transactions an account has broadcast / sent.\n */\nexport async function getTransactionCount(\n client: PublicClient,\n { address, blockTag = 'latest', blockNumber }: GetTransactionCountArgs,\n): Promise<GetTransactionCountResponse> {\n const count = await client.request({\n method: 'eth_getTransactionCount',\n params: [address, blockNumber ? numberToHex(blockNumber) : blockTag],\n })\n return hexToNumber(count)\n}\n","import type { Chain } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport { TransactionReceiptNotFoundError } from '../../errors'\nimport type { Hash } from '../../types'\nimport { format } from '../../utils'\nimport type {\n FormattedTransactionReceipt,\n TransactionReceiptFormatter,\n} from '../../utils/formatters/transactionReceipt'\nimport { formatTransactionReceipt } from '../../utils/formatters/transactionReceipt'\n\nexport type GetTransactionReceiptArgs = {\n /** The hash of the transaction. */\n hash: Hash\n}\n\nexport type GetTransactionReceiptResponse<TChain extends Chain = Chain> =\n FormattedTransactionReceipt<TransactionReceiptFormatter<TChain>>\n\nexport async function getTransactionReceipt<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n { hash }: GetTransactionReceiptArgs,\n) {\n const receipt = await client.request({\n method: 'eth_getTransactionReceipt',\n params: [hash],\n })\n\n if (!receipt) throw new TransactionReceiptNotFoundError({ hash })\n\n return format(receipt, {\n formatter:\n client.chain?.formatters?.transactionReceipt || formatTransactionReceipt,\n }) as GetTransactionReceiptResponse<TChain>\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter } from '../../types'\n\nexport type UninstallFilterArgs = {\n filter: Filter<any>\n}\nexport type UninstallFilterResponse = boolean\n\nexport async function uninstallFilter(\n client: PublicClient,\n { filter }: UninstallFilterArgs,\n): Promise<UninstallFilterResponse> {\n return client.request({\n method: 'eth_uninstallFilter',\n params: [filter.id],\n })\n}\n","import type { MaybePromise } from '../types/utils'\n\ntype Callback = ((...args: any[]) => any) | undefined\ntype Callbacks = Record<string, Callback>\n\nconst listenersCache = new Map<string, { id: number; fns: Callbacks }[]>()\nconst cleanupCache = new Map<string, () => void>()\n\ntype EmitFunction<TCallbacks extends Callbacks> = (\n emit: TCallbacks,\n) => MaybePromise<void | (() => void)>\n\nlet callbackCount = 0\n\n/**\n * @description Sets up an observer for a given function. If another function\n * is set up under the same observer id, the function will only be called once\n * for both instances of the observer.\n */\nexport function observe<TCallbacks extends Callbacks>(\n observerId: string,\n callbacks: TCallbacks,\n fn: EmitFunction<TCallbacks>,\n) {\n const callbackId = ++callbackCount\n\n const getListeners = () => listenersCache.get(observerId) || []\n\n const unsubscribe = () => {\n const listeners = getListeners()\n listenersCache.set(\n observerId,\n listeners.filter((cb: any) => cb.id !== callbackId),\n )\n }\n\n const unwatch = () => {\n const cleanup = cleanupCache.get(observerId)\n if (getListeners().length === 1 && cleanup) cleanup()\n unsubscribe()\n }\n\n const listeners = getListeners()\n listenersCache.set(observerId, [\n ...listeners,\n { id: callbackId, fns: callbacks },\n ])\n\n if (listeners && listeners.length > 0) return unwatch\n\n let emit: TCallbacks = {} as TCallbacks\n for (const key in callbacks) {\n emit[key] = ((\n ...args: Parameters<NonNullable<TCallbacks[keyof TCallbacks]>>\n ) => {\n const listeners = getListeners()\n if (listeners.length === 0) return\n listeners.forEach((listener) => listener.fns[key]?.(...args))\n }) as TCallbacks[Extract<keyof TCallbacks, string>]\n }\n\n const cleanup = fn(emit)\n if (typeof cleanup === 'function') cleanupCache.set(observerId, cleanup)\n\n return unwatch\n}\n","import { wait } from './wait'\n\ntype PollOptions<TData> = {\n // Whether or not to emit when the polling starts.\n emitOnBegin?: boolean\n // The initial wait time (in ms) before polling.\n initialWaitTime?: (data: TData | void) => Promise<number>\n // The interval (in ms).\n interval: number\n}\n\n/**\n * @description Polls a function at a specified interval.\n */\nexport function poll<TData>(\n fn: ({ unpoll }: { unpoll: () => void }) => Promise<TData | void>,\n { emitOnBegin, initialWaitTime, interval }: PollOptions<TData>,\n) {\n let active = true\n\n const unwatch = () => (active = false)\n\n const watch = async () => {\n let data: TData | void\n if (emitOnBegin) data = await fn({ unpoll: unwatch })\n\n const initialWait = (await initialWaitTime?.(data)) ?? interval\n await wait(initialWait)\n\n const poll = async () => {\n if (!active) return\n await fn({ unpoll: unwatch })\n await wait(interval)\n poll()\n }\n\n poll()\n }\n watch()\n\n return unwatch\n}\n","import type { PublicClient } from '../../clients'\nimport { observe } from '../../utils/observe'\nimport { poll } from '../../utils/poll'\nimport type { GetBlockNumberResponse } from './getBlockNumber'\nimport { getBlockNumber } from './getBlockNumber'\n\nexport type OnBlockNumberResponse = GetBlockNumberResponse\nexport type OnBlockNumber = (\n blockNumber: OnBlockNumberResponse,\n prevBlockNumber: OnBlockNumberResponse | undefined,\n) => void\n\nexport type WatchBlockNumberArgs = {\n /** Whether or not to emit the missed block numbers to the callback. */\n emitMissed?: boolean\n /** Whether or not to emit the latest block number to the callback when the subscription opens. */\n emitOnBegin?: boolean\n /** The callback to call when a new block number is received. */\n onBlockNumber: OnBlockNumber\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: (error: Error) => void\n /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */\n pollingInterval?: number\n}\n\n/** @description Watches and returns incoming block numbers. */\nexport function watchBlockNumber(\n client: PublicClient,\n {\n emitOnBegin = false,\n emitMissed = false,\n onBlockNumber,\n onError,\n pollingInterval = client.pollingInterval,\n }: WatchBlockNumberArgs,\n) {\n const observerId = JSON.stringify([\n 'watchBlockNumber',\n client.uid,\n emitOnBegin,\n emitMissed,\n pollingInterval,\n ])\n\n let prevBlockNumber: GetBlockNumberResponse | undefined\n\n return observe(observerId, { onBlockNumber, onError }, (emit) =>\n poll(\n async () => {\n try {\n const blockNumber = await getBlockNumber(client, { maxAge: 0 })\n\n if (prevBlockNumber) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (blockNumber === prevBlockNumber) return\n\n // If we have missed out on some previous blocks, and the\n // `emitMissed` flag is truthy, let's emit those blocks.\n if (blockNumber - prevBlockNumber > 1 && emitMissed) {\n for (let i = prevBlockNumber + 1n; i < blockNumber; i++) {\n emit.onBlockNumber(i, prevBlockNumber)\n prevBlockNumber = i\n }\n }\n }\n prevBlockNumber = blockNumber\n emit.onBlockNumber(blockNumber, prevBlockNumber)\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin,\n interval: pollingInterval,\n },\n ),\n )\n}\n","import type { Chain } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport type { BlockTag } from '../../types'\nimport { observe } from '../../utils/observe'\nimport { poll } from '../../utils/poll'\nimport type { GetBlockResponse } from './getBlock'\nimport { getBlock } from './getBlock'\n\nexport type OnBlockResponse<TChain extends Chain = Chain> =\n GetBlockResponse<TChain>\nexport type OnBlock<TChain extends Chain = Chain> = (\n block: OnBlockResponse<TChain>,\n prevBlock: OnBlockResponse<TChain> | undefined,\n) => void\n\nexport type WatchBlocksArgs<TChain extends Chain = Chain> = {\n /** The block tag. Defaults to \"latest\". */\n blockTag?: BlockTag\n /** Whether or not to emit the missed blocks to the callback. */\n emitMissed?: boolean\n /** Whether or not to emit the block to the callback when the subscription opens. */\n emitOnBegin?: boolean\n /** The callback to call when a new block is received. */\n onBlock: OnBlock<TChain>\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: (error: Error) => void\n /** Whether or not to include transaction data in the response. */\n includeTransactions?: boolean\n /** Polling frequency (in ms). Defaults to the client's pollingInterval config. */\n pollingInterval?: number\n}\n\n/** @description Watches and returns information for incoming blocks. */\nexport function watchBlocks<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n blockTag = 'latest',\n emitMissed = false,\n emitOnBegin = false,\n onBlock,\n onError,\n includeTransactions = false,\n pollingInterval = client.pollingInterval,\n }: WatchBlocksArgs<TChain>,\n) {\n const observerId = JSON.stringify([\n 'watchBlocks',\n client.uid,\n emitMissed,\n emitOnBegin,\n includeTransactions,\n pollingInterval,\n ])\n\n let prevBlock: GetBlockResponse<TChain> | undefined\n\n return observe(observerId, { onBlock, onError }, (emit) =>\n poll(\n async () => {\n try {\n const block = await getBlock(client, {\n blockTag,\n includeTransactions,\n })\n if (block.number && prevBlock?.number) {\n // If the current block number is the same as the previous,\n // we can skip.\n if (block.number === prevBlock.number) return\n\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 getBlock(client, {\n blockNumber: i,\n includeTransactions,\n })\n emit.onBlock(block, prevBlock)\n prevBlock = block\n }\n }\n }\n emit.onBlock(block, prevBlock)\n prevBlock = block\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin,\n interval: pollingInterval,\n },\n ),\n )\n}\n","import type { PublicClient } from '../../clients'\nimport type { Filter, Hash } from '../../types'\nimport { observe } from '../../utils/observe'\nimport { poll } from '../../utils/poll'\nimport { createPendingTransactionFilter } from './createPendingTransactionFilter'\nimport { getFilterChanges } from './getFilterChanges'\nimport { uninstallFilter } from './uninstallFilter'\n\nexport type OnTransactionsResponse = Hash[]\nexport type OnTransactions = (transactions: OnTransactionsResponse) => void\n\nexport type WatchPendingTransactionsArgs = {\n /** Whether or not the transaction hashes should be batched on each invocation. */\n batch?: boolean\n /** The callback to call when an error occurred when trying to get for a new block. */\n onError?: (error: Error) => void\n /** The callback to call when new transactions are received. */\n onTransactions: OnTransactions\n /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */\n pollingInterval?: number\n}\n\nexport function watchPendingTransactions(\n client: PublicClient,\n {\n batch = true,\n onError,\n onTransactions,\n pollingInterval = client.pollingInterval,\n }: WatchPendingTransactionsArgs,\n) {\n const observerId = JSON.stringify([\n 'watchPendingTransactions',\n client.uid,\n batch,\n pollingInterval,\n ])\n\n return observe(observerId, { onTransactions, onError }, (emit) => {\n let filter: Filter<'transaction'>\n\n const unwatch = poll(\n async () => {\n try {\n if (!filter) {\n try {\n filter = await createPendingTransactionFilter(client)\n return\n } catch (err) {\n unwatch()\n throw err\n }\n }\n\n const hashes = await getFilterChanges(client, { filter })\n if (batch) emit.onTransactions(hashes)\n else hashes.forEach((hash) => emit.onTransactions([hash]))\n } catch (err) {\n emit.onError?.(err as Error)\n }\n },\n {\n emitOnBegin: true,\n interval: pollingInterval,\n },\n )\n\n return async () => {\n if (filter) await uninstallFilter(client, { filter })\n unwatch()\n }\n })\n}\n","import type { Chain } from '../../chains'\nimport type { PublicClient } from '../../clients'\nimport {\n TransactionNotFoundError,\n TransactionReceiptNotFoundError,\n WaitForTransactionReceiptTimeoutError,\n} from '../../errors'\nimport type { Hash, Transaction } from '../../types'\nimport { observe } from '../../utils/observe'\nimport { getBlock, watchBlockNumber } from '../public'\n\nimport type { GetTransactionResponse } from './getTransaction'\nimport { getTransaction } from './getTransaction'\nimport type { GetTransactionReceiptResponse } from './getTransactionReceipt'\nimport { getTransactionReceipt } from './getTransactionReceipt'\n\nexport type ReplacementReason = 'cancelled' | 'replaced' | 'repriced'\nexport type ReplacementResponse<TChain extends Chain = Chain> = {\n reason: ReplacementReason\n replacedTransaction: Transaction\n transaction: Transaction\n transactionReceipt: GetTransactionReceiptResponse<TChain>\n}\n\nexport type WaitForTransactionReceiptResponse<TChain extends Chain = Chain> =\n GetTransactionReceiptResponse<TChain>\n\nexport type WaitForTransactionReceiptArgs<TChain extends Chain = Chain> = {\n /** The number of confirmations (blocks that have passed) to wait before resolving. */\n confirmations?: number\n /** The hash of the transaction. */\n hash: Hash\n onReplaced?: (response: ReplacementResponse<TChain>) => void\n /** Polling frequency (in ms). Defaults to the client's pollingInterval config. */\n pollingInterval?: number\n /** Optional timeout (in milliseconds) to wait before stopping polling. */\n timeout?: number\n}\n\nexport async function waitForTransactionReceipt<TChain extends Chain>(\n client: PublicClient<any, TChain>,\n {\n confirmations = 1,\n hash,\n onReplaced,\n pollingInterval = client.pollingInterval,\n timeout,\n }: WaitForTransactionReceiptArgs<TChain>,\n): Promise<WaitForTransactionReceiptResponse<TChain>> {\n const observerId = JSON.stringify([\n 'waitForTransactionReceipt',\n client.uid,\n hash,\n ])\n\n let transaction: GetTransactionResponse<TChain> | undefined\n let replacedTransaction: GetTransactionResponse<TChain> | undefined\n let receipt: GetTransactionReceiptResponse<TChain>\n\n return new Promise((resolve, reject) => {\n if (timeout)\n setTimeout(\n () => reject(new WaitForTransactionReceiptTimeoutError({ hash })),\n timeout,\n )\n\n const unobserve = observe(\n observerId,\n { onReplaced, resolve, reject },\n (emit) => {\n const unwatch = watchBlockNumber(client, {\n emitMissed: true,\n emitOnBegin: true,\n pollingInterval,\n async onBlockNumber(blockNumber) {\n const done = async (fn: () => void) => {\n unwatch()\n fn()\n unobserve()\n }\n\n try {\n // If we already have a valid receipt, let's check if we have enough\n // confirmations. If we do, then we can resolve.\n if (receipt) {\n if (blockNumber - receipt.blockNumber + 1n < confirmations)\n return\n\n done(() => emit.resolve(receipt))\n return\n }\n\n // Get the transaction to check if it's been replaced.\n transaction = await getTransaction(client, { hash })\n\n // Get the receipt to check if it's been processed.\n receipt = await getTransactionReceipt(client, { hash })\n\n // Check if we have enough confirmations. If not, continue polling.\n if (blockNumber - receipt.blockNumber + 1n < confirmations) return\n\n done(() => emit.resolve(receipt))\n } catch (err) {\n // If the receipt is not found, the transaction will be pending.\n // We need to check if it has potentially been replaced.\n if (\n transaction &&\n (err instanceof TransactionNotFoundError ||\n err instanceof TransactionReceiptNotFoundError)\n ) {\n replacedTransaction = transaction\n\n // Let's retrieve the transactions from the current block.\n const block = await getBlock(client, {\n blockNumber,\n includeTransactions: true,\n })\n\n const replacementTransaction = (\n block.transactions as Transaction[]\n ).find(\n ({ from, nonce }) =>\n from === replacedTransaction!.from &&\n nonce === replacedTransaction!.nonce,\n )\n\n // If we couldn't find a replacement transaction, continue polling.\n if (!replacementTransaction) return\n\n // If we found a replacement transaction, return it's receipt.\n receipt = await getTransactionReceipt(client, {\n hash: replacementTransaction.hash,\n })\n\n // Check if we have enough confirmations. If not, continue polling.\n if (blockNumber - receipt.blockNumber + 1n < confirmations)\n return\n\n let reason: ReplacementReason = 'replaced'\n if (\n replacementTransaction.to === replacedTransaction.to &&\n replacementTransaction.value === replacedTransaction.value\n ) {\n reason = 'repriced'\n } else if (\n replacementTransaction.from === replacementTransaction.to &&\n replacementTransaction.value === 0n\n ) {\n reason = 'cancelled'\n }\n\n done(() => {\n emit.onReplaced?.({\n reason,\n replacedTransaction: replacedTransaction!,\n transaction: replacementTransaction,\n transactionReceipt: receipt,\n })\n emit.resolve(receipt)\n })\n } else {\n done(() => emit.reject(err))\n }\n }\n },\n })\n return unwatch\n },\n )\n })\n}\n"]}