voltaire-effect 0.2.23

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 (1262) hide show
  1. package/README.md +42 -0
  2. package/dist/AccountService-BetXokad.d.ts +1717 -0
  3. package/dist/RpcResolver-BpvqybjD.d.ts +6439 -0
  4. package/dist/Secp256k1Service-OxQ6hJFp.d.ts +250 -0
  5. package/dist/X25519Test-DGsk1V9o.d.ts +5352 -0
  6. package/dist/crypto/index.d.ts +289 -0
  7. package/dist/crypto/index.js +1254 -0
  8. package/dist/index-IgkEHjBe.d.ts +20058 -0
  9. package/dist/index.d.ts +11961 -0
  10. package/dist/index.js +20715 -0
  11. package/dist/native/index.d.ts +193 -0
  12. package/dist/native/index.js +20931 -0
  13. package/dist/primitives/index.d.ts +273 -0
  14. package/dist/primitives/index.js +8688 -0
  15. package/dist/services/index.d.ts +42 -0
  16. package/dist/services/index.js +6176 -0
  17. package/package.json +108 -0
  18. package/src/auth/index.ts +20 -0
  19. package/src/auth/siwe.test.ts +156 -0
  20. package/src/auth/siwe.ts +319 -0
  21. package/src/block/BlockError.test.ts +120 -0
  22. package/src/block/BlockError.ts +52 -0
  23. package/src/block/block.test.ts +579 -0
  24. package/src/block/fetchBlock.ts +100 -0
  25. package/src/block/fetchBlockByHash.ts +97 -0
  26. package/src/block/fetchBlockReceipts.ts +129 -0
  27. package/src/block/index.ts +52 -0
  28. package/src/block/toLightBlock.ts +43 -0
  29. package/src/blockchain/Blockchain.test.ts +468 -0
  30. package/src/blockchain/Blockchain.ts +441 -0
  31. package/src/blockchain/BlockchainService.ts +203 -0
  32. package/src/blockchain/index.ts +46 -0
  33. package/src/contract/EventStream.test.ts +802 -0
  34. package/src/contract/EventStream.ts +138 -0
  35. package/src/contract/EventStreamError.test.ts +92 -0
  36. package/src/contract/EventStreamError.ts +33 -0
  37. package/src/contract/EventStreamService.ts +124 -0
  38. package/src/contract/index.ts +39 -0
  39. package/src/crypto/AesGcm/AesGcm.test.ts +185 -0
  40. package/src/crypto/AesGcm/AesGcmService.ts +86 -0
  41. package/src/crypto/AesGcm/errors.ts +38 -0
  42. package/src/crypto/AesGcm/index.ts +101 -0
  43. package/src/crypto/AesGcm/operations.ts +191 -0
  44. package/src/crypto/Bip39/Bip39.test.ts +183 -0
  45. package/src/crypto/Bip39/Bip39Service.ts +160 -0
  46. package/src/crypto/Bip39/index.ts +52 -0
  47. package/src/crypto/Bip39/operations.ts +168 -0
  48. package/src/crypto/Bip39/types.ts +16 -0
  49. package/src/crypto/Bip39/utils.ts +42 -0
  50. package/src/crypto/Blake2/Blake2.test.ts +317 -0
  51. package/src/crypto/Blake2/Blake2Service.ts +121 -0
  52. package/src/crypto/Blake2/hash.ts +59 -0
  53. package/src/crypto/Blake2/index.ts +30 -0
  54. package/src/crypto/Bls12381/Bls12381.test.ts +464 -0
  55. package/src/crypto/Bls12381/Bls12381Live.ts +43 -0
  56. package/src/crypto/Bls12381/Bls12381Service.ts +131 -0
  57. package/src/crypto/Bls12381/aggregate.ts +66 -0
  58. package/src/crypto/Bls12381/index.ts +43 -0
  59. package/src/crypto/Bls12381/sign.ts +65 -0
  60. package/src/crypto/Bls12381/verify.ts +71 -0
  61. package/src/crypto/Bn254/Bn254.test.ts +131 -0
  62. package/src/crypto/Bn254/Bn254Service.ts +369 -0
  63. package/src/crypto/Bn254/index.ts +56 -0
  64. package/src/crypto/Bn254/operations.ts +259 -0
  65. package/src/crypto/Bn254/types.ts +15 -0
  66. package/src/crypto/ChaCha20Poly1305/ChaCha20Poly1305.test.ts +199 -0
  67. package/src/crypto/ChaCha20Poly1305/ChaCha20Poly1305Service.ts +177 -0
  68. package/src/crypto/ChaCha20Poly1305/errors.ts +38 -0
  69. package/src/crypto/ChaCha20Poly1305/index.ts +46 -0
  70. package/src/crypto/ChaCha20Poly1305/operations.ts +161 -0
  71. package/src/crypto/CryptoLive.test.ts +42 -0
  72. package/src/crypto/CryptoLive.ts +52 -0
  73. package/src/crypto/CryptoTest.ts +49 -0
  74. package/src/crypto/EIP712/EIP712.test.ts +197 -0
  75. package/src/crypto/EIP712/EIP712Service.ts +184 -0
  76. package/src/crypto/EIP712/index.ts +50 -0
  77. package/src/crypto/EIP712/operations.ts +220 -0
  78. package/src/crypto/ERC6492/ERC6492.test.ts +115 -0
  79. package/src/crypto/ERC6492/index.ts +9 -0
  80. package/src/crypto/ERC6492/unwrapSignature.ts +72 -0
  81. package/src/crypto/ERC6492/verifySignature.ts +139 -0
  82. package/src/crypto/ERC6492/wrapSignature.ts +55 -0
  83. package/src/crypto/Ed25519/Ed25519.test.ts +472 -0
  84. package/src/crypto/Ed25519/Ed25519Live.ts +44 -0
  85. package/src/crypto/Ed25519/Ed25519Service.ts +134 -0
  86. package/src/crypto/Ed25519/Ed25519Test.ts +59 -0
  87. package/src/crypto/Ed25519/getPublicKey.ts +60 -0
  88. package/src/crypto/Ed25519/index.ts +42 -0
  89. package/src/crypto/Ed25519/sign.ts +66 -0
  90. package/src/crypto/Ed25519/verify.ts +75 -0
  91. package/src/crypto/HDWallet/HDWallet.cleanup.test.ts +128 -0
  92. package/src/crypto/HDWallet/HDWallet.test.ts +383 -0
  93. package/src/crypto/HDWallet/HDWalletLive.ts +201 -0
  94. package/src/crypto/HDWallet/HDWalletService.ts +186 -0
  95. package/src/crypto/HDWallet/derive.ts +348 -0
  96. package/src/crypto/HDWallet/errors.ts +121 -0
  97. package/src/crypto/HDWallet/index.ts +65 -0
  98. package/src/crypto/HMAC/HMAC.test.ts +380 -0
  99. package/src/crypto/HMAC/HMACService.ts +174 -0
  100. package/src/crypto/HMAC/index.ts +39 -0
  101. package/src/crypto/HMAC/operations.ts +112 -0
  102. package/src/crypto/Hash/index.ts +51 -0
  103. package/src/crypto/KZG/KZG.test.ts +94 -0
  104. package/src/crypto/KZG/KZGService.ts +241 -0
  105. package/src/crypto/KZG/commit.ts +76 -0
  106. package/src/crypto/KZG/index.ts +42 -0
  107. package/src/crypto/KZG/verify.ts +52 -0
  108. package/src/crypto/Keccak256/Keccak256.test.ts +265 -0
  109. package/src/crypto/Keccak256/KeccakService.ts +177 -0
  110. package/src/crypto/Keccak256/hash.ts +76 -0
  111. package/src/crypto/Keccak256/index.ts +49 -0
  112. package/src/crypto/Keystore/Keystore.cleanup.test.ts +93 -0
  113. package/src/crypto/Keystore/Keystore.test.ts +511 -0
  114. package/src/crypto/Keystore/KeystoreLive.ts +35 -0
  115. package/src/crypto/Keystore/KeystoreService.ts +115 -0
  116. package/src/crypto/Keystore/KeystoreTest.ts +65 -0
  117. package/src/crypto/Keystore/decrypt.ts +105 -0
  118. package/src/crypto/Keystore/encrypt.ts +71 -0
  119. package/src/crypto/Keystore/index.ts +41 -0
  120. package/src/crypto/ModExp/ModExp.test.ts +177 -0
  121. package/src/crypto/ModExp/ModExpService.ts +139 -0
  122. package/src/crypto/ModExp/index.ts +39 -0
  123. package/src/crypto/ModExp/operations.ts +122 -0
  124. package/src/crypto/P256/P256.test.ts +414 -0
  125. package/src/crypto/P256/P256Live.ts +41 -0
  126. package/src/crypto/P256/P256Service.ts +115 -0
  127. package/src/crypto/P256/index.ts +37 -0
  128. package/src/crypto/P256/sign.ts +66 -0
  129. package/src/crypto/P256/verify.ts +75 -0
  130. package/src/crypto/Ripemd160/Ripemd160.test.ts +61 -0
  131. package/src/crypto/Ripemd160/Ripemd160Service.ts +119 -0
  132. package/src/crypto/Ripemd160/hash.ts +58 -0
  133. package/src/crypto/Ripemd160/index.ts +35 -0
  134. package/src/crypto/SHA256/SHA256.test.ts +284 -0
  135. package/src/crypto/SHA256/SHA256Service.ts +179 -0
  136. package/src/crypto/SHA256/hash.ts +93 -0
  137. package/src/crypto/SHA256/index.ts +48 -0
  138. package/src/crypto/Secp256k1/Secp256k1.test.ts +469 -0
  139. package/src/crypto/Secp256k1/Secp256k1Live.ts +83 -0
  140. package/src/crypto/Secp256k1/Secp256k1Service.ts +194 -0
  141. package/src/crypto/Secp256k1/Secp256k1Test.ts +101 -0
  142. package/src/crypto/Secp256k1/errors.ts +224 -0
  143. package/src/crypto/Secp256k1/index.ts +65 -0
  144. package/src/crypto/Secp256k1/recover.ts +106 -0
  145. package/src/crypto/Secp256k1/sign.ts +96 -0
  146. package/src/crypto/Secp256k1/verify.ts +111 -0
  147. package/src/crypto/Signature/Signature.test.ts +323 -0
  148. package/src/crypto/Signature/constantTimeEqual.ts +54 -0
  149. package/src/crypto/Signature/errors.ts +93 -0
  150. package/src/crypto/Signature/hashMessage.ts +83 -0
  151. package/src/crypto/Signature/index.ts +69 -0
  152. package/src/crypto/Signature/recoverAddress.ts +163 -0
  153. package/src/crypto/Signature/recoverMessageAddress.ts +70 -0
  154. package/src/crypto/Signature/verifyHash.ts +72 -0
  155. package/src/crypto/Signature/verifyMessage.ts +71 -0
  156. package/src/crypto/Signature/verifyTypedData.ts +88 -0
  157. package/src/crypto/Signers/Signers.test.ts +149 -0
  158. package/src/crypto/Signers/SignersLive.ts +40 -0
  159. package/src/crypto/Signers/SignersService.ts +73 -0
  160. package/src/crypto/Signers/SignersTest.ts +49 -0
  161. package/src/crypto/Signers/index.ts +44 -0
  162. package/src/crypto/Signers/operations.ts +123 -0
  163. package/src/crypto/Verify/errors.ts +97 -0
  164. package/src/crypto/Verify/hashMessage.ts +68 -0
  165. package/src/crypto/Verify/recoverAddress.ts +163 -0
  166. package/src/crypto/X25519/X25519.test.ts +168 -0
  167. package/src/crypto/X25519/X25519Live.ts +37 -0
  168. package/src/crypto/X25519/X25519Service.ts +81 -0
  169. package/src/crypto/X25519/X25519Test.ts +38 -0
  170. package/src/crypto/X25519/computeSecret.ts +61 -0
  171. package/src/crypto/X25519/generateKeyPair.ts +37 -0
  172. package/src/crypto/X25519/getPublicKey.ts +40 -0
  173. package/src/crypto/X25519/index.ts +41 -0
  174. package/src/crypto/index.ts +239 -0
  175. package/src/crypto/utils/constantTimeEqual.test.ts +40 -0
  176. package/src/crypto/utils/constantTimeEqual.ts +36 -0
  177. package/src/crypto/utils/index.ts +7 -0
  178. package/src/index.ts +224 -0
  179. package/src/jsonrpc/Anvil.ts +87 -0
  180. package/src/jsonrpc/BatchRequest.ts +23 -0
  181. package/src/jsonrpc/BatchResponse.ts +55 -0
  182. package/src/jsonrpc/Error.ts +107 -0
  183. package/src/jsonrpc/Eth.ts +224 -0
  184. package/src/jsonrpc/Hardhat.ts +69 -0
  185. package/src/jsonrpc/IdCounter.ts +7 -0
  186. package/src/jsonrpc/JsonRpc.test.ts +751 -0
  187. package/src/jsonrpc/Net.ts +24 -0
  188. package/src/jsonrpc/Request.ts +44 -0
  189. package/src/jsonrpc/Response.ts +98 -0
  190. package/src/jsonrpc/Txpool.ts +24 -0
  191. package/src/jsonrpc/Wallet.ts +52 -0
  192. package/src/jsonrpc/Web3.ts +22 -0
  193. package/src/jsonrpc/errors.test.ts +355 -0
  194. package/src/jsonrpc/errors.ts +680 -0
  195. package/src/jsonrpc/index.ts +112 -0
  196. package/src/jsonrpc/schemas/anvil/dropTransaction.ts +53 -0
  197. package/src/jsonrpc/schemas/anvil/impersonateAccount.ts +53 -0
  198. package/src/jsonrpc/schemas/anvil/index.ts +73 -0
  199. package/src/jsonrpc/schemas/anvil/mine.ts +52 -0
  200. package/src/jsonrpc/schemas/anvil/reset.ts +57 -0
  201. package/src/jsonrpc/schemas/anvil/revert.ts +49 -0
  202. package/src/jsonrpc/schemas/anvil/setAutomine.ts +45 -0
  203. package/src/jsonrpc/schemas/anvil/setBalance.ts +50 -0
  204. package/src/jsonrpc/schemas/anvil/setBlockTimestampInterval.ts +49 -0
  205. package/src/jsonrpc/schemas/anvil/setCode.ts +50 -0
  206. package/src/jsonrpc/schemas/anvil/setNextBlockTimestamp.ts +53 -0
  207. package/src/jsonrpc/schemas/anvil/setNonce.ts +50 -0
  208. package/src/jsonrpc/schemas/anvil/setStorageAt.ts +56 -0
  209. package/src/jsonrpc/schemas/anvil/snapshot.ts +49 -0
  210. package/src/jsonrpc/schemas/anvil/stopImpersonatingAccount.ts +53 -0
  211. package/src/jsonrpc/schemas/common.ts +450 -0
  212. package/src/jsonrpc/schemas/eth/accounts.ts +49 -0
  213. package/src/jsonrpc/schemas/eth/blobBaseFee.ts +49 -0
  214. package/src/jsonrpc/schemas/eth/blockNumber.ts +49 -0
  215. package/src/jsonrpc/schemas/eth/call.ts +69 -0
  216. package/src/jsonrpc/schemas/eth/chainId.ts +49 -0
  217. package/src/jsonrpc/schemas/eth/coinbase.ts +49 -0
  218. package/src/jsonrpc/schemas/eth/createAccessList.ts +57 -0
  219. package/src/jsonrpc/schemas/eth/estimateGas.ts +59 -0
  220. package/src/jsonrpc/schemas/eth/feeHistory.ts +54 -0
  221. package/src/jsonrpc/schemas/eth/gasPrice.ts +49 -0
  222. package/src/jsonrpc/schemas/eth/getBalance.ts +51 -0
  223. package/src/jsonrpc/schemas/eth/getBlockByHash.ts +54 -0
  224. package/src/jsonrpc/schemas/eth/getBlockByNumber.ts +54 -0
  225. package/src/jsonrpc/schemas/eth/getBlockReceipts.ts +54 -0
  226. package/src/jsonrpc/schemas/eth/getBlockTransactionCountByHash.ts +54 -0
  227. package/src/jsonrpc/schemas/eth/getBlockTransactionCountByNumber.ts +55 -0
  228. package/src/jsonrpc/schemas/eth/getCode.ts +51 -0
  229. package/src/jsonrpc/schemas/eth/getFilterChanges.ts +58 -0
  230. package/src/jsonrpc/schemas/eth/getFilterLogs.ts +54 -0
  231. package/src/jsonrpc/schemas/eth/getLogs.ts +50 -0
  232. package/src/jsonrpc/schemas/eth/getProof.ts +56 -0
  233. package/src/jsonrpc/schemas/eth/getStorageAt.ts +57 -0
  234. package/src/jsonrpc/schemas/eth/getTransactionByBlockHashAndIndex.ts +59 -0
  235. package/src/jsonrpc/schemas/eth/getTransactionByBlockNumberAndIndex.ts +59 -0
  236. package/src/jsonrpc/schemas/eth/getTransactionByHash.ts +54 -0
  237. package/src/jsonrpc/schemas/eth/getTransactionCount.ts +58 -0
  238. package/src/jsonrpc/schemas/eth/getTransactionReceipt.ts +54 -0
  239. package/src/jsonrpc/schemas/eth/getUncleByBlockHashAndIndex.ts +58 -0
  240. package/src/jsonrpc/schemas/eth/getUncleByBlockNumberAndIndex.ts +58 -0
  241. package/src/jsonrpc/schemas/eth/getUncleCountByBlockHash.ts +54 -0
  242. package/src/jsonrpc/schemas/eth/getUncleCountByBlockNumber.ts +54 -0
  243. package/src/jsonrpc/schemas/eth/getWork.ts +53 -0
  244. package/src/jsonrpc/schemas/eth/hashrate.ts +49 -0
  245. package/src/jsonrpc/schemas/eth/index.ts +178 -0
  246. package/src/jsonrpc/schemas/eth/maxPriorityFeePerGas.ts +53 -0
  247. package/src/jsonrpc/schemas/eth/mining.ts +45 -0
  248. package/src/jsonrpc/schemas/eth/newBlockFilter.ts +53 -0
  249. package/src/jsonrpc/schemas/eth/newFilter.ts +50 -0
  250. package/src/jsonrpc/schemas/eth/newPendingTransactionFilter.ts +53 -0
  251. package/src/jsonrpc/schemas/eth/protocolVersion.ts +49 -0
  252. package/src/jsonrpc/schemas/eth/sendRawTransaction.ts +54 -0
  253. package/src/jsonrpc/schemas/eth/sendTransaction.ts +54 -0
  254. package/src/jsonrpc/schemas/eth/sign.ts +50 -0
  255. package/src/jsonrpc/schemas/eth/signTransaction.ts +54 -0
  256. package/src/jsonrpc/schemas/eth/submitHashrate.ts +57 -0
  257. package/src/jsonrpc/schemas/eth/submitWork.ts +54 -0
  258. package/src/jsonrpc/schemas/eth/subscribe.ts +86 -0
  259. package/src/jsonrpc/schemas/eth/syncing.ts +49 -0
  260. package/src/jsonrpc/schemas/eth/uninstallFilter.ts +53 -0
  261. package/src/jsonrpc/schemas/eth/unsubscribe.ts +49 -0
  262. package/src/jsonrpc/schemas/hardhat/dropTransaction.ts +53 -0
  263. package/src/jsonrpc/schemas/hardhat/impersonateAccount.ts +53 -0
  264. package/src/jsonrpc/schemas/hardhat/index.ts +60 -0
  265. package/src/jsonrpc/schemas/hardhat/mine.ts +52 -0
  266. package/src/jsonrpc/schemas/hardhat/reset.ts +53 -0
  267. package/src/jsonrpc/schemas/hardhat/setBalance.ts +50 -0
  268. package/src/jsonrpc/schemas/hardhat/setCode.ts +50 -0
  269. package/src/jsonrpc/schemas/hardhat/setNonce.ts +50 -0
  270. package/src/jsonrpc/schemas/hardhat/setStorageAt.ts +56 -0
  271. package/src/jsonrpc/schemas/hardhat/stopImpersonatingAccount.ts +53 -0
  272. package/src/jsonrpc/schemas/index.ts +271 -0
  273. package/src/jsonrpc/schemas/net/index.ts +40 -0
  274. package/src/jsonrpc/schemas/net/listening.ts +45 -0
  275. package/src/jsonrpc/schemas/net/peerCount.ts +49 -0
  276. package/src/jsonrpc/schemas/net/version.ts +45 -0
  277. package/src/jsonrpc/schemas/schemas.test.ts +563 -0
  278. package/src/jsonrpc/schemas/txpool/content.ts +70 -0
  279. package/src/jsonrpc/schemas/txpool/index.ts +40 -0
  280. package/src/jsonrpc/schemas/txpool/inspect.ts +67 -0
  281. package/src/jsonrpc/schemas/txpool/status.ts +52 -0
  282. package/src/jsonrpc/schemas/wallet/addEthereumChain.ts +81 -0
  283. package/src/jsonrpc/schemas/wallet/getCallsStatus.ts +87 -0
  284. package/src/jsonrpc/schemas/wallet/getCapabilities.ts +87 -0
  285. package/src/jsonrpc/schemas/wallet/getPermissions.ts +51 -0
  286. package/src/jsonrpc/schemas/wallet/index.ts +64 -0
  287. package/src/jsonrpc/schemas/wallet/registerOnboarding.ts +50 -0
  288. package/src/jsonrpc/schemas/wallet/requestPermissions.ts +88 -0
  289. package/src/jsonrpc/schemas/wallet/revokePermissions.ts +62 -0
  290. package/src/jsonrpc/schemas/wallet/sendCalls.ts +79 -0
  291. package/src/jsonrpc/schemas/wallet/showCallsStatus.ts +50 -0
  292. package/src/jsonrpc/schemas/wallet/switchEthereumChain.ts +66 -0
  293. package/src/jsonrpc/schemas/wallet/watchAsset.ts +75 -0
  294. package/src/jsonrpc/schemas/web3/clientVersion.ts +49 -0
  295. package/src/jsonrpc/schemas/web3/index.ts +34 -0
  296. package/src/jsonrpc/schemas/web3/sha3.ts +50 -0
  297. package/src/native/CryptoLiveNative.ts +8 -0
  298. package/src/native/index.ts +14 -0
  299. package/src/primitives/Abi/Abi.test.ts +967 -0
  300. package/src/primitives/Abi/AbiSchema.test.ts +382 -0
  301. package/src/primitives/Abi/AbiSchema.ts +489 -0
  302. package/src/primitives/Abi/Item/index.ts +17 -0
  303. package/src/primitives/Abi/constructor/index.ts +5 -0
  304. package/src/primitives/Abi/decodeError.test.ts +117 -0
  305. package/src/primitives/Abi/decodeError.ts +103 -0
  306. package/src/primitives/Abi/decodeEventLog.test.ts +128 -0
  307. package/src/primitives/Abi/decodeEventLog.ts +164 -0
  308. package/src/primitives/Abi/decodeFunction.test.ts +91 -0
  309. package/src/primitives/Abi/decodeFunction.ts +87 -0
  310. package/src/primitives/Abi/decodeFunctionData.test.ts +158 -0
  311. package/src/primitives/Abi/decodeFunctionData.ts +116 -0
  312. package/src/primitives/Abi/decodeFunctionResult.test.ts +197 -0
  313. package/src/primitives/Abi/decodeFunctionResult.ts +160 -0
  314. package/src/primitives/Abi/encodeError.test.ts +106 -0
  315. package/src/primitives/Abi/encodeError.ts +96 -0
  316. package/src/primitives/Abi/encodeEventLog.test.ts +91 -0
  317. package/src/primitives/Abi/encodeEventLog.ts +86 -0
  318. package/src/primitives/Abi/encodeFunction.test.ts +65 -0
  319. package/src/primitives/Abi/encodeFunction.ts +65 -0
  320. package/src/primitives/Abi/encodeFunctionData.test.ts +149 -0
  321. package/src/primitives/Abi/encodeFunctionData.ts +124 -0
  322. package/src/primitives/Abi/encodeFunctionResult.test.ts +114 -0
  323. package/src/primitives/Abi/encodeFunctionResult.ts +96 -0
  324. package/src/primitives/Abi/error/index.ts +11 -0
  325. package/src/primitives/Abi/error/standards/index.ts +23 -0
  326. package/src/primitives/Abi/error/wrapped/index.ts +7 -0
  327. package/src/primitives/Abi/event/index.ts +15 -0
  328. package/src/primitives/Abi/findError.test.ts +97 -0
  329. package/src/primitives/Abi/findError.ts +55 -0
  330. package/src/primitives/Abi/findEvent.test.ts +100 -0
  331. package/src/primitives/Abi/findEvent.ts +51 -0
  332. package/src/primitives/Abi/findFunction.test.ts +86 -0
  333. package/src/primitives/Abi/findFunction.ts +58 -0
  334. package/src/primitives/Abi/format.test.ts +112 -0
  335. package/src/primitives/Abi/format.ts +39 -0
  336. package/src/primitives/Abi/formatWithArgs.test.ts +105 -0
  337. package/src/primitives/Abi/formatWithArgs.ts +43 -0
  338. package/src/primitives/Abi/function/errors.ts +69 -0
  339. package/src/primitives/Abi/function/index.ts +24 -0
  340. package/src/primitives/Abi/getErrorSignature.test.ts +78 -0
  341. package/src/primitives/Abi/getErrorSignature.ts +40 -0
  342. package/src/primitives/Abi/getEvent.test.ts +98 -0
  343. package/src/primitives/Abi/getEvent.ts +131 -0
  344. package/src/primitives/Abi/getEventSignature.test.ts +79 -0
  345. package/src/primitives/Abi/getEventSignature.ts +40 -0
  346. package/src/primitives/Abi/getFunction.test.ts +116 -0
  347. package/src/primitives/Abi/getFunction.ts +121 -0
  348. package/src/primitives/Abi/getFunctionSignature.test.ts +88 -0
  349. package/src/primitives/Abi/getFunctionSignature.ts +40 -0
  350. package/src/primitives/Abi/getSelector.test.ts +149 -0
  351. package/src/primitives/Abi/getSelector.ts +59 -0
  352. package/src/primitives/Abi/index.ts +53 -0
  353. package/src/primitives/Abi/interface/index.ts +11 -0
  354. package/src/primitives/Abi/parameter/index.ts +5 -0
  355. package/src/primitives/Abi/parse.test.ts +97 -0
  356. package/src/primitives/Abi/parse.ts +61 -0
  357. package/src/primitives/Abi/parseItem.test.ts +144 -0
  358. package/src/primitives/Abi/parseItem.ts +76 -0
  359. package/src/primitives/Abi/wasm/index.ts +67 -0
  360. package/src/primitives/AccessList/Rpc.ts +128 -0
  361. package/src/primitives/AccessList/index.ts +32 -0
  362. package/src/primitives/AccountState/Struct.ts +214 -0
  363. package/src/primitives/AccountState/index.ts +60 -0
  364. package/src/primitives/Address/Address.test.ts +366 -0
  365. package/src/primitives/Address/AddressSchema.ts +21 -0
  366. package/src/primitives/Address/Bytes.ts +55 -0
  367. package/src/primitives/Address/Checksummed.ts +93 -0
  368. package/src/primitives/Address/Hex.ts +56 -0
  369. package/src/primitives/Address/clone.ts +26 -0
  370. package/src/primitives/Address/compare.ts +29 -0
  371. package/src/primitives/Address/equals.ts +29 -0
  372. package/src/primitives/Address/greaterThan.ts +29 -0
  373. package/src/primitives/Address/index.ts +89 -0
  374. package/src/primitives/Address/isValid.ts +26 -0
  375. package/src/primitives/Address/isValidChecksum.ts +26 -0
  376. package/src/primitives/Address/isZero.ts +26 -0
  377. package/src/primitives/Address/lessThan.ts +29 -0
  378. package/src/primitives/Address/toAbiEncoded.ts +28 -0
  379. package/src/primitives/Address/toBytes.ts +26 -0
  380. package/src/primitives/Address/toLowercase.ts +28 -0
  381. package/src/primitives/Address/toShortHex.ts +27 -0
  382. package/src/primitives/Address/toU256.ts +28 -0
  383. package/src/primitives/Address/toUppercase.ts +28 -0
  384. package/src/primitives/Authorization/Rpc.ts +148 -0
  385. package/src/primitives/Authorization/index.ts +38 -0
  386. package/src/primitives/Balance/BigInt.ts +48 -0
  387. package/src/primitives/Balance/Number.ts +46 -0
  388. package/src/primitives/Balance/String.ts +47 -0
  389. package/src/primitives/Balance/index.ts +44 -0
  390. package/src/primitives/Base64/Base64Schema.ts +90 -0
  391. package/src/primitives/Base64/extensions/index.ts +10 -0
  392. package/src/primitives/Base64/index.ts +28 -0
  393. package/src/primitives/BaseFeePerGas/BigInt.ts +49 -0
  394. package/src/primitives/BaseFeePerGas/Gwei.ts +63 -0
  395. package/src/primitives/BaseFeePerGas/index.ts +47 -0
  396. package/src/primitives/BaseFeePerGas/toGwei.ts +28 -0
  397. package/src/primitives/BeaconBlockRoot/Hex.ts +76 -0
  398. package/src/primitives/BeaconBlockRoot/index.ts +47 -0
  399. package/src/primitives/BinaryTree/BinaryTreeSchema.ts +34 -0
  400. package/src/primitives/BinaryTree/get.ts +28 -0
  401. package/src/primitives/BinaryTree/index.ts +27 -0
  402. package/src/primitives/BinaryTree/init.ts +23 -0
  403. package/src/primitives/BinaryTree/rootHash.ts +22 -0
  404. package/src/primitives/Blob/BlobSchema.ts +87 -0
  405. package/src/primitives/Blob/index.ts +54 -0
  406. package/src/primitives/Blob/isValid.ts +22 -0
  407. package/src/primitives/Blob/toData.ts +23 -0
  408. package/src/primitives/Block/Block.test.ts +377 -0
  409. package/src/primitives/Block/BlockSchema.ts +201 -0
  410. package/src/primitives/Block/Rpc.ts +189 -0
  411. package/src/primitives/Block/index.ts +55 -0
  412. package/src/primitives/BlockBody/BlockBody.test.ts +228 -0
  413. package/src/primitives/BlockBody/BlockBodySchema.ts +85 -0
  414. package/src/primitives/BlockBody/Rpc.ts +100 -0
  415. package/src/primitives/BlockBody/index.ts +52 -0
  416. package/src/primitives/BlockFilter/BlockFilterSchema.ts +39 -0
  417. package/src/primitives/BlockFilter/index.ts +20 -0
  418. package/src/primitives/BlockHash/BlockHashTypeSchema.ts +21 -0
  419. package/src/primitives/BlockHash/Bytes.ts +53 -0
  420. package/src/primitives/BlockHash/Hex.ts +56 -0
  421. package/src/primitives/BlockHash/index.ts +55 -0
  422. package/src/primitives/BlockHeader/BlockHeaderSchema.ts +84 -0
  423. package/src/primitives/BlockHeader/Rpc.ts +95 -0
  424. package/src/primitives/BlockHeader/calculateHash.ts +24 -0
  425. package/src/primitives/BlockHeader/index.ts +61 -0
  426. package/src/primitives/BlockNumber/BigInt.ts +51 -0
  427. package/src/primitives/BlockNumber/BlockNumber.test.ts +122 -0
  428. package/src/primitives/BlockNumber/BlockNumberTypeSchema.ts +21 -0
  429. package/src/primitives/BlockNumber/Hex.ts +56 -0
  430. package/src/primitives/BlockNumber/Number.ts +66 -0
  431. package/src/primitives/BlockNumber/index.ts +60 -0
  432. package/src/primitives/BloomFilter/BloomFilterSchema.ts +96 -0
  433. package/src/primitives/BloomFilter/extensions/index.ts +12 -0
  434. package/src/primitives/BloomFilter/index.ts +64 -0
  435. package/src/primitives/Brand/Brand.test.ts +192 -0
  436. package/src/primitives/Brand/index.ts +292 -0
  437. package/src/primitives/BuilderBid/BuilderBidSchema.ts +116 -0
  438. package/src/primitives/BuilderBid/index.ts +38 -0
  439. package/src/primitives/Bundle/BundleSchema.ts +176 -0
  440. package/src/primitives/Bundle/index.ts +43 -0
  441. package/src/primitives/BundleHash/Hex.ts +68 -0
  442. package/src/primitives/BundleHash/index.ts +30 -0
  443. package/src/primitives/Bundler/BundlerSchema.ts +77 -0
  444. package/src/primitives/Bundler/index.ts +35 -0
  445. package/src/primitives/Bytecode/Bytecode.test.ts +49 -0
  446. package/src/primitives/Bytecode/BytecodeSchema.ts +48 -0
  447. package/src/primitives/Bytecode/Bytes.ts +60 -0
  448. package/src/primitives/Bytecode/Hex.ts +61 -0
  449. package/src/primitives/Bytecode/index.ts +45 -0
  450. package/src/primitives/Bytes/Bytes.test.ts +402 -0
  451. package/src/primitives/Bytes/Bytes1/index.ts +18 -0
  452. package/src/primitives/Bytes/Bytes16/index.ts +23 -0
  453. package/src/primitives/Bytes/Bytes2/index.ts +17 -0
  454. package/src/primitives/Bytes/Bytes3/index.ts +17 -0
  455. package/src/primitives/Bytes/Bytes32/index.ts +28 -0
  456. package/src/primitives/Bytes/Bytes4/index.ts +17 -0
  457. package/src/primitives/Bytes/Bytes5/index.ts +17 -0
  458. package/src/primitives/Bytes/Bytes6/index.ts +17 -0
  459. package/src/primitives/Bytes/Bytes64/index.ts +23 -0
  460. package/src/primitives/Bytes/Bytes7/index.ts +17 -0
  461. package/src/primitives/Bytes/Bytes8/index.ts +17 -0
  462. package/src/primitives/Bytes/Hex.ts +59 -0
  463. package/src/primitives/Bytes/concat.ts +23 -0
  464. package/src/primitives/Bytes/equals.ts +26 -0
  465. package/src/primitives/Bytes/extensions/index.ts +6 -0
  466. package/src/primitives/Bytes/index.ts +79 -0
  467. package/src/primitives/Bytes/isBytes.ts +23 -0
  468. package/src/primitives/Bytes/random.ts +22 -0
  469. package/src/primitives/Bytes/size.ts +22 -0
  470. package/src/primitives/Bytes/toString.ts +24 -0
  471. package/src/primitives/Bytes32/Bytes.ts +57 -0
  472. package/src/primitives/Bytes32/Bytes32.test.ts +62 -0
  473. package/src/primitives/Bytes32/Hex.ts +57 -0
  474. package/src/primitives/Bytes32/index.ts +80 -0
  475. package/src/primitives/CallData/CallData.test.ts +35 -0
  476. package/src/primitives/CallData/Hex.ts +74 -0
  477. package/src/primitives/CallData/empty.ts +24 -0
  478. package/src/primitives/CallData/index.ts +50 -0
  479. package/src/primitives/CallTrace/CallTraceSchema.ts +38 -0
  480. package/src/primitives/CallTrace/flatten.ts +21 -0
  481. package/src/primitives/CallTrace/getCalls.ts +20 -0
  482. package/src/primitives/CallTrace/hasError.ts +22 -0
  483. package/src/primitives/CallTrace/index.ts +13 -0
  484. package/src/primitives/Chain/ChainSchema.ts +231 -0
  485. package/src/primitives/Chain/index.ts +57 -0
  486. package/src/primitives/ChainHead/ChainHeadSchema.ts +130 -0
  487. package/src/primitives/ChainHead/index.ts +53 -0
  488. package/src/primitives/ChainId/BigInt.ts +79 -0
  489. package/src/primitives/ChainId/Hex.ts +83 -0
  490. package/src/primitives/ChainId/Number.ts +78 -0
  491. package/src/primitives/ChainId/index.ts +56 -0
  492. package/src/primitives/CompilerVersion/CompilerVersionSchema.ts +42 -0
  493. package/src/primitives/CompilerVersion/index.ts +10 -0
  494. package/src/primitives/ContractCode/Bytes.ts +63 -0
  495. package/src/primitives/ContractCode/ContractCode.test.ts +45 -0
  496. package/src/primitives/ContractCode/Hex.ts +65 -0
  497. package/src/primitives/ContractCode/index.ts +51 -0
  498. package/src/primitives/ContractResult/ContractResultSchema.ts +98 -0
  499. package/src/primitives/ContractResult/index.ts +13 -0
  500. package/src/primitives/ContractSignature/ContractSignature.test.ts +111 -0
  501. package/src/primitives/ContractSignature/Struct.ts +67 -0
  502. package/src/primitives/ContractSignature/index.ts +68 -0
  503. package/src/primitives/ContractSignature/verifySignature.ts +254 -0
  504. package/src/primitives/DecodedData/DecodedDataSchema.ts +72 -0
  505. package/src/primitives/DecodedData/index.ts +11 -0
  506. package/src/primitives/Denomination/EtherSchema.ts +87 -0
  507. package/src/primitives/Denomination/GweiSchema.ts +86 -0
  508. package/src/primitives/Denomination/WeiSchema.ts +87 -0
  509. package/src/primitives/Denomination/index.ts +49 -0
  510. package/src/primitives/Domain/Domain.test.ts +80 -0
  511. package/src/primitives/Domain/Struct.ts +165 -0
  512. package/src/primitives/Domain/index.ts +62 -0
  513. package/src/primitives/DomainSeparator/DomainSeparator.test.ts +67 -0
  514. package/src/primitives/DomainSeparator/Hex.ts +105 -0
  515. package/src/primitives/DomainSeparator/index.ts +50 -0
  516. package/src/primitives/EffectiveGasPrice/BigInt.ts +47 -0
  517. package/src/primitives/EffectiveGasPrice/Gwei.ts +54 -0
  518. package/src/primitives/EffectiveGasPrice/calculate.ts +39 -0
  519. package/src/primitives/EffectiveGasPrice/compare.ts +31 -0
  520. package/src/primitives/EffectiveGasPrice/equals.ts +31 -0
  521. package/src/primitives/EffectiveGasPrice/index.ts +59 -0
  522. package/src/primitives/EffectiveGasPrice/toGwei.ts +28 -0
  523. package/src/primitives/EncodedData/EncodedDataSchema.ts +66 -0
  524. package/src/primitives/EncodedData/index.ts +11 -0
  525. package/src/primitives/Ens/String.ts +45 -0
  526. package/src/primitives/Ens/index.ts +18 -0
  527. package/src/primitives/EntryPoint/EntryPointSchema.ts +113 -0
  528. package/src/primitives/EntryPoint/index.ts +47 -0
  529. package/src/primitives/Epoch/BigInt.ts +46 -0
  530. package/src/primitives/Epoch/index.ts +18 -0
  531. package/src/primitives/ErrorSignature/ErrorSignature.test.ts +43 -0
  532. package/src/primitives/ErrorSignature/String.ts +102 -0
  533. package/src/primitives/ErrorSignature/index.ts +55 -0
  534. package/src/primitives/EventLog/EventLog.test.ts +77 -0
  535. package/src/primitives/EventLog/Rpc.ts +159 -0
  536. package/src/primitives/EventLog/extensions/index.ts +17 -0
  537. package/src/primitives/EventLog/extensions/utils.ts +18 -0
  538. package/src/primitives/EventLog/index.ts +23 -0
  539. package/src/primitives/EventSignature/EventSignature.test.ts +54 -0
  540. package/src/primitives/EventSignature/String.ts +102 -0
  541. package/src/primitives/EventSignature/index.ts +53 -0
  542. package/src/primitives/FeeMarket/FeeMarketSchema.ts +160 -0
  543. package/src/primitives/FeeMarket/index.ts +36 -0
  544. package/src/primitives/FeeOracle/Struct.ts +152 -0
  545. package/src/primitives/FeeOracle/index.ts +29 -0
  546. package/src/primitives/FilterId/Hex.ts +97 -0
  547. package/src/primitives/FilterId/index.ts +57 -0
  548. package/src/primitives/ForkId/ForkIdSchema.ts +66 -0
  549. package/src/primitives/ForkId/index.ts +34 -0
  550. package/src/primitives/ForwardRequest/ForwardRequestSchema.ts +109 -0
  551. package/src/primitives/ForwardRequest/index.ts +26 -0
  552. package/src/primitives/FunctionSignature/FunctionSignature.test.ts +34 -0
  553. package/src/primitives/FunctionSignature/String.ts +77 -0
  554. package/src/primitives/FunctionSignature/index.ts +41 -0
  555. package/src/primitives/Gas/BigInt.ts +66 -0
  556. package/src/primitives/Gas/Hex.ts +66 -0
  557. package/src/primitives/Gas/Number.ts +74 -0
  558. package/src/primitives/Gas/index.ts +51 -0
  559. package/src/primitives/GasConstants/GasConstantsSchema.ts +139 -0
  560. package/src/primitives/GasConstants/index.ts +33 -0
  561. package/src/primitives/GasCosts/GasCostsSchema.ts +113 -0
  562. package/src/primitives/GasCosts/index.ts +24 -0
  563. package/src/primitives/GasEstimate/BigInt.ts +47 -0
  564. package/src/primitives/GasEstimate/Number.ts +47 -0
  565. package/src/primitives/GasEstimate/index.ts +50 -0
  566. package/src/primitives/GasEstimate/toGasLimit.ts +34 -0
  567. package/src/primitives/GasEstimate/withBuffer.ts +38 -0
  568. package/src/primitives/GasPrice/BigInt.ts +67 -0
  569. package/src/primitives/GasPrice/Gwei.ts +70 -0
  570. package/src/primitives/GasPrice/Hex.ts +67 -0
  571. package/src/primitives/GasPrice/Number.ts +71 -0
  572. package/src/primitives/GasPrice/index.ts +57 -0
  573. package/src/primitives/GasRefund/BigInt.ts +47 -0
  574. package/src/primitives/GasRefund/Number.ts +46 -0
  575. package/src/primitives/GasRefund/cappedRefund.ts +38 -0
  576. package/src/primitives/GasRefund/index.ts +49 -0
  577. package/src/primitives/GasUsed/BigInt.ts +47 -0
  578. package/src/primitives/GasUsed/Number.ts +46 -0
  579. package/src/primitives/GasUsed/calculateCost.ts +33 -0
  580. package/src/primitives/GasUsed/index.ts +48 -0
  581. package/src/primitives/Hardfork/HardforkSchema.ts +47 -0
  582. package/src/primitives/Hardfork/index.ts +39 -0
  583. package/src/primitives/Hash/Bytes.ts +71 -0
  584. package/src/primitives/Hash/Hash.test.ts +630 -0
  585. package/src/primitives/Hash/Hex.ts +72 -0
  586. package/src/primitives/Hash/assert.ts +46 -0
  587. package/src/primitives/Hash/clone.ts +32 -0
  588. package/src/primitives/Hash/concat.ts +32 -0
  589. package/src/primitives/Hash/equals.ts +35 -0
  590. package/src/primitives/Hash/extensions/index.ts +21 -0
  591. package/src/primitives/Hash/format.ts +38 -0
  592. package/src/primitives/Hash/index.ts +65 -0
  593. package/src/primitives/Hash/isValidHex.ts +30 -0
  594. package/src/primitives/Hash/isZero.ts +32 -0
  595. package/src/primitives/Hash/keccak256.ts +54 -0
  596. package/src/primitives/Hash/merkleRoot.ts +32 -0
  597. package/src/primitives/Hash/random.ts +36 -0
  598. package/src/primitives/Hash/slice.ts +38 -0
  599. package/src/primitives/Hash/toBytes.ts +43 -0
  600. package/src/primitives/Hash/toString.ts +32 -0
  601. package/src/primitives/Hex/Bytes.ts +67 -0
  602. package/src/primitives/Hex/Hex.test.ts +478 -0
  603. package/src/primitives/Hex/String.ts +64 -0
  604. package/src/primitives/Hex/clone.ts +31 -0
  605. package/src/primitives/Hex/equals.ts +32 -0
  606. package/src/primitives/Hex/index.ts +82 -0
  607. package/src/primitives/Hex/isHex.ts +32 -0
  608. package/src/primitives/Hex/isSized.ts +34 -0
  609. package/src/primitives/Hex/random.ts +31 -0
  610. package/src/primitives/Hex/zero.ts +30 -0
  611. package/src/primitives/InitCode/Bytes.ts +62 -0
  612. package/src/primitives/InitCode/Hex.ts +64 -0
  613. package/src/primitives/InitCode/InitCode.test.ts +46 -0
  614. package/src/primitives/InitCode/index.ts +50 -0
  615. package/src/primitives/Int128/BigInt.ts +52 -0
  616. package/src/primitives/Int128/Int128.test.ts +374 -0
  617. package/src/primitives/Int128/Int128Schema.ts +13 -0
  618. package/src/primitives/Int128/Number.ts +53 -0
  619. package/src/primitives/Int128/String.ts +52 -0
  620. package/src/primitives/Int128/abs.ts +10 -0
  621. package/src/primitives/Int128/add.ts +11 -0
  622. package/src/primitives/Int128/compare.ts +13 -0
  623. package/src/primitives/Int128/constants.ts +13 -0
  624. package/src/primitives/Int128/div.ts +11 -0
  625. package/src/primitives/Int128/equals.ts +11 -0
  626. package/src/primitives/Int128/index.ts +83 -0
  627. package/src/primitives/Int128/isNegative.ts +11 -0
  628. package/src/primitives/Int128/isZero.ts +11 -0
  629. package/src/primitives/Int128/mul.ts +11 -0
  630. package/src/primitives/Int128/negate.ts +11 -0
  631. package/src/primitives/Int128/sub.ts +11 -0
  632. package/src/primitives/Int16/BigInt.ts +54 -0
  633. package/src/primitives/Int16/Int16.test.ts +285 -0
  634. package/src/primitives/Int16/Int16Schema.ts +13 -0
  635. package/src/primitives/Int16/Number.ts +52 -0
  636. package/src/primitives/Int16/String.ts +52 -0
  637. package/src/primitives/Int16/abs.ts +10 -0
  638. package/src/primitives/Int16/add.ts +11 -0
  639. package/src/primitives/Int16/compare.ts +13 -0
  640. package/src/primitives/Int16/constants.ts +10 -0
  641. package/src/primitives/Int16/div.ts +11 -0
  642. package/src/primitives/Int16/equals.ts +11 -0
  643. package/src/primitives/Int16/index.ts +80 -0
  644. package/src/primitives/Int16/isNegative.ts +11 -0
  645. package/src/primitives/Int16/isZero.ts +10 -0
  646. package/src/primitives/Int16/mul.ts +11 -0
  647. package/src/primitives/Int16/negate.ts +11 -0
  648. package/src/primitives/Int16/sub.ts +11 -0
  649. package/src/primitives/Int256/BigInt.ts +53 -0
  650. package/src/primitives/Int256/Int256.test.ts +499 -0
  651. package/src/primitives/Int256/Int256Schema.ts +14 -0
  652. package/src/primitives/Int256/Number.ts +53 -0
  653. package/src/primitives/Int256/String.ts +53 -0
  654. package/src/primitives/Int256/abs.ts +10 -0
  655. package/src/primitives/Int256/add.ts +11 -0
  656. package/src/primitives/Int256/compare.ts +13 -0
  657. package/src/primitives/Int256/constants.ts +13 -0
  658. package/src/primitives/Int256/div.ts +11 -0
  659. package/src/primitives/Int256/equals.ts +11 -0
  660. package/src/primitives/Int256/index.ts +87 -0
  661. package/src/primitives/Int256/isNegative.ts +11 -0
  662. package/src/primitives/Int256/isZero.ts +11 -0
  663. package/src/primitives/Int256/mul.ts +11 -0
  664. package/src/primitives/Int256/negate.ts +11 -0
  665. package/src/primitives/Int256/sub.ts +11 -0
  666. package/src/primitives/Int32/BigInt.ts +52 -0
  667. package/src/primitives/Int32/Int32.test.ts +267 -0
  668. package/src/primitives/Int32/Int32Schema.ts +13 -0
  669. package/src/primitives/Int32/Number.ts +52 -0
  670. package/src/primitives/Int32/String.ts +52 -0
  671. package/src/primitives/Int32/abs.ts +10 -0
  672. package/src/primitives/Int32/add.ts +11 -0
  673. package/src/primitives/Int32/compare.ts +13 -0
  674. package/src/primitives/Int32/constants.ts +10 -0
  675. package/src/primitives/Int32/div.ts +11 -0
  676. package/src/primitives/Int32/equals.ts +11 -0
  677. package/src/primitives/Int32/index.ts +80 -0
  678. package/src/primitives/Int32/isNegative.ts +11 -0
  679. package/src/primitives/Int32/isZero.ts +10 -0
  680. package/src/primitives/Int32/mul.ts +11 -0
  681. package/src/primitives/Int32/negate.ts +11 -0
  682. package/src/primitives/Int32/sub.ts +11 -0
  683. package/src/primitives/Int64/BigInt.ts +52 -0
  684. package/src/primitives/Int64/Int64.test.ts +306 -0
  685. package/src/primitives/Int64/Int64Schema.ts +13 -0
  686. package/src/primitives/Int64/Number.ts +53 -0
  687. package/src/primitives/Int64/String.ts +52 -0
  688. package/src/primitives/Int64/abs.ts +10 -0
  689. package/src/primitives/Int64/add.ts +11 -0
  690. package/src/primitives/Int64/compare.ts +13 -0
  691. package/src/primitives/Int64/constants.ts +10 -0
  692. package/src/primitives/Int64/div.ts +11 -0
  693. package/src/primitives/Int64/equals.ts +11 -0
  694. package/src/primitives/Int64/index.ts +80 -0
  695. package/src/primitives/Int64/isNegative.ts +11 -0
  696. package/src/primitives/Int64/isZero.ts +10 -0
  697. package/src/primitives/Int64/mul.ts +11 -0
  698. package/src/primitives/Int64/negate.ts +11 -0
  699. package/src/primitives/Int64/sub.ts +11 -0
  700. package/src/primitives/Int8/BigInt.ts +60 -0
  701. package/src/primitives/Int8/Int8.test.ts +477 -0
  702. package/src/primitives/Int8/Int8Schema.ts +13 -0
  703. package/src/primitives/Int8/Number.ts +58 -0
  704. package/src/primitives/Int8/String.ts +58 -0
  705. package/src/primitives/Int8/abs.ts +10 -0
  706. package/src/primitives/Int8/add.ts +11 -0
  707. package/src/primitives/Int8/compare.ts +13 -0
  708. package/src/primitives/Int8/constants.ts +10 -0
  709. package/src/primitives/Int8/div.ts +11 -0
  710. package/src/primitives/Int8/equals.ts +11 -0
  711. package/src/primitives/Int8/index.ts +80 -0
  712. package/src/primitives/Int8/isNegative.ts +11 -0
  713. package/src/primitives/Int8/isZero.ts +10 -0
  714. package/src/primitives/Int8/mul.ts +11 -0
  715. package/src/primitives/Int8/negate.ts +10 -0
  716. package/src/primitives/Int8/sub.ts +11 -0
  717. package/src/primitives/License/String.ts +57 -0
  718. package/src/primitives/License/index.ts +22 -0
  719. package/src/primitives/LogFilter/LogFilter.test.ts +81 -0
  720. package/src/primitives/LogFilter/Rpc.ts +209 -0
  721. package/src/primitives/LogFilter/index.ts +36 -0
  722. package/src/primitives/LogIndex/Number.ts +93 -0
  723. package/src/primitives/LogIndex/index.ts +38 -0
  724. package/src/primitives/MaxFeePerGas/BigInt.ts +49 -0
  725. package/src/primitives/MaxFeePerGas/Gwei.ts +63 -0
  726. package/src/primitives/MaxFeePerGas/index.ts +47 -0
  727. package/src/primitives/MaxFeePerGas/toGwei.ts +28 -0
  728. package/src/primitives/MaxPriorityFeePerGas/BigInt.ts +48 -0
  729. package/src/primitives/MaxPriorityFeePerGas/Gwei.ts +63 -0
  730. package/src/primitives/MaxPriorityFeePerGas/index.ts +51 -0
  731. package/src/primitives/MaxPriorityFeePerGas/toGwei.ts +28 -0
  732. package/src/primitives/MemoryDump/MemoryDumpSchema.ts +70 -0
  733. package/src/primitives/MemoryDump/index.ts +22 -0
  734. package/src/primitives/MerkleTree/MerkleTreeSchema.ts +52 -0
  735. package/src/primitives/MerkleTree/index.ts +39 -0
  736. package/src/primitives/Metadata/MetadataSchema.ts +57 -0
  737. package/src/primitives/Metadata/index.ts +24 -0
  738. package/src/primitives/MultiTokenId/MultiTokenIdSchema.ts +48 -0
  739. package/src/primitives/MultiTokenId/index.ts +23 -0
  740. package/src/primitives/NetworkId/BigInt.ts +79 -0
  741. package/src/primitives/NetworkId/Hex.ts +86 -0
  742. package/src/primitives/NetworkId/Number.ts +104 -0
  743. package/src/primitives/NetworkId/index.ts +60 -0
  744. package/src/primitives/NodeInfo/NodeInfoSchema.ts +70 -0
  745. package/src/primitives/NodeInfo/index.ts +39 -0
  746. package/src/primitives/Nonce/BigInt.ts +66 -0
  747. package/src/primitives/Nonce/Hex.ts +66 -0
  748. package/src/primitives/Nonce/Number.ts +74 -0
  749. package/src/primitives/Nonce/index.ts +56 -0
  750. package/src/primitives/OpStep/OpStepSchema.ts +118 -0
  751. package/src/primitives/OpStep/index.ts +29 -0
  752. package/src/primitives/Opcode/OpcodeSchema.ts +55 -0
  753. package/src/primitives/Opcode/index.ts +24 -0
  754. package/src/primitives/PackedUserOperation/PackedUserOperationSchema.ts +203 -0
  755. package/src/primitives/PackedUserOperation/hash.test.ts +103 -0
  756. package/src/primitives/PackedUserOperation/hash.ts +128 -0
  757. package/src/primitives/PackedUserOperation/index.ts +80 -0
  758. package/src/primitives/PackedUserOperation/unpack.ts +101 -0
  759. package/src/primitives/Paymaster/PaymasterSchema.ts +194 -0
  760. package/src/primitives/Paymaster/index.ts +21 -0
  761. package/src/primitives/PeerId/PeerIdSchema.ts +47 -0
  762. package/src/primitives/PeerId/index.ts +31 -0
  763. package/src/primitives/PeerInfo/PeerInfoSchema.ts +61 -0
  764. package/src/primitives/PeerInfo/index.ts +39 -0
  765. package/src/primitives/PendingTransactionFilter/Struct.ts +56 -0
  766. package/src/primitives/PendingTransactionFilter/index.ts +25 -0
  767. package/src/primitives/Permit/Permit.test.ts +32 -0
  768. package/src/primitives/Permit/Struct.ts +77 -0
  769. package/src/primitives/Permit/index.ts +58 -0
  770. package/src/primitives/PrivateKey/Bytes.ts +59 -0
  771. package/src/primitives/PrivateKey/Hex.ts +64 -0
  772. package/src/primitives/PrivateKey/PrivateKey.test.ts +410 -0
  773. package/src/primitives/PrivateKey/index.ts +62 -0
  774. package/src/primitives/PrivateKey/isValid.ts +35 -0
  775. package/src/primitives/PrivateKey/random.ts +27 -0
  776. package/src/primitives/Proof/Struct.ts +32 -0
  777. package/src/primitives/Proof/equals.ts +10 -0
  778. package/src/primitives/Proof/index.ts +37 -0
  779. package/src/primitives/Proof/verify.ts +11 -0
  780. package/src/primitives/ProtocolVersion/ProtocolVersionSchema.ts +55 -0
  781. package/src/primitives/ProtocolVersion/index.ts +32 -0
  782. package/src/primitives/Proxy/Struct.ts +49 -0
  783. package/src/primitives/Proxy/index.ts +11 -0
  784. package/src/primitives/PublicKey/Bytes.ts +68 -0
  785. package/src/primitives/PublicKey/Compressed.ts +71 -0
  786. package/src/primitives/PublicKey/Hex.ts +57 -0
  787. package/src/primitives/PublicKey/PublicKey.test.ts +443 -0
  788. package/src/primitives/PublicKey/equals.ts +30 -0
  789. package/src/primitives/PublicKey/index.ts +70 -0
  790. package/src/primitives/PublicKey/isCompressed.ts +27 -0
  791. package/src/primitives/PublicKey/isValid.ts +31 -0
  792. package/src/primitives/PublicKey/toAddress.ts +29 -0
  793. package/src/primitives/PublicKey/toBytes.ts +27 -0
  794. package/src/primitives/PublicKey/verify.ts +36 -0
  795. package/src/primitives/Receipt/ReceiptSchema.test.ts +94 -0
  796. package/src/primitives/Receipt/ReceiptSchema.ts +492 -0
  797. package/src/primitives/Receipt/index.ts +65 -0
  798. package/src/primitives/RelayData/RelayDataSchema.ts +106 -0
  799. package/src/primitives/RelayData/index.ts +10 -0
  800. package/src/primitives/ReturnData/Bytes.ts +60 -0
  801. package/src/primitives/ReturnData/Hex.ts +61 -0
  802. package/src/primitives/ReturnData/ReturnData.test.ts +43 -0
  803. package/src/primitives/ReturnData/ReturnDataSchema.ts +50 -0
  804. package/src/primitives/ReturnData/index.ts +45 -0
  805. package/src/primitives/RevertReason/Bytes.ts +81 -0
  806. package/src/primitives/RevertReason/Hex.ts +85 -0
  807. package/src/primitives/RevertReason/RevertReason.test.ts +42 -0
  808. package/src/primitives/RevertReason/RevertReasonSchema.ts +108 -0
  809. package/src/primitives/RevertReason/index.ts +67 -0
  810. package/src/primitives/RevertReason/toString.ts +28 -0
  811. package/src/primitives/Rlp/Rlp.test.ts +991 -0
  812. package/src/primitives/Rlp/RlpSchema.ts +50 -0
  813. package/src/primitives/Rlp/decode.ts +57 -0
  814. package/src/primitives/Rlp/decodeArray.ts +48 -0
  815. package/src/primitives/Rlp/encode.ts +58 -0
  816. package/src/primitives/Rlp/encodeArray.ts +32 -0
  817. package/src/primitives/Rlp/encodeBytes.ts +27 -0
  818. package/src/primitives/Rlp/encodeList.ts +32 -0
  819. package/src/primitives/Rlp/flatten.ts +38 -0
  820. package/src/primitives/Rlp/index.ts +74 -0
  821. package/src/primitives/Rlp/validate.ts +25 -0
  822. package/src/primitives/RuntimeCode/Bytes.ts +60 -0
  823. package/src/primitives/RuntimeCode/Hex.ts +61 -0
  824. package/src/primitives/RuntimeCode/RuntimeCode.test.ts +43 -0
  825. package/src/primitives/RuntimeCode/RuntimeCodeSchema.ts +49 -0
  826. package/src/primitives/RuntimeCode/index.ts +46 -0
  827. package/src/primitives/Selector/Bytes.ts +64 -0
  828. package/src/primitives/Selector/Hex.ts +69 -0
  829. package/src/primitives/Selector/Selector.test.ts +258 -0
  830. package/src/primitives/Selector/SelectorSchema.ts +95 -0
  831. package/src/primitives/Selector/Signature.ts +65 -0
  832. package/src/primitives/Selector/equals.ts +33 -0
  833. package/src/primitives/Selector/index.ts +55 -0
  834. package/src/primitives/Signature/Bytes.ts +57 -0
  835. package/src/primitives/Signature/Compact.ts +59 -0
  836. package/src/primitives/Signature/DER.ts +65 -0
  837. package/src/primitives/Signature/Hex.ts +56 -0
  838. package/src/primitives/Signature/Rpc.ts +77 -0
  839. package/src/primitives/Signature/Signature.test.ts +496 -0
  840. package/src/primitives/Signature/SignatureSchema.ts +30 -0
  841. package/src/primitives/Signature/Tuple.ts +75 -0
  842. package/src/primitives/Signature/equals.ts +25 -0
  843. package/src/primitives/Signature/getAlgorithm.ts +29 -0
  844. package/src/primitives/Signature/index.ts +93 -0
  845. package/src/primitives/Signature/is.ts +26 -0
  846. package/src/primitives/Signature/isCanonical.ts +28 -0
  847. package/src/primitives/Signature/isSignature.ts +26 -0
  848. package/src/primitives/Signature/normalize.ts +24 -0
  849. package/src/primitives/Signature/toBytes.ts +24 -0
  850. package/src/primitives/Signature/toCompact.ts +26 -0
  851. package/src/primitives/SignedData/SignedDataSchema.ts +61 -0
  852. package/src/primitives/SignedData/index.ts +26 -0
  853. package/src/primitives/Siwe/Siwe.test.ts +42 -0
  854. package/src/primitives/Siwe/String.ts +136 -0
  855. package/src/primitives/Siwe/index.ts +55 -0
  856. package/src/primitives/Slot/SlotSchema.ts +51 -0
  857. package/src/primitives/Slot/index.ts +20 -0
  858. package/src/primitives/SourceMap/Struct.ts +94 -0
  859. package/src/primitives/SourceMap/index.ts +12 -0
  860. package/src/primitives/Ssz/SszSchema.ts +49 -0
  861. package/src/primitives/Ssz/index.ts +29 -0
  862. package/src/primitives/State/StateSchema.ts +112 -0
  863. package/src/primitives/State/index.ts +22 -0
  864. package/src/primitives/StateDiff/StateDiffSchema.ts +251 -0
  865. package/src/primitives/StateDiff/index.ts +28 -0
  866. package/src/primitives/StateProof/StateProofSchema.ts +109 -0
  867. package/src/primitives/StateProof/index.ts +66 -0
  868. package/src/primitives/StateRoot/StateRootSchema.ts +109 -0
  869. package/src/primitives/StateRoot/index.ts +78 -0
  870. package/src/primitives/StealthAddress/Struct.ts +48 -0
  871. package/src/primitives/StealthAddress/index.ts +6 -0
  872. package/src/primitives/Storage/StorageSchema.ts +100 -0
  873. package/src/primitives/Storage/index.ts +53 -0
  874. package/src/primitives/StorageDiff/StorageDiffSchema.ts +111 -0
  875. package/src/primitives/StorageDiff/index.ts +59 -0
  876. package/src/primitives/StorageProof/Struct.ts +93 -0
  877. package/src/primitives/StorageProof/equals.ts +72 -0
  878. package/src/primitives/StorageProof/index.ts +67 -0
  879. package/src/primitives/StorageValue/Hex.ts +109 -0
  880. package/src/primitives/StorageValue/index.ts +92 -0
  881. package/src/primitives/StructLog/Struct.ts +101 -0
  882. package/src/primitives/StructLog/index.ts +28 -0
  883. package/src/primitives/SyncStatus/SyncStatusSchema.ts +87 -0
  884. package/src/primitives/SyncStatus/index.ts +36 -0
  885. package/src/primitives/TokenBalance/Struct.ts +48 -0
  886. package/src/primitives/TokenBalance/index.ts +23 -0
  887. package/src/primitives/TokenId/BigInt.ts +50 -0
  888. package/src/primitives/TokenId/index.ts +36 -0
  889. package/src/primitives/TopicFilter/Rpc.ts +142 -0
  890. package/src/primitives/TopicFilter/TopicFilter.test.ts +22 -0
  891. package/src/primitives/TopicFilter/index.ts +29 -0
  892. package/src/primitives/TraceConfig/TraceConfigSchema.ts +104 -0
  893. package/src/primitives/TraceConfig/index.ts +22 -0
  894. package/src/primitives/TraceResult/TraceResultSchema.ts +96 -0
  895. package/src/primitives/TraceResult/index.ts +23 -0
  896. package/src/primitives/Transaction/Authorization/index.ts +5 -0
  897. package/src/primitives/Transaction/EIP1559/index.ts +17 -0
  898. package/src/primitives/Transaction/EIP2930/index.ts +16 -0
  899. package/src/primitives/Transaction/EIP4844/index.ts +18 -0
  900. package/src/primitives/Transaction/EIP7702/index.ts +17 -0
  901. package/src/primitives/Transaction/Legacy/index.ts +17 -0
  902. package/src/primitives/Transaction/Rpc.ts +176 -0
  903. package/src/primitives/Transaction/Serialized.ts +98 -0
  904. package/src/primitives/Transaction/Transaction.test.ts +1562 -0
  905. package/src/primitives/Transaction/TransactionSchema.ts +515 -0
  906. package/src/primitives/Transaction/index.ts +289 -0
  907. package/src/primitives/TransactionHash/Bytes.ts +56 -0
  908. package/src/primitives/TransactionHash/Hex.ts +62 -0
  909. package/src/primitives/TransactionHash/index.ts +58 -0
  910. package/src/primitives/TransactionIndex/Number.ts +59 -0
  911. package/src/primitives/TransactionIndex/index.ts +53 -0
  912. package/src/primitives/TransactionStatus/TransactionStatusSchema.ts +57 -0
  913. package/src/primitives/TransactionStatus/index.ts +9 -0
  914. package/src/primitives/TransactionUrl/TransactionUrlSchema.ts +54 -0
  915. package/src/primitives/TransactionUrl/index.ts +21 -0
  916. package/src/primitives/TypedData/Struct.ts +194 -0
  917. package/src/primitives/TypedData/TypedData.test.ts +63 -0
  918. package/src/primitives/TypedData/index.ts +54 -0
  919. package/src/primitives/U256/index.ts +71 -0
  920. package/src/primitives/Uint/BigInt.ts +60 -0
  921. package/src/primitives/Uint/Bytes.ts +62 -0
  922. package/src/primitives/Uint/Hex.ts +61 -0
  923. package/src/primitives/Uint/Number.ts +61 -0
  924. package/src/primitives/Uint/String.ts +57 -0
  925. package/src/primitives/Uint/Uint.test.ts +838 -0
  926. package/src/primitives/Uint/bitLength.ts +22 -0
  927. package/src/primitives/Uint/bitwiseAnd.ts +24 -0
  928. package/src/primitives/Uint/bitwiseNot.ts +23 -0
  929. package/src/primitives/Uint/bitwiseOr.ts +24 -0
  930. package/src/primitives/Uint/bitwiseXor.ts +24 -0
  931. package/src/primitives/Uint/clone.ts +22 -0
  932. package/src/primitives/Uint/equals.ts +24 -0
  933. package/src/primitives/Uint/gcd.ts +24 -0
  934. package/src/primitives/Uint/greaterThan.ts +24 -0
  935. package/src/primitives/Uint/greaterThanOrEqual.ts +24 -0
  936. package/src/primitives/Uint/index.ts +85 -0
  937. package/src/primitives/Uint/isPowerOf2.ts +23 -0
  938. package/src/primitives/Uint/isZero.ts +22 -0
  939. package/src/primitives/Uint/lcm.ts +24 -0
  940. package/src/primitives/Uint/leadingZeros.ts +24 -0
  941. package/src/primitives/Uint/lessThan.ts +24 -0
  942. package/src/primitives/Uint/lessThanOrEqual.ts +24 -0
  943. package/src/primitives/Uint/max.ts +24 -0
  944. package/src/primitives/Uint/maximum.ts +27 -0
  945. package/src/primitives/Uint/min.ts +24 -0
  946. package/src/primitives/Uint/minimum.ts +27 -0
  947. package/src/primitives/Uint/minus.ts +27 -0
  948. package/src/primitives/Uint/notEquals.ts +24 -0
  949. package/src/primitives/Uint/plus.ts +27 -0
  950. package/src/primitives/Uint/popCount.ts +24 -0
  951. package/src/primitives/Uint/product.ts +24 -0
  952. package/src/primitives/Uint/shiftLeft.ts +24 -0
  953. package/src/primitives/Uint/shiftRight.ts +24 -0
  954. package/src/primitives/Uint/sum.ts +24 -0
  955. package/src/primitives/Uint/times.ts +27 -0
  956. package/src/primitives/Uint/toAbiEncoded.ts +24 -0
  957. package/src/primitives/Uint/toBigInt.ts +25 -0
  958. package/src/primitives/Uint/toBytes.ts +25 -0
  959. package/src/primitives/Uint/toNumber.ts +28 -0
  960. package/src/primitives/Uint/toPower.ts +29 -0
  961. package/src/primitives/Uint/toString.ts +31 -0
  962. package/src/primitives/Uint128/BigInt.ts +54 -0
  963. package/src/primitives/Uint128/Bytes.ts +56 -0
  964. package/src/primitives/Uint128/Hex.ts +55 -0
  965. package/src/primitives/Uint128/Number.ts +59 -0
  966. package/src/primitives/Uint128/String.ts +55 -0
  967. package/src/primitives/Uint128/Uint128Schema.ts +119 -0
  968. package/src/primitives/Uint128/index.ts +71 -0
  969. package/src/primitives/Uint16/BigInt.ts +57 -0
  970. package/src/primitives/Uint16/Bytes.ts +55 -0
  971. package/src/primitives/Uint16/Hex.ts +55 -0
  972. package/src/primitives/Uint16/Number.ts +55 -0
  973. package/src/primitives/Uint16/String.ts +55 -0
  974. package/src/primitives/Uint16/Uint16.test.ts +313 -0
  975. package/src/primitives/Uint16/Uint16Schema.ts +117 -0
  976. package/src/primitives/Uint16/index.ts +70 -0
  977. package/src/primitives/Uint32/BigInt.ts +55 -0
  978. package/src/primitives/Uint32/Bytes.ts +55 -0
  979. package/src/primitives/Uint32/Hex.ts +55 -0
  980. package/src/primitives/Uint32/Number.ts +55 -0
  981. package/src/primitives/Uint32/String.ts +55 -0
  982. package/src/primitives/Uint32/Uint32Schema.ts +122 -0
  983. package/src/primitives/Uint32/index.ts +70 -0
  984. package/src/primitives/Uint64/BigInt.ts +55 -0
  985. package/src/primitives/Uint64/Bytes.ts +56 -0
  986. package/src/primitives/Uint64/Hex.ts +55 -0
  987. package/src/primitives/Uint64/Number.ts +59 -0
  988. package/src/primitives/Uint64/String.ts +55 -0
  989. package/src/primitives/Uint64/Uint64Schema.ts +122 -0
  990. package/src/primitives/Uint64/index.ts +71 -0
  991. package/src/primitives/Uint8/BigInt.ts +57 -0
  992. package/src/primitives/Uint8/Bytes.ts +55 -0
  993. package/src/primitives/Uint8/Hex.ts +55 -0
  994. package/src/primitives/Uint8/Number.ts +55 -0
  995. package/src/primitives/Uint8/String.ts +55 -0
  996. package/src/primitives/Uint8/Uint8.test.ts +324 -0
  997. package/src/primitives/Uint8/Uint8Schema.ts +117 -0
  998. package/src/primitives/Uint8/index.ts +70 -0
  999. package/src/primitives/Uncle/Rpc.ts +49 -0
  1000. package/src/primitives/Uncle/index.ts +11 -0
  1001. package/src/primitives/UserOperation/UserOperationSchema.ts +213 -0
  1002. package/src/primitives/UserOperation/index.ts +81 -0
  1003. package/src/primitives/ValidatorIndex/ValidatorIndexSchema.ts +44 -0
  1004. package/src/primitives/ValidatorIndex/index.ts +20 -0
  1005. package/src/primitives/Withdrawal/WithdrawalSchema.ts +47 -0
  1006. package/src/primitives/Withdrawal/index.ts +20 -0
  1007. package/src/primitives/WithdrawalIndex/WithdrawalIndexSchema.ts +47 -0
  1008. package/src/primitives/WithdrawalIndex/index.ts +20 -0
  1009. package/src/primitives/errors/index.ts +1 -0
  1010. package/src/primitives/index.ts +143 -0
  1011. package/src/primitives/validation/assertCommon.ts +40 -0
  1012. package/src/primitives/validation/assertInRange.ts +60 -0
  1013. package/src/primitives/validation/assertInt.ts +121 -0
  1014. package/src/primitives/validation/assertSize.ts +68 -0
  1015. package/src/primitives/validation/assertUint.ts +114 -0
  1016. package/src/primitives/validation/index.ts +23 -0
  1017. package/src/services/AbiEncoder/AbiEncoder.test.ts +190 -0
  1018. package/src/services/AbiEncoder/AbiEncoderService.ts +141 -0
  1019. package/src/services/AbiEncoder/DefaultAbiEncoder.ts +186 -0
  1020. package/src/services/AbiEncoder/index.ts +14 -0
  1021. package/src/services/Account/Account.test.ts +756 -0
  1022. package/src/services/Account/AccountService.ts +453 -0
  1023. package/src/services/Account/JsonRpcAccount.ts +347 -0
  1024. package/src/services/Account/LocalAccount.ts +967 -0
  1025. package/src/services/Account/fromMnemonic.test.ts +67 -0
  1026. package/src/services/Account/fromMnemonic.ts +221 -0
  1027. package/src/services/Account/index.ts +65 -0
  1028. package/src/services/Account/toAccount.test.ts +139 -0
  1029. package/src/services/Account/toAccount.ts +185 -0
  1030. package/src/services/BlockStream/BlockStream.test.ts +1246 -0
  1031. package/src/services/BlockStream/BlockStream.ts +125 -0
  1032. package/src/services/BlockStream/BlockStreamError.ts +33 -0
  1033. package/src/services/BlockStream/BlockStreamService.ts +105 -0
  1034. package/src/services/BlockStream/index.ts +32 -0
  1035. package/src/services/Cache/CacheService.ts +102 -0
  1036. package/src/services/Cache/LookupCacheService.test.ts +305 -0
  1037. package/src/services/Cache/LookupCacheService.ts +209 -0
  1038. package/src/services/Cache/MemoryCache.test.ts +154 -0
  1039. package/src/services/Cache/MemoryCache.ts +175 -0
  1040. package/src/services/Cache/NoopCache.test.ts +159 -0
  1041. package/src/services/Cache/NoopCache.ts +81 -0
  1042. package/src/services/Cache/index.ts +176 -0
  1043. package/src/services/Ccip/Ccip.test.ts +569 -0
  1044. package/src/services/Ccip/CcipService.ts +106 -0
  1045. package/src/services/Ccip/DefaultCcip.ts +189 -0
  1046. package/src/services/Ccip/NoopCcip.ts +52 -0
  1047. package/src/services/Ccip/index.ts +20 -0
  1048. package/src/services/Chain/BlockExplorerService.ts +39 -0
  1049. package/src/services/Chain/Chain.test.ts +296 -0
  1050. package/src/services/Chain/ChainService.ts +97 -0
  1051. package/src/services/Chain/ContractsService.ts +46 -0
  1052. package/src/services/Chain/chains/arbitrum.ts +73 -0
  1053. package/src/services/Chain/chains/base.ts +73 -0
  1054. package/src/services/Chain/chains/index.ts +48 -0
  1055. package/src/services/Chain/chains/mainnet.ts +77 -0
  1056. package/src/services/Chain/chains/optimism.ts +73 -0
  1057. package/src/services/Chain/chains/polygon.ts +73 -0
  1058. package/src/services/Chain/chains/sepolia.ts +78 -0
  1059. package/src/services/Chain/index.ts +77 -0
  1060. package/src/services/Chain/rpcUrls.ts +31 -0
  1061. package/src/services/Contract/Contract.test.ts +988 -0
  1062. package/src/services/Contract/Contract.ts +432 -0
  1063. package/src/services/Contract/ContractTypes.ts +412 -0
  1064. package/src/services/Contract/estimateGas.test.ts +124 -0
  1065. package/src/services/Contract/estimateGas.ts +163 -0
  1066. package/src/services/Contract/index.ts +67 -0
  1067. package/src/services/Debug/Debug.ts +121 -0
  1068. package/src/services/Debug/DebugService.ts +89 -0
  1069. package/src/services/Debug/index.ts +13 -0
  1070. package/src/services/EngineApi/EngineApi.ts +95 -0
  1071. package/src/services/EngineApi/EngineApiService.ts +99 -0
  1072. package/src/services/EngineApi/index.ts +9 -0
  1073. package/src/services/Ens/DefaultEns.ts +60 -0
  1074. package/src/services/Ens/EnsService.ts +66 -0
  1075. package/src/services/Ens/index.ts +61 -0
  1076. package/src/services/FeeEstimator/DefaultFeeEstimator.ts +277 -0
  1077. package/src/services/FeeEstimator/FeeEstimator.test.ts +810 -0
  1078. package/src/services/FeeEstimator/FeeEstimatorService.ts +168 -0
  1079. package/src/services/FeeEstimator/index.ts +57 -0
  1080. package/src/services/Formatter/DefaultFormatter.ts +74 -0
  1081. package/src/services/Formatter/Formatter.test.ts +92 -0
  1082. package/src/services/Formatter/FormatterService.ts +137 -0
  1083. package/src/services/Formatter/chains/arbitrum.ts +35 -0
  1084. package/src/services/Formatter/chains/chains.test.ts +102 -0
  1085. package/src/services/Formatter/chains/index.ts +13 -0
  1086. package/src/services/Formatter/chains/optimism.ts +36 -0
  1087. package/src/services/Formatter/chains/zksync.ts +35 -0
  1088. package/src/services/Formatter/index.ts +22 -0
  1089. package/src/services/Kzg/DefaultKzg.ts +111 -0
  1090. package/src/services/Kzg/Kzg.test.ts +320 -0
  1091. package/src/services/Kzg/KzgService.ts +123 -0
  1092. package/src/services/Kzg/NoopKzg.ts +75 -0
  1093. package/src/services/Kzg/index.ts +15 -0
  1094. package/src/services/Multicall/BalanceResolver.ts +182 -0
  1095. package/src/services/Multicall/GetBalance.ts +27 -0
  1096. package/src/services/Multicall/Multicall.test.ts +384 -0
  1097. package/src/services/Multicall/Multicall.ts +241 -0
  1098. package/src/services/Multicall/index.ts +20 -0
  1099. package/src/services/NonceManager/DefaultNonceManager.ts +154 -0
  1100. package/src/services/NonceManager/NonceManager.test.ts +468 -0
  1101. package/src/services/NonceManager/NonceManagerService.ts +191 -0
  1102. package/src/services/NonceManager/index.ts +46 -0
  1103. package/src/services/Provider/Account.ts +33 -0
  1104. package/src/services/Provider/AccountService.ts +84 -0
  1105. package/src/services/Provider/Blocks.ts +32 -0
  1106. package/src/services/Provider/BlocksService.ts +73 -0
  1107. package/src/services/Provider/Events.ts +33 -0
  1108. package/src/services/Provider/EventsService.ts +71 -0
  1109. package/src/services/Provider/Network.ts +41 -0
  1110. package/src/services/Provider/NetworkService.ts +114 -0
  1111. package/src/services/Provider/Provider.test.ts +1723 -0
  1112. package/src/services/Provider/Provider.ts +1193 -0
  1113. package/src/services/Provider/ProviderService.ts +1218 -0
  1114. package/src/services/Provider/REFACTOR_PLAN.md +203 -0
  1115. package/src/services/Provider/Simulation.ts +34 -0
  1116. package/src/services/Provider/SimulationService.ts +161 -0
  1117. package/src/services/Provider/Streaming.ts +30 -0
  1118. package/src/services/Provider/StreamingService.ts +58 -0
  1119. package/src/services/Provider/Transaction.ts +39 -0
  1120. package/src/services/Provider/TransactionService.ts +83 -0
  1121. package/src/services/Provider/actions/index.ts +26 -0
  1122. package/src/services/Provider/actions/multicall.test.ts +716 -0
  1123. package/src/services/Provider/actions/multicall.ts +304 -0
  1124. package/src/services/Provider/actions/readContract.test.ts +808 -0
  1125. package/src/services/Provider/actions/readContract.ts +311 -0
  1126. package/src/services/Provider/actions/simulateContract.test.ts +454 -0
  1127. package/src/services/Provider/actions/simulateContract.ts +189 -0
  1128. package/src/services/Provider/ens/EnsError.ts +38 -0
  1129. package/src/services/Provider/ens/constants.ts +81 -0
  1130. package/src/services/Provider/ens/ens.test.ts +322 -0
  1131. package/src/services/Provider/ens/getEnsAddress.ts +126 -0
  1132. package/src/services/Provider/ens/getEnsAvatar.ts +51 -0
  1133. package/src/services/Provider/ens/getEnsName.ts +124 -0
  1134. package/src/services/Provider/ens/getEnsResolver.ts +82 -0
  1135. package/src/services/Provider/ens/getEnsText.ts +158 -0
  1136. package/src/services/Provider/ens/index.ts +49 -0
  1137. package/src/services/Provider/ens/utils.ts +165 -0
  1138. package/src/services/Provider/filters.ts +91 -0
  1139. package/src/services/Provider/getBlobBaseFee.ts +170 -0
  1140. package/src/services/Provider/index.ts +213 -0
  1141. package/src/services/Provider/simulateCalls.test.ts +127 -0
  1142. package/src/services/Provider/simulateCalls.ts +281 -0
  1143. package/src/services/RateLimiter/DefaultRateLimiter.ts +226 -0
  1144. package/src/services/RateLimiter/RateLimiter.test.ts +181 -0
  1145. package/src/services/RateLimiter/RateLimiterService.ts +208 -0
  1146. package/src/services/RateLimiter/index.ts +54 -0
  1147. package/src/services/RawProvider/ForkProviderTransport.ts +100 -0
  1148. package/src/services/RawProvider/HttpProviderTransport.test.ts +310 -0
  1149. package/src/services/RawProvider/HttpProviderTransport.ts +76 -0
  1150. package/src/services/RawProvider/InMemoryProviderTransport.test.ts +246 -0
  1151. package/src/services/RawProvider/InMemoryProviderTransport.ts +81 -0
  1152. package/src/services/RawProvider/RawProvider.test.ts +454 -0
  1153. package/src/services/RawProvider/RawProviderService.ts +61 -0
  1154. package/src/services/RawProvider/RawProviderTransport.ts +64 -0
  1155. package/src/services/RawProvider/WebSocketProviderTransport.ts +106 -0
  1156. package/src/services/RawProvider/index.ts +31 -0
  1157. package/src/services/RpcBatch/RpcBatch.test.ts +628 -0
  1158. package/src/services/RpcBatch/RpcRequest.ts +227 -0
  1159. package/src/services/RpcBatch/RpcResolver.test.ts +315 -0
  1160. package/src/services/RpcBatch/RpcResolver.ts +362 -0
  1161. package/src/services/RpcBatch/index.ts +88 -0
  1162. package/src/services/Signer/Signer.test.ts +1629 -0
  1163. package/src/services/Signer/Signer.ts +812 -0
  1164. package/src/services/Signer/SignerService.ts +518 -0
  1165. package/src/services/Signer/actions/addChain.test.ts +178 -0
  1166. package/src/services/Signer/actions/addChain.ts +80 -0
  1167. package/src/services/Signer/actions/deployContract.test.ts +523 -0
  1168. package/src/services/Signer/actions/deployContract.ts +165 -0
  1169. package/src/services/Signer/actions/getAddresses.test.ts +118 -0
  1170. package/src/services/Signer/actions/getAddresses.ts +60 -0
  1171. package/src/services/Signer/actions/getPermissions.test.ts +122 -0
  1172. package/src/services/Signer/actions/getPermissions.ts +54 -0
  1173. package/src/services/Signer/actions/index.ts +49 -0
  1174. package/src/services/Signer/actions/prepareAuthorization.test.ts +206 -0
  1175. package/src/services/Signer/actions/prepareAuthorization.ts +92 -0
  1176. package/src/services/Signer/actions/requestPermissions.test.ts +164 -0
  1177. package/src/services/Signer/actions/requestPermissions.ts +66 -0
  1178. package/src/services/Signer/actions/signAuthorization.test.ts +279 -0
  1179. package/src/services/Signer/actions/signAuthorization.ts +127 -0
  1180. package/src/services/Signer/actions/switchChain.test.ts +129 -0
  1181. package/src/services/Signer/actions/switchChain.ts +56 -0
  1182. package/src/services/Signer/actions/watchAsset.test.ts +175 -0
  1183. package/src/services/Signer/actions/watchAsset.ts +110 -0
  1184. package/src/services/Signer/actions/writeContract.test.ts +281 -0
  1185. package/src/services/Signer/actions/writeContract.ts +109 -0
  1186. package/src/services/Signer/index.ts +108 -0
  1187. package/src/services/TransactionSerializer/DefaultTransactionSerializer.ts +110 -0
  1188. package/src/services/TransactionSerializer/TransactionSerializer.test.ts +200 -0
  1189. package/src/services/TransactionSerializer/TransactionSerializerService.ts +114 -0
  1190. package/src/services/TransactionSerializer/index.ts +38 -0
  1191. package/src/services/Transport/BatchScheduler.test.ts +209 -0
  1192. package/src/services/Transport/BatchScheduler.ts +298 -0
  1193. package/src/services/Transport/BrowserTransport.test.ts +354 -0
  1194. package/src/services/Transport/BrowserTransport.ts +209 -0
  1195. package/src/services/Transport/CustomTransport.test.ts +331 -0
  1196. package/src/services/Transport/CustomTransport.ts +355 -0
  1197. package/src/services/Transport/FallbackTransport.test.ts +492 -0
  1198. package/src/services/Transport/FallbackTransport.ts +240 -0
  1199. package/src/services/Transport/HttpTransport.ts +685 -0
  1200. package/src/services/Transport/HttpTransportConfig.test.ts +153 -0
  1201. package/src/services/Transport/HttpTransportConfig.ts +270 -0
  1202. package/src/services/Transport/HttpTransportHooks.test.ts +176 -0
  1203. package/src/services/Transport/IdGenerator.test.ts +117 -0
  1204. package/src/services/Transport/IdGenerator.ts +82 -0
  1205. package/src/services/Transport/IpcTransport.test.ts +222 -0
  1206. package/src/services/Transport/IpcTransport.ts +732 -0
  1207. package/src/services/Transport/RateLimitedTransport.test.ts +118 -0
  1208. package/src/services/Transport/RateLimitedTransport.ts +124 -0
  1209. package/src/services/Transport/RpcRequest.test.ts +266 -0
  1210. package/src/services/Transport/RpcRequest.ts +312 -0
  1211. package/src/services/Transport/RpcResolver.test.ts +280 -0
  1212. package/src/services/Transport/RpcResolver.ts +184 -0
  1213. package/src/services/Transport/TestTransport.ts +175 -0
  1214. package/src/services/Transport/Transport.test.ts +1755 -0
  1215. package/src/services/Transport/TransportConfig.test.ts +224 -0
  1216. package/src/services/Transport/TransportConfig.ts +285 -0
  1217. package/src/services/Transport/TransportError.test.ts +166 -0
  1218. package/src/services/Transport/TransportError.ts +134 -0
  1219. package/src/services/Transport/TransportFiberRef.test.ts +164 -0
  1220. package/src/services/Transport/TransportInterceptor.test.ts +341 -0
  1221. package/src/services/Transport/TransportInterceptor.ts +531 -0
  1222. package/src/services/Transport/TransportService.ts +124 -0
  1223. package/src/services/Transport/WebSocketTransport.test.ts +588 -0
  1224. package/src/services/Transport/WebSocketTransport.ts +765 -0
  1225. package/src/services/Transport/WebSocketTransportConfig.test.ts +185 -0
  1226. package/src/services/Transport/WebSocketTransportConfig.ts +247 -0
  1227. package/src/services/Transport/__testUtils__/mockIpcSocket.ts +106 -0
  1228. package/src/services/Transport/__testUtils__/mockWebSocket.ts +138 -0
  1229. package/src/services/Transport/config.ts +150 -0
  1230. package/src/services/Transport/index.ts +161 -0
  1231. package/src/services/errors.test.ts +570 -0
  1232. package/src/services/index.ts +439 -0
  1233. package/src/services/presets/index.ts +283 -0
  1234. package/src/services/presets/presets.test.ts +88 -0
  1235. package/src/standards/ERC1155.test.ts +324 -0
  1236. package/src/standards/ERC1155.ts +328 -0
  1237. package/src/standards/ERC165.test.ts +216 -0
  1238. package/src/standards/ERC165.ts +87 -0
  1239. package/src/standards/ERC20.test.ts +310 -0
  1240. package/src/standards/ERC20.ts +275 -0
  1241. package/src/standards/ERC721.test.ts +343 -0
  1242. package/src/standards/ERC721.ts +319 -0
  1243. package/src/standards/errors.test.ts +54 -0
  1244. package/src/standards/errors.ts +7 -0
  1245. package/src/standards/index.ts +5 -0
  1246. package/src/stream/index.test.ts +216 -0
  1247. package/src/stream/index.ts +37 -0
  1248. package/src/transaction/TransactionStream.test.ts +887 -0
  1249. package/src/transaction/TransactionStream.ts +142 -0
  1250. package/src/transaction/TransactionStreamError.test.ts +133 -0
  1251. package/src/transaction/TransactionStreamError.ts +35 -0
  1252. package/src/transaction/TransactionStreamService.ts +121 -0
  1253. package/src/transaction/index.ts +35 -0
  1254. package/src/utils/Unit/Unit.test.ts +337 -0
  1255. package/src/utils/Unit/errors.ts +16 -0
  1256. package/src/utils/Unit/formatEther.ts +24 -0
  1257. package/src/utils/Unit/formatGwei.ts +24 -0
  1258. package/src/utils/Unit/formatUnits.ts +55 -0
  1259. package/src/utils/Unit/index.ts +49 -0
  1260. package/src/utils/Unit/parseEther.ts +24 -0
  1261. package/src/utils/Unit/parseGwei.ts +24 -0
  1262. package/src/utils/Unit/parseUnits.ts +68 -0
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @fileoverview HDWalletService Effect service definition for hierarchical deterministic wallets.
3
+ * @module HDWallet/HDWalletService
4
+ * @since 0.0.1
5
+ */
6
+ import * as Context from "effect/Context";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Layer from "effect/Layer";
9
+ import type { MnemonicStrength } from "../Bip39/types.js";
10
+ import type { HDWalletError } from "./errors.js";
11
+
12
+ /**
13
+ * Represents a hierarchical deterministic wallet node.
14
+ *
15
+ * @description
16
+ * An HDNode contains the key material (private key, public key, chain code)
17
+ * at a specific point in the derivation tree. Each node can derive child nodes.
18
+ *
19
+ * @since 0.0.1
20
+ * @see {@link https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki | BIP-32}
21
+ */
22
+ export type HDNode = object;
23
+
24
+ /**
25
+ * Represents an HD derivation path as an array of indices.
26
+ *
27
+ * @description
28
+ * Each number represents a child index. Indices >= 0x80000000 (2^31) are hardened.
29
+ * For example, [44, 60, 0, 0, 0] with hardening on first three is BIP-44 Ethereum.
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const path: HDPath = [44 + 0x80000000, 60 + 0x80000000, 0 + 0x80000000, 0, 0]
34
+ * ```
35
+ *
36
+ * @since 0.0.1
37
+ */
38
+ export type HDPath = readonly number[];
39
+
40
+ /**
41
+ * Shape interface for HD wallet service operations.
42
+ *
43
+ * @description
44
+ * Defines the contract for HD wallet implementations. All methods return Effect
45
+ * types for composable, type-safe async/error handling.
46
+ *
47
+ * @since 0.0.1
48
+ */
49
+ export interface HDWalletServiceShape {
50
+ /**
51
+ * Derives a child node from a parent node using the given path.
52
+ * @param node - The parent HD node
53
+ * @param path - Derivation path (e.g., "m/44'/60'/0'/0/0" or array of indices)
54
+ * @returns Effect containing the derived child node
55
+ *
56
+ * @throws InvalidPathError - Path format invalid
57
+ * @throws HardenedDerivationError - Hardened derivation attempted from public key
58
+ * @throws InvalidKeyError - Child key derivation failed
59
+ */
60
+ readonly derive: (
61
+ node: HDNode,
62
+ path: string | HDPath,
63
+ ) => Effect.Effect<HDNode, HDWalletError>;
64
+
65
+ /**
66
+ * Generates a new random BIP-39 mnemonic sentence.
67
+ *
68
+ * @param strength - Entropy bits: 128=12 words, 160=15, 192=18, 224=21, 256=24 (default: 128)
69
+ * @returns Effect containing the space-separated mnemonic sentence
70
+ *
71
+ * @see Use `mnemonicToWords()` from `voltaire-effect/crypto/Bip39` if you need an array
72
+ * @see {@link https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki | BIP-39 Specification}
73
+ */
74
+ readonly generateMnemonic: (
75
+ strength?: MnemonicStrength,
76
+ ) => Effect.Effect<string>;
77
+
78
+ /**
79
+ * Creates an HD node from a seed.
80
+ * @param seed - The 16-64 byte seed from mnemonic
81
+ * @returns Effect containing the master HD node
82
+ *
83
+ * @throws InvalidSeedError - Seed length invalid
84
+ * @throws InvalidKeyError - Master key derivation failed
85
+ */
86
+ readonly fromSeed: (seed: Uint8Array) => Effect.Effect<HDNode, HDWalletError>;
87
+
88
+ /**
89
+ * Creates a master HD node from a BIP-39 mnemonic sentence.
90
+ * @param mnemonic - Space-separated mnemonic sentence
91
+ * @param passphrase - Optional passphrase (default: "")
92
+ * @returns Effect containing the master HD node
93
+ *
94
+ * @throws InvalidSeedError - Derived seed invalid
95
+ * @throws InvalidKeyError - Master key derivation failed
96
+ */
97
+ readonly fromMnemonic: (
98
+ mnemonic: string,
99
+ passphrase?: string,
100
+ ) => Effect.Effect<HDNode, HDWalletError>;
101
+
102
+ /**
103
+ * Converts a mnemonic phrase to a seed.
104
+ * @param mnemonic - Array of mnemonic words (use mnemonicToWords() for sentences)
105
+ * @returns Effect containing the 64-byte seed
106
+ *
107
+ * @throws InvalidSeedError - Mnemonic conversion failed
108
+ */
109
+ readonly mnemonicToSeed: (
110
+ mnemonic: string[],
111
+ ) => Effect.Effect<Uint8Array, HDWalletError>;
112
+
113
+ /**
114
+ * Extracts the private key from an HD node.
115
+ * @param node - The HD node
116
+ * @returns Effect containing the 32-byte private key or null
117
+ */
118
+ readonly getPrivateKey: (node: HDNode) => Effect.Effect<Uint8Array | null>;
119
+
120
+ /**
121
+ * Extracts the public key from an HD node.
122
+ * @param node - The HD node
123
+ * @returns Effect containing the 33-byte compressed public key or null
124
+ */
125
+ readonly getPublicKey: (node: HDNode) => Effect.Effect<Uint8Array | null>;
126
+ }
127
+
128
+ /**
129
+ * Hierarchical Deterministic wallet service for Effect-based applications.
130
+ * Implements BIP-32/BIP-39/BIP-44 for deterministic key derivation.
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * import { HDWalletService } from 'voltaire-effect/crypto'
135
+ * import { HDWalletLive } from 'voltaire-effect/native'
136
+ * import { mnemonicToWords } from 'voltaire-effect/crypto/Bip39'
137
+ * import * as Effect from 'effect/Effect'
138
+ *
139
+ * const program = Effect.gen(function* () {
140
+ * const hd = yield* HDWalletService
141
+ * const mnemonic = yield* hd.generateMnemonic(128)
142
+ * const seed = yield* hd.mnemonicToSeed(mnemonicToWords(mnemonic))
143
+ * const master = yield* hd.fromSeed(seed)
144
+ * return yield* hd.derive(master, "m/44'/60'/0'/0/0")
145
+ * }).pipe(Effect.provide(HDWalletLive))
146
+ * ```
147
+ * @since 0.0.1
148
+ */
149
+ export class HDWalletService extends Context.Tag("HDWalletService")<
150
+ HDWalletService,
151
+ HDWalletServiceShape
152
+ >() {}
153
+
154
+ /**
155
+ * Test layer for HDWalletService returning deterministic mock values.
156
+ *
157
+ * @description
158
+ * Provides mock implementations for unit testing. Returns the standard
159
+ * BIP-39 test vector mnemonic and empty byte arrays for keys.
160
+ * Use when testing application logic without cryptographic overhead.
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * import { HDWalletService, HDWalletTest, generateMnemonic } from 'voltaire-effect/crypto/HDWallet'
165
+ * import * as Effect from 'effect/Effect'
166
+ *
167
+ * const testProgram = generateMnemonic(128).pipe(
168
+ * Effect.provide(HDWalletTest)
169
+ * )
170
+ * // Returns: 'abandon abandon ... about'
171
+ * ```
172
+ *
173
+ * @since 0.0.1
174
+ */
175
+ const TEST_MNEMONIC =
176
+ "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
177
+
178
+ export const HDWalletTest = Layer.succeed(HDWalletService, {
179
+ derive: (_node, _path) => Effect.succeed({} as HDNode),
180
+ generateMnemonic: (_strength) => Effect.succeed(TEST_MNEMONIC),
181
+ fromSeed: (_seed) => Effect.succeed({} as HDNode),
182
+ fromMnemonic: (_mnemonic, _passphrase) => Effect.succeed({} as HDNode),
183
+ mnemonicToSeed: (_mnemonic) => Effect.succeed(new Uint8Array(64)),
184
+ getPrivateKey: (_node) => Effect.succeed(new Uint8Array(32)),
185
+ getPublicKey: (_node) => Effect.succeed(new Uint8Array(33)),
186
+ });
@@ -0,0 +1,348 @@
1
+ /**
2
+ * @fileoverview HD wallet derivation operations for Effect.
3
+ * @module HDWallet/derive
4
+ * @since 0.0.1
5
+ */
6
+ import * as Effect from "effect/Effect";
7
+ import type { MnemonicStrength } from "../Bip39/types.js";
8
+ import { type HDWalletError, InvalidKeyError } from "./errors.js";
9
+ import {
10
+ type HDNode,
11
+ type HDPath,
12
+ HDWalletService,
13
+ } from "./HDWalletService.js";
14
+
15
+ /**
16
+ * Derives a child HD node from a parent node using the given path.
17
+ *
18
+ * @description
19
+ * Performs BIP-32 child key derivation using either a string path (e.g., "m/44'/60'/0'/0/0")
20
+ * or an array of indices. Hardened derivation is indicated by apostrophe in string paths
21
+ * or by adding 0x80000000 to numeric indices.
22
+ *
23
+ * @param node - The parent HD node to derive from
24
+ * @param path - Derivation path (e.g., "m/44'/60'/0'/0/0" or array of indices)
25
+ * @returns Effect containing the derived child node, requiring HDWalletService
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * import { derive, fromSeed } from 'voltaire-effect/crypto/HDWallet'
30
+ * import { HDWalletLive } from 'voltaire-effect/native'
31
+ * import * as Effect from 'effect/Effect'
32
+ *
33
+ * const program = Effect.gen(function* () {
34
+ * const master = yield* fromSeed(seed)
35
+ * return yield* derive(master, "m/44'/60'/0'/0/0")
36
+ * }).pipe(Effect.provide(HDWalletLive))
37
+ * ```
38
+ *
39
+ * @throws InvalidPathError if derivation path is invalid
40
+ * @throws HardenedDerivationError if hardened derivation is attempted from a public node
41
+ * @throws InvalidKeyError if child key derivation fails
42
+ * @see {@link fromSeed} to create the master node
43
+ * @since 0.0.1
44
+ */
45
+ export const derive = (
46
+ node: HDNode,
47
+ path: string | HDPath,
48
+ ): Effect.Effect<HDNode, HDWalletError, HDWalletService> =>
49
+ Effect.gen(function* () {
50
+ const hdwallet = yield* HDWalletService;
51
+ return yield* hdwallet.derive(node, path);
52
+ });
53
+
54
+ /**
55
+ * Generates a new random BIP-39 mnemonic phrase.
56
+ *
57
+ * @description
58
+ * Creates a cryptographically random mnemonic phrase using secure random number
59
+ * generation. The mnemonic encodes entropy plus a checksum, enabling wallet recovery.
60
+ *
61
+ * @param strength - Entropy bits: 128 = 12 words, 160 = 15, 192 = 18, 224 = 21, 256 = 24 (default: 128)
62
+ * @returns Effect containing the space-separated mnemonic sentence, requiring HDWalletService
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * import { generateMnemonic } from 'voltaire-effect/crypto/HDWallet'
67
+ * import { HDWalletLive } from 'voltaire-effect/native'
68
+ * import * as Effect from 'effect/Effect'
69
+ *
70
+ * const program = generateMnemonic(256).pipe(Effect.provide(HDWalletLive))
71
+ * // Returns 24 words from BIP-39 wordlist, space-separated
72
+ * ```
73
+ *
74
+ * @throws Never fails
75
+ * @see {@link mnemonicToSeed} to convert mnemonic to seed
76
+ * @since 0.0.1
77
+ */
78
+ export const generateMnemonic = (
79
+ strength: MnemonicStrength = 128,
80
+ ): Effect.Effect<string, never, HDWalletService> =>
81
+ Effect.gen(function* () {
82
+ const hdwallet = yield* HDWalletService;
83
+ return yield* hdwallet.generateMnemonic(strength);
84
+ });
85
+
86
+ /**
87
+ * Creates a master HD node from a seed.
88
+ *
89
+ * @description
90
+ * Creates the root node of the HD tree from a 16-64 byte seed. The seed is typically
91
+ * derived from a BIP-39 mnemonic using PBKDF2. The master node is at path "m".
92
+ *
93
+ * @param seed - The 16-64 byte seed (typically from mnemonicToSeed)
94
+ * @returns Effect containing the master HD node, requiring HDWalletService
95
+ *
96
+ * @example
97
+ * ```typescript
98
+ * import { fromSeed, mnemonicToSeed } from 'voltaire-effect/crypto/HDWallet'
99
+ * import { HDWalletLive } from 'voltaire-effect/native'
100
+ * import { mnemonicToWords } from 'voltaire-effect/crypto/Bip39'
101
+ * import * as Effect from 'effect/Effect'
102
+ *
103
+ * const program = Effect.gen(function* () {
104
+ * const seed = yield* mnemonicToSeed(mnemonicToWords(mnemonic))
105
+ * return yield* fromSeed(seed)
106
+ * }).pipe(Effect.provide(HDWalletLive))
107
+ * ```
108
+ *
109
+ * @throws InvalidSeedError if seed length is invalid
110
+ * @throws InvalidKeyError if master key derivation fails
111
+ * @see {@link mnemonicToSeed} to generate seed from mnemonic
112
+ * @see {@link derive} to derive child nodes
113
+ * @since 0.0.1
114
+ */
115
+ export const fromSeed = (
116
+ seed: Uint8Array,
117
+ ): Effect.Effect<HDNode, HDWalletError, HDWalletService> =>
118
+ Effect.gen(function* () {
119
+ const hdwallet = yield* HDWalletService;
120
+ return yield* hdwallet.fromSeed(seed);
121
+ });
122
+
123
+ /**
124
+ * Creates a master HD node from a mnemonic sentence.
125
+ *
126
+ * @description
127
+ * Converts the mnemonic to a seed and derives the master HD node.
128
+ *
129
+ * @param mnemonic - Space-separated mnemonic sentence
130
+ * @param passphrase - Optional passphrase (default: "")
131
+ * @returns Effect containing the master HD node, requiring HDWalletService
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * import { fromMnemonic } from 'voltaire-effect/crypto/HDWallet'
136
+ * import { HDWalletLive } from 'voltaire-effect/native'
137
+ * import * as Effect from 'effect/Effect'
138
+ *
139
+ * const program = fromMnemonic("abandon abandon ...", "passphrase").pipe(
140
+ * Effect.provide(HDWalletLive)
141
+ * )
142
+ * ```
143
+ *
144
+ * @throws InvalidSeedError if derived seed is invalid
145
+ * @throws InvalidKeyError if master key derivation fails
146
+ * @since 0.0.1
147
+ */
148
+ export const fromMnemonic = (
149
+ mnemonic: string,
150
+ passphrase?: string,
151
+ ): Effect.Effect<HDNode, HDWalletError, HDWalletService> =>
152
+ Effect.gen(function* () {
153
+ const hdwallet = yield* HDWalletService;
154
+ return yield* hdwallet.fromMnemonic(mnemonic, passphrase);
155
+ });
156
+
157
+ /**
158
+ * Converts a mnemonic phrase to a 64-byte seed.
159
+ *
160
+ * @description
161
+ * Uses PBKDF2-SHA512 with 2048 iterations to derive a 64-byte seed from the mnemonic.
162
+ * The seed is used to create the master HD node. An optional passphrase can be used
163
+ * for additional security (not implemented in this wrapper).
164
+ *
165
+ * @param mnemonic - Array of BIP-39 mnemonic words
166
+ * @returns Effect containing the 64-byte seed, requiring HDWalletService
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * import { mnemonicToSeed } from 'voltaire-effect/crypto/HDWallet'
171
+ * import { HDWalletLive } from 'voltaire-effect/native'
172
+ * import * as Effect from 'effect/Effect'
173
+ *
174
+ * const words = ['abandon', 'abandon', 'abandon', 'abandon', 'abandon',
175
+ * 'abandon', 'abandon', 'abandon', 'abandon', 'abandon', 'abandon', 'about']
176
+ * const program = mnemonicToSeed(words).pipe(Effect.provide(HDWalletLive))
177
+ * ```
178
+ *
179
+ * @throws InvalidSeedError if mnemonic conversion fails
180
+ * @see {@link generateMnemonic} to create a mnemonic
181
+ * @see {@link withSeed} to ensure seed cleanup after use
182
+ * @see {@link fromSeed} to create master node from seed
183
+ * @since 0.0.1
184
+ */
185
+ export const mnemonicToSeed = (
186
+ mnemonic: string[],
187
+ ): Effect.Effect<Uint8Array, HDWalletError, HDWalletService> =>
188
+ Effect.gen(function* () {
189
+ const hdwallet = yield* HDWalletService;
190
+ return yield* hdwallet.mnemonicToSeed(mnemonic);
191
+ });
192
+
193
+ /**
194
+ * Derives a mnemonic seed, uses it, and zeroes it after use.
195
+ *
196
+ * @description
197
+ * Wraps {@link mnemonicToSeed} with `Effect.acquireRelease` to ensure the
198
+ * seed is wiped from memory after the provided effect completes.
199
+ *
200
+ * @param mnemonic - Array of BIP-39 mnemonic words
201
+ * @param use - Effect that consumes the derived seed
202
+ * @returns Effect containing the result of `use`
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * import { withSeed, fromSeed } from 'voltaire-effect/crypto/HDWallet'
207
+ * import { HDWalletLive } from 'voltaire-effect/native'
208
+ * import * as Effect from 'effect/Effect'
209
+ *
210
+ * const program = withSeed(words, (seed) =>
211
+ * fromSeed(seed)
212
+ * ).pipe(Effect.provide(HDWalletLive))
213
+ * ```
214
+ *
215
+ * @since 0.0.1
216
+ */
217
+ export const withSeed = <R, E, A>(
218
+ mnemonic: string[],
219
+ use: (seed: Uint8Array) => Effect.Effect<A, E, R>,
220
+ ): Effect.Effect<A, E | HDWalletError, R | HDWalletService> =>
221
+ Effect.acquireRelease(mnemonicToSeed(mnemonic), (seed) =>
222
+ Effect.sync(() => seed.fill(0)),
223
+ ).pipe(Effect.flatMap(use), Effect.scoped);
224
+
225
+ /**
226
+ * Extracts the private key from an HD node.
227
+ *
228
+ * @description
229
+ * Retrieves the 32-byte secp256k1 private key from the HD node. This key can be
230
+ * used for signing transactions and deriving Ethereum addresses. Returns null
231
+ * for neutered (public-key-only) nodes.
232
+ *
233
+ * @param node - The HD node containing the private key
234
+ * @returns Effect containing the 32-byte private key or null, requiring HDWalletService
235
+ *
236
+ * @example
237
+ * ```typescript
238
+ * import { getPrivateKey, derive, fromSeed } from 'voltaire-effect/crypto/HDWallet'
239
+ * import { HDWalletLive } from 'voltaire-effect/native'
240
+ * import * as Effect from 'effect/Effect'
241
+ *
242
+ * const program = Effect.gen(function* () {
243
+ * const master = yield* fromSeed(seed)
244
+ * const account = yield* derive(master, "m/44'/60'/0'/0/0")
245
+ * return yield* getPrivateKey(account)
246
+ * }).pipe(Effect.provide(HDWalletLive))
247
+ * ```
248
+ *
249
+ * @throws Never fails
250
+ * @see {@link getPublicKey} to extract the public key
251
+ * @since 0.0.1
252
+ */
253
+ export const getPrivateKey = (
254
+ node: HDNode,
255
+ ): Effect.Effect<Uint8Array | null, never, HDWalletService> =>
256
+ Effect.gen(function* () {
257
+ const hdwallet = yield* HDWalletService;
258
+ return yield* hdwallet.getPrivateKey(node);
259
+ });
260
+
261
+ /**
262
+ * Extracts a private key, uses it, and zeroes it after use.
263
+ *
264
+ * @description
265
+ * Wraps {@link getPrivateKey} with `Effect.acquireRelease` to ensure key
266
+ * material is wiped from memory after the provided effect completes.
267
+ *
268
+ * @param node - The HD node containing the private key
269
+ * @param use - Effect that consumes the private key
270
+ * @returns Effect containing the result of `use`
271
+ *
272
+ * @example
273
+ * ```typescript
274
+ * import { withPrivateKey, derive, fromSeed } from 'voltaire-effect/crypto/HDWallet'
275
+ * import { HDWalletLive } from 'voltaire-effect/native'
276
+ * import * as Effect from 'effect/Effect'
277
+ *
278
+ * const program = Effect.gen(function* () {
279
+ * const master = yield* fromSeed(seed)
280
+ * const account = yield* derive(master, "m/44'/60'/0'/0/0")
281
+ * return yield* withPrivateKey(account, (key) => Effect.sync(() => key))
282
+ * }).pipe(Effect.provide(HDWalletLive))
283
+ * ```
284
+ *
285
+ * @throws InvalidKeyError if the node does not contain a private key
286
+ * @since 0.0.1
287
+ */
288
+ export const withPrivateKey = <R, E, A>(
289
+ node: HDNode,
290
+ use: (key: Uint8Array) => Effect.Effect<A, E, R>,
291
+ ): Effect.Effect<A, E | HDWalletError, R | HDWalletService> =>
292
+ Effect.acquireRelease<Uint8Array | null, never, HDWalletService, void, never>(
293
+ getPrivateKey(node),
294
+ (key) =>
295
+ Effect.sync(() => {
296
+ if (key) {
297
+ key.fill(0);
298
+ }
299
+ }),
300
+ ).pipe(
301
+ Effect.flatMap(
302
+ (key): Effect.Effect<A, E | HDWalletError, R> =>
303
+ key
304
+ ? use(key)
305
+ : Effect.fail(
306
+ new InvalidKeyError({
307
+ message: "HD node does not contain a private key.",
308
+ }),
309
+ ),
310
+ ),
311
+ Effect.scoped,
312
+ );
313
+
314
+ /**
315
+ * Extracts the public key from an HD node.
316
+ *
317
+ * @description
318
+ * Retrieves the 33-byte compressed secp256k1 public key from the HD node.
319
+ * The public key can be used to derive Ethereum addresses (keccak256 of
320
+ * uncompressed key, take last 20 bytes).
321
+ *
322
+ * @param node - The HD node containing the public key
323
+ * @returns Effect containing the 33-byte compressed public key or null, requiring HDWalletService
324
+ *
325
+ * @example
326
+ * ```typescript
327
+ * import { getPublicKey, derive, fromSeed } from 'voltaire-effect/crypto/HDWallet'
328
+ * import { HDWalletLive } from 'voltaire-effect/native'
329
+ * import * as Effect from 'effect/Effect'
330
+ *
331
+ * const program = Effect.gen(function* () {
332
+ * const master = yield* fromSeed(seed)
333
+ * const account = yield* derive(master, "m/44'/60'/0'/0/0")
334
+ * return yield* getPublicKey(account) // 33 bytes, compressed format
335
+ * }).pipe(Effect.provide(HDWalletLive))
336
+ * ```
337
+ *
338
+ * @throws Never fails
339
+ * @see {@link getPrivateKey} to extract the private key
340
+ * @since 0.0.1
341
+ */
342
+ export const getPublicKey = (
343
+ node: HDNode,
344
+ ): Effect.Effect<Uint8Array | null, never, HDWalletService> =>
345
+ Effect.gen(function* () {
346
+ const hdwallet = yield* HDWalletService;
347
+ return yield* hdwallet.getPublicKey(node);
348
+ });
@@ -0,0 +1,121 @@
1
+ /**
2
+ * @fileoverview Error types and mapping helpers for HDWallet Effect wrappers.
3
+ *
4
+ * @module HDWallet/errors
5
+ * @since 0.0.1
6
+ */
7
+
8
+ import * as Data from "effect/Data";
9
+
10
+ /**
11
+ * Invalid BIP-32/44 derivation path format.
12
+ *
13
+ * @since 0.0.1
14
+ */
15
+ export class InvalidPathError extends Data.TaggedError("InvalidPathError")<{
16
+ readonly path: string;
17
+ readonly message: string;
18
+ readonly cause?: unknown;
19
+ }> {}
20
+
21
+ /**
22
+ * Seed bytes invalid for BIP-32 master key derivation.
23
+ * Seed must be 16-64 bytes (128-512 bits) per BIP-32.
24
+ *
25
+ * @since 0.0.1
26
+ */
27
+ export class InvalidSeedError extends Data.TaggedError("InvalidSeedError")<{
28
+ readonly seedLength: number;
29
+ readonly message: string;
30
+ readonly cause?: unknown;
31
+ }> {}
32
+
33
+ /**
34
+ * Cannot perform hardened derivation from extended public key.
35
+ * Hardened paths (with ') require private key.
36
+ *
37
+ * @since 0.0.1
38
+ */
39
+ export class HardenedDerivationError extends Data.TaggedError(
40
+ "HardenedDerivationError",
41
+ )<{
42
+ readonly path: string;
43
+ readonly index: number;
44
+ readonly message: string;
45
+ }> {}
46
+
47
+ /**
48
+ * Child key derivation produced invalid key material.
49
+ * This is rare but possible per BIP-32.
50
+ *
51
+ * @since 0.0.1
52
+ */
53
+ export class InvalidKeyError extends Data.TaggedError("InvalidKeyError")<{
54
+ readonly message: string;
55
+ readonly cause?: unknown;
56
+ }> {}
57
+
58
+ /**
59
+ * Union of all HDWallet error types.
60
+ *
61
+ * @since 0.0.1
62
+ */
63
+ export type HDWalletError =
64
+ | InvalidPathError
65
+ | InvalidSeedError
66
+ | HardenedDerivationError
67
+ | InvalidKeyError;
68
+
69
+ const getMessage = (error: unknown): string =>
70
+ error instanceof Error ? error.message : String(error);
71
+
72
+ /**
73
+ * Maps unknown errors to appropriate HDWallet error type.
74
+ *
75
+ * @since 0.0.1
76
+ */
77
+ export const mapToHDWalletError = (
78
+ error: unknown,
79
+ context: { path?: string; seedLength?: number },
80
+ ): HDWalletError => {
81
+ if (error instanceof InvalidPathError) return error;
82
+ if (error instanceof InvalidSeedError) return error;
83
+ if (error instanceof HardenedDerivationError) return error;
84
+ if (error instanceof InvalidKeyError) return error;
85
+
86
+ const message = getMessage(error);
87
+ const normalized = message.toLowerCase();
88
+
89
+ if (normalized.includes("hardened") || normalized.includes("public")) {
90
+ return new HardenedDerivationError({
91
+ path: context.path ?? "unknown",
92
+ index: -1,
93
+ message: `Cannot derive hardened path from public key: ${message}`,
94
+ });
95
+ }
96
+
97
+ if (normalized.includes("path") || normalized.includes("derivation")) {
98
+ return new InvalidPathError({
99
+ path: context.path ?? "unknown",
100
+ message: `Invalid derivation path: ${message}`,
101
+ cause: error,
102
+ });
103
+ }
104
+
105
+ if (
106
+ normalized.includes("seed") ||
107
+ normalized.includes("mnemonic") ||
108
+ normalized.includes("length")
109
+ ) {
110
+ return new InvalidSeedError({
111
+ seedLength: context.seedLength ?? -1,
112
+ message: `Invalid seed: ${message}`,
113
+ cause: error,
114
+ });
115
+ }
116
+
117
+ return new InvalidKeyError({
118
+ message: `Key derivation failed: ${message}`,
119
+ cause: error,
120
+ });
121
+ };