voltaire-effect 0.2.23 → 0.2.25

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 (397) hide show
  1. package/dist/KZGService-B7PJerOb.d.ts +146 -0
  2. package/dist/ProviderService-BZ5pqDrD.d.ts +319 -0
  3. package/dist/{X25519Test-DGsk1V9o.d.ts → X25519Test-D5Q-5fL9.d.ts} +4 -143
  4. package/dist/crypto/index.d.ts +5 -6
  5. package/dist/crypto/index.js +227 -201
  6. package/dist/{index-IgkEHjBe.d.ts → index-BCOuszKZ.d.ts} +17634 -11962
  7. package/dist/index.d.ts +3195 -976
  8. package/dist/index.js +6994 -4679
  9. package/dist/native/index.d.ts +25 -16
  10. package/dist/native/index.js +7020 -4705
  11. package/dist/primitives/index.d.ts +14 -8
  12. package/dist/primitives/index.js +4060 -2539
  13. package/dist/services/index.d.ts +9054 -30
  14. package/dist/services/index.js +1592 -1331
  15. package/package.json +2 -2
  16. package/src/crypto/ERC6492/ERC6492.test.ts +32 -14
  17. package/src/crypto/ERC6492/verifySignature.ts +4 -5
  18. package/src/crypto/Keccak256/Keccak256.test.ts +42 -1
  19. package/src/crypto/Keccak256/hashSync.ts +53 -0
  20. package/src/crypto/Keccak256/index.ts +2 -0
  21. package/src/index.ts +7 -2
  22. package/src/primitives/Abi/decode.test.ts +38 -0
  23. package/src/primitives/Abi/decode.ts +67 -0
  24. package/src/primitives/Abi/decodeData.test.ts +37 -0
  25. package/src/primitives/Abi/decodeData.ts +77 -0
  26. package/src/primitives/Abi/decodeLog.test.ts +32 -0
  27. package/src/primitives/Abi/decodeLog.ts +81 -0
  28. package/src/primitives/Abi/decodeWrappedError.test.ts +41 -0
  29. package/src/primitives/Abi/decodeWrappedError.ts +68 -0
  30. package/src/primitives/Abi/encode.test.ts +43 -0
  31. package/src/primitives/Abi/encode.ts +67 -0
  32. package/src/primitives/Abi/encodePacked.test.ts +35 -0
  33. package/src/primitives/Abi/encodePacked.ts +62 -0
  34. package/src/primitives/Abi/encodeWrappedError.test.ts +21 -0
  35. package/src/primitives/Abi/encodeWrappedError.ts +64 -0
  36. package/src/primitives/Abi/findSelectorCollisions.test.ts +50 -0
  37. package/src/primitives/Abi/findSelectorCollisions.ts +83 -0
  38. package/src/primitives/Abi/index.ts +33 -7
  39. package/src/primitives/Abi/parseLogs.test.ts +37 -0
  40. package/src/primitives/Abi/parseLogs.ts +62 -0
  41. package/src/primitives/AccessList/AccessList.test.ts +229 -0
  42. package/src/primitives/AccessList/AccessListTypeSchema.ts +16 -0
  43. package/src/primitives/AccessList/addressCount.ts +21 -0
  44. package/src/primitives/AccessList/assertValid.ts +37 -0
  45. package/src/primitives/AccessList/create.ts +19 -0
  46. package/src/primitives/AccessList/deduplicate.ts +23 -0
  47. package/src/primitives/AccessList/from.ts +39 -0
  48. package/src/primitives/AccessList/fromBytes.ts +36 -0
  49. package/src/primitives/AccessList/gasCost.ts +22 -0
  50. package/src/primitives/AccessList/gasSavings.ts +26 -0
  51. package/src/primitives/AccessList/hasSavings.ts +23 -0
  52. package/src/primitives/AccessList/includesAddress.ts +25 -0
  53. package/src/primitives/AccessList/includesStorageKey.ts +28 -0
  54. package/src/primitives/AccessList/index.ts +99 -19
  55. package/src/primitives/AccessList/is.ts +23 -0
  56. package/src/primitives/AccessList/isEmpty.ts +23 -0
  57. package/src/primitives/AccessList/isItem.ts +22 -0
  58. package/src/primitives/AccessList/keysFor.ts +29 -0
  59. package/src/primitives/AccessList/merge.ts +24 -0
  60. package/src/primitives/AccessList/storageKeyCount.ts +21 -0
  61. package/src/primitives/AccessList/toBytes.ts +23 -0
  62. package/src/primitives/AccessList/withAddress.ts +27 -0
  63. package/src/primitives/AccessList/withStorageKey.ts +30 -0
  64. package/src/primitives/Address/Address.test.ts +146 -0
  65. package/src/primitives/Address/assert.ts +51 -0
  66. package/src/primitives/Address/calculateCreate2Address.ts +33 -0
  67. package/src/primitives/Address/calculateCreateAddress.ts +30 -0
  68. package/src/primitives/Address/deduplicateAddresses.ts +20 -0
  69. package/src/primitives/Address/from.ts +41 -0
  70. package/src/primitives/Address/fromAbiEncoded.ts +35 -0
  71. package/src/primitives/Address/fromBase64.ts +25 -0
  72. package/src/primitives/Address/fromBytes.ts +25 -0
  73. package/src/primitives/Address/fromHex.ts +31 -0
  74. package/src/primitives/Address/fromNumber.ts +25 -0
  75. package/src/primitives/Address/fromPrivateKey.ts +25 -0
  76. package/src/primitives/Address/fromPublicKey.ts +56 -0
  77. package/src/primitives/Address/index.ts +99 -35
  78. package/src/primitives/Address/is.ts +20 -0
  79. package/src/primitives/Address/isAddress.ts +22 -0
  80. package/src/primitives/Address/sortAddresses.ts +19 -0
  81. package/src/primitives/Address/toChecksummed.ts +32 -0
  82. package/src/primitives/Address/toHex.ts +18 -0
  83. package/src/primitives/Address/zero.ts +18 -0
  84. package/src/primitives/Base64/Base64.test.ts +75 -0
  85. package/src/primitives/Base64/convert.ts +37 -0
  86. package/src/primitives/Base64/decode.ts +59 -0
  87. package/src/primitives/Base64/encode.ts +42 -0
  88. package/src/primitives/Base64/from.ts +39 -0
  89. package/src/primitives/Base64/index.ts +81 -1
  90. package/src/primitives/Base64/size.ts +16 -0
  91. package/src/primitives/Base64/validation.ts +16 -0
  92. package/src/primitives/Blob/Blob.test.ts +292 -0
  93. package/src/primitives/Blob/calculateGas.ts +30 -0
  94. package/src/primitives/Blob/estimateBlobCount.ts +30 -0
  95. package/src/primitives/Blob/from.ts +38 -0
  96. package/src/primitives/Blob/fromData.ts +36 -0
  97. package/src/primitives/Blob/index.ts +99 -12
  98. package/src/primitives/Blob/isValidVersion.ts +27 -0
  99. package/src/primitives/Blob/joinData.ts +43 -0
  100. package/src/primitives/Blob/splitData.ts +36 -0
  101. package/src/primitives/Blob/toCommitment.ts +43 -0
  102. package/src/primitives/Blob/toProof.ts +50 -0
  103. package/src/primitives/Blob/toVersionedHash.ts +35 -0
  104. package/src/primitives/Blob/verify.ts +49 -0
  105. package/src/primitives/Blob/verifyBatch.ts +119 -0
  106. package/src/primitives/BloomFilter/BloomFilter.test.ts +138 -0
  107. package/src/primitives/BloomFilter/add.ts +23 -0
  108. package/src/primitives/BloomFilter/combine.ts +21 -0
  109. package/src/primitives/BloomFilter/contains.ts +26 -0
  110. package/src/primitives/BloomFilter/create.ts +35 -0
  111. package/src/primitives/BloomFilter/density.ts +22 -0
  112. package/src/primitives/BloomFilter/expectedFalsePositiveRate.ts +25 -0
  113. package/src/primitives/BloomFilter/fromHex.ts +37 -0
  114. package/src/primitives/BloomFilter/hash.ts +43 -0
  115. package/src/primitives/BloomFilter/index.ts +59 -37
  116. package/src/primitives/BloomFilter/isEmpty.ts +22 -0
  117. package/src/primitives/BloomFilter/merge.ts +24 -0
  118. package/src/primitives/BloomFilter/toHex.ts +22 -0
  119. package/src/primitives/Bytecode/analyze.ts +58 -0
  120. package/src/primitives/Bytecode/detectFusions.ts +10 -0
  121. package/src/primitives/Bytecode/equals.ts +10 -0
  122. package/src/primitives/Bytecode/extractRuntime.ts +12 -0
  123. package/src/primitives/Bytecode/format.ts +16 -0
  124. package/src/primitives/Bytecode/from.ts +16 -0
  125. package/src/primitives/Bytecode/fromHex.ts +14 -0
  126. package/src/primitives/Bytecode/getBlock.ts +12 -0
  127. package/src/primitives/Bytecode/getNextPc.ts +12 -0
  128. package/src/primitives/Bytecode/getPushSize.ts +8 -0
  129. package/src/primitives/Bytecode/hasMetadata.ts +10 -0
  130. package/src/primitives/Bytecode/hash.ts +9 -0
  131. package/src/primitives/Bytecode/index.ts +103 -13
  132. package/src/primitives/Bytecode/isPush.ts +8 -0
  133. package/src/primitives/Bytecode/isTerminator.ts +8 -0
  134. package/src/primitives/Bytecode/isValidJumpDest.ts +12 -0
  135. package/src/primitives/Bytecode/parseInstructions.ts +10 -0
  136. package/src/primitives/Bytecode/prettyPrint.ts +12 -0
  137. package/src/primitives/Bytecode/scan.ts +20 -0
  138. package/src/primitives/Bytecode/size.ts +9 -0
  139. package/src/primitives/Bytecode/stripMetadata.ts +10 -0
  140. package/src/primitives/Bytecode/toAbi.ts +10 -0
  141. package/src/primitives/Bytecode/toHex.ts +10 -0
  142. package/src/primitives/Bytecode/types.ts +23 -0
  143. package/src/primitives/Bytecode/validate.ts +9 -0
  144. package/src/primitives/ContractSignature/ContractSignature.test.ts +1 -13
  145. package/src/primitives/ContractSignature/verifySignature.ts +88 -62
  146. package/src/primitives/Ens/Ens.test.ts +71 -0
  147. package/src/primitives/Ens/convert.ts +13 -0
  148. package/src/primitives/Ens/from.ts +32 -0
  149. package/src/primitives/Ens/hash.ts +46 -0
  150. package/src/primitives/Ens/index.ts +86 -4
  151. package/src/primitives/Ens/normalize.ts +45 -0
  152. package/src/primitives/Ens/validation.ts +38 -0
  153. package/src/primitives/EventLog/accessors.ts +32 -0
  154. package/src/primitives/EventLog/clone.ts +17 -0
  155. package/src/primitives/EventLog/create.ts +46 -0
  156. package/src/primitives/EventLog/filtering.ts +48 -0
  157. package/src/primitives/EventLog/index.ts +96 -6
  158. package/src/primitives/EventLog/status.ts +17 -0
  159. package/src/primitives/EventLog/toRpc.ts +49 -0
  160. package/src/primitives/Hardfork/HardforkSchema.ts +3 -3
  161. package/src/primitives/Hardfork/allIds.ts +13 -0
  162. package/src/primitives/Hardfork/allNames.ts +13 -0
  163. package/src/primitives/Hardfork/compare.ts +17 -0
  164. package/src/primitives/Hardfork/comparisons.ts +45 -0
  165. package/src/primitives/Hardfork/equals.ts +17 -0
  166. package/src/primitives/Hardfork/features.ts +61 -0
  167. package/src/primitives/Hardfork/fromString.ts +16 -0
  168. package/src/primitives/Hardfork/index.ts +128 -18
  169. package/src/primitives/Hardfork/isValidName.ts +14 -0
  170. package/src/primitives/Hardfork/minMax.ts +23 -0
  171. package/src/primitives/Hardfork/range.ts +19 -0
  172. package/src/primitives/Hardfork/toString.ts +16 -0
  173. package/src/primitives/Hash/Hash.test.ts +104 -0
  174. package/src/primitives/Hash/from.ts +47 -0
  175. package/src/primitives/Hash/fromBytes.ts +46 -0
  176. package/src/primitives/Hash/fromHex.ts +44 -0
  177. package/src/primitives/Hash/index.ts +45 -8
  178. package/src/primitives/Hash/isHash.ts +31 -0
  179. package/src/primitives/Hash/toHex.ts +29 -0
  180. package/src/primitives/Hex/Hex.test.ts +327 -153
  181. package/src/primitives/Hex/assertSize.ts +41 -0
  182. package/src/primitives/Hex/concat.ts +37 -0
  183. package/src/primitives/Hex/from.ts +38 -0
  184. package/src/primitives/Hex/fromBigInt.ts +40 -0
  185. package/src/primitives/Hex/fromBoolean.ts +29 -0
  186. package/src/primitives/Hex/fromNumber.ts +41 -0
  187. package/src/primitives/Hex/fromString.ts +28 -0
  188. package/src/primitives/Hex/index.ts +68 -37
  189. package/src/primitives/Hex/pad.ts +40 -0
  190. package/src/primitives/Hex/padRight.ts +39 -0
  191. package/src/primitives/Hex/size.ts +29 -0
  192. package/src/primitives/Hex/slice.ts +42 -0
  193. package/src/primitives/Hex/toBigInt.ts +27 -0
  194. package/src/primitives/Hex/toBoolean.ts +38 -0
  195. package/src/primitives/Hex/toNumber.ts +37 -0
  196. package/src/primitives/Hex/toStringHex.ts +39 -0
  197. package/src/primitives/Hex/trim.ts +27 -0
  198. package/src/primitives/Hex/validate.ts +37 -0
  199. package/src/primitives/Hex/xor.ts +39 -0
  200. package/src/primitives/Opcode/OpcodeSchema.ts +1 -1
  201. package/src/primitives/Opcode/disassemble.ts +15 -0
  202. package/src/primitives/Opcode/dupPosition.ts +15 -0
  203. package/src/primitives/Opcode/format.ts +15 -0
  204. package/src/primitives/Opcode/getters.ts +54 -0
  205. package/src/primitives/Opcode/index.ts +301 -11
  206. package/src/primitives/Opcode/info.ts +18 -0
  207. package/src/primitives/Opcode/jumpDests.ts +15 -0
  208. package/src/primitives/Opcode/logTopics.ts +15 -0
  209. package/src/primitives/Opcode/name.ts +15 -0
  210. package/src/primitives/Opcode/parse.ts +15 -0
  211. package/src/primitives/Opcode/predicates.ts +72 -0
  212. package/src/primitives/Opcode/pushBytes.ts +15 -0
  213. package/src/primitives/Opcode/pushOpcode.ts +15 -0
  214. package/src/primitives/Opcode/swapPosition.ts +15 -0
  215. package/src/primitives/Rlp/decodeBatch.ts +46 -0
  216. package/src/primitives/Rlp/decodeObject.ts +46 -0
  217. package/src/primitives/Rlp/decodeValue.ts +51 -0
  218. package/src/primitives/Rlp/encodeBatch.ts +50 -0
  219. package/src/primitives/Rlp/encodeObject.ts +48 -0
  220. package/src/primitives/Rlp/encodeVariadic.ts +49 -0
  221. package/src/primitives/Rlp/equals.ts +22 -0
  222. package/src/primitives/Rlp/from.ts +44 -0
  223. package/src/primitives/Rlp/fromJSON.ts +45 -0
  224. package/src/primitives/Rlp/getEncodedLength.ts +47 -0
  225. package/src/primitives/Rlp/getLength.ts +44 -0
  226. package/src/primitives/Rlp/index.ts +67 -14
  227. package/src/primitives/Rlp/isBytesData.ts +21 -0
  228. package/src/primitives/Rlp/isCanonical.ts +32 -0
  229. package/src/primitives/Rlp/isData.ts +21 -0
  230. package/src/primitives/Rlp/isList.ts +46 -0
  231. package/src/primitives/Rlp/isListData.ts +21 -0
  232. package/src/primitives/Rlp/isString.ts +46 -0
  233. package/src/primitives/Rlp/toJSON.ts +20 -0
  234. package/src/primitives/Rlp/toRaw.ts +31 -0
  235. package/src/primitives/Signature/Signature.test.ts +217 -0
  236. package/src/primitives/Signature/from.ts +38 -0
  237. package/src/primitives/Signature/fromBytes.ts +31 -0
  238. package/src/primitives/Signature/fromCompact.ts +33 -0
  239. package/src/primitives/Signature/fromDER.ts +35 -0
  240. package/src/primitives/Signature/fromEd25519.ts +24 -0
  241. package/src/primitives/Signature/fromHex.ts +29 -0
  242. package/src/primitives/Signature/fromP256.ts +25 -0
  243. package/src/primitives/Signature/fromRpc.ts +38 -0
  244. package/src/primitives/Signature/fromSecp256k1.ts +29 -0
  245. package/src/primitives/Signature/fromTuple.ts +33 -0
  246. package/src/primitives/Signature/getR.ts +24 -0
  247. package/src/primitives/Signature/getS.ts +24 -0
  248. package/src/primitives/Signature/getV.ts +24 -0
  249. package/src/primitives/Signature/index.ts +61 -11
  250. package/src/primitives/Signature/toDER.ts +24 -0
  251. package/src/primitives/Signature/toHex.ts +24 -0
  252. package/src/primitives/Signature/toRpc.ts +35 -0
  253. package/src/primitives/Signature/toTuple.ts +29 -0
  254. package/src/primitives/Signature/verify.ts +31 -0
  255. package/src/primitives/Siwe/create.ts +56 -0
  256. package/src/primitives/Siwe/hash.ts +27 -0
  257. package/src/primitives/Siwe/index.ts +57 -21
  258. package/src/primitives/Siwe/parse.ts +24 -0
  259. package/src/primitives/Siwe/verify.ts +47 -0
  260. package/src/primitives/Transaction/Transaction.test.ts +309 -0
  261. package/src/primitives/Transaction/index.ts +467 -2
  262. package/src/primitives/Uint/Uint.test.ts +200 -0
  263. package/src/primitives/Uint/dividedBy.ts +34 -0
  264. package/src/primitives/Uint/from.ts +35 -0
  265. package/src/primitives/Uint/fromAbiEncoded.ts +29 -0
  266. package/src/primitives/Uint/fromBigInt.ts +30 -0
  267. package/src/primitives/Uint/fromBytes.ts +32 -0
  268. package/src/primitives/Uint/fromHex.ts +32 -0
  269. package/src/primitives/Uint/fromNumber.ts +30 -0
  270. package/src/primitives/Uint/index.ts +90 -45
  271. package/src/primitives/Uint/isUint256.ts +25 -0
  272. package/src/primitives/Uint/isValid.ts +25 -0
  273. package/src/primitives/Uint/modulo.ts +34 -0
  274. package/src/primitives/Uint/toHex.ts +31 -0
  275. package/src/primitives/Uint/tryFrom.ts +30 -0
  276. package/src/services/Contract/Contract.test.ts +46 -41
  277. package/src/services/Contract/Contract.ts +25 -29
  278. package/src/services/Contract/ContractTypes.ts +6 -3
  279. package/src/services/Contract/estimateGas.test.ts +21 -9
  280. package/src/services/Contract/estimateGas.ts +21 -23
  281. package/src/services/Debug/Debug.ts +1 -1
  282. package/src/services/Debug/DebugService.ts +1 -1
  283. package/src/services/FeeEstimator/DefaultFeeEstimator.ts +10 -6
  284. package/src/services/FeeEstimator/FeeEstimator.test.ts +68 -62
  285. package/src/services/Multicall/BalanceResolver.ts +1 -1
  286. package/src/services/Multicall/GetBalance.ts +1 -1
  287. package/src/services/Multicall/Multicall.ts +1 -1
  288. package/src/services/NonceManager/DefaultNonceManager.ts +4 -7
  289. package/src/services/NonceManager/NonceManager.test.ts +20 -33
  290. package/src/services/Provider/Provider.test.ts +155 -349
  291. package/src/services/Provider/Provider.ts +14 -1180
  292. package/src/services/Provider/ProviderService.ts +14 -1199
  293. package/src/services/Provider/actions/multicall.test.ts +29 -39
  294. package/src/services/Provider/actions/multicall.ts +2 -2
  295. package/src/services/Provider/actions/readContract.test.ts +45 -50
  296. package/src/services/Provider/actions/readContract.ts +2 -6
  297. package/src/services/Provider/actions/simulateContract.test.ts +55 -232
  298. package/src/services/Provider/actions/simulateContract.ts +2 -3
  299. package/src/services/Provider/ens/getEnsAddress.ts +11 -14
  300. package/src/services/Provider/ens/getEnsName.ts +15 -18
  301. package/src/services/Provider/ens/getEnsResolver.ts +11 -14
  302. package/src/services/Provider/ens/getEnsText.ts +15 -18
  303. package/src/services/Provider/functions/backfillBlocks.ts +97 -0
  304. package/src/services/Provider/functions/call.ts +45 -0
  305. package/src/services/Provider/functions/createAccessList.ts +61 -0
  306. package/src/services/Provider/functions/createBlockFilter.ts +41 -0
  307. package/src/services/Provider/functions/createEventFilter.ts +43 -0
  308. package/src/services/Provider/functions/createPendingTransactionFilter.ts +41 -0
  309. package/src/services/Provider/functions/estimateGas.ts +52 -0
  310. package/src/services/Provider/functions/getAccounts.ts +40 -0
  311. package/src/services/Provider/functions/getBalance.ts +50 -0
  312. package/src/services/Provider/functions/getBlobBaseFee.ts +46 -0
  313. package/src/services/Provider/functions/getBlock.ts +95 -0
  314. package/src/services/Provider/functions/getBlockNumber.ts +51 -0
  315. package/src/services/Provider/functions/getBlockReceipts.ts +78 -0
  316. package/src/services/Provider/functions/getBlockTransactionCount.ts +86 -0
  317. package/src/services/Provider/functions/getChainId.ts +46 -0
  318. package/src/services/Provider/functions/getCode.ts +43 -0
  319. package/src/services/Provider/functions/getCoinbase.ts +40 -0
  320. package/src/services/Provider/functions/getFeeHistory.ts +85 -0
  321. package/src/services/Provider/functions/getFilterChanges.ts +42 -0
  322. package/src/services/Provider/functions/getFilterLogs.ts +44 -0
  323. package/src/services/Provider/functions/getGasPrice.ts +46 -0
  324. package/src/services/Provider/functions/getHashrate.ts +46 -0
  325. package/src/services/Provider/functions/getLogs.ts +45 -0
  326. package/src/services/Provider/functions/getMaxPriorityFeePerGas.ts +46 -0
  327. package/src/services/Provider/functions/getMining.ts +40 -0
  328. package/src/services/Provider/functions/getProof.ts +52 -0
  329. package/src/services/Provider/functions/getProtocolVersion.ts +40 -0
  330. package/src/services/Provider/functions/getStorageAt.ts +52 -0
  331. package/src/services/Provider/functions/getSyncing.ts +56 -0
  332. package/src/services/Provider/functions/getTransaction.ts +57 -0
  333. package/src/services/Provider/functions/getTransactionByBlockHashAndIndex.ts +73 -0
  334. package/src/services/Provider/functions/getTransactionByBlockNumberAndIndex.ts +86 -0
  335. package/src/services/Provider/functions/getTransactionConfirmations.ts +70 -0
  336. package/src/services/Provider/functions/getTransactionCount.ts +50 -0
  337. package/src/services/Provider/functions/getTransactionReceipt.ts +57 -0
  338. package/src/services/Provider/functions/getUncle.ts +97 -0
  339. package/src/services/Provider/functions/getUncleCount.ts +86 -0
  340. package/src/services/Provider/functions/index.ts +73 -0
  341. package/src/services/Provider/functions/netVersion.ts +40 -0
  342. package/src/services/Provider/functions/sendRawTransaction.ts +40 -0
  343. package/src/services/Provider/functions/sendTransaction.ts +48 -0
  344. package/src/services/Provider/functions/sign.ts +50 -0
  345. package/src/services/Provider/functions/signTransaction.ts +52 -0
  346. package/src/services/Provider/functions/simulateV1.ts +95 -0
  347. package/src/services/Provider/functions/simulateV2.ts +51 -0
  348. package/src/services/Provider/functions/subscribe.ts +49 -0
  349. package/src/services/Provider/functions/uninstallFilter.ts +40 -0
  350. package/src/services/Provider/functions/unsubscribe.ts +41 -0
  351. package/src/services/Provider/functions/waitForTransactionReceipt.ts +168 -0
  352. package/src/services/Provider/functions/watchBlocks.ts +98 -0
  353. package/src/services/Provider/index.ts +29 -178
  354. package/src/services/Provider/types.ts +780 -0
  355. package/src/services/Provider/utils.ts +204 -0
  356. package/src/services/RawProvider/ForkProviderTransport.ts +2 -3
  357. package/src/services/RawProvider/HttpProviderTransport.ts +3 -3
  358. package/src/services/RawProvider/InMemoryProviderTransport.ts +3 -3
  359. package/src/services/RawProvider/WebSocketProviderTransport.ts +3 -3
  360. package/src/services/Signer/Signer.test.ts +211 -187
  361. package/src/services/Signer/Signer.ts +26 -16
  362. package/src/services/Signer/actions/deployContract.test.ts +125 -105
  363. package/src/services/Signer/actions/deployContract.ts +3 -2
  364. package/src/services/Signer/actions/prepareAuthorization.test.ts +47 -48
  365. package/src/services/Signer/actions/prepareAuthorization.ts +3 -3
  366. package/src/services/Signer/actions/signAuthorization.test.ts +39 -45
  367. package/src/services/Signer/actions/signAuthorization.ts +3 -3
  368. package/src/services/Signer/actions/writeContract.test.ts +41 -57
  369. package/src/services/Transport/FallbackTransport.ts +3 -3
  370. package/src/services/Transport/HttpTransport.ts +3 -3
  371. package/src/services/Transport/config.ts +7 -7
  372. package/src/services/Transport/index.ts +3 -4
  373. package/src/services/errors.test.ts +3 -8
  374. package/src/services/index.ts +8 -90
  375. package/src/services/presets/index.ts +9 -10
  376. package/src/services/presets/presets.test.ts +14 -29
  377. package/src/standards/ERC165.test.ts +19 -20
  378. package/src/standards/ERC165.ts +9 -11
  379. package/src/type-exports.test.ts +37 -0
  380. package/dist/AccountService-BetXokad.d.ts +0 -1717
  381. package/dist/RpcResolver-BpvqybjD.d.ts +0 -6439
  382. package/src/services/Provider/Account.ts +0 -33
  383. package/src/services/Provider/AccountService.ts +0 -84
  384. package/src/services/Provider/Blocks.ts +0 -32
  385. package/src/services/Provider/BlocksService.ts +0 -73
  386. package/src/services/Provider/Events.ts +0 -33
  387. package/src/services/Provider/EventsService.ts +0 -71
  388. package/src/services/Provider/Network.ts +0 -41
  389. package/src/services/Provider/NetworkService.ts +0 -114
  390. package/src/services/Provider/Simulation.ts +0 -34
  391. package/src/services/Provider/SimulationService.ts +0 -161
  392. package/src/services/Provider/Streaming.ts +0 -30
  393. package/src/services/Provider/StreamingService.ts +0 -58
  394. package/src/services/Provider/Transaction.ts +0 -39
  395. package/src/services/Provider/TransactionService.ts +0 -83
  396. package/src/services/Provider/filters.ts +0 -91
  397. package/src/services/Provider/getBlobBaseFee.ts +0 -170
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @module Base64
3
- * @description Effect-based schemas for standard and URL-safe base64 encoding.
3
+ * @description Effect-based schemas and functions for standard and URL-safe base64 encoding.
4
4
  *
5
5
  * ## Type Declarations
6
6
  *
@@ -12,17 +12,97 @@
12
12
  * }
13
13
  * ```
14
14
  *
15
+ * ## Schemas
16
+ *
17
+ * | Schema | Input | Output |
18
+ * |--------|-------|--------|
19
+ * | `Base64.Schema` | string \| Uint8Array | BrandedBase64 |
20
+ * | `Base64.UrlSchema` | string \| Uint8Array | BrandedBase64Url |
21
+ *
22
+ * ## Constructors (Effect-wrapped)
23
+ *
24
+ * ```typescript
25
+ * Base64.from(value) // Effect<BrandedBase64, Error>
26
+ * Base64.fromUrlSafe(value) // Effect<BrandedBase64Url, Error>
27
+ * ```
28
+ *
29
+ * ## Encoding (Pure)
30
+ *
31
+ * ```typescript
32
+ * Base64.encode(bytes) // BrandedBase64
33
+ * Base64.encodeString(str) // BrandedBase64
34
+ * Base64.encodeUrlSafe(bytes) // BrandedBase64Url
35
+ * Base64.encodeStringUrlSafe(str) // BrandedBase64Url
36
+ * ```
37
+ *
38
+ * ## Decoding (Effect-wrapped)
39
+ *
40
+ * ```typescript
41
+ * Base64.decode(encoded) // Effect<Uint8Array, Error>
42
+ * Base64.decodeToString(encoded) // Effect<string, Error>
43
+ * Base64.decodeUrlSafe(encoded) // Effect<Uint8Array, Error>
44
+ * Base64.decodeUrlSafeToString(encoded) // Effect<string, Error>
45
+ * ```
46
+ *
47
+ * ## Conversion (Pure)
48
+ *
49
+ * ```typescript
50
+ * Base64.toBytes(b64) // Uint8Array
51
+ * Base64.toBytesUrlSafe(b64) // Uint8Array
52
+ * Base64.toString(b64) // string
53
+ * Base64.toStringUrlSafe(b64) // string
54
+ * Base64.toBase64(bytes) // BrandedBase64
55
+ * Base64.toBase64Url(bytes) // BrandedBase64Url
56
+ * ```
57
+ *
58
+ * ## Validation (Pure)
59
+ *
60
+ * ```typescript
61
+ * Base64.isValid(str) // boolean
62
+ * Base64.isValidUrlSafe(str) // boolean
63
+ * ```
64
+ *
65
+ * ## Size Calculation (Pure)
66
+ *
67
+ * ```typescript
68
+ * Base64.calcEncodedSize(byteCount) // number
69
+ * Base64.calcDecodedSize(encoded) // number
70
+ * ```
71
+ *
15
72
  * @example
16
73
  * ```typescript
17
74
  * import * as Base64 from 'voltaire-effect/primitives/Base64'
18
75
  * import * as Schema from 'effect/Schema'
76
+ * import { Effect } from 'effect'
19
77
  *
20
78
  * const encoded = Schema.decodeSync(Base64.Schema)('SGVsbG8gV29ybGQ=')
79
+ * const decoded = await Effect.runPromise(Base64.decode('SGVsbG8='))
21
80
  * ```
22
81
  *
23
82
  * @since 0.0.1
24
83
  * @module
25
84
  */
26
85
 
86
+ // Types
27
87
  export type { BrandedBase64, BrandedBase64Url } from "@tevm/voltaire/Base64";
88
+
89
+ // Schemas
28
90
  export { Schema, UrlSchema } from "./Base64Schema.js";
91
+
92
+ // Constructors (Effect-wrapped)
93
+ export { from, fromUrlSafe } from "./from.js";
94
+
95
+ // Encoding (Pure)
96
+ export { encode, encodeString, encodeUrlSafe, encodeStringUrlSafe } from "./encode.js";
97
+
98
+ // Decoding (Effect-wrapped)
99
+ export { decode, decodeToString, decodeUrlSafe, decodeUrlSafeToString } from "./decode.js";
100
+
101
+ // Conversion (Pure)
102
+ export { toBytes, toBytesUrlSafe, toString, toStringUrlSafe, toBase64, toBase64Url } from "./convert.js";
103
+
104
+ // Validation (Pure)
105
+ export { isValid, isValidUrlSafe } from "./validation.js";
106
+
107
+ // Size Calculation (Pure)
108
+ export { calcEncodedSize, calcDecodedSize } from "./size.js";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @module size
3
+ * @description Pure Base64 size calculation functions
4
+ * @since 0.1.0
5
+ */
6
+ import { Base64 } from "@tevm/voltaire/Base64";
7
+
8
+ /**
9
+ * Calculate encoded size for given byte count
10
+ */
11
+ export const calcEncodedSize = (byteCount: number): number => Base64.calcEncodedSize(byteCount);
12
+
13
+ /**
14
+ * Calculate decoded size for given Base64 string length
15
+ */
16
+ export const calcDecodedSize = (encodedLength: number): number => Base64.calcDecodedSize(encodedLength);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @module validation
3
+ * @description Pure Base64 validation functions
4
+ * @since 0.1.0
5
+ */
6
+ import { Base64 } from "@tevm/voltaire/Base64";
7
+
8
+ /**
9
+ * Check if string is valid standard Base64
10
+ */
11
+ export const isValid = (value: string): boolean => Base64.isValid(value);
12
+
13
+ /**
14
+ * Check if string is valid URL-safe Base64
15
+ */
16
+ export const isValidUrlSafe = (value: string): boolean => Base64.isValidUrlSafe(value);
@@ -0,0 +1,292 @@
1
+ import { describe, expect, it } from "@effect/vitest";
2
+ import { Effect } from "effect";
3
+ import {
4
+ SIZE,
5
+ FIELD_ELEMENTS_PER_BLOB,
6
+ BYTES_PER_FIELD_ELEMENT,
7
+ MAX_PER_TRANSACTION,
8
+ MAX_DATA_PER_BLOB,
9
+ } from "./index.js";
10
+ import { from } from "./from.js";
11
+ import { fromData } from "./fromData.js";
12
+ import { isValid } from "./isValid.js";
13
+ import { isValidVersion } from "./isValidVersion.js";
14
+ import { toData } from "./toData.js";
15
+ import { calculateGas } from "./calculateGas.js";
16
+ import { estimateBlobCount } from "./estimateBlobCount.js";
17
+ import { splitData } from "./splitData.js";
18
+ import { joinData } from "./joinData.js";
19
+ import { toVersionedHash } from "./toVersionedHash.js";
20
+ import { toCommitment } from "./toCommitment.js";
21
+ import { toProof } from "./toProof.js";
22
+ import { verify } from "./verify.js";
23
+ import { verifyBatch } from "./verifyBatch.js";
24
+ import { BlobSchema } from "./BlobSchema.js";
25
+ import { KZGTest } from "../../crypto/KZG/KZGService.js";
26
+ import * as S from "effect/Schema";
27
+
28
+ describe("Blob", () => {
29
+ describe("constants", () => {
30
+ it("SIZE is 131072", () => {
31
+ expect(SIZE).toBe(131072);
32
+ });
33
+
34
+ it("FIELD_ELEMENTS_PER_BLOB is 4096", () => {
35
+ expect(FIELD_ELEMENTS_PER_BLOB).toBe(4096);
36
+ });
37
+
38
+ it("BYTES_PER_FIELD_ELEMENT is 32", () => {
39
+ expect(BYTES_PER_FIELD_ELEMENT).toBe(32);
40
+ });
41
+
42
+ it("MAX_PER_TRANSACTION is 6", () => {
43
+ expect(MAX_PER_TRANSACTION).toBe(6);
44
+ });
45
+
46
+ it("MAX_DATA_PER_BLOB is 126972", () => {
47
+ expect(MAX_DATA_PER_BLOB).toBe(126972);
48
+ });
49
+ });
50
+
51
+ describe("isValid", () => {
52
+ it("returns true for 128KB blob", () => {
53
+ const blob = new Uint8Array(SIZE);
54
+ expect(isValid(blob)).toBe(true);
55
+ });
56
+
57
+ it("returns false for wrong size", () => {
58
+ expect(isValid(new Uint8Array(100))).toBe(false);
59
+ expect(isValid(new Uint8Array(SIZE + 1))).toBe(false);
60
+ });
61
+ });
62
+
63
+ describe("from", () => {
64
+ it.effect("returns blob if already valid size", () =>
65
+ Effect.gen(function* () {
66
+ const input = new Uint8Array(SIZE);
67
+ const blob = yield* from(input);
68
+ expect(blob.length).toBe(SIZE);
69
+ }),
70
+ );
71
+
72
+ it.effect("encodes smaller data", () =>
73
+ Effect.gen(function* () {
74
+ const data = new TextEncoder().encode("Hello");
75
+ const blob = yield* from(data);
76
+ expect(blob.length).toBe(SIZE);
77
+ }),
78
+ );
79
+ });
80
+
81
+ describe("fromData", () => {
82
+ it.effect("encodes data with padding", () =>
83
+ Effect.gen(function* () {
84
+ const data = new TextEncoder().encode("Hello, blob!");
85
+ const blob = yield* fromData(data);
86
+ expect(blob.length).toBe(SIZE);
87
+ }),
88
+ );
89
+
90
+ it.effect("fails for data too large", () =>
91
+ Effect.gen(function* () {
92
+ const data = new Uint8Array(MAX_DATA_PER_BLOB + 1);
93
+ const result = yield* Effect.either(fromData(data));
94
+ expect(result._tag).toBe("Left");
95
+ }),
96
+ );
97
+ });
98
+
99
+ describe("toData", () => {
100
+ it.effect("round-trips data correctly", () =>
101
+ Effect.gen(function* () {
102
+ const original = new TextEncoder().encode("Hello, blob!");
103
+ const blob = yield* fromData(original);
104
+ const extracted = toData(blob);
105
+ expect(new TextDecoder().decode(extracted)).toBe("Hello, blob!");
106
+ }),
107
+ );
108
+ });
109
+
110
+ describe("isValidVersion", () => {
111
+ it("returns true for valid KZG version", () => {
112
+ const hash = new Uint8Array(32);
113
+ hash[0] = 0x01;
114
+ expect(isValidVersion(hash as any)).toBe(true);
115
+ });
116
+
117
+ it("returns false for wrong version", () => {
118
+ const hash = new Uint8Array(32);
119
+ hash[0] = 0x00;
120
+ expect(isValidVersion(hash as any)).toBe(false);
121
+ });
122
+
123
+ it("returns false for wrong length", () => {
124
+ const hash = new Uint8Array(31);
125
+ hash[0] = 0x01;
126
+ expect(isValidVersion(hash as any)).toBe(false);
127
+ });
128
+ });
129
+
130
+ describe("calculateGas", () => {
131
+ it.effect("calculates gas for valid count", () =>
132
+ Effect.gen(function* () {
133
+ const gas = yield* calculateGas(3);
134
+ expect(gas).toBe(3 * 131072);
135
+ }),
136
+ );
137
+
138
+ it.effect("returns 0 for 0 blobs", () =>
139
+ Effect.gen(function* () {
140
+ const gas = yield* calculateGas(0);
141
+ expect(gas).toBe(0);
142
+ }),
143
+ );
144
+
145
+ it.effect("fails for invalid count", () =>
146
+ Effect.gen(function* () {
147
+ const result = yield* Effect.either(calculateGas(7));
148
+ expect(result._tag).toBe("Left");
149
+ }),
150
+ );
151
+ });
152
+
153
+ describe("estimateBlobCount", () => {
154
+ it.effect("estimates correctly", () =>
155
+ Effect.gen(function* () {
156
+ const count = yield* estimateBlobCount(200000);
157
+ expect(count).toBe(2);
158
+ }),
159
+ );
160
+
161
+ it.effect("returns 0 for empty data", () =>
162
+ Effect.gen(function* () {
163
+ const count = yield* estimateBlobCount(0);
164
+ expect(count).toBe(0);
165
+ }),
166
+ );
167
+
168
+ it.effect("fails for negative size", () =>
169
+ Effect.gen(function* () {
170
+ const result = yield* Effect.either(estimateBlobCount(-1));
171
+ expect(result._tag).toBe("Left");
172
+ }),
173
+ );
174
+ });
175
+
176
+ describe("splitData/joinData", () => {
177
+ it.effect("round-trips large data", () =>
178
+ Effect.gen(function* () {
179
+ const original = new Uint8Array(200000);
180
+ for (let i = 0; i < original.length; i++) {
181
+ original[i] = i % 256;
182
+ }
183
+ const blobs = yield* splitData(original);
184
+ expect(blobs.length).toBe(2);
185
+ const rejoined = yield* joinData(blobs);
186
+ expect(rejoined).toEqual(original);
187
+ }),
188
+ );
189
+
190
+ it.effect("fails for data requiring too many blobs", () =>
191
+ Effect.gen(function* () {
192
+ const huge = new Uint8Array(MAX_DATA_PER_BLOB * 7);
193
+ const result = yield* Effect.either(splitData(huge));
194
+ expect(result._tag).toBe("Left");
195
+ }),
196
+ );
197
+ });
198
+
199
+ describe("toVersionedHash", () => {
200
+ it.effect("creates versioned hash from commitment", () =>
201
+ Effect.gen(function* () {
202
+ const commitment = new Uint8Array(48);
203
+ const hash = yield* toVersionedHash(commitment as any);
204
+ expect(hash.length).toBe(32);
205
+ expect(hash[0]).toBe(0x01);
206
+ }),
207
+ );
208
+
209
+ it.effect("fails for invalid commitment size", () =>
210
+ Effect.gen(function* () {
211
+ const commitment = new Uint8Array(32);
212
+ const result = yield* Effect.either(
213
+ toVersionedHash(commitment as any),
214
+ );
215
+ expect(result._tag).toBe("Left");
216
+ }),
217
+ );
218
+ });
219
+
220
+ describe("KZG operations with KZGTest", () => {
221
+ it.effect("toCommitment returns 48-byte commitment", () =>
222
+ Effect.gen(function* () {
223
+ const blob = yield* fromData(new Uint8Array(100));
224
+ const commitment = yield* toCommitment(blob);
225
+ expect(commitment.length).toBe(48);
226
+ }).pipe(Effect.provide(KZGTest)),
227
+ );
228
+
229
+ it.effect("toProof returns 48-byte proof", () =>
230
+ Effect.gen(function* () {
231
+ const blob = yield* fromData(new Uint8Array(100));
232
+ const commitment = yield* toCommitment(blob);
233
+ const proof = yield* toProof(blob, commitment);
234
+ expect(proof.length).toBe(48);
235
+ }).pipe(Effect.provide(KZGTest)),
236
+ );
237
+
238
+ it.effect("verify returns true with test layer", () =>
239
+ Effect.gen(function* () {
240
+ const blob = yield* fromData(new Uint8Array(100));
241
+ const commitment = yield* toCommitment(blob);
242
+ const proof = yield* toProof(blob, commitment);
243
+ const isValid = yield* verify(blob, commitment, proof);
244
+ expect(isValid).toBe(true);
245
+ }).pipe(Effect.provide(KZGTest)),
246
+ );
247
+ });
248
+
249
+ describe("verifyBatch", () => {
250
+ it.effect("fails with not implemented error", () =>
251
+ Effect.gen(function* () {
252
+ const blob = yield* fromData(new Uint8Array(100));
253
+ const commitment = new Uint8Array(48) as any;
254
+ const proof = new Uint8Array(48) as any;
255
+ const result = yield* Effect.either(
256
+ verifyBatch([blob], [commitment], [proof]),
257
+ );
258
+ expect(result._tag).toBe("Left");
259
+ if (result._tag === "Left") {
260
+ expect(result.left.name).toBe("BlobNotImplementedError");
261
+ }
262
+ }),
263
+ );
264
+
265
+ it.effect("validates array length mismatch", () =>
266
+ Effect.gen(function* () {
267
+ const blob = yield* fromData(new Uint8Array(100));
268
+ const commitment = new Uint8Array(48) as any;
269
+ const result = yield* Effect.either(
270
+ verifyBatch([blob], [commitment], []),
271
+ );
272
+ expect(result._tag).toBe("Left");
273
+ if (result._tag === "Left") {
274
+ expect(result.left.name).toBe("BlobArrayLengthMismatchError");
275
+ }
276
+ }),
277
+ );
278
+ });
279
+
280
+ describe("BlobSchema", () => {
281
+ it("decodes valid blob", () => {
282
+ const bytes = new Uint8Array(SIZE);
283
+ const blob = S.decodeSync(BlobSchema)(bytes);
284
+ expect(blob.length).toBe(SIZE);
285
+ });
286
+
287
+ it("fails for invalid size", () => {
288
+ const bytes = new Uint8Array(100);
289
+ expect(() => S.decodeSync(BlobSchema)(bytes)).toThrow();
290
+ });
291
+ });
292
+ });
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @module calculateGas
3
+ * @description Calculate blob gas for number of blobs
4
+ * @since 0.1.0
5
+ */
6
+ import { BrandedBlob as BlobNamespace } from "@tevm/voltaire";
7
+ import { Effect } from "effect";
8
+ import type { InvalidBlobCountError } from "@tevm/voltaire/Blob";
9
+
10
+ /**
11
+ * Calculate blob gas for number of blobs.
12
+ *
13
+ * @param blobCount - Number of blobs (0-6)
14
+ * @returns Effect yielding total blob gas or failing with InvalidBlobCountError
15
+ * @example
16
+ * ```typescript
17
+ * import * as Blob from 'voltaire-effect/primitives/Blob'
18
+ * import * as Effect from 'effect/Effect'
19
+ *
20
+ * const gas = await Effect.runPromise(Blob.calculateGas(3)) // 393216
21
+ * ```
22
+ * @since 0.1.0
23
+ */
24
+ export const calculateGas = (
25
+ blobCount: number,
26
+ ): Effect.Effect<number, InvalidBlobCountError> =>
27
+ Effect.try({
28
+ try: () => BlobNamespace.calculateGas(blobCount),
29
+ catch: (e) => e as InvalidBlobCountError,
30
+ });
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @module estimateBlobCount
3
+ * @description Estimate number of blobs needed for data
4
+ * @since 0.1.0
5
+ */
6
+ import { BrandedBlob as BlobNamespace } from "@tevm/voltaire";
7
+ import { Effect } from "effect";
8
+ import type { InvalidBlobDataSizeError } from "@tevm/voltaire/Blob";
9
+
10
+ /**
11
+ * Estimate number of blobs needed for data.
12
+ *
13
+ * @param dataSize - Size of data in bytes
14
+ * @returns Effect yielding blob count or failing with InvalidBlobDataSizeError
15
+ * @example
16
+ * ```typescript
17
+ * import * as Blob from 'voltaire-effect/primitives/Blob'
18
+ * import * as Effect from 'effect/Effect'
19
+ *
20
+ * const count = await Effect.runPromise(Blob.estimateBlobCount(200000)) // 2
21
+ * ```
22
+ * @since 0.1.0
23
+ */
24
+ export const estimateBlobCount = (
25
+ dataSize: number,
26
+ ): Effect.Effect<number, InvalidBlobDataSizeError> =>
27
+ Effect.try({
28
+ try: () => BlobNamespace.estimateBlobCount(dataSize),
29
+ catch: (e) => e as InvalidBlobDataSizeError,
30
+ });
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @module from
3
+ * @description Create Blob from Uint8Array with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { BrandedBlob as BlobNamespace } from "@tevm/voltaire";
7
+ import { Effect } from "effect";
8
+ import type { InvalidBlobDataSizeError } from "@tevm/voltaire/Blob";
9
+
10
+ type BrandedBlob = BlobNamespace.BrandedBlob;
11
+
12
+ /**
13
+ * Create Blob from Uint8Array (either raw blob data or data to encode)
14
+ *
15
+ * If input is 131072 bytes, returns as-is. Otherwise encodes with padding.
16
+ *
17
+ * @param value - Uint8Array (either 131072 bytes blob or data to encode)
18
+ * @returns Effect yielding BrandedBlob or failing with InvalidBlobDataSizeError
19
+ * @example
20
+ * ```typescript
21
+ * import * as Blob from 'voltaire-effect/primitives/Blob'
22
+ * import * as Effect from 'effect/Effect'
23
+ *
24
+ * // Raw 128KB blob
25
+ * const blob1 = await Effect.runPromise(Blob.from(new Uint8Array(131072)))
26
+ *
27
+ * // Auto-encode smaller data
28
+ * const blob2 = await Effect.runPromise(Blob.from(new TextEncoder().encode("Hello")))
29
+ * ```
30
+ * @since 0.1.0
31
+ */
32
+ export const from = (
33
+ value: Uint8Array,
34
+ ): Effect.Effect<BrandedBlob, InvalidBlobDataSizeError> =>
35
+ Effect.try({
36
+ try: () => BlobNamespace.from(value),
37
+ catch: (e) => e as InvalidBlobDataSizeError,
38
+ });
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @module fromData
3
+ * @description Create Blob from arbitrary data with EIP-4844 field element encoding
4
+ * @since 0.1.0
5
+ */
6
+ import { BrandedBlob as BlobNamespace } from "@tevm/voltaire";
7
+ import { Effect } from "effect";
8
+ import type { InvalidBlobDataSizeError } from "@tevm/voltaire/Blob";
9
+
10
+ type BrandedBlob = BlobNamespace.BrandedBlob;
11
+
12
+ /**
13
+ * Create Blob from arbitrary data (will be padded to 128KB)
14
+ *
15
+ * Uses EIP-4844 field element encoding where each 32-byte field element
16
+ * has byte[0] = 0x00 for BLS field constraint. First 4 bytes store length.
17
+ *
18
+ * @param data - Data to encode (max 126972 bytes)
19
+ * @returns Effect yielding BrandedBlob or failing with InvalidBlobDataSizeError
20
+ * @example
21
+ * ```typescript
22
+ * import * as Blob from 'voltaire-effect/primitives/Blob'
23
+ * import * as Effect from 'effect/Effect'
24
+ *
25
+ * const data = new TextEncoder().encode("Hello, blob!")
26
+ * const blob = await Effect.runPromise(Blob.fromData(data))
27
+ * ```
28
+ * @since 0.1.0
29
+ */
30
+ export const fromData = (
31
+ data: Uint8Array,
32
+ ): Effect.Effect<BrandedBlob, InvalidBlobDataSizeError> =>
33
+ Effect.try({
34
+ try: () => BlobNamespace.fromData(data),
35
+ catch: (e) => e as InvalidBlobDataSizeError,
36
+ });
@@ -8,6 +8,51 @@
8
8
  * This module provides Effect-based schemas and functions for creating,
9
9
  * validating, and working with blob data.
10
10
  *
11
+ * ## Type Declarations
12
+ *
13
+ * ```typescript
14
+ * import * as Blob from 'voltaire-effect/primitives/Blob'
15
+ *
16
+ * function processBlob(blob: Blob.BrandedBlob) {
17
+ * // ...
18
+ * }
19
+ * ```
20
+ *
21
+ * ## Schemas
22
+ *
23
+ * | Schema | Input | Output | Description |
24
+ * |--------|-------|--------|-------------|
25
+ * | `Blob.Schema` | Uint8Array | BrandedBlob | Validates exactly 131072 bytes |
26
+ *
27
+ * ## Constructors (Effect-wrapped)
28
+ *
29
+ * ```typescript
30
+ * Blob.from(bytes) // Effect<BrandedBlob, InvalidBlobDataSizeError>
31
+ * Blob.fromData(data) // Effect<BrandedBlob, InvalidBlobDataSizeError>
32
+ * ```
33
+ *
34
+ * ## Pure Functions
35
+ *
36
+ * ```typescript
37
+ * Blob.isValid(data) // boolean - check if exactly 128KB
38
+ * Blob.isValidVersion(hash) // boolean - check versioned hash version byte
39
+ * Blob.toData(blob) // Uint8Array - extract original data
40
+ * ```
41
+ *
42
+ * ## Effectful Functions
43
+ *
44
+ * ```typescript
45
+ * Blob.calculateGas(count) // Effect<number, InvalidBlobCountError>
46
+ * Blob.estimateBlobCount(size) // Effect<number, InvalidBlobDataSizeError>
47
+ * Blob.splitData(data) // Effect<BrandedBlob[], InvalidBlobDataSizeError>
48
+ * Blob.joinData(blobs) // Effect<Uint8Array, BlobError>
49
+ * Blob.toCommitment(blob) // Effect<Commitment, KZGError, KZGService>
50
+ * Blob.toProof(blob, commitment) // Effect<Proof, KZGError, KZGService>
51
+ * Blob.toVersionedHash(commitment) // Effect<VersionedHash, InvalidCommitmentSizeError>
52
+ * Blob.verify(blob, commitment, proof) // Effect<boolean, KZGError, KZGService>
53
+ * Blob.verifyBatch(blobs, commitments, proofs) // Effect<boolean, BlobError>
54
+ * ```
55
+ *
11
56
  * @example
12
57
  * ```typescript
13
58
  * import * as Blob from 'voltaire-effect/primitives/Blob'
@@ -30,25 +75,67 @@
30
75
  * @since 0.0.1
31
76
  */
32
77
 
33
- /**
34
- * Blob constants from EIP-4844
35
- * - SIZE: 131,072 bytes (128KB)
36
- * - FIELD_ELEMENTS_PER_BLOB: 4,096
37
- * - BYTES_PER_FIELD_ELEMENT: 32
38
- * - MAX_PER_TRANSACTION: 6
39
- */
78
+ // Re-export types from voltaire
79
+ export type {
80
+ BrandedBlob,
81
+ Commitment,
82
+ Proof,
83
+ VersionedHash,
84
+ } from "@tevm/voltaire/Blob";
85
+
86
+ // Re-export constants from voltaire
40
87
  export {
41
88
  BYTES_PER_FIELD_ELEMENT,
42
89
  FIELD_ELEMENTS_PER_BLOB,
43
90
  MAX_PER_TRANSACTION,
44
91
  SIZE,
92
+ COMMITMENT_VERSION_KZG,
93
+ GAS_PER_BLOB,
94
+ TARGET_GAS_PER_BLOCK,
95
+ MAX_DATA_PER_BLOB,
45
96
  } from "@tevm/voltaire/Blob";
46
- /** Schema for blob validation */
97
+
98
+ // Re-export errors from voltaire
99
+ export {
100
+ BlobArrayLengthMismatchError,
101
+ BlobNotImplementedError,
102
+ InvalidBlobCountError,
103
+ InvalidBlobDataSizeError,
104
+ InvalidBlobLengthPrefixError,
105
+ InvalidBlobSizeError,
106
+ InvalidCommitmentSizeError,
107
+ InvalidProofSizeError,
108
+ } from "@tevm/voltaire/Blob";
109
+
110
+ // Re-export factory functions from voltaire (for advanced use/DI)
111
+ export {
112
+ Blob,
113
+ ToCommitment,
114
+ ToProof,
115
+ ToVersionedHash,
116
+ Verify,
117
+ VerifyBatch,
118
+ } from "@tevm/voltaire/Blob";
119
+
120
+ // Schema
47
121
  export { BlobSchema, BlobSchema as Schema } from "./BlobSchema.js";
48
- /** Create blob from exact 131,072 bytes */
49
- /** Create blob from arbitrary data with padding */
50
122
 
51
- /** Check if data is valid blob size */
123
+ // Constructors (Effect-wrapped)
124
+ export { from } from "./from.js";
125
+ export { fromData } from "./fromData.js";
126
+
127
+ // Pure functions
52
128
  export { isValid } from "./isValid.js";
53
- /** Extract original data from blob */
129
+ export { isValidVersion } from "./isValidVersion.js";
54
130
  export { toData } from "./toData.js";
131
+
132
+ // Effectful functions
133
+ export { calculateGas } from "./calculateGas.js";
134
+ export { estimateBlobCount } from "./estimateBlobCount.js";
135
+ export { joinData } from "./joinData.js";
136
+ export { splitData } from "./splitData.js";
137
+ export { toCommitment } from "./toCommitment.js";
138
+ export { toProof } from "./toProof.js";
139
+ export { toVersionedHash } from "./toVersionedHash.js";
140
+ export { verify } from "./verify.js";
141
+ export { verifyBatch } from "./verifyBatch.js";