viem 0.0.0-w-20230725184008 → 0.0.0-w-20230802141753

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 (276) hide show
  1. package/README.md +6 -0
  2. package/dist/cjs/accounts/index.js +1 -1
  3. package/dist/cjs/accounts/index.js.map +1 -1
  4. package/dist/cjs/accounts/utils/signMessage.js +1 -1
  5. package/dist/cjs/accounts/utils/signMessage.js.map +1 -1
  6. package/dist/cjs/accounts/utils/signTypedData.js +1 -1
  7. package/dist/cjs/accounts/utils/signTypedData.js.map +1 -1
  8. package/dist/cjs/actions/ens/getEnsAddress.js +18 -13
  9. package/dist/cjs/actions/ens/getEnsAddress.js.map +1 -1
  10. package/dist/cjs/actions/index.js.map +1 -1
  11. package/dist/cjs/actions/public/createContractEventFilter.js.map +1 -1
  12. package/dist/cjs/actions/public/createEventFilter.js +16 -8
  13. package/dist/cjs/actions/public/createEventFilter.js.map +1 -1
  14. package/dist/cjs/actions/public/getBlock.js +3 -1
  15. package/dist/cjs/actions/public/getBlock.js.map +1 -1
  16. package/dist/cjs/actions/public/getBlockNumber.js +2 -2
  17. package/dist/cjs/actions/public/getBlockNumber.js.map +1 -1
  18. package/dist/cjs/actions/public/getFilterChanges.js.map +1 -1
  19. package/dist/cjs/actions/public/getFilterLogs.js +1 -1
  20. package/dist/cjs/actions/public/getFilterLogs.js.map +1 -1
  21. package/dist/cjs/actions/public/getLogs.js +16 -10
  22. package/dist/cjs/actions/public/getLogs.js.map +1 -1
  23. package/dist/cjs/actions/public/getTransaction.js +2 -1
  24. package/dist/cjs/actions/public/getTransaction.js.map +1 -1
  25. package/dist/cjs/actions/public/watchBlockNumber.js +1 -1
  26. package/dist/cjs/actions/public/watchBlockNumber.js.map +1 -1
  27. package/dist/cjs/actions/public/watchBlocks.js +2 -1
  28. package/dist/cjs/actions/public/watchBlocks.js.map +1 -1
  29. package/dist/cjs/actions/public/watchContractEvent.js +3 -0
  30. package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
  31. package/dist/cjs/actions/public/watchEvent.js +7 -2
  32. package/dist/cjs/actions/public/watchEvent.js.map +1 -1
  33. package/dist/cjs/clients/createClient.js +2 -1
  34. package/dist/cjs/clients/createClient.js.map +1 -1
  35. package/dist/cjs/clients/createPublicClient.js.map +1 -1
  36. package/dist/cjs/clients/createTestClient.js.map +1 -1
  37. package/dist/cjs/clients/createWalletClient.js.map +1 -1
  38. package/dist/cjs/clients/decorators/public.js.map +1 -1
  39. package/dist/cjs/constants/abis.js +12 -2
  40. package/dist/cjs/constants/abis.js.map +1 -1
  41. package/dist/cjs/constants/number.js +101 -0
  42. package/dist/cjs/constants/number.js.map +1 -0
  43. package/dist/cjs/contract.js.map +1 -1
  44. package/dist/cjs/errors/abi.js +8 -1
  45. package/dist/cjs/errors/abi.js.map +1 -1
  46. package/dist/cjs/errors/contract.js +56 -32
  47. package/dist/cjs/errors/contract.js.map +1 -1
  48. package/dist/cjs/errors/version.js +1 -1
  49. package/dist/cjs/errors/version.js.map +1 -1
  50. package/dist/cjs/index.js +110 -7
  51. package/dist/cjs/index.js.map +1 -1
  52. package/dist/cjs/public.js.map +1 -1
  53. package/dist/cjs/utils/abi/encodePacked.js +2 -0
  54. package/dist/cjs/utils/abi/encodePacked.js.map +1 -1
  55. package/dist/cjs/utils/formatters/block.js.map +1 -1
  56. package/dist/cjs/utils/formatters/formatter.js +1 -0
  57. package/dist/cjs/utils/formatters/formatter.js.map +1 -1
  58. package/dist/cjs/utils/formatters/transaction.js.map +1 -1
  59. package/dist/cjs/utils/promise/withCache.js +3 -3
  60. package/dist/cjs/utils/promise/withCache.js.map +1 -1
  61. package/dist/cjs/utils/signature/hexToSignature.js +12 -0
  62. package/dist/cjs/utils/signature/hexToSignature.js.map +1 -0
  63. package/dist/cjs/utils/signature/signatureToHex.js.map +1 -0
  64. package/dist/cjs/utils/unit/parseUnits.js +2 -1
  65. package/dist/cjs/utils/unit/parseUnits.js.map +1 -1
  66. package/dist/esm/accounts/index.js +1 -1
  67. package/dist/esm/accounts/index.js.map +1 -1
  68. package/dist/esm/accounts/utils/signMessage.js +1 -1
  69. package/dist/esm/accounts/utils/signMessage.js.map +1 -1
  70. package/dist/esm/accounts/utils/signTypedData.js +1 -1
  71. package/dist/esm/accounts/utils/signTypedData.js.map +1 -1
  72. package/dist/esm/actions/ens/getEnsAddress.js +19 -14
  73. package/dist/esm/actions/ens/getEnsAddress.js.map +1 -1
  74. package/dist/esm/actions/index.js.map +1 -1
  75. package/dist/esm/actions/public/createContractEventFilter.js.map +1 -1
  76. package/dist/esm/actions/public/createEventFilter.js +16 -8
  77. package/dist/esm/actions/public/createEventFilter.js.map +1 -1
  78. package/dist/esm/actions/public/getBlock.js +3 -1
  79. package/dist/esm/actions/public/getBlock.js.map +1 -1
  80. package/dist/esm/actions/public/getBlockNumber.js +2 -2
  81. package/dist/esm/actions/public/getBlockNumber.js.map +1 -1
  82. package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
  83. package/dist/esm/actions/public/getFilterLogs.js +1 -1
  84. package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
  85. package/dist/esm/actions/public/getLogs.js +16 -10
  86. package/dist/esm/actions/public/getLogs.js.map +1 -1
  87. package/dist/esm/actions/public/getTransaction.js +2 -1
  88. package/dist/esm/actions/public/getTransaction.js.map +1 -1
  89. package/dist/esm/actions/public/watchBlockNumber.js +1 -1
  90. package/dist/esm/actions/public/watchBlockNumber.js.map +1 -1
  91. package/dist/esm/actions/public/watchBlocks.js +2 -1
  92. package/dist/esm/actions/public/watchBlocks.js.map +1 -1
  93. package/dist/esm/actions/public/watchContractEvent.js +5 -0
  94. package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
  95. package/dist/esm/actions/public/watchEvent.js +9 -2
  96. package/dist/esm/actions/public/watchEvent.js.map +1 -1
  97. package/dist/esm/clients/createClient.js +2 -1
  98. package/dist/esm/clients/createClient.js.map +1 -1
  99. package/dist/esm/clients/createPublicClient.js.map +1 -1
  100. package/dist/esm/clients/createTestClient.js.map +1 -1
  101. package/dist/esm/clients/createWalletClient.js.map +1 -1
  102. package/dist/esm/clients/decorators/public.js.map +1 -1
  103. package/dist/esm/constants/abis.js +11 -1
  104. package/dist/esm/constants/abis.js.map +1 -1
  105. package/dist/esm/constants/number.js +97 -0
  106. package/dist/esm/constants/number.js.map +1 -0
  107. package/dist/esm/contract.js.map +1 -1
  108. package/dist/esm/errors/abi.js +8 -1
  109. package/dist/esm/errors/abi.js.map +1 -1
  110. package/dist/esm/errors/contract.js +56 -32
  111. package/dist/esm/errors/contract.js.map +1 -1
  112. package/dist/esm/errors/version.js +1 -1
  113. package/dist/esm/errors/version.js.map +1 -1
  114. package/dist/esm/index.js +4 -1
  115. package/dist/esm/index.js.map +1 -1
  116. package/dist/esm/public.js.map +1 -1
  117. package/dist/esm/utils/abi/encodePacked.js +2 -0
  118. package/dist/esm/utils/abi/encodePacked.js.map +1 -1
  119. package/dist/esm/utils/formatters/block.js.map +1 -1
  120. package/dist/esm/utils/formatters/formatter.js +1 -0
  121. package/dist/esm/utils/formatters/formatter.js.map +1 -1
  122. package/dist/esm/utils/formatters/transaction.js.map +1 -1
  123. package/dist/esm/utils/promise/withCache.js +3 -3
  124. package/dist/esm/utils/promise/withCache.js.map +1 -1
  125. package/dist/esm/utils/signature/hexToSignature.js +18 -0
  126. package/dist/esm/utils/signature/hexToSignature.js.map +1 -0
  127. package/dist/esm/utils/signature/signatureToHex.js +21 -0
  128. package/dist/esm/utils/signature/signatureToHex.js.map +1 -0
  129. package/dist/esm/utils/unit/parseUnits.js +2 -1
  130. package/dist/esm/utils/unit/parseUnits.js.map +1 -1
  131. package/dist/types/accounts/index.d.ts +1 -1
  132. package/dist/types/accounts/index.d.ts.map +1 -1
  133. package/dist/types/actions/ens/getEnsAddress.d.ts +3 -1
  134. package/dist/types/actions/ens/getEnsAddress.d.ts.map +1 -1
  135. package/dist/types/actions/index.d.ts +5 -1
  136. package/dist/types/actions/index.d.ts.map +1 -1
  137. package/dist/types/actions/public/createContractEventFilter.d.ts +5 -5
  138. package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
  139. package/dist/types/actions/public/createEventFilter.d.ts +20 -7
  140. package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
  141. package/dist/types/actions/public/getBlock.d.ts +5 -5
  142. package/dist/types/actions/public/getBlock.d.ts.map +1 -1
  143. package/dist/types/actions/public/getBlockNumber.d.ts +4 -2
  144. package/dist/types/actions/public/getBlockNumber.d.ts.map +1 -1
  145. package/dist/types/actions/public/getFilterChanges.d.ts +5 -8
  146. package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
  147. package/dist/types/actions/public/getFilterLogs.d.ts +5 -4
  148. package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
  149. package/dist/types/actions/public/getLogs.d.ts +17 -6
  150. package/dist/types/actions/public/getLogs.d.ts.map +1 -1
  151. package/dist/types/actions/public/getTransaction.d.ts +4 -4
  152. package/dist/types/actions/public/getTransaction.d.ts.map +1 -1
  153. package/dist/types/actions/public/watchBlocks.d.ts +10 -10
  154. package/dist/types/actions/public/watchBlocks.d.ts.map +1 -1
  155. package/dist/types/actions/public/watchContractEvent.d.ts +3 -3
  156. package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
  157. package/dist/types/actions/public/watchEvent.d.ts +19 -8
  158. package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
  159. package/dist/types/chains/formatters/celo.d.ts +4 -0
  160. package/dist/types/chains/formatters/celo.d.ts.map +1 -1
  161. package/dist/types/chains/formatters/optimism.d.ts +5 -3
  162. package/dist/types/chains/formatters/optimism.d.ts.map +1 -1
  163. package/dist/types/chains/index.d.ts +44 -12
  164. package/dist/types/chains/index.d.ts.map +1 -1
  165. package/dist/types/clients/createClient.d.ts +7 -0
  166. package/dist/types/clients/createClient.d.ts.map +1 -1
  167. package/dist/types/clients/createPublicClient.d.ts +1 -1
  168. package/dist/types/clients/createPublicClient.d.ts.map +1 -1
  169. package/dist/types/clients/createTestClient.d.ts +1 -1
  170. package/dist/types/clients/createTestClient.d.ts.map +1 -1
  171. package/dist/types/clients/createWalletClient.d.ts +1 -1
  172. package/dist/types/clients/createWalletClient.d.ts.map +1 -1
  173. package/dist/types/clients/decorators/public.d.ts +10 -9
  174. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  175. package/dist/types/constants/abis.d.ts +16 -1
  176. package/dist/types/constants/abis.d.ts.map +1 -1
  177. package/dist/types/constants/number.d.ts +97 -0
  178. package/dist/types/constants/number.d.ts.map +1 -0
  179. package/dist/types/contract.d.ts +5 -1
  180. package/dist/types/contract.d.ts.map +1 -1
  181. package/dist/types/errors/abi.d.ts +1 -0
  182. package/dist/types/errors/abi.d.ts.map +1 -1
  183. package/dist/types/errors/contract.d.ts +1 -0
  184. package/dist/types/errors/contract.d.ts.map +1 -1
  185. package/dist/types/errors/version.d.ts +1 -1
  186. package/dist/types/errors/version.d.ts.map +1 -1
  187. package/dist/types/index.d.ts +11 -3
  188. package/dist/types/index.d.ts.map +1 -1
  189. package/dist/types/public.d.ts +5 -1
  190. package/dist/types/public.d.ts.map +1 -1
  191. package/dist/types/types/block.d.ts +7 -7
  192. package/dist/types/types/block.d.ts.map +1 -1
  193. package/dist/types/types/contract.d.ts +1 -1
  194. package/dist/types/types/contract.d.ts.map +1 -1
  195. package/dist/types/types/filter.d.ts +7 -3
  196. package/dist/types/types/filter.d.ts.map +1 -1
  197. package/dist/types/types/formatter.d.ts +3 -0
  198. package/dist/types/types/formatter.d.ts.map +1 -1
  199. package/dist/types/types/log.d.ts +8 -8
  200. package/dist/types/types/log.d.ts.map +1 -1
  201. package/dist/types/types/misc.d.ts.map +1 -1
  202. package/dist/types/types/rpc.d.ts +3 -3
  203. package/dist/types/types/rpc.d.ts.map +1 -1
  204. package/dist/types/types/transaction.d.ts +8 -8
  205. package/dist/types/types/transaction.d.ts.map +1 -1
  206. package/dist/types/utils/formatters/block.d.ts +13 -3
  207. package/dist/types/utils/formatters/block.d.ts.map +1 -1
  208. package/dist/types/utils/formatters/formatter.d.ts +1 -0
  209. package/dist/types/utils/formatters/formatter.d.ts.map +1 -1
  210. package/dist/types/utils/formatters/transaction.d.ts +10 -3
  211. package/dist/types/utils/formatters/transaction.d.ts.map +1 -1
  212. package/dist/types/utils/formatters/transactionReceipt.d.ts +1 -0
  213. package/dist/types/utils/formatters/transactionReceipt.d.ts.map +1 -1
  214. package/dist/types/utils/formatters/transactionRequest.d.ts +1 -0
  215. package/dist/types/utils/formatters/transactionRequest.d.ts.map +1 -1
  216. package/dist/types/utils/promise/withCache.d.ts +3 -3
  217. package/dist/types/utils/promise/withCache.d.ts.map +1 -1
  218. package/dist/types/utils/signature/hexToSignature.d.ts +13 -0
  219. package/dist/types/utils/signature/hexToSignature.d.ts.map +1 -0
  220. package/dist/types/utils/signature/signatureToHex.d.ts +17 -0
  221. package/dist/types/utils/signature/signatureToHex.d.ts.map +1 -0
  222. package/dist/types/utils/unit/parseUnits.d.ts.map +1 -1
  223. package/package.json +2 -1
  224. package/src/accounts/index.ts +1 -1
  225. package/src/accounts/utils/signMessage.ts +1 -1
  226. package/src/accounts/utils/signTypedData.ts +1 -1
  227. package/src/actions/ens/getEnsAddress.ts +24 -15
  228. package/src/actions/index.ts +6 -2
  229. package/src/actions/public/createContractEventFilter.ts +30 -7
  230. package/src/actions/public/createEventFilter.ts +78 -24
  231. package/src/actions/public/getBlock.ts +18 -8
  232. package/src/actions/public/getBlockNumber.ts +5 -3
  233. package/src/actions/public/getFilterChanges.ts +46 -10
  234. package/src/actions/public/getFilterLogs.ts +26 -10
  235. package/src/actions/public/getLogs.ts +73 -18
  236. package/src/actions/public/getTransaction.ts +15 -8
  237. package/src/actions/public/watchBlockNumber.ts +1 -1
  238. package/src/actions/public/watchBlocks.ts +37 -18
  239. package/src/actions/public/watchContractEvent.ts +13 -9
  240. package/src/actions/public/watchEvent.ts +56 -19
  241. package/src/clients/createClient.ts +9 -0
  242. package/src/clients/createPublicClient.ts +7 -1
  243. package/src/clients/createTestClient.ts +7 -1
  244. package/src/clients/createWalletClient.ts +7 -1
  245. package/src/clients/decorators/public.ts +114 -25
  246. package/src/constants/abis.ts +11 -1
  247. package/src/constants/number.ts +98 -0
  248. package/src/contract.ts +6 -2
  249. package/src/errors/abi.ts +5 -1
  250. package/src/errors/contract.ts +52 -31
  251. package/src/errors/version.ts +1 -1
  252. package/src/index.ts +109 -3
  253. package/src/public.ts +6 -2
  254. package/src/types/block.ts +25 -10
  255. package/src/types/contract.ts +7 -3
  256. package/src/types/filter.ts +32 -26
  257. package/src/types/formatter.ts +9 -0
  258. package/src/types/log.ts +13 -8
  259. package/src/types/misc.ts +3 -0
  260. package/src/types/rpc.ts +20 -6
  261. package/src/types/transaction.ts +22 -11
  262. package/src/utils/abi/encodePacked.ts +1 -0
  263. package/src/utils/formatters/block.ts +31 -4
  264. package/src/utils/formatters/formatter.ts +1 -0
  265. package/src/utils/formatters/transaction.ts +25 -2
  266. package/src/utils/promise/withCache.ts +5 -5
  267. package/src/utils/signature/hexToSignature.ts +20 -0
  268. package/src/utils/signature/signatureToHex.ts +26 -0
  269. package/src/utils/unit/parseUnits.ts +2 -1
  270. package/dist/cjs/accounts/utils/signatureToHex.js.map +0 -1
  271. package/dist/esm/accounts/utils/signatureToHex.js +0 -7
  272. package/dist/esm/accounts/utils/signatureToHex.js.map +0 -1
  273. package/dist/types/accounts/utils/signatureToHex.d.ts +0 -3
  274. package/dist/types/accounts/utils/signatureToHex.d.ts.map +0 -1
  275. package/src/accounts/utils/signatureToHex.ts +0 -12
  276. /package/dist/cjs/{accounts/utils → utils/signature}/signatureToHex.js +0 -0
package/src/index.ts CHANGED
@@ -162,8 +162,12 @@ export type {
162
162
  WatchBlockNumberReturnType,
163
163
  } from './actions/public/watchBlockNumber.js'
164
164
  export type {
165
- OnLogsFn,
166
- OnLogsParameter,
165
+ WatchEventOnLogsFn,
166
+ /** @deprecated - use `WatchEventOnLogsFn` instead. */
167
+ WatchEventOnLogsFn as OnLogFn,
168
+ WatchEventOnLogsParameter,
169
+ /** @deprecated - use `WatchEventOnLogsParameter` instead. */
170
+ WatchEventOnLogsParameter as OnLogParameter,
167
171
  WatchEventParameters,
168
172
  WatchEventReturnType,
169
173
  } from './actions/public/watchEvent.js'
@@ -239,6 +243,7 @@ export type {
239
243
  VerifyHashReturnType,
240
244
  } from './actions/public/verifyHash.js'
241
245
  export type {
246
+ WatchContractEventOnLogsParameter,
242
247
  WatchContractEventParameters,
243
248
  WatchContractEventReturnType,
244
249
  } from './actions/public/watchContractEvent.js'
@@ -305,8 +310,106 @@ export {
305
310
  webSocket,
306
311
  } from './clients/transports/webSocket.js'
307
312
  export { multicall3Abi } from './constants/abis.js'
308
- export { etherUnits, gweiUnits, weiUnits } from './constants/unit.js'
309
313
  export { zeroAddress } from './constants/address.js'
314
+ export { etherUnits, gweiUnits, weiUnits } from './constants/unit.js'
315
+ export {
316
+ maxInt8,
317
+ maxInt16,
318
+ maxInt24,
319
+ maxInt32,
320
+ maxInt40,
321
+ maxInt48,
322
+ maxInt56,
323
+ maxInt64,
324
+ maxInt72,
325
+ maxInt80,
326
+ maxInt88,
327
+ maxInt96,
328
+ maxInt104,
329
+ maxInt112,
330
+ maxInt120,
331
+ maxInt128,
332
+ maxInt136,
333
+ maxInt144,
334
+ maxInt152,
335
+ maxInt160,
336
+ maxInt168,
337
+ maxInt176,
338
+ maxInt184,
339
+ maxInt192,
340
+ maxInt200,
341
+ maxInt208,
342
+ maxInt216,
343
+ maxInt224,
344
+ maxInt232,
345
+ maxInt240,
346
+ maxInt248,
347
+ maxInt256,
348
+ maxUint8,
349
+ maxUint16,
350
+ maxUint24,
351
+ maxUint32,
352
+ maxUint40,
353
+ maxUint48,
354
+ maxUint56,
355
+ maxUint64,
356
+ maxUint72,
357
+ maxUint80,
358
+ maxUint88,
359
+ maxUint96,
360
+ maxUint104,
361
+ maxUint112,
362
+ maxUint120,
363
+ maxUint128,
364
+ maxUint136,
365
+ maxUint144,
366
+ maxUint152,
367
+ maxUint160,
368
+ maxUint168,
369
+ maxUint176,
370
+ maxUint184,
371
+ maxUint192,
372
+ maxUint200,
373
+ maxUint208,
374
+ maxUint216,
375
+ maxUint224,
376
+ maxUint232,
377
+ maxUint240,
378
+ maxUint248,
379
+ maxUint256,
380
+ minInt8,
381
+ minInt16,
382
+ minInt24,
383
+ minInt32,
384
+ minInt40,
385
+ minInt48,
386
+ minInt56,
387
+ minInt64,
388
+ minInt72,
389
+ minInt80,
390
+ minInt88,
391
+ minInt96,
392
+ minInt104,
393
+ minInt112,
394
+ minInt120,
395
+ minInt128,
396
+ minInt136,
397
+ minInt144,
398
+ minInt152,
399
+ minInt160,
400
+ minInt168,
401
+ minInt176,
402
+ minInt184,
403
+ minInt192,
404
+ minInt200,
405
+ minInt208,
406
+ minInt216,
407
+ minInt224,
408
+ minInt232,
409
+ minInt240,
410
+ minInt248,
411
+ minInt256,
412
+ } from './constants/number.js'
310
413
  export {
311
414
  AbiConstructorNotFoundError,
312
415
  AbiConstructorParamsNotFoundError,
@@ -501,6 +604,7 @@ export type {
501
604
  FeeValuesEIP1559,
502
605
  FeeValuesLegacy,
503
606
  } from './types/fee.js'
607
+ export type { Filter } from './types/filter.js'
504
608
  export type {
505
609
  Formatter,
506
610
  Formatters,
@@ -630,6 +734,7 @@ export {
630
734
  type HashTypedDataReturnType,
631
735
  hashTypedData,
632
736
  } from './utils/signature/hashTypedData.js'
737
+ export { hexToSignature } from './utils/signature/hexToSignature.js'
633
738
  export {
634
739
  type RecoverAddressParameters,
635
740
  type RecoverAddressReturnType,
@@ -650,6 +755,7 @@ export {
650
755
  type RecoverTypedDataAddressReturnType,
651
756
  recoverTypedDataAddress,
652
757
  } from './utils/signature/recoverTypedDataAddress.js'
758
+ export { signatureToHex } from './utils/signature/signatureToHex.js'
653
759
  export { type ToRlpReturnType, toRlp } from './utils/encoding/toRlp.js'
654
760
  export {
655
761
  type VerifyMessageParameters,
package/src/public.ts CHANGED
@@ -114,8 +114,12 @@ export {
114
114
  } from './actions/public/watchBlocks.js'
115
115
  export {
116
116
  watchEvent,
117
- type OnLogsFn,
118
- type OnLogsParameter,
117
+ type WatchEventOnLogsFn,
118
+ /** @deprecated - use `WatchEventOnLogsFn` instead. */
119
+ type WatchEventOnLogsFn as OnLogsFn,
120
+ type WatchEventOnLogsParameter,
121
+ /** @deprecated - use `WatchEventOnLogsParameter` instead. */
122
+ type WatchEventOnLogsParameter as OnLogsParameter,
119
123
  } from './actions/public/watchEvent.js'
120
124
  export {
121
125
  watchPendingTransactions,
@@ -3,7 +3,16 @@ import type { Address } from 'abitype'
3
3
  import type { Hash, Hex } from './misc.js'
4
4
  import type { Transaction } from './transaction.js'
5
5
 
6
- export type Block<TQuantity = bigint, TTransaction = Transaction> = {
6
+ export type Block<
7
+ TQuantity = bigint,
8
+ TIncludeTransactions extends boolean = boolean,
9
+ TBlockTag extends BlockTag = BlockTag,
10
+ TTransaction = Transaction<
11
+ bigint,
12
+ number,
13
+ TBlockTag extends 'pending' ? true : false
14
+ >,
15
+ > = {
7
16
  /** Base fee per gas */
8
17
  baseFeePerGas: TQuantity | null
9
18
  /** Difficulty for this block */
@@ -15,17 +24,17 @@ export type Block<TQuantity = bigint, TTransaction = Transaction> = {
15
24
  /** Total used gas by all transactions in this block */
16
25
  gasUsed: TQuantity
17
26
  /** Block hash or `null` if pending */
18
- hash: Hash | null
27
+ hash: TBlockTag extends 'pending' ? null : Hash
19
28
  /** Logs bloom filter or `null` if pending */
20
- logsBloom: Hex | null
29
+ logsBloom: TBlockTag extends 'pending' ? null : Hex
21
30
  /** Address that received this block’s mining rewards */
22
31
  miner: Address
23
32
  /** Unique identifier for the block. */
24
33
  mixHash: Hash
25
34
  /** Proof-of-work hash or `null` if pending */
26
- nonce: Hex | null
35
+ nonce: TBlockTag extends 'pending' ? null : Hex
27
36
  /** Block number or `null` if pending */
28
- number: TQuantity | null
37
+ number: TBlockTag extends 'pending' ? null : TQuantity
29
38
  /** Parent block hash */
30
39
  parentHash: Hash
31
40
  /** Root of the this block’s receipts trie */
@@ -42,7 +51,7 @@ export type Block<TQuantity = bigint, TTransaction = Transaction> = {
42
51
  /** Total difficulty of the chain until this block */
43
52
  totalDifficulty: TQuantity | null
44
53
  /** List of transaction objects or hashes */
45
- transactions: Hash[] | TTransaction[]
54
+ transactions: TIncludeTransactions extends true ? TTransaction[] : Hash[]
46
55
  /** Root of this block’s transaction trie */
47
56
  transactionsRoot: Hash
48
57
  /** List of uncle hashes */
@@ -67,7 +76,13 @@ export type BlockNumber<TQuantity = bigint> = TQuantity
67
76
 
68
77
  export type BlockTag = 'latest' | 'earliest' | 'pending' | 'safe' | 'finalized'
69
78
 
70
- export type Uncle<TQuantity = bigint, TTransaction = Transaction> = Block<
71
- TQuantity,
72
- TTransaction
73
- >
79
+ export type Uncle<
80
+ TQuantity = bigint,
81
+ TIncludeTransactions extends boolean = boolean,
82
+ TBlockTag extends BlockTag = BlockTag,
83
+ TTransaction = Transaction<
84
+ bigint,
85
+ number,
86
+ TBlockTag extends 'pending' ? true : false
87
+ >,
88
+ > = Block<TQuantity, TIncludeTransactions, TBlockTag, TTransaction>
@@ -83,9 +83,13 @@ export type MaybeAbiEventName<TAbiEvent extends AbiEvent | undefined> =
83
83
  TAbiEvent extends AbiEvent ? TAbiEvent['name'] : undefined
84
84
 
85
85
  export type MaybeExtractEventArgsFromAbi<
86
- TAbi extends Abi | readonly unknown[] = Abi,
87
- TEventName extends string | undefined = undefined,
88
- > = TEventName extends string ? GetEventArgs<TAbi, TEventName> : undefined
86
+ TAbi extends Abi | readonly unknown[] | undefined,
87
+ TEventName extends string | undefined,
88
+ > = TAbi extends Abi | readonly unknown[]
89
+ ? TEventName extends string
90
+ ? GetEventArgs<TAbi, TEventName>
91
+ : undefined
92
+ : undefined
89
93
 
90
94
  //////////////////////////////////////////////////////////////////////
91
95
  // ABI item name
@@ -1,5 +1,6 @@
1
1
  import type { Abi } from 'abitype'
2
2
 
3
+ import type { BlockNumber, BlockTag } from './block.js'
3
4
  import type { MaybeExtractEventArgsFromAbi } from './contract.js'
4
5
  import type { EIP1193RequestFn, PublicRpcSchema } from './eip1193.js'
5
6
  import type { Hex } from './misc.js'
@@ -16,42 +17,47 @@ type FilterRpcSchema = Filter_<
16
17
 
17
18
  export type Filter<
18
19
  TFilterType extends FilterType = 'event',
19
- TAbi extends Abi | readonly unknown[] = Abi,
20
+ TAbi extends Abi | readonly unknown[] | undefined = undefined,
20
21
  TEventName extends string | undefined = undefined,
21
22
  TArgs extends
22
23
  | MaybeExtractEventArgsFromAbi<TAbi, TEventName>
23
24
  | undefined = MaybeExtractEventArgsFromAbi<TAbi, TEventName>,
24
25
  TStrict extends boolean | undefined = undefined,
26
+ TFromBlock extends BlockNumber | BlockTag | undefined = undefined,
27
+ TToBlock extends BlockNumber | BlockTag | undefined = undefined,
25
28
  > = {
26
29
  id: Hex
27
30
  request: EIP1193RequestFn<FilterRpcSchema>
28
31
  type: TFilterType
29
32
  } & (TFilterType extends 'event'
30
- ? TAbi extends Abi
31
- ? undefined extends TEventName
32
- ? {
33
- abi: TAbi
34
- args?: never
35
- eventName?: never
36
- strict: TStrict
37
- }
38
- : TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName>
39
- ? {
40
- abi: TAbi
41
- args: TArgs
42
- eventName: TEventName
43
- strict: TStrict
44
- }
33
+ ? {
34
+ fromBlock?: TFromBlock
35
+ toBlock?: TToBlock
36
+ } & (TAbi extends Abi
37
+ ? undefined extends TEventName
38
+ ? {
39
+ abi: TAbi
40
+ args?: never
41
+ eventName?: never
42
+ strict: TStrict
43
+ }
44
+ : TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName>
45
+ ? {
46
+ abi: TAbi
47
+ args: TArgs
48
+ eventName: TEventName
49
+ strict: TStrict
50
+ }
51
+ : {
52
+ abi: TAbi
53
+ args?: never
54
+ eventName: TEventName
55
+ strict: TStrict
56
+ }
45
57
  : {
46
- abi: TAbi
58
+ abi?: never
47
59
  args?: never
48
- eventName: TEventName
49
- strict: TStrict
50
- }
51
- : {
52
- abi?: never
53
- args?: never
54
- eventName?: never
55
- strict?: never
56
- }
60
+ eventName?: never
61
+ strict?: never
62
+ })
57
63
  : {})
@@ -12,6 +12,15 @@ export type Formatters = {
12
12
  transactionRequest?: Formatter<'transactionRequest'>
13
13
  }
14
14
 
15
+ export type ExtractFormatterExclude<
16
+ TChain extends Chain | undefined,
17
+ TType extends keyof Formatters,
18
+ > = TChain extends Chain<infer _Formatters extends Formatters>
19
+ ? _Formatters[TType] extends { exclude: infer Exclude }
20
+ ? Extract<Exclude, string[]>[number]
21
+ : ''
22
+ : ''
23
+
15
24
  export type ExtractFormatterParameters<
16
25
  TChain extends Chain | undefined,
17
26
  TType extends keyof Formatters,
package/src/types/log.ts CHANGED
@@ -15,9 +15,12 @@ import type { Hash, Hex } from './misc.js'
15
15
  export type Log<
16
16
  TQuantity = bigint,
17
17
  TIndex = number,
18
+ TPending extends boolean = boolean,
18
19
  TAbiEvent extends AbiEvent | undefined = undefined,
19
20
  TStrict extends boolean | undefined = undefined,
20
- TAbi extends Abi | readonly unknown[] = [TAbiEvent],
21
+ TAbi extends Abi | readonly unknown[] | undefined = TAbiEvent extends AbiEvent
22
+ ? [TAbiEvent]
23
+ : undefined,
21
24
  TEventName extends string | undefined = TAbiEvent extends AbiEvent
22
25
  ? TAbiEvent['name']
23
26
  : undefined,
@@ -25,17 +28,17 @@ export type Log<
25
28
  /** The address from which this log originated */
26
29
  address: Address
27
30
  /** Hash of block containing this log or `null` if pending */
28
- blockHash: Hash | null
31
+ blockHash: TPending extends true ? null : Hash
29
32
  /** Number of block containing this log or `null` if pending */
30
- blockNumber: TQuantity | null
33
+ blockNumber: TPending extends true ? null : TQuantity
31
34
  /** Contains the non-indexed arguments of the log */
32
35
  data: Hex
33
36
  /** Index of this log within its block or `null` if pending */
34
- logIndex: TIndex | null
37
+ logIndex: TPending extends true ? null : TIndex
35
38
  /** Hash of the transaction that created this log or `null` if pending */
36
- transactionHash: Hash | null
39
+ transactionHash: TPending extends true ? null : Hash
37
40
  /** Index of the transaction that created this log or `null` if pending */
38
- transactionIndex: TIndex | null
41
+ transactionIndex: TPending extends true ? null : TIndex
39
42
  /** `true` if this filter has been destroyed and is invalid */
40
43
  removed: boolean
41
44
  } & GetInferredLogValues<TAbiEvent, TAbi, TEventName, TStrict>
@@ -79,7 +82,9 @@ type GetTopics<
79
82
 
80
83
  type GetInferredLogValues<
81
84
  TAbiEvent extends AbiEvent | undefined = undefined,
82
- TAbi extends Abi | readonly unknown[] = [TAbiEvent],
85
+ TAbi extends Abi | readonly unknown[] | undefined = TAbiEvent extends AbiEvent
86
+ ? [TAbiEvent]
87
+ : undefined,
83
88
  TEventName extends string | undefined = TAbiEvent extends AbiEvent
84
89
  ? TAbiEvent['name']
85
90
  : undefined,
@@ -110,7 +115,7 @@ type GetInferredLogValues<
110
115
  [TName in _EventNames]: {
111
116
  args: GetEventArgs<
112
117
  TAbi,
113
- string,
118
+ TName,
114
119
  {
115
120
  EnableUnion: false
116
121
  IndexedOnly: false
package/src/types/misc.ts CHANGED
@@ -9,7 +9,10 @@ export type SignableMessage =
9
9
  raw: Hex | ByteArray
10
10
  }
11
11
  export type Signature = {
12
+ // TODO(v2): Make `bigint`
12
13
  r: Hex
14
+ // TODO(v2): Make `bigint`
13
15
  s: Hex
16
+ // TODO(v2): `v` to `recovery`
14
17
  v: bigint
15
18
  }
package/src/types/rpc.ts CHANGED
@@ -1,4 +1,10 @@
1
- import type { Block, BlockIdentifier, BlockNumber, Uncle } from './block.js'
1
+ import type {
2
+ Block,
3
+ BlockIdentifier,
4
+ BlockNumber,
5
+ BlockTag,
6
+ Uncle,
7
+ } from './block.js'
2
8
  import type { FeeHistory, FeeValues } from './fee.js'
3
9
  import type { Log } from './log.js'
4
10
  import type {
@@ -17,7 +23,15 @@ export type Quantity = `0x${string}`
17
23
  export type Status = '0x0' | '0x1'
18
24
  export type TransactionType = '0x0' | '0x1' | '0x2' | (string & {})
19
25
 
20
- export type RpcBlock = Block<Quantity, RpcTransaction>
26
+ export type RpcBlock<
27
+ TBlockTag extends BlockTag = BlockTag,
28
+ TIncludeTransactions extends boolean = boolean,
29
+ > = Block<
30
+ Quantity,
31
+ TIncludeTransactions,
32
+ TBlockTag,
33
+ RpcTransaction<TBlockTag extends 'pending' ? true : false>
34
+ >
21
35
  export type RpcBlockNumber = BlockNumber<Quantity>
22
36
  export type RpcBlockIdentifier = BlockIdentifier<Quantity>
23
37
  export type RpcUncle = Uncle<Quantity>
@@ -34,9 +48,9 @@ export type RpcTransactionRequest =
34
48
  | TransactionRequestLegacy<Quantity, Index, '0x0'>
35
49
  | TransactionRequestEIP2930<Quantity, Index, '0x1'>
36
50
  | TransactionRequestEIP1559<Quantity, Index, '0x2'>
37
- export type RpcTransaction = UnionOmit<
38
- | TransactionLegacy<Quantity, Index, '0x0'>
39
- | TransactionEIP2930<Quantity, Index, '0x1'>
40
- | TransactionEIP1559<Quantity, Index, '0x2'>,
51
+ export type RpcTransaction<TPending extends boolean = boolean> = UnionOmit<
52
+ | TransactionLegacy<Quantity, Index, TPending, '0x0'>
53
+ | TransactionEIP2930<Quantity, Index, TPending, '0x1'>
54
+ | TransactionEIP1559<Quantity, Index, TPending, '0x2'>,
41
55
  'typeHex'
42
56
  >
@@ -47,11 +47,15 @@ export type TransactionReceipt<
47
47
  type: TType
48
48
  }
49
49
 
50
- export type TransactionBase<TQuantity = bigint, TIndex = number> = {
50
+ export type TransactionBase<
51
+ TQuantity = bigint,
52
+ TIndex = number,
53
+ TPending extends boolean = boolean,
54
+ > = {
51
55
  /** Hash of block containing this transaction or `null` if pending */
52
- blockHash: Hash | null
56
+ blockHash: TPending extends true ? null : Hash
53
57
  /** Number of block containing this transaction or `null` if pending */
54
- blockNumber: TQuantity | null
58
+ blockNumber: TPending extends true ? null : TQuantity
55
59
  /** Transaction sender */
56
60
  from: Address
57
61
  /** Gas provided for transaction execution */
@@ -69,7 +73,7 @@ export type TransactionBase<TQuantity = bigint, TIndex = number> = {
69
73
  /** Transaction recipient or `null` if deploying a contract */
70
74
  to: Address | null
71
75
  /** Index of this transaction in the block or `null` if pending */
72
- transactionIndex: TIndex | null
76
+ transactionIndex: TPending extends true ? null : TIndex
73
77
  /** The type represented as hex. */
74
78
  typeHex: Hex | null
75
79
  /** ECDSA recovery ID */
@@ -80,8 +84,9 @@ export type TransactionBase<TQuantity = bigint, TIndex = number> = {
80
84
  export type TransactionLegacy<
81
85
  TQuantity = bigint,
82
86
  TIndex = number,
87
+ TPending extends boolean = boolean,
83
88
  TType = 'legacy',
84
- > = TransactionBase<TQuantity, TIndex> &
89
+ > = TransactionBase<TQuantity, TIndex, TPending> &
85
90
  FeeValuesLegacy<TQuantity> & {
86
91
  accessList?: never
87
92
  chainId?: TIndex
@@ -90,8 +95,9 @@ export type TransactionLegacy<
90
95
  export type TransactionEIP2930<
91
96
  TQuantity = bigint,
92
97
  TIndex = number,
98
+ TPending extends boolean = boolean,
93
99
  TType = 'eip2930',
94
- > = TransactionBase<TQuantity, TIndex> &
100
+ > = TransactionBase<TQuantity, TIndex, TPending> &
95
101
  FeeValuesLegacy<TQuantity> & {
96
102
  accessList: AccessList
97
103
  chainId: TIndex
@@ -100,17 +106,22 @@ export type TransactionEIP2930<
100
106
  export type TransactionEIP1559<
101
107
  TQuantity = bigint,
102
108
  TIndex = number,
109
+ TPending extends boolean = boolean,
103
110
  TType = 'eip1559',
104
- > = TransactionBase<TQuantity, TIndex> &
111
+ > = TransactionBase<TQuantity, TIndex, TPending> &
105
112
  FeeValuesEIP1559<TQuantity> & {
106
113
  accessList: AccessList
107
114
  chainId: TIndex
108
115
  type: TType
109
116
  }
110
- export type Transaction<TQuantity = bigint, TIndex = number> =
111
- | TransactionLegacy<TQuantity, TIndex>
112
- | TransactionEIP2930<TQuantity, TIndex>
113
- | TransactionEIP1559<TQuantity, TIndex>
117
+ export type Transaction<
118
+ TQuantity = bigint,
119
+ TIndex = number,
120
+ TPending extends boolean = boolean,
121
+ > =
122
+ | TransactionLegacy<TQuantity, TIndex, TPending>
123
+ | TransactionEIP2930<TQuantity, TIndex, TPending>
124
+ | TransactionEIP1559<TQuantity, TIndex, TPending>
114
125
 
115
126
  export type TransactionRequestBase<TQuantity = bigint, TIndex = number> = {
116
127
  /** Contract code or a hashed method call with encoded args */
@@ -104,6 +104,7 @@ function encode<TPackedAbiType extends PackedAbiType | unknown>(
104
104
  for (let i = 0; i < value.length; i++) {
105
105
  data.push(encode(childType, value[i], true))
106
106
  }
107
+ if (data.length === 0) return '0x'
107
108
  return concat(data)
108
109
  }
109
110
 
@@ -1,14 +1,41 @@
1
- import type { Block } from '../../types/block.js'
1
+ import type { Block, BlockTag } from '../../types/block.js'
2
2
  import type { Chain } from '../../types/chain.js'
3
- import type { ExtractFormatterReturnType } from '../../types/formatter.js'
3
+ import type {
4
+ ExtractFormatterExclude,
5
+ ExtractFormatterReturnType,
6
+ } from '../../types/formatter.js'
7
+ import type { Hash } from '../../types/misc.js'
4
8
  import type { RpcBlock } from '../../types/rpc.js'
9
+ import type { Prettify } from '../../types/utils.js'
5
10
 
6
11
  import { defineFormatter } from './formatter.js'
7
- import { formatTransaction } from './transaction.js'
12
+ import { type FormattedTransaction, formatTransaction } from './transaction.js'
13
+
14
+ type BlockPendingDependencies = 'hash' | 'logsBloom' | 'nonce' | 'number'
8
15
 
9
16
  export type FormattedBlock<
10
17
  TChain extends Chain | undefined = Chain | undefined,
11
- > = ExtractFormatterReturnType<TChain, 'block', Block>
18
+ TIncludeTransactions extends boolean = boolean,
19
+ TBlockTag extends BlockTag = BlockTag,
20
+ _FormatterReturnType = ExtractFormatterReturnType<
21
+ TChain,
22
+ 'block',
23
+ Block<bigint, TIncludeTransactions>
24
+ >,
25
+ _ExcludedPendingDependencies extends string = BlockPendingDependencies &
26
+ ExtractFormatterExclude<TChain, 'block'>,
27
+ _Formatted = Omit<_FormatterReturnType, BlockPendingDependencies> & {
28
+ [K in _ExcludedPendingDependencies]: never
29
+ } & Pick<
30
+ Block<bigint, TIncludeTransactions, TBlockTag>,
31
+ BlockPendingDependencies
32
+ >,
33
+ _Transactions = TIncludeTransactions extends true
34
+ ? Prettify<FormattedTransaction<TChain, TBlockTag>>[]
35
+ : Hash[],
36
+ > = Omit<_Formatted, 'transactions'> & {
37
+ transactions: _Transactions
38
+ }
12
39
 
13
40
  export function formatBlock(block: Partial<RpcBlock>) {
14
41
  const transactions = block.transactions?.map((transaction) => {
@@ -16,6 +16,7 @@ export function defineFormatter<TType extends string, TParameters, TReturnType>(
16
16
  format: (_: TOverrideParameters) => TOverrideReturnType
17
17
  }) => {
18
18
  return {
19
+ exclude,
19
20
  format: (args: TParameters & TOverrideParameters) => {
20
21
  const formatted = format(args)
21
22
  if (exclude) {
@@ -1,13 +1,36 @@
1
+ import type { BlockTag } from '../../types/block.js'
1
2
  import type { Chain } from '../../types/chain.js'
2
- import type { ExtractFormatterReturnType } from '../../types/formatter.js'
3
+ import type {
4
+ ExtractFormatterExclude,
5
+ ExtractFormatterReturnType,
6
+ } from '../../types/formatter.js'
3
7
  import type { RpcTransaction } from '../../types/rpc.js'
4
8
  import type { Transaction } from '../../types/transaction.js'
9
+ import type { UnionOmit } from '../../types/utils.js'
5
10
  import { hexToNumber } from '../encoding/fromHex.js'
6
11
  import { defineFormatter } from './formatter.js'
7
12
 
13
+ type TransactionPendingDependencies =
14
+ | 'blockHash'
15
+ | 'blockNumber'
16
+ | 'transactionIndex'
17
+
8
18
  export type FormattedTransaction<
9
19
  TChain extends Chain | undefined = Chain | undefined,
10
- > = ExtractFormatterReturnType<TChain, 'transaction', Transaction>
20
+ TBlockTag extends BlockTag = BlockTag,
21
+ _FormatterReturnType = ExtractFormatterReturnType<
22
+ TChain,
23
+ 'transaction',
24
+ Transaction
25
+ >,
26
+ _ExcludedPendingDependencies extends string = TransactionPendingDependencies &
27
+ ExtractFormatterExclude<TChain, 'transaction'>,
28
+ > = UnionOmit<_FormatterReturnType, TransactionPendingDependencies> & {
29
+ [K in _ExcludedPendingDependencies]: never
30
+ } & Pick<
31
+ Transaction<bigint, number, TBlockTag extends 'pending' ? true : false>,
32
+ TransactionPendingDependencies
33
+ >
11
34
 
12
35
  export const transactionType = {
13
36
  '0x0': 'legacy',
@@ -27,8 +27,8 @@ export function getCache<TData>(cacheKey: string) {
27
27
  export type WithCacheParameters = {
28
28
  /** The key to cache the data against. */
29
29
  cacheKey: string
30
- /** The maximum age (in ms) of the cached value. Default: Infinity (no expiry) */
31
- maxAge?: number
30
+ /** The time that cached data will remain in memory. Default: Infinity (no expiry) */
31
+ cacheTime?: number
32
32
  }
33
33
 
34
34
  /**
@@ -37,7 +37,7 @@ export type WithCacheParameters = {
37
37
  */
38
38
  export async function withCache<TData>(
39
39
  fn: () => Promise<TData>,
40
- { cacheKey, maxAge = Infinity }: WithCacheParameters,
40
+ { cacheKey, cacheTime = Infinity }: WithCacheParameters,
41
41
  ) {
42
42
  const cache = getCache<TData>(cacheKey)
43
43
 
@@ -45,9 +45,9 @@ export async function withCache<TData>(
45
45
  // and do not invoke the promise.
46
46
  // If the max age is 0, the cache is disabled.
47
47
  const response = cache.response.get()
48
- if (response && maxAge > 0) {
48
+ if (response && cacheTime > 0) {
49
49
  const age = new Date().getTime() - response.created.getTime()
50
- if (age < maxAge) return response.data
50
+ if (age < cacheTime) return response.data
51
51
  }
52
52
 
53
53
  let promise = cache.promise.get()