viem 2.9.13 → 2.9.15

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 (175) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/_cjs/actions/index.js +2 -1
  3. package/_cjs/actions/index.js.map +1 -1
  4. package/_cjs/actions/public/call.js.map +1 -1
  5. package/_cjs/actions/public/estimateGas.js +5 -3
  6. package/_cjs/actions/public/estimateGas.js.map +1 -1
  7. package/_cjs/actions/wallet/prepareTransactionRequest.js +47 -7
  8. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  9. package/_cjs/actions/wallet/sendTransaction.js +1 -0
  10. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  11. package/_cjs/chains/definitions/astarZkEVM.js +1 -1
  12. package/_cjs/chains/definitions/astarZkyoto.js +1 -1
  13. package/_cjs/chains/definitions/astarZkyoto.js.map +1 -1
  14. package/_cjs/chains/definitions/filecoinCalibration.js +1 -0
  15. package/_cjs/chains/definitions/filecoinCalibration.js.map +1 -1
  16. package/_cjs/chains/definitions/filecoinHyperspace.js +1 -0
  17. package/_cjs/chains/definitions/filecoinHyperspace.js.map +1 -1
  18. package/_cjs/chains/index.js +5 -7
  19. package/_cjs/chains/index.js.map +1 -1
  20. package/_cjs/errors/version.js +1 -1
  21. package/_cjs/utils/blob/blobsToCommitments.js.map +1 -1
  22. package/_cjs/utils/blob/commitmentsToVersionedHashes.js.map +1 -1
  23. package/_cjs/utils/blob/sidecarsToVersionedHashes.js.map +1 -1
  24. package/_cjs/utils/blob/toBlobSidecars.js.map +1 -1
  25. package/_cjs/utils/blob/toBlobs.js.map +1 -1
  26. package/_cjs/utils/formatters/transactionRequest.js +2 -0
  27. package/_cjs/utils/formatters/transactionRequest.js.map +1 -1
  28. package/_cjs/utils/transaction/serializeTransaction.js +10 -6
  29. package/_cjs/utils/transaction/serializeTransaction.js.map +1 -1
  30. package/_esm/actions/index.js +1 -1
  31. package/_esm/actions/index.js.map +1 -1
  32. package/_esm/actions/public/call.js.map +1 -1
  33. package/_esm/actions/public/estimateGas.js +8 -3
  34. package/_esm/actions/public/estimateGas.js.map +1 -1
  35. package/_esm/actions/wallet/prepareTransactionRequest.js +49 -9
  36. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  37. package/_esm/actions/wallet/sendTransaction.js +2 -1
  38. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  39. package/_esm/chains/definitions/astarZkEVM.js +1 -1
  40. package/_esm/chains/definitions/astarZkyoto.js +1 -1
  41. package/_esm/chains/definitions/astarZkyoto.js.map +1 -1
  42. package/_esm/chains/definitions/filecoinCalibration.js +1 -0
  43. package/_esm/chains/definitions/filecoinCalibration.js.map +1 -1
  44. package/_esm/chains/definitions/filecoinHyperspace.js +1 -0
  45. package/_esm/chains/definitions/filecoinHyperspace.js.map +1 -1
  46. package/_esm/chains/index.js +0 -1
  47. package/_esm/chains/index.js.map +1 -1
  48. package/_esm/errors/version.js +1 -1
  49. package/_esm/utils/blob/blobsToCommitments.js.map +1 -1
  50. package/_esm/utils/blob/commitmentsToVersionedHashes.js.map +1 -1
  51. package/_esm/utils/blob/sidecarsToVersionedHashes.js.map +1 -1
  52. package/_esm/utils/blob/toBlobSidecars.js.map +1 -1
  53. package/_esm/utils/blob/toBlobs.js.map +1 -1
  54. package/_esm/utils/formatters/transactionRequest.js +2 -0
  55. package/_esm/utils/formatters/transactionRequest.js.map +1 -1
  56. package/_esm/utils/transaction/serializeTransaction.js +10 -6
  57. package/_esm/utils/transaction/serializeTransaction.js.map +1 -1
  58. package/_types/actions/index.d.ts +1 -1
  59. package/_types/actions/index.d.ts.map +1 -1
  60. package/_types/actions/public/call.d.ts +2 -3
  61. package/_types/actions/public/call.d.ts.map +1 -1
  62. package/_types/actions/public/estimateGas.d.ts.map +1 -1
  63. package/_types/actions/wallet/prepareTransactionRequest.d.ts +7 -6
  64. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  65. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  66. package/_types/celo/chainConfig.d.ts +350 -38
  67. package/_types/celo/chainConfig.d.ts.map +1 -1
  68. package/_types/celo/formatters.d.ts +175 -19
  69. package/_types/celo/formatters.d.ts.map +1 -1
  70. package/_types/chains/definitions/ancient8.d.ts +15 -15
  71. package/_types/chains/definitions/ancient8Sepolia.d.ts +15 -15
  72. package/_types/chains/definitions/astarZkEVM.d.ts +1 -1
  73. package/_types/chains/definitions/astarZkyoto.d.ts +1 -1
  74. package/_types/chains/definitions/base.d.ts +15 -15
  75. package/_types/chains/definitions/baseGoerli.d.ts +15 -15
  76. package/_types/chains/definitions/baseSepolia.d.ts +15 -15
  77. package/_types/chains/definitions/celo.d.ts +350 -38
  78. package/_types/chains/definitions/celo.d.ts.map +1 -1
  79. package/_types/chains/definitions/celoAlfajores.d.ts +350 -38
  80. package/_types/chains/definitions/celoAlfajores.d.ts.map +1 -1
  81. package/_types/chains/definitions/filecoinCalibration.d.ts +1 -1
  82. package/_types/chains/definitions/filecoinCalibration.d.ts.map +1 -1
  83. package/_types/chains/definitions/filecoinHyperspace.d.ts +1 -1
  84. package/_types/chains/definitions/filecoinHyperspace.d.ts.map +1 -1
  85. package/_types/chains/definitions/fraxtal.d.ts +15 -15
  86. package/_types/chains/definitions/fraxtalTestnet.d.ts +15 -15
  87. package/_types/chains/definitions/liskSepolia.d.ts +15 -15
  88. package/_types/chains/definitions/optimism.d.ts +15 -15
  89. package/_types/chains/definitions/optimismGoerli.d.ts +15 -15
  90. package/_types/chains/definitions/optimismSepolia.d.ts +15 -15
  91. package/_types/chains/definitions/pgn.d.ts +15 -15
  92. package/_types/chains/definitions/pgnTestnet.d.ts +15 -15
  93. package/_types/chains/definitions/rss3.d.ts +15 -15
  94. package/_types/chains/definitions/rss3Sepolia.d.ts +15 -15
  95. package/_types/chains/definitions/zkSync.d.ts +144 -0
  96. package/_types/chains/definitions/zkSync.d.ts.map +1 -1
  97. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts +144 -0
  98. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts.map +1 -1
  99. package/_types/chains/definitions/zkSyncLocalNode.d.ts +144 -0
  100. package/_types/chains/definitions/zkSyncLocalNode.d.ts.map +1 -1
  101. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +144 -0
  102. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts.map +1 -1
  103. package/_types/chains/definitions/zkSyncTestnet.d.ts +144 -0
  104. package/_types/chains/definitions/zkSyncTestnet.d.ts.map +1 -1
  105. package/_types/chains/definitions/zora.d.ts +15 -15
  106. package/_types/chains/definitions/zoraSepolia.d.ts +15 -15
  107. package/_types/chains/definitions/zoraTestnet.d.ts +15 -15
  108. package/_types/chains/index.d.ts +0 -1
  109. package/_types/chains/index.d.ts.map +1 -1
  110. package/_types/errors/version.d.ts +1 -1
  111. package/_types/op-stack/actions/getTimeToNextGame.d.ts +1 -1
  112. package/_types/op-stack/actions/getTimeToNextL2Output.d.ts +1 -1
  113. package/_types/op-stack/actions/getTimeToProve.d.ts +1 -1
  114. package/_types/op-stack/actions/waitForNextGame.d.ts +1 -1
  115. package/_types/op-stack/actions/waitForNextL2Output.d.ts +1 -1
  116. package/_types/op-stack/chainConfig.d.ts +15 -15
  117. package/_types/op-stack/formatters.d.ts +15 -15
  118. package/_types/types/transaction.d.ts +16 -2
  119. package/_types/types/transaction.d.ts.map +1 -1
  120. package/_types/utils/blob/blobsToCommitments.d.ts +4 -4
  121. package/_types/utils/blob/blobsToCommitments.d.ts.map +1 -1
  122. package/_types/utils/blob/blobsToProofs.d.ts +2 -2
  123. package/_types/utils/blob/blobsToProofs.d.ts.map +1 -1
  124. package/_types/utils/blob/commitmentsToVersionedHashes.d.ts +4 -4
  125. package/_types/utils/blob/commitmentsToVersionedHashes.d.ts.map +1 -1
  126. package/_types/utils/blob/sidecarsToVersionedHashes.d.ts +1 -1
  127. package/_types/utils/blob/sidecarsToVersionedHashes.d.ts.map +1 -1
  128. package/_types/utils/blob/toBlobSidecars.d.ts +5 -5
  129. package/_types/utils/blob/toBlobSidecars.d.ts.map +1 -1
  130. package/_types/utils/blob/toBlobs.d.ts +1 -1
  131. package/_types/utils/blob/toBlobs.d.ts.map +1 -1
  132. package/_types/utils/formatters/transaction.d.ts +1 -1
  133. package/_types/utils/formatters/transactionRequest.d.ts +49 -1
  134. package/_types/utils/formatters/transactionRequest.d.ts.map +1 -1
  135. package/_types/utils/transaction/getTransactionType.d.ts +3 -3
  136. package/_types/utils/transaction/getTransactionType.d.ts.map +1 -1
  137. package/_types/utils/transaction/serializeTransaction.d.ts.map +1 -1
  138. package/_types/zksync/chainConfig.d.ts +144 -0
  139. package/_types/zksync/chainConfig.d.ts.map +1 -1
  140. package/_types/zksync/formatters.d.ts +144 -0
  141. package/_types/zksync/formatters.d.ts.map +1 -1
  142. package/actions/index.ts +1 -0
  143. package/actions/public/call.ts +2 -3
  144. package/actions/public/estimateGas.ts +9 -7
  145. package/actions/wallet/prepareTransactionRequest.ts +73 -17
  146. package/actions/wallet/sendTransaction.ts +2 -0
  147. package/chains/definitions/astarZkEVM.ts +1 -1
  148. package/chains/definitions/astarZkyoto.ts +1 -1
  149. package/chains/definitions/filecoinCalibration.ts +1 -0
  150. package/chains/definitions/filecoinHyperspace.ts +1 -0
  151. package/chains/index.ts +0 -1
  152. package/errors/version.ts +1 -1
  153. package/op-stack/actions/getTimeToNextGame.ts +1 -1
  154. package/op-stack/actions/getTimeToNextL2Output.ts +1 -1
  155. package/op-stack/actions/getTimeToProve.ts +1 -1
  156. package/op-stack/actions/waitForNextGame.ts +1 -1
  157. package/op-stack/actions/waitForNextL2Output.ts +1 -1
  158. package/package.json +1 -1
  159. package/types/transaction.ts +20 -2
  160. package/utils/blob/blobsToCommitments.ts +9 -7
  161. package/utils/blob/blobsToProofs.ts +10 -10
  162. package/utils/blob/commitmentsToVersionedHashes.ts +10 -8
  163. package/utils/blob/sidecarsToVersionedHashes.ts +3 -3
  164. package/utils/blob/toBlobSidecars.ts +14 -11
  165. package/utils/blob/toBlobs.ts +3 -3
  166. package/utils/formatters/transactionRequest.ts +2 -0
  167. package/utils/transaction/getTransactionType.ts +3 -3
  168. package/utils/transaction/serializeTransaction.ts +12 -6
  169. package/_cjs/chains/definitions/astarZkatana.js +0 -32
  170. package/_cjs/chains/definitions/astarZkatana.js.map +0 -1
  171. package/_esm/chains/definitions/astarZkatana.js +0 -29
  172. package/_esm/chains/definitions/astarZkatana.js.map +0 -1
  173. package/_types/chains/definitions/astarZkatana.d.ts +0 -34
  174. package/_types/chains/definitions/astarZkatana.d.ts.map +0 -1
  175. package/chains/definitions/astarZkatana.ts +0 -29
@@ -15,7 +15,7 @@ import {
15
15
  } from '../../actions/public/estimateGas.js'
16
16
  import {
17
17
  type GetBlockErrorType,
18
- getBlock,
18
+ getBlock as getBlock_,
19
19
  } from '../../actions/public/getBlock.js'
20
20
  import {
21
21
  type GetTransactionCountErrorType,
@@ -28,8 +28,8 @@ import {
28
28
  Eip1559FeesNotSupportedError,
29
29
  MaxFeePerGasTooLowError,
30
30
  } from '../../errors/fee.js'
31
- import type { Block, GetTransactionType } from '../../index.js'
32
31
  import type { DeriveAccount, GetAccountParameter } from '../../types/account.js'
32
+ import type { Block } from '../../types/block.js'
33
33
  import type { Chain, DeriveChain } from '../../types/chain.js'
34
34
  import type { GetChainParameter } from '../../types/chain.js'
35
35
  import type { GetTransactionRequestKzgParameter } from '../../types/kzg.js'
@@ -48,21 +48,39 @@ import type {
48
48
  UnionOmit,
49
49
  UnionRequiredBy,
50
50
  } from '../../types/utils.js'
51
+ import { blobsToCommitments } from '../../utils/blob/blobsToCommitments.js'
52
+ import { blobsToProofs } from '../../utils/blob/blobsToProofs.js'
53
+ import { commitmentsToVersionedHashes } from '../../utils/blob/commitmentsToVersionedHashes.js'
54
+ import { toBlobSidecars } from '../../utils/blob/toBlobSidecars.js'
51
55
  import type { FormattedTransactionRequest } from '../../utils/formatters/transactionRequest.js'
52
56
  import { getAction } from '../../utils/getAction.js'
53
- import type {
54
- AssertRequestErrorType,
55
- AssertRequestParameters,
57
+ import {
58
+ type AssertRequestErrorType,
59
+ type AssertRequestParameters,
60
+ assertRequest,
56
61
  } from '../../utils/transaction/assertRequest.js'
57
- import { assertRequest } from '../../utils/transaction/assertRequest.js'
58
- import { getTransactionType } from '../../utils/transaction/getTransactionType.js'
62
+ import {
63
+ type GetTransactionType,
64
+ getTransactionType,
65
+ } from '../../utils/transaction/getTransactionType.js'
59
66
  import { getChainId } from '../public/getChainId.js'
60
67
 
68
+ export const defaultParameters = [
69
+ 'blobVersionedHashes',
70
+ 'chainId',
71
+ 'fees',
72
+ 'gas',
73
+ 'nonce',
74
+ 'type',
75
+ ] as const
76
+
61
77
  export type PrepareTransactionRequestParameterType =
78
+ | 'blobVersionedHashes'
62
79
  | 'chainId'
63
80
  | 'fees'
64
81
  | 'gas'
65
82
  | 'nonce'
83
+ | 'sidecars'
66
84
  | 'type'
67
85
  type ParameterTypeToParameters<
68
86
  parameterType extends PrepareTransactionRequestParameterType,
@@ -77,7 +95,7 @@ export type PrepareTransactionRequestRequest<
77
95
  _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
78
96
  > = UnionOmit<FormattedTransactionRequest<_derivedChain>, 'from'> &
79
97
  GetTransactionRequestKzgParameter & {
80
- parameters?: PrepareTransactionRequestParameterType[] | undefined
98
+ parameters?: readonly PrepareTransactionRequestParameterType[] | undefined
81
99
  }
82
100
 
83
101
  export type PrepareTransactionRequestParameters<
@@ -135,7 +153,7 @@ export type PrepareTransactionRequestReturnType<
135
153
  accountOverride
136
154
  >,
137
155
  _derivedChain extends Chain | undefined = DeriveChain<chain, chainOverride>,
138
- _transactionType = request['type'] extends string
156
+ _transactionType = request['type'] extends string | undefined
139
157
  ? request['type']
140
158
  : GetTransactionType<request> extends 'legacy'
141
159
  ? unknown
@@ -160,9 +178,9 @@ export type PrepareTransactionRequestReturnType<
160
178
  : ExactPartial<_transactionRequest>
161
179
  > & { chainId?: number | undefined },
162
180
  ParameterTypeToParameters<
163
- request['parameters'] extends PrepareTransactionRequestParameterType[]
181
+ request['parameters'] extends readonly PrepareTransactionRequestParameterType[]
164
182
  ? request['parameters'][number]
165
- : PrepareTransactionRequestParameterType
183
+ : (typeof defaultParameters)[number]
166
184
  >
167
185
  > &
168
186
  (unknown extends request['kzg'] ? {} : Pick<request, 'kzg'>)
@@ -243,17 +261,57 @@ export async function prepareTransactionRequest<
243
261
  > {
244
262
  const {
245
263
  account: account_ = client.account,
264
+ blobs,
246
265
  chain,
247
266
  chainId,
248
267
  gas,
268
+ kzg,
249
269
  nonce,
250
- parameters = ['chainId', 'fees', 'gas', 'nonce', 'type'],
270
+ parameters = defaultParameters,
251
271
  type,
252
272
  } = args
253
273
  const account = account_ ? parseAccount(account_) : undefined
254
274
 
255
275
  const request = { ...args, ...(account ? { from: account?.address } : {}) }
256
276
 
277
+ let block: Block | undefined
278
+ async function getBlock(): Promise<Block> {
279
+ if (block) return block
280
+ block = await getAction(
281
+ client,
282
+ getBlock_,
283
+ 'getBlock',
284
+ )({ blockTag: 'latest' })
285
+ return block
286
+ }
287
+
288
+ if (
289
+ (parameters.includes('blobVersionedHashes') ||
290
+ parameters.includes('sidecars')) &&
291
+ blobs &&
292
+ kzg
293
+ ) {
294
+ const commitments = blobsToCommitments({ blobs, kzg })
295
+
296
+ if (parameters.includes('blobVersionedHashes')) {
297
+ const versionedHashes = commitmentsToVersionedHashes({
298
+ commitments,
299
+ to: 'hex',
300
+ })
301
+ request.blobVersionedHashes = versionedHashes
302
+ }
303
+ if (parameters.includes('sidecars')) {
304
+ const proofs = blobsToProofs({ blobs, commitments, kzg })
305
+ const sidecars = toBlobSidecars({
306
+ blobs,
307
+ commitments,
308
+ proofs,
309
+ to: 'hex',
310
+ })
311
+ request.sidecars = sidecars
312
+ }
313
+ }
314
+
257
315
  if (parameters.includes('chainId')) {
258
316
  if (chain) request.chainId = chain.id
259
317
  else if (typeof chainId !== 'undefined') request.chainId = chainId
@@ -270,11 +328,6 @@ export async function prepareTransactionRequest<
270
328
  blockTag: 'pending',
271
329
  })
272
330
 
273
- const block = await (() => {
274
- if (typeof request.type !== 'undefined') return
275
- return getAction(client, getBlock, 'getBlock')({ blockTag: 'latest' })
276
- })()
277
-
278
331
  if (
279
332
  (parameters.includes('fees') || parameters.includes('type')) &&
280
333
  typeof type === 'undefined'
@@ -285,6 +338,7 @@ export async function prepareTransactionRequest<
285
338
  ) as any
286
339
  } catch {
287
340
  // infer type from block
341
+ const block = await getBlock()
288
342
  request.type =
289
343
  typeof block?.baseFeePerGas === 'bigint' ? 'eip1559' : 'legacy'
290
344
  }
@@ -299,6 +353,7 @@ export async function prepareTransactionRequest<
299
353
  typeof request.maxFeePerGas === 'undefined' ||
300
354
  typeof request.maxPriorityFeePerGas === 'undefined'
301
355
  ) {
356
+ const block = await getBlock()
302
357
  const { maxFeePerGas, maxPriorityFeePerGas } =
303
358
  await internal_estimateFeesPerGas(client, {
304
359
  block: block as Block,
@@ -326,6 +381,7 @@ export async function prepareTransactionRequest<
326
381
  )
327
382
  throw new Eip1559FeesNotSupportedError()
328
383
 
384
+ const block = await getBlock()
329
385
  const { gasPrice: gasPrice_ } = await internal_estimateFeesPerGas(
330
386
  client,
331
387
  {
@@ -39,6 +39,7 @@ import {
39
39
  import { type GetChainIdErrorType, getChainId } from '../public/getChainId.js'
40
40
  import {
41
41
  type PrepareTransactionRequestErrorType,
42
+ defaultParameters,
42
43
  prepareTransactionRequest,
43
44
  } from './prepareTransactionRequest.js'
44
45
  import {
@@ -190,6 +191,7 @@ export async function sendTransaction<
190
191
  maxFeePerGas,
191
192
  maxPriorityFeePerGas,
192
193
  nonce,
194
+ parameters: [...defaultParameters, 'sidecars'],
193
195
  to,
194
196
  value,
195
197
  ...rest,
@@ -18,7 +18,7 @@ export const astarZkEVM = /*#__PURE__*/ defineChain({
18
18
  },
19
19
  contracts: {
20
20
  multicall3: {
21
- address: '0x36eabf148272BA81A5225C6a3637972F0EE17771',
21
+ address: '0xca11bde05977b3631167028862be2a173976ca11',
22
22
  blockCreated: 93528,
23
23
  },
24
24
  },
@@ -13,7 +13,7 @@ export const astarZkyoto = /*#__PURE__*/ defineChain({
13
13
  blockExplorers: {
14
14
  default: {
15
15
  name: 'zKyoto Explorer',
16
- url: 'https://astar-zkyoto.blockscout.com',
16
+ url: 'https://zkyoto.explorer.startale.com',
17
17
  },
18
18
  },
19
19
  contracts: {
@@ -17,4 +17,5 @@ export const filecoinCalibration = /*#__PURE__*/ defineChain({
17
17
  url: 'https://calibration.filscan.io',
18
18
  },
19
19
  },
20
+ testnet: true,
20
21
  })
@@ -17,4 +17,5 @@ export const filecoinHyperspace = /*#__PURE__*/ defineChain({
17
17
  url: 'https://hyperspace.filfox.info/en',
18
18
  },
19
19
  },
20
+ testnet: true,
20
21
  })
package/chains/index.ts CHANGED
@@ -14,7 +14,6 @@ export { astarZkyoto } from './definitions/astarZkyoto.js'
14
14
  export { arbitrumSepolia } from './definitions/arbitrumSepolia.js'
15
15
  export { areonNetwork } from './definitions/areonNetwork.js'
16
16
  export { areonNetworkTestnet } from './definitions/areonNetworkTestnet.js'
17
- export { astarZkatana } from './definitions/astarZkatana.js'
18
17
  export { aurora } from './definitions/aurora.js'
19
18
  export { auroraTestnet } from './definitions/auroraTestnet.js'
20
19
  export { auroria } from './definitions/auroria.js'
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.9.13'
1
+ export const version = '2.9.15'
@@ -20,7 +20,7 @@ export type GetTimeToNextGameParameters<
20
20
  'portal' | 'disputeGameFactory'
21
21
  > & {
22
22
  /**
23
- * The buffer to account for discrepencies between non-deterministic time intervals.
23
+ * The buffer to account for discrepancies between non-deterministic time intervals.
24
24
  * @default 1.1
25
25
  */
26
26
  intervalBuffer?: number | undefined
@@ -25,7 +25,7 @@ export type GetTimeToNextL2OutputParameters<
25
25
  > = GetChainParameter<chain, chainOverride> &
26
26
  GetContractAddressParameter<_derivedChain, 'l2OutputOracle'> & {
27
27
  /**
28
- * The buffer to account for discrepencies between non-deterministic time intervals.
28
+ * The buffer to account for discrepancies between non-deterministic time intervals.
29
29
  * @default 1.1
30
30
  */
31
31
  intervalBuffer?: number | undefined
@@ -41,7 +41,7 @@ export type GetTimeToProveParameters<
41
41
  >
42
42
  > & {
43
43
  /**
44
- * The buffer to account for discrepencies between non-deterministic time intervals.
44
+ * The buffer to account for discrepancies between non-deterministic time intervals.
45
45
  * @default 1.1
46
46
  */
47
47
  intervalBuffer?:
@@ -36,7 +36,7 @@ export type WaitForNextGameParameters<
36
36
  */
37
37
  limit?: number | undefined
38
38
  /**
39
- * The buffer to account for discrepencies between non-deterministic time intervals.
39
+ * The buffer to account for discrepancies between non-deterministic time intervals.
40
40
  * @default 1.1
41
41
  */
42
42
  intervalBuffer?: GetTimeToNextGameParameters['intervalBuffer'] | undefined
@@ -29,7 +29,7 @@ export type WaitForNextL2OutputParameters<
29
29
  > = GetChainParameter<chain, chainOverride> &
30
30
  GetContractAddressParameter<_derivedChain, 'l2OutputOracle'> & {
31
31
  /**
32
- * The buffer to account for discrepencies between non-deterministic time intervals.
32
+ * The buffer to account for discrepancies between non-deterministic time intervals.
33
33
  * @default 1.1
34
34
  */
35
35
  intervalBuffer?:
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.9.13",
4
+ "version": "2.9.15",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
@@ -226,6 +226,9 @@ export type TransactionRequestEIP4844<
226
226
  accessList?: AccessList | undefined
227
227
  /** The blobs associated with this transaction. */
228
228
  blobs: readonly Hex[] | readonly ByteArray[]
229
+ blobVersionedHashes?: readonly Hex[] | undefined
230
+ kzg?: Kzg | undefined
231
+ sidecars?: readonly BlobSidecar<Hex>[] | undefined
229
232
  type?: TTransactionType | undefined
230
233
  }
231
234
  export type TransactionRequest<TQuantity = bigint, TIndex = number> = OneOf<
@@ -235,6 +238,20 @@ export type TransactionRequest<TQuantity = bigint, TIndex = number> = OneOf<
235
238
  | TransactionRequestEIP4844<TQuantity, TIndex>
236
239
  >
237
240
 
241
+ export type TransactionRequestGeneric<
242
+ TQuantity = bigint,
243
+ TIndex = number,
244
+ > = TransactionRequestBase<TQuantity, TIndex> & {
245
+ accessList?: AccessList | undefined
246
+ blobs?: readonly Hex[] | readonly ByteArray[] | undefined
247
+ blobVersionedHashes?: readonly Hex[] | undefined
248
+ gasPrice?: TQuantity | undefined
249
+ maxFeePerBlobGas?: TQuantity | undefined
250
+ maxFeePerGas?: TQuantity | undefined
251
+ maxPriorityFeePerGas?: TQuantity | undefined
252
+ type?: string | undefined
253
+ }
254
+
238
255
  export type TransactionSerializedEIP1559 = `0x02${string}`
239
256
  export type TransactionSerializedEIP2930 = `0x01${string}`
240
257
  export type TransactionSerializedEIP4844 = `0x03${string}`
@@ -300,17 +317,18 @@ export type TransactionSerializableEIP4844<
300
317
  ExactPartial<FeeValuesEIP4844<TQuantity>> & {
301
318
  accessList?: AccessList | undefined
302
319
  chainId: number
320
+ sidecars?: readonly BlobSidecar<Hex>[] | false | undefined
303
321
  type?: 'eip4844' | undefined
304
322
  yParity?: number | undefined
305
323
  } & OneOf<
306
324
  | {
325
+ blobs?: readonly Hex[] | readonly ByteArray[] | undefined
307
326
  blobVersionedHashes: readonly Hex[]
308
- sidecars?: readonly BlobSidecar<Hex>[] | false | undefined
309
327
  }
310
328
  | {
311
329
  blobs: readonly Hex[] | readonly ByteArray[]
330
+ blobVersionedHashes?: readonly Hex[] | undefined
312
331
  kzg: Kzg
313
- sidecars?: false | undefined
314
332
  }
315
333
  >
316
334
 
@@ -7,11 +7,13 @@ import { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'
7
7
  type To = 'hex' | 'bytes'
8
8
 
9
9
  export type BlobsToCommitmentsParameters<
10
- blobs extends ByteArray[] | Hex[] = ByteArray[] | Hex[],
10
+ blobs extends readonly ByteArray[] | readonly Hex[] =
11
+ | readonly ByteArray[]
12
+ | readonly Hex[],
11
13
  to extends To | undefined = undefined,
12
14
  > = {
13
15
  /** Blobs to transform into commitments. */
14
- blobs: blobs | ByteArray[] | Hex[]
16
+ blobs: blobs | readonly ByteArray[] | readonly Hex[]
15
17
  /** KZG implementation. */
16
18
  kzg: Pick<Kzg, 'blobToKzgCommitment'>
17
19
  /** Return type. */
@@ -19,8 +21,8 @@ export type BlobsToCommitmentsParameters<
19
21
  }
20
22
 
21
23
  export type BlobsToCommitmentsReturnType<to extends To> =
22
- | (to extends 'bytes' ? ByteArray[] : never)
23
- | (to extends 'hex' ? Hex[] : never)
24
+ | (to extends 'bytes' ? readonly ByteArray[] : never)
25
+ | (to extends 'hex' ? readonly Hex[] : never)
24
26
 
25
27
  export type BlobsToCommitmentsErrorType =
26
28
  | HexToBytesErrorType
@@ -40,10 +42,10 @@ export type BlobsToCommitmentsErrorType =
40
42
  * ```
41
43
  */
42
44
  export function blobsToCommitments<
43
- const blobs extends ByteArray[] | Hex[],
45
+ const blobs extends readonly ByteArray[] | readonly Hex[],
44
46
  to extends To =
45
- | (blobs extends Hex[] ? 'hex' : never)
46
- | (blobs extends ByteArray[] ? 'bytes' : never),
47
+ | (blobs extends readonly Hex[] ? 'hex' : never)
48
+ | (blobs extends readonly ByteArray[] ? 'bytes' : never),
47
49
  >(
48
50
  parameters: BlobsToCommitmentsParameters<blobs, to>,
49
51
  ): BlobsToCommitmentsReturnType<to> {
@@ -7,15 +7,15 @@ import { type BytesToHexErrorType, bytesToHex } from '../encoding/toHex.js'
7
7
  type To = 'hex' | 'bytes'
8
8
 
9
9
  export type blobsToProofsParameters<
10
- blobs extends ByteArray[] | Hex[],
11
- commitments extends ByteArray[] | Hex[],
10
+ blobs extends readonly ByteArray[] | readonly Hex[],
11
+ commitments extends readonly ByteArray[] | readonly Hex[],
12
12
  to extends To =
13
- | (blobs extends Hex[] ? 'hex' : never)
14
- | (blobs extends ByteArray[] ? 'bytes' : never),
13
+ | (blobs extends readonly Hex[] ? 'hex' : never)
14
+ | (blobs extends readonly ByteArray[] ? 'bytes' : never),
15
15
  ///
16
16
  _blobsType =
17
- | (blobs extends Hex[] ? Hex[] : never)
18
- | (blobs extends ByteArray[] ? ByteArray[] : never),
17
+ | (blobs extends readonly Hex[] ? readonly Hex[] : never)
18
+ | (blobs extends readonly ByteArray[] ? readonly ByteArray[] : never),
19
19
  > = {
20
20
  /** Blobs to transform into proofs. */
21
21
  blobs: blobs
@@ -56,11 +56,11 @@ export type blobsToProofsErrorType =
56
56
  * ```
57
57
  */
58
58
  export function blobsToProofs<
59
- const blobs extends ByteArray[] | Hex[],
60
- const commitments extends ByteArray[] | Hex[],
59
+ const blobs extends readonly ByteArray[] | readonly Hex[],
60
+ const commitments extends readonly ByteArray[] | readonly Hex[],
61
61
  to extends To =
62
- | (blobs extends Hex[] ? 'hex' : never)
63
- | (blobs extends ByteArray[] ? 'bytes' : never),
62
+ | (blobs extends readonly Hex[] ? 'hex' : never)
63
+ | (blobs extends readonly ByteArray[] ? 'bytes' : never),
64
64
  >(
65
65
  parameters: blobsToProofsParameters<blobs, commitments, to>,
66
66
  ): blobsToProofsReturnType<to> {
@@ -8,11 +8,13 @@ import {
8
8
  type To = 'hex' | 'bytes'
9
9
 
10
10
  export type CommitmentsToVersionedHashesParameters<
11
- commitments extends Uint8Array[] | Hex[] = Uint8Array[] | Hex[],
11
+ commitments extends readonly Uint8Array[] | readonly Hex[] =
12
+ | readonly Uint8Array[]
13
+ | readonly Hex[],
12
14
  to extends To | undefined = undefined,
13
15
  > = {
14
16
  /** Commitments from blobs. */
15
- commitments: commitments | Uint8Array[] | Hex[]
17
+ commitments: commitments | readonly Uint8Array[] | readonly Hex[]
16
18
  /** Return type. */
17
19
  to?: to | To | undefined
18
20
  /** Version to tag onto the hashes. */
@@ -20,8 +22,8 @@ export type CommitmentsToVersionedHashesParameters<
20
22
  }
21
23
 
22
24
  export type CommitmentsToVersionedHashesReturnType<to extends To> =
23
- | (to extends 'bytes' ? ByteArray[] : never)
24
- | (to extends 'hex' ? Hex[] : never)
25
+ | (to extends 'bytes' ? readonly ByteArray[] : never)
26
+ | (to extends 'hex' ? readonly Hex[] : never)
25
27
 
26
28
  export type CommitmentsToVersionedHashesErrorType =
27
29
  | CommitmentToVersionedHashErrorType
@@ -45,10 +47,10 @@ export type CommitmentsToVersionedHashesErrorType =
45
47
  * ```
46
48
  */
47
49
  export function commitmentsToVersionedHashes<
48
- const commitments extends Uint8Array[] | Hex[],
50
+ const commitments extends readonly Uint8Array[] | readonly Hex[],
49
51
  to extends To =
50
- | (commitments extends Hex[] ? 'hex' : never)
51
- | (commitments extends ByteArray[] ? 'bytes' : never),
52
+ | (commitments extends readonly Hex[] ? 'hex' : never)
53
+ | (commitments extends readonly ByteArray[] ? 'bytes' : never),
52
54
  >(
53
55
  parameters: CommitmentsToVersionedHashesParameters<commitments, to>,
54
56
  ): CommitmentsToVersionedHashesReturnType<to> {
@@ -67,5 +69,5 @@ export function commitmentsToVersionedHashes<
67
69
  }) as any,
68
70
  )
69
71
  }
70
- return hashes as CommitmentsToVersionedHashesReturnType<to>
72
+ return hashes as any
71
73
  }
@@ -21,8 +21,8 @@ export type SidecarsToVersionedHashesParameters<
21
21
  }
22
22
 
23
23
  export type SidecarsToVersionedHashesReturnType<to extends To> =
24
- | (to extends 'bytes' ? ByteArray[] : never)
25
- | (to extends 'hex' ? Hex[] : never)
24
+ | (to extends 'bytes' ? readonly ByteArray[] : never)
25
+ | (to extends 'hex' ? readonly Hex[] : never)
26
26
 
27
27
  export type SidecarsToVersionedHashesErrorType =
28
28
  | CommitmentToVersionedHashErrorType
@@ -62,5 +62,5 @@ export function sidecarsToVersionedHashes<
62
62
  }) as any,
63
63
  )
64
64
  }
65
- return hashes as SidecarsToVersionedHashesReturnType<to>
65
+ return hashes as any
66
66
  }
@@ -14,14 +14,14 @@ type To = 'hex' | 'bytes'
14
14
 
15
15
  export type ToBlobSidecarsParameters<
16
16
  data extends Hex | ByteArray | undefined = undefined,
17
- blobs extends Hex[] | ByteArray[] | undefined = undefined,
17
+ blobs extends readonly Hex[] | readonly ByteArray[] | undefined = undefined,
18
18
  to extends To =
19
- | (blobs extends Hex[] ? 'hex' : never)
20
- | (blobs extends ByteArray[] ? 'bytes' : never),
19
+ | (blobs extends readonly Hex[] ? 'hex' : never)
20
+ | (blobs extends readonly ByteArray[] ? 'bytes' : never),
21
21
  ///
22
22
  _blobsType =
23
- | (blobs extends Hex[] ? Hex[] : never)
24
- | (blobs extends ByteArray[] ? ByteArray[] : never),
23
+ | (blobs extends readonly Hex[] ? readonly Hex[] : never)
24
+ | (blobs extends readonly ByteArray[] ? readonly ByteArray[] : never),
25
25
  > = {
26
26
  /** Return type. */
27
27
  to?: to | To | undefined
@@ -34,11 +34,11 @@ export type ToBlobSidecarsParameters<
34
34
  }
35
35
  | {
36
36
  /** Blobs. */
37
- blobs: blobs | Hex[] | ByteArray[]
37
+ blobs: blobs | readonly Hex[] | readonly ByteArray[]
38
38
  /** Commitment for each blob. */
39
- commitments: _blobsType | Hex[] | ByteArray[]
39
+ commitments: _blobsType | readonly Hex[] | readonly ByteArray[]
40
40
  /** Proof for each blob. */
41
- proofs: _blobsType | Hex[] | ByteArray[]
41
+ proofs: _blobsType | readonly Hex[] | readonly ByteArray[]
42
42
  }
43
43
  >
44
44
 
@@ -81,12 +81,15 @@ export type ToBlobSidecarsErrorType =
81
81
  */
82
82
  export function toBlobSidecars<
83
83
  const data extends Hex | ByteArray | undefined = undefined,
84
- const blobs extends Hex[] | ByteArray[] | undefined = undefined,
84
+ const blobs extends
85
+ | readonly Hex[]
86
+ | readonly ByteArray[]
87
+ | undefined = undefined,
85
88
  to extends To =
86
89
  | (data extends Hex ? 'hex' : never)
87
90
  | (data extends ByteArray ? 'bytes' : never)
88
- | (blobs extends Hex[] ? 'hex' : never)
89
- | (blobs extends ByteArray[] ? 'bytes' : never),
91
+ | (blobs extends readonly Hex[] ? 'hex' : never)
92
+ | (blobs extends readonly ByteArray[] ? 'bytes' : never),
90
93
  >(
91
94
  parameters: ToBlobSidecarsParameters<data, blobs, to>,
92
95
  ): ToBlobSidecarsReturnType<to> {
@@ -30,8 +30,8 @@ export type ToBlobsParameters<
30
30
  }
31
31
 
32
32
  export type ToBlobsReturnType<to extends To> =
33
- | (to extends 'bytes' ? ByteArray[] : never)
34
- | (to extends 'hex' ? Hex[] : never)
33
+ | (to extends 'bytes' ? readonly ByteArray[] : never)
34
+ | (to extends 'hex' ? readonly Hex[] : never)
35
35
 
36
36
  export type ToBlobsErrorType =
37
37
  | BlobSizeTooLargeErrorType
@@ -109,5 +109,5 @@ export function toBlobs<
109
109
  to === 'bytes'
110
110
  ? blobs.map((x) => x.bytes)
111
111
  : blobs.map((x) => bytesToHex(x.bytes))
112
- ) as ToBlobsReturnType<to>
112
+ ) as any
113
113
  }
@@ -34,6 +34,8 @@ export function formatTransactionRequest(
34
34
 
35
35
  if (typeof request.accessList !== 'undefined')
36
36
  rpcRequest.accessList = request.accessList
37
+ if (typeof request.blobVersionedHashes !== 'undefined')
38
+ rpcRequest.blobVersionedHashes = request.blobVersionedHashes
37
39
  if (typeof request.blobs !== 'undefined') {
38
40
  if (typeof request.blobs[0] !== 'string')
39
41
  rpcRequest.blobs = (request.blobs as ByteArray[]).map((x) =>
@@ -9,10 +9,10 @@ import type {
9
9
  FeeValuesLegacy,
10
10
  } from '../../index.js'
11
11
  import type {
12
- TransactionRequest,
13
12
  TransactionRequestEIP1559,
14
13
  TransactionRequestEIP2930,
15
14
  TransactionRequestEIP4844,
15
+ TransactionRequestGeneric,
16
16
  TransactionRequestLegacy,
17
17
  TransactionSerializableEIP1559,
18
18
  TransactionSerializableEIP2930,
@@ -79,7 +79,7 @@ type EIP4844Properties = Assign<
79
79
 
80
80
  export type GetTransactionType<
81
81
  transaction extends OneOf<
82
- TransactionSerializableGeneric | TransactionRequest
82
+ TransactionSerializableGeneric | TransactionRequestGeneric
83
83
  > = TransactionSerializableGeneric,
84
84
  result =
85
85
  | (transaction extends
@@ -115,7 +115,7 @@ export type GetTransationTypeErrorType =
115
115
 
116
116
  export function getTransactionType<
117
117
  const transaction extends OneOf<
118
- TransactionSerializableGeneric | TransactionRequest
118
+ TransactionSerializableGeneric | TransactionRequestGeneric
119
119
  >,
120
120
  >(transaction: transaction): GetTransactionType<transaction> {
121
121
  if (transaction.type)
@@ -157,7 +157,11 @@ function serializeTransactionEIP4844(
157
157
  let blobVersionedHashes = transaction.blobVersionedHashes
158
158
  let sidecars = transaction.sidecars
159
159
  // If `blobs` are passed, we will need to compute the KZG commitments & proofs.
160
- if (transaction.blobs) {
160
+ if (
161
+ transaction.blobs &&
162
+ (typeof blobVersionedHashes === 'undefined' ||
163
+ typeof sidecars === 'undefined')
164
+ ) {
161
165
  const blobs = (
162
166
  typeof transaction.blobs[0] === 'string'
163
167
  ? transaction.blobs
@@ -168,13 +172,15 @@ function serializeTransactionEIP4844(
168
172
  blobs,
169
173
  kzg,
170
174
  })
171
- const proofs = blobsToProofs({ blobs, commitments, kzg })
172
- blobVersionedHashes = commitmentsToVersionedHashes({
173
- commitments,
174
- })
175
175
 
176
- if (sidecars !== false)
176
+ if (typeof blobVersionedHashes === 'undefined')
177
+ blobVersionedHashes = commitmentsToVersionedHashes({
178
+ commitments,
179
+ })
180
+ if (typeof sidecars === 'undefined') {
181
+ const proofs = blobsToProofs({ blobs, commitments, kzg })
177
182
  sidecars = toBlobSidecars({ blobs, commitments, proofs })
183
+ }
178
184
  }
179
185
 
180
186
  const serializedAccessList = serializeAccessList(accessList)