viem 0.0.0-main.20240408T054443 → 0.0.0-main.20240408T061242

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 (121) hide show
  1. package/_cjs/actions/index.js +2 -1
  2. package/_cjs/actions/index.js.map +1 -1
  3. package/_cjs/actions/public/estimateGas.js +5 -3
  4. package/_cjs/actions/public/estimateGas.js.map +1 -1
  5. package/_cjs/actions/wallet/prepareTransactionRequest.js +47 -7
  6. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  7. package/_cjs/actions/wallet/sendTransaction.js +1 -0
  8. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  9. package/_cjs/errors/version.js +1 -1
  10. package/_cjs/utils/blob/blobsToCommitments.js.map +1 -1
  11. package/_cjs/utils/blob/commitmentsToVersionedHashes.js.map +1 -1
  12. package/_cjs/utils/blob/sidecarsToVersionedHashes.js.map +1 -1
  13. package/_cjs/utils/blob/toBlobSidecars.js.map +1 -1
  14. package/_cjs/utils/blob/toBlobs.js.map +1 -1
  15. package/_cjs/utils/formatters/transactionRequest.js +2 -0
  16. package/_cjs/utils/formatters/transactionRequest.js.map +1 -1
  17. package/_cjs/utils/transaction/serializeTransaction.js +10 -6
  18. package/_cjs/utils/transaction/serializeTransaction.js.map +1 -1
  19. package/_esm/actions/index.js +1 -1
  20. package/_esm/actions/index.js.map +1 -1
  21. package/_esm/actions/public/estimateGas.js +8 -3
  22. package/_esm/actions/public/estimateGas.js.map +1 -1
  23. package/_esm/actions/wallet/prepareTransactionRequest.js +49 -9
  24. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  25. package/_esm/actions/wallet/sendTransaction.js +2 -1
  26. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  27. package/_esm/errors/version.js +1 -1
  28. package/_esm/utils/blob/blobsToCommitments.js.map +1 -1
  29. package/_esm/utils/blob/commitmentsToVersionedHashes.js.map +1 -1
  30. package/_esm/utils/blob/sidecarsToVersionedHashes.js.map +1 -1
  31. package/_esm/utils/blob/toBlobSidecars.js.map +1 -1
  32. package/_esm/utils/blob/toBlobs.js.map +1 -1
  33. package/_esm/utils/formatters/transactionRequest.js +2 -0
  34. package/_esm/utils/formatters/transactionRequest.js.map +1 -1
  35. package/_esm/utils/transaction/serializeTransaction.js +10 -6
  36. package/_esm/utils/transaction/serializeTransaction.js.map +1 -1
  37. package/_types/actions/index.d.ts +1 -1
  38. package/_types/actions/index.d.ts.map +1 -1
  39. package/_types/actions/public/estimateGas.d.ts.map +1 -1
  40. package/_types/actions/wallet/prepareTransactionRequest.d.ts +7 -6
  41. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  42. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  43. package/_types/celo/chainConfig.d.ts +1679 -183
  44. package/_types/celo/chainConfig.d.ts.map +1 -1
  45. package/_types/celo/formatters.d.ts +846 -98
  46. package/_types/celo/formatters.d.ts.map +1 -1
  47. package/_types/chains/definitions/ancient8.d.ts +15 -15
  48. package/_types/chains/definitions/ancient8Sepolia.d.ts +15 -15
  49. package/_types/chains/definitions/base.d.ts +15 -15
  50. package/_types/chains/definitions/baseGoerli.d.ts +15 -15
  51. package/_types/chains/definitions/baseSepolia.d.ts +15 -15
  52. package/_types/chains/definitions/celo.d.ts +1679 -183
  53. package/_types/chains/definitions/celo.d.ts.map +1 -1
  54. package/_types/chains/definitions/celoAlfajores.d.ts +1679 -183
  55. package/_types/chains/definitions/celoAlfajores.d.ts.map +1 -1
  56. package/_types/chains/definitions/fraxtal.d.ts +15 -15
  57. package/_types/chains/definitions/fraxtalTestnet.d.ts +15 -15
  58. package/_types/chains/definitions/liskSepolia.d.ts +15 -15
  59. package/_types/chains/definitions/optimism.d.ts +15 -15
  60. package/_types/chains/definitions/optimismGoerli.d.ts +15 -15
  61. package/_types/chains/definitions/optimismSepolia.d.ts +15 -15
  62. package/_types/chains/definitions/pgn.d.ts +15 -15
  63. package/_types/chains/definitions/pgnTestnet.d.ts +15 -15
  64. package/_types/chains/definitions/rss3.d.ts +15 -15
  65. package/_types/chains/definitions/rss3Sepolia.d.ts +15 -15
  66. package/_types/chains/definitions/zkSync.d.ts +844 -128
  67. package/_types/chains/definitions/zkSync.d.ts.map +1 -1
  68. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts +844 -128
  69. package/_types/chains/definitions/zkSyncInMemoryNode.d.ts.map +1 -1
  70. package/_types/chains/definitions/zkSyncLocalNode.d.ts +844 -128
  71. package/_types/chains/definitions/zkSyncLocalNode.d.ts.map +1 -1
  72. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +844 -128
  73. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts.map +1 -1
  74. package/_types/chains/definitions/zkSyncTestnet.d.ts +844 -128
  75. package/_types/chains/definitions/zkSyncTestnet.d.ts.map +1 -1
  76. package/_types/chains/definitions/zora.d.ts +15 -15
  77. package/_types/chains/definitions/zoraSepolia.d.ts +15 -15
  78. package/_types/chains/definitions/zoraTestnet.d.ts +15 -15
  79. package/_types/errors/version.d.ts +1 -1
  80. package/_types/op-stack/chainConfig.d.ts +15 -15
  81. package/_types/op-stack/formatters.d.ts +15 -15
  82. package/_types/types/transaction.d.ts +22 -3
  83. package/_types/types/transaction.d.ts.map +1 -1
  84. package/_types/utils/blob/blobsToCommitments.d.ts +4 -4
  85. package/_types/utils/blob/blobsToCommitments.d.ts.map +1 -1
  86. package/_types/utils/blob/blobsToProofs.d.ts +2 -2
  87. package/_types/utils/blob/blobsToProofs.d.ts.map +1 -1
  88. package/_types/utils/blob/commitmentsToVersionedHashes.d.ts +4 -4
  89. package/_types/utils/blob/commitmentsToVersionedHashes.d.ts.map +1 -1
  90. package/_types/utils/blob/sidecarsToVersionedHashes.d.ts +1 -1
  91. package/_types/utils/blob/sidecarsToVersionedHashes.d.ts.map +1 -1
  92. package/_types/utils/blob/toBlobSidecars.d.ts +5 -5
  93. package/_types/utils/blob/toBlobSidecars.d.ts.map +1 -1
  94. package/_types/utils/blob/toBlobs.d.ts +1 -1
  95. package/_types/utils/blob/toBlobs.d.ts.map +1 -1
  96. package/_types/utils/formatters/transaction.d.ts +1 -1
  97. package/_types/utils/formatters/transactionRequest.d.ts +186 -2
  98. package/_types/utils/formatters/transactionRequest.d.ts.map +1 -1
  99. package/_types/utils/transaction/getTransactionType.d.ts +3 -3
  100. package/_types/utils/transaction/getTransactionType.d.ts.map +1 -1
  101. package/_types/utils/transaction/serializeTransaction.d.ts.map +1 -1
  102. package/_types/zksync/chainConfig.d.ts +844 -128
  103. package/_types/zksync/chainConfig.d.ts.map +1 -1
  104. package/_types/zksync/formatters.d.ts +844 -128
  105. package/_types/zksync/formatters.d.ts.map +1 -1
  106. package/actions/index.ts +1 -0
  107. package/actions/public/estimateGas.ts +9 -7
  108. package/actions/wallet/prepareTransactionRequest.ts +73 -17
  109. package/actions/wallet/sendTransaction.ts +2 -0
  110. package/errors/version.ts +1 -1
  111. package/package.json +1 -1
  112. package/types/transaction.ts +28 -3
  113. package/utils/blob/blobsToCommitments.ts +9 -7
  114. package/utils/blob/blobsToProofs.ts +10 -10
  115. package/utils/blob/commitmentsToVersionedHashes.ts +10 -8
  116. package/utils/blob/sidecarsToVersionedHashes.ts +3 -3
  117. package/utils/blob/toBlobSidecars.ts +14 -11
  118. package/utils/blob/toBlobs.ts +3 -3
  119. package/utils/formatters/transactionRequest.ts +2 -0
  120. package/utils/transaction/getTransactionType.ts +3 -3
  121. package/utils/transaction/serializeTransaction.ts +12 -6
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../zksync/formatters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAS5C,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EACV,oBAAoB,EACpB,oCAAoC,EAEpC,iBAAiB,EAGlB,MAAM,wBAAwB,CAAA;AAE/B,eAAO,MAAM,UAAU;;;;0BAID,IAAI,EAAE,GAAG,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;0BAGjC,IAAI,EAAE,GAAG,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2HZ,CAAA"}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../zksync/formatters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAS5C,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,KAAK,EACV,oBAAoB,EACpB,oCAAoC,EAEpC,iBAAiB,EAGlB,MAAM,wBAAwB,CAAA;AAE/B,eAAO,MAAM,UAAU;;;;0BAID,IAAI,EAAE,GAAG,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;0BAGjC,IAAI,EAAE,GAAG,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2HZ,CAAA"}
package/actions/index.ts CHANGED
@@ -343,6 +343,7 @@ export {
343
343
  type PrepareTransactionRequestParameters,
344
344
  type PrepareTransactionRequestReturnType,
345
345
  prepareTransactionRequest,
346
+ defaultParameters as defaultPrepareTransactionRequestParameters,
346
347
  } from './wallet/prepareTransactionRequest.js'
347
348
  export {
348
349
  type SendTransactionErrorType,
@@ -107,6 +107,7 @@ export async function estimateGas<
107
107
  const {
108
108
  accessList,
109
109
  blobs,
110
+ blobVersionedHashes,
110
111
  blockNumber,
111
112
  blockTag,
112
113
  data,
@@ -119,13 +120,13 @@ export async function estimateGas<
119
120
  to,
120
121
  value,
121
122
  ...rest
122
- } =
123
- account?.type === 'local'
124
- ? ((await prepareTransactionRequest(
125
- client,
126
- args as PrepareTransactionRequestParameters,
127
- )) as EstimateGasParameters)
128
- : args
123
+ } = (await prepareTransactionRequest(client, {
124
+ ...args,
125
+ parameters:
126
+ // Some RPC Providers do not compute versioned hashes from blobs. We will need
127
+ // to compute them.
128
+ account?.type === 'json-rpc' ? ['blobVersionedHashes'] : undefined,
129
+ } as PrepareTransactionRequestParameters)) as EstimateGasParameters
129
130
 
130
131
  const blockNumberHex = blockNumber ? numberToHex(blockNumber) : undefined
131
132
  const block = blockNumberHex || blockTag
@@ -141,6 +142,7 @@ export async function estimateGas<
141
142
  from: account?.address,
142
143
  accessList,
143
144
  blobs,
145
+ blobVersionedHashes,
144
146
  data,
145
147
  gas,
146
148
  gasPrice,
@@ -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,
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '0.0.0-main.20240408T054443'
1
+ export const version = '0.0.0-main.20240408T061242'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "0.0.0-main.20240408T054443",
4
+ "version": "0.0.0-main.20240408T061242",
5
5
  "type": "module",
6
6
  "main": "./_cjs/index.js",
7
7
  "module": "./_esm/index.js",
@@ -227,7 +227,17 @@ export type TransactionRequestEIP4844<
227
227
  /** The blobs associated with this transaction. */
228
228
  blobs: readonly Hex[] | readonly ByteArray[]
229
229
  type?: TTransactionType | undefined
230
- }
230
+ } & OneOf<
231
+ | { kzg: Kzg | undefined }
232
+ | {
233
+ blobVersionedHashes: readonly Hex[]
234
+ kzg?: Kzg | undefined
235
+ }
236
+ | {
237
+ kzg?: Kzg | undefined
238
+ sidecars: readonly BlobSidecar<Hex>[]
239
+ }
240
+ >
231
241
  export type TransactionRequest<TQuantity = bigint, TIndex = number> = OneOf<
232
242
  | TransactionRequestLegacy<TQuantity, TIndex>
233
243
  | TransactionRequestEIP2930<TQuantity, TIndex>
@@ -235,6 +245,20 @@ export type TransactionRequest<TQuantity = bigint, TIndex = number> = OneOf<
235
245
  | TransactionRequestEIP4844<TQuantity, TIndex>
236
246
  >
237
247
 
248
+ export type TransactionRequestGeneric<
249
+ TQuantity = bigint,
250
+ TIndex = number,
251
+ > = TransactionRequestBase<TQuantity, TIndex> & {
252
+ accessList?: AccessList | undefined
253
+ blobs?: readonly Hex[] | readonly ByteArray[] | undefined
254
+ blobVersionedHashes?: readonly Hex[] | undefined
255
+ gasPrice?: TQuantity | undefined
256
+ maxFeePerBlobGas?: TQuantity | undefined
257
+ maxFeePerGas?: TQuantity | undefined
258
+ maxPriorityFeePerGas?: TQuantity | undefined
259
+ type?: string | undefined
260
+ }
261
+
238
262
  export type TransactionSerializedEIP1559 = `0x02${string}`
239
263
  export type TransactionSerializedEIP2930 = `0x01${string}`
240
264
  export type TransactionSerializedEIP4844 = `0x03${string}`
@@ -300,17 +324,18 @@ export type TransactionSerializableEIP4844<
300
324
  ExactPartial<FeeValuesEIP4844<TQuantity>> & {
301
325
  accessList?: AccessList | undefined
302
326
  chainId: number
327
+ sidecars?: readonly BlobSidecar<Hex>[] | false | undefined
303
328
  type?: 'eip4844' | undefined
304
329
  yParity?: number | undefined
305
330
  } & OneOf<
306
331
  | {
332
+ blobs?: readonly Hex[] | readonly ByteArray[] | undefined
307
333
  blobVersionedHashes: readonly Hex[]
308
- sidecars?: readonly BlobSidecar<Hex>[] | false | undefined
309
334
  }
310
335
  | {
311
336
  blobs: readonly Hex[] | readonly ByteArray[]
337
+ blobVersionedHashes?: readonly Hex[] | undefined
312
338
  kzg: Kzg
313
- sidecars?: false | undefined
314
339
  }
315
340
  >
316
341
 
@@ -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)