viem 0.0.1-alpha.2 → 0.0.1-alpha.20

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 (483) hide show
  1. package/chains/package.json +1 -1
  2. package/clients/package.json +1 -1
  3. package/dist/{rpc-655c0ba4.d.ts → chain-32f56cfa.d.ts} +78 -17
  4. package/dist/chain-f12cdc7f.d.ts +5 -0
  5. package/dist/chains.d.ts +1291 -74
  6. package/dist/chains.js +125 -129
  7. package/dist/chains.js.map +1 -0
  8. package/dist/chains.mjs +129 -0
  9. package/dist/chains.mjs.map +1 -0
  10. package/dist/{chunk-3EOU525X.js → chunk-5Q6FSUU2.mjs} +1199 -562
  11. package/dist/chunk-5Q6FSUU2.mjs.map +1 -0
  12. package/dist/chunk-FHXXG7I6.js +259 -0
  13. package/dist/chunk-FHXXG7I6.js.map +1 -0
  14. package/dist/chunk-IAQPMSGJ.js +176 -0
  15. package/dist/chunk-IAQPMSGJ.js.map +1 -0
  16. package/dist/{chunk-4HNVS7AM.js → chunk-MYQNZSWD.mjs} +330 -539
  17. package/dist/chunk-MYQNZSWD.mjs.map +1 -0
  18. package/dist/chunk-NHAKUPTF.js +889 -0
  19. package/dist/chunk-NHAKUPTF.js.map +1 -0
  20. package/dist/chunk-SF4I2NKC.js +2683 -0
  21. package/dist/chunk-SF4I2NKC.js.map +1 -0
  22. package/dist/chunk-T7CBAKLI.mjs +176 -0
  23. package/dist/chunk-T7CBAKLI.mjs.map +1 -0
  24. package/dist/chunk-YFKR74XG.js +256 -0
  25. package/dist/chunk-YFKR74XG.js.map +1 -0
  26. package/dist/chunk-YODUQCHJ.mjs +256 -0
  27. package/dist/chunk-YODUQCHJ.mjs.map +1 -0
  28. package/dist/{chunk-YQRTXQ2G.js → chunk-ZVGTYLKU.mjs} +3 -15
  29. package/dist/chunk-ZVGTYLKU.mjs.map +1 -0
  30. package/dist/clients/index.d.ts +8 -7
  31. package/dist/clients/index.js +24 -25
  32. package/dist/clients/index.js.map +1 -0
  33. package/dist/clients/index.mjs +24 -0
  34. package/dist/clients/index.mjs.map +1 -0
  35. package/dist/contract-9af4608b.d.ts +142 -0
  36. package/dist/createClient-5d316c7e.d.ts +62 -0
  37. package/dist/createPublicClient-9d2b42e1.d.ts +19 -0
  38. package/dist/createTestClient-79498dab.d.ts +34 -0
  39. package/dist/createWalletClient-f69a5230.d.ts +30 -0
  40. package/dist/{eip1193-8f7c22ce.d.ts → eip1193-6c485d63.d.ts} +13 -10
  41. package/dist/index.d.ts +424 -11
  42. package/dist/index.js +395 -292
  43. package/dist/index.js.map +1 -0
  44. package/dist/index.mjs +395 -0
  45. package/dist/index.mjs.map +1 -0
  46. package/dist/{parseGwei-fd7a0f7d.d.ts → parseGwei-4308ad80.d.ts} +82 -139
  47. package/dist/public.d.ts +11 -0
  48. package/dist/public.js +59 -0
  49. package/dist/public.js.map +1 -0
  50. package/dist/public.mjs +59 -0
  51. package/dist/public.mjs.map +1 -0
  52. package/dist/{rpc-3c0e3985.d.ts → rpc-26932bae.d.ts} +1 -38
  53. package/dist/sendTransaction-1c8290a9.d.ts +12 -0
  54. package/dist/stopImpersonatingAccount-7781842a.d.ts +156 -0
  55. package/dist/test.d.ts +6 -0
  56. package/dist/test.js +60 -0
  57. package/dist/test.js.map +1 -0
  58. package/dist/test.mjs +60 -0
  59. package/dist/test.mjs.map +1 -0
  60. package/dist/transactionRequest-341b6ed2.d.ts +15 -0
  61. package/dist/utils/index.d.ts +51 -8
  62. package/dist/utils/index.js +171 -156
  63. package/dist/utils/index.js.map +1 -0
  64. package/dist/utils/index.mjs +171 -0
  65. package/dist/utils/index.mjs.map +1 -0
  66. package/dist/wallet.d.ts +8 -0
  67. package/dist/wallet.js +24 -0
  68. package/dist/wallet.js.map +1 -0
  69. package/dist/wallet.mjs +24 -0
  70. package/dist/wallet.mjs.map +1 -0
  71. package/dist/watchAsset-afaad3c7.d.ts +38 -0
  72. package/dist/{watchAsset-04ab8db5.d.ts → watchPendingTransactions-3b722547.d.ts} +67 -217
  73. package/dist/{webSocket-c6e0d26f.d.ts → webSocket-b180e679.d.ts} +4 -9
  74. package/dist/window.d.ts +3 -2
  75. package/dist/window.js +1 -0
  76. package/dist/window.js.map +1 -0
  77. package/dist/window.mjs +1 -0
  78. package/dist/window.mjs.map +1 -0
  79. package/package.json +30 -66
  80. package/src/_test/abis.ts +1413 -0
  81. package/src/_test/bench.ts +15 -0
  82. package/src/_test/constants.ts +60 -0
  83. package/src/_test/globalSetup.ts +11 -0
  84. package/src/_test/index.ts +23 -0
  85. package/src/_test/setup.ts +8 -0
  86. package/src/_test/utils.ts +112 -0
  87. package/src/actions/index.test.ts +78 -0
  88. package/src/actions/index.ts +174 -0
  89. package/src/actions/public/call.bench.ts +48 -0
  90. package/src/actions/public/call.test.ts +99 -0
  91. package/src/actions/public/call.ts +97 -0
  92. package/src/actions/public/createBlockFilter.bench.ts +11 -0
  93. package/src/actions/public/createBlockFilter.test.ts +9 -0
  94. package/src/actions/public/createBlockFilter.ts +14 -0
  95. package/src/actions/public/createContractEventFilter.test.ts +119 -0
  96. package/src/actions/public/createContractEventFilter.ts +69 -0
  97. package/src/actions/public/createEventFilter.test.ts +245 -0
  98. package/src/actions/public/createEventFilter.ts +76 -0
  99. package/src/actions/public/createPendingTransactionFilter.bench.ts +11 -0
  100. package/src/actions/public/createPendingTransactionFilter.test.ts +9 -0
  101. package/src/actions/public/createPendingTransactionFilter.ts +14 -0
  102. package/src/actions/public/deployContract.test.ts +56 -0
  103. package/src/actions/public/deployContract.ts +38 -0
  104. package/src/actions/public/estimateGas.bench.ts +46 -0
  105. package/src/actions/public/estimateGas.test.ts +92 -0
  106. package/src/actions/public/estimateGas.ts +61 -0
  107. package/src/actions/public/getBalance.test.ts +83 -0
  108. package/src/actions/public/getBalance.ts +37 -0
  109. package/src/actions/public/getBlock.bench.ts +28 -0
  110. package/src/actions/public/getBlock.test.ts +575 -0
  111. package/src/actions/public/getBlock.ts +65 -0
  112. package/src/actions/public/getBlockNumber.bench.ts +28 -0
  113. package/src/actions/public/getBlockNumber.test.ts +27 -0
  114. package/src/actions/public/getBlockNumber.ts +32 -0
  115. package/src/actions/public/getBlockTransactionCount.bench.ts +15 -0
  116. package/src/actions/public/getBlockTransactionCount.test.ts +57 -0
  117. package/src/actions/public/getBlockTransactionCount.ts +52 -0
  118. package/src/actions/public/getBytecode.test.ts +27 -0
  119. package/src/actions/public/getBytecode.ts +32 -0
  120. package/src/actions/public/getChainId.bench.ts +15 -0
  121. package/src/actions/public/getChainId.test.ts +8 -0
  122. package/src/actions/public/getChainId.ts +7 -0
  123. package/src/actions/public/getFeeHistory.bench.ts +18 -0
  124. package/src/actions/public/getFeeHistory.test.ts +137 -0
  125. package/src/actions/public/getFeeHistory.ts +44 -0
  126. package/src/actions/public/getFilterChanges.bench.ts +13 -0
  127. package/src/actions/public/getFilterChanges.test.ts +189 -0
  128. package/src/actions/public/getFilterChanges.ts +23 -0
  129. package/src/actions/public/getFilterLogs.test.ts +104 -0
  130. package/src/actions/public/getFilterLogs.ts +20 -0
  131. package/src/actions/public/getGasPrice.bench.ts +28 -0
  132. package/src/actions/public/getGasPrice.test.ts +8 -0
  133. package/src/actions/public/getGasPrice.ts +15 -0
  134. package/src/actions/public/getLogs.test.ts +107 -0
  135. package/src/actions/public/getLogs.ts +84 -0
  136. package/src/actions/public/getStorageAt.test.ts +34 -0
  137. package/src/actions/public/getStorageAt.ts +32 -0
  138. package/src/actions/public/getTransaction.bench.ts +33 -0
  139. package/src/actions/public/getTransaction.test.ts +311 -0
  140. package/src/actions/public/getTransaction.ts +95 -0
  141. package/src/actions/public/getTransactionConfirmations.test.ts +69 -0
  142. package/src/actions/public/getTransactionConfirmations.ts +38 -0
  143. package/src/actions/public/getTransactionCount.test.ts +56 -0
  144. package/src/actions/public/getTransactionCount.ts +34 -0
  145. package/src/actions/public/getTransactionReceipt.bench.ts +33 -0
  146. package/src/actions/public/getTransactionReceipt.test.ts +179 -0
  147. package/src/actions/public/getTransactionReceipt.ts +34 -0
  148. package/src/actions/public/index.test.ts +43 -0
  149. package/src/actions/public/index.ts +149 -0
  150. package/src/actions/public/readContract.test.ts +128 -0
  151. package/src/actions/public/readContract.ts +87 -0
  152. package/src/actions/public/simulateContract.bench.ts +31 -0
  153. package/src/actions/public/simulateContract.test.ts +238 -0
  154. package/src/actions/public/simulateContract.ts +98 -0
  155. package/src/actions/public/uninstallFilter.bench.ts +13 -0
  156. package/src/actions/public/uninstallFilter.test.ts +65 -0
  157. package/src/actions/public/uninstallFilter.ts +17 -0
  158. package/src/actions/public/waitForTransactionReceipt.test.ts +322 -0
  159. package/src/actions/public/waitForTransactionReceipt.ts +170 -0
  160. package/src/actions/public/watchBlockNumber.test.ts +166 -0
  161. package/src/actions/public/watchBlockNumber.ts +79 -0
  162. package/src/actions/public/watchBlocks.test.ts +210 -0
  163. package/src/actions/public/watchBlocks.ts +114 -0
  164. package/src/actions/public/watchContractEvent.test.ts +301 -0
  165. package/src/actions/public/watchContractEvent.ts +108 -0
  166. package/src/actions/public/watchEvent.test.ts +190 -0
  167. package/src/actions/public/watchEvent.ts +95 -0
  168. package/src/actions/public/watchPendingTransactions.test.ts +116 -0
  169. package/src/actions/public/watchPendingTransactions.ts +74 -0
  170. package/src/actions/test/dropTransaction.test.ts +34 -0
  171. package/src/actions/test/dropTransaction.ts +17 -0
  172. package/src/actions/test/getAutomine.test.ts +14 -0
  173. package/src/actions/test/getAutomine.ts +11 -0
  174. package/src/actions/test/getTxpoolContent.test.ts +45 -0
  175. package/src/actions/test/getTxpoolContent.ts +7 -0
  176. package/src/actions/test/getTxpoolStatus.test.ts +41 -0
  177. package/src/actions/test/getTxpoolStatus.ts +12 -0
  178. package/src/actions/test/impersonateAccount.test.ts +28 -0
  179. package/src/actions/test/impersonateAccount.ts +17 -0
  180. package/src/actions/test/increaseTime.test.ts +18 -0
  181. package/src/actions/test/increaseTime.ts +17 -0
  182. package/src/actions/test/index.test.ts +38 -0
  183. package/src/actions/test/index.ts +77 -0
  184. package/src/actions/test/inspectTxpool.test.ts +50 -0
  185. package/src/actions/test/inspectTxpool.ts +7 -0
  186. package/src/actions/test/mine.test.ts +20 -0
  187. package/src/actions/test/mine.ts +16 -0
  188. package/src/actions/test/removeBlockTimestampInterval.test.ts +23 -0
  189. package/src/actions/test/removeBlockTimestampInterval.ts +7 -0
  190. package/src/actions/test/reset.test.ts +19 -0
  191. package/src/actions/test/reset.ts +18 -0
  192. package/src/actions/test/revert.test.ts +39 -0
  193. package/src/actions/test/revert.ts +14 -0
  194. package/src/actions/test/sendUnsignedTransaction.test.ts +52 -0
  195. package/src/actions/test/sendUnsignedTransaction.ts +19 -0
  196. package/src/actions/test/setAutomine.test.ts +14 -0
  197. package/src/actions/test/setAutomine.ts +8 -0
  198. package/src/actions/test/setBalance.test.ts +29 -0
  199. package/src/actions/test/setBalance.ts +20 -0
  200. package/src/actions/test/setBlockGasLimit.test.ts +21 -0
  201. package/src/actions/test/setBlockGasLimit.ts +17 -0
  202. package/src/actions/test/setBlockTimestampInterval.test.ts +23 -0
  203. package/src/actions/test/setBlockTimestampInterval.ts +16 -0
  204. package/src/actions/test/setCode.test.ts +26 -0
  205. package/src/actions/test/setCode.ts +19 -0
  206. package/src/actions/test/setCoinbase.test.ts +11 -0
  207. package/src/actions/test/setCoinbase.ts +17 -0
  208. package/src/actions/test/setIntervalMining.test.ts +30 -0
  209. package/src/actions/test/setIntervalMining.ts +16 -0
  210. package/src/actions/test/setLoggingEnabled.test.ts +10 -0
  211. package/src/actions/test/setLoggingEnabled.ts +8 -0
  212. package/src/actions/test/setMinGasPrice.test.ts +22 -0
  213. package/src/actions/test/setMinGasPrice.ts +17 -0
  214. package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +23 -0
  215. package/src/actions/test/setNextBlockBaseFeePerGas.ts +17 -0
  216. package/src/actions/test/setNextBlockTimestamp.test.ts +19 -0
  217. package/src/actions/test/setNextBlockTimestamp.ts +17 -0
  218. package/src/actions/test/setNonce.test.ts +28 -0
  219. package/src/actions/test/setNonce.ts +20 -0
  220. package/src/actions/test/setRpcUrl.test.ts +9 -0
  221. package/src/actions/test/setRpcUrl.ts +8 -0
  222. package/src/actions/test/setStorageAt.test.ts +36 -0
  223. package/src/actions/test/setStorageAt.ts +26 -0
  224. package/src/actions/test/snapshot.test.ts +18 -0
  225. package/src/actions/test/snapshot.ts +7 -0
  226. package/src/actions/test/stopImpersonatingAccount.test.ts +31 -0
  227. package/src/actions/test/stopImpersonatingAccount.ts +17 -0
  228. package/src/actions/wallet/addChain.test.ts +14 -0
  229. package/src/actions/wallet/addChain.ts +21 -0
  230. package/src/actions/wallet/getAccounts.test.ts +22 -0
  231. package/src/actions/wallet/getAccounts.ts +7 -0
  232. package/src/actions/wallet/getPermissions.test.ts +24 -0
  233. package/src/actions/wallet/getPermissions.ts +9 -0
  234. package/src/actions/wallet/index.test.ts +20 -0
  235. package/src/actions/wallet/index.ts +30 -0
  236. package/src/actions/wallet/requestAccounts.test.ts +13 -0
  237. package/src/actions/wallet/requestAccounts.ts +7 -0
  238. package/src/actions/wallet/requestPermissions.test.ts +26 -0
  239. package/src/actions/wallet/requestPermissions.ts +19 -0
  240. package/src/actions/wallet/sendTransaction.bench.ts +57 -0
  241. package/src/actions/wallet/sendTransaction.test.ts +440 -0
  242. package/src/actions/wallet/sendTransaction.ts +77 -0
  243. package/src/actions/wallet/signMessage.test.ts +62 -0
  244. package/src/actions/wallet/signMessage.ts +35 -0
  245. package/src/actions/wallet/switchChain.test.ts +22 -0
  246. package/src/actions/wallet/switchChain.ts +19 -0
  247. package/src/actions/wallet/watchAsset.test.ts +41 -0
  248. package/src/actions/wallet/watchAsset.ts +16 -0
  249. package/src/actions/wallet/writeContract.test.ts +54 -0
  250. package/src/actions/wallet/writeContract.ts +56 -0
  251. package/src/chains.test.ts +1912 -0
  252. package/src/chains.ts +99 -0
  253. package/src/clients/createClient.test.ts +295 -0
  254. package/src/clients/createClient.ts +81 -0
  255. package/src/clients/createPublicClient.test.ts +165 -0
  256. package/src/clients/createPublicClient.ts +49 -0
  257. package/src/clients/createTestClient.test.ts +145 -0
  258. package/src/clients/createTestClient.ts +72 -0
  259. package/src/clients/createWalletClient.test.ts +121 -0
  260. package/src/clients/createWalletClient.ts +54 -0
  261. package/src/clients/index.test.ts +19 -0
  262. package/src/clients/index.ts +31 -0
  263. package/src/clients/transports/createTransport.test.ts +58 -0
  264. package/src/clients/transports/createTransport.ts +48 -0
  265. package/src/clients/transports/custom.test.ts +98 -0
  266. package/src/clients/transports/custom.ts +34 -0
  267. package/src/clients/transports/fallback.test.ts +223 -0
  268. package/src/clients/transports/fallback.ts +48 -0
  269. package/src/clients/transports/http.test.ts +110 -0
  270. package/src/clients/transports/http.ts +51 -0
  271. package/src/clients/transports/index.test.ts +15 -0
  272. package/src/clients/transports/index.ts +17 -0
  273. package/src/clients/transports/webSocket.test.ts +164 -0
  274. package/src/clients/transports/webSocket.ts +117 -0
  275. package/src/errors/abi.test.ts +83 -0
  276. package/src/errors/abi.ts +238 -0
  277. package/src/errors/address.test.ts +14 -0
  278. package/src/errors/address.ts +9 -0
  279. package/src/errors/base.test.ts +72 -0
  280. package/src/errors/base.ts +57 -0
  281. package/src/errors/block.test.ts +24 -0
  282. package/src/errors/block.ts +18 -0
  283. package/src/errors/contract.ts +125 -0
  284. package/src/errors/data.ts +20 -0
  285. package/src/errors/encoding.ts +60 -0
  286. package/src/errors/index.ts +77 -0
  287. package/src/errors/log.ts +8 -0
  288. package/src/errors/request.test.ts +331 -0
  289. package/src/errors/request.ts +163 -0
  290. package/src/errors/rpc.test.ts +88 -0
  291. package/src/errors/rpc.ts +113 -0
  292. package/src/errors/transaction.test.ts +83 -0
  293. package/src/errors/transaction.ts +54 -0
  294. package/src/errors/transport.test.ts +12 -0
  295. package/src/errors/transport.ts +12 -0
  296. package/src/index.test.ts +214 -0
  297. package/src/index.ts +373 -0
  298. package/src/public.ts +80 -0
  299. package/src/test.ts +51 -0
  300. package/src/types/block.ts +71 -0
  301. package/src/types/chain.ts +6 -0
  302. package/src/types/contract.ts +342 -0
  303. package/src/types/eip1193.ts +1041 -0
  304. package/src/types/fee.ts +47 -0
  305. package/src/types/filter.ts +8 -0
  306. package/src/types/formatter.ts +23 -0
  307. package/src/types/index.ts +78 -0
  308. package/src/types/log.ts +22 -0
  309. package/src/types/misc.ts +5 -0
  310. package/src/types/rpc.ts +35 -0
  311. package/src/types/transaction.ts +145 -0
  312. package/src/types/utils.ts +67 -0
  313. package/src/types/window.ts +9 -0
  314. package/src/utils/abi/decodeAbi.bench.ts +135 -0
  315. package/src/utils/abi/decodeAbi.test.ts +1615 -0
  316. package/src/utils/abi/decodeAbi.ts +296 -0
  317. package/src/utils/abi/decodeDeployData.test.ts +159 -0
  318. package/src/utils/abi/decodeDeployData.ts +41 -0
  319. package/src/utils/abi/decodeErrorResult.test.ts +130 -0
  320. package/src/utils/abi/decodeErrorResult.ts +28 -0
  321. package/src/utils/abi/decodeFunctionData.test.ts +140 -0
  322. package/src/utils/abi/decodeFunctionData.ts +29 -0
  323. package/src/utils/abi/decodeFunctionResult.test.ts +262 -0
  324. package/src/utils/abi/decodeFunctionResult.ts +53 -0
  325. package/src/utils/abi/encodeAbi.bench.ts +163 -0
  326. package/src/utils/abi/encodeAbi.test.ts +1414 -0
  327. package/src/utils/abi/encodeAbi.ts +258 -0
  328. package/src/utils/abi/encodeDeployData.test.ts +131 -0
  329. package/src/utils/abi/encodeDeployData.ts +37 -0
  330. package/src/utils/abi/encodeErrorResult.test.ts +197 -0
  331. package/src/utils/abi/encodeErrorResult.ts +40 -0
  332. package/src/utils/abi/encodeEventTopics.test.ts +348 -0
  333. package/src/utils/abi/encodeEventTopics.ts +69 -0
  334. package/src/utils/abi/encodeFunctionData.test.ts +140 -0
  335. package/src/utils/abi/encodeFunctionData.ts +38 -0
  336. package/src/utils/abi/encodeFunctionResult.test.ts +284 -0
  337. package/src/utils/abi/encodeFunctionResult.ts +39 -0
  338. package/src/utils/abi/formatAbiItem.test.ts +335 -0
  339. package/src/utils/abi/formatAbiItem.ts +41 -0
  340. package/src/utils/abi/formatAbiItemWithArgs.test.ts +291 -0
  341. package/src/utils/abi/formatAbiItemWithArgs.ts +27 -0
  342. package/src/utils/abi/getAbiItem.ts +5 -0
  343. package/src/utils/abi/index.test.ts +23 -0
  344. package/src/utils/abi/index.ts +38 -0
  345. package/src/utils/address/getAddress.bench.ts +22 -0
  346. package/src/utils/address/getAddress.test.ts +46 -0
  347. package/src/utils/address/getAddress.ts +28 -0
  348. package/src/utils/address/getContractAddress.bench.ts +20 -0
  349. package/src/utils/address/getContractAddress.test.ts +78 -0
  350. package/src/utils/address/getContractAddress.ts +59 -0
  351. package/src/utils/address/index.test.ts +17 -0
  352. package/src/utils/address/index.ts +16 -0
  353. package/src/utils/address/isAddress.test.ts +10 -0
  354. package/src/utils/address/isAddress.ts +10 -0
  355. package/src/utils/address/isAddressEqual.test.ts +55 -0
  356. package/src/utils/address/isAddressEqual.ts +6 -0
  357. package/src/utils/buildRequest.test.ts +365 -0
  358. package/src/utils/buildRequest.ts +45 -0
  359. package/src/utils/chain.test.ts +43 -0
  360. package/src/utils/chain.ts +8 -0
  361. package/src/utils/contract/extractFunctionParts.test.ts +109 -0
  362. package/src/utils/contract/extractFunctionParts.ts +27 -0
  363. package/src/utils/contract/getContractError.test.ts +97 -0
  364. package/src/utils/contract/getContractError.ts +66 -0
  365. package/src/utils/contract/index.test.ts +15 -0
  366. package/src/utils/contract/index.ts +8 -0
  367. package/src/utils/data/concat.test.ts +35 -0
  368. package/src/utils/data/concat.ts +34 -0
  369. package/src/utils/data/index.test.ts +23 -0
  370. package/src/utils/data/index.ts +13 -0
  371. package/src/utils/data/isBytes.test.ts +9 -0
  372. package/src/utils/data/isBytes.ts +7 -0
  373. package/src/utils/data/isHex.test.ts +13 -0
  374. package/src/utils/data/isHex.ts +5 -0
  375. package/src/utils/data/pad.bench.ts +39 -0
  376. package/src/utils/data/pad.test.ts +367 -0
  377. package/src/utils/data/pad.ts +53 -0
  378. package/src/utils/data/size.test.ts +18 -0
  379. package/src/utils/data/size.ts +13 -0
  380. package/src/utils/data/slice.test.ts +203 -0
  381. package/src/utils/data/slice.ts +60 -0
  382. package/src/utils/data/trim.bench.ts +50 -0
  383. package/src/utils/data/trim.test.ts +175 -0
  384. package/src/utils/data/trim.ts +33 -0
  385. package/src/utils/encoding/decodeBytes.bench.ts +40 -0
  386. package/src/utils/encoding/decodeBytes.test.ts +144 -0
  387. package/src/utils/encoding/decodeBytes.ts +63 -0
  388. package/src/utils/encoding/decodeHex.bench.ts +24 -0
  389. package/src/utils/encoding/decodeHex.test.ts +167 -0
  390. package/src/utils/encoding/decodeHex.ts +76 -0
  391. package/src/utils/encoding/decodeRlp.bench.ts +34 -0
  392. package/src/utils/encoding/decodeRlp.test.ts +350 -0
  393. package/src/utils/encoding/decodeRlp.ts +121 -0
  394. package/src/utils/encoding/encodeBytes.bench.ts +41 -0
  395. package/src/utils/encoding/encodeBytes.test.ts +676 -0
  396. package/src/utils/encoding/encodeBytes.ts +59 -0
  397. package/src/utils/encoding/encodeHex.bench.ts +60 -0
  398. package/src/utils/encoding/encodeHex.test.ts +232 -0
  399. package/src/utils/encoding/encodeHex.ts +104 -0
  400. package/src/utils/encoding/encodeRlp.bench.ts +54 -0
  401. package/src/utils/encoding/encodeRlp.test.ts +254 -0
  402. package/src/utils/encoding/encodeRlp.ts +48 -0
  403. package/src/utils/encoding/index.test.ts +32 -0
  404. package/src/utils/encoding/index.ts +36 -0
  405. package/src/utils/formatters/block.bench.ts +51 -0
  406. package/src/utils/formatters/block.test.ts +115 -0
  407. package/src/utils/formatters/block.ts +37 -0
  408. package/src/utils/formatters/extract.test.ts +14 -0
  409. package/src/utils/formatters/extract.ts +18 -0
  410. package/src/utils/formatters/feeHistory.test.ts +66 -0
  411. package/src/utils/formatters/feeHistory.ts +12 -0
  412. package/src/utils/formatters/format.test.ts +93 -0
  413. package/src/utils/formatters/format.ts +90 -0
  414. package/src/utils/formatters/index.test.ts +27 -0
  415. package/src/utils/formatters/index.ts +34 -0
  416. package/src/utils/formatters/log.test.ts +79 -0
  417. package/src/utils/formatters/log.ts +12 -0
  418. package/src/utils/formatters/transaction.test.ts +271 -0
  419. package/src/utils/formatters/transaction.ts +63 -0
  420. package/src/utils/formatters/transactionReceipt.bench.ts +73 -0
  421. package/src/utils/formatters/transactionReceipt.test.ts +151 -0
  422. package/src/utils/formatters/transactionReceipt.ts +63 -0
  423. package/src/utils/formatters/transactionRequest.bench.ts +29 -0
  424. package/src/utils/formatters/transactionRequest.test.ts +237 -0
  425. package/src/utils/formatters/transactionRequest.ts +56 -0
  426. package/src/utils/hash/getEventSignature.test.ts +61 -0
  427. package/src/utils/hash/getEventSignature.ts +4 -0
  428. package/src/utils/hash/getFunctionSignature.test.ts +22 -0
  429. package/src/utils/hash/getFunctionSignature.ts +5 -0
  430. package/src/utils/hash/hashFunction.test.ts +65 -0
  431. package/src/utils/hash/hashFunction.ts +12 -0
  432. package/src/utils/hash/index.test.ts +13 -0
  433. package/src/utils/hash/index.ts +5 -0
  434. package/src/utils/hash/keccak256.test.ts +59 -0
  435. package/src/utils/hash/keccak256.ts +23 -0
  436. package/src/utils/index.test.ts +110 -0
  437. package/src/utils/index.ts +137 -0
  438. package/src/utils/observe.test.ts +176 -0
  439. package/src/utils/observe.ts +66 -0
  440. package/src/utils/poll.test.ts +127 -0
  441. package/src/utils/poll.ts +42 -0
  442. package/src/utils/promise/index.test.ts +14 -0
  443. package/src/utils/promise/index.ts +3 -0
  444. package/src/utils/promise/withCache.test.ts +97 -0
  445. package/src/utils/promise/withCache.ts +73 -0
  446. package/src/utils/promise/withRetry.test.ts +231 -0
  447. package/src/utils/promise/withRetry.ts +61 -0
  448. package/src/utils/promise/withTimeout.test.ts +37 -0
  449. package/src/utils/promise/withTimeout.ts +39 -0
  450. package/src/utils/rpc.test.ts +992 -0
  451. package/src/utils/rpc.ts +292 -0
  452. package/src/utils/stringify.test.ts +13 -0
  453. package/src/utils/stringify.ts +5 -0
  454. package/src/utils/uid.ts +14 -0
  455. package/src/utils/unit/constants.test.ts +22 -0
  456. package/src/utils/unit/constants.ts +12 -0
  457. package/src/utils/unit/formatEther.test.ts +75 -0
  458. package/src/utils/unit/formatEther.ts +6 -0
  459. package/src/utils/unit/formatGwei.test.ts +32 -0
  460. package/src/utils/unit/formatGwei.ts +6 -0
  461. package/src/utils/unit/formatUnit.bench.ts +26 -0
  462. package/src/utils/unit/formatUnit.test.ts +40 -0
  463. package/src/utils/unit/formatUnit.ts +16 -0
  464. package/src/utils/unit/index.test.ts +28 -0
  465. package/src/utils/unit/index.ts +7 -0
  466. package/src/utils/unit/parseEther.test.ts +126 -0
  467. package/src/utils/unit/parseEther.ts +6 -0
  468. package/src/utils/unit/parseGwei.test.ts +50 -0
  469. package/src/utils/unit/parseGwei.ts +6 -0
  470. package/src/utils/unit/parseUnit.bench.ts +26 -0
  471. package/src/utils/unit/parseUnit.test.ts +54 -0
  472. package/src/utils/unit/parseUnit.ts +27 -0
  473. package/src/utils/wait.ts +3 -0
  474. package/src/wallet.ts +23 -0
  475. package/src/window.ts +1 -0
  476. package/utils/package.json +1 -1
  477. package/window/package.json +1 -1
  478. package/actions/package.json +0 -4
  479. package/dist/BaseError-7688f84e.d.ts +0 -18
  480. package/dist/actions/index.d.ts +0 -8
  481. package/dist/actions/index.js +0 -123
  482. package/dist/createWalletClient-915223f3.d.ts +0 -130
  483. package/dist/transactionRequest-ade896ac.d.ts +0 -44
@@ -1,8 +1,17 @@
1
1
  import {
2
- BaseError,
3
- __publicField,
4
- checksumAddress,
5
- encodeHex,
2
+ sendTransaction
3
+ } from "./chunk-T7CBAKLI.mjs";
4
+ import {
5
+ BlockNotFoundError,
6
+ InvalidGasArgumentsError,
7
+ TransactionNotFoundError,
8
+ TransactionReceiptNotFoundError,
9
+ WaitForTransactionReceiptTimeoutError,
10
+ decodeFunctionResult,
11
+ encodeDeployData,
12
+ encodeEventTopics,
13
+ encodeFunctionData,
14
+ extract,
6
15
  format,
7
16
  formatBlock,
8
17
  formatFeeHistory,
@@ -10,147 +19,14 @@ import {
10
19
  formatTransaction,
11
20
  formatTransactionReceipt,
12
21
  formatTransactionRequest,
13
- getAddress,
14
22
  getCache,
23
+ getContractError,
24
+ getEventSignature,
15
25
  hexToNumber,
16
26
  numberToHex,
17
27
  wait,
18
28
  withCache
19
- } from "./chunk-3EOU525X.js";
20
-
21
- // src/actions/wallet/addChain.ts
22
- async function addChain(client, chain) {
23
- const { id, name, nativeCurrency, rpcUrls, blockExplorers } = chain;
24
- await client.request({
25
- method: "wallet_addEthereumChain",
26
- params: [
27
- {
28
- chainId: numberToHex(id),
29
- chainName: name,
30
- nativeCurrency,
31
- rpcUrls: rpcUrls.default.http,
32
- blockExplorerUrls: blockExplorers ? Object.values(blockExplorers).map(({ url }) => url) : void 0
33
- }
34
- ]
35
- });
36
- }
37
-
38
- // src/actions/wallet/getAccounts.ts
39
- async function getAccounts(client) {
40
- const addresses = await client.request({ method: "eth_accounts" });
41
- return addresses.map((address) => checksumAddress(address));
42
- }
43
-
44
- // src/actions/wallet/getPermissions.ts
45
- async function getPermissions(client) {
46
- const permissions = await client.request({ method: "wallet_getPermissions" });
47
- return permissions;
48
- }
49
-
50
- // src/actions/wallet/requestAccounts.ts
51
- async function requestAccounts(client) {
52
- const addresses = await client.request({ method: "eth_requestAccounts" });
53
- return addresses.map((address) => getAddress(address));
54
- }
55
-
56
- // src/actions/wallet/requestPermissions.ts
57
- async function requestPermissions(client, permissions) {
58
- return client.request({
59
- method: "wallet_requestPermissions",
60
- params: [permissions]
61
- });
62
- }
63
-
64
- // src/actions/wallet/sendTransaction.ts
65
- async function sendTransaction(client, {
66
- chain,
67
- from,
68
- accessList,
69
- data,
70
- gas,
71
- gasPrice,
72
- maxFeePerGas,
73
- maxPriorityFeePerGas,
74
- nonce,
75
- to,
76
- value,
77
- ...rest
78
- }) {
79
- if (maxFeePerGas !== void 0 && maxPriorityFeePerGas !== void 0 && maxFeePerGas < maxPriorityFeePerGas)
80
- throw new InvalidGasArgumentsError();
81
- const request_ = format(
82
- {
83
- from,
84
- accessList,
85
- data,
86
- gas,
87
- gasPrice,
88
- maxFeePerGas,
89
- maxPriorityFeePerGas,
90
- nonce,
91
- to,
92
- value,
93
- ...rest
94
- },
95
- {
96
- formatter: chain?.formatters?.transactionRequest || formatTransactionRequest
97
- }
98
- );
99
- const hash = await client.request({
100
- method: "eth_sendTransaction",
101
- params: [request_]
102
- });
103
- return hash;
104
- }
105
- var InvalidGasArgumentsError = class extends BaseError {
106
- constructor() {
107
- super("`maxFeePerGas` cannot be less than `maxPriorityFeePerGas`");
108
- __publicField(this, "name", "InvalidGasArgumentsError");
109
- }
110
- };
111
-
112
- // src/actions/wallet/signMessage.ts
113
- async function signMessage(client, { from, data: data_ }) {
114
- let data;
115
- if (typeof data_ === "string") {
116
- if (!data_.startsWith("0x"))
117
- throw new BaseError(
118
- `data ("${data_}") must be a hex value. Encode it first to a hex with the \`encodeHex\` util.`,
119
- {
120
- docsPath: "/TODO"
121
- }
122
- );
123
- data = data_;
124
- } else {
125
- data = encodeHex(data_);
126
- }
127
- const signed = await client.request({
128
- method: "personal_sign",
129
- params: [data, from]
130
- });
131
- return signed;
132
- }
133
-
134
- // src/actions/wallet/switchChain.ts
135
- async function switchChain(client, { id }) {
136
- await client.request({
137
- method: "wallet_switchEthereumChain",
138
- params: [
139
- {
140
- chainId: numberToHex(id)
141
- }
142
- ]
143
- });
144
- }
145
-
146
- // src/actions/wallet/watchAsset.ts
147
- async function watchAsset(client, params) {
148
- const added = await client.request({
149
- method: "wallet_watchAsset",
150
- params: [params]
151
- });
152
- return added;
153
- }
29
+ } from "./chunk-5Q6FSUU2.mjs";
154
30
 
155
31
  // src/actions/public/call.ts
156
32
  async function call(client, {
@@ -172,6 +48,7 @@ async function call(client, {
172
48
  if (maxFeePerGas !== void 0 && maxPriorityFeePerGas !== void 0 && maxFeePerGas < maxPriorityFeePerGas)
173
49
  throw new InvalidGasArgumentsError();
174
50
  const blockNumberHex = blockNumber ? numberToHex(blockNumber) : void 0;
51
+ const formatter = chain?.formatters?.transactionRequest;
175
52
  const request_ = format(
176
53
  {
177
54
  from,
@@ -184,10 +61,10 @@ async function call(client, {
184
61
  nonce,
185
62
  to,
186
63
  value,
187
- ...rest
64
+ ...extract(rest, { formatter })
188
65
  },
189
66
  {
190
- formatter: chain?.formatters?.transactionRequest || formatTransactionRequest
67
+ formatter: formatter || formatTransactionRequest
191
68
  }
192
69
  );
193
70
  const response = await client.request({
@@ -199,6 +76,51 @@ async function call(client, {
199
76
  return { data: response };
200
77
  }
201
78
 
79
+ // src/actions/public/simulateContract.ts
80
+ async function simulateContract(client, {
81
+ abi,
82
+ address,
83
+ args,
84
+ functionName,
85
+ ...callRequest
86
+ }) {
87
+ const calldata = encodeFunctionData({
88
+ abi,
89
+ args,
90
+ functionName
91
+ });
92
+ try {
93
+ const { data } = await call(client, {
94
+ data: calldata,
95
+ to: address,
96
+ ...callRequest
97
+ });
98
+ const result = decodeFunctionResult({
99
+ abi,
100
+ functionName,
101
+ data: data || "0x"
102
+ });
103
+ return {
104
+ result,
105
+ request: {
106
+ abi,
107
+ address,
108
+ args,
109
+ functionName,
110
+ ...callRequest
111
+ }
112
+ };
113
+ } catch (err) {
114
+ throw getContractError(err, {
115
+ abi,
116
+ address,
117
+ args,
118
+ functionName,
119
+ sender: callRequest.from
120
+ });
121
+ }
122
+ }
123
+
202
124
  // src/actions/public/createPendingTransactionFilter.ts
203
125
  async function createPendingTransactionFilter(client) {
204
126
  const id = await client.request({
@@ -215,6 +137,80 @@ async function createBlockFilter(client) {
215
137
  return { id, type: "block" };
216
138
  }
217
139
 
140
+ // src/actions/public/createEventFilter.ts
141
+ async function createEventFilter(client, {
142
+ address,
143
+ event,
144
+ args,
145
+ fromBlock,
146
+ toBlock
147
+ } = {}) {
148
+ let topics = [];
149
+ if (event) {
150
+ topics = buildFilterTopics({ event, args });
151
+ }
152
+ const id = await client.request({
153
+ method: "eth_newFilter",
154
+ params: [
155
+ {
156
+ address,
157
+ fromBlock: typeof fromBlock === "bigint" ? numberToHex(fromBlock) : fromBlock,
158
+ toBlock: typeof toBlock === "bigint" ? numberToHex(toBlock) : toBlock,
159
+ ...topics.length ? { topics } : {}
160
+ }
161
+ ]
162
+ });
163
+ return { id, type: "event" };
164
+ }
165
+ function buildFilterTopics({
166
+ event,
167
+ args: _args
168
+ }) {
169
+ const signature = getEventSignature(event);
170
+ return [signature];
171
+ }
172
+
173
+ // src/actions/public/createContractEventFilter.ts
174
+ async function createContractEventFilter(client, {
175
+ address,
176
+ abi,
177
+ args,
178
+ eventName,
179
+ fromBlock,
180
+ toBlock
181
+ }) {
182
+ const topics = eventName ? encodeEventTopics({
183
+ abi,
184
+ args,
185
+ eventName
186
+ }) : void 0;
187
+ const id = await client.request({
188
+ method: "eth_newFilter",
189
+ params: [
190
+ {
191
+ address,
192
+ fromBlock: typeof fromBlock === "bigint" ? numberToHex(fromBlock) : fromBlock,
193
+ toBlock: typeof toBlock === "bigint" ? numberToHex(toBlock) : toBlock,
194
+ topics
195
+ }
196
+ ]
197
+ });
198
+ return { id, type: "event" };
199
+ }
200
+
201
+ // src/actions/public/deployContract.ts
202
+ function deployContract(walletClient, { abi, args, bytecode, ...request }) {
203
+ const calldata = encodeDeployData({
204
+ abi,
205
+ args,
206
+ bytecode
207
+ });
208
+ return sendTransaction(walletClient, {
209
+ ...request,
210
+ data: calldata
211
+ });
212
+ }
213
+
218
214
  // src/actions/public/estimateGas.ts
219
215
  async function estimateGas(client, {
220
216
  blockNumber,
@@ -282,20 +278,6 @@ async function getBlock(client, {
282
278
  formatter: client.chain?.formatters?.block || formatBlock
283
279
  });
284
280
  }
285
- var BlockNotFoundError = class extends BaseError {
286
- constructor({
287
- blockHash,
288
- blockNumber
289
- }) {
290
- let identifier = "Block";
291
- if (blockHash)
292
- identifier = `Block at hash "${blockHash}"`;
293
- if (blockNumber)
294
- identifier = `Block at number "${blockNumber}"`;
295
- super(`${identifier} could not be found.`);
296
- __publicField(this, "name", "BlockNotFoundError");
297
- }
298
- };
299
281
 
300
282
  // src/actions/public/getBlockNumber.ts
301
283
  var cacheKey = (id) => `blockNumber.${id}`;
@@ -334,6 +316,18 @@ async function getBlockTransactionCount(client, {
334
316
  return hexToNumber(count);
335
317
  }
336
318
 
319
+ // src/actions/public/getBytecode.ts
320
+ async function getBytecode(client, { address, blockNumber, blockTag = "latest" }) {
321
+ const blockNumberHex = blockNumber !== void 0 ? numberToHex(blockNumber) : void 0;
322
+ const hex = await client.request({
323
+ method: "eth_getCode",
324
+ params: [address, blockNumberHex || blockTag]
325
+ });
326
+ if (hex === "0x")
327
+ return void 0;
328
+ return hex;
329
+ }
330
+
337
331
  // src/actions/public/getChainId.ts
338
332
  async function getChainId(client) {
339
333
  const chainIdHex = await client.request({ method: "eth_chainId" });
@@ -387,6 +381,51 @@ async function getGasPrice(client) {
387
381
  return BigInt(gasPrice);
388
382
  }
389
383
 
384
+ // src/actions/public/getLogs.ts
385
+ async function getLogs(client, {
386
+ address,
387
+ blockHash,
388
+ fromBlock,
389
+ toBlock,
390
+ event,
391
+ args
392
+ } = {}) {
393
+ let topics = [];
394
+ if (event) {
395
+ topics = buildFilterTopics({ event, args });
396
+ }
397
+ let logs;
398
+ if (blockHash) {
399
+ logs = await client.request({
400
+ method: "eth_getLogs",
401
+ params: [{ address, topics, blockHash }]
402
+ });
403
+ } else {
404
+ logs = await client.request({
405
+ method: "eth_getLogs",
406
+ params: [
407
+ {
408
+ address,
409
+ topics,
410
+ fromBlock: typeof fromBlock === "bigint" ? numberToHex(fromBlock) : fromBlock,
411
+ toBlock: typeof toBlock === "bigint" ? numberToHex(toBlock) : toBlock
412
+ }
413
+ ]
414
+ });
415
+ }
416
+ return logs.map(formatLog);
417
+ }
418
+
419
+ // src/actions/public/getStorageAt.ts
420
+ async function getStorageAt(client, { address, blockNumber, blockTag = "latest", slot }) {
421
+ const blockNumberHex = blockNumber !== void 0 ? numberToHex(blockNumber) : void 0;
422
+ const data = await client.request({
423
+ method: "eth_getStorageAt",
424
+ params: [address, slot, blockNumberHex || blockTag]
425
+ });
426
+ return data;
427
+ }
428
+
390
429
  // src/actions/public/getTransaction.ts
391
430
  async function getTransaction(client, {
392
431
  blockHash,
@@ -425,27 +464,6 @@ async function getTransaction(client, {
425
464
  formatter: client.chain?.formatters?.transaction || formatTransaction
426
465
  });
427
466
  }
428
- var TransactionNotFoundError = class extends BaseError {
429
- constructor({
430
- blockHash,
431
- blockNumber,
432
- blockTag,
433
- hash,
434
- index
435
- }) {
436
- let identifier = "Transaction";
437
- if (blockTag && index !== void 0)
438
- identifier = `Transaction at block time "${blockTag}" at index "${index}"`;
439
- if (blockHash && index !== void 0)
440
- identifier = `Transaction at block hash "${blockHash}" at index "${index}"`;
441
- if (blockNumber && index !== void 0)
442
- identifier = `Transaction at block number "${blockNumber}" at index "${index}"`;
443
- if (hash)
444
- identifier = `Transaction with hash "${hash}"`;
445
- super(`${identifier} could not be found.`);
446
- __publicField(this, "name", "TransactionNotFoundError");
447
- }
448
- };
449
467
 
450
468
  // src/actions/public/getTransactionConfirmations.ts
451
469
  async function getTransactionConfirmations(client, { hash, transactionReceipt }) {
@@ -465,7 +483,7 @@ async function getTransactionCount(client, { address, blockTag = "latest", block
465
483
  method: "eth_getTransactionCount",
466
484
  params: [address, blockNumber ? numberToHex(blockNumber) : blockTag]
467
485
  });
468
- return hexToNumber(count ?? "0x0");
486
+ return hexToNumber(count);
469
487
  }
470
488
 
471
489
  // src/actions/public/getTransactionReceipt.ts
@@ -480,14 +498,40 @@ async function getTransactionReceipt(client, { hash }) {
480
498
  formatter: client.chain?.formatters?.transactionReceipt || formatTransactionReceipt
481
499
  });
482
500
  }
483
- var TransactionReceiptNotFoundError = class extends BaseError {
484
- constructor({ hash }) {
485
- super(
486
- `Transaction receipt with hash "${hash}" could not be found. The Transaction may not be processed on a block yet.`
487
- );
488
- __publicField(this, "name", "TransactionReceiptNotFoundError");
501
+
502
+ // src/actions/public/readContract.ts
503
+ async function readContract(client, {
504
+ abi,
505
+ address,
506
+ args,
507
+ functionName,
508
+ ...callRequest
509
+ }) {
510
+ const calldata = encodeFunctionData({
511
+ abi,
512
+ args,
513
+ functionName
514
+ });
515
+ try {
516
+ const { data } = await call(client, {
517
+ data: calldata,
518
+ to: address,
519
+ ...callRequest
520
+ });
521
+ return decodeFunctionResult({
522
+ abi,
523
+ functionName,
524
+ data: data || "0x"
525
+ });
526
+ } catch (err) {
527
+ throw getContractError(err, {
528
+ abi,
529
+ address,
530
+ args,
531
+ functionName
532
+ });
489
533
  }
490
- };
534
+ }
491
535
 
492
536
  // src/actions/public/uninstallFilter.ts
493
537
  async function uninstallFilter(client, { filter }) {
@@ -539,106 +583,6 @@ function observe(observerId, callbacks, fn) {
539
583
  return unwatch;
540
584
  }
541
585
 
542
- // src/actions/public/waitForTransactionReceipt.ts
543
- async function waitForTransactionReceipt(client, {
544
- confirmations = 1,
545
- hash,
546
- onReplaced,
547
- pollingInterval = client.pollingInterval,
548
- timeout
549
- }) {
550
- const observerId = JSON.stringify([
551
- "waitForTransactionReceipt",
552
- client.uid,
553
- hash
554
- ]);
555
- let transaction;
556
- let replacedTransaction;
557
- let receipt;
558
- return new Promise((resolve, reject) => {
559
- if (timeout)
560
- setTimeout(
561
- () => reject(new WaitForTransactionReceiptTimeoutError({ hash })),
562
- timeout
563
- );
564
- const unobserve = observe(
565
- observerId,
566
- { onReplaced, resolve, reject },
567
- (emit) => {
568
- const unwatch = watchBlockNumber(client, {
569
- emitMissed: true,
570
- emitOnBegin: true,
571
- pollingInterval,
572
- async onBlockNumber(blockNumber) {
573
- const done = async (fn) => {
574
- unwatch();
575
- fn();
576
- unobserve();
577
- };
578
- try {
579
- if (receipt) {
580
- if (blockNumber - receipt.blockNumber + 1n < confirmations)
581
- return;
582
- done(() => emit.resolve(receipt));
583
- return;
584
- }
585
- transaction = await getTransaction(client, { hash });
586
- receipt = await getTransactionReceipt(client, { hash });
587
- if (blockNumber - receipt.blockNumber + 1n < confirmations)
588
- return;
589
- done(() => emit.resolve(receipt));
590
- } catch (err) {
591
- if (transaction && (err instanceof TransactionNotFoundError || err instanceof TransactionReceiptNotFoundError)) {
592
- replacedTransaction = transaction;
593
- const block = await getBlock(client, {
594
- blockNumber,
595
- includeTransactions: true
596
- });
597
- const replacementTransaction = block.transactions.find(
598
- ({ from, nonce }) => from === replacedTransaction.from && nonce === replacedTransaction.nonce
599
- );
600
- if (!replacementTransaction)
601
- return;
602
- receipt = await getTransactionReceipt(client, {
603
- hash: replacementTransaction.hash
604
- });
605
- if (blockNumber - receipt.blockNumber + 1n < confirmations)
606
- return;
607
- let reason = "replaced";
608
- if (replacementTransaction.to === replacedTransaction.to && replacementTransaction.value === replacedTransaction.value) {
609
- reason = "repriced";
610
- } else if (replacementTransaction.from === replacementTransaction.to && replacementTransaction.value === 0n) {
611
- reason = "cancelled";
612
- }
613
- done(() => {
614
- emit.onReplaced?.({
615
- reason,
616
- replacedTransaction,
617
- transaction: replacementTransaction,
618
- transactionReceipt: receipt
619
- });
620
- emit.resolve(receipt);
621
- });
622
- } else {
623
- done(() => emit.reject(err));
624
- }
625
- }
626
- }
627
- });
628
- return unwatch;
629
- }
630
- );
631
- });
632
- }
633
- var WaitForTransactionReceiptTimeoutError = class extends BaseError {
634
- constructor({ hash }) {
635
- super(
636
- `Timed out while waiting for transaction with hash "${hash}" to be confirmed.`
637
- );
638
- __publicField(this, "name", "WaitForTransactionReceiptTimeoutError");
639
- }
640
- };
641
-
642
586
  // src/utils/poll.ts
643
587
  function poll(fn, { emitOnBegin, initialWaitTime, interval }) {
644
588
  let active = true;
@@ -794,6 +738,8 @@ function watchPendingTransactions(client, {
794
738
  }
795
739
  }
796
740
  const hashes = await getFilterChanges(client, { filter });
741
+ if (hashes.length === 0)
742
+ return;
797
743
  if (batch)
798
744
  emit.onTransactions(hashes);
799
745
  else
@@ -815,284 +761,129 @@ function watchPendingTransactions(client, {
815
761
  });
816
762
  }
817
763
 
818
- // src/actions/test/dropTransaction.ts
819
- async function dropTransaction(client, { hash }) {
820
- return await client.request({
821
- method: `${client.mode}_dropTransaction`,
822
- params: [hash]
823
- });
824
- }
825
-
826
- // src/actions/test/getAutomine.ts
827
- async function getAutomine(client) {
828
- return await client.request({
829
- method: `${client.mode}_getAutomine`
830
- });
831
- }
832
-
833
- // src/actions/test/getTxpoolContent.ts
834
- async function getTxpoolContent(client) {
835
- return await client.request({
836
- method: "txpool_content"
837
- });
838
- }
839
-
840
- // src/actions/test/getTxpoolStatus.ts
841
- async function getTxpoolStatus(client) {
842
- const { pending, queued } = await client.request({
843
- method: "txpool_status"
844
- });
845
- return {
846
- pending: hexToNumber(pending),
847
- queued: hexToNumber(queued)
848
- };
849
- }
850
-
851
- // src/actions/test/impersonateAccount.ts
852
- async function impersonateAccount(client, { address }) {
853
- return await client.request({
854
- method: `${client.mode}_impersonateAccount`,
855
- params: [address]
856
- });
857
- }
858
-
859
- // src/actions/test/increaseTime.ts
860
- async function increaseTime(client, { seconds }) {
861
- return await client.request({
862
- method: "evm_increaseTime",
863
- params: [numberToHex(seconds)]
864
- });
865
- }
866
-
867
- // src/actions/test/inspectTxpool.ts
868
- async function inspectTxpool(client) {
869
- return await client.request({
870
- method: "txpool_inspect"
871
- });
872
- }
873
-
874
- // src/actions/test/mine.ts
875
- async function mine(client, { blocks, interval }) {
876
- return await client.request({
877
- method: `${client.mode}_mine`,
878
- params: [numberToHex(blocks), numberToHex(interval || 0)]
879
- });
880
- }
881
-
882
- // src/actions/test/removeBlockTimestampInterval.ts
883
- async function removeBlockTimestampInterval(client) {
884
- return await client.request({
885
- method: `${client.mode}_removeBlockTimestampInterval`
886
- });
887
- }
888
-
889
- // src/actions/test/reset.ts
890
- async function reset(client, { blockNumber, jsonRpcUrl } = {}) {
891
- return await client.request({
892
- method: `${client.mode}_reset`,
893
- params: [{ forking: { blockNumber: Number(blockNumber), jsonRpcUrl } }]
894
- });
895
- }
896
-
897
- // src/actions/test/revert.ts
898
- async function revert(client, { id }) {
899
- return await client.request({
900
- method: "evm_revert",
901
- params: [id]
902
- });
903
- }
904
-
905
- // src/actions/test/sendUnsignedTransaction.ts
906
- async function sendUnsignedTransaction(client, request) {
907
- const request_ = formatTransactionRequest(request);
908
- const hash = await client.request({
909
- method: "eth_sendUnsignedTransaction",
910
- params: [request_]
911
- });
912
- return hash;
913
- }
914
-
915
- // src/actions/test/setAutomine.ts
916
- async function setAutomine(client, enabled) {
917
- return await client.request({
918
- method: "evm_setAutomine",
919
- params: [enabled]
920
- });
921
- }
922
-
923
- // src/actions/test/setBalance.ts
924
- async function setBalance(client, { address, value }) {
925
- return await client.request({
926
- method: `${client.mode}_setBalance`,
927
- params: [address, numberToHex(value)]
928
- });
929
- }
930
-
931
- // src/actions/test/setBlockGasLimit.ts
932
- async function setBlockGasLimit(client, { gasLimit }) {
933
- return await client.request({
934
- method: "evm_setBlockGasLimit",
935
- params: [numberToHex(gasLimit)]
936
- });
937
- }
938
-
939
- // src/actions/test/setBlockTimestampInterval.ts
940
- async function setBlockTimestampInterval(client, { interval }) {
941
- return await client.request({
942
- method: `${client.mode}_setBlockTimestampInterval`,
943
- params: [interval]
944
- });
945
- }
946
-
947
- // src/actions/test/setCode.ts
948
- async function setCode(client, { address, bytecode }) {
949
- return await client.request({
950
- method: `${client.mode}_setCode`,
951
- params: [address, bytecode]
952
- });
953
- }
954
-
955
- // src/actions/test/setCoinbase.ts
956
- async function setCoinbase(client, { address }) {
957
- return await client.request({
958
- method: `${client.mode}_setCoinbase`,
959
- params: [address]
960
- });
961
- }
962
-
963
- // src/actions/test/setIntervalMining.ts
964
- async function setIntervalMining(client, { interval }) {
965
- return await client.request({
966
- method: "evm_setIntervalMining",
967
- params: [interval]
968
- });
969
- }
970
-
971
- // src/actions/test/setLoggingEnabled.ts
972
- async function setLoggingEnabled(client, enabled) {
973
- return await client.request({
974
- method: `${client.mode}_setLoggingEnabled`,
975
- params: [enabled]
976
- });
977
- }
978
-
979
- // src/actions/test/setMinGasPrice.ts
980
- async function setMinGasPrice(client, { gasPrice }) {
981
- return await client.request({
982
- method: `${client.mode}_setMinGasPrice`,
983
- params: [numberToHex(gasPrice)]
984
- });
985
- }
986
-
987
- // src/actions/test/setNextBlockBaseFeePerGas.ts
988
- async function setNextBlockBaseFeePerGas(client, { baseFeePerGas }) {
989
- return await client.request({
990
- method: `${client.mode}_setNextBlockBaseFeePerGas`,
991
- params: [numberToHex(baseFeePerGas)]
992
- });
993
- }
994
-
995
- // src/actions/test/setNextBlockTimestamp.ts
996
- async function setNextBlockTimestamp(client, { timestamp }) {
997
- return await client.request({
998
- method: "evm_setNextBlockTimestamp",
999
- params: [numberToHex(timestamp)]
1000
- });
1001
- }
1002
-
1003
- // src/actions/test/setNonce.ts
1004
- async function setNonce(client, { address, nonce }) {
1005
- return await client.request({
1006
- method: `${client.mode}_setNonce`,
1007
- params: [address, numberToHex(nonce)]
1008
- });
1009
- }
1010
-
1011
- // src/actions/test/setStorageAt.ts
1012
- async function setStorageAt(client, { address, index, value }) {
1013
- return await client.request({
1014
- method: `${client.mode}_setStorageAt`,
1015
- params: [
1016
- address,
1017
- typeof index === "number" ? numberToHex(index) : index,
1018
- value
1019
- ]
1020
- });
1021
- }
1022
-
1023
- // src/actions/test/snapshot.ts
1024
- async function snapshot(client) {
1025
- return await client.request({
1026
- method: "evm_snapshot"
1027
- });
1028
- }
1029
-
1030
- // src/actions/test/stopImpersonatingAccount.ts
1031
- async function stopImpersonatingAccount(client, { address }) {
1032
- return await client.request({
1033
- method: `${client.mode}_stopImpersonatingAccount`,
1034
- params: [address]
764
+ // src/actions/public/waitForTransactionReceipt.ts
765
+ async function waitForTransactionReceipt(client, {
766
+ confirmations = 1,
767
+ hash,
768
+ onReplaced,
769
+ pollingInterval = client.pollingInterval,
770
+ timeout
771
+ }) {
772
+ const observerId = JSON.stringify([
773
+ "waitForTransactionReceipt",
774
+ client.uid,
775
+ hash
776
+ ]);
777
+ let transaction;
778
+ let replacedTransaction;
779
+ let receipt;
780
+ return new Promise((resolve, reject) => {
781
+ if (timeout)
782
+ setTimeout(
783
+ () => reject(new WaitForTransactionReceiptTimeoutError({ hash })),
784
+ timeout
785
+ );
786
+ const unobserve = observe(
787
+ observerId,
788
+ { onReplaced, resolve, reject },
789
+ (emit) => {
790
+ const unwatch = watchBlockNumber(client, {
791
+ emitMissed: true,
792
+ emitOnBegin: true,
793
+ pollingInterval,
794
+ async onBlockNumber(blockNumber) {
795
+ const done = async (fn) => {
796
+ unwatch();
797
+ fn();
798
+ unobserve();
799
+ };
800
+ try {
801
+ if (receipt) {
802
+ if (blockNumber - receipt.blockNumber + 1n < confirmations)
803
+ return;
804
+ done(() => emit.resolve(receipt));
805
+ return;
806
+ }
807
+ transaction = await getTransaction(client, { hash });
808
+ receipt = await getTransactionReceipt(client, { hash });
809
+ if (blockNumber - receipt.blockNumber + 1n < confirmations)
810
+ return;
811
+ done(() => emit.resolve(receipt));
812
+ } catch (err) {
813
+ if (transaction && (err instanceof TransactionNotFoundError || err instanceof TransactionReceiptNotFoundError)) {
814
+ replacedTransaction = transaction;
815
+ const block = await getBlock(client, {
816
+ blockNumber,
817
+ includeTransactions: true
818
+ });
819
+ const replacementTransaction = block.transactions.find(
820
+ ({ from, nonce }) => from === replacedTransaction.from && nonce === replacedTransaction.nonce
821
+ );
822
+ if (!replacementTransaction)
823
+ return;
824
+ receipt = await getTransactionReceipt(client, {
825
+ hash: replacementTransaction.hash
826
+ });
827
+ if (blockNumber - receipt.blockNumber + 1n < confirmations)
828
+ return;
829
+ let reason = "replaced";
830
+ if (replacementTransaction.to === replacedTransaction.to && replacementTransaction.value === replacedTransaction.value) {
831
+ reason = "repriced";
832
+ } else if (replacementTransaction.from === replacementTransaction.to && replacementTransaction.value === 0n) {
833
+ reason = "cancelled";
834
+ }
835
+ done(() => {
836
+ emit.onReplaced?.({
837
+ reason,
838
+ replacedTransaction,
839
+ transaction: replacementTransaction,
840
+ transactionReceipt: receipt
841
+ });
842
+ emit.resolve(receipt);
843
+ });
844
+ } else {
845
+ done(() => emit.reject(err));
846
+ }
847
+ }
848
+ }
849
+ });
850
+ return unwatch;
851
+ }
852
+ );
1035
853
  });
1036
854
  }
1037
855
 
1038
856
  export {
1039
- addChain,
1040
- getAccounts,
1041
- getPermissions,
1042
- requestAccounts,
1043
- requestPermissions,
1044
- sendTransaction,
1045
- signMessage,
1046
- switchChain,
1047
- watchAsset,
1048
857
  call,
858
+ simulateContract,
1049
859
  createPendingTransactionFilter,
1050
860
  createBlockFilter,
861
+ createEventFilter,
862
+ createContractEventFilter,
863
+ deployContract,
1051
864
  estimateGas,
1052
865
  getBalance,
1053
866
  getBlock,
1054
867
  getBlockNumberCache,
1055
868
  getBlockNumber,
1056
869
  getBlockTransactionCount,
870
+ getBytecode,
1057
871
  getChainId,
1058
872
  getFeeHistory,
1059
873
  getFilterChanges,
1060
874
  getFilterLogs,
1061
875
  getGasPrice,
876
+ getLogs,
877
+ getStorageAt,
1062
878
  getTransaction,
1063
879
  getTransactionConfirmations,
1064
880
  getTransactionCount,
1065
881
  getTransactionReceipt,
882
+ readContract,
1066
883
  uninstallFilter,
1067
884
  waitForTransactionReceipt,
1068
885
  watchBlockNumber,
1069
886
  watchBlocks,
1070
- watchPendingTransactions,
1071
- dropTransaction,
1072
- getAutomine,
1073
- getTxpoolContent,
1074
- getTxpoolStatus,
1075
- impersonateAccount,
1076
- increaseTime,
1077
- inspectTxpool,
1078
- mine,
1079
- removeBlockTimestampInterval,
1080
- reset,
1081
- revert,
1082
- sendUnsignedTransaction,
1083
- setAutomine,
1084
- setBalance,
1085
- setBlockGasLimit,
1086
- setBlockTimestampInterval,
1087
- setCode,
1088
- setCoinbase,
1089
- setIntervalMining,
1090
- setLoggingEnabled,
1091
- setMinGasPrice,
1092
- setNextBlockBaseFeePerGas,
1093
- setNextBlockTimestamp,
1094
- setNonce,
1095
- setStorageAt,
1096
- snapshot,
1097
- stopImpersonatingAccount
887
+ watchPendingTransactions
1098
888
  };
889
+ //# sourceMappingURL=chunk-MYQNZSWD.mjs.map