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,23 @@
1
+ /**
2
+ * @module is
3
+ * @description Type guard for AccessList
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Type guard: Check if value is AccessList
10
+ *
11
+ * @param value - Value to check
12
+ * @returns true if value is AccessList
13
+ * @example
14
+ * ```typescript
15
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
16
+ *
17
+ * if (AccessList.is(value)) {
18
+ * const cost = AccessList.gasCost(value)
19
+ * }
20
+ * ```
21
+ */
22
+ export const is = (value: unknown): value is BrandedAccessList =>
23
+ AccessList.is(value);
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @module isEmpty
3
+ * @description Check if access list is empty
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Check if access list is empty
10
+ *
11
+ * @param list - Access list to check
12
+ * @returns true if empty
13
+ * @example
14
+ * ```typescript
15
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
16
+ *
17
+ * if (AccessList.isEmpty(list)) {
18
+ * console.log('No access list entries')
19
+ * }
20
+ * ```
21
+ */
22
+ export const isEmpty = (list: BrandedAccessList): boolean =>
23
+ AccessList.isEmpty(list);
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @module isItem
3
+ * @description Type guard for AccessList Item
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type Item } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Type guard: Check if value is AccessListItem
10
+ *
11
+ * @param value - Value to check
12
+ * @returns true if value is AccessListItem
13
+ * @example
14
+ * ```typescript
15
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
16
+ *
17
+ * if (AccessList.isItem(value)) {
18
+ * console.log(value.address, value.storageKeys)
19
+ * }
20
+ * ```
21
+ */
22
+ export const isItem = (value: unknown): value is Item => AccessList.isItem(value);
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @module keysFor
3
+ * @description Get all storage keys for an 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
+ * Get all storage keys for an address
12
+ *
13
+ * @param list - Access list to search
14
+ * @param address - Address to get keys for
15
+ * @returns Array of storage keys, or undefined if address not found
16
+ * @example
17
+ * ```typescript
18
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
19
+ *
20
+ * const keys = AccessList.keysFor(list, address)
21
+ * if (keys) {
22
+ * console.log(`Found ${keys.length} storage keys`)
23
+ * }
24
+ * ```
25
+ */
26
+ export const keysFor = (
27
+ list: BrandedAccessList,
28
+ address: AddressType,
29
+ ): readonly HashType[] | undefined => AccessList.keysFor(list, address);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @module merge
3
+ * @description Merge multiple access lists
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Merge multiple access lists
10
+ *
11
+ * Combines multiple access lists and deduplicates.
12
+ *
13
+ * @param accessLists - Access lists to merge
14
+ * @returns Merged and deduplicated access list
15
+ * @example
16
+ * ```typescript
17
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
18
+ *
19
+ * const merged = AccessList.merge(list1, list2, list3)
20
+ * ```
21
+ */
22
+ export const merge = (
23
+ ...accessLists: BrandedAccessList[]
24
+ ): BrandedAccessList => AccessList.merge(...accessLists);
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @module storageKeyCount
3
+ * @description Count total storage keys across all addresses
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Count total storage keys across all addresses
10
+ *
11
+ * @param list - Access list to count
12
+ * @returns Total number of storage keys
13
+ * @example
14
+ * ```typescript
15
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
16
+ *
17
+ * const keyCount = AccessList.storageKeyCount(list)
18
+ * ```
19
+ */
20
+ export const storageKeyCount = (list: BrandedAccessList): number =>
21
+ AccessList.storageKeyCount(list);
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @module toBytes
3
+ * @description Encode access list to RLP
4
+ * @since 0.1.0
5
+ */
6
+ import { AccessList, type BrandedAccessList } from "@tevm/voltaire/AccessList";
7
+
8
+ /**
9
+ * Encode access list to RLP
10
+ *
11
+ * Format: [[address, [storageKey1, storageKey2, ...]], ...]
12
+ *
13
+ * @param list - Access list to encode
14
+ * @returns RLP-encoded bytes
15
+ * @example
16
+ * ```typescript
17
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
18
+ *
19
+ * const encoded = AccessList.toBytes(list)
20
+ * ```
21
+ */
22
+ export const toBytes = (list: BrandedAccessList): Uint8Array =>
23
+ AccessList.toBytes(list);
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @module withAddress
3
+ * @description Add address to 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
+ * Add address to access list
11
+ *
12
+ * Creates new entry if address doesn't exist, otherwise returns original list.
13
+ *
14
+ * @param list - Access list to add to
15
+ * @param address - Address to add
16
+ * @returns New access list with address added
17
+ * @example
18
+ * ```typescript
19
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
20
+ *
21
+ * const newList = AccessList.withAddress(list, address)
22
+ * ```
23
+ */
24
+ export const withAddress = (
25
+ list: BrandedAccessList,
26
+ address: AddressType,
27
+ ): BrandedAccessList => AccessList.withAddress(list, address);
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @module withStorageKey
3
+ * @description Add storage key to access list for 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
+ * Add storage key to access list for address
12
+ *
13
+ * Adds address if it doesn't exist, then adds storage key if not already present.
14
+ *
15
+ * @param list - Access list to add to
16
+ * @param address - Address to add key for
17
+ * @param storageKey - Storage key to add
18
+ * @returns New access list with storage key added
19
+ * @example
20
+ * ```typescript
21
+ * import * as AccessList from 'voltaire-effect/primitives/AccessList'
22
+ *
23
+ * const newList = AccessList.withStorageKey(list, address, key)
24
+ * ```
25
+ */
26
+ export const withStorageKey = (
27
+ list: BrandedAccessList,
28
+ address: AddressType,
29
+ storageKey: HashType,
30
+ ): BrandedAccessList => AccessList.withStorageKey(list, address, storageKey);
@@ -364,3 +364,149 @@ describe("edge cases", () => {
364
364
  expect(short.includes("...")).toBe(true);
365
365
  });
366
366
  });
367
+
368
+ describe("Effect-wrapped constructors", () => {
369
+ it("from succeeds with valid hex", async () => {
370
+ const program = Address.from("0x742d35cc6634c0532925a3b844bc9e7595f251e3");
371
+ const addr = await Effect.runPromise(program);
372
+ expect(addr.length).toBe(20);
373
+ });
374
+
375
+ it("from succeeds with bytes", async () => {
376
+ const bytes = new Uint8Array(20).fill(0xab);
377
+ const program = Address.from(bytes);
378
+ const addr = await Effect.runPromise(program);
379
+ expect(addr.length).toBe(20);
380
+ });
381
+
382
+ it("from fails with invalid hex", async () => {
383
+ const program = Address.from("invalid");
384
+ const result = await Effect.runPromiseExit(program);
385
+ expect(result._tag).toBe("Failure");
386
+ });
387
+
388
+ it("fromHex succeeds with valid hex", async () => {
389
+ const program = Address.fromHex("0x742d35cc6634c0532925a3b844bc9e7595f251e3");
390
+ const addr = await Effect.runPromise(program);
391
+ expect(addr.length).toBe(20);
392
+ });
393
+
394
+ it("fromHex fails on wrong length", async () => {
395
+ const program = Address.fromHex("0x742d35");
396
+ const result = await Effect.runPromiseExit(program);
397
+ expect(result._tag).toBe("Failure");
398
+ });
399
+
400
+ it("fromBytes succeeds with 20 bytes", async () => {
401
+ const program = Address.fromBytes(new Uint8Array(20));
402
+ const addr = await Effect.runPromise(program);
403
+ expect(addr.length).toBe(20);
404
+ });
405
+
406
+ it("fromBytes fails on wrong length", async () => {
407
+ const program = Address.fromBytes(new Uint8Array(19));
408
+ const result = await Effect.runPromiseExit(program);
409
+ expect(result._tag).toBe("Failure");
410
+ });
411
+
412
+ it("fromNumber creates address from bigint", async () => {
413
+ const program = Address.fromNumber(1n);
414
+ const addr = await Effect.runPromise(program);
415
+ expect(addr.length).toBe(20);
416
+ expect(addr[19]).toBe(1);
417
+ });
418
+
419
+ it("zero creates zero address", () => {
420
+ const addr = Address.zero();
421
+ expect(addr.length).toBe(20);
422
+ expect(Address.isZero(addr)).toBe(true);
423
+ });
424
+
425
+ it("toHex converts address to hex", () => {
426
+ const addr = S.decodeSync(Address.Hex)("0x742d35cc6634c0532925a3b844bc9e7595f251e3");
427
+ const hex = Address.toHex(addr);
428
+ expect(hex).toBe("0x742d35cc6634c0532925a3b844bc9e7595f251e3");
429
+ });
430
+
431
+ it("is type guard works", () => {
432
+ const addr = S.decodeSync(Address.Hex)("0x742d35cc6634c0532925a3b844bc9e7595f251e3");
433
+ expect(Address.is(addr)).toBe(true);
434
+ expect(Address.is("not an address")).toBe(false);
435
+ expect(Address.is(new Uint8Array(20))).toBe(true);
436
+ expect(Address.is(new Uint8Array(19))).toBe(false);
437
+ });
438
+
439
+ it("isAddress validates address format", () => {
440
+ expect(Address.isAddress("0x742d35cc6634c0532925a3b844bc9e7595f251e3")).toBe(true);
441
+ expect(Address.isAddress("invalid")).toBe(false);
442
+ });
443
+ });
444
+
445
+ describe("utility functions", () => {
446
+ it("sortAddresses sorts lexicographically", () => {
447
+ const addr1 = S.decodeSync(Address.Hex)("0x0000000000000000000000000000000000000001");
448
+ const addr2 = S.decodeSync(Address.Hex)("0x0000000000000000000000000000000000000002");
449
+ const addr3 = S.decodeSync(Address.Hex)("0x0000000000000000000000000000000000000003");
450
+
451
+ const sorted = Address.sortAddresses([addr3, addr1, addr2]);
452
+ expect(Address.equals(sorted[0], addr1)).toBe(true);
453
+ expect(Address.equals(sorted[1], addr2)).toBe(true);
454
+ expect(Address.equals(sorted[2], addr3)).toBe(true);
455
+ });
456
+
457
+ it("deduplicateAddresses removes duplicates", () => {
458
+ const addr1 = S.decodeSync(Address.Hex)("0x0000000000000000000000000000000000000001");
459
+ const addr2 = S.decodeSync(Address.Hex)("0x0000000000000000000000000000000000000002");
460
+
461
+ const deduped = Address.deduplicateAddresses([addr1, addr1, addr2, addr2]);
462
+ expect(deduped.length).toBe(2);
463
+ });
464
+ });
465
+
466
+ describe("assert functions", () => {
467
+ it("assert succeeds on valid address", async () => {
468
+ const program = Address.assert("0x742d35cc6634c0532925a3b844bc9e7595f251e3");
469
+ await Effect.runPromise(program);
470
+ });
471
+
472
+ it("assert fails on invalid address", async () => {
473
+ const program = Address.assert("invalid");
474
+ const result = await Effect.runPromiseExit(program);
475
+ expect(result._tag).toBe("Failure");
476
+ });
477
+
478
+ it("assert with strict mode validates checksum", async () => {
479
+ const program = Address.assert("0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed", { strict: true });
480
+ await Effect.runPromise(program);
481
+ });
482
+
483
+ it("assertBasic succeeds on valid format", async () => {
484
+ const program = Address.assertBasic("0x742d35cc6634c0532925a3b844bc9e7595f251e3");
485
+ await Effect.runPromise(program);
486
+ });
487
+ });
488
+
489
+ describe("toChecksummed", () => {
490
+ it("converts to checksummed format", async () => {
491
+ const addr = S.decodeSync(Address.Hex)("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed");
492
+ const program = Address.toChecksummed(addr).pipe(Effect.provide(KeccakLive));
493
+ const result = await Effect.runPromise(program);
494
+ expect(result).toBe("0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed");
495
+ });
496
+ });
497
+
498
+ describe("calculateCreateAddress", () => {
499
+ it("calculates CREATE address", async () => {
500
+ const deployer = S.decodeSync(Address.Hex)("0x6ac7ea33f8831ea9dcc53393aaa88b25a785dbf0");
501
+ const program = Address.calculateCreateAddress(deployer, 0n);
502
+ const result = await Effect.runPromise(program);
503
+ expect(result.length).toBe(20);
504
+ });
505
+
506
+ it("fails on negative nonce", async () => {
507
+ const deployer = S.decodeSync(Address.Hex)("0x6ac7ea33f8831ea9dcc53393aaa88b25a785dbf0");
508
+ const program = Address.calculateCreateAddress(deployer, -1n);
509
+ const result = await Effect.runPromiseExit(program);
510
+ expect(result._tag).toBe("Failure");
511
+ });
512
+ });
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @module assert
3
+ * @description Assert value is valid address with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type InvalidAddressError, type InvalidChecksumError } from "@tevm/voltaire/Address";
8
+
9
+ type AssertError =
10
+ | InvalidAddressError
11
+ | InvalidChecksumError;
12
+
13
+ /**
14
+ * Assert value is valid address
15
+ *
16
+ * @param value - Value to validate
17
+ * @param options - Validation options
18
+ * @param options.strict - If true, validates EIP-55 checksum
19
+ * @returns Effect yielding void or failing with AssertError
20
+ * @example
21
+ * ```typescript
22
+ * // Basic validation
23
+ * const program = Address.assert('0x742d35cc6634c0532925a3b844bc9e7595f251e3')
24
+ *
25
+ * // Strict checksum validation
26
+ * const strictProgram = Address.assert('0x742d35Cc6634C0532925a3b844Bc9e7595f251e3', { strict: true })
27
+ * await Effect.runPromise(strictProgram)
28
+ * ```
29
+ */
30
+ export const assert = (
31
+ value: string | Uint8Array,
32
+ options?: { strict?: boolean },
33
+ ): Effect.Effect<void, AssertError> =>
34
+ Effect.try({
35
+ try: () => { Address.assert(value, options); },
36
+ catch: (e) => e as AssertError,
37
+ });
38
+
39
+ /**
40
+ * Assert value is valid address (non-strict, no checksum validation)
41
+ *
42
+ * @param value - Value to validate
43
+ * @returns Effect yielding void or failing with InvalidAddressError
44
+ */
45
+ export const assertBasic = (
46
+ value: string | Uint8Array,
47
+ ): Effect.Effect<void, InvalidAddressError> =>
48
+ Effect.try({
49
+ try: () => { Address.assert(value, { strict: false }); },
50
+ catch: (e) => e as InvalidAddressError,
51
+ });
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @module calculateCreate2Address
3
+ * @description Calculate CREATE2 contract deployment address with Effect
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type AddressType } from "@tevm/voltaire/Address";
8
+ import type { HashType } from "@tevm/voltaire/Hash";
9
+
10
+ /**
11
+ * Calculate CREATE2 contract deployment address
12
+ *
13
+ * Formula: keccak256(0xff ++ sender ++ salt ++ keccak256(initCode))[12:32]
14
+ *
15
+ * @param address - Deployer address
16
+ * @param salt - 32-byte salt value
17
+ * @param initCode - Contract initialization bytecode (Uint8Array)
18
+ * @returns Effect yielding the contract address that would be created
19
+ * @example
20
+ * ```typescript
21
+ * const program = Address.calculateCreate2Address(deployerAddr, salt, initCode)
22
+ * const contractAddr = await Effect.runPromise(program)
23
+ * ```
24
+ */
25
+ export const calculateCreate2Address = (
26
+ address: AddressType,
27
+ salt: HashType,
28
+ initCode: Uint8Array,
29
+ ): Effect.Effect<AddressType, Error> =>
30
+ Effect.try({
31
+ try: () => Address.calculateCreate2Address(address, salt, initCode as Parameters<typeof Address.calculateCreate2Address>[2]),
32
+ catch: (e) => e as Error,
33
+ });
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @module calculateCreateAddress
3
+ * @description Calculate CREATE contract deployment address with Effect
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type AddressType, type InvalidValueError } from "@tevm/voltaire/Address";
8
+
9
+ /**
10
+ * Calculate CREATE contract deployment address
11
+ *
12
+ * Formula: keccak256(rlp([sender, nonce]))[12:32]
13
+ *
14
+ * @param address - Deployer address
15
+ * @param nonce - Transaction nonce
16
+ * @returns Effect yielding the contract address that would be created
17
+ * @example
18
+ * ```typescript
19
+ * const program = Address.calculateCreateAddress(deployerAddr, 0n)
20
+ * const contractAddr = await Effect.runPromise(program)
21
+ * ```
22
+ */
23
+ export const calculateCreateAddress = (
24
+ address: AddressType,
25
+ nonce: bigint,
26
+ ): Effect.Effect<AddressType, InvalidValueError> =>
27
+ Effect.try({
28
+ try: () => Address.calculateCreateAddress(address, nonce),
29
+ catch: (e) => e as InvalidValueError,
30
+ });
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @module deduplicateAddresses
3
+ * @description Remove duplicate addresses from array
4
+ * @since 0.1.0
5
+ */
6
+ import { deduplicateAddresses as voltaireDeduplicateAddresses, type AddressType } from "@tevm/voltaire/Address";
7
+
8
+ /**
9
+ * Remove duplicate addresses from array
10
+ *
11
+ * @param addresses - Array with potential duplicates
12
+ * @returns New array with duplicates removed
13
+ * @example
14
+ * ```typescript
15
+ * const unique = Address.deduplicateAddresses([addr1, addr1, addr2])
16
+ * // [addr1, addr2]
17
+ * ```
18
+ */
19
+ export const deduplicateAddresses = (addresses: AddressType[]): AddressType[] =>
20
+ voltaireDeduplicateAddresses(addresses);
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @module from
3
+ * @description Create Address from various input types with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type AddressType } from "@tevm/voltaire/Address";
8
+ import type {
9
+ InvalidAddressError,
10
+ InvalidHexFormatError,
11
+ InvalidAddressLengthError,
12
+ InvalidValueError,
13
+ } from "@tevm/voltaire/Address";
14
+
15
+ type AddressError =
16
+ | InvalidAddressError
17
+ | InvalidHexFormatError
18
+ | InvalidAddressLengthError
19
+ | InvalidValueError;
20
+
21
+ /**
22
+ * Create Address from hex string, bytes, or number
23
+ *
24
+ * @param value - Hex string, Uint8Array, number, or bigint
25
+ * @returns Effect yielding AddressType or failing with AddressError
26
+ * @example
27
+ * ```typescript
28
+ * import * as Address from 'voltaire-effect/primitives/Address'
29
+ * import * as Effect from 'effect/Effect'
30
+ *
31
+ * const program = Address.from('0x742d35cc6634c0532925a3b844bc9e7595f251e3')
32
+ * const addr = await Effect.runPromise(program)
33
+ * ```
34
+ */
35
+ export const from = (
36
+ value: string | Uint8Array | number | bigint,
37
+ ): Effect.Effect<AddressType, AddressError> =>
38
+ Effect.try({
39
+ try: () => Address.from(value),
40
+ catch: (e) => e as AddressError,
41
+ });
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @module fromAbiEncoded
3
+ * @description Create Address from ABI-encoded bytes with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type AddressType } from "@tevm/voltaire/Address";
8
+ import type {
9
+ InvalidAddressLengthError,
10
+ InvalidAbiEncodedPaddingError,
11
+ } from "@tevm/voltaire/Address";
12
+
13
+ type AbiEncodedError =
14
+ | InvalidAddressLengthError
15
+ | InvalidAbiEncodedPaddingError;
16
+
17
+ /**
18
+ * Create Address from ABI-encoded bytes (32 bytes, left-padded)
19
+ *
20
+ * @param value - 32-byte ABI-encoded address
21
+ * @returns Effect yielding AddressType or failing with error
22
+ * @example
23
+ * ```typescript
24
+ * const abiEncoded = new Uint8Array(32)
25
+ * abiEncoded.set(addressBytes, 12) // left-pad with 12 zeros
26
+ * const program = Address.fromAbiEncoded(abiEncoded)
27
+ * ```
28
+ */
29
+ export const fromAbiEncoded = (
30
+ value: Uint8Array,
31
+ ): Effect.Effect<AddressType, AbiEncodedError> =>
32
+ Effect.try({
33
+ try: () => Address.fromAbiEncoded(value),
34
+ catch: (e) => e as AbiEncodedError,
35
+ });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @module fromBase64
3
+ * @description Create Address from base64 string with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type AddressType, type InvalidAddressLengthError } from "@tevm/voltaire/Address";
8
+
9
+ /**
10
+ * Create Address from base64 encoded string
11
+ *
12
+ * @param value - Base64 string (must decode to 20 bytes)
13
+ * @returns Effect yielding AddressType or failing with InvalidAddressLengthError
14
+ * @example
15
+ * ```typescript
16
+ * const program = Address.fromBase64('dC01zGY0wFMpJaO4RLyeZV8lHuM=')
17
+ * ```
18
+ */
19
+ export const fromBase64 = (
20
+ value: string,
21
+ ): Effect.Effect<AddressType, InvalidAddressLengthError> =>
22
+ Effect.try({
23
+ try: () => Address.fromBase64(value),
24
+ catch: (e) => e as InvalidAddressLengthError,
25
+ });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @module fromBytes
3
+ * @description Create Address from Uint8Array with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type AddressType, type InvalidAddressLengthError } from "@tevm/voltaire/Address";
8
+
9
+ /**
10
+ * Create Address from 20-byte Uint8Array
11
+ *
12
+ * @param value - 20-byte Uint8Array
13
+ * @returns Effect yielding AddressType or failing with InvalidAddressLengthError
14
+ * @example
15
+ * ```typescript
16
+ * const program = Address.fromBytes(new Uint8Array(20))
17
+ * ```
18
+ */
19
+ export const fromBytes = (
20
+ value: Uint8Array,
21
+ ): Effect.Effect<AddressType, InvalidAddressLengthError> =>
22
+ Effect.try({
23
+ try: () => Address.fromBytes(value),
24
+ catch: (e) => e as InvalidAddressLengthError,
25
+ });
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @module fromHex
3
+ * @description Create Address from hex string with Effect error handling
4
+ * @since 0.1.0
5
+ */
6
+ import { Effect } from "effect";
7
+ import { Address, type AddressType } from "@tevm/voltaire/Address";
8
+ import type {
9
+ InvalidHexFormatError,
10
+ InvalidAddressLengthError,
11
+ } from "@tevm/voltaire/Address";
12
+
13
+ type AddressError =
14
+ | InvalidHexFormatError
15
+ | InvalidAddressLengthError;
16
+
17
+ /**
18
+ * Create Address from hex string
19
+ *
20
+ * @param value - Hex string with 0x prefix
21
+ * @returns Effect yielding AddressType or failing with AddressError
22
+ * @example
23
+ * ```typescript
24
+ * const program = Address.fromHex('0x742d35cc6634c0532925a3b844bc9e7595f251e3')
25
+ * ```
26
+ */
27
+ export const fromHex = (value: string): Effect.Effect<AddressType, AddressError> =>
28
+ Effect.try({
29
+ try: () => Address.fromHex(value),
30
+ catch: (e) => e as AddressError,
31
+ });