viem 2.7.22 → 2.8.0

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 (456) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/_cjs/accounts/utils/sign.js +1 -0
  3. package/_cjs/accounts/utils/sign.js.map +1 -1
  4. package/_cjs/accounts/utils/signTransaction.js +11 -2
  5. package/_cjs/accounts/utils/signTransaction.js.map +1 -1
  6. package/_cjs/actions/index.js +4 -2
  7. package/_cjs/actions/index.js.map +1 -1
  8. package/_cjs/actions/public/call.js +3 -1
  9. package/_cjs/actions/public/call.js.map +1 -1
  10. package/_cjs/actions/public/estimateGas.js +3 -1
  11. package/_cjs/actions/public/estimateGas.js.map +1 -1
  12. package/_cjs/actions/public/getBlobBaseFee.js +11 -0
  13. package/_cjs/actions/public/getBlobBaseFee.js.map +1 -0
  14. package/_cjs/actions/wallet/prepareTransactionRequest.js +11 -2
  15. package/_cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  16. package/_cjs/actions/wallet/sendRawTransaction.js.map +1 -1
  17. package/_cjs/actions/wallet/sendTransaction.js +7 -8
  18. package/_cjs/actions/wallet/sendTransaction.js.map +1 -1
  19. package/_cjs/actions/wallet/signTransaction.js +7 -6
  20. package/_cjs/actions/wallet/signTransaction.js.map +1 -1
  21. package/_cjs/chains/celo/serializers.js +10 -15
  22. package/_cjs/chains/celo/serializers.js.map +1 -1
  23. package/_cjs/chains/definitions/plumeTestnet.js +30 -0
  24. package/_cjs/chains/definitions/plumeTestnet.js.map +1 -0
  25. package/_cjs/chains/index.js +5 -3
  26. package/_cjs/chains/index.js.map +1 -1
  27. package/_cjs/chains/opStack/actions/estimateL1Fee.js +1 -10
  28. package/_cjs/chains/opStack/actions/estimateL1Fee.js.map +1 -1
  29. package/_cjs/chains/opStack/actions/estimateL1Gas.js +1 -10
  30. package/_cjs/chains/opStack/actions/estimateL1Gas.js.map +1 -1
  31. package/_cjs/chains/opStack/actions/finalizeWithdrawal.js +1 -1
  32. package/_cjs/chains/opStack/actions/finalizeWithdrawal.js.map +1 -1
  33. package/_cjs/chains/opStack/actions/proveWithdrawal.js +1 -1
  34. package/_cjs/chains/opStack/actions/proveWithdrawal.js.map +1 -1
  35. package/_cjs/chains/opStack/serializers.js +3 -3
  36. package/_cjs/chains/opStack/serializers.js.map +1 -1
  37. package/_cjs/chains/zksync/actions/sendTransaction.js.map +1 -1
  38. package/_cjs/chains/zksync/actions/signEip712Transaction.js.map +1 -1
  39. package/_cjs/chains/zksync/serializers.js +6 -6
  40. package/_cjs/chains/zksync/serializers.js.map +1 -1
  41. package/_cjs/clients/decorators/public.js.map +1 -1
  42. package/_cjs/clients/decorators/wallet.js.map +1 -1
  43. package/_cjs/constants/blob.js +11 -0
  44. package/_cjs/constants/blob.js.map +1 -0
  45. package/_cjs/constants/kzg.js +7 -0
  46. package/_cjs/constants/kzg.js.map +1 -0
  47. package/_cjs/errors/blob.js +63 -0
  48. package/_cjs/errors/blob.js.map +1 -0
  49. package/_cjs/errors/transaction.js +1 -0
  50. package/_cjs/errors/transaction.js.map +1 -1
  51. package/_cjs/errors/version.js +1 -1
  52. package/_cjs/errors/version.js.map +1 -1
  53. package/_cjs/index.js +22 -2
  54. package/_cjs/index.js.map +1 -1
  55. package/_cjs/node/index.js +3 -1
  56. package/_cjs/node/index.js.map +1 -1
  57. package/_cjs/node/trustedSetups.js +7 -0
  58. package/_cjs/node/trustedSetups.js.map +1 -0
  59. package/_cjs/types/eip4844.js +3 -0
  60. package/_cjs/types/eip4844.js.map +1 -0
  61. package/_cjs/types/kzg.js +3 -0
  62. package/_cjs/types/kzg.js.map +1 -0
  63. package/_cjs/utils/blob/blobsToCommitments.js +20 -0
  64. package/_cjs/utils/blob/blobsToCommitments.js.map +1 -0
  65. package/_cjs/utils/blob/blobsToProofs.js +26 -0
  66. package/_cjs/utils/blob/blobsToProofs.js.map +1 -0
  67. package/_cjs/utils/blob/commitmentToVersionedHash.js +14 -0
  68. package/_cjs/utils/blob/commitmentToVersionedHash.js.map +1 -0
  69. package/_cjs/utils/blob/commitmentsToVersionedHashes.js +19 -0
  70. package/_cjs/utils/blob/commitmentsToVersionedHashes.js.map +1 -0
  71. package/_cjs/utils/blob/fromBlobs.js +36 -0
  72. package/_cjs/utils/blob/fromBlobs.js.map +1 -0
  73. package/_cjs/utils/blob/sidecarsToVersionedHashes.js +19 -0
  74. package/_cjs/utils/blob/sidecarsToVersionedHashes.js.map +1 -0
  75. package/_cjs/utils/blob/toBlobSidecars.js +22 -0
  76. package/_cjs/utils/blob/toBlobSidecars.js.map +1 -0
  77. package/_cjs/utils/blob/toBlobs.js +48 -0
  78. package/_cjs/utils/blob/toBlobs.js.map +1 -0
  79. package/_cjs/utils/encoding/toRlp.js.map +1 -1
  80. package/_cjs/utils/formatters/transaction.js.map +1 -1
  81. package/_cjs/utils/formatters/transactionRequest.js +22 -25
  82. package/_cjs/utils/formatters/transactionRequest.js.map +1 -1
  83. package/_cjs/utils/kzg/defineKzg.js +11 -0
  84. package/_cjs/utils/kzg/defineKzg.js.map +1 -0
  85. package/_cjs/utils/kzg/setupKzg.js +17 -0
  86. package/_cjs/utils/kzg/setupKzg.js.map +1 -0
  87. package/_cjs/utils/signature/compactSignatureToSignature.js +3 -3
  88. package/_cjs/utils/signature/compactSignatureToSignature.js.map +1 -1
  89. package/_cjs/utils/signature/hexToSignature.js +6 -1
  90. package/_cjs/utils/signature/hexToSignature.js.map +1 -1
  91. package/_cjs/utils/signature/signatureToCompactSignature.js +3 -3
  92. package/_cjs/utils/signature/signatureToCompactSignature.js.map +1 -1
  93. package/_cjs/utils/signature/signatureToHex.js +9 -3
  94. package/_cjs/utils/signature/signatureToHex.js.map +1 -1
  95. package/_cjs/utils/transaction/assertTransaction.js +26 -1
  96. package/_cjs/utils/transaction/assertTransaction.js.map +1 -1
  97. package/_cjs/utils/transaction/getSerializedTransactionType.js +2 -0
  98. package/_cjs/utils/transaction/getSerializedTransactionType.js.map +1 -1
  99. package/_cjs/utils/transaction/getTransactionType.js +7 -1
  100. package/_cjs/utils/transaction/getTransactionType.js.map +1 -1
  101. package/_cjs/utils/transaction/parseTransaction.js +73 -0
  102. package/_cjs/utils/transaction/parseTransaction.js.map +1 -1
  103. package/_cjs/utils/transaction/serializeAccessList.js.map +1 -1
  104. package/_cjs/utils/transaction/serializeTransaction.js +84 -21
  105. package/_cjs/utils/transaction/serializeTransaction.js.map +1 -1
  106. package/_esm/accounts/utils/sign.js +1 -0
  107. package/_esm/accounts/utils/sign.js.map +1 -1
  108. package/_esm/accounts/utils/signTransaction.js +13 -2
  109. package/_esm/accounts/utils/signTransaction.js.map +1 -1
  110. package/_esm/actions/index.js +1 -0
  111. package/_esm/actions/index.js.map +1 -1
  112. package/_esm/actions/public/call.js +3 -1
  113. package/_esm/actions/public/call.js.map +1 -1
  114. package/_esm/actions/public/estimateGas.js +3 -1
  115. package/_esm/actions/public/estimateGas.js.map +1 -1
  116. package/_esm/actions/public/getBlobBaseFee.js +27 -0
  117. package/_esm/actions/public/getBlobBaseFee.js.map +1 -0
  118. package/_esm/actions/wallet/prepareTransactionRequest.js +12 -2
  119. package/_esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  120. package/_esm/actions/wallet/sendRawTransaction.js.map +1 -1
  121. package/_esm/actions/wallet/sendTransaction.js +7 -8
  122. package/_esm/actions/wallet/sendTransaction.js.map +1 -1
  123. package/_esm/actions/wallet/signTransaction.js +6 -5
  124. package/_esm/actions/wallet/signTransaction.js.map +1 -1
  125. package/_esm/chains/celo/serializers.js +10 -17
  126. package/_esm/chains/celo/serializers.js.map +1 -1
  127. package/_esm/chains/definitions/plumeTestnet.js +27 -0
  128. package/_esm/chains/definitions/plumeTestnet.js.map +1 -0
  129. package/_esm/chains/index.js +1 -0
  130. package/_esm/chains/index.js.map +1 -1
  131. package/_esm/chains/opStack/actions/estimateL1Fee.js +1 -10
  132. package/_esm/chains/opStack/actions/estimateL1Fee.js.map +1 -1
  133. package/_esm/chains/opStack/actions/estimateL1Gas.js +1 -10
  134. package/_esm/chains/opStack/actions/estimateL1Gas.js.map +1 -1
  135. package/_esm/chains/opStack/actions/finalizeWithdrawal.js +1 -1
  136. package/_esm/chains/opStack/actions/finalizeWithdrawal.js.map +1 -1
  137. package/_esm/chains/opStack/actions/proveWithdrawal.js +1 -1
  138. package/_esm/chains/opStack/actions/proveWithdrawal.js.map +1 -1
  139. package/_esm/chains/opStack/serializers.js +2 -2
  140. package/_esm/chains/opStack/serializers.js.map +1 -1
  141. package/_esm/chains/zksync/actions/sendTransaction.js.map +1 -1
  142. package/_esm/chains/zksync/actions/signEip712Transaction.js.map +1 -1
  143. package/_esm/chains/zksync/serializers.js +6 -6
  144. package/_esm/chains/zksync/serializers.js.map +1 -1
  145. package/_esm/clients/decorators/public.js.map +1 -1
  146. package/_esm/clients/decorators/wallet.js.map +1 -1
  147. package/_esm/constants/blob.js +16 -0
  148. package/_esm/constants/blob.js.map +1 -0
  149. package/_esm/constants/kzg.js +7 -0
  150. package/_esm/constants/kzg.js.map +1 -0
  151. package/_esm/errors/blob.js +56 -0
  152. package/_esm/errors/blob.js.map +1 -0
  153. package/_esm/errors/transaction.js +1 -0
  154. package/_esm/errors/transaction.js.map +1 -1
  155. package/_esm/errors/version.js +1 -1
  156. package/_esm/errors/version.js.map +1 -1
  157. package/_esm/index.js +10 -0
  158. package/_esm/index.js.map +1 -1
  159. package/_esm/node/index.js +1 -0
  160. package/_esm/node/index.js.map +1 -1
  161. package/_esm/node/trustedSetups.js +4 -0
  162. package/_esm/node/trustedSetups.js.map +1 -0
  163. package/_esm/types/eip4844.js +2 -0
  164. package/_esm/types/eip4844.js.map +1 -0
  165. package/_esm/types/kzg.js +2 -0
  166. package/_esm/types/kzg.js.map +1 -0
  167. package/_esm/utils/blob/blobsToCommitments.js +28 -0
  168. package/_esm/utils/blob/blobsToCommitments.js.map +1 -0
  169. package/_esm/utils/blob/blobsToProofs.js +38 -0
  170. package/_esm/utils/blob/blobsToProofs.js.map +1 -0
  171. package/_esm/utils/blob/commitmentToVersionedHash.js +27 -0
  172. package/_esm/utils/blob/commitmentToVersionedHash.js.map +1 -0
  173. package/_esm/utils/blob/commitmentsToVersionedHashes.js +32 -0
  174. package/_esm/utils/blob/commitmentsToVersionedHashes.js.map +1 -0
  175. package/_esm/utils/blob/fromBlobs.js +33 -0
  176. package/_esm/utils/blob/fromBlobs.js.map +1 -0
  177. package/_esm/utils/blob/sidecarsToVersionedHashes.js +26 -0
  178. package/_esm/utils/blob/sidecarsToVersionedHashes.js.map +1 -0
  179. package/_esm/utils/blob/toBlobSidecars.js +45 -0
  180. package/_esm/utils/blob/toBlobSidecars.js.map +1 -0
  181. package/_esm/utils/blob/toBlobs.js +58 -0
  182. package/_esm/utils/blob/toBlobs.js.map +1 -0
  183. package/_esm/utils/encoding/toRlp.js.map +1 -1
  184. package/_esm/utils/formatters/transaction.js.map +1 -1
  185. package/_esm/utils/formatters/transactionRequest.js +23 -26
  186. package/_esm/utils/formatters/transactionRequest.js.map +1 -1
  187. package/_esm/utils/kzg/defineKzg.js +21 -0
  188. package/_esm/utils/kzg/defineKzg.js.map +1 -0
  189. package/_esm/utils/kzg/setupKzg.js +25 -0
  190. package/_esm/utils/kzg/setupKzg.js.map +1 -0
  191. package/_esm/utils/signature/compactSignatureToSignature.js +3 -3
  192. package/_esm/utils/signature/compactSignatureToSignature.js.map +1 -1
  193. package/_esm/utils/signature/hexToSignature.js +6 -1
  194. package/_esm/utils/signature/hexToSignature.js.map +1 -1
  195. package/_esm/utils/signature/signatureToCompactSignature.js +4 -4
  196. package/_esm/utils/signature/signatureToCompactSignature.js.map +1 -1
  197. package/_esm/utils/signature/signatureToHex.js +11 -4
  198. package/_esm/utils/signature/signatureToHex.js.map +1 -1
  199. package/_esm/utils/transaction/assertTransaction.js +24 -0
  200. package/_esm/utils/transaction/assertTransaction.js.map +1 -1
  201. package/_esm/utils/transaction/getSerializedTransactionType.js +2 -0
  202. package/_esm/utils/transaction/getSerializedTransactionType.js.map +1 -1
  203. package/_esm/utils/transaction/getTransactionType.js +7 -1
  204. package/_esm/utils/transaction/getTransactionType.js.map +1 -1
  205. package/_esm/utils/transaction/parseTransaction.js +74 -1
  206. package/_esm/utils/transaction/parseTransaction.js.map +1 -1
  207. package/_esm/utils/transaction/serializeAccessList.js.map +1 -1
  208. package/_esm/utils/transaction/serializeTransaction.js +85 -22
  209. package/_esm/utils/transaction/serializeTransaction.js.map +1 -1
  210. package/_types/accounts/types.d.ts +3 -3
  211. package/_types/accounts/types.d.ts.map +1 -1
  212. package/_types/accounts/utils/sign.d.ts.map +1 -1
  213. package/_types/accounts/utils/signTransaction.d.ts +5 -5
  214. package/_types/accounts/utils/signTransaction.d.ts.map +1 -1
  215. package/_types/actions/index.d.ts +1 -0
  216. package/_types/actions/index.d.ts.map +1 -1
  217. package/_types/actions/public/call.d.ts.map +1 -1
  218. package/_types/actions/public/estimateGas.d.ts.map +1 -1
  219. package/_types/actions/public/getBlobBaseFee.d.ts +30 -0
  220. package/_types/actions/public/getBlobBaseFee.d.ts.map +1 -0
  221. package/_types/actions/wallet/prepareTransactionRequest.d.ts +27 -8
  222. package/_types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  223. package/_types/actions/wallet/sendRawTransaction.d.ts +3 -5
  224. package/_types/actions/wallet/sendRawTransaction.d.ts.map +1 -1
  225. package/_types/actions/wallet/sendTransaction.d.ts +4 -2
  226. package/_types/actions/wallet/sendTransaction.d.ts.map +1 -1
  227. package/_types/actions/wallet/signTransaction.d.ts +5 -2
  228. package/_types/actions/wallet/signTransaction.d.ts.map +1 -1
  229. package/_types/chains/celo/chainConfig.d.ts +1282 -376
  230. package/_types/chains/celo/chainConfig.d.ts.map +1 -1
  231. package/_types/chains/celo/formatters.d.ts +1282 -376
  232. package/_types/chains/celo/formatters.d.ts.map +1 -1
  233. package/_types/chains/celo/serializers.d.ts +3 -4
  234. package/_types/chains/celo/serializers.d.ts.map +1 -1
  235. package/_types/chains/celo/types.d.ts +3 -8
  236. package/_types/chains/celo/types.d.ts.map +1 -1
  237. package/_types/chains/definitions/ancient8.d.ts +452 -188
  238. package/_types/chains/definitions/ancient8.d.ts.map +1 -1
  239. package/_types/chains/definitions/ancient8Sepolia.d.ts +452 -188
  240. package/_types/chains/definitions/ancient8Sepolia.d.ts.map +1 -1
  241. package/_types/chains/definitions/base.d.ts +452 -188
  242. package/_types/chains/definitions/base.d.ts.map +1 -1
  243. package/_types/chains/definitions/baseGoerli.d.ts +452 -188
  244. package/_types/chains/definitions/baseGoerli.d.ts.map +1 -1
  245. package/_types/chains/definitions/baseSepolia.d.ts +452 -188
  246. package/_types/chains/definitions/baseSepolia.d.ts.map +1 -1
  247. package/_types/chains/definitions/celo.d.ts +1282 -376
  248. package/_types/chains/definitions/celo.d.ts.map +1 -1
  249. package/_types/chains/definitions/celoAlfajores.d.ts +1282 -376
  250. package/_types/chains/definitions/celoAlfajores.d.ts.map +1 -1
  251. package/_types/chains/definitions/fraxtal.d.ts +452 -188
  252. package/_types/chains/definitions/fraxtal.d.ts.map +1 -1
  253. package/_types/chains/definitions/fraxtalTestnet.d.ts +452 -188
  254. package/_types/chains/definitions/fraxtalTestnet.d.ts.map +1 -1
  255. package/_types/chains/definitions/liskSepolia.d.ts +452 -188
  256. package/_types/chains/definitions/liskSepolia.d.ts.map +1 -1
  257. package/_types/chains/definitions/optimism.d.ts +452 -188
  258. package/_types/chains/definitions/optimism.d.ts.map +1 -1
  259. package/_types/chains/definitions/optimismGoerli.d.ts +452 -188
  260. package/_types/chains/definitions/optimismGoerli.d.ts.map +1 -1
  261. package/_types/chains/definitions/optimismSepolia.d.ts +452 -188
  262. package/_types/chains/definitions/optimismSepolia.d.ts.map +1 -1
  263. package/_types/chains/definitions/pgn.d.ts +451 -187
  264. package/_types/chains/definitions/pgn.d.ts.map +1 -1
  265. package/_types/chains/definitions/pgnTestnet.d.ts +451 -187
  266. package/_types/chains/definitions/pgnTestnet.d.ts.map +1 -1
  267. package/_types/chains/definitions/plumeTestnet.d.ts +37 -0
  268. package/_types/chains/definitions/plumeTestnet.d.ts.map +1 -0
  269. package/_types/chains/definitions/zkSync.d.ts +692 -32
  270. package/_types/chains/definitions/zkSync.d.ts.map +1 -1
  271. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts +692 -32
  272. package/_types/chains/definitions/zkSyncSepoliaTestnet.d.ts.map +1 -1
  273. package/_types/chains/definitions/zkSyncTestnet.d.ts +692 -32
  274. package/_types/chains/definitions/zkSyncTestnet.d.ts.map +1 -1
  275. package/_types/chains/definitions/zora.d.ts +452 -188
  276. package/_types/chains/definitions/zora.d.ts.map +1 -1
  277. package/_types/chains/definitions/zoraSepolia.d.ts +452 -188
  278. package/_types/chains/definitions/zoraSepolia.d.ts.map +1 -1
  279. package/_types/chains/definitions/zoraTestnet.d.ts +452 -188
  280. package/_types/chains/definitions/zoraTestnet.d.ts.map +1 -1
  281. package/_types/chains/index.d.ts +2 -1
  282. package/_types/chains/index.d.ts.map +1 -1
  283. package/_types/chains/opStack/actions/estimateL1Fee.d.ts.map +1 -1
  284. package/_types/chains/opStack/actions/estimateL1Gas.d.ts.map +1 -1
  285. package/_types/chains/opStack/actions/finalizeWithdrawal.d.ts.map +1 -1
  286. package/_types/chains/opStack/actions/proveWithdrawal.d.ts.map +1 -1
  287. package/_types/chains/opStack/chainConfig.d.ts +452 -188
  288. package/_types/chains/opStack/chainConfig.d.ts.map +1 -1
  289. package/_types/chains/opStack/formatters.d.ts +451 -187
  290. package/_types/chains/opStack/formatters.d.ts.map +1 -1
  291. package/_types/chains/opStack/serializers.d.ts +4 -3
  292. package/_types/chains/opStack/serializers.d.ts.map +1 -1
  293. package/_types/chains/opStack/types/transaction.d.ts +4 -8
  294. package/_types/chains/opStack/types/transaction.d.ts.map +1 -1
  295. package/_types/chains/zksync/actions/sendTransaction.d.ts.map +1 -1
  296. package/_types/chains/zksync/chainConfig.d.ts +692 -32
  297. package/_types/chains/zksync/chainConfig.d.ts.map +1 -1
  298. package/_types/chains/zksync/formatters.d.ts +692 -32
  299. package/_types/chains/zksync/formatters.d.ts.map +1 -1
  300. package/_types/chains/zksync/serializers.d.ts +3 -3
  301. package/_types/chains/zksync/serializers.d.ts.map +1 -1
  302. package/_types/chains/zksync/types/chain.d.ts +2 -2
  303. package/_types/chains/zksync/types/chain.d.ts.map +1 -1
  304. package/_types/chains/zksync/types/eip712.d.ts +2 -2
  305. package/_types/chains/zksync/types/eip712.d.ts.map +1 -1
  306. package/_types/clients/decorators/public.d.ts +2 -2
  307. package/_types/clients/decorators/public.d.ts.map +1 -1
  308. package/_types/clients/decorators/wallet.d.ts +4 -4
  309. package/_types/clients/decorators/wallet.d.ts.map +1 -1
  310. package/_types/constants/blob.d.ts +11 -0
  311. package/_types/constants/blob.d.ts.map +1 -0
  312. package/_types/constants/kzg.d.ts +6 -0
  313. package/_types/constants/kzg.d.ts.map +1 -0
  314. package/_types/errors/blob.d.ts +40 -0
  315. package/_types/errors/blob.d.ts.map +1 -0
  316. package/_types/errors/transaction.d.ts.map +1 -1
  317. package/_types/errors/version.d.ts +1 -1
  318. package/_types/errors/version.d.ts.map +1 -1
  319. package/_types/index.d.ts +11 -0
  320. package/_types/index.d.ts.map +1 -1
  321. package/_types/node/index.d.ts +1 -0
  322. package/_types/node/index.d.ts.map +1 -1
  323. package/_types/node/trustedSetups.d.ts +3 -0
  324. package/_types/node/trustedSetups.d.ts.map +1 -0
  325. package/_types/types/account.d.ts +3 -3
  326. package/_types/types/account.d.ts.map +1 -1
  327. package/_types/types/chain.d.ts +2 -2
  328. package/_types/types/chain.d.ts.map +1 -1
  329. package/_types/types/eip1193.d.ts +3 -3
  330. package/_types/types/eip1193.d.ts.map +1 -1
  331. package/_types/types/eip4844.d.ts +11 -0
  332. package/_types/types/eip4844.d.ts.map +1 -0
  333. package/_types/types/fee.d.ts +2 -2
  334. package/_types/types/fee.d.ts.map +1 -1
  335. package/_types/types/kzg.d.ts +24 -0
  336. package/_types/types/kzg.d.ts.map +1 -0
  337. package/_types/types/misc.d.ts +15 -1
  338. package/_types/types/misc.d.ts.map +1 -1
  339. package/_types/types/rpc.d.ts +4 -4
  340. package/_types/types/rpc.d.ts.map +1 -1
  341. package/_types/types/transaction.d.ts +44 -9
  342. package/_types/types/transaction.d.ts.map +1 -1
  343. package/_types/types/utils.d.ts +38 -2
  344. package/_types/types/utils.d.ts.map +1 -1
  345. package/_types/utils/blob/blobsToCommitments.d.ts +31 -0
  346. package/_types/utils/blob/blobsToCommitments.d.ts.map +1 -0
  347. package/_types/utils/blob/blobsToProofs.d.ts +37 -0
  348. package/_types/utils/blob/blobsToProofs.d.ts.map +1 -0
  349. package/_types/utils/blob/commitmentToVersionedHash.d.ts +35 -0
  350. package/_types/utils/blob/commitmentToVersionedHash.d.ts.map +1 -0
  351. package/_types/utils/blob/commitmentsToVersionedHashes.d.ts +34 -0
  352. package/_types/utils/blob/commitmentsToVersionedHashes.d.ts.map +1 -0
  353. package/_types/utils/blob/fromBlobs.d.ts +16 -0
  354. package/_types/utils/blob/fromBlobs.d.ts.map +1 -0
  355. package/_types/utils/blob/sidecarsToVersionedHashes.d.ts +29 -0
  356. package/_types/utils/blob/sidecarsToVersionedHashes.d.ts.map +1 -0
  357. package/_types/utils/blob/toBlobSidecars.d.ts +57 -0
  358. package/_types/utils/blob/toBlobSidecars.d.ts.map +1 -0
  359. package/_types/utils/blob/toBlobs.d.ts +28 -0
  360. package/_types/utils/blob/toBlobs.d.ts.map +1 -0
  361. package/_types/utils/encoding/toRlp.d.ts +1 -1
  362. package/_types/utils/encoding/toRlp.d.ts.map +1 -1
  363. package/_types/utils/formatters/transaction.d.ts +25 -25
  364. package/_types/utils/formatters/transaction.d.ts.map +1 -1
  365. package/_types/utils/formatters/transactionRequest.d.ts +227 -3
  366. package/_types/utils/formatters/transactionRequest.d.ts.map +1 -1
  367. package/_types/utils/kzg/defineKzg.d.ts +21 -0
  368. package/_types/utils/kzg/defineKzg.d.ts.map +1 -0
  369. package/_types/utils/kzg/setupKzg.d.ts +21 -0
  370. package/_types/utils/kzg/setupKzg.d.ts.map +1 -0
  371. package/_types/utils/signature/hexToSignature.d.ts.map +1 -1
  372. package/_types/utils/signature/signatureToCompactSignature.d.ts +1 -1
  373. package/_types/utils/signature/signatureToHex.d.ts +2 -2
  374. package/_types/utils/signature/signatureToHex.d.ts.map +1 -1
  375. package/_types/utils/transaction/assertTransaction.d.ts +4 -1
  376. package/_types/utils/transaction/assertTransaction.d.ts.map +1 -1
  377. package/_types/utils/transaction/getSerializedTransactionType.d.ts +5 -3
  378. package/_types/utils/transaction/getSerializedTransactionType.d.ts.map +1 -1
  379. package/_types/utils/transaction/getTransactionType.d.ts +34 -3
  380. package/_types/utils/transaction/getTransactionType.d.ts.map +1 -1
  381. package/_types/utils/transaction/parseTransaction.d.ts +7 -5
  382. package/_types/utils/transaction/parseTransaction.d.ts.map +1 -1
  383. package/_types/utils/transaction/serializeTransaction.d.ts +13 -6
  384. package/_types/utils/transaction/serializeTransaction.d.ts.map +1 -1
  385. package/accounts/types.ts +9 -5
  386. package/accounts/utils/sign.ts +1 -0
  387. package/accounts/utils/signTransaction.ts +37 -22
  388. package/actions/index.ts +5 -0
  389. package/actions/public/call.ts +4 -0
  390. package/actions/public/estimateGas.ts +4 -0
  391. package/actions/public/getBlobBaseFee.ts +42 -0
  392. package/actions/wallet/prepareTransactionRequest.ts +134 -61
  393. package/actions/wallet/sendRawTransaction.ts +3 -5
  394. package/actions/wallet/sendTransaction.ts +32 -21
  395. package/actions/wallet/signTransaction.ts +34 -18
  396. package/chains/celo/serializers.ts +12 -25
  397. package/chains/celo/types.ts +5 -10
  398. package/chains/definitions/plumeTestnet.ts +28 -0
  399. package/chains/index.ts +1 -1
  400. package/chains/opStack/actions/estimateL1Fee.ts +12 -16
  401. package/chains/opStack/actions/estimateL1Gas.ts +12 -16
  402. package/chains/opStack/actions/finalizeWithdrawal.ts +3 -2
  403. package/chains/opStack/actions/proveWithdrawal.ts +3 -2
  404. package/chains/opStack/serializers.ts +5 -5
  405. package/chains/opStack/types/transaction.ts +9 -11
  406. package/chains/zksync/actions/sendTransaction.ts +2 -1
  407. package/chains/zksync/actions/signEip712Transaction.ts +2 -2
  408. package/chains/zksync/serializers.ts +14 -10
  409. package/chains/zksync/types/chain.ts +4 -7
  410. package/chains/zksync/types/eip712.ts +2 -2
  411. package/clients/decorators/public.ts +8 -4
  412. package/clients/decorators/wallet.ts +14 -6
  413. package/constants/blob.ts +21 -0
  414. package/constants/kzg.ts +9 -0
  415. package/errors/blob.ts +67 -0
  416. package/errors/transaction.ts +1 -0
  417. package/errors/version.ts +1 -1
  418. package/index.ts +64 -0
  419. package/node/index.ts +2 -0
  420. package/node/trustedSetups.ts +11 -0
  421. package/package.json +1 -1
  422. package/trusted-setups/mainnet.json +8265 -0
  423. package/trusted-setups/minimal.json +8265 -0
  424. package/types/account.ts +3 -3
  425. package/types/chain.ts +3 -1
  426. package/types/eip1193.ts +3 -3
  427. package/types/eip4844.ts +12 -0
  428. package/types/fee.ts +3 -2
  429. package/types/kzg.ts +32 -0
  430. package/types/misc.ts +20 -1
  431. package/types/rpc.ts +11 -6
  432. package/types/transaction.ts +75 -17
  433. package/types/utils.ts +49 -1
  434. package/utils/blob/blobsToCommitments.ts +69 -0
  435. package/utils/blob/blobsToProofs.ts +93 -0
  436. package/utils/blob/commitmentToVersionedHash.ts +62 -0
  437. package/utils/blob/commitmentsToVersionedHashes.ts +71 -0
  438. package/utils/blob/fromBlobs.ts +73 -0
  439. package/utils/blob/sidecarsToVersionedHashes.ts +66 -0
  440. package/utils/blob/toBlobSidecars.ts +109 -0
  441. package/utils/blob/toBlobs.ts +113 -0
  442. package/utils/encoding/toRlp.ts +2 -2
  443. package/utils/formatters/transaction.ts +3 -2
  444. package/utils/formatters/transactionRequest.ts +28 -35
  445. package/utils/kzg/defineKzg.ts +30 -0
  446. package/utils/kzg/setupKzg.ts +38 -0
  447. package/utils/signature/compactSignatureToSignature.ts +3 -3
  448. package/utils/signature/hexToSignature.ts +6 -1
  449. package/utils/signature/signatureToCompactSignature.ts +4 -4
  450. package/utils/signature/signatureToHex.ts +9 -4
  451. package/utils/transaction/assertTransaction.ts +41 -0
  452. package/utils/transaction/getSerializedTransactionType.ts +34 -11
  453. package/utils/transaction/getTransactionType.ts +109 -26
  454. package/utils/transaction/parseTransaction.ts +128 -8
  455. package/utils/transaction/serializeAccessList.ts +1 -1
  456. package/utils/transaction/serializeTransaction.ts +172 -39
@@ -6,7 +6,7 @@ import {
6
6
  type HexToBigIntErrorType,
7
7
  hexToBigInt,
8
8
  } from '../../utils/encoding/fromHex.js'
9
- import { type ToHexErrorType, toHex } from '../../utils/encoding/toHex.js'
9
+ import { type ToHexErrorType } from '../../utils/encoding/toHex.js'
10
10
 
11
11
  export type SignatureToHexErrorType =
12
12
  | HexToBigIntErrorType
@@ -23,13 +23,18 @@ export type SignatureToHexErrorType =
23
23
  * signatureToHex({
24
24
  * r: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf',
25
25
  * s: '0x4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8',
26
- * v: 28n
26
+ * yParity: 1
27
27
  * })
28
28
  * // "0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c"
29
29
  */
30
- export function signatureToHex({ r, s, v }: Signature): Hex {
30
+ export function signatureToHex({ r, s, v, yParity }: Signature): Hex {
31
+ const vHex = (() => {
32
+ if (v === 27n || yParity === 0) return '1b'
33
+ if (v === 28n || yParity === 1) return '1c'
34
+ throw new Error('Invalid v value')
35
+ })()
31
36
  return `0x${new secp256k1.Signature(
32
37
  hexToBigInt(r),
33
38
  hexToBigInt(s),
34
- ).toCompactHex()}${toHex(v).slice(2)}`
39
+ ).toCompactHex()}${vHex}`
35
40
  }
@@ -1,8 +1,17 @@
1
+ import { versionedHashVersionKzg } from '../../constants/kzg.js'
1
2
  import {
2
3
  InvalidAddressError,
3
4
  type InvalidAddressErrorType,
4
5
  } from '../../errors/address.js'
5
6
  import { BaseError, type BaseErrorType } from '../../errors/base.js'
7
+ import {
8
+ EmptyBlobError,
9
+ type EmptyBlobErrorType,
10
+ InvalidVersionedHashSizeError,
11
+ type InvalidVersionedHashSizeErrorType,
12
+ InvalidVersionedHashVersionError,
13
+ type InvalidVersionedHashVersionErrorType,
14
+ } from '../../errors/blob.js'
6
15
  import {
7
16
  InvalidChainIdError,
8
17
  type InvalidChainIdErrorType,
@@ -17,9 +26,41 @@ import type { ErrorType } from '../../errors/utils.js'
17
26
  import type {
18
27
  TransactionSerializableEIP1559,
19
28
  TransactionSerializableEIP2930,
29
+ TransactionSerializableEIP4844,
20
30
  TransactionSerializableLegacy,
21
31
  } from '../../types/transaction.js'
22
32
  import { type IsAddressErrorType, isAddress } from '../address/isAddress.js'
33
+ import { size } from '../data/size.js'
34
+ import { slice } from '../data/slice.js'
35
+ import { hexToNumber } from '../encoding/fromHex.js'
36
+
37
+ export type AssertTransactionEIP4844ErrorType =
38
+ | AssertTransactionEIP1559ErrorType
39
+ | EmptyBlobErrorType
40
+ | InvalidVersionedHashSizeErrorType
41
+ | InvalidVersionedHashVersionErrorType
42
+ | ErrorType
43
+
44
+ export function assertTransactionEIP4844(
45
+ transaction: TransactionSerializableEIP4844,
46
+ ) {
47
+ const { blobVersionedHashes } = transaction
48
+ if (blobVersionedHashes) {
49
+ if (blobVersionedHashes.length === 0) throw new EmptyBlobError()
50
+ for (const hash of blobVersionedHashes) {
51
+ const size_ = size(hash)
52
+ const version = hexToNumber(slice(hash, 0, 1))
53
+ if (size_ !== 32)
54
+ throw new InvalidVersionedHashSizeError({ hash, size: size_ })
55
+ if (version !== versionedHashVersionKzg)
56
+ throw new InvalidVersionedHashVersionError({
57
+ hash,
58
+ version,
59
+ })
60
+ }
61
+ }
62
+ assertTransactionEIP1559(transaction as {} as TransactionSerializableEIP1559)
63
+ }
23
64
 
24
65
  export type AssertTransactionEIP1559ErrorType =
25
66
  | BaseErrorType
@@ -3,21 +3,41 @@ import {
3
3
  type InvalidSerializedTransactionTypeErrorType,
4
4
  } from '../../errors/transaction.js'
5
5
  import type { ErrorType } from '../../errors/utils.js'
6
+ import type { Hex } from '../../index.js'
6
7
  import type {
7
8
  TransactionSerialized,
8
9
  TransactionSerializedEIP1559,
9
10
  TransactionSerializedEIP2930,
11
+ TransactionSerializedEIP4844,
12
+ TransactionSerializedGeneric,
13
+ TransactionSerializedLegacy,
14
+ TransactionType,
10
15
  } from '../../types/transaction.js'
16
+ import type { IsNarrowable, IsNever } from '../../types/utils.js'
11
17
  import { type SliceHexErrorType, sliceHex } from '../data/slice.js'
12
18
  import { type HexToNumberErrorType, hexToNumber } from '../encoding/fromHex.js'
13
19
 
14
20
  export type GetSerializedTransactionType<
15
- TTransactionSerialized extends TransactionSerialized = TransactionSerialized,
16
- > = TTransactionSerialized extends TransactionSerializedEIP1559
17
- ? 'eip1559'
18
- : TTransactionSerialized extends TransactionSerializedEIP2930
19
- ? 'eip2930'
21
+ serializedTransaction extends
22
+ TransactionSerializedGeneric = TransactionSerialized,
23
+ result =
24
+ | (serializedTransaction extends TransactionSerializedEIP1559
25
+ ? 'eip1559'
26
+ : never)
27
+ | (serializedTransaction extends TransactionSerializedEIP2930
28
+ ? 'eip2930'
29
+ : never)
30
+ | (serializedTransaction extends TransactionSerializedEIP4844
31
+ ? 'eip4844'
32
+ : never)
33
+ | (serializedTransaction extends TransactionSerializedLegacy
34
+ ? 'legacy'
35
+ : never),
36
+ > = IsNarrowable<serializedTransaction, Hex> extends true
37
+ ? IsNever<result> extends false
38
+ ? result
20
39
  : 'legacy'
40
+ : TransactionType
21
41
 
22
42
  export type GetSerializedTransactionTypeErrorType =
23
43
  | HexToNumberErrorType
@@ -26,20 +46,23 @@ export type GetSerializedTransactionTypeErrorType =
26
46
  | ErrorType
27
47
 
28
48
  export function getSerializedTransactionType<
29
- TSerialized extends TransactionSerialized,
49
+ const serializedTransaction extends TransactionSerializedGeneric,
30
50
  >(
31
- serializedTransaction: TSerialized,
32
- ): GetSerializedTransactionType<TSerialized> {
51
+ serializedTransaction: serializedTransaction,
52
+ ): GetSerializedTransactionType<serializedTransaction> {
33
53
  const serializedType = sliceHex(serializedTransaction, 0, 1)
34
54
 
55
+ if (serializedType === '0x03')
56
+ return 'eip4844' as GetSerializedTransactionType<serializedTransaction>
57
+
35
58
  if (serializedType === '0x02')
36
- return 'eip1559' as GetSerializedTransactionType<TSerialized>
59
+ return 'eip1559' as GetSerializedTransactionType<serializedTransaction>
37
60
 
38
61
  if (serializedType === '0x01')
39
- return 'eip2930' as GetSerializedTransactionType<TSerialized>
62
+ return 'eip2930' as GetSerializedTransactionType<serializedTransaction>
40
63
 
41
64
  if (serializedType !== '0x' && hexToNumber(serializedType) >= 0xc0)
42
- return 'legacy' as GetSerializedTransactionType<TSerialized>
65
+ return 'legacy' as GetSerializedTransactionType<serializedTransaction>
43
66
 
44
67
  throw new InvalidSerializedTransactionTypeError({ serializedType })
45
68
  }
@@ -4,52 +4,135 @@ import {
4
4
  } from '../../errors/transaction.js'
5
5
  import type { ErrorType } from '../../errors/utils.js'
6
6
  import type {
7
- TransactionSerializable,
7
+ FeeValuesEIP1559,
8
+ FeeValuesEIP4844,
9
+ FeeValuesLegacy,
10
+ } from '../../index.js'
11
+ import type {
12
+ TransactionRequest,
13
+ TransactionRequestEIP1559,
14
+ TransactionRequestEIP2930,
15
+ TransactionRequestEIP4844,
16
+ TransactionRequestLegacy,
8
17
  TransactionSerializableEIP1559,
9
18
  TransactionSerializableEIP2930,
19
+ TransactionSerializableEIP4844,
10
20
  TransactionSerializableGeneric,
11
21
  TransactionSerializableLegacy,
12
22
  } from '../../types/transaction.js'
23
+ import type { Assign, IsNever, OneOf, Opaque } from '../../types/utils.js'
24
+
25
+ type BaseProperties = {
26
+ accessList?: undefined
27
+ blobs?: undefined
28
+ blobVersionedHashes?: undefined
29
+ gasPrice?: undefined
30
+ maxFeePerBlobGas?: undefined
31
+ maxFeePerGas?: undefined
32
+ maxPriorityFeePerGas?: undefined
33
+ sidecars?: undefined
34
+ }
35
+
36
+ type LegacyProperties = Assign<BaseProperties, FeeValuesLegacy>
37
+ type EIP1559Properties = Assign<
38
+ BaseProperties,
39
+ OneOf<
40
+ | {
41
+ maxFeePerGas: FeeValuesEIP1559['maxFeePerGas']
42
+ }
43
+ | {
44
+ maxPriorityFeePerGas: FeeValuesEIP1559['maxPriorityFeePerGas']
45
+ },
46
+ FeeValuesEIP1559
47
+ > & {
48
+ accessList?: TransactionSerializableEIP2930['accessList']
49
+ }
50
+ >
51
+ type EIP2930Properties = Assign<
52
+ BaseProperties,
53
+ Partial<FeeValuesLegacy> & {
54
+ accessList: TransactionSerializableEIP2930['accessList']
55
+ }
56
+ >
57
+ type EIP4844Properties = Assign<
58
+ BaseProperties,
59
+ Partial<FeeValuesEIP4844> &
60
+ OneOf<
61
+ | {
62
+ blobs: TransactionSerializableEIP4844['blobs']
63
+ }
64
+ | {
65
+ blobVersionedHashes: TransactionSerializableEIP4844['blobVersionedHashes']
66
+ }
67
+ | {
68
+ sidecars: TransactionSerializableEIP4844['sidecars']
69
+ },
70
+ TransactionSerializableEIP4844
71
+ >
72
+ >
13
73
 
14
74
  export type GetTransactionType<
15
- TTransactionSerializable extends
16
- TransactionSerializable = TransactionSerializable,
17
- > =
18
- | (TTransactionSerializable extends TransactionSerializableLegacy
19
- ? 'legacy'
20
- : never)
21
- | (TTransactionSerializable extends TransactionSerializableEIP1559
22
- ? 'eip1559'
23
- : never)
24
- | (TTransactionSerializable extends TransactionSerializableEIP2930
25
- ? 'eip2930'
26
- : never)
27
- | (TTransactionSerializable extends TransactionSerializableGeneric
28
- ? TTransactionSerializable['type']
29
- : never)
75
+ transaction extends OneOf<
76
+ TransactionSerializableGeneric | TransactionRequest
77
+ > = TransactionSerializableGeneric,
78
+ result =
79
+ | (transaction extends
80
+ | Opaque<TransactionSerializableLegacy, transaction>
81
+ | Opaque<TransactionRequestLegacy, transaction>
82
+ | LegacyProperties
83
+ ? 'legacy'
84
+ : never)
85
+ | (transaction extends
86
+ | Opaque<TransactionSerializableEIP1559, transaction>
87
+ | Opaque<TransactionRequestEIP1559, transaction>
88
+ | EIP1559Properties
89
+ ? 'eip1559'
90
+ : never)
91
+ | (transaction extends
92
+ | Opaque<TransactionSerializableEIP2930, transaction>
93
+ | Opaque<TransactionRequestEIP2930, transaction>
94
+ | EIP2930Properties
95
+ ? 'eip2930'
96
+ : never)
97
+ | (transaction extends
98
+ | Opaque<TransactionSerializableEIP4844, transaction>
99
+ | Opaque<TransactionRequestEIP4844, transaction>
100
+ | EIP4844Properties
101
+ ? 'eip4844'
102
+ : never)
103
+ | (transaction['type'] extends string ? transaction['type'] : never),
104
+ > = IsNever<result> extends false ? result : string
30
105
 
31
106
  export type GetTransationTypeErrorType =
32
107
  | InvalidSerializableTransactionErrorType
33
108
  | ErrorType
34
109
 
35
110
  export function getTransactionType<
36
- TTransactionSerializable extends TransactionSerializable,
37
- >(
38
- transaction: TTransactionSerializable,
39
- ): GetTransactionType<TTransactionSerializable> {
111
+ const transaction extends OneOf<
112
+ TransactionSerializableGeneric | TransactionRequest
113
+ >,
114
+ >(transaction: transaction): GetTransactionType<transaction> {
40
115
  if (transaction.type)
41
- return transaction.type as GetTransactionType<TTransactionSerializable>
116
+ return transaction.type as GetTransactionType<transaction>
117
+
118
+ if (
119
+ typeof transaction.blobs !== 'undefined' ||
120
+ typeof transaction.blobVersionedHashes !== 'undefined' ||
121
+ typeof transaction.maxFeePerBlobGas !== 'undefined' ||
122
+ typeof transaction.sidecars !== 'undefined'
123
+ )
124
+ return 'eip4844' as any
42
125
 
43
126
  if (
44
127
  typeof transaction.maxFeePerGas !== 'undefined' ||
45
128
  typeof transaction.maxPriorityFeePerGas !== 'undefined'
46
- )
47
- return 'eip1559' as GetTransactionType<TTransactionSerializable>
129
+ ) {
130
+ return 'eip1559' as any
131
+ }
48
132
 
49
133
  if (typeof transaction.gasPrice !== 'undefined') {
50
- if (typeof transaction.accessList !== 'undefined')
51
- return 'eip2930' as GetTransactionType<TTransactionSerializable>
52
- return 'legacy' as GetTransactionType<TTransactionSerializable>
134
+ if (typeof transaction.accessList !== 'undefined') return 'eip2930' as any
135
+ return 'legacy' as any
53
136
  }
54
137
 
55
138
  throw new InvalidSerializableTransactionError({ transaction })
@@ -14,15 +14,21 @@ import type {
14
14
  AccessList,
15
15
  TransactionRequestEIP2930,
16
16
  TransactionRequestLegacy,
17
+ TransactionSerializable,
17
18
  TransactionSerializableEIP1559,
18
19
  TransactionSerializableEIP2930,
20
+ TransactionSerializableEIP4844,
19
21
  TransactionSerializableLegacy,
20
22
  TransactionSerialized,
21
23
  TransactionSerializedEIP1559,
22
24
  TransactionSerializedEIP2930,
25
+ TransactionSerializedEIP4844,
26
+ TransactionSerializedGeneric,
23
27
  TransactionType,
24
28
  } from '../../types/transaction.js'
29
+ import type { IsNarrowable } from '../../types/utils.js'
25
30
  import { type IsAddressErrorType, isAddress } from '../address/isAddress.js'
31
+ import { toBlobSidecars } from '../blob/toBlobSidecars.js'
26
32
  import { type IsHexErrorType, isHex } from '../data/isHex.js'
27
33
  import { type PadHexErrorType, padHex } from '../data/pad.js'
28
34
  import { trim } from '../data/trim.js'
@@ -39,9 +45,11 @@ import { isHash } from '../hash/isHash.js'
39
45
  import {
40
46
  type AssertTransactionEIP1559ErrorType,
41
47
  type AssertTransactionEIP2930ErrorType,
48
+ type AssertTransactionEIP4844ErrorType,
42
49
  type AssertTransactionLegacyErrorType,
43
50
  assertTransactionEIP1559,
44
51
  assertTransactionEIP2930,
52
+ assertTransactionEIP4844,
45
53
  assertTransactionLegacy,
46
54
  } from './assertTransaction.js'
47
55
  import {
@@ -51,22 +59,26 @@ import {
51
59
  } from './getSerializedTransactionType.js'
52
60
 
53
61
  export type ParseTransactionReturnType<
54
- TSerialized extends TransactionSerialized = TransactionSerialized,
62
+ TSerialized extends TransactionSerializedGeneric = TransactionSerialized,
55
63
  TType extends TransactionType = GetSerializedTransactionType<TSerialized>,
56
- > =
57
- | (TType extends 'eip1559' ? TransactionSerializableEIP1559 : never)
58
- | (TType extends 'eip2930' ? TransactionSerializableEIP2930 : never)
59
- | (TType extends 'legacy' ? TransactionSerializableLegacy : never)
64
+ > = IsNarrowable<TSerialized, Hex> extends true
65
+ ?
66
+ | (TType extends 'eip1559' ? TransactionSerializableEIP1559 : never)
67
+ | (TType extends 'eip2930' ? TransactionSerializableEIP2930 : never)
68
+ | (TType extends 'eip4844' ? TransactionSerializableEIP4844 : never)
69
+ | (TType extends 'legacy' ? TransactionSerializableLegacy : never)
70
+ : TransactionSerializable
60
71
 
61
72
  export type ParseTransactionErrorType =
62
73
  | GetSerializedTransactionTypeErrorType
63
74
  | ParseTransactionEIP1559ErrorType
64
75
  | ParseTransactionEIP2930ErrorType
76
+ | ParseTransactionEIP4844ErrorType
65
77
  | ParseTransactionLegacyErrorType
66
78
 
67
- export function parseTransaction<TSerialized extends TransactionSerialized>(
68
- serializedTransaction: TSerialized,
69
- ): ParseTransactionReturnType<TSerialized> {
79
+ export function parseTransaction<
80
+ const TSerialized extends TransactionSerializedGeneric,
81
+ >(serializedTransaction: TSerialized): ParseTransactionReturnType<TSerialized> {
70
82
  const type = getSerializedTransactionType(serializedTransaction)
71
83
 
72
84
  if (type === 'eip1559')
@@ -79,11 +91,118 @@ export function parseTransaction<TSerialized extends TransactionSerialized>(
79
91
  serializedTransaction as TransactionSerializedEIP2930,
80
92
  ) as ParseTransactionReturnType<TSerialized>
81
93
 
94
+ if (type === 'eip4844')
95
+ return parseTransactionEIP4844(
96
+ serializedTransaction as TransactionSerializedEIP4844,
97
+ ) as ParseTransactionReturnType<TSerialized>
98
+
82
99
  return parseTransactionLegacy(
83
100
  serializedTransaction,
84
101
  ) as ParseTransactionReturnType<TSerialized>
85
102
  }
86
103
 
104
+ type ParseTransactionEIP4844ErrorType =
105
+ | AssertTransactionEIP4844ErrorType
106
+ | ToTransactionArrayErrorType
107
+ | HexToBigIntErrorType
108
+ | HexToNumberErrorType
109
+ | InvalidLegacyVErrorType
110
+ | InvalidSerializedTransactionErrorType
111
+ | IsHexErrorType
112
+ | ParseEIP155SignatureErrorType
113
+ | ErrorType
114
+
115
+ function parseTransactionEIP4844(
116
+ serializedTransaction: TransactionSerializedEIP4844,
117
+ ): TransactionSerializableEIP4844 {
118
+ const transactionOrWrapperArray = toTransactionArray(serializedTransaction)
119
+
120
+ const hasNetworkWrapper = transactionOrWrapperArray.length === 4
121
+
122
+ const transactionArray = hasNetworkWrapper
123
+ ? transactionOrWrapperArray[0]
124
+ : transactionOrWrapperArray
125
+ const wrapperArray = hasNetworkWrapper
126
+ ? transactionOrWrapperArray.slice(1)
127
+ : []
128
+
129
+ const [
130
+ chainId,
131
+ nonce,
132
+ maxPriorityFeePerGas,
133
+ maxFeePerGas,
134
+ gas,
135
+ to,
136
+ value,
137
+ data,
138
+ accessList,
139
+ maxFeePerBlobGas,
140
+ blobVersionedHashes,
141
+ v,
142
+ r,
143
+ s,
144
+ ] = transactionArray
145
+ const [blobs, commitments, proofs] = wrapperArray
146
+
147
+ if (!(transactionArray.length === 11 || transactionArray.length === 14))
148
+ throw new InvalidSerializedTransactionError({
149
+ attributes: {
150
+ chainId,
151
+ nonce,
152
+ maxPriorityFeePerGas,
153
+ maxFeePerGas,
154
+ gas,
155
+ to,
156
+ value,
157
+ data,
158
+ accessList,
159
+ ...(transactionArray.length > 9
160
+ ? {
161
+ v,
162
+ r,
163
+ s,
164
+ }
165
+ : {}),
166
+ },
167
+ serializedTransaction,
168
+ type: 'eip4844',
169
+ })
170
+
171
+ const transaction = {
172
+ blobVersionedHashes: blobVersionedHashes as Hex[],
173
+ chainId: hexToNumber(chainId as Hex),
174
+ type: 'eip4844',
175
+ } as TransactionSerializableEIP4844
176
+ if (isHex(to) && to !== '0x') transaction.to = to
177
+ if (isHex(gas) && gas !== '0x') transaction.gas = hexToBigInt(gas)
178
+ if (isHex(data) && data !== '0x') transaction.data = data
179
+ if (isHex(nonce) && nonce !== '0x') transaction.nonce = hexToNumber(nonce)
180
+ if (isHex(value) && value !== '0x') transaction.value = hexToBigInt(value)
181
+ if (isHex(maxFeePerBlobGas) && maxFeePerBlobGas !== '0x')
182
+ transaction.maxFeePerBlobGas = hexToBigInt(maxFeePerBlobGas)
183
+ if (isHex(maxFeePerGas) && maxFeePerGas !== '0x')
184
+ transaction.maxFeePerGas = hexToBigInt(maxFeePerGas)
185
+ if (isHex(maxPriorityFeePerGas) && maxPriorityFeePerGas !== '0x')
186
+ transaction.maxPriorityFeePerGas = hexToBigInt(maxPriorityFeePerGas)
187
+ if (accessList.length !== 0 && accessList !== '0x')
188
+ transaction.accessList = parseAccessList(accessList as RecursiveArray<Hex>)
189
+ if (blobs && commitments && proofs)
190
+ transaction.sidecars = toBlobSidecars({
191
+ blobs: blobs as Hex[],
192
+ commitments: commitments as Hex[],
193
+ proofs: proofs as Hex[],
194
+ })
195
+
196
+ assertTransactionEIP4844(transaction)
197
+
198
+ const signature =
199
+ transactionArray.length === 14
200
+ ? parseEIP155Signature(transactionArray as RecursiveArray<Hex>)
201
+ : undefined
202
+
203
+ return { ...signature, ...transaction }
204
+ }
205
+
87
206
  type ParseTransactionEIP1559ErrorType =
88
207
  | AssertTransactionEIP1559ErrorType
89
208
  | ToTransactionArrayErrorType
@@ -303,6 +422,7 @@ function parseTransactionLegacy(
303
422
  if (chainId > 0) transaction.chainId = chainId
304
423
  else if (v !== 27n && v !== 28n) throw new InvalidLegacyVError({ v })
305
424
 
425
+ delete transaction.yParity
306
426
  transaction.v = v
307
427
  transaction.s = s as Hex
308
428
  transaction.r = r as Hex
@@ -32,7 +32,7 @@ export function serializeAccessList(
32
32
  ): RecursiveArray<Hex> {
33
33
  if (!accessList || accessList.length === 0) return []
34
34
 
35
- const serializedAccessList: RecursiveArray<Hex> = []
35
+ const serializedAccessList = []
36
36
  for (let i = 0; i < accessList.length; i++) {
37
37
  const { address, storageKeys } = accessList[i]
38
38