viem 0.0.1-cjs.10 → 0.0.1-sushi.26

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