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
@@ -0,0 +1,229 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { Effect } from "effect";
3
+ import * as S from "effect/Schema";
4
+ import * as AccessList from "./index.js";
5
+
6
+ const makeAddress = (byte: number): Uint8Array & { readonly __brand?: symbol } =>
7
+ new Uint8Array(20).fill(byte) as Uint8Array & { readonly __brand?: symbol };
8
+
9
+ const makeHash = (byte: number): Uint8Array & { readonly __brand?: symbol } =>
10
+ new Uint8Array(32).fill(byte) as Uint8Array & { readonly __brand?: symbol };
11
+
12
+ describe("AccessList", () => {
13
+ describe("create", () => {
14
+ it("creates empty access list", () => {
15
+ const list = AccessList.create();
16
+ expect(AccessList.isEmpty(list)).toBe(true);
17
+ expect(AccessList.addressCount(list)).toBe(0);
18
+ });
19
+ });
20
+
21
+ describe("from", () => {
22
+ it("creates from items", async () => {
23
+ const addr = makeAddress(0x42);
24
+ const key = makeHash(0x01);
25
+ const list = await Effect.runPromise(
26
+ AccessList.from([{ address: addr, storageKeys: [key] }])
27
+ );
28
+ expect(AccessList.addressCount(list)).toBe(1);
29
+ expect(AccessList.storageKeyCount(list)).toBe(1);
30
+ });
31
+ });
32
+
33
+ describe("type guards", () => {
34
+ it("is() validates access list", () => {
35
+ const list = AccessList.create();
36
+ expect(AccessList.is(list)).toBe(true);
37
+ expect(AccessList.is([])).toBe(true);
38
+ expect(AccessList.is("not a list")).toBe(false);
39
+ expect(AccessList.is([{ invalid: true }])).toBe(false);
40
+ });
41
+
42
+ it("isItem() validates items", () => {
43
+ const addr = makeAddress(0x42);
44
+ const key = makeHash(0x01);
45
+ expect(AccessList.isItem({ address: addr, storageKeys: [key] })).toBe(true);
46
+ expect(AccessList.isItem({ address: addr, storageKeys: [] })).toBe(true);
47
+ expect(AccessList.isItem({ address: "0x123", storageKeys: [] })).toBe(false);
48
+ expect(AccessList.isItem(null)).toBe(false);
49
+ });
50
+ });
51
+
52
+ describe("queries", () => {
53
+ it("isEmpty", () => {
54
+ expect(AccessList.isEmpty(AccessList.create())).toBe(true);
55
+ });
56
+
57
+ it("addressCount", () => {
58
+ const addr1 = makeAddress(0x01);
59
+ const addr2 = makeAddress(0x02);
60
+ let list = AccessList.create();
61
+ list = AccessList.withAddress(list, addr1);
62
+ list = AccessList.withAddress(list, addr2);
63
+ expect(AccessList.addressCount(list)).toBe(2);
64
+ });
65
+
66
+ it("storageKeyCount", () => {
67
+ const addr = makeAddress(0x42);
68
+ const key1 = makeHash(0x01);
69
+ const key2 = makeHash(0x02);
70
+ let list = AccessList.create();
71
+ list = AccessList.withStorageKey(list, addr, key1);
72
+ list = AccessList.withStorageKey(list, addr, key2);
73
+ expect(AccessList.storageKeyCount(list)).toBe(2);
74
+ });
75
+
76
+ it("includesAddress", () => {
77
+ const addr = makeAddress(0x42);
78
+ const other = makeAddress(0x43);
79
+ let list = AccessList.create();
80
+ list = AccessList.withAddress(list, addr);
81
+ expect(AccessList.includesAddress(list, addr)).toBe(true);
82
+ expect(AccessList.includesAddress(list, other)).toBe(false);
83
+ });
84
+
85
+ it("includesStorageKey", () => {
86
+ const addr = makeAddress(0x42);
87
+ const key = makeHash(0x01);
88
+ const other = makeHash(0x02);
89
+ let list = AccessList.create();
90
+ list = AccessList.withStorageKey(list, addr, key);
91
+ expect(AccessList.includesStorageKey(list, addr, key)).toBe(true);
92
+ expect(AccessList.includesStorageKey(list, addr, other)).toBe(false);
93
+ });
94
+
95
+ it("keysFor", () => {
96
+ const addr = makeAddress(0x42);
97
+ const key = makeHash(0x01);
98
+ let list = AccessList.create();
99
+ list = AccessList.withStorageKey(list, addr, key);
100
+ const keys = AccessList.keysFor(list, addr);
101
+ expect(keys).toBeDefined();
102
+ expect(keys?.length).toBe(1);
103
+ expect(AccessList.keysFor(list, makeAddress(0x99))).toBeUndefined();
104
+ });
105
+ });
106
+
107
+ describe("gas calculations", () => {
108
+ it("gasCost", () => {
109
+ const addr = makeAddress(0x42);
110
+ const key = makeHash(0x01);
111
+ let list = AccessList.create();
112
+ list = AccessList.withStorageKey(list, addr, key);
113
+ const cost = AccessList.gasCost(list);
114
+ expect(cost).toBe(AccessList.ADDRESS_COST + AccessList.STORAGE_KEY_COST);
115
+ });
116
+
117
+ it("gasSavings", () => {
118
+ const addr = makeAddress(0x42);
119
+ let list = AccessList.create();
120
+ list = AccessList.withAddress(list, addr);
121
+ const savings = AccessList.gasSavings(list);
122
+ expect(savings).toBe(AccessList.COLD_ACCOUNT_ACCESS_COST - AccessList.ADDRESS_COST);
123
+ });
124
+
125
+ it("hasSavings", () => {
126
+ const addr = makeAddress(0x42);
127
+ let list = AccessList.create();
128
+ list = AccessList.withAddress(list, addr);
129
+ expect(AccessList.hasSavings(list)).toBe(true);
130
+ });
131
+ });
132
+
133
+ describe("transformations", () => {
134
+ it("withAddress adds new address", () => {
135
+ const addr = makeAddress(0x42);
136
+ let list = AccessList.create();
137
+ list = AccessList.withAddress(list, addr);
138
+ expect(AccessList.includesAddress(list, addr)).toBe(true);
139
+ });
140
+
141
+ it("withAddress is idempotent", () => {
142
+ const addr = makeAddress(0x42);
143
+ let list = AccessList.create();
144
+ list = AccessList.withAddress(list, addr);
145
+ const list2 = AccessList.withAddress(list, addr);
146
+ expect(AccessList.addressCount(list2)).toBe(1);
147
+ });
148
+
149
+ it("withStorageKey adds key", () => {
150
+ const addr = makeAddress(0x42);
151
+ const key = makeHash(0x01);
152
+ let list = AccessList.create();
153
+ list = AccessList.withStorageKey(list, addr, key);
154
+ expect(AccessList.includesStorageKey(list, addr, key)).toBe(true);
155
+ });
156
+
157
+ it("deduplicate merges duplicate addresses", () => {
158
+ const addr = makeAddress(0x42);
159
+ const key1 = makeHash(0x01);
160
+ const key2 = makeHash(0x02);
161
+ const list = [
162
+ { address: addr, storageKeys: [key1] },
163
+ { address: addr, storageKeys: [key2, key1] },
164
+ ] as AccessList.BrandedAccessList;
165
+ const deduped = AccessList.deduplicate(list);
166
+ expect(AccessList.addressCount(deduped)).toBe(1);
167
+ expect(AccessList.storageKeyCount(deduped)).toBe(2);
168
+ });
169
+
170
+ it("merge combines lists", () => {
171
+ const addr1 = makeAddress(0x01);
172
+ const addr2 = makeAddress(0x02);
173
+ const list1 = AccessList.withAddress(AccessList.create(), addr1);
174
+ const list2 = AccessList.withAddress(AccessList.create(), addr2);
175
+ const merged = AccessList.merge(list1, list2);
176
+ expect(AccessList.addressCount(merged)).toBe(2);
177
+ });
178
+
179
+ it("toBytes encodes to RLP", () => {
180
+ const list = AccessList.create();
181
+ const bytes = AccessList.toBytes(list);
182
+ expect(bytes).toBeInstanceOf(Uint8Array);
183
+ });
184
+ });
185
+
186
+ describe("assertValid", () => {
187
+ it("succeeds for valid list", async () => {
188
+ const list = AccessList.create();
189
+ await Effect.runPromise(AccessList.assertValid(list));
190
+ });
191
+ });
192
+
193
+ describe("Rpc schema", () => {
194
+ it("decodes from JSON-RPC format", () => {
195
+ const input = [
196
+ {
197
+ address: "0x742d35Cc6634C0532925a3b844Bc9e7595f251e3",
198
+ storageKeys: [
199
+ "0x0000000000000000000000000000000000000000000000000000000000000001",
200
+ ],
201
+ },
202
+ ];
203
+ const list = S.decodeSync(AccessList.Rpc)(input);
204
+ expect(AccessList.addressCount(list)).toBe(1);
205
+ expect(AccessList.storageKeyCount(list)).toBe(1);
206
+ });
207
+
208
+ it("encodes to JSON-RPC format", () => {
209
+ const addr = makeAddress(0x42);
210
+ const key = makeHash(0x01);
211
+ let list = AccessList.create();
212
+ list = AccessList.withStorageKey(list, addr, key);
213
+ const json = S.encodeSync(AccessList.Rpc)(list);
214
+ expect(json).toHaveLength(1);
215
+ expect(json[0].address).toMatch(/^0x[0-9a-f]{40}$/);
216
+ expect(json[0].storageKeys).toHaveLength(1);
217
+ });
218
+ });
219
+
220
+ describe("constants", () => {
221
+ it("exports gas constants", () => {
222
+ expect(AccessList.ADDRESS_COST).toBe(2400n);
223
+ expect(AccessList.STORAGE_KEY_COST).toBe(1900n);
224
+ expect(AccessList.COLD_ACCOUNT_ACCESS_COST).toBe(2600n);
225
+ expect(AccessList.COLD_STORAGE_ACCESS_COST).toBe(2100n);
226
+ expect(AccessList.WARM_STORAGE_ACCESS_COST).toBe(100n);
227
+ });
228
+ });
229
+ });
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @module AccessListTypeSchema
3
+ * @description Effect Schema declaration for BrandedAccessList type
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+ import * as S from "effect/Schema";
8
+
9
+ /**
10
+ * Schema declaration for the BrandedAccessList type
11
+ * @since 0.1.0
12
+ */
13
+ export const AccessListTypeSchema = S.declare<BrandedAccessList>(
14
+ (u): u is BrandedAccessList => AccessList.is(u),
15
+ { identifier: "AccessList" },
16
+ );
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @module addressCount
3
+ * @description Count total addresses in access list
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Count total addresses in access list
10
+ *
11
+ * @param list - Access list to count
12
+ * @returns Number of addresses
13
+ * @example
14
+ * ```typescript
15
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
16
+ *
17
+ * const count = AccessList.addressCount(list)
18
+ * ```
19
+ */
20
+ export const addressCount = (list: BrandedAccessList): number =>
21
+ AccessList.addressCount(list);
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @module assertValid
3
+ * @description Validate access list structure with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
8
+ import type {
9
+ InvalidFormatError,
10
+ InvalidLengthError,
11
+ } from "@tevm/voltaire/errors";
12
+
13
+ type AssertValidError = InvalidFormatError | InvalidLengthError;
14
+
15
+ /**
16
+ * Validate access list structure
17
+ *
18
+ * @param list - Access list to validate
19
+ * @returns Effect yielding void or failing with AssertValidError
20
+ * @example
21
+ * ```typescript
22
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
23
+ * import * as Effect from 'effect/Effect'
24
+ *
25
+ * const program = Effect.gen(function* () {
26
+ * yield* AccessList.assertValid(list)
27
+ * console.log('Valid access list')
28
+ * })
29
+ * ```
30
+ */
31
+ export const assertValid = (
32
+ list: BrandedAccessList,
33
+ ): Effect.Effect<void, AssertValidError> =>
34
+ Effect.try({
35
+ try: () => AccessList.assertValid(list),
36
+ catch: (e) => e as AssertValidError,
37
+ });
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @module create
3
+ * @description Create empty access list
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Create empty access list
10
+ *
11
+ * @returns Empty access list
12
+ * @example
13
+ * ```typescript
14
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
15
+ *
16
+ * const list = AccessList.create()
17
+ * ```
18
+ */
19
+ export const create = (): BrandedAccessList => AccessList.create();
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @module deduplicate
3
+ * @description Deduplicate access list entries
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Deduplicate access list entries
10
+ *
11
+ * Merges duplicate addresses and removes duplicate storage keys.
12
+ *
13
+ * @param list - Access list to deduplicate
14
+ * @returns Deduplicated access list
15
+ * @example
16
+ * ```typescript
17
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
18
+ *
19
+ * const deduped = AccessList.deduplicate(list)
20
+ * ```
21
+ */
22
+ export const deduplicate = (list: BrandedAccessList): BrandedAccessList =>
23
+ AccessList.deduplicate(list);
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @module from
3
+ * @description Create AccessList from array or bytes with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import {
8
+ AccessList,
9
+ type BrandedAccessList,
10
+ type Item,
11
+ } from "@tevm/voltaire/AccessList";
12
+ import type {
13
+ InvalidFormatError,
14
+ InvalidLengthError,
15
+ } from "@tevm/voltaire/errors";
16
+
17
+ type AccessListError = InvalidFormatError | InvalidLengthError;
18
+
19
+ /**
20
+ * Create AccessList from array or bytes
21
+ *
22
+ * @param value - AccessList items or RLP bytes
23
+ * @returns Effect yielding BrandedAccessList or failing with AccessListError
24
+ * @example
25
+ * ```typescript
26
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
27
+ * import * as Effect from 'effect/Effect'
28
+ *
29
+ * const program = AccessList.from([{ address, storageKeys: [] }])
30
+ * const list = await Effect.runPromise(program)
31
+ * ```
32
+ */
33
+ export const from = (
34
+ value: readonly Item[] | Uint8Array,
35
+ ): Effect.Effect<BrandedAccessList, AccessListError> =>
36
+ Effect.try({
37
+ try: () => AccessList.from(value),
38
+ catch: (e) => e as AccessListError,
39
+ });
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @module fromBytes
3
+ * @description Decode RLP bytes to access list with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
8
+ import type {
9
+ DecodingError,
10
+ InvalidFormatError,
11
+ InvalidLengthError,
12
+ } from "@tevm/voltaire/errors";
13
+
14
+ type FromBytesError = DecodingError | InvalidFormatError | InvalidLengthError;
15
+
16
+ /**
17
+ * Decode RLP bytes to access list
18
+ *
19
+ * @param bytes - RLP-encoded access list
20
+ * @returns Effect yielding BrandedAccessList or failing with FromBytesError
21
+ * @example
22
+ * ```typescript
23
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
24
+ * import * as Effect from 'effect/Effect'
25
+ *
26
+ * const program = AccessList.fromBytes(bytes)
27
+ * const list = await Effect.runPromise(program)
28
+ * ```
29
+ */
30
+ export const fromBytes = (
31
+ bytes: Uint8Array,
32
+ ): Effect.Effect<BrandedAccessList, FromBytesError> =>
33
+ Effect.try({
34
+ try: () => AccessList.fromBytes(bytes),
35
+ catch: (e) => e as FromBytesError,
36
+ });
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @module gasCost
3
+ * @description Calculate total gas cost for access list
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Calculate total gas cost for access list
10
+ *
11
+ * @param list - Access list to calculate cost for
12
+ * @returns Total gas cost in wei
13
+ * @example
14
+ * ```typescript
15
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
16
+ *
17
+ * const cost = AccessList.gasCost(list)
18
+ * // cost = ADDRESS_COST + (numKeys * STORAGE_KEY_COST)
19
+ * ```
20
+ */
21
+ export const gasCost = (list: BrandedAccessList): bigint =>
22
+ AccessList.gasCost(list);
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @module gasSavings
3
+ * @description Calculate gas savings from using access list
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Calculate gas savings from using access list
10
+ *
11
+ * Compares cold access costs vs access list costs.
12
+ *
13
+ * @param list - Access list to calculate savings for
14
+ * @returns Estimated gas savings (can be negative if not beneficial)
15
+ * @example
16
+ * ```typescript
17
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
18
+ *
19
+ * const savings = AccessList.gasSavings(list)
20
+ * if (savings > 0n) {
21
+ * console.log('Access list saves gas:', savings)
22
+ * }
23
+ * ```
24
+ */
25
+ export const gasSavings = (list: BrandedAccessList): bigint =>
26
+ AccessList.gasSavings(list);
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @module hasSavings
3
+ * @description Check if access list provides net gas savings
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Check if access list provides net gas savings
10
+ *
11
+ * @param list - Access list to check
12
+ * @returns true if access list saves gas overall
13
+ * @example
14
+ * ```typescript
15
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
16
+ *
17
+ * if (AccessList.hasSavings(list)) {
18
+ * // Use the access list in transaction
19
+ * }
20
+ * ```
21
+ */
22
+ export const hasSavings = (list: BrandedAccessList): boolean =>
23
+ AccessList.hasSavings(list);
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @module includesAddress
3
+ * @description Check if address is in access list
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+ import type { AddressType } from "@tevm/voltaire/Address";
8
+
9
+ /**
10
+ * Check if address is in access list
11
+ *
12
+ * @param list - Access list to search
13
+ * @param address - Address to find
14
+ * @returns true if address is in access list
15
+ * @example
16
+ * ```typescript
17
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
18
+ *
19
+ * const hasAddress = AccessList.includesAddress(list, address)
20
+ * ```
21
+ */
22
+ export const includesAddress = (
23
+ list: BrandedAccessList,
24
+ address: AddressType,
25
+ ): boolean => AccessList.includesAddress(list, address);
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module includesStorageKey
3
+ * @description Check if storage key is in access list for given address
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+ import type { AddressType } from "@tevm/voltaire/Address";
8
+ import type { HashType } from "@tevm/voltaire/Hash";
9
+
10
+ /**
11
+ * Check if storage key is in access list for given address
12
+ *
13
+ * @param list - Access list to search
14
+ * @param address - Address to check
15
+ * @param storageKey - Storage key to find
16
+ * @returns true if storage key is accessible
17
+ * @example
18
+ * ```typescript
19
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
20
+ *
21
+ * const isAccessible = AccessList.includesStorageKey(list, address, key)
22
+ * ```
23
+ */
24
+ export const includesStorageKey = (
25
+ list: BrandedAccessList,
26
+ address: AddressType,
27
+ storageKey: HashType,
28
+ ): boolean => AccessList.includesStorageKey(list, address, storageKey);
@@ -1,32 +1,112 @@
1
1
  /**
2
2
  * @module AccessList
3
- * @description Effect Schemas for EIP-2930 access lists.
3
+ * @description Effect Schemas and functions for EIP-2930 access lists.
4
+ *
5
+ * ## Type Declarations
6
+ *
7
+ * ```typescript
8
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
9
+ *
10
+ * function buildTx(accessList: AccessList.BrandedAccessList) {
11
+ * // ...
12
+ * }
13
+ * ```
4
14
  *
5
15
  * ## Schemas
6
16
  *
7
- * | Schema | Input | Output |
8
- * |--------|-------|--------|
9
- * | `AccessList.Rpc` | JSON-RPC format | BrandedAccessList |
17
+ * | Schema | Input | Output | Description |
18
+ * |--------|-------|--------|-------------|
19
+ * | `AccessList.Rpc` | JSON-RPC format | BrandedAccessList | Decodes from RPC format |
10
20
  *
11
- * ## Usage
21
+ * ## Constructors
12
22
  *
13
23
  * ```typescript
14
- * import * as AccessList from 'voltaire-effect/primitives/AccessList'
15
- * import * as S from 'effect/Schema'
16
- *
17
- * // Decode from JSON-RPC format
18
- * const accessList = S.decodeSync(AccessList.Rpc)([
19
- * {
20
- * address: '0x742d35Cc6634C0532925a3b844Bc9e7595f251e3',
21
- * storageKeys: ['0x0...1']
22
- * }
23
- * ])
24
- *
25
- * // Encode back to JSON-RPC format
26
- * const json = S.encodeSync(AccessList.Rpc)(accessList)
24
+ * AccessList.create() // BrandedAccessList (pure)
25
+ * AccessList.from(value) // Effect<BrandedAccessList, Error>
26
+ * AccessList.fromBytes(bytes) // Effect<BrandedAccessList, Error>
27
+ * ```
28
+ *
29
+ * ## Pure Functions
30
+ *
31
+ * ```typescript
32
+ * AccessList.is(value) // type guard
33
+ * AccessList.isItem(value) // type guard
34
+ * AccessList.isEmpty(list) // boolean
35
+ * AccessList.addressCount(list) // number
36
+ * AccessList.storageKeyCount(list) // number
37
+ * AccessList.includesAddress(list, addr) // boolean
38
+ * AccessList.includesStorageKey(list, addr, key) // boolean
39
+ * AccessList.keysFor(list, addr) // readonly HashType[] | undefined
40
+ * AccessList.gasCost(list) // bigint
41
+ * AccessList.gasSavings(list) // bigint
42
+ * AccessList.hasSavings(list) // boolean
43
+ * AccessList.deduplicate(list) // BrandedAccessList
44
+ * AccessList.merge(...lists) // BrandedAccessList
45
+ * AccessList.toBytes(list) // Uint8Array
46
+ * AccessList.withAddress(list, addr) // BrandedAccessList
47
+ * AccessList.withStorageKey(list, addr, key) // BrandedAccessList
48
+ * ```
49
+ *
50
+ * ## Effectful Functions
51
+ *
52
+ * ```typescript
53
+ * AccessList.assertValid(list) // Effect<void, AssertValidError>
27
54
  * ```
28
55
  *
29
56
  * @since 0.1.0
30
57
  */
31
58
 
32
- export { type AccessListInput, type AccessListItemInput, Rpc } from "./Rpc.js";
59
+ // Re-export types from voltaire
60
+ export type { BrandedAccessList, Item } from "@tevm/voltaire/AccessList";
61
+ export { AccessListTypeSchema } from "./AccessListTypeSchema.js";
62
+
63
+ // Re-export errors from voltaire
64
+ export {
65
+ InvalidFormatError,
66
+ InvalidLengthError,
67
+ DecodingError,
68
+ } from "@tevm/voltaire/errors";
69
+
70
+ // Schemas
71
+ export { Rpc, type AccessListInput, type AccessListItemInput } from "./Rpc.js";
72
+
73
+ // Constructors
74
+ export { create } from "./create.js";
75
+ export { from } from "./from.js";
76
+ export { fromBytes } from "./fromBytes.js";
77
+
78
+ // Pure functions - type guards
79
+ export { is } from "./is.js";
80
+ export { isItem } from "./isItem.js";
81
+
82
+ // Pure functions - queries
83
+ export { isEmpty } from "./isEmpty.js";
84
+ export { addressCount } from "./addressCount.js";
85
+ export { storageKeyCount } from "./storageKeyCount.js";
86
+ export { includesAddress } from "./includesAddress.js";
87
+ export { includesStorageKey } from "./includesStorageKey.js";
88
+ export { keysFor } from "./keysFor.js";
89
+
90
+ // Pure functions - gas calculations
91
+ export { gasCost } from "./gasCost.js";
92
+ export { gasSavings } from "./gasSavings.js";
93
+ export { hasSavings } from "./hasSavings.js";
94
+
95
+ // Pure functions - transformations
96
+ export { deduplicate } from "./deduplicate.js";
97
+ export { merge } from "./merge.js";
98
+ export { toBytes } from "./toBytes.js";
99
+ export { withAddress } from "./withAddress.js";
100
+ export { withStorageKey } from "./withStorageKey.js";
101
+
102
+ // Effectful functions
103
+ export { assertValid } from "./assertValid.js";
104
+
105
+ // Re-export constants from voltaire
106
+ export {
107
+ ADDRESS_COST,
108
+ STORAGE_KEY_COST,
109
+ COLD_ACCOUNT_ACCESS_COST,
110
+ COLD_STORAGE_ACCESS_COST,
111
+ WARM_STORAGE_ACCESS_COST,
112
+ } from "@tevm/voltaire/AccessList";