viem 0.0.0-portable-types-20230523145621 → 0.0.0-tmm-sign-typed-data-types.20230619T221425

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 (698) hide show
  1. package/README.md +12 -0
  2. package/dist/cjs/actions/ens/getEnsAddress.js +34 -23
  3. package/dist/cjs/actions/ens/getEnsAddress.js.map +1 -1
  4. package/dist/cjs/actions/getContract.js +22 -16
  5. package/dist/cjs/actions/getContract.js.map +1 -1
  6. package/dist/cjs/actions/public/call.js +1 -1
  7. package/dist/cjs/actions/public/call.js.map +1 -1
  8. package/dist/cjs/actions/public/createContractEventFilter.js +2 -1
  9. package/dist/cjs/actions/public/createContractEventFilter.js.map +1 -1
  10. package/dist/cjs/actions/public/createEventFilter.js +2 -1
  11. package/dist/cjs/actions/public/createEventFilter.js.map +1 -1
  12. package/dist/cjs/actions/public/estimateContractGas.js +1 -1
  13. package/dist/cjs/actions/public/estimateContractGas.js.map +1 -1
  14. package/dist/cjs/actions/public/estimateGas.js.map +1 -1
  15. package/dist/cjs/actions/public/getBlock.js.map +1 -1
  16. package/dist/cjs/actions/public/getBlockTransactionCount.js +1 -1
  17. package/dist/cjs/actions/public/getBlockTransactionCount.js.map +1 -1
  18. package/dist/cjs/actions/public/getChainId.js +3 -1
  19. package/dist/cjs/actions/public/getChainId.js.map +1 -1
  20. package/dist/cjs/actions/public/getFilterChanges.js +15 -3
  21. package/dist/cjs/actions/public/getFilterChanges.js.map +1 -1
  22. package/dist/cjs/actions/public/getFilterLogs.js +14 -2
  23. package/dist/cjs/actions/public/getFilterLogs.js.map +1 -1
  24. package/dist/cjs/actions/public/getGasPrice.js.map +1 -1
  25. package/dist/cjs/actions/public/getLogs.js +15 -3
  26. package/dist/cjs/actions/public/getLogs.js.map +1 -1
  27. package/dist/cjs/actions/public/getTransactionCount.js.map +1 -1
  28. package/dist/cjs/actions/public/verifyTypedData.js +6 -1
  29. package/dist/cjs/actions/public/verifyTypedData.js.map +1 -1
  30. package/dist/cjs/actions/public/watchContractEvent.js +3 -1
  31. package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
  32. package/dist/cjs/actions/public/watchEvent.js +3 -1
  33. package/dist/cjs/actions/public/watchEvent.js.map +1 -1
  34. package/dist/cjs/actions/test/getAutomine.js +4 -0
  35. package/dist/cjs/actions/test/getAutomine.js.map +1 -1
  36. package/dist/cjs/actions/test/mine.js +10 -4
  37. package/dist/cjs/actions/test/mine.js.map +1 -1
  38. package/dist/cjs/actions/test/sendUnsignedTransaction.js +21 -3
  39. package/dist/cjs/actions/test/sendUnsignedTransaction.js.map +1 -1
  40. package/dist/cjs/actions/test/setAutomine.js +11 -4
  41. package/dist/cjs/actions/test/setAutomine.js.map +1 -1
  42. package/dist/cjs/actions/test/setBalance.js +10 -4
  43. package/dist/cjs/actions/test/setBalance.js.map +1 -1
  44. package/dist/cjs/actions/wallet/sendTransaction.js +1 -1
  45. package/dist/cjs/actions/wallet/sendTransaction.js.map +1 -1
  46. package/dist/cjs/actions/wallet/signMessage.js +8 -1
  47. package/dist/cjs/actions/wallet/signMessage.js.map +1 -1
  48. package/dist/cjs/chains.js +14 -2
  49. package/dist/cjs/chains.js.map +1 -1
  50. package/dist/cjs/clients/createClient.js +1 -1
  51. package/dist/cjs/clients/createClient.js.map +1 -1
  52. package/dist/cjs/clients/createPublicClient.js.map +1 -1
  53. package/dist/cjs/clients/createTestClient.js.map +1 -1
  54. package/dist/cjs/clients/createWalletClient.js.map +1 -1
  55. package/dist/cjs/clients/decorators/public.js.map +1 -1
  56. package/dist/cjs/clients/decorators/test.js.map +1 -1
  57. package/dist/cjs/clients/transports/createTransport.js.map +1 -1
  58. package/dist/cjs/clients/transports/custom.js.map +1 -1
  59. package/dist/cjs/clients/transports/fallback.js.map +1 -1
  60. package/dist/cjs/clients/transports/http.js +25 -7
  61. package/dist/cjs/clients/transports/http.js.map +1 -1
  62. package/dist/cjs/clients/transports/webSocket.js +22 -14
  63. package/dist/cjs/clients/transports/webSocket.js.map +1 -1
  64. package/dist/cjs/errors/abi.js +15 -1
  65. package/dist/cjs/errors/abi.js.map +1 -1
  66. package/dist/cjs/errors/base.js +4 -11
  67. package/dist/cjs/errors/base.js.map +1 -1
  68. package/dist/cjs/errors/request.js.map +1 -1
  69. package/dist/cjs/errors/rpc.js.map +1 -1
  70. package/dist/cjs/errors/version.js +1 -1
  71. package/dist/cjs/errors/version.js.map +1 -1
  72. package/dist/cjs/index.js +26 -10
  73. package/dist/cjs/index.js.map +1 -1
  74. package/dist/cjs/types/eip1193.js.map +1 -1
  75. package/dist/cjs/utils/abi/decodeEventLog.js +33 -19
  76. package/dist/cjs/utils/abi/decodeEventLog.js.map +1 -1
  77. package/dist/cjs/utils/abi/encodeEventTopics.js +11 -7
  78. package/dist/cjs/utils/abi/encodeEventTopics.js.map +1 -1
  79. package/dist/cjs/utils/abi/getAbiItem.js +2 -0
  80. package/dist/cjs/utils/abi/getAbiItem.js.map +1 -1
  81. package/dist/cjs/utils/encoding/toBytes.js.map +1 -1
  82. package/dist/cjs/utils/encoding/toHex.js.map +1 -1
  83. package/dist/cjs/utils/ens/encodeLabelhash.js +8 -0
  84. package/dist/cjs/utils/ens/encodeLabelhash.js.map +1 -0
  85. package/dist/cjs/utils/ens/encodedLabelToLabelhash.js +18 -0
  86. package/dist/cjs/utils/ens/encodedLabelToLabelhash.js.map +1 -0
  87. package/dist/cjs/utils/ens/labelhash.js +2 -1
  88. package/dist/cjs/utils/ens/labelhash.js.map +1 -1
  89. package/dist/cjs/utils/ens/namehash.js +5 -1
  90. package/dist/cjs/utils/ens/namehash.js.map +1 -1
  91. package/dist/cjs/utils/ens/packetToBytes.js +10 -9
  92. package/dist/cjs/utils/ens/packetToBytes.js.map +1 -1
  93. package/dist/cjs/utils/filters/createFilterRequestScope.js.map +1 -1
  94. package/dist/cjs/utils/formatters/block.js +3 -1
  95. package/dist/cjs/utils/formatters/block.js.map +1 -1
  96. package/dist/cjs/utils/formatters/log.js +2 -2
  97. package/dist/cjs/utils/formatters/transaction.js +3 -1
  98. package/dist/cjs/utils/formatters/transaction.js.map +1 -1
  99. package/dist/cjs/utils/formatters/transactionReceipt.js +1 -1
  100. package/dist/cjs/utils/formatters/transactionReceipt.js.map +1 -1
  101. package/dist/cjs/utils/formatters/transactionRequest.js.map +1 -1
  102. package/dist/cjs/utils/hash/getEventSelector.js +5 -1
  103. package/dist/cjs/utils/hash/getEventSelector.js.map +1 -1
  104. package/dist/cjs/utils/hash/getFunctionSelector.js +5 -1
  105. package/dist/cjs/utils/hash/getFunctionSelector.js.map +1 -1
  106. package/dist/cjs/utils/hash/hashFunction.js +6 -4
  107. package/dist/cjs/utils/hash/hashFunction.js.map +1 -1
  108. package/dist/cjs/utils/index.js.map +1 -1
  109. package/dist/cjs/utils/observe.js.map +1 -1
  110. package/dist/cjs/utils/promise/createBatchScheduler.js.map +1 -1
  111. package/dist/cjs/utils/promise/withCache.js +8 -4
  112. package/dist/cjs/utils/promise/withCache.js.map +1 -1
  113. package/dist/cjs/utils/rpc.js +12 -17
  114. package/dist/cjs/utils/rpc.js.map +1 -1
  115. package/dist/cjs/utils/signature/hashMessage.js +7 -1
  116. package/dist/cjs/utils/signature/hashMessage.js.map +1 -1
  117. package/dist/cjs/utils/transaction/getTransactionType.js.map +1 -1
  118. package/dist/cjs/utils/transaction/serializeTransaction.js.map +1 -1
  119. package/dist/cjs/utils/typedData.js.map +1 -1
  120. package/dist/cjs/utils/unit/parseUnits.js +13 -3
  121. package/dist/cjs/utils/unit/parseUnits.js.map +1 -1
  122. package/dist/esm/accounts/generateMnemonic.js +7 -0
  123. package/dist/esm/accounts/generateMnemonic.js.map +1 -1
  124. package/dist/esm/accounts/generatePrivateKey.js +5 -0
  125. package/dist/esm/accounts/generatePrivateKey.js.map +1 -1
  126. package/dist/esm/accounts/hdKeyToAccount.js +5 -0
  127. package/dist/esm/accounts/hdKeyToAccount.js.map +1 -1
  128. package/dist/esm/accounts/mnemonicToAccount.js +5 -0
  129. package/dist/esm/accounts/mnemonicToAccount.js.map +1 -1
  130. package/dist/esm/accounts/privateKeyToAccount.js +5 -0
  131. package/dist/esm/accounts/privateKeyToAccount.js.map +1 -1
  132. package/dist/esm/accounts/toAccount.js +5 -0
  133. package/dist/esm/accounts/toAccount.js.map +1 -1
  134. package/dist/esm/accounts/utils/publicKeyToAddress.js +7 -0
  135. package/dist/esm/accounts/utils/publicKeyToAddress.js.map +1 -1
  136. package/dist/esm/accounts/utils/sign.js +8 -0
  137. package/dist/esm/accounts/utils/sign.js.map +1 -1
  138. package/dist/esm/accounts/utils/signMessage.js +6 -0
  139. package/dist/esm/accounts/utils/signMessage.js.map +1 -1
  140. package/dist/esm/accounts/utils/signTypedData.js +6 -0
  141. package/dist/esm/accounts/utils/signTypedData.js.map +1 -1
  142. package/dist/esm/actions/ens/getEnsAddress.js +62 -23
  143. package/dist/esm/actions/ens/getEnsAddress.js.map +1 -1
  144. package/dist/esm/actions/ens/getEnsAvatar.js +28 -0
  145. package/dist/esm/actions/ens/getEnsAvatar.js.map +1 -1
  146. package/dist/esm/actions/ens/getEnsName.js +27 -0
  147. package/dist/esm/actions/ens/getEnsName.js.map +1 -1
  148. package/dist/esm/actions/ens/getEnsResolver.js +28 -0
  149. package/dist/esm/actions/ens/getEnsResolver.js.map +1 -1
  150. package/dist/esm/actions/ens/getEnsText.js +29 -0
  151. package/dist/esm/actions/ens/getEnsText.js.map +1 -1
  152. package/dist/esm/actions/getContract.js +58 -16
  153. package/dist/esm/actions/getContract.js.map +1 -1
  154. package/dist/esm/actions/public/call.js +32 -1
  155. package/dist/esm/actions/public/call.js.map +1 -1
  156. package/dist/esm/actions/public/createBlockFilter.js +21 -0
  157. package/dist/esm/actions/public/createBlockFilter.js.map +1 -1
  158. package/dist/esm/actions/public/createContractEventFilter.js +24 -1
  159. package/dist/esm/actions/public/createContractEventFilter.js.map +1 -1
  160. package/dist/esm/actions/public/createEventFilter.js +25 -1
  161. package/dist/esm/actions/public/createEventFilter.js.map +1 -1
  162. package/dist/esm/actions/public/createPendingTransactionFilter.js +21 -0
  163. package/dist/esm/actions/public/createPendingTransactionFilter.js.map +1 -1
  164. package/dist/esm/actions/public/estimateContractGas.js +28 -1
  165. package/dist/esm/actions/public/estimateContractGas.js.map +1 -1
  166. package/dist/esm/actions/public/estimateGas.js +26 -0
  167. package/dist/esm/actions/public/estimateGas.js.map +1 -1
  168. package/dist/esm/actions/public/getBalance.js +35 -0
  169. package/dist/esm/actions/public/getBalance.js.map +1 -1
  170. package/dist/esm/actions/public/getBlock.js +24 -0
  171. package/dist/esm/actions/public/getBlock.js.map +1 -1
  172. package/dist/esm/actions/public/getBlockNumber.js +23 -0
  173. package/dist/esm/actions/public/getBlockNumber.js.map +1 -1
  174. package/dist/esm/actions/public/getBlockTransactionCount.js +24 -1
  175. package/dist/esm/actions/public/getBlockTransactionCount.js.map +1 -1
  176. package/dist/esm/actions/public/getBytecode.js +23 -0
  177. package/dist/esm/actions/public/getBytecode.js.map +1 -1
  178. package/dist/esm/actions/public/getChainId.js +24 -1
  179. package/dist/esm/actions/public/getChainId.js.map +1 -1
  180. package/dist/esm/actions/public/getFeeHistory.js +24 -0
  181. package/dist/esm/actions/public/getFeeHistory.js.map +1 -1
  182. package/dist/esm/actions/public/getFilterChanges.js +99 -3
  183. package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
  184. package/dist/esm/actions/public/getFilterLogs.js +43 -2
  185. package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
  186. package/dist/esm/actions/public/getGasPrice.js +20 -0
  187. package/dist/esm/actions/public/getGasPrice.js.map +1 -1
  188. package/dist/esm/actions/public/getLogs.js +39 -3
  189. package/dist/esm/actions/public/getLogs.js.map +1 -1
  190. package/dist/esm/actions/public/getStorageAt.js +24 -0
  191. package/dist/esm/actions/public/getStorageAt.js.map +1 -1
  192. package/dist/esm/actions/public/getTransaction.js +24 -0
  193. package/dist/esm/actions/public/getTransaction.js.map +1 -1
  194. package/dist/esm/actions/public/getTransactionConfirmations.js +24 -0
  195. package/dist/esm/actions/public/getTransactionConfirmations.js.map +1 -1
  196. package/dist/esm/actions/public/getTransactionCount.js +23 -0
  197. package/dist/esm/actions/public/getTransactionCount.js.map +1 -1
  198. package/dist/esm/actions/public/getTransactionReceipt.js +24 -0
  199. package/dist/esm/actions/public/getTransactionReceipt.js.map +1 -1
  200. package/dist/esm/actions/public/multicall.js +40 -0
  201. package/dist/esm/actions/public/multicall.js.map +1 -1
  202. package/dist/esm/actions/public/readContract.js +31 -0
  203. package/dist/esm/actions/public/readContract.js.map +1 -1
  204. package/dist/esm/actions/public/simulateContract.js +31 -0
  205. package/dist/esm/actions/public/simulateContract.js.map +1 -1
  206. package/dist/esm/actions/public/uninstallFilter.js +24 -0
  207. package/dist/esm/actions/public/uninstallFilter.js.map +1 -1
  208. package/dist/esm/actions/public/verifyHash.js +10 -0
  209. package/dist/esm/actions/public/verifyHash.js.map +1 -1
  210. package/dist/esm/actions/public/verifyMessage.js +11 -0
  211. package/dist/esm/actions/public/verifyMessage.js.map +1 -1
  212. package/dist/esm/actions/public/verifyTypedData.js +16 -2
  213. package/dist/esm/actions/public/verifyTypedData.js.map +1 -1
  214. package/dist/esm/actions/public/waitForTransactionReceipt.js +52 -0
  215. package/dist/esm/actions/public/waitForTransactionReceipt.js.map +1 -1
  216. package/dist/esm/actions/public/watchBlockNumber.js +31 -0
  217. package/dist/esm/actions/public/watchBlockNumber.js.map +1 -1
  218. package/dist/esm/actions/public/watchBlocks.js +35 -1
  219. package/dist/esm/actions/public/watchBlocks.js.map +1 -1
  220. package/dist/esm/actions/public/watchContractEvent.js +39 -1
  221. package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
  222. package/dist/esm/actions/public/watchEvent.js +41 -1
  223. package/dist/esm/actions/public/watchEvent.js.map +1 -1
  224. package/dist/esm/actions/public/watchPendingTransactions.js +29 -0
  225. package/dist/esm/actions/public/watchPendingTransactions.js.map +1 -1
  226. package/dist/esm/actions/test/dropTransaction.js +22 -0
  227. package/dist/esm/actions/test/dropTransaction.js.map +1 -1
  228. package/dist/esm/actions/test/getAutomine.js +24 -0
  229. package/dist/esm/actions/test/getAutomine.js.map +1 -1
  230. package/dist/esm/actions/test/getTxpoolContent.js +20 -0
  231. package/dist/esm/actions/test/getTxpoolContent.js.map +1 -1
  232. package/dist/esm/actions/test/getTxpoolStatus.js +20 -0
  233. package/dist/esm/actions/test/getTxpoolStatus.js.map +1 -1
  234. package/dist/esm/actions/test/impersonateAccount.js +22 -0
  235. package/dist/esm/actions/test/impersonateAccount.js.map +1 -1
  236. package/dist/esm/actions/test/increaseTime.js +22 -0
  237. package/dist/esm/actions/test/increaseTime.js.map +1 -1
  238. package/dist/esm/actions/test/inspectTxpool.js +20 -0
  239. package/dist/esm/actions/test/inspectTxpool.js.map +1 -1
  240. package/dist/esm/actions/test/mine.js +30 -4
  241. package/dist/esm/actions/test/mine.js.map +1 -1
  242. package/dist/esm/actions/test/removeBlockTimestampInterval.js +19 -0
  243. package/dist/esm/actions/test/removeBlockTimestampInterval.js.map +1 -1
  244. package/dist/esm/actions/test/reset.js +20 -0
  245. package/dist/esm/actions/test/reset.js.map +1 -1
  246. package/dist/esm/actions/test/revert.js +20 -0
  247. package/dist/esm/actions/test/revert.js.map +1 -1
  248. package/dist/esm/actions/test/sendUnsignedTransaction.js +48 -4
  249. package/dist/esm/actions/test/sendUnsignedTransaction.js.map +1 -1
  250. package/dist/esm/actions/test/setAutomine.js +30 -4
  251. package/dist/esm/actions/test/setAutomine.js.map +1 -1
  252. package/dist/esm/actions/test/setBalance.js +33 -4
  253. package/dist/esm/actions/test/setBalance.js.map +1 -1
  254. package/dist/esm/actions/test/setBlockGasLimit.js +20 -0
  255. package/dist/esm/actions/test/setBlockGasLimit.js.map +1 -1
  256. package/dist/esm/actions/test/setBlockTimestampInterval.js +20 -0
  257. package/dist/esm/actions/test/setBlockTimestampInterval.js.map +1 -1
  258. package/dist/esm/actions/test/setCode.js +23 -0
  259. package/dist/esm/actions/test/setCode.js.map +1 -1
  260. package/dist/esm/actions/test/setCoinbase.js +22 -0
  261. package/dist/esm/actions/test/setCoinbase.js.map +1 -1
  262. package/dist/esm/actions/test/setIntervalMining.js +20 -0
  263. package/dist/esm/actions/test/setIntervalMining.js.map +1 -1
  264. package/dist/esm/actions/test/setLoggingEnabled.js +19 -0
  265. package/dist/esm/actions/test/setLoggingEnabled.js.map +1 -1
  266. package/dist/esm/actions/test/setMinGasPrice.js +24 -0
  267. package/dist/esm/actions/test/setMinGasPrice.js.map +1 -1
  268. package/dist/esm/actions/test/setNextBlockBaseFeePerGas.js +22 -0
  269. package/dist/esm/actions/test/setNextBlockBaseFeePerGas.js.map +1 -1
  270. package/dist/esm/actions/test/setNextBlockTimestamp.js +20 -0
  271. package/dist/esm/actions/test/setNextBlockTimestamp.js.map +1 -1
  272. package/dist/esm/actions/test/setNonce.js +23 -0
  273. package/dist/esm/actions/test/setNonce.js.map +1 -1
  274. package/dist/esm/actions/test/setRpcUrl.js +20 -0
  275. package/dist/esm/actions/test/setRpcUrl.js.map +1 -1
  276. package/dist/esm/actions/test/setStorageAt.js +24 -0
  277. package/dist/esm/actions/test/setStorageAt.js.map +1 -1
  278. package/dist/esm/actions/test/snapshot.js +19 -0
  279. package/dist/esm/actions/test/snapshot.js.map +1 -1
  280. package/dist/esm/actions/test/stopImpersonatingAccount.js +22 -0
  281. package/dist/esm/actions/test/stopImpersonatingAccount.js.map +1 -1
  282. package/dist/esm/actions/wallet/addChain.js +19 -0
  283. package/dist/esm/actions/wallet/addChain.js.map +1 -1
  284. package/dist/esm/actions/wallet/deployContract.js +27 -0
  285. package/dist/esm/actions/wallet/deployContract.js.map +1 -1
  286. package/dist/esm/actions/wallet/getAddresses.js +20 -0
  287. package/dist/esm/actions/wallet/getAddresses.js.map +1 -1
  288. package/dist/esm/actions/wallet/getPermissions.js +20 -0
  289. package/dist/esm/actions/wallet/getPermissions.js.map +1 -1
  290. package/dist/esm/actions/wallet/requestAddresses.js +24 -0
  291. package/dist/esm/actions/wallet/requestAddresses.js.map +1 -1
  292. package/dist/esm/actions/wallet/requestPermissions.js +23 -0
  293. package/dist/esm/actions/wallet/requestPermissions.js.map +1 -1
  294. package/dist/esm/actions/wallet/sendTransaction.js +48 -1
  295. package/dist/esm/actions/wallet/sendTransaction.js.map +1 -1
  296. package/dist/esm/actions/wallet/signMessage.js +55 -2
  297. package/dist/esm/actions/wallet/signMessage.js.map +1 -1
  298. package/dist/esm/actions/wallet/signTypedData.js +100 -0
  299. package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
  300. package/dist/esm/actions/wallet/switchChain.js +20 -0
  301. package/dist/esm/actions/wallet/switchChain.js.map +1 -1
  302. package/dist/esm/actions/wallet/watchAsset.js +28 -0
  303. package/dist/esm/actions/wallet/watchAsset.js.map +1 -1
  304. package/dist/esm/actions/wallet/writeContract.js +50 -0
  305. package/dist/esm/actions/wallet/writeContract.js.map +1 -1
  306. package/dist/esm/chains.js +99 -87
  307. package/dist/esm/chains.js.map +1 -1
  308. package/dist/esm/clients/createClient.js +4 -1
  309. package/dist/esm/clients/createClient.js.map +1 -1
  310. package/dist/esm/clients/createPublicClient.js +19 -0
  311. package/dist/esm/clients/createPublicClient.js.map +1 -1
  312. package/dist/esm/clients/createTestClient.js +23 -0
  313. package/dist/esm/clients/createTestClient.js.map +1 -1
  314. package/dist/esm/clients/createWalletClient.js +36 -0
  315. package/dist/esm/clients/createWalletClient.js.map +1 -1
  316. package/dist/esm/clients/decorators/public.js.map +1 -1
  317. package/dist/esm/clients/decorators/test.js.map +1 -1
  318. package/dist/esm/clients/transports/createTransport.js +3 -0
  319. package/dist/esm/clients/transports/createTransport.js.map +1 -1
  320. package/dist/esm/clients/transports/custom.js +3 -0
  321. package/dist/esm/clients/transports/custom.js.map +1 -1
  322. package/dist/esm/clients/transports/fallback.js +11 -0
  323. package/dist/esm/clients/transports/fallback.js.map +1 -1
  324. package/dist/esm/clients/transports/http.js +31 -8
  325. package/dist/esm/clients/transports/http.js.map +1 -1
  326. package/dist/esm/clients/transports/webSocket.js +28 -15
  327. package/dist/esm/clients/transports/webSocket.js.map +1 -1
  328. package/dist/esm/constants/abis.js +6 -0
  329. package/dist/esm/constants/abis.js.map +1 -1
  330. package/dist/esm/constants/solidity.js +1 -0
  331. package/dist/esm/constants/solidity.js.map +1 -1
  332. package/dist/esm/contract.js +0 -1
  333. package/dist/esm/contract.js.map +1 -1
  334. package/dist/esm/errors/abi.js +15 -1
  335. package/dist/esm/errors/abi.js.map +1 -1
  336. package/dist/esm/errors/base.js +4 -11
  337. package/dist/esm/errors/base.js.map +1 -1
  338. package/dist/esm/errors/node.js +9 -0
  339. package/dist/esm/errors/node.js.map +1 -1
  340. package/dist/esm/errors/request.js.map +1 -1
  341. package/dist/esm/errors/rpc.js +103 -0
  342. package/dist/esm/errors/rpc.js.map +1 -1
  343. package/dist/esm/errors/version.js +1 -1
  344. package/dist/esm/errors/version.js.map +1 -1
  345. package/dist/esm/index.js +2 -52
  346. package/dist/esm/index.js.map +1 -1
  347. package/dist/esm/package.json +1 -1
  348. package/dist/esm/types/account.js +1 -1
  349. package/dist/esm/types/account.js.map +1 -1
  350. package/dist/esm/types/eip1193.js +2 -0
  351. package/dist/esm/types/eip1193.js.map +1 -1
  352. package/dist/esm/utils/abi/decodeAbiParameters.js +29 -0
  353. package/dist/esm/utils/abi/decodeAbiParameters.js.map +1 -1
  354. package/dist/esm/utils/abi/decodeEventLog.js +35 -19
  355. package/dist/esm/utils/abi/decodeEventLog.js.map +1 -1
  356. package/dist/esm/utils/abi/encodeAbiParameters.js +10 -1
  357. package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
  358. package/dist/esm/utils/abi/encodeEventTopics.js +11 -7
  359. package/dist/esm/utils/abi/encodeEventTopics.js.map +1 -1
  360. package/dist/esm/utils/abi/getAbiItem.js +9 -0
  361. package/dist/esm/utils/abi/getAbiItem.js.map +1 -1
  362. package/dist/esm/utils/accounts.js +3 -0
  363. package/dist/esm/utils/accounts.js.map +1 -1
  364. package/dist/esm/utils/buildRequest.js +2 -0
  365. package/dist/esm/utils/buildRequest.js.map +1 -1
  366. package/dist/esm/utils/data/size.js +6 -0
  367. package/dist/esm/utils/data/size.js.map +1 -1
  368. package/dist/esm/utils/data/slice.js +21 -0
  369. package/dist/esm/utils/data/slice.js.map +1 -1
  370. package/dist/esm/utils/encoding/fromBytes.js +79 -0
  371. package/dist/esm/utils/encoding/fromBytes.js.map +1 -1
  372. package/dist/esm/utils/encoding/fromHex.js +106 -0
  373. package/dist/esm/utils/encoding/fromHex.js.map +1 -1
  374. package/dist/esm/utils/encoding/toBytes.js +102 -1
  375. package/dist/esm/utils/encoding/toBytes.js.map +1 -1
  376. package/dist/esm/utils/encoding/toHex.js +108 -2
  377. package/dist/esm/utils/encoding/toHex.js.map +1 -1
  378. package/dist/esm/utils/ens/avatar/parseAvatarRecord.js +6 -2
  379. package/dist/esm/utils/ens/avatar/parseAvatarRecord.js.map +1 -1
  380. package/dist/esm/utils/ens/avatar/utils.js +10 -0
  381. package/dist/esm/utils/ens/avatar/utils.js.map +1 -1
  382. package/dist/esm/utils/ens/encodeLabelhash.js +4 -0
  383. package/dist/esm/utils/ens/encodeLabelhash.js.map +1 -0
  384. package/dist/esm/utils/ens/encodedLabelToLabelhash.js +14 -0
  385. package/dist/esm/utils/ens/encodedLabelToLabelhash.js.map +1 -0
  386. package/dist/esm/utils/ens/labelhash.js +11 -1
  387. package/dist/esm/utils/ens/labelhash.js.map +1 -1
  388. package/dist/esm/utils/ens/namehash.js +18 -2
  389. package/dist/esm/utils/ens/namehash.js.map +1 -1
  390. package/dist/esm/utils/ens/normalize.js +10 -0
  391. package/dist/esm/utils/ens/normalize.js.map +1 -1
  392. package/dist/esm/utils/ens/packetToBytes.js +16 -9
  393. package/dist/esm/utils/ens/packetToBytes.js.map +1 -1
  394. package/dist/esm/utils/filters/createFilterRequestScope.js +5 -0
  395. package/dist/esm/utils/filters/createFilterRequestScope.js.map +1 -1
  396. package/dist/esm/utils/formatters/block.js +4 -1
  397. package/dist/esm/utils/formatters/block.js.map +1 -1
  398. package/dist/esm/utils/formatters/extract.js +3 -0
  399. package/dist/esm/utils/formatters/extract.js.map +1 -1
  400. package/dist/esm/utils/formatters/format.js +3 -0
  401. package/dist/esm/utils/formatters/format.js.map +1 -1
  402. package/dist/esm/utils/formatters/log.js +2 -2
  403. package/dist/esm/utils/formatters/transaction.js +3 -1
  404. package/dist/esm/utils/formatters/transaction.js.map +1 -1
  405. package/dist/esm/utils/formatters/transactionReceipt.js +2 -2
  406. package/dist/esm/utils/formatters/transactionReceipt.js.map +1 -1
  407. package/dist/esm/utils/formatters/transactionRequest.js +1 -1
  408. package/dist/esm/utils/formatters/transactionRequest.js.map +1 -1
  409. package/dist/esm/utils/hash/getEventSelector.js +6 -2
  410. package/dist/esm/utils/hash/getEventSelector.js.map +1 -1
  411. package/dist/esm/utils/hash/getFunctionSelector.js +6 -2
  412. package/dist/esm/utils/hash/getFunctionSelector.js.map +1 -1
  413. package/dist/esm/utils/hash/hashFunction.js +4 -3
  414. package/dist/esm/utils/hash/hashFunction.js.map +1 -1
  415. package/dist/esm/utils/index.js.map +1 -1
  416. package/dist/esm/utils/observe.js +7 -2
  417. package/dist/esm/utils/observe.js.map +1 -1
  418. package/dist/esm/utils/poll.js +3 -0
  419. package/dist/esm/utils/poll.js.map +1 -1
  420. package/dist/esm/utils/promise/createBatchScheduler.js +1 -1
  421. package/dist/esm/utils/promise/createBatchScheduler.js.map +1 -1
  422. package/dist/esm/utils/promise/withCache.js +23 -6
  423. package/dist/esm/utils/promise/withCache.js.map +1 -1
  424. package/dist/esm/utils/regex.js +4 -0
  425. package/dist/esm/utils/regex.js.map +1 -1
  426. package/dist/esm/utils/rpc.js +27 -19
  427. package/dist/esm/utils/rpc.js.map +1 -1
  428. package/dist/esm/utils/signature/hashMessage.js +8 -2
  429. package/dist/esm/utils/signature/hashMessage.js.map +1 -1
  430. package/dist/esm/utils/signature/hashTypedData.js +3 -0
  431. package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
  432. package/dist/esm/utils/signature/recoverPublicKey.js +2 -0
  433. package/dist/esm/utils/signature/recoverPublicKey.js.map +1 -1
  434. package/dist/esm/utils/signature/verifyMessage.js +12 -0
  435. package/dist/esm/utils/signature/verifyMessage.js.map +1 -1
  436. package/dist/esm/utils/signature/verifyTypedData.js +12 -0
  437. package/dist/esm/utils/signature/verifyTypedData.js.map +1 -1
  438. package/dist/esm/utils/transaction/getTransactionType.js.map +1 -1
  439. package/dist/esm/utils/transaction/prepareRequest.js +5 -1
  440. package/dist/esm/utils/transaction/prepareRequest.js.map +1 -1
  441. package/dist/esm/utils/transaction/serializeTransaction.js +4 -2
  442. package/dist/esm/utils/transaction/serializeTransaction.js.map +1 -1
  443. package/dist/esm/utils/typedData.js +4 -0
  444. package/dist/esm/utils/typedData.js.map +1 -1
  445. package/dist/esm/utils/unit/parseUnits.js +15 -3
  446. package/dist/esm/utils/unit/parseUnits.js.map +1 -1
  447. package/dist/types/accounts/types.d.ts +3 -5
  448. package/dist/types/accounts/types.d.ts.map +1 -1
  449. package/dist/types/accounts/utils/signMessage.d.ts +2 -2
  450. package/dist/types/accounts/utils/signMessage.d.ts.map +1 -1
  451. package/dist/types/accounts/utils/signTypedData.d.ts +3 -6
  452. package/dist/types/accounts/utils/signTypedData.d.ts.map +1 -1
  453. package/dist/types/actions/ens/getEnsAddress.d.ts.map +1 -1
  454. package/dist/types/actions/getContract.d.ts +65 -21
  455. package/dist/types/actions/getContract.d.ts.map +1 -1
  456. package/dist/types/actions/public/createContractEventFilter.d.ts +8 -3
  457. package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
  458. package/dist/types/actions/public/createEventFilter.d.ts +17 -5
  459. package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
  460. package/dist/types/actions/public/estimateContractGas.d.ts +4 -2
  461. package/dist/types/actions/public/estimateContractGas.d.ts.map +1 -1
  462. package/dist/types/actions/public/getBlockNumber.d.ts +2 -2
  463. package/dist/types/actions/public/getBlockNumber.d.ts.map +1 -1
  464. package/dist/types/actions/public/getChainId.d.ts.map +1 -1
  465. package/dist/types/actions/public/getFilterChanges.d.ts +4 -4
  466. package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
  467. package/dist/types/actions/public/getFilterLogs.d.ts +4 -4
  468. package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
  469. package/dist/types/actions/public/getLogs.d.ts +10 -4
  470. package/dist/types/actions/public/getLogs.d.ts.map +1 -1
  471. package/dist/types/actions/public/verifyMessage.d.ts +2 -2
  472. package/dist/types/actions/public/verifyMessage.d.ts.map +1 -1
  473. package/dist/types/actions/public/verifyTypedData.d.ts +3 -4
  474. package/dist/types/actions/public/verifyTypedData.d.ts.map +1 -1
  475. package/dist/types/actions/public/watchContractEvent.d.ts +10 -5
  476. package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
  477. package/dist/types/actions/public/watchEvent.d.ts +11 -5
  478. package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
  479. package/dist/types/actions/test/getAutomine.d.ts.map +1 -1
  480. package/dist/types/actions/test/mine.d.ts.map +1 -1
  481. package/dist/types/actions/test/sendUnsignedTransaction.d.ts +8 -2
  482. package/dist/types/actions/test/sendUnsignedTransaction.d.ts.map +1 -1
  483. package/dist/types/actions/test/setAutomine.d.ts.map +1 -1
  484. package/dist/types/actions/test/setBalance.d.ts.map +1 -1
  485. package/dist/types/actions/wallet/signMessage.d.ts +2 -2
  486. package/dist/types/actions/wallet/signMessage.d.ts.map +1 -1
  487. package/dist/types/actions/wallet/signTypedData.d.ts +4 -7
  488. package/dist/types/actions/wallet/signTypedData.d.ts.map +1 -1
  489. package/dist/types/chains.d.ts +364 -16
  490. package/dist/types/chains.d.ts.map +1 -1
  491. package/dist/types/clients/createClient.d.ts +5 -5
  492. package/dist/types/clients/createClient.d.ts.map +1 -1
  493. package/dist/types/clients/createPublicClient.d.ts +3 -3
  494. package/dist/types/clients/createPublicClient.d.ts.map +1 -1
  495. package/dist/types/clients/createTestClient.d.ts +2 -2
  496. package/dist/types/clients/createTestClient.d.ts.map +1 -1
  497. package/dist/types/clients/createWalletClient.d.ts +2 -2
  498. package/dist/types/clients/createWalletClient.d.ts.map +1 -1
  499. package/dist/types/clients/decorators/public.d.ts +8 -8
  500. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  501. package/dist/types/clients/decorators/test.d.ts +1 -1
  502. package/dist/types/clients/decorators/test.d.ts.map +1 -1
  503. package/dist/types/clients/decorators/wallet.d.ts +1 -3
  504. package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
  505. package/dist/types/clients/transports/createTransport.d.ts +5 -8
  506. package/dist/types/clients/transports/createTransport.d.ts.map +1 -1
  507. package/dist/types/clients/transports/custom.d.ts +2 -2
  508. package/dist/types/clients/transports/custom.d.ts.map +1 -1
  509. package/dist/types/clients/transports/http.d.ts +11 -0
  510. package/dist/types/clients/transports/http.d.ts.map +1 -1
  511. package/dist/types/clients/transports/webSocket.d.ts.map +1 -1
  512. package/dist/types/contract.d.ts +1 -1
  513. package/dist/types/contract.d.ts.map +1 -1
  514. package/dist/types/errors/abi.d.ts +6 -4
  515. package/dist/types/errors/abi.d.ts.map +1 -1
  516. package/dist/types/errors/base.d.ts +0 -1
  517. package/dist/types/errors/base.d.ts.map +1 -1
  518. package/dist/types/errors/request.d.ts +16 -8
  519. package/dist/types/errors/request.d.ts.map +1 -1
  520. package/dist/types/errors/rpc.d.ts +2 -2
  521. package/dist/types/errors/rpc.d.ts.map +1 -1
  522. package/dist/types/errors/version.d.ts +1 -1
  523. package/dist/types/errors/version.d.ts.map +1 -1
  524. package/dist/types/index.d.ts +55 -53
  525. package/dist/types/index.d.ts.map +1 -1
  526. package/dist/types/types/account.d.ts +1 -1
  527. package/dist/types/types/account.d.ts.map +1 -1
  528. package/dist/types/types/contract.d.ts +11 -6
  529. package/dist/types/types/contract.d.ts.map +1 -1
  530. package/dist/types/types/eip1193.d.ts +1042 -827
  531. package/dist/types/types/eip1193.d.ts.map +1 -1
  532. package/dist/types/types/filter.d.ts +12 -3
  533. package/dist/types/types/filter.d.ts.map +1 -1
  534. package/dist/types/types/log.d.ts +5 -3
  535. package/dist/types/types/log.d.ts.map +1 -1
  536. package/dist/types/types/misc.d.ts +4 -0
  537. package/dist/types/types/misc.d.ts.map +1 -1
  538. package/dist/types/types/rpc.d.ts +1 -1
  539. package/dist/types/types/rpc.d.ts.map +1 -1
  540. package/dist/types/types/transaction.d.ts +14 -5
  541. package/dist/types/types/transaction.d.ts.map +1 -1
  542. package/dist/types/types/typedData.d.ts +17 -29
  543. package/dist/types/types/typedData.d.ts.map +1 -1
  544. package/dist/types/types/utils.d.ts +11 -0
  545. package/dist/types/types/utils.d.ts.map +1 -1
  546. package/dist/types/utils/abi/decodeEventLog.d.ts +6 -5
  547. package/dist/types/utils/abi/decodeEventLog.d.ts.map +1 -1
  548. package/dist/types/utils/abi/encodeEventTopics.d.ts.map +1 -1
  549. package/dist/types/utils/abi/getAbiItem.d.ts.map +1 -1
  550. package/dist/types/utils/ens/encodeLabelhash.d.ts +3 -0
  551. package/dist/types/utils/ens/encodeLabelhash.d.ts.map +1 -0
  552. package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts +3 -0
  553. package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts.map +1 -0
  554. package/dist/types/utils/ens/labelhash.d.ts.map +1 -1
  555. package/dist/types/utils/ens/namehash.d.ts.map +1 -1
  556. package/dist/types/utils/ens/packetToBytes.d.ts.map +1 -1
  557. package/dist/types/utils/filters/createFilterRequestScope.d.ts +6 -2
  558. package/dist/types/utils/filters/createFilterRequestScope.d.ts.map +1 -1
  559. package/dist/types/utils/formatters/block.d.ts.map +1 -1
  560. package/dist/types/utils/formatters/transaction.d.ts +1 -1
  561. package/dist/types/utils/formatters/transaction.d.ts.map +1 -1
  562. package/dist/types/utils/formatters/transactionReceipt.d.ts.map +1 -1
  563. package/dist/types/utils/hash/getEventSelector.d.ts +2 -1
  564. package/dist/types/utils/hash/getEventSelector.d.ts.map +1 -1
  565. package/dist/types/utils/hash/getFunctionSelector.d.ts +2 -1
  566. package/dist/types/utils/hash/getFunctionSelector.d.ts.map +1 -1
  567. package/dist/types/utils/hash/hashFunction.d.ts +2 -0
  568. package/dist/types/utils/hash/hashFunction.d.ts.map +1 -1
  569. package/dist/types/utils/index.d.ts +1 -1
  570. package/dist/types/utils/index.d.ts.map +1 -1
  571. package/dist/types/utils/observe.d.ts.map +1 -1
  572. package/dist/types/utils/promise/withCache.d.ts.map +1 -1
  573. package/dist/types/utils/rpc.d.ts +18 -10
  574. package/dist/types/utils/rpc.d.ts.map +1 -1
  575. package/dist/types/utils/signature/hashMessage.d.ts +2 -2
  576. package/dist/types/utils/signature/hashMessage.d.ts.map +1 -1
  577. package/dist/types/utils/signature/hashTypedData.d.ts +3 -6
  578. package/dist/types/utils/signature/hashTypedData.d.ts.map +1 -1
  579. package/dist/types/utils/signature/recoverMessageAddress.d.ts +2 -2
  580. package/dist/types/utils/signature/recoverMessageAddress.d.ts.map +1 -1
  581. package/dist/types/utils/signature/recoverTypedDataAddress.d.ts +3 -6
  582. package/dist/types/utils/signature/recoverTypedDataAddress.d.ts.map +1 -1
  583. package/dist/types/utils/signature/verifyTypedData.d.ts +3 -6
  584. package/dist/types/utils/signature/verifyTypedData.d.ts.map +1 -1
  585. package/dist/types/utils/transaction/getTransactionType.d.ts +2 -2
  586. package/dist/types/utils/transaction/getTransactionType.d.ts.map +1 -1
  587. package/dist/types/utils/typedData.d.ts +2 -3
  588. package/dist/types/utils/typedData.d.ts.map +1 -1
  589. package/dist/types/utils/unit/parseUnits.d.ts.map +1 -1
  590. package/package.json +7 -13
  591. package/src/accounts/types.ts +4 -4
  592. package/src/accounts/utils/signMessage.ts +2 -2
  593. package/src/accounts/utils/signTypedData.ts +4 -4
  594. package/src/actions/ens/getEnsAddress.ts +37 -22
  595. package/src/actions/getContract.ts +133 -69
  596. package/src/actions/public/call.ts +1 -1
  597. package/src/actions/public/createContractEventFilter.ts +21 -4
  598. package/src/actions/public/createEventFilter.ts +34 -13
  599. package/src/actions/public/estimateContractGas.ts +10 -4
  600. package/src/actions/public/estimateGas.ts +1 -1
  601. package/src/actions/public/getBlock.ts +2 -2
  602. package/src/actions/public/getBlockTransactionCount.ts +1 -1
  603. package/src/actions/public/getChainId.ts +3 -1
  604. package/src/actions/public/getFilterChanges.ts +32 -7
  605. package/src/actions/public/getFilterLogs.ts +34 -8
  606. package/src/actions/public/getGasPrice.ts +1 -1
  607. package/src/actions/public/getLogs.ts +39 -10
  608. package/src/actions/public/getTransactionCount.ts +1 -1
  609. package/src/actions/public/verifyMessage.ts +2 -2
  610. package/src/actions/public/verifyTypedData.ts +18 -6
  611. package/src/actions/public/watchContractEvent.ts +16 -4
  612. package/src/actions/public/watchEvent.ts +17 -4
  613. package/src/actions/test/getAutomine.ts +4 -0
  614. package/src/actions/test/mine.ts +10 -4
  615. package/src/actions/test/sendUnsignedTransaction.ts +54 -5
  616. package/src/actions/test/setAutomine.ts +8 -4
  617. package/src/actions/test/setBalance.ts +10 -4
  618. package/src/actions/wallet/sendTransaction.ts +1 -1
  619. package/src/actions/wallet/signMessage.ts +11 -4
  620. package/src/actions/wallet/signTypedData.ts +5 -5
  621. package/src/chains.ts +123 -88
  622. package/src/clients/createClient.ts +13 -11
  623. package/src/clients/createPublicClient.ts +3 -4
  624. package/src/clients/createTestClient.ts +2 -3
  625. package/src/clients/createWalletClient.ts +2 -3
  626. package/src/clients/decorators/public.ts +43 -17
  627. package/src/clients/decorators/test.ts +4 -3
  628. package/src/clients/decorators/wallet.ts +2 -2
  629. package/src/clients/transports/createTransport.ts +5 -9
  630. package/src/clients/transports/custom.ts +1 -2
  631. package/src/clients/transports/fallback.ts +1 -1
  632. package/src/clients/transports/http.ts +44 -7
  633. package/src/clients/transports/webSocket.ts +23 -15
  634. package/src/contract.ts +3 -3
  635. package/src/errors/abi.ts +16 -4
  636. package/src/errors/base.ts +6 -6
  637. package/src/errors/request.ts +4 -4
  638. package/src/errors/rpc.ts +3 -2
  639. package/src/errors/version.ts +1 -1
  640. package/src/index.ts +263 -249
  641. package/src/types/account.ts +9 -9
  642. package/src/types/contract.ts +33 -15
  643. package/src/types/eip1193.ts +1084 -827
  644. package/src/types/filter.ts +15 -3
  645. package/src/types/log.ts +13 -3
  646. package/src/types/misc.ts +6 -0
  647. package/src/types/rpc.ts +1 -1
  648. package/src/types/transaction.ts +24 -6
  649. package/src/types/typedData.ts +36 -45
  650. package/src/types/utils.ts +15 -0
  651. package/src/utils/abi/decodeEventLog.ts +47 -22
  652. package/src/utils/abi/encodeEventTopics.ts +16 -11
  653. package/src/utils/abi/getAbiItem.ts +1 -0
  654. package/src/utils/encoding/toBytes.ts +1 -1
  655. package/src/utils/encoding/toHex.ts +2 -2
  656. package/src/utils/ens/encodeLabelhash.ts +5 -0
  657. package/src/utils/ens/encodedLabelToLabelhash.ts +11 -0
  658. package/src/utils/ens/labelhash.ts +2 -1
  659. package/src/utils/ens/namehash.ts +6 -2
  660. package/src/utils/ens/packetToBytes.ts +12 -8
  661. package/src/utils/filters/createFilterRequestScope.ts +12 -4
  662. package/src/utils/formatters/block.ts +3 -1
  663. package/src/utils/formatters/log.ts +2 -2
  664. package/src/utils/formatters/transaction.ts +3 -1
  665. package/src/utils/formatters/transactionReceipt.ts +4 -2
  666. package/src/utils/formatters/transactionRequest.ts +1 -1
  667. package/src/utils/hash/getEventSelector.ts +6 -2
  668. package/src/utils/hash/getFunctionSelector.ts +6 -2
  669. package/src/utils/hash/hashFunction.ts +6 -2
  670. package/src/utils/index.ts +6 -0
  671. package/src/utils/observe.ts +2 -2
  672. package/src/utils/promise/createBatchScheduler.ts +1 -1
  673. package/src/utils/promise/withCache.ts +13 -11
  674. package/src/utils/rpc.ts +53 -53
  675. package/src/utils/signature/hashMessage.ts +8 -4
  676. package/src/utils/signature/hashTypedData.ts +4 -4
  677. package/src/utils/signature/recoverMessageAddress.ts +2 -2
  678. package/src/utils/signature/recoverTypedDataAddress.ts +4 -4
  679. package/src/utils/signature/verifyTypedData.ts +4 -4
  680. package/src/utils/transaction/getTransactionType.ts +10 -9
  681. package/src/utils/transaction/serializeTransaction.ts +3 -3
  682. package/src/utils/typedData.ts +3 -3
  683. package/src/utils/unit/parseUnits.ts +15 -5
  684. package/dist/cjs/adapters/ethers.js +0 -49
  685. package/dist/cjs/adapters/ethers.js.map +0 -1
  686. package/dist/cjs/ethers.js +0 -6
  687. package/dist/cjs/ethers.js.map +0 -1
  688. package/dist/esm/adapters/ethers.js +0 -45
  689. package/dist/esm/adapters/ethers.js.map +0 -1
  690. package/dist/esm/ethers.js +0 -2
  691. package/dist/esm/ethers.js.map +0 -1
  692. package/dist/types/adapters/ethers.d.ts +0 -27
  693. package/dist/types/adapters/ethers.d.ts.map +0 -1
  694. package/dist/types/ethers.d.ts +0 -2
  695. package/dist/types/ethers.d.ts.map +0 -1
  696. package/ethers/package.json +0 -5
  697. package/src/adapters/ethers.ts +0 -94
  698. package/src/ethers.ts +0 -1
@@ -2,6 +2,10 @@ import type { Abi, AbiEvent, ExtractAbiEvent } from 'abitype'
2
2
 
3
3
  import type { PublicClient } from '../../clients/createPublicClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
5
+ import {
6
+ DecodeLogDataMismatch,
7
+ DecodeLogTopicsMismatch,
8
+ } from '../../errors/abi.js'
5
9
  import type { Chain } from '../../types/chain.js'
6
10
  import type { Filter, FilterType } from '../../types/filter.js'
7
11
  import type { Log } from '../../types/log.js'
@@ -13,21 +17,23 @@ export type GetFilterChangesParameters<
13
17
  TFilterType extends FilterType = FilterType,
14
18
  TAbi extends Abi | readonly unknown[] = Abi,
15
19
  TEventName extends string | undefined = string,
20
+ TStrict extends boolean | undefined = undefined,
16
21
  > = {
17
- filter: Filter<TFilterType, TAbi, TEventName, any>
22
+ filter: Filter<TFilterType, TAbi, TEventName, any, TStrict>
18
23
  }
19
24
 
20
25
  export type GetFilterChangesReturnType<
21
26
  TFilterType extends FilterType = FilterType,
22
27
  TAbi extends Abi | readonly unknown[] = Abi,
23
28
  TEventName extends string | undefined = string,
29
+ TStrict extends boolean | undefined = undefined,
24
30
  _AbiEvent extends AbiEvent | undefined = TAbi extends Abi
25
31
  ? TEventName extends string
26
32
  ? ExtractAbiEvent<TAbi, TEventName>
27
33
  : undefined
28
34
  : undefined,
29
35
  > = TFilterType extends 'event'
30
- ? Log<bigint, number, _AbiEvent, TAbi, TEventName>[]
36
+ ? Log<bigint, number, _AbiEvent, TStrict, TAbi, TEventName>[]
31
37
  : Hash[]
32
38
 
33
39
  /**
@@ -118,10 +124,15 @@ export async function getFilterChanges<
118
124
  TFilterType extends FilterType,
119
125
  TAbi extends Abi | readonly unknown[],
120
126
  TEventName extends string | undefined,
127
+ TStrict extends boolean | undefined = undefined,
121
128
  >(
122
129
  _client: PublicClient<TTransport, TChain>,
123
- { filter }: GetFilterChangesParameters<TFilterType, TAbi, TEventName>,
130
+ {
131
+ filter,
132
+ }: GetFilterChangesParameters<TFilterType, TAbi, TEventName, TStrict>,
124
133
  ) {
134
+ const strict = 'strict' in filter && filter.strict
135
+
125
136
  const logs = await filter.request({
126
137
  method: 'eth_getFilterChanges',
127
138
  params: [filter.id],
@@ -136,17 +147,31 @@ export async function getFilterChanges<
136
147
  abi: filter.abi,
137
148
  data: log.data,
138
149
  topics: log.topics as any,
150
+ strict,
139
151
  })
140
152
  : { eventName: undefined, args: undefined }
141
153
  return formatLog(log, { args, eventName })
142
- } catch {
143
- // Skip log if there is an error decoding (e.g. indexed/non-indexed params mismatch).
144
- return
154
+ } catch (err) {
155
+ let eventName
156
+ let isUnnamed
157
+ if (
158
+ err instanceof DecodeLogDataMismatch ||
159
+ err instanceof DecodeLogTopicsMismatch
160
+ ) {
161
+ // If strict mode is on, and log data/topics do not match event definition, skip.
162
+ if ('strict' in filter && filter.strict) return
163
+ eventName = err.abiItem.name
164
+ isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name))
165
+ }
166
+
167
+ // Set args undefined if there is an error decoding (e.g. indexed/non-indexed params mismatch).
168
+ return formatLog(log, { args: isUnnamed ? [] : {}, eventName })
145
169
  }
146
170
  })
147
171
  .filter(Boolean) as GetFilterChangesReturnType<
148
172
  TFilterType,
149
173
  TAbi,
150
- TEventName
174
+ TEventName,
175
+ TStrict
151
176
  >
152
177
  }
@@ -2,6 +2,10 @@ import type { Abi, AbiEvent, ExtractAbiEvent } from 'abitype'
2
2
 
3
3
  import type { PublicClient } from '../../clients/createPublicClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
5
+ import {
6
+ DecodeLogDataMismatch,
7
+ DecodeLogTopicsMismatch,
8
+ } from '../../errors/abi.js'
5
9
  import type { Chain } from '../../types/chain.js'
6
10
  import type { Filter } from '../../types/filter.js'
7
11
  import type { Log } from '../../types/log.js'
@@ -11,18 +15,20 @@ import { formatLog } from '../../utils/formatters/log.js'
11
15
  export type GetFilterLogsParameters<
12
16
  TAbi extends Abi | readonly unknown[] = Abi,
13
17
  TEventName extends string | undefined = string,
18
+ TStrict extends boolean | undefined = undefined,
14
19
  > = {
15
- filter: Filter<'event', TAbi, TEventName, any>
20
+ filter: Filter<'event', TAbi, TEventName, any, TStrict>
16
21
  }
17
22
  export type GetFilterLogsReturnType<
18
23
  TAbi extends Abi | readonly unknown[] = Abi,
19
24
  TEventName extends string | undefined = string,
25
+ TStrict extends boolean | undefined = undefined,
20
26
  _AbiEvent extends AbiEvent | undefined = TAbi extends Abi
21
27
  ? TEventName extends string
22
28
  ? ExtractAbiEvent<TAbi, TEventName>
23
29
  : undefined
24
30
  : undefined,
25
- > = Log<bigint, number, _AbiEvent, TAbi, TEventName>[]
31
+ > = Log<bigint, number, _AbiEvent, TStrict, TAbi, TEventName>[]
26
32
 
27
33
  /**
28
34
  * Returns a list of event logs since the filter was created.
@@ -55,10 +61,13 @@ export async function getFilterLogs<
55
61
  TChain extends Chain | undefined,
56
62
  TAbi extends Abi | readonly unknown[],
57
63
  TEventName extends string | undefined,
64
+ TStrict extends boolean | undefined = undefined,
58
65
  >(
59
66
  _client: PublicClient<Transport, TChain>,
60
- { filter }: GetFilterLogsParameters<TAbi, TEventName>,
61
- ): Promise<GetFilterLogsReturnType<TAbi, TEventName>> {
67
+ { filter }: GetFilterLogsParameters<TAbi, TEventName, TStrict>,
68
+ ): Promise<GetFilterLogsReturnType<TAbi, TEventName, TStrict>> {
69
+ const strict = filter.strict ?? false
70
+
62
71
  const logs = await filter.request({
63
72
  method: 'eth_getFilterLogs',
64
73
  params: [filter.id],
@@ -72,13 +81,30 @@ export async function getFilterLogs<
72
81
  abi: filter.abi,
73
82
  data: log.data,
74
83
  topics: log.topics as any,
84
+ strict,
75
85
  })
76
86
  : { eventName: undefined, args: undefined }
77
87
  return formatLog(log, { args, eventName })
78
- } catch {
79
- // Skip log if there is an error decoding (e.g. indexed/non-indexed params mismatch).
80
- return
88
+ } catch (err) {
89
+ let eventName
90
+ let isUnnamed
91
+ if (
92
+ err instanceof DecodeLogDataMismatch ||
93
+ err instanceof DecodeLogTopicsMismatch
94
+ ) {
95
+ // If strict mode is on, and log data/topics do not match event definition, skip.
96
+ if ('strict' in filter && filter.strict) return
97
+ eventName = err.abiItem.name
98
+ isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name))
99
+ }
100
+
101
+ // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).
102
+ return formatLog(log, { args: isUnnamed ? [] : {}, eventName })
81
103
  }
82
104
  })
83
- .filter(Boolean) as unknown as GetFilterLogsReturnType<TAbi, TEventName>
105
+ .filter(Boolean) as unknown as GetFilterLogsReturnType<
106
+ TAbi,
107
+ TEventName,
108
+ TStrict
109
+ >
84
110
  }
@@ -34,7 +34,7 @@ export async function getGasPrice<
34
34
  | PublicClient<Transport, TChain>
35
35
  | WalletClient<Transport, TChain, TAccount>,
36
36
  ): Promise<GetGasPriceReturnType> {
37
- const gasPrice = await client.request({
37
+ const gasPrice = await (client as PublicClient).request({
38
38
  method: 'eth_gasPrice',
39
39
  })
40
40
  return BigInt(gasPrice)
@@ -2,6 +2,10 @@ import type { AbiEvent, Address, Narrow } from 'abitype'
2
2
 
3
3
  import type { PublicClient } from '../../clients/createPublicClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
5
+ import {
6
+ DecodeLogDataMismatch,
7
+ DecodeLogTopicsMismatch,
8
+ } from '../../errors/abi.js'
5
9
  import type { BlockNumber, BlockTag } from '../../types/block.js'
6
10
  import type { Chain } from '../../types/chain.js'
7
11
  import type {
@@ -21,18 +25,25 @@ import { formatLog } from '../../utils/formatters/log.js'
21
25
 
22
26
  export type GetLogsParameters<
23
27
  TAbiEvent extends AbiEvent | undefined = undefined,
24
- TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
28
+ TStrict extends boolean | undefined = undefined,
29
+ _EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
25
30
  > = {
26
31
  /** Address or list of addresses from which logs originated */
27
32
  address?: Address | Address[]
28
33
  } & (
29
34
  | {
30
35
  event: Narrow<TAbiEvent>
31
- args?: MaybeExtractEventArgsFromAbi<[TAbiEvent], TEventName>
36
+ args?: MaybeExtractEventArgsFromAbi<[TAbiEvent], _EventName>
37
+ /**
38
+ * Whether or not the logs must match the indexed/non-indexed arguments on `event`.
39
+ * @default false
40
+ */
41
+ strict?: TStrict
32
42
  }
33
43
  | {
34
44
  event?: never
35
45
  args?: never
46
+ strict?: never
36
47
  }
37
48
  ) &
38
49
  (
@@ -53,8 +64,9 @@ export type GetLogsParameters<
53
64
 
54
65
  export type GetLogsReturnType<
55
66
  TAbiEvent extends AbiEvent | undefined = undefined,
56
- TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
57
- > = Log<bigint, number, TAbiEvent, [TAbiEvent], TEventName>[]
67
+ TStrict extends boolean | undefined = undefined,
68
+ _EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
69
+ > = Log<bigint, number, TAbiEvent, TStrict, [TAbiEvent], _EventName>[]
58
70
 
59
71
  /**
60
72
  * Returns a list of event logs matching the provided parameters.
@@ -81,6 +93,7 @@ export type GetLogsReturnType<
81
93
  export async function getLogs<
82
94
  TChain extends Chain | undefined,
83
95
  TAbiEvent extends AbiEvent | undefined,
96
+ TStrict extends boolean | undefined = undefined,
84
97
  >(
85
98
  client: PublicClient<Transport, TChain>,
86
99
  {
@@ -90,8 +103,11 @@ export async function getLogs<
90
103
  toBlock,
91
104
  event,
92
105
  args,
93
- }: GetLogsParameters<TAbiEvent> = {},
94
- ): Promise<GetLogsReturnType<TAbiEvent>> {
106
+ strict: strict_,
107
+ }: GetLogsParameters<TAbiEvent, TStrict> = {},
108
+ ): Promise<GetLogsReturnType<TAbiEvent, TStrict>> {
109
+ const strict = strict_ ?? false
110
+
95
111
  let topics: LogTopic[] = []
96
112
  if (event)
97
113
  topics = encodeEventTopics({
@@ -129,13 +145,26 @@ export async function getLogs<
129
145
  abi: [event] as [AbiEvent],
130
146
  data: log.data,
131
147
  topics: log.topics as any,
148
+ strict,
132
149
  })
133
150
  : { eventName: undefined, args: undefined }
134
151
  return formatLog(log, { args, eventName })
135
- } catch {
136
- // Skip log if there is an error decoding (e.g. indexed/non-indexed params mismatch).
137
- return
152
+ } catch (err) {
153
+ let eventName
154
+ let isUnnamed
155
+ if (
156
+ err instanceof DecodeLogDataMismatch ||
157
+ err instanceof DecodeLogTopicsMismatch
158
+ ) {
159
+ // If strict mode is on, and log data/topics do not match event definition, skip.
160
+ if (strict) return
161
+ eventName = err.abiItem.name
162
+ isUnnamed = err.abiItem.inputs?.some((x) => !('name' in x && x.name))
163
+ }
164
+
165
+ // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).
166
+ return formatLog(log, { args: isUnnamed ? [] : {}, eventName })
138
167
  }
139
168
  })
140
- .filter(Boolean) as unknown as GetLogsReturnType<TAbiEvent>
169
+ .filter(Boolean) as unknown as GetLogsReturnType<TAbiEvent, TStrict>
141
170
  }
@@ -58,7 +58,7 @@ export async function getTransactionCount<
58
58
  | WalletClient<Transport, TChain, TAccount>,
59
59
  { address, blockTag = 'latest', blockNumber }: GetTransactionCountParameters,
60
60
  ): Promise<GetTransactionCountReturnType> {
61
- const count = await client.request({
61
+ const count = await (client as PublicClient).request({
62
62
  method: 'eth_getTransactionCount',
63
63
  params: [address, blockNumber ? numberToHex(blockNumber) : blockTag],
64
64
  })
@@ -1,7 +1,7 @@
1
1
  import type { Chain } from '../../chains.js'
2
2
  import type { PublicClient } from '../../clients/createPublicClient.js'
3
3
  import type { Transport } from '../../clients/transports/createTransport.js'
4
- import type { ByteArray, Hex } from '../../types/misc.js'
4
+ import type { ByteArray, Hex, SignableMessage } from '../../types/misc.js'
5
5
  import { hashMessage } from '../../utils/index.js'
6
6
  import { type VerifyHashParameters, verifyHash } from './verifyHash.js'
7
7
  import type { Address } from 'abitype'
@@ -10,7 +10,7 @@ export type VerifyMessageParameters = Omit<VerifyHashParameters, 'hash'> & {
10
10
  /** The address that signed the original message. */
11
11
  address: Address
12
12
  /** The message to be verified. */
13
- message: string
13
+ message: SignableMessage
14
14
  /** The signature that was generated by signing the message with the address's private key. */
15
15
  signature: Hex | ByteArray
16
16
  }
@@ -3,13 +3,16 @@ import type { PublicClient } from '../../clients/createPublicClient.js'
3
3
  import type { Transport } from '../../clients/transports/createTransport.js'
4
4
  import type { ByteArray, Hex } from '../../types/misc.js'
5
5
  import type { TypedDataDefinition } from '../../types/typedData.js'
6
- import { hashTypedData } from '../../utils/index.js'
6
+ import {
7
+ type HashTypedDataParameters,
8
+ hashTypedData,
9
+ } from '../../utils/index.js'
7
10
  import { type VerifyHashParameters, verifyHash } from './verifyHash.js'
8
11
  import type { Address, TypedData } from 'abitype'
9
12
 
10
13
  export type VerifyTypedDataParameters<
11
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
12
- TPrimaryType extends string = string,
14
+ TTypedData extends TypedData | Record<string, unknown> = TypedData,
15
+ TPrimaryType extends keyof TTypedData = keyof TTypedData,
13
16
  > = Omit<VerifyHashParameters, 'hash'> &
14
17
  TypedDataDefinition<TTypedData, TPrimaryType> & {
15
18
  /** The address to verify the typed data for. */
@@ -29,7 +32,11 @@ export type VerifyTypedDataReturnType = boolean
29
32
  * @param parameters - {@link VerifyTypedDataParameters}
30
33
  * @returns Whether or not the signature is valid. {@link VerifyTypedDataReturnType}
31
34
  */
32
- export async function verifyTypedData<TChain extends Chain | undefined,>(
35
+ export async function verifyTypedData<
36
+ const TTypedData extends TypedData | Record<string, unknown>, // `Record<string, unknown>` allows for non-const asserted types
37
+ TPrimaryType extends keyof TTypedData,
38
+ TChain extends Chain | undefined,
39
+ >(
33
40
  client: PublicClient<Transport, TChain>,
34
41
  {
35
42
  address,
@@ -39,9 +46,14 @@ export async function verifyTypedData<TChain extends Chain | undefined,>(
39
46
  types,
40
47
  domain,
41
48
  ...callRequest
42
- }: VerifyTypedDataParameters,
49
+ }: VerifyTypedDataParameters<TTypedData, TPrimaryType>,
43
50
  ): Promise<VerifyTypedDataReturnType> {
44
- const hash = hashTypedData({ message, primaryType, types, domain })
51
+ const hash = hashTypedData({
52
+ message,
53
+ primaryType,
54
+ types,
55
+ domain,
56
+ } as HashTypedDataParameters)
45
57
  return verifyHash(client, {
46
58
  address,
47
59
  hash,
@@ -26,17 +26,20 @@ import { uninstallFilter } from './uninstallFilter.js'
26
26
  export type OnLogsParameter<
27
27
  TAbi extends Abi | readonly unknown[] = readonly unknown[],
28
28
  TEventName extends string = string,
29
+ TStrict extends boolean | undefined = undefined,
29
30
  > = TAbi extends Abi
30
- ? Log<bigint, number, ExtractAbiEvent<TAbi, TEventName>>[]
31
+ ? Log<bigint, number, ExtractAbiEvent<TAbi, TEventName>, TStrict>[]
31
32
  : Log[]
32
33
  export type OnLogsFn<
33
34
  TAbi extends Abi | readonly unknown[] = readonly unknown[],
34
35
  TEventName extends string = string,
35
- > = (logs: OnLogsParameter<TAbi, TEventName>) => void
36
+ TStrict extends boolean | undefined = undefined,
37
+ > = (logs: OnLogsParameter<TAbi, TEventName, TStrict>) => void
36
38
 
37
39
  export type WatchContractEventParameters<
38
40
  TAbi extends Abi | readonly unknown[] = readonly unknown[],
39
41
  TEventName extends string = string,
42
+ TStrict extends boolean | undefined = undefined,
40
43
  > = {
41
44
  /** The address of the contract. */
42
45
  address?: Address | Address[]
@@ -50,9 +53,14 @@ export type WatchContractEventParameters<
50
53
  /** The callback to call when an error occurred when trying to get for a new block. */
51
54
  onError?: (error: Error) => void
52
55
  /** The callback to call when new event logs are received. */
53
- onLogs: OnLogsFn<TAbi, TEventName>
56
+ onLogs: OnLogsFn<TAbi, TEventName, TStrict>
54
57
  /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */
55
58
  pollingInterval?: number
59
+ /**
60
+ * Whether or not the logs must match the indexed/non-indexed arguments on `event`.
61
+ * @default false
62
+ */
63
+ strict?: TStrict
56
64
  }
57
65
 
58
66
  export type WatchContractEventReturnType = () => void
@@ -91,6 +99,7 @@ export function watchContractEvent<
91
99
  TChain extends Chain | undefined,
92
100
  TAbi extends Abi | readonly unknown[],
93
101
  TEventName extends string,
102
+ TStrict extends boolean | undefined = undefined,
94
103
  >(
95
104
  client: PublicClient<Transport, TChain>,
96
105
  {
@@ -102,7 +111,8 @@ export function watchContractEvent<
102
111
  onError,
103
112
  onLogs,
104
113
  pollingInterval = client.pollingInterval,
105
- }: WatchContractEventParameters<TAbi, TEventName>,
114
+ strict: strict_,
115
+ }: WatchContractEventParameters<TAbi, TEventName, TStrict>,
106
116
  ): WatchContractEventReturnType {
107
117
  const observerId = stringify([
108
118
  'watchContractEvent',
@@ -113,6 +123,7 @@ export function watchContractEvent<
113
123
  eventName,
114
124
  pollingInterval,
115
125
  ])
126
+ const strict = strict_ ?? false
116
127
 
117
128
  return observe(observerId, { onLogs, onError }, (emit) => {
118
129
  let previousBlockNumber: bigint
@@ -128,6 +139,7 @@ export function watchContractEvent<
128
139
  address,
129
140
  args,
130
141
  eventName,
142
+ strict,
131
143
  } as unknown as CreateContractEventFilterParameters)) as Filter<
132
144
  'event',
133
145
  TAbi,
@@ -24,15 +24,18 @@ import { uninstallFilter } from './uninstallFilter.js'
24
24
 
25
25
  export type OnLogsParameter<
26
26
  TAbiEvent extends AbiEvent | undefined = undefined,
27
+ TStrict extends boolean | undefined = undefined,
27
28
  TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
28
- > = Log<bigint, number, TAbiEvent, [TAbiEvent], TEventName>[]
29
+ > = Log<bigint, number, TAbiEvent, TStrict, [TAbiEvent], TEventName>[]
29
30
  export type OnLogsFn<
30
31
  TAbiEvent extends AbiEvent | undefined = undefined,
32
+ TStrict extends boolean | undefined = undefined,
31
33
  TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
32
- > = (logs: OnLogsParameter<TAbiEvent, TEventName>) => void
34
+ > = (logs: OnLogsParameter<TAbiEvent, TStrict, TEventName>) => void
33
35
 
34
36
  export type WatchEventParameters<
35
37
  TAbiEvent extends AbiEvent | undefined = undefined,
38
+ TStrict extends boolean | undefined = undefined,
36
39
  TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
37
40
  > = {
38
41
  /** The address of the contract. */
@@ -45,17 +48,23 @@ export type WatchEventParameters<
45
48
  /** The callback to call when an error occurred when trying to get for a new block. */
46
49
  onError?: (error: Error) => void
47
50
  /** The callback to call when new event logs are received. */
48
- onLogs: OnLogsFn<TAbiEvent, TEventName>
51
+ onLogs: OnLogsFn<TAbiEvent, TStrict, TEventName>
49
52
  /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */
50
53
  pollingInterval?: number
51
54
  } & (
52
55
  | {
53
56
  event: TAbiEvent
54
57
  args?: MaybeExtractEventArgsFromAbi<[TAbiEvent], TEventName>
58
+ /**
59
+ * Whether or not the logs must match the indexed/non-indexed arguments on `event`.
60
+ * @default false
61
+ */
62
+ strict?: TStrict
55
63
  }
56
64
  | {
57
65
  event?: never
58
66
  args?: never
67
+ strict?: never
59
68
  }
60
69
  )
61
70
 
@@ -97,6 +106,7 @@ export function watchEvent<
97
106
  TChain extends Chain | undefined,
98
107
  TAbiEvent extends AbiEvent | undefined,
99
108
  TEventName extends string | undefined,
109
+ TStrict extends boolean | undefined = undefined,
100
110
  >(
101
111
  client: PublicClient<Transport, TChain>,
102
112
  {
@@ -107,7 +117,8 @@ export function watchEvent<
107
117
  onError,
108
118
  onLogs,
109
119
  pollingInterval = client.pollingInterval,
110
- }: WatchEventParameters<TAbiEvent>,
120
+ strict: strict_,
121
+ }: WatchEventParameters<TAbiEvent, TStrict>,
111
122
  ): WatchEventReturnType {
112
123
  const observerId = stringify([
113
124
  'watchEvent',
@@ -118,6 +129,7 @@ export function watchEvent<
118
129
  event,
119
130
  pollingInterval,
120
131
  ])
132
+ const strict = strict_ ?? false
121
133
 
122
134
  return observe(observerId, { onLogs, onError }, (emit) => {
123
135
  let previousBlockNumber: bigint
@@ -132,6 +144,7 @@ export function watchEvent<
132
144
  address,
133
145
  args,
134
146
  event: event!,
147
+ strict,
135
148
  } as unknown as CreateEventFilterParameters)) as unknown as Filter<
136
149
  'event',
137
150
  [TAbiEvent],
@@ -30,6 +30,10 @@ export type GetAutomineReturnType = boolean
30
30
  export async function getAutomine<TChain extends Chain | undefined>(
31
31
  client: TestClient<TestClientMode, Transport, TChain>,
32
32
  ): Promise<GetAutomineReturnType> {
33
+ if (client.mode === 'ganache')
34
+ return await client.request({
35
+ method: 'eth_mining',
36
+ })
33
37
  return await client.request({
34
38
  method: `${client.mode}_getAutomine`,
35
39
  })
@@ -37,8 +37,14 @@ export async function mine<TChain extends Chain | undefined>(
37
37
  client: TestClient<TestClientMode, Transport, TChain>,
38
38
  { blocks, interval }: MineParameters,
39
39
  ) {
40
- await client.request({
41
- method: `${client.mode}_mine`,
42
- params: [numberToHex(blocks), numberToHex(interval || 0)],
43
- })
40
+ if (client.mode === 'ganache')
41
+ await client.request({
42
+ method: 'evm_mine',
43
+ params: [{ blocks: numberToHex(blocks) }],
44
+ })
45
+ else
46
+ await client.request({
47
+ method: `${client.mode}_mine`,
48
+ params: [numberToHex(blocks), numberToHex(interval || 0)],
49
+ })
44
50
  }
@@ -4,11 +4,27 @@ import type {
4
4
  } from '../../clients/createTestClient.js'
5
5
  import type { Transport } from '../../clients/transports/createTransport.js'
6
6
  import type { Chain } from '../../types/chain.js'
7
+ import type { Formatter } from '../../types/formatter.js'
7
8
  import type { Hash } from '../../types/misc.js'
8
9
  import type { TransactionRequest } from '../../types/transaction.js'
9
- import { formatTransactionRequest } from '../../utils/formatters/transactionRequest.js'
10
+ import type { MergeIntersectionProperties } from '../../types/utils.js'
11
+ import { extract } from '../../utils/formatters/extract.js'
12
+ import { type Formatted, format } from '../../utils/formatters/format.js'
13
+ import {
14
+ type TransactionRequestFormatter,
15
+ formatTransactionRequest,
16
+ } from '../../utils/formatters/transactionRequest.js'
10
17
 
11
- export type SendUnsignedTransactionParameters = TransactionRequest
18
+ type FormattedTransactionRequest<
19
+ TFormatter extends Formatter | undefined = Formatter,
20
+ > = MergeIntersectionProperties<
21
+ Formatted<TFormatter, TransactionRequest, true>,
22
+ TransactionRequest
23
+ >
24
+
25
+ export type SendUnsignedTransactionParameters<
26
+ TChain extends Chain | undefined = Chain | undefined,
27
+ > = FormattedTransactionRequest<TransactionRequestFormatter<TChain>>
12
28
 
13
29
  export type SendUnsignedTransactionReturnType = Hash
14
30
 
@@ -41,12 +57,45 @@ export async function sendUnsignedTransaction<
41
57
  TChain extends Chain | undefined,
42
58
  >(
43
59
  client: TestClient<TestClientMode, Transport, TChain>,
44
- request: SendUnsignedTransactionParameters,
60
+ args: SendUnsignedTransactionParameters<TChain>,
45
61
  ): Promise<SendUnsignedTransactionReturnType> {
46
- const request_ = formatTransactionRequest(request)
62
+ const {
63
+ accessList,
64
+ data,
65
+ from,
66
+ gas,
67
+ gasPrice,
68
+ maxFeePerGas,
69
+ maxPriorityFeePerGas,
70
+ nonce,
71
+ to,
72
+ value,
73
+ ...rest
74
+ } = args
75
+
76
+ const formatter = client.chain?.formatters?.transactionRequest
77
+ const request = format(
78
+ {
79
+ accessList,
80
+ data,
81
+ from,
82
+ gas,
83
+ gasPrice,
84
+ maxFeePerGas,
85
+ maxPriorityFeePerGas,
86
+ nonce,
87
+ to,
88
+ value,
89
+ // Pick out extra data that might exist on the chain's transaction request type.
90
+ ...extract(rest, { formatter }),
91
+ } as TransactionRequest,
92
+ {
93
+ formatter: formatter || formatTransactionRequest,
94
+ },
95
+ )
47
96
  const hash = await client.request({
48
97
  method: 'eth_sendUnsignedTransaction',
49
- params: [request_],
98
+ params: [request],
50
99
  })
51
100
  return hash
52
101
  }
@@ -28,8 +28,12 @@ export async function setAutomine<TChain extends Chain | undefined>(
28
28
  client: TestClient<TestClientMode, Transport, TChain>,
29
29
  enabled: boolean,
30
30
  ) {
31
- await client.request({
32
- method: 'evm_setAutomine',
33
- params: [enabled],
34
- })
31
+ if (client.mode === 'ganache') {
32
+ if (enabled) await client.request({ method: 'miner_start' })
33
+ else await client.request({ method: 'miner_stop' })
34
+ } else
35
+ await client.request({
36
+ method: 'evm_setAutomine',
37
+ params: [enabled],
38
+ })
35
39
  }
@@ -42,8 +42,14 @@ export async function setBalance<TChain extends Chain | undefined>(
42
42
  client: TestClient<TestClientMode, Transport, TChain>,
43
43
  { address, value }: SetBalanceParameters,
44
44
  ) {
45
- await client.request({
46
- method: `${client.mode}_setBalance`,
47
- params: [address, numberToHex(value)],
48
- })
45
+ if (client.mode === 'ganache')
46
+ await client.request({
47
+ method: 'evm_setAccountBalance',
48
+ params: [address, numberToHex(value)],
49
+ })
50
+ else
51
+ await client.request({
52
+ method: `${client.mode}_setBalance`,
53
+ params: [address, numberToHex(value)],
54
+ })
49
55
  }