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
@@ -1,11 +1,19 @@
1
1
  import type { Abi } from 'abitype'
2
2
 
3
3
  import type { MaybeExtractEventArgsFromAbi } from './contract.js'
4
- import type { Requests } from './eip1193.js'
4
+ import type { EIP1193RequestFn, PublicRpcSchema } from './eip1193.js'
5
5
  import type { Hex } from './misc.js'
6
+ import type { Filter as Filter_ } from './utils.js'
6
7
 
7
8
  export type FilterType = 'transaction' | 'block' | 'event'
8
9
 
10
+ type FilterRpcSchema = Filter_<
11
+ PublicRpcSchema,
12
+ {
13
+ Method: 'eth_getFilterLogs' | 'eth_getFilterChanges' | 'eth_uninstallFilter'
14
+ }
15
+ >
16
+
9
17
  export type Filter<
10
18
  TFilterType extends FilterType = 'event',
11
19
  TAbi extends Abi | readonly unknown[] = Abi,
@@ -13,10 +21,10 @@ export type Filter<
13
21
  TArgs extends
14
22
  | MaybeExtractEventArgsFromAbi<TAbi, TEventName>
15
23
  | undefined = MaybeExtractEventArgsFromAbi<TAbi, TEventName>,
24
+ TStrict extends boolean | undefined = undefined,
16
25
  > = {
17
26
  id: Hex
18
- // TODO: Narrow `request` to filter-based methods (ie. `eth_getFilterLogs`, etc).
19
- request: Requests['request']
27
+ request: EIP1193RequestFn<FilterRpcSchema>
20
28
  type: TFilterType
21
29
  } & (TFilterType extends 'event'
22
30
  ? TAbi extends Abi
@@ -25,21 +33,25 @@ export type Filter<
25
33
  abi: TAbi
26
34
  args?: never
27
35
  eventName?: never
36
+ strict: TStrict
28
37
  }
29
38
  : TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName>
30
39
  ? {
31
40
  abi: TAbi
32
41
  args: TArgs
33
42
  eventName: TEventName
43
+ strict: TStrict
34
44
  }
35
45
  : {
36
46
  abi: TAbi
37
47
  args?: never
38
48
  eventName: TEventName
49
+ strict: TStrict
39
50
  }
40
51
  : {
41
52
  abi?: never
42
53
  args?: never
43
54
  eventName?: never
55
+ strict?: never
44
56
  }
45
57
  : {})
package/src/types/log.ts CHANGED
@@ -16,6 +16,7 @@ export type Log<
16
16
  TQuantity = bigint,
17
17
  TIndex = number,
18
18
  TAbiEvent extends AbiEvent | undefined = undefined,
19
+ TStrict extends boolean | undefined = undefined,
19
20
  TAbi extends Abi | readonly unknown[] = [TAbiEvent],
20
21
  TEventName extends string | undefined = TAbiEvent extends AbiEvent
21
22
  ? TAbiEvent['name']
@@ -37,7 +38,7 @@ export type Log<
37
38
  transactionIndex: TIndex | null
38
39
  /** `true` if this filter has been destroyed and is invalid */
39
40
  removed: boolean
40
- } & GetInferredLogValues<TAbiEvent, TAbi, TEventName>
41
+ } & GetInferredLogValues<TAbiEvent, TAbi, TEventName, TStrict>
41
42
 
42
43
  type Topics<
43
44
  THead extends AbiEvent['inputs'],
@@ -82,6 +83,7 @@ type GetInferredLogValues<
82
83
  TEventName extends string | undefined = TAbiEvent extends AbiEvent
83
84
  ? TAbiEvent['name']
84
85
  : undefined,
86
+ TStrict extends boolean | undefined = undefined,
85
87
  _EventNames extends string = TAbi extends Abi
86
88
  ? Abi extends TAbi
87
89
  ? string
@@ -93,7 +95,11 @@ type GetInferredLogValues<
93
95
  args: GetEventArgs<
94
96
  TAbi,
95
97
  TEventName,
96
- { EnableUnion: false; IndexedOnly: false }
98
+ {
99
+ EnableUnion: false
100
+ IndexedOnly: false
101
+ Required: TStrict extends boolean ? TStrict : false
102
+ }
97
103
  >
98
104
  /** The event name decoded from `topics`. */
99
105
  eventName: TEventName
@@ -105,7 +111,11 @@ type GetInferredLogValues<
105
111
  args: GetEventArgs<
106
112
  TAbi,
107
113
  string,
108
- { EnableUnion: false; IndexedOnly: false }
114
+ {
115
+ EnableUnion: false
116
+ IndexedOnly: false
117
+ Required: TStrict extends boolean ? TStrict : false
118
+ }
109
119
  >
110
120
  /** The event name decoded from `topics`. */
111
121
  eventName: TName
package/src/types/misc.ts CHANGED
@@ -2,6 +2,12 @@ export type ByteArray = Uint8Array
2
2
  export type Hex = `0x${string}`
3
3
  export type Hash = `0x${string}`
4
4
  export type LogTopic = Hex | Hex[] | null
5
+ export type SignableMessage =
6
+ | string
7
+ | {
8
+ /** Raw data representation of the message. */
9
+ raw: Hex | ByteArray
10
+ }
5
11
  export type Signature = {
6
12
  r: Hex
7
13
  s: Hex
package/src/types/rpc.ts CHANGED
@@ -12,7 +12,7 @@ import type {
12
12
  export type Index = `0x${string}`
13
13
  export type Quantity = `0x${string}`
14
14
  export type Status = '0x0' | '0x1'
15
- export type TransactionType = '0x0' | '0x1' | '0x2'
15
+ export type TransactionType = '0x0' | '0x1' | '0x2' | (string & {})
16
16
 
17
17
  export type RpcBlock = Block<Quantity, RpcTransaction>
18
18
  export type RpcBlockNumber = BlockNumber<Quantity>
@@ -9,7 +9,7 @@ import type { ValueOf } from './utils.js'
9
9
 
10
10
  export type AccessList = { address: Address; storageKeys: Hex[] }[]
11
11
 
12
- export type TransactionType = ValueOf<typeof transactionType>
12
+ export type TransactionType = ValueOf<typeof transactionType> | (string & {})
13
13
 
14
14
  export type TransactionReceipt<
15
15
  TQuantity = bigint,
@@ -52,8 +52,6 @@ export type TransactionBase<TQuantity = bigint, TIndex = number> = {
52
52
  blockHash: Hash | null
53
53
  /** Number of block containing this transaction or `null` if pending */
54
54
  blockNumber: TQuantity | null
55
- /** Chain ID. */
56
- chainId: TIndex
57
55
  /** Transaction sender */
58
56
  from: Address
59
57
  /** Gas provided for transaction execution */
@@ -84,6 +82,7 @@ export type TransactionLegacy<
84
82
  > = TransactionBase<TQuantity, TIndex> &
85
83
  FeeValuesLegacy<TQuantity> & {
86
84
  accessList?: never
85
+ chainId?: TIndex
87
86
  type: TType
88
87
  }
89
88
  export type TransactionEIP2930<
@@ -93,6 +92,7 @@ export type TransactionEIP2930<
93
92
  > = TransactionBase<TQuantity, TIndex> &
94
93
  FeeValuesLegacy<TQuantity> & {
95
94
  accessList: AccessList
95
+ chainId: TIndex
96
96
  type: TType
97
97
  }
98
98
  export type TransactionEIP1559<
@@ -102,6 +102,7 @@ export type TransactionEIP1559<
102
102
  > = TransactionBase<TQuantity, TIndex> &
103
103
  FeeValuesEIP1559<TQuantity> & {
104
104
  accessList: AccessList
105
+ chainId: TIndex
105
106
  type: TType
106
107
  }
107
108
  export type Transaction<TQuantity = bigint, TIndex = number> =
@@ -152,10 +153,15 @@ export type TransactionRequest<TQuantity = bigint, TIndex = number> =
152
153
  export type TransactionSerializedEIP1559 = `0x02${string}`
153
154
  export type TransactionSerializedEIP2930 = `0x01${string}`
154
155
  export type TransactionSerializedLegacy = Hex
156
+ export type TransactionSerializedGeneric = Hex
155
157
  export type TransactionSerialized<TType extends TransactionType = 'legacy'> =
156
- | (TType extends 'eip1559' ? TransactionSerializedEIP1559 : never)
157
- | (TType extends 'eip2930' ? TransactionSerializedEIP2930 : never)
158
- | (TType extends 'legacy' ? TransactionSerializedLegacy : never)
158
+ TType extends 'eip1559'
159
+ ? TransactionSerializedEIP1559
160
+ : TType extends 'eip2930'
161
+ ? TransactionSerializedEIP2930
162
+ : TType extends 'legacy'
163
+ ? TransactionSerializedLegacy
164
+ : TransactionSerializedGeneric
159
165
 
160
166
  export type TransactionSerializableBase<
161
167
  TQuantity = bigint,
@@ -190,7 +196,19 @@ export type TransactionSerializableEIP1559<
190
196
  type?: 'eip1559'
191
197
  yParity?: number
192
198
  }
199
+ export type TransactionSerializableGeneric<
200
+ TQuantity = bigint,
201
+ TIndex = number,
202
+ > = TransactionSerializableBase<TQuantity, TIndex> & {
203
+ accessList?: AccessList
204
+ gasPrice?: TQuantity
205
+ maxFeePerGas?: TQuantity
206
+ maxPriorityFeePerGas?: TQuantity
207
+ type: string
208
+ }
209
+
193
210
  export type TransactionSerializable<TQuantity = bigint, TIndex = number> =
194
211
  | TransactionSerializableLegacy<TQuantity, TIndex>
195
212
  | TransactionSerializableEIP2930<TQuantity, TIndex>
196
213
  | TransactionSerializableEIP1559<TQuantity, TIndex>
214
+ | TransactionSerializableGeneric<TQuantity, TIndex>
@@ -1,81 +1,72 @@
1
1
  import type {
2
- Narrow,
3
2
  TypedData,
4
3
  TypedDataDomain,
5
4
  TypedDataToPrimitiveTypes,
6
5
  } from 'abitype'
7
6
 
8
7
  export type TypedDataDefinition<
9
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
10
- TPrimaryType extends string = string,
11
- > = {
12
- primaryType: GetTypedDataPrimaryType<TTypedData, TPrimaryType>
13
- } & GetTypedDataMessage<TTypedData, TPrimaryType> &
8
+ TTypedData extends TypedData | Record<string, unknown> =
9
+ | TypedData
10
+ | Record<string, unknown>,
11
+ TPrimaryType extends keyof TTypedData | 'EIP712Domain' = keyof TTypedData,
12
+ > = GetTypedDataPrimaryType<TTypedData, TPrimaryType> &
13
+ GetTypedDataMessage<TTypedData, TPrimaryType> &
14
14
  GetTypedDataTypes<TTypedData, TPrimaryType> &
15
15
  GetTypedDataDomain<TTypedData, TPrimaryType>
16
16
 
17
17
  export type GetTypedDataDomain<
18
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
19
- TPrimaryType extends string = string,
20
- TSchema = TTypedData extends TypedData
18
+ TTypedData extends TypedData | Record<string, unknown>,
19
+ TPrimaryType extends keyof TTypedData | 'EIP712Domain',
20
+ ///
21
+ Schema extends Record<string, unknown> = TTypedData extends TypedData
21
22
  ? TypedDataToPrimitiveTypes<TTypedData>
22
- : { [key: string]: any },
23
- TDomain = TSchema extends { EIP712Domain: infer Domain }
23
+ : { [_: string]: any },
24
+ TDomain = Schema extends { EIP712Domain: infer Domain }
24
25
  ? Domain
25
26
  : TypedDataDomain,
26
27
  > = TPrimaryType extends 'EIP712Domain'
27
- ? {
28
- domain: TDomain
29
- }
30
- : {
31
- domain?: TDomain
32
- }
28
+ ? { domain: TDomain }
29
+ : { domain?: TDomain }
33
30
 
34
31
  export type GetTypedDataMessage<
35
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
36
- TPrimaryType extends string = string,
37
- TSchema = TTypedData extends TypedData
32
+ TTypedData extends TypedData | Record<string, unknown>,
33
+ TPrimaryType extends keyof TTypedData | 'EIP712Domain',
34
+ ///
35
+ Schema extends Record<string, unknown> = TTypedData extends TypedData
38
36
  ? TypedDataToPrimitiveTypes<TTypedData>
39
- : { [key: string]: any },
40
- TMessage = TSchema[TPrimaryType extends keyof TSchema
37
+ : { [_: string]: any },
38
+ Message extends Schema[keyof Schema] = Schema[TPrimaryType extends keyof Schema
41
39
  ? TPrimaryType
42
- : keyof TSchema],
40
+ : keyof Schema],
43
41
  > = TPrimaryType extends 'EIP712Domain'
44
42
  ? {}
45
- : { [key: string]: any } extends TMessage // Check if we were able to infer the shape of typed data
43
+ : { [key: string]: any } extends Message // Check if we were able to infer the shape of typed data
46
44
  ? {
47
45
  /**
48
46
  * Data to sign
49
47
  *
50
48
  * Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link types} for type inference.
51
49
  */
52
- message: { [key: string]: unknown }
50
+ message: Record<string, unknown>
53
51
  }
54
52
  : {
55
53
  /** Data to sign */
56
- message: TMessage
54
+ message: Message
57
55
  }
58
56
 
59
57
  export type GetTypedDataPrimaryType<
60
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
61
- TPrimaryType extends string = string,
62
- > = TTypedData extends TypedData
63
- ? keyof TTypedData extends infer AbiFunctionNames
64
- ?
65
- | AbiFunctionNames
66
- | (TPrimaryType extends AbiFunctionNames ? TPrimaryType : never)
67
- | (TypedData extends TTypedData ? string : never)
68
- | 'EIP712Domain'
69
- : never
70
- : TPrimaryType
58
+ TTypedData extends TypedData | Record<string, unknown>,
59
+ TPrimaryType extends keyof TTypedData,
60
+ > = {
61
+ primaryType:
62
+ | TPrimaryType // infer value
63
+ | keyof TTypedData // show all values
64
+ | 'EIP712Domain'
65
+ }
71
66
 
72
67
  export type GetTypedDataTypes<
73
- TTypedData extends TypedData | { [key: string]: unknown } = TypedData,
74
- TPrimaryType extends string = string,
68
+ TTypedData extends TypedData | Record<string, unknown>,
69
+ TPrimaryType extends keyof TTypedData | 'EIP712Domain',
75
70
  > = TPrimaryType extends 'EIP712Domain'
76
- ? {
77
- types?: Narrow<TTypedData>
78
- }
79
- : {
80
- types: Narrow<TTypedData>
81
- }
71
+ ? { types?: TTypedData }
72
+ : { types: TTypedData }
@@ -106,6 +106,21 @@ export type MaybeRequired<T, TRequired extends boolean> = TRequired extends true
106
106
  ? Required<T>
107
107
  : T
108
108
 
109
+ /**
110
+ * @description Makes the attribute on the type T allow undefined if TUndefinedish is true.
111
+ *
112
+ * @example
113
+ * MaybeUndefined<string, true>
114
+ * => string | undefined
115
+ *
116
+ * MaybeUndefined<string, false>
117
+ * => string
118
+ */
119
+ export type MaybeUndefined<
120
+ T,
121
+ TUndefinedish extends boolean,
122
+ > = TUndefinedish extends true ? T | undefined : T
123
+
109
124
  /**
110
125
  * @description Merges the intersection properties of T and U.
111
126
  *
@@ -24,10 +24,12 @@ export type DecodeEventLogParameters<
24
24
  TEventName extends string | undefined = string,
25
25
  TTopics extends Hex[] = Hex[],
26
26
  TData extends Hex | undefined = undefined,
27
+ TStrict extends boolean = true,
27
28
  > = {
28
29
  abi: Narrow<TAbi>
29
30
  data?: TData
30
31
  eventName?: InferEventName<TAbi, TEventName>
32
+ strict?: TStrict
31
33
  topics: [signature: Hex, ...args: TTopics] | []
32
34
  }
33
35
 
@@ -36,6 +38,7 @@ export type DecodeEventLogReturnType<
36
38
  TEventName extends string | undefined = string,
37
39
  TTopics extends Hex[] = Hex[],
38
40
  TData extends Hex | undefined = undefined,
41
+ TStrict extends boolean = true,
39
42
  _EventNames extends string = TAbi extends Abi
40
43
  ? Abi extends TAbi
41
44
  ? string
@@ -45,13 +48,13 @@ export type DecodeEventLogReturnType<
45
48
  ? Prettify<
46
49
  {
47
50
  eventName: TEventName
48
- } & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData>
51
+ } & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData, TStrict>
49
52
  >
50
53
  : {
51
54
  [TName in _EventNames]: Prettify<
52
55
  {
53
56
  eventName: TName
54
- } & GetEventArgsFromTopics<TAbi, TName, TTopics, TData>
57
+ } & GetEventArgsFromTopics<TAbi, TName, TTopics, TData, TStrict>
55
58
  >
56
59
  }[_EventNames]
57
60
 
@@ -62,16 +65,20 @@ export function decodeEventLog<
62
65
  TEventName extends string | undefined = undefined,
63
66
  TTopics extends Hex[] = Hex[],
64
67
  TData extends Hex | undefined = undefined,
68
+ TStrict extends boolean = true,
65
69
  >({
66
70
  abi,
67
71
  data,
72
+ strict: strict_,
68
73
  topics,
69
74
  }: DecodeEventLogParameters<
70
75
  TAbi,
71
76
  TEventName,
72
77
  TTopics,
73
- TData
74
- >): DecodeEventLogReturnType<TAbi, TEventName, TTopics, TData> {
78
+ TData,
79
+ TStrict
80
+ >): DecodeEventLogReturnType<TAbi, TEventName, TTopics, TData, TStrict> {
81
+ const strict = strict_ ?? true
75
82
  const [signature, ...argTopics] = topics
76
83
  if (!signature)
77
84
  throw new AbiEventSignatureEmptyTopicsError({
@@ -82,7 +89,7 @@ export function decodeEventLog<
82
89
  x.type === 'event' &&
83
90
  signature === getEventSelector(formatAbiItem(x) as EventDefinition),
84
91
  )
85
- if (!(abiItem && 'name' in abiItem))
92
+ if (!(abiItem && 'name' in abiItem) || abiItem.type !== 'event')
86
93
  throw new AbiEventSignatureNotFoundError(signature, {
87
94
  docsPath,
88
95
  })
@@ -109,32 +116,50 @@ export function decodeEventLog<
109
116
 
110
117
  // Decode data (non-indexed args).
111
118
  const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed))
112
- if (data && data !== '0x') {
113
- try {
114
- const decodedData = decodeAbiParameters(nonIndexedInputs, data)
115
- if (decodedData) {
116
- if (isUnnamed) args = [...args, ...decodedData]
117
- else {
118
- for (let i = 0; i < nonIndexedInputs.length; i++) {
119
- args[nonIndexedInputs[i].name!] = decodedData[i]
119
+ if (nonIndexedInputs.length > 0) {
120
+ if (data && data !== '0x') {
121
+ try {
122
+ const decodedData = decodeAbiParameters(nonIndexedInputs, data)
123
+ if (decodedData) {
124
+ if (isUnnamed) args = [...args, ...decodedData]
125
+ else {
126
+ for (let i = 0; i < nonIndexedInputs.length; i++) {
127
+ args[nonIndexedInputs[i].name!] = decodedData[i]
128
+ }
120
129
  }
121
130
  }
131
+ } catch (err) {
132
+ if (strict) {
133
+ if (err instanceof AbiDecodingDataSizeTooSmallError)
134
+ throw new DecodeLogDataMismatch({
135
+ abiItem,
136
+ data: err.data,
137
+ params: err.params,
138
+ size: err.size,
139
+ })
140
+ throw err
141
+ }
122
142
  }
123
- } catch (err) {
124
- if (err instanceof AbiDecodingDataSizeTooSmallError)
125
- throw new DecodeLogDataMismatch({
126
- data: err.data,
127
- params: err.params,
128
- size: err.size,
129
- })
130
- throw err
143
+ } else if (strict) {
144
+ throw new DecodeLogDataMismatch({
145
+ abiItem,
146
+ data: '0x',
147
+ params: nonIndexedInputs,
148
+ size: 0,
149
+ })
131
150
  }
132
151
  }
133
152
 
134
153
  return {
135
154
  eventName: name,
136
155
  args: Object.values(args).length > 0 ? args : undefined,
137
- } as unknown as DecodeEventLogReturnType<TAbi, TEventName, TTopics, TData>
156
+ } as unknown as DecodeEventLogReturnType<
157
+ TAbi,
158
+ TEventName,
159
+ TTopics,
160
+ TData,
161
+ TStrict
162
+ >
138
163
  }
139
164
 
140
165
  function decodeTopic({ param, value }: { param: AbiParameter; value: Hex }) {
@@ -66,17 +66,22 @@ export function encodeEventTopics<
66
66
  )
67
67
  const args_ = Array.isArray(args)
68
68
  ? args
69
- : indexedInputs?.map((x: any) => (args as any)[x.name]) ?? []
70
- topics =
71
- indexedInputs?.map((param, i) =>
72
- Array.isArray(args_[i])
73
- ? args_[i].map((_: any, j: number) =>
74
- encodeArg({ param, value: args_[i][j] }),
75
- )
76
- : args_[i]
77
- ? encodeArg({ param, value: args_[i] })
78
- : null,
79
- ) ?? []
69
+ : Object.values(args).length > 0
70
+ ? indexedInputs?.map((x: any) => (args as any)[x.name]) ?? []
71
+ : []
72
+
73
+ if (args_.length > 0) {
74
+ topics =
75
+ indexedInputs?.map((param, i) =>
76
+ Array.isArray(args_[i])
77
+ ? args_[i].map((_: any, j: number) =>
78
+ encodeArg({ param, value: args_[i][j] }),
79
+ )
80
+ : args_[i]
81
+ ? encodeArg({ param, value: args_[i] })
82
+ : null,
83
+ ) ?? []
84
+ }
80
85
  }
81
86
  return [signature, ...topics]
82
87
  }
@@ -45,6 +45,7 @@ export function getAbiItem<
45
45
  }
46
46
  if (!abiItem.inputs) continue
47
47
  if (abiItem.inputs.length === 0) continue
48
+ if (abiItem.inputs.length !== args.length) continue
48
49
  const matched = (args as readonly unknown[]).every((arg, index) => {
49
50
  const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]
50
51
  if (!abiParameter) return false
@@ -6,7 +6,7 @@ import { pad } from '../data/pad.js'
6
6
  import { assertSize } from './fromHex.js'
7
7
  import { type NumberToHexOpts, numberToHex } from './toHex.js'
8
8
 
9
- const encoder = new TextEncoder()
9
+ const encoder = /*#__PURE__*/ new TextEncoder()
10
10
 
11
11
  export type ToBytesParameters = {
12
12
  /** Size of the output bytes. */
@@ -4,7 +4,7 @@ import { pad } from '../data/pad.js'
4
4
 
5
5
  import { assertSize } from './fromHex.js'
6
6
 
7
- const hexes = Array.from({ length: 256 }, (_v, i) =>
7
+ const hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>
8
8
  i.toString(16).padStart(2, '0'),
9
9
  )
10
10
 
@@ -201,7 +201,7 @@ export type StringToHexOpts = {
201
201
  size?: number
202
202
  }
203
203
 
204
- const encoder = new TextEncoder()
204
+ const encoder = /*#__PURE__*/ new TextEncoder()
205
205
 
206
206
  /**
207
207
  * Encodes a UTF-8 string into a hex string
@@ -0,0 +1,5 @@
1
+ import type { Hex } from '../../index.js'
2
+
3
+ export function encodeLabelhash(hash: Hex): `[${string}]` {
4
+ return `[${hash.slice(2)}]`
5
+ }
@@ -0,0 +1,11 @@
1
+ import type { Hex } from '../../index.js'
2
+ import { isHex } from '../index.js'
3
+
4
+ export function encodedLabelToLabelhash(label: string): Hex | null {
5
+ if (label.length !== 66) return null
6
+ if (label.indexOf('[') !== 0) return null
7
+ if (label.indexOf(']') !== 65) return null
8
+ const hash = `0x${label.slice(1, 65)}`
9
+ if (!isHex(hash)) return null
10
+ return hash
11
+ }
@@ -1,6 +1,7 @@
1
1
  import { stringToBytes } from '../encoding/toBytes.js'
2
2
  import { bytesToHex } from '../encoding/toHex.js'
3
3
  import { keccak256 } from '../hash/keccak256.js'
4
+ import { encodedLabelToLabelhash } from './encodedLabelToLabelhash.js'
4
5
 
5
6
  /**
6
7
  * @description Hashes ENS label
@@ -14,5 +15,5 @@ import { keccak256 } from '../hash/keccak256.js'
14
15
  export function labelhash(label: string) {
15
16
  const result = new Uint8Array(32).fill(0)
16
17
  if (!label) return bytesToHex(result)
17
- return keccak256(stringToBytes(label))
18
+ return encodedLabelToLabelhash(label) || keccak256(stringToBytes(label))
18
19
  }
@@ -1,7 +1,8 @@
1
1
  import { concat } from '../data/concat.js'
2
- import { stringToBytes } from '../encoding/toBytes.js'
2
+ import { stringToBytes, toBytes } from '../encoding/toBytes.js'
3
3
  import { bytesToHex } from '../encoding/toHex.js'
4
4
  import { keccak256 } from '../hash/keccak256.js'
5
+ import { encodedLabelToLabelhash } from './encodedLabelToLabelhash.js'
5
6
 
6
7
  /**
7
8
  * @description Hashes ENS name
@@ -21,7 +22,10 @@ export function namehash(name: string) {
21
22
  const labels = name.split('.')
22
23
  // Iterate in reverse order building up hash
23
24
  for (let i = labels.length - 1; i >= 0; i -= 1) {
24
- const hashed = keccak256(stringToBytes(labels[i]), 'bytes')
25
+ const hashFromEncodedLabel = encodedLabelToLabelhash(labels[i])
26
+ const hashed = hashFromEncodedLabel
27
+ ? toBytes(hashFromEncodedLabel)
28
+ : keccak256(stringToBytes(labels[i]), 'bytes')
25
29
  result = keccak256(concat([result, hashed]), 'bytes')
26
30
  }
27
31
 
@@ -1,29 +1,33 @@
1
1
  // Adapted from https://github.com/mafintosh/dns-packet
2
2
  import type { ByteArray } from '../../types/misc.js'
3
3
  import { stringToBytes } from '../encoding/toBytes.js'
4
+ import { encodeLabelhash } from './encodeLabelhash.js'
5
+ import { labelhash } from './labelhash.js'
4
6
 
5
7
  /*
6
8
  * @description Encodes a DNS packet into a ByteArray containing a UDP payload.
7
9
  */
8
10
  export function packetToBytes(packet: string): ByteArray {
9
- function length(value: string) {
10
- if (value === '.' || value === '..') return 1
11
- return stringToBytes(value.replace(/^\.|\.$/gm, '')).length + 2
12
- }
13
-
14
- const bytes = new Uint8Array(length(packet))
15
11
  // strip leading and trailing `.`
16
12
  const value = packet.replace(/^\.|\.$/gm, '')
17
- if (!value.length) return bytes
13
+ if (value.length === 0) return new Uint8Array(1)
14
+
15
+ const bytes = new Uint8Array(stringToBytes(value).byteLength + 2)
18
16
 
19
17
  let offset = 0
20
18
  const list = value.split('.')
21
19
  for (let i = 0; i < list.length; i++) {
22
- const encoded = stringToBytes(list[i])
20
+ let encoded = stringToBytes(list[i])
21
+ // if the length is > 255, make the encoded label value a labelhash
22
+ // this is compatible with the universal resolver
23
+ if (encoded.byteLength > 255)
24
+ encoded = stringToBytes(encodeLabelhash(labelhash(list[i])))
23
25
  bytes[offset] = encoded.length
24
26
  bytes.set(encoded, offset + 1)
25
27
  offset += encoded.length + 1
26
28
  }
27
29
 
30
+ if (bytes.byteLength !== offset + 1) return bytes.slice(0, offset + 1)
31
+
28
32
  return bytes
29
33
  }