viem 1.0.2 → 1.0.3

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 (355) hide show
  1. package/dist/cjs/chains.js.map +1 -1
  2. package/dist/cjs/errors/base.js +4 -11
  3. package/dist/cjs/errors/base.js.map +1 -1
  4. package/dist/cjs/errors/version.js +1 -1
  5. package/dist/cjs/utils/encoding/toBytes.js.map +1 -1
  6. package/dist/cjs/utils/encoding/toHex.js.map +1 -1
  7. package/dist/cjs/utils/formatters/block.js +3 -1
  8. package/dist/cjs/utils/formatters/block.js.map +1 -1
  9. package/dist/cjs/utils/formatters/transaction.js +3 -1
  10. package/dist/cjs/utils/formatters/transaction.js.map +1 -1
  11. package/dist/cjs/utils/formatters/transactionReceipt.js.map +1 -1
  12. package/dist/cjs/utils/formatters/transactionRequest.js.map +1 -1
  13. package/dist/cjs/utils/observe.js.map +1 -1
  14. package/dist/cjs/utils/promise/createBatchScheduler.js.map +1 -1
  15. package/dist/cjs/utils/promise/withCache.js.map +1 -1
  16. package/dist/cjs/utils/rpc.js.map +1 -1
  17. package/dist/cjs/utils/unit/parseUnits.js +1 -2
  18. package/dist/cjs/utils/unit/parseUnits.js.map +1 -1
  19. package/dist/esm/accounts/generateMnemonic.js +7 -0
  20. package/dist/esm/accounts/generateMnemonic.js.map +1 -1
  21. package/dist/esm/accounts/generatePrivateKey.js +5 -0
  22. package/dist/esm/accounts/generatePrivateKey.js.map +1 -1
  23. package/dist/esm/accounts/hdKeyToAccount.js +5 -0
  24. package/dist/esm/accounts/hdKeyToAccount.js.map +1 -1
  25. package/dist/esm/accounts/mnemonicToAccount.js +5 -0
  26. package/dist/esm/accounts/mnemonicToAccount.js.map +1 -1
  27. package/dist/esm/accounts/privateKeyToAccount.js +5 -0
  28. package/dist/esm/accounts/privateKeyToAccount.js.map +1 -1
  29. package/dist/esm/accounts/toAccount.js +5 -0
  30. package/dist/esm/accounts/toAccount.js.map +1 -1
  31. package/dist/esm/accounts/utils/publicKeyToAddress.js +7 -0
  32. package/dist/esm/accounts/utils/publicKeyToAddress.js.map +1 -1
  33. package/dist/esm/accounts/utils/sign.js +8 -0
  34. package/dist/esm/accounts/utils/sign.js.map +1 -1
  35. package/dist/esm/accounts/utils/signMessage.js +6 -0
  36. package/dist/esm/accounts/utils/signMessage.js.map +1 -1
  37. package/dist/esm/accounts/utils/signTypedData.js +6 -0
  38. package/dist/esm/accounts/utils/signTypedData.js.map +1 -1
  39. package/dist/esm/actions/ens/getEnsAddress.js +28 -0
  40. package/dist/esm/actions/ens/getEnsAddress.js.map +1 -1
  41. package/dist/esm/actions/ens/getEnsAvatar.js +28 -0
  42. package/dist/esm/actions/ens/getEnsAvatar.js.map +1 -1
  43. package/dist/esm/actions/ens/getEnsName.js +27 -0
  44. package/dist/esm/actions/ens/getEnsName.js.map +1 -1
  45. package/dist/esm/actions/ens/getEnsResolver.js +28 -0
  46. package/dist/esm/actions/ens/getEnsResolver.js.map +1 -1
  47. package/dist/esm/actions/ens/getEnsText.js +29 -0
  48. package/dist/esm/actions/ens/getEnsText.js.map +1 -1
  49. package/dist/esm/actions/getContract.js +36 -0
  50. package/dist/esm/actions/getContract.js.map +1 -1
  51. package/dist/esm/actions/public/call.js +31 -0
  52. package/dist/esm/actions/public/call.js.map +1 -1
  53. package/dist/esm/actions/public/createBlockFilter.js +21 -0
  54. package/dist/esm/actions/public/createBlockFilter.js.map +1 -1
  55. package/dist/esm/actions/public/createContractEventFilter.js +22 -0
  56. package/dist/esm/actions/public/createContractEventFilter.js.map +1 -1
  57. package/dist/esm/actions/public/createEventFilter.js +23 -0
  58. package/dist/esm/actions/public/createEventFilter.js.map +1 -1
  59. package/dist/esm/actions/public/createPendingTransactionFilter.js +21 -0
  60. package/dist/esm/actions/public/createPendingTransactionFilter.js.map +1 -1
  61. package/dist/esm/actions/public/estimateContractGas.js +27 -0
  62. package/dist/esm/actions/public/estimateContractGas.js.map +1 -1
  63. package/dist/esm/actions/public/estimateGas.js +26 -0
  64. package/dist/esm/actions/public/estimateGas.js.map +1 -1
  65. package/dist/esm/actions/public/getBalance.js +35 -0
  66. package/dist/esm/actions/public/getBalance.js.map +1 -1
  67. package/dist/esm/actions/public/getBlock.js +24 -0
  68. package/dist/esm/actions/public/getBlock.js.map +1 -1
  69. package/dist/esm/actions/public/getBlockNumber.js +23 -0
  70. package/dist/esm/actions/public/getBlockNumber.js.map +1 -1
  71. package/dist/esm/actions/public/getBlockTransactionCount.js +23 -0
  72. package/dist/esm/actions/public/getBlockTransactionCount.js.map +1 -1
  73. package/dist/esm/actions/public/getBytecode.js +23 -0
  74. package/dist/esm/actions/public/getBytecode.js.map +1 -1
  75. package/dist/esm/actions/public/getChainId.js +21 -0
  76. package/dist/esm/actions/public/getChainId.js.map +1 -1
  77. package/dist/esm/actions/public/getFeeHistory.js +24 -0
  78. package/dist/esm/actions/public/getFeeHistory.js.map +1 -1
  79. package/dist/esm/actions/public/getFilterChanges.js +84 -0
  80. package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
  81. package/dist/esm/actions/public/getFilterLogs.js +29 -0
  82. package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
  83. package/dist/esm/actions/public/getGasPrice.js +20 -0
  84. package/dist/esm/actions/public/getGasPrice.js.map +1 -1
  85. package/dist/esm/actions/public/getLogs.js +24 -0
  86. package/dist/esm/actions/public/getLogs.js.map +1 -1
  87. package/dist/esm/actions/public/getStorageAt.js +24 -0
  88. package/dist/esm/actions/public/getStorageAt.js.map +1 -1
  89. package/dist/esm/actions/public/getTransaction.js +24 -0
  90. package/dist/esm/actions/public/getTransaction.js.map +1 -1
  91. package/dist/esm/actions/public/getTransactionConfirmations.js +24 -0
  92. package/dist/esm/actions/public/getTransactionConfirmations.js.map +1 -1
  93. package/dist/esm/actions/public/getTransactionCount.js +23 -0
  94. package/dist/esm/actions/public/getTransactionCount.js.map +1 -1
  95. package/dist/esm/actions/public/getTransactionReceipt.js +24 -0
  96. package/dist/esm/actions/public/getTransactionReceipt.js.map +1 -1
  97. package/dist/esm/actions/public/multicall.js +40 -0
  98. package/dist/esm/actions/public/multicall.js.map +1 -1
  99. package/dist/esm/actions/public/readContract.js +31 -0
  100. package/dist/esm/actions/public/readContract.js.map +1 -1
  101. package/dist/esm/actions/public/simulateContract.js +31 -0
  102. package/dist/esm/actions/public/simulateContract.js.map +1 -1
  103. package/dist/esm/actions/public/uninstallFilter.js +24 -0
  104. package/dist/esm/actions/public/uninstallFilter.js.map +1 -1
  105. package/dist/esm/actions/public/verifyHash.js +10 -0
  106. package/dist/esm/actions/public/verifyHash.js.map +1 -1
  107. package/dist/esm/actions/public/verifyMessage.js +11 -0
  108. package/dist/esm/actions/public/verifyMessage.js.map +1 -1
  109. package/dist/esm/actions/public/verifyTypedData.js +9 -0
  110. package/dist/esm/actions/public/verifyTypedData.js.map +1 -1
  111. package/dist/esm/actions/public/waitForTransactionReceipt.js +52 -0
  112. package/dist/esm/actions/public/waitForTransactionReceipt.js.map +1 -1
  113. package/dist/esm/actions/public/watchBlockNumber.js +31 -0
  114. package/dist/esm/actions/public/watchBlockNumber.js.map +1 -1
  115. package/dist/esm/actions/public/watchBlocks.js +35 -1
  116. package/dist/esm/actions/public/watchBlocks.js.map +1 -1
  117. package/dist/esm/actions/public/watchContractEvent.js +36 -0
  118. package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
  119. package/dist/esm/actions/public/watchEvent.js +38 -0
  120. package/dist/esm/actions/public/watchEvent.js.map +1 -1
  121. package/dist/esm/actions/public/watchPendingTransactions.js +29 -0
  122. package/dist/esm/actions/public/watchPendingTransactions.js.map +1 -1
  123. package/dist/esm/actions/test/dropTransaction.js +22 -0
  124. package/dist/esm/actions/test/dropTransaction.js.map +1 -1
  125. package/dist/esm/actions/test/getAutomine.js +20 -0
  126. package/dist/esm/actions/test/getAutomine.js.map +1 -1
  127. package/dist/esm/actions/test/getTxpoolContent.js +20 -0
  128. package/dist/esm/actions/test/getTxpoolContent.js.map +1 -1
  129. package/dist/esm/actions/test/getTxpoolStatus.js +20 -0
  130. package/dist/esm/actions/test/getTxpoolStatus.js.map +1 -1
  131. package/dist/esm/actions/test/impersonateAccount.js +22 -0
  132. package/dist/esm/actions/test/impersonateAccount.js.map +1 -1
  133. package/dist/esm/actions/test/increaseTime.js +22 -0
  134. package/dist/esm/actions/test/increaseTime.js.map +1 -1
  135. package/dist/esm/actions/test/inspectTxpool.js +20 -0
  136. package/dist/esm/actions/test/inspectTxpool.js.map +1 -1
  137. package/dist/esm/actions/test/mine.js +20 -0
  138. package/dist/esm/actions/test/mine.js.map +1 -1
  139. package/dist/esm/actions/test/removeBlockTimestampInterval.js +19 -0
  140. package/dist/esm/actions/test/removeBlockTimestampInterval.js.map +1 -1
  141. package/dist/esm/actions/test/reset.js +20 -0
  142. package/dist/esm/actions/test/reset.js.map +1 -1
  143. package/dist/esm/actions/test/revert.js +20 -0
  144. package/dist/esm/actions/test/revert.js.map +1 -1
  145. package/dist/esm/actions/test/sendUnsignedTransaction.js +25 -0
  146. package/dist/esm/actions/test/sendUnsignedTransaction.js.map +1 -1
  147. package/dist/esm/actions/test/setAutomine.js +19 -0
  148. package/dist/esm/actions/test/setAutomine.js.map +1 -1
  149. package/dist/esm/actions/test/setBalance.js +23 -0
  150. package/dist/esm/actions/test/setBalance.js.map +1 -1
  151. package/dist/esm/actions/test/setBlockGasLimit.js +20 -0
  152. package/dist/esm/actions/test/setBlockGasLimit.js.map +1 -1
  153. package/dist/esm/actions/test/setBlockTimestampInterval.js +20 -0
  154. package/dist/esm/actions/test/setBlockTimestampInterval.js.map +1 -1
  155. package/dist/esm/actions/test/setCode.js +23 -0
  156. package/dist/esm/actions/test/setCode.js.map +1 -1
  157. package/dist/esm/actions/test/setCoinbase.js +22 -0
  158. package/dist/esm/actions/test/setCoinbase.js.map +1 -1
  159. package/dist/esm/actions/test/setIntervalMining.js +20 -0
  160. package/dist/esm/actions/test/setIntervalMining.js.map +1 -1
  161. package/dist/esm/actions/test/setLoggingEnabled.js +19 -0
  162. package/dist/esm/actions/test/setLoggingEnabled.js.map +1 -1
  163. package/dist/esm/actions/test/setMinGasPrice.js +24 -0
  164. package/dist/esm/actions/test/setMinGasPrice.js.map +1 -1
  165. package/dist/esm/actions/test/setNextBlockBaseFeePerGas.js +22 -0
  166. package/dist/esm/actions/test/setNextBlockBaseFeePerGas.js.map +1 -1
  167. package/dist/esm/actions/test/setNextBlockTimestamp.js +20 -0
  168. package/dist/esm/actions/test/setNextBlockTimestamp.js.map +1 -1
  169. package/dist/esm/actions/test/setNonce.js +23 -0
  170. package/dist/esm/actions/test/setNonce.js.map +1 -1
  171. package/dist/esm/actions/test/setRpcUrl.js +20 -0
  172. package/dist/esm/actions/test/setRpcUrl.js.map +1 -1
  173. package/dist/esm/actions/test/setStorageAt.js +24 -0
  174. package/dist/esm/actions/test/setStorageAt.js.map +1 -1
  175. package/dist/esm/actions/test/snapshot.js +19 -0
  176. package/dist/esm/actions/test/snapshot.js.map +1 -1
  177. package/dist/esm/actions/test/stopImpersonatingAccount.js +22 -0
  178. package/dist/esm/actions/test/stopImpersonatingAccount.js.map +1 -1
  179. package/dist/esm/actions/wallet/addChain.js +19 -0
  180. package/dist/esm/actions/wallet/addChain.js.map +1 -1
  181. package/dist/esm/actions/wallet/deployContract.js +27 -0
  182. package/dist/esm/actions/wallet/deployContract.js.map +1 -1
  183. package/dist/esm/actions/wallet/getAddresses.js +20 -0
  184. package/dist/esm/actions/wallet/getAddresses.js.map +1 -1
  185. package/dist/esm/actions/wallet/getPermissions.js +20 -0
  186. package/dist/esm/actions/wallet/getPermissions.js.map +1 -1
  187. package/dist/esm/actions/wallet/requestAddresses.js +24 -0
  188. package/dist/esm/actions/wallet/requestAddresses.js.map +1 -1
  189. package/dist/esm/actions/wallet/requestPermissions.js +23 -0
  190. package/dist/esm/actions/wallet/requestPermissions.js.map +1 -1
  191. package/dist/esm/actions/wallet/sendTransaction.js +47 -0
  192. package/dist/esm/actions/wallet/sendTransaction.js.map +1 -1
  193. package/dist/esm/actions/wallet/signMessage.js +46 -0
  194. package/dist/esm/actions/wallet/signMessage.js.map +1 -1
  195. package/dist/esm/actions/wallet/signTypedData.js +100 -0
  196. package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
  197. package/dist/esm/actions/wallet/switchChain.js +20 -0
  198. package/dist/esm/actions/wallet/switchChain.js.map +1 -1
  199. package/dist/esm/actions/wallet/watchAsset.js +28 -0
  200. package/dist/esm/actions/wallet/watchAsset.js.map +1 -1
  201. package/dist/esm/actions/wallet/writeContract.js +50 -0
  202. package/dist/esm/actions/wallet/writeContract.js.map +1 -1
  203. package/dist/esm/chains.js +96 -96
  204. package/dist/esm/chains.js.map +1 -1
  205. package/dist/esm/clients/createClient.js +3 -0
  206. package/dist/esm/clients/createClient.js.map +1 -1
  207. package/dist/esm/clients/createPublicClient.js +19 -0
  208. package/dist/esm/clients/createPublicClient.js.map +1 -1
  209. package/dist/esm/clients/createTestClient.js +23 -0
  210. package/dist/esm/clients/createTestClient.js.map +1 -1
  211. package/dist/esm/clients/createWalletClient.js +36 -0
  212. package/dist/esm/clients/createWalletClient.js.map +1 -1
  213. package/dist/esm/clients/transports/createTransport.js +3 -0
  214. package/dist/esm/clients/transports/createTransport.js.map +1 -1
  215. package/dist/esm/clients/transports/custom.js +3 -0
  216. package/dist/esm/clients/transports/custom.js.map +1 -1
  217. package/dist/esm/clients/transports/fallback.js +11 -0
  218. package/dist/esm/clients/transports/fallback.js.map +1 -1
  219. package/dist/esm/clients/transports/http.js +6 -1
  220. package/dist/esm/clients/transports/http.js.map +1 -1
  221. package/dist/esm/clients/transports/webSocket.js +6 -1
  222. package/dist/esm/clients/transports/webSocket.js.map +1 -1
  223. package/dist/esm/constants/abis.js +6 -0
  224. package/dist/esm/constants/abis.js.map +1 -1
  225. package/dist/esm/constants/solidity.js +1 -0
  226. package/dist/esm/constants/solidity.js.map +1 -1
  227. package/dist/esm/contract.js +0 -1
  228. package/dist/esm/contract.js.map +1 -1
  229. package/dist/esm/errors/base.js +4 -11
  230. package/dist/esm/errors/base.js.map +1 -1
  231. package/dist/esm/errors/node.js +9 -0
  232. package/dist/esm/errors/node.js.map +1 -1
  233. package/dist/esm/errors/rpc.js +103 -0
  234. package/dist/esm/errors/rpc.js.map +1 -1
  235. package/dist/esm/errors/version.js +1 -1
  236. package/dist/esm/index.js +0 -52
  237. package/dist/esm/index.js.map +1 -1
  238. package/dist/esm/package.json +1 -1
  239. package/dist/esm/types/account.js +1 -1
  240. package/dist/esm/types/account.js.map +1 -1
  241. package/dist/esm/types/eip1193.js +2 -0
  242. package/dist/esm/types/eip1193.js.map +1 -1
  243. package/dist/esm/utils/abi/decodeAbiParameters.js +29 -0
  244. package/dist/esm/utils/abi/decodeAbiParameters.js.map +1 -1
  245. package/dist/esm/utils/abi/decodeEventLog.js +2 -0
  246. package/dist/esm/utils/abi/decodeEventLog.js.map +1 -1
  247. package/dist/esm/utils/abi/encodeAbiParameters.js +10 -1
  248. package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
  249. package/dist/esm/utils/abi/getAbiItem.js +7 -0
  250. package/dist/esm/utils/abi/getAbiItem.js.map +1 -1
  251. package/dist/esm/utils/accounts.js +3 -0
  252. package/dist/esm/utils/accounts.js.map +1 -1
  253. package/dist/esm/utils/buildRequest.js +2 -0
  254. package/dist/esm/utils/buildRequest.js.map +1 -1
  255. package/dist/esm/utils/data/size.js +6 -0
  256. package/dist/esm/utils/data/size.js.map +1 -1
  257. package/dist/esm/utils/data/slice.js +21 -0
  258. package/dist/esm/utils/data/slice.js.map +1 -1
  259. package/dist/esm/utils/encoding/fromBytes.js +79 -0
  260. package/dist/esm/utils/encoding/fromBytes.js.map +1 -1
  261. package/dist/esm/utils/encoding/fromHex.js +106 -0
  262. package/dist/esm/utils/encoding/fromHex.js.map +1 -1
  263. package/dist/esm/utils/encoding/toBytes.js +102 -1
  264. package/dist/esm/utils/encoding/toBytes.js.map +1 -1
  265. package/dist/esm/utils/encoding/toHex.js +108 -2
  266. package/dist/esm/utils/encoding/toHex.js.map +1 -1
  267. package/dist/esm/utils/ens/avatar/parseAvatarRecord.js +6 -2
  268. package/dist/esm/utils/ens/avatar/parseAvatarRecord.js.map +1 -1
  269. package/dist/esm/utils/ens/avatar/utils.js +10 -0
  270. package/dist/esm/utils/ens/avatar/utils.js.map +1 -1
  271. package/dist/esm/utils/ens/labelhash.js +9 -0
  272. package/dist/esm/utils/ens/labelhash.js.map +1 -1
  273. package/dist/esm/utils/ens/namehash.js +12 -0
  274. package/dist/esm/utils/ens/namehash.js.map +1 -1
  275. package/dist/esm/utils/ens/normalize.js +10 -0
  276. package/dist/esm/utils/ens/normalize.js.map +1 -1
  277. package/dist/esm/utils/ens/packetToBytes.js +6 -0
  278. package/dist/esm/utils/ens/packetToBytes.js.map +1 -1
  279. package/dist/esm/utils/filters/createFilterRequestScope.js +5 -0
  280. package/dist/esm/utils/filters/createFilterRequestScope.js.map +1 -1
  281. package/dist/esm/utils/formatters/block.js +4 -1
  282. package/dist/esm/utils/formatters/block.js.map +1 -1
  283. package/dist/esm/utils/formatters/extract.js +3 -0
  284. package/dist/esm/utils/formatters/extract.js.map +1 -1
  285. package/dist/esm/utils/formatters/format.js +3 -0
  286. package/dist/esm/utils/formatters/format.js.map +1 -1
  287. package/dist/esm/utils/formatters/transaction.js +3 -1
  288. package/dist/esm/utils/formatters/transaction.js.map +1 -1
  289. package/dist/esm/utils/formatters/transactionReceipt.js +1 -1
  290. package/dist/esm/utils/formatters/transactionReceipt.js.map +1 -1
  291. package/dist/esm/utils/formatters/transactionRequest.js +1 -1
  292. package/dist/esm/utils/formatters/transactionRequest.js.map +1 -1
  293. package/dist/esm/utils/observe.js +7 -2
  294. package/dist/esm/utils/observe.js.map +1 -1
  295. package/dist/esm/utils/poll.js +3 -0
  296. package/dist/esm/utils/poll.js.map +1 -1
  297. package/dist/esm/utils/promise/createBatchScheduler.js +1 -1
  298. package/dist/esm/utils/promise/createBatchScheduler.js.map +1 -1
  299. package/dist/esm/utils/promise/withCache.js +15 -2
  300. package/dist/esm/utils/promise/withCache.js.map +1 -1
  301. package/dist/esm/utils/regex.js +4 -0
  302. package/dist/esm/utils/regex.js.map +1 -1
  303. package/dist/esm/utils/rpc.js +14 -1
  304. package/dist/esm/utils/rpc.js.map +1 -1
  305. package/dist/esm/utils/signature/hashTypedData.js +3 -0
  306. package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
  307. package/dist/esm/utils/signature/recoverPublicKey.js +2 -0
  308. package/dist/esm/utils/signature/recoverPublicKey.js.map +1 -1
  309. package/dist/esm/utils/signature/verifyMessage.js +12 -0
  310. package/dist/esm/utils/signature/verifyMessage.js.map +1 -1
  311. package/dist/esm/utils/signature/verifyTypedData.js +12 -0
  312. package/dist/esm/utils/signature/verifyTypedData.js.map +1 -1
  313. package/dist/esm/utils/transaction/prepareRequest.js +5 -1
  314. package/dist/esm/utils/transaction/prepareRequest.js.map +1 -1
  315. package/dist/esm/utils/transaction/serializeTransaction.js +4 -2
  316. package/dist/esm/utils/transaction/serializeTransaction.js.map +1 -1
  317. package/dist/esm/utils/typedData.js +4 -0
  318. package/dist/esm/utils/typedData.js.map +1 -1
  319. package/dist/esm/utils/unit/parseUnits.js +3 -2
  320. package/dist/esm/utils/unit/parseUnits.js.map +1 -1
  321. package/dist/types/actions/public/getBlockNumber.d.ts +2 -2
  322. package/dist/types/actions/public/getBlockNumber.d.ts.map +1 -1
  323. package/dist/types/chains.d.ts.map +1 -1
  324. package/dist/types/contract.d.ts +1 -1
  325. package/dist/types/contract.d.ts.map +1 -1
  326. package/dist/types/errors/base.d.ts +0 -1
  327. package/dist/types/errors/base.d.ts.map +1 -1
  328. package/dist/types/errors/version.d.ts +1 -1
  329. package/dist/types/index.d.ts +52 -52
  330. package/dist/types/index.d.ts.map +1 -1
  331. package/dist/types/types/account.d.ts +1 -1
  332. package/dist/types/types/account.d.ts.map +1 -1
  333. package/dist/types/utils/formatters/block.d.ts.map +1 -1
  334. package/dist/types/utils/formatters/transaction.d.ts.map +1 -1
  335. package/dist/types/utils/observe.d.ts.map +1 -1
  336. package/dist/types/utils/promise/withCache.d.ts.map +1 -1
  337. package/dist/types/utils/unit/parseUnits.d.ts.map +1 -1
  338. package/package.json +1 -1
  339. package/src/chains.ts +120 -97
  340. package/src/contract.ts +3 -3
  341. package/src/errors/base.ts +6 -6
  342. package/src/errors/version.ts +1 -1
  343. package/src/index.ts +221 -221
  344. package/src/types/account.ts +9 -9
  345. package/src/utils/encoding/toBytes.ts +1 -1
  346. package/src/utils/encoding/toHex.ts +2 -2
  347. package/src/utils/formatters/block.ts +3 -1
  348. package/src/utils/formatters/transaction.ts +3 -1
  349. package/src/utils/formatters/transactionReceipt.ts +1 -1
  350. package/src/utils/formatters/transactionRequest.ts +1 -1
  351. package/src/utils/observe.ts +2 -2
  352. package/src/utils/promise/createBatchScheduler.ts +1 -1
  353. package/src/utils/promise/withCache.ts +2 -2
  354. package/src/utils/rpc.ts +1 -1
  355. package/src/utils/unit/parseUnits.ts +1 -5
@@ -1,6 +1,30 @@
1
1
  import { TransactionReceiptNotFoundError } from '../../errors/transaction.js';
2
2
  import { format } from '../../utils/formatters/format.js';
3
3
  import { formatTransactionReceipt, } from '../../utils/formatters/transactionReceipt.js';
4
+ /**
5
+ * Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms.html#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) hash.
6
+ *
7
+ * - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt.html
8
+ * - Example: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/fetching-transactions
9
+ * - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt)
10
+ *
11
+ * @param client - Client to use
12
+ * @param parameters - {@link GetTransactionReceiptParameters}
13
+ * @returns The transaction receipt. {@link GetTransactionReceiptReturnType}
14
+ *
15
+ * @example
16
+ * import { createPublicClient, http } from 'viem'
17
+ * import { mainnet } from 'viem/chains'
18
+ * import { getTransactionReceipt } from 'viem/public'
19
+ *
20
+ * const client = createPublicClient({
21
+ * chain: mainnet,
22
+ * transport: http(),
23
+ * })
24
+ * const transactionReceipt = await getTransactionReceipt(client, {
25
+ * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
26
+ * })
27
+ */
4
28
  export async function getTransactionReceipt(client, { hash }) {
5
29
  const receipt = await client.request({
6
30
  method: 'eth_getTransactionReceipt',
@@ -1 +1 @@
1
- {"version":3,"file":"getTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/getTransactionReceipt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAA;AAG7E,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAGL,wBAAwB,GACzB,MAAM,8CAA8C,CAAA;AAmCrD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAuC,EACvC,EAAE,IAAI,EAAmC;IAEzC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACnC,MAAM,EAAE,2BAA2B;QACnC,MAAM,EAAE,CAAC,IAAI,CAAC;KACf,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,+BAA+B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAEjE,OAAO,MAAM,CAAC,OAAO,EAAE;QACrB,SAAS,EACP,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,kBAAkB,IAAI,wBAAwB;KAC3E,CAA4C,CAAA;AAC/C,CAAC"}
1
+ {"version":3,"file":"getTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/getTransactionReceipt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAA;AAG7E,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAA;AACzD,OAAO,EAGL,wBAAwB,GACzB,MAAM,8CAA8C,CAAA;AAWrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAuC,EACvC,EAAE,IAAI,EAAmC;IAEzC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACnC,MAAM,EAAE,2BAA2B;QACnC,MAAM,EAAE,CAAC,IAAI,CAAC;KACf,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,+BAA+B,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAEjE,OAAO,MAAM,CAAC,OAAO,EAAE;QACrB,SAAS,EACP,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,kBAAkB,IAAI,wBAAwB;KAC3E,CAA4C,CAAA;AAC/C,CAAC"}
@@ -6,12 +6,52 @@ import { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';
6
6
  import { getChainContractAddress } from '../../utils/chain.js';
7
7
  import { getContractError } from '../../utils/errors/getContractError.js';
8
8
  import { readContract } from './readContract.js';
9
+ /**
10
+ * Similar to [`readContract`](https://viem.sh/docs/contract/readContract.html), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall).
11
+ *
12
+ * - Docs: https://viem.sh/docs/contract/multicall.html
13
+ *
14
+ * @param client - Client to use
15
+ * @param parameters - {@link MulticallParameters}
16
+ * @returns An array of results with accompanying status. {@link MulticallReturnType}
17
+ *
18
+ * @example
19
+ * import { createPublicClient, http, parseAbi } from 'viem'
20
+ * import { mainnet } from 'viem/chains'
21
+ * import { multicall } from 'viem/contract'
22
+ *
23
+ * const client = createPublicClient({
24
+ * chain: mainnet,
25
+ * transport: http(),
26
+ * })
27
+ * const abi = parseAbi([
28
+ * 'function balanceOf(address) view returns (uint256)',
29
+ * 'function totalSupply() view returns (uint256)',
30
+ * ])
31
+ * const results = await multicall(client, {
32
+ * contracts: [
33
+ * {
34
+ * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
35
+ * abi,
36
+ * functionName: 'balanceOf',
37
+ * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
38
+ * },
39
+ * {
40
+ * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
41
+ * abi,
42
+ * functionName: 'totalSupply',
43
+ * },
44
+ * ],
45
+ * })
46
+ * // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }]
47
+ */
9
48
  export async function multicall(client, args) {
10
49
  const { allowFailure = true, batchSize: batchSize_, blockNumber, blockTag, contracts: contracts_, multicallAddress: multicallAddress_, } = args;
11
50
  const batchSize = batchSize_ ??
12
51
  ((typeof client.batch?.multicall === 'object' &&
13
52
  client.batch.multicall.batchSize) ||
14
53
  1024);
54
+ // Fix type cast from `Narrow` in type definition.
15
55
  const contracts = contracts_;
16
56
  let multicallAddress = multicallAddress_;
17
57
  if (!multicallAddress) {
@@ -1 +1 @@
1
- {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAQ3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAA;AAC9E,OAAO,EAEL,kBAAkB,GACnB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAyDhD,MAAM,CAAC,KAAK,UAAU,SAAS,CAK7B,MAAuC,EACvC,IAAoD;IAEpD,MAAM,EACJ,YAAY,GAAG,IAAI,EACnB,SAAS,EAAE,UAAU,EACrB,WAAW,EACX,QAAQ,EACR,SAAS,EAAE,UAAU,EACrB,gBAAgB,EAAE,iBAAiB,GACpC,GAAG,IAAI,CAAA;IAER,MAAM,SAAS,GACb,UAAU;QACV,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,SAAS,KAAK,QAAQ;YAC3C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC;YACjC,IAAK,CAAC,CAAA;IAGV,MAAM,SAAS,GAAG,UAA0D,CAAA;IAE5E,IAAI,gBAAgB,GAAG,iBAAiB,CAAA;IACxC,IAAI,CAAC,gBAAgB,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,KAAK;YACf,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAA;QAEH,gBAAgB,GAAG,uBAAuB,CAAC;YACzC,WAAW;YACX,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAA;KACH;IAQD,MAAM,YAAY,GAAsB,CAAC,EAAE,CAAC,CAAA;IAC5C,IAAI,YAAY,GAAG,CAAC,CAAA;IACpB,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACzD,IAAI;YACF,MAAM,QAAQ,GAAG,kBAAkB,CAAC;gBAClC,GAAG;gBACH,IAAI;gBACJ,YAAY;aAC8B,CAAC,CAAA;YAE7C,gBAAgB,IAAI,QAAQ,CAAC,MAAM,CAAA;YACnC,IAAI,SAAS,GAAG,CAAC,IAAI,gBAAgB,GAAG,SAAS,EAAE;gBACjD,YAAY,EAAE,CAAA;gBACd,gBAAgB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;gBAC5C,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,CAAA;aAChC;YAED,YAAY,CAAC,YAAY,CAAC,GAAG;gBAC3B,GAAG,YAAY,CAAC,YAAY,CAAC;gBAC7B;oBACE,YAAY,EAAE,IAAI;oBAClB,QAAQ;oBACR,MAAM,EAAE,OAAO;iBAChB;aACF,CAAA;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAgB,EAAE;gBAC/C,GAAG;gBACH,OAAO;gBACP,IAAI;gBACJ,QAAQ,EAAE,0BAA0B;gBACpC,YAAY;aACb,CAAC,CAAA;YACF,IAAI,CAAC,YAAY;gBAAE,MAAM,KAAK,CAAA;YAC9B,YAAY,CAAC,YAAY,CAAC,GAAG;gBAC3B,GAAG,YAAY,CAAC,YAAY,CAAC;gBAC7B;oBACE,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,IAAW;oBACrB,MAAM,EAAE,OAAO;iBAChB;aACF,CAAA;SACF;KACF;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzB,YAAY,CAAC,MAAM,EAAE;QACnB,GAAG,EAAE,aAAa;QAClB,OAAO,EAAE,gBAAiB;QAC1B,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,WAAW;QACX,QAAQ;QACR,YAAY,EAAE,YAAY;KAC3B,CAAC,CACH,CACF,CAAA;IAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;QACvD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC7B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QACzD,IAAI;YACF,IAAI,QAAQ,KAAK,IAAI;gBAAE,MAAM,IAAI,wBAAwB,EAAE,CAAA;YAC3D,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,gBAAgB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;YAC9D,MAAM,MAAM,GAAG,oBAAoB,CAAC;gBAClC,GAAG;gBACH,IAAI,EAAE,UAAU;gBAChB,YAAY,EAAE,YAAY;aAC3B,CAAC,CAAA;YACF,OAAO,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;SAC7D;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAgB,EAAE;gBAC/C,GAAG;gBACH,OAAO;gBACP,IAAI;gBACJ,QAAQ,EAAE,0BAA0B;gBACpC,YAAY;aACb,CAAC,CAAA;YACF,IAAI,CAAC,YAAY;gBAAE,MAAM,KAAK,CAAA;YAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;SACvD;IACH,CAAC,CAAgD,CAAA;AACnD,CAAC"}
1
+ {"version":3,"file":"multicall.js","sourceRoot":"","sources":["../../../../src/actions/public/multicall.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,37 @@ import { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';
2
2
  import { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';
3
3
  import { getContractError } from '../../utils/errors/getContractError.js';
4
4
  import { call } from './call.js';
5
+ /**
6
+ * Calls a read-only function on a contract, and returns the response.
7
+ *
8
+ * - Docs: https://viem.sh/docs/contract/readContract.html
9
+ * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/contracts/reading-contracts
10
+ *
11
+ * A "read-only" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas.
12
+ *
13
+ * Internally, uses a [Public Client](https://viem.sh/docs/clients/public.html) to call the [`call` action](https://viem.sh/docs/actions/public/call.html) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData.html).
14
+ *
15
+ * @param client - Client to use
16
+ * @param parameters - {@link ReadContractParameters}
17
+ * @returns The response from the contract. Type is inferred. {@link ReadContractReturnType}
18
+ *
19
+ * @example
20
+ * import { createPublicClient, http, parseAbi } from 'viem'
21
+ * import { mainnet } from 'viem/chains'
22
+ * import { readContract } from 'viem/contract'
23
+ *
24
+ * const client = createPublicClient({
25
+ * chain: mainnet,
26
+ * transport: http(),
27
+ * })
28
+ * const result = await readContract(client, {
29
+ * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
30
+ * abi: parseAbi(['function balanceOf(address) view returns (uint256)']),
31
+ * functionName: 'balanceOf',
32
+ * args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
33
+ * })
34
+ * // 424122n
35
+ */
5
36
  export async function readContract(client, { abi, address, args, functionName, ...callRequest }) {
6
37
  const calldata = encodeFunctionData({
7
38
  abi,
@@ -1 +1 @@
1
- {"version":3,"file":"readContract.js","sourceRoot":"","sources":["../../../../src/actions/public/readContract.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,oBAAoB,GACrB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAEL,kBAAkB,GACnB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAEzE,OAAO,EAAuB,IAAI,EAAE,MAAM,WAAW,CAAA;AA4CrD,MAAM,CAAC,KAAK,UAAU,YAAY,CAKhC,MAAuC,EACvC,EACE,GAAG,EACH,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,GAAG,WAAW,EAC8B;IAE9C,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,GAAG;QACH,IAAI;QACJ,YAAY;KACmD,CAAC,CAAA;IAClE,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,OAAO;YACX,GAAG,WAAW;SACc,CAAC,CAAA;QAC/B,OAAO,oBAAoB,CAAC;YAC1B,GAAG;YACH,IAAI;YACJ,YAAY;YACZ,IAAI,EAAE,IAAI,IAAI,IAAI;SAInB,CAAgD,CAAA;KAClD;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,gBAAgB,CAAC,GAAgB,EAAE;YACvC,GAAG,EAAE,GAAU;YACf,OAAO;YACP,IAAI;YACJ,QAAQ,EAAE,6BAA6B;YACvC,YAAY;SACb,CAAC,CAAA;KACH;AACH,CAAC"}
1
+ {"version":3,"file":"readContract.js","sourceRoot":"","sources":["../../../../src/actions/public/readContract.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,oBAAoB,GACrB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAEL,kBAAkB,GACnB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAEzE,OAAO,EAAuB,IAAI,EAAE,MAAM,WAAW,CAAA;AAarD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAKhC,MAAuC,EACvC,EACE,GAAG,EACH,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,GAAG,WAAW,EAC8B;IAE9C,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,GAAG;QACH,IAAI;QACJ,YAAY;KACmD,CAAC,CAAA;IAClE,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,OAAO;YACX,GAAG,WAAW;SACc,CAAC,CAAA;QAC/B,OAAO,oBAAoB,CAAC;YAC1B,GAAG;YACH,IAAI;YACJ,YAAY;YACZ,IAAI,EAAE,IAAI,IAAI,IAAI;SAInB,CAAgD,CAAA;KAClD;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,gBAAgB,CAAC,GAAgB,EAAE;YACvC,GAAG,EAAE,GAAU;YACf,OAAO;YACP,IAAI;YACJ,QAAQ,EAAE,6BAA6B;YACvC,YAAY;SACb,CAAC,CAAA;KACH;AACH,CAAC"}
@@ -3,6 +3,37 @@ import { decodeFunctionResult, } from '../../utils/abi/decodeFunctionResult.js';
3
3
  import { encodeFunctionData, } from '../../utils/abi/encodeFunctionData.js';
4
4
  import { getContractError } from '../../utils/errors/getContractError.js';
5
5
  import { call } from './call.js';
6
+ /**
7
+ * Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions.
8
+ *
9
+ * - Docs: https://viem.sh/docs/contract/simulateContract.html
10
+ * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/contracts/writing-to-contracts
11
+ *
12
+ * This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract.html), but also supports contract write functions.
13
+ *
14
+ * Internally, uses a [Public Client](https://viem.sh/docs/clients/public.html) to call the [`call` action](https://viem.sh/docs/actions/public/call.html) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData.html).
15
+ *
16
+ * @param client - Client to use
17
+ * @param parameters - {@link SimulateContractParameters}
18
+ * @returns The simulation result and write request. {@link SimulateContractReturnType}
19
+ *
20
+ * @example
21
+ * import { createPublicClient, http } from 'viem'
22
+ * import { mainnet } from 'viem/chains'
23
+ * import { simulateContract } from 'viem/contract'
24
+ *
25
+ * const client = createPublicClient({
26
+ * chain: mainnet,
27
+ * transport: http(),
28
+ * })
29
+ * const result = await simulateContract(client, {
30
+ * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
31
+ * abi: parseAbi(['function mint(uint32) view returns (uint32)']),
32
+ * functionName: 'mint',
33
+ * args: ['69420'],
34
+ * account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e',
35
+ * })
36
+ */
6
37
  export async function simulateContract(client, { abi, address, args, dataSuffix, functionName, ...callRequest }) {
7
38
  const account = callRequest.account
8
39
  ? parseAccount(callRequest.account)
@@ -1 +1 @@
1
- {"version":3,"file":"simulateContract.js","sourceRoot":"","sources":["../../../../src/actions/public/simulateContract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAWnE,OAAO,EAEL,oBAAoB,GACrB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAEL,kBAAkB,GACnB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAGzE,OAAO,EAAuB,IAAI,EAAE,MAAM,WAAW,CAAA;AAuErD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAMpC,MAAuC,EACvC,EACE,GAAG,EACH,OAAO,EACP,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,GAAG,WAAW,EAC0D;IAI1E,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO;QACjC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,GAAG;QACH,IAAI;QACJ,YAAY;KACmD,CAAC,CAAA;IAClE,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;YAClC,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACpE,EAAE,EAAE,OAAO;YACX,GAAG,WAAW;SACsB,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,GAAG;YACH,IAAI;YACJ,YAAY;YACZ,IAAI,EAAE,IAAI,IAAI,IAAI;SACe,CAAC,CAAA;QACpC,OAAO;YACL,MAAM;YACN,OAAO,EAAE;gBACP,GAAG;gBACH,OAAO;gBACP,IAAI;gBACJ,YAAY;gBACZ,GAAG,WAAW;aACf;SAMF,CAAA;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,gBAAgB,CAAC,GAAgB,EAAE;YACvC,GAAG,EAAE,GAAU;YACf,OAAO;YACP,IAAI;YACJ,QAAQ,EAAE,iCAAiC;YAC3C,YAAY;YACZ,MAAM,EAAE,OAAO,EAAE,OAAO;SACzB,CAAC,CAAA;KACH;AACH,CAAC"}
1
+ {"version":3,"file":"simulateContract.js","sourceRoot":"","sources":["../../../../src/actions/public/simulateContract.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAA;AAWnE,OAAO,EAEL,oBAAoB,GACrB,MAAM,yCAAyC,CAAA;AAChD,OAAO,EAEL,kBAAkB,GACnB,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAGzE,OAAO,EAAuB,IAAI,EAAE,MAAM,WAAW,CAAA;AAwCrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAMpC,MAAuC,EACvC,EACE,GAAG,EACH,OAAO,EACP,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,GAAG,WAAW,EAC0D;IAI1E,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO;QACjC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;QACnC,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QAClC,GAAG;QACH,IAAI;QACJ,YAAY;KACmD,CAAC,CAAA;IAClE,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;YAClC,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,GAAG,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACpE,EAAE,EAAE,OAAO;YACX,GAAG,WAAW;SACsB,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,GAAG;YACH,IAAI;YACJ,YAAY;YACZ,IAAI,EAAE,IAAI,IAAI,IAAI;SACe,CAAC,CAAA;QACpC,OAAO;YACL,MAAM;YACN,OAAO,EAAE;gBACP,GAAG;gBACH,OAAO;gBACP,IAAI;gBACJ,YAAY;gBACZ,GAAG,WAAW;aACf;SAMF,CAAA;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,gBAAgB,CAAC,GAAgB,EAAE;YACvC,GAAG,EAAE,GAAU;YACf,OAAO;YACP,IAAI;YACJ,QAAQ,EAAE,iCAAiC;YAC3C,YAAY;YACZ,MAAM,EAAE,OAAO,EAAE,OAAO;SACzB,CAAC,CAAA;KACH;AACH,CAAC"}
@@ -1,3 +1,27 @@
1
+ /**
2
+ * Destroys a [`Filter`](https://viem.sh/docs/glossary/types.html#filter).
3
+ *
4
+ * - Docs: https://viem.sh/docs/actions/public/uninstallFilter.html
5
+ * - JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter)
6
+ *
7
+ * Destroys a Filter that was created from one of the following Actions:
8
+ * - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter.html)
9
+ * - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter.html)
10
+ * - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter.html)
11
+ *
12
+ * @param client - Client to use
13
+ * @param parameters - {@link UninstallFilterParameters}
14
+ * @returns A boolean indicating if the Filter was successfully uninstalled. {@link UninstallFilterReturnType}
15
+ *
16
+ * @example
17
+ * import { createPublicClient, http } from 'viem'
18
+ * import { mainnet } from 'viem/chains'
19
+ * import { createPendingTransactionFilter, uninstallFilter } from 'viem/public'
20
+ *
21
+ * const filter = await createPendingTransactionFilter(client)
22
+ * const uninstalled = await uninstallFilter(client, { filter })
23
+ * // true
24
+ */
1
25
  export async function uninstallFilter(_client, { filter }) {
2
26
  return filter.request({
3
27
  method: 'eth_uninstallFilter',
@@ -1 +1 @@
1
- {"version":3,"file":"uninstallFilter.js","sourceRoot":"","sources":["../../../../src/actions/public/uninstallFilter.ts"],"names":[],"mappings":"AAkCA,MAAM,CAAC,KAAK,UAAU,eAAe,CAInC,OAAyC,EACzC,EAAE,MAAM,EAA6B;IAErC,OAAO,MAAM,CAAC,OAAO,CAAC;QACpB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KACpB,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"uninstallFilter.js","sourceRoot":"","sources":["../../../../src/actions/public/uninstallFilter.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAInC,OAAyC,EACzC,EAAE,MAAM,EAA6B;IAErC,OAAO,MAAM,CAAC,OAAO,CAAC;QACpB,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;KACpB,CAAC,CAAA;AACJ,CAAC"}
@@ -4,6 +4,13 @@ import { CallExecutionError } from '../../errors/contract.js';
4
4
  import { isBytesEqual } from '../../utils/data/isBytesEqual.js';
5
5
  import { encodeDeployData, isHex, toHex } from '../../utils/index.js';
6
6
  import { call } from './call.js';
7
+ /**
8
+ * Verifies a message hash on chain using ERC-6492.
9
+ *
10
+ * @param client - Client to use.
11
+ * @param parameters - {@link VerifyHashParameters}
12
+ * @returns Whether or not the signature is valid. {@link VerifyHashReturnType}
13
+ */
7
14
  export async function verifyHash(client, { address, hash, signature, ...callRequest }) {
8
15
  const signatureHex = isHex(signature) ? signature : toHex(signature);
9
16
  try {
@@ -19,6 +26,9 @@ export async function verifyHash(client, { address, hash, signature, ...callRequ
19
26
  }
20
27
  catch (error) {
21
28
  if (error instanceof CallExecutionError) {
29
+ // if the execution fails, the signature was not valid and an internal method inside of the validator reverted
30
+ // this can happen for many reasons, for example if signer can not be recovered from the signature
31
+ // or if the signature has no valid format
22
32
  return false;
23
33
  }
24
34
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../../src/actions/public/verifyHash.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAuB,IAAI,EAAE,MAAM,WAAW,CAAA;AAuBrD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAuC,EACvC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,WAAW,EAAwB;IAElE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAEpE,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,gBAAgB,CAAC;gBACrB,GAAG,EAAE,8BAA8B;gBACnC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;gBACnC,QAAQ,EAAE,mCAAmC;aAC9C,CAAC;YACF,GAAG,WAAW;SACc,CAAC,CAAA;QAE/B,OAAO,YAAY,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC,CAAA;KAC1C;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,KAAK,YAAY,kBAAkB,EAAE;YAIvC,OAAO,KAAK,CAAA;SACb;QAED,MAAM,KAAK,CAAA;KACZ;AACH,CAAC"}
1
+ {"version":3,"file":"verifyHash.js","sourceRoot":"","sources":["../../../../src/actions/public/verifyHash.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAuB,IAAI,EAAE,MAAM,WAAW,CAAA;AAgBrD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAuC,EACvC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,WAAW,EAAwB;IAElE,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAEpE,IAAI;QACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,gBAAgB,CAAC;gBACrB,GAAG,EAAE,8BAA8B;gBACnC,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC;gBACnC,QAAQ,EAAE,mCAAmC;aAC9C,CAAC;YACF,GAAG,WAAW;SACc,CAAC,CAAA;QAE/B,OAAO,YAAY,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,CAAC,CAAA;KAC1C;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,KAAK,YAAY,kBAAkB,EAAE;YACvC,8GAA8G;YAC9G,kGAAkG;YAClG,0CAA0C;YAC1C,OAAO,KAAK,CAAA;SACb;QAED,MAAM,KAAK,CAAA;KACZ;AACH,CAAC"}
@@ -1,5 +1,16 @@
1
1
  import { hashMessage } from '../../utils/index.js';
2
2
  import { verifyHash } from './verifyHash.js';
3
+ /**
4
+ * Verify that a message was signed by the provided address.
5
+ *
6
+ * Compatible with Smart Contract Accounts & Externally Owned Accounts via [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492).
7
+ *
8
+ * - Docs {@link https://viem.sh/docs/actions/public/verifyMessage.html}
9
+ *
10
+ * @param client - Client to use.
11
+ * @param parameters - {@link VerifyMessageParameters}
12
+ * @returns Whether or not the signature is valid. {@link VerifyMessageReturnType}
13
+ */
3
14
  export async function verifyMessage(client, { address, message, signature, ...callRequest }) {
4
15
  const hash = hashMessage(message);
5
16
  return verifyHash(client, {
@@ -1 +1 @@
1
- {"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../../src/actions/public/verifyMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAA6B,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAyBvE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAuC,EACvC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAA2B;IAExE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,UAAU,CAAC,MAAM,EAAE;QACxB,OAAO;QACP,IAAI;QACJ,SAAS;QACT,GAAG,WAAW;KACf,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"verifyMessage.js","sourceRoot":"","sources":["../../../../src/actions/public/verifyMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAA6B,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAcvE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAuC,EACvC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,WAAW,EAA2B;IAExE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,UAAU,CAAC,MAAM,EAAE;QACxB,OAAO;QACP,IAAI;QACJ,SAAS;QACT,GAAG,WAAW;KACf,CAAC,CAAA;AACJ,CAAC"}
@@ -1,5 +1,14 @@
1
1
  import { hashTypedData } from '../../utils/index.js';
2
2
  import { verifyHash } from './verifyHash.js';
3
+ /**
4
+ * Verify that typed data was signed by the provided address.
5
+ *
6
+ * - Docs {@link https://viem.sh/docs/actions/public/verifyTypedData.html}
7
+ *
8
+ * @param client - Client to use.
9
+ * @param parameters - {@link VerifyTypedDataParameters}
10
+ * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}
11
+ */
3
12
  export async function verifyTypedData(client, { address, signature, message, primaryType, types, domain, ...callRequest }) {
4
13
  const hash = hashTypedData({ message, primaryType, types, domain });
5
14
  return verifyHash(client, {
@@ -1 +1 @@
1
- {"version":3,"file":"verifyTypedData.js","sourceRoot":"","sources":["../../../../src/actions/public/verifyTypedData.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAA6B,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAyBvE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuC,EACvC,EACE,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,KAAK,EACL,MAAM,EACN,GAAG,WAAW,EACY;IAE5B,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACnE,OAAO,UAAU,CAAC,MAAM,EAAE;QACxB,OAAO;QACP,IAAI;QACJ,SAAS;QACT,GAAG,WAAW;KACf,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"verifyTypedData.js","sourceRoot":"","sources":["../../../../src/actions/public/verifyTypedData.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAA6B,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAgBvE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuC,EACvC,EACE,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,KAAK,EACL,MAAM,EACN,GAAG,WAAW,EACY;IAE5B,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACnE,OAAO,UAAU,CAAC,MAAM,EAAE;QACxB,OAAO;QACP,IAAI;QACJ,SAAS;QACT,GAAG,WAAW;KACf,CAAC,CAAA;AACJ,CAAC"}
@@ -6,6 +6,44 @@ import { getBlock } from './getBlock.js';
6
6
  import { getTransaction, } from './getTransaction.js';
7
7
  import { getTransactionReceipt, } from './getTransactionReceipt.js';
8
8
  import { watchBlockNumber } from './watchBlockNumber.js';
9
+ /**
10
+ * Waits for the [Transaction](https://viem.sh/docs/glossary/terms.html#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms.html#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms.html#transaction-receipt). If the Transaction reverts, then the action will throw an error.
11
+ *
12
+ * - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt.html
13
+ * - Example: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/sending-transactions
14
+ * - JSON-RPC Methods:
15
+ * - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed.
16
+ * - If a Transaction has been replaced:
17
+ * - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions
18
+ * - Checks if one of the Transactions is a replacement
19
+ * - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt).
20
+ *
21
+ * The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions).
22
+ *
23
+ * Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce.
24
+ *
25
+ * There are 3 types of Transaction Replacement reasons:
26
+ *
27
+ * - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`)
28
+ * - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`)
29
+ * - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`)
30
+ *
31
+ * @param client - Client to use
32
+ * @param parameters - {@link WaitForTransactionReceiptParameters}
33
+ * @returns The transaction receipt. {@link WaitForTransactionReceiptReturnType}
34
+ *
35
+ * @example
36
+ * import { createPublicClient, waitForTransactionReceipt, http } from 'viem'
37
+ * import { mainnet } from 'viem/chains'
38
+ *
39
+ * const client = createPublicClient({
40
+ * chain: mainnet,
41
+ * transport: http(),
42
+ * })
43
+ * const transactionReceipt = await waitForTransactionReceipt(client, {
44
+ * hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d',
45
+ * })
46
+ */
9
47
  export async function waitForTransactionReceipt(client, { confirmations = 1, hash, onReplaced, pollingInterval = client.pollingInterval, timeout, }) {
10
48
  const observerId = stringify(['waitForTransactionReceipt', client.uid, hash]);
11
49
  let transaction;
@@ -31,12 +69,17 @@ export async function waitForTransactionReceipt(client, { confirmations = 1, has
31
69
  _unobserve();
32
70
  };
33
71
  try {
72
+ // If we already have a valid receipt, let's check if we have enough
73
+ // confirmations. If we do, then we can resolve.
34
74
  if (receipt) {
35
75
  if (blockNumber - receipt.blockNumber + 1n < confirmations)
36
76
  return;
37
77
  done(() => emit.resolve(receipt));
38
78
  return;
39
79
  }
80
+ // Get the transaction to check if it's been replaced.
81
+ // We need to retry as some RPC Providers may be slow to sync
82
+ // up mined transactions.
40
83
  if (!transaction) {
41
84
  retrying = true;
42
85
  await withRetry(async () => {
@@ -44,33 +87,42 @@ export async function waitForTransactionReceipt(client, { confirmations = 1, has
44
87
  if (transaction.blockNumber)
45
88
  blockNumber = transaction.blockNumber;
46
89
  }, {
90
+ // exponential backoff
47
91
  delay: ({ count }) => ~~(1 << count) * 200,
48
92
  retryCount: 6,
49
93
  });
50
94
  retrying = false;
51
95
  }
96
+ // Get the receipt to check if it's been processed.
52
97
  receipt = await getTransactionReceipt(client, { hash });
98
+ // Check if we have enough confirmations. If not, continue polling.
53
99
  if (confirmations > 0 &&
54
100
  blockNumber - receipt.blockNumber + 1n < confirmations)
55
101
  return;
56
102
  done(() => emit.resolve(receipt));
57
103
  }
58
104
  catch (err) {
105
+ // If the receipt is not found, the transaction will be pending.
106
+ // We need to check if it has potentially been replaced.
59
107
  if (transaction &&
60
108
  (err instanceof TransactionNotFoundError ||
61
109
  err instanceof TransactionReceiptNotFoundError)) {
62
110
  replacedTransaction = transaction;
111
+ // Let's retrieve the transactions from the current block.
63
112
  const block = await getBlock(client, {
64
113
  blockNumber,
65
114
  includeTransactions: true,
66
115
  });
67
116
  const replacementTransaction = block.transactions.find(({ from, nonce }) => from === replacedTransaction.from &&
68
117
  nonce === replacedTransaction.nonce);
118
+ // If we couldn't find a replacement transaction, continue polling.
69
119
  if (!replacementTransaction)
70
120
  return;
121
+ // If we found a replacement transaction, return it's receipt.
71
122
  receipt = await getTransactionReceipt(client, {
72
123
  hash: replacementTransaction.hash,
73
124
  });
125
+ // Check if we have enough confirmations. If not, continue polling.
74
126
  if (blockNumber - receipt.blockNumber + 1n < confirmations)
75
127
  return;
76
128
  let reason = 'replaced';
@@ -1 +1 @@
1
- {"version":3,"file":"waitForTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"waitForTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,31 @@ import { observe } from '../../utils/observe.js';
3
3
  import { poll } from '../../utils/poll.js';
4
4
  import { stringify } from '../../utils/stringify.js';
5
5
  import { getBlockNumber, } from './getBlockNumber.js';
6
+ /**
7
+ * Watches and returns incoming block numbers.
8
+ *
9
+ * - Docs: https://viem.sh/docs/actions/public/watchBlockNumber.html
10
+ * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/blocks/watching-blocks
11
+ * - JSON-RPC Methods:
12
+ * - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval.
13
+ * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event.
14
+ *
15
+ * @param client - Client to use
16
+ * @param parameters - {@link WatchBlockNumberParameters}
17
+ * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlockNumberReturnType}
18
+ *
19
+ * @example
20
+ * import { createPublicClient, watchBlockNumber, http } from 'viem'
21
+ * import { mainnet } from 'viem/chains'
22
+ *
23
+ * const client = createPublicClient({
24
+ * chain: mainnet,
25
+ * transport: http(),
26
+ * })
27
+ * const unwatch = await watchBlockNumber(client, {
28
+ * onBlockNumber: (blockNumber) => console.log(blockNumber),
29
+ * })
30
+ */
6
31
  export function watchBlockNumber(client, { emitOnBegin = false, emitMissed = false, onBlockNumber, onError, poll: poll_, pollingInterval = client.pollingInterval, }) {
7
32
  const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';
8
33
  let prevBlockNumber;
@@ -18,8 +43,12 @@ export function watchBlockNumber(client, { emitOnBegin = false, emitMissed = fal
18
43
  try {
19
44
  const blockNumber = await getBlockNumber(client, { maxAge: 0 });
20
45
  if (prevBlockNumber) {
46
+ // If the current block number is the same as the previous,
47
+ // we can skip.
21
48
  if (blockNumber === prevBlockNumber)
22
49
  return;
50
+ // If we have missed out on some previous blocks, and the
51
+ // `emitMissed` flag is truthy, let's emit those blocks.
23
52
  if (blockNumber - prevBlockNumber > 1 && emitMissed) {
24
53
  for (let i = prevBlockNumber + 1n; i < blockNumber; i++) {
25
54
  emit.onBlockNumber(i, prevBlockNumber);
@@ -27,6 +56,8 @@ export function watchBlockNumber(client, { emitOnBegin = false, emitMissed = fal
27
56
  }
28
57
  }
29
58
  }
59
+ // If the next block number is greater than the previous,
60
+ // it is not in the past, and we can emit the new block number.
30
61
  if (!prevBlockNumber || blockNumber > prevBlockNumber) {
31
62
  emit.onBlockNumber(blockNumber, prevBlockNumber);
32
63
  prevBlockNumber = blockNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"watchBlockNumber.js","sourceRoot":"","sources":["../../../../src/actions/public/watchBlockNumber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watchBlockNumber.js","sourceRoot":"","sources":["../../../../src/actions/public/watchBlockNumber.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,31 @@ import { observe } from '../../utils/observe.js';
2
2
  import { poll } from '../../utils/poll.js';
3
3
  import { stringify } from '../../utils/stringify.js';
4
4
  import { getBlock } from './getBlock.js';
5
+ /**
6
+ * Watches and returns information for incoming blocks.
7
+ *
8
+ * - Docs: https://viem.sh/docs/actions/public/watchBlocks.html
9
+ * - Examples: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/blocks/watching-blocks
10
+ * - JSON-RPC Methods:
11
+ * - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval.
12
+ * - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event.
13
+ *
14
+ * @param client - Client to use
15
+ * @param parameters - {@link WatchBlocksParameters}
16
+ * @returns A function that can be invoked to stop watching for new block numbers. {@link WatchBlocksReturnType}
17
+ *
18
+ * @example
19
+ * import { createPublicClient, watchBlocks, http } from 'viem'
20
+ * import { mainnet } from 'viem/chains'
21
+ *
22
+ * const client = createPublicClient({
23
+ * chain: mainnet,
24
+ * transport: http(),
25
+ * })
26
+ * const unwatch = await watchBlocks(client, {
27
+ * onBlock: (block) => console.log(block),
28
+ * })
29
+ */
5
30
  export function watchBlocks(client, { blockTag = 'latest', emitMissed = false, emitOnBegin = false, onBlock, onError, includeTransactions = false, poll: poll_, pollingInterval = client.pollingInterval, }) {
6
31
  const enablePolling = typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket';
7
32
  let prevBlock;
@@ -21,8 +46,12 @@ export function watchBlocks(client, { blockTag = 'latest', emitMissed = false, e
21
46
  includeTransactions,
22
47
  });
23
48
  if (block.number && prevBlock?.number) {
49
+ // If the current block number is the same as the previous,
50
+ // we can skip.
24
51
  if (block.number === prevBlock.number)
25
52
  return;
53
+ // If we have missed out on some previous blocks, and the
54
+ // `emitMissed` flag is truthy, let's emit those blocks.
26
55
  if (block.number - prevBlock.number > 1 && emitMissed) {
27
56
  for (let i = prevBlock?.number + 1n; i < block.number; i++) {
28
57
  const block = await getBlock(client, {
@@ -34,8 +63,13 @@ export function watchBlocks(client, { blockTag = 'latest', emitMissed = false, e
34
63
  }
35
64
  }
36
65
  }
37
- if (!prevBlock?.number ||
66
+ if (
67
+ // If no previous block exists, emit.
68
+ !prevBlock?.number ||
69
+ // If the block tag is "pending" with no block number, emit.
38
70
  (blockTag === 'pending' && !block?.number) ||
71
+ // If the next block number is greater than the previous block number, emit.
72
+ // We don't want to emit blocks in the past.
39
73
  (block.number && block.number > prevBlock.number)) {
40
74
  emit.onBlock(block, prevBlock);
41
75
  prevBlock = block;
@@ -1 +1 @@
1
- {"version":3,"file":"watchBlocks.js","sourceRoot":"","sources":["../../../../src/actions/public/watchBlocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watchBlocks.js","sourceRoot":"","sources":["../../../../src/actions/public/watchBlocks.ts"],"names":[],"mappings":"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"}