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.
- package/README.md +42 -0
- package/dist/AccountService-BetXokad.d.ts +1717 -0
- package/dist/RpcResolver-BpvqybjD.d.ts +6439 -0
- package/dist/Secp256k1Service-OxQ6hJFp.d.ts +250 -0
- package/dist/X25519Test-DGsk1V9o.d.ts +5352 -0
- package/dist/crypto/index.d.ts +289 -0
- package/dist/crypto/index.js +1254 -0
- package/dist/index-IgkEHjBe.d.ts +20058 -0
- package/dist/index.d.ts +11961 -0
- package/dist/index.js +20715 -0
- package/dist/native/index.d.ts +193 -0
- package/dist/native/index.js +20931 -0
- package/dist/primitives/index.d.ts +273 -0
- package/dist/primitives/index.js +8688 -0
- package/dist/services/index.d.ts +42 -0
- package/dist/services/index.js +6176 -0
- package/package.json +108 -0
- package/src/auth/index.ts +20 -0
- package/src/auth/siwe.test.ts +156 -0
- package/src/auth/siwe.ts +319 -0
- package/src/block/BlockError.test.ts +120 -0
- package/src/block/BlockError.ts +52 -0
- package/src/block/block.test.ts +579 -0
- package/src/block/fetchBlock.ts +100 -0
- package/src/block/fetchBlockByHash.ts +97 -0
- package/src/block/fetchBlockReceipts.ts +129 -0
- package/src/block/index.ts +52 -0
- package/src/block/toLightBlock.ts +43 -0
- package/src/blockchain/Blockchain.test.ts +468 -0
- package/src/blockchain/Blockchain.ts +441 -0
- package/src/blockchain/BlockchainService.ts +203 -0
- package/src/blockchain/index.ts +46 -0
- package/src/contract/EventStream.test.ts +802 -0
- package/src/contract/EventStream.ts +138 -0
- package/src/contract/EventStreamError.test.ts +92 -0
- package/src/contract/EventStreamError.ts +33 -0
- package/src/contract/EventStreamService.ts +124 -0
- package/src/contract/index.ts +39 -0
- package/src/crypto/AesGcm/AesGcm.test.ts +185 -0
- package/src/crypto/AesGcm/AesGcmService.ts +86 -0
- package/src/crypto/AesGcm/errors.ts +38 -0
- package/src/crypto/AesGcm/index.ts +101 -0
- package/src/crypto/AesGcm/operations.ts +191 -0
- package/src/crypto/Bip39/Bip39.test.ts +183 -0
- package/src/crypto/Bip39/Bip39Service.ts +160 -0
- package/src/crypto/Bip39/index.ts +52 -0
- package/src/crypto/Bip39/operations.ts +168 -0
- package/src/crypto/Bip39/types.ts +16 -0
- package/src/crypto/Bip39/utils.ts +42 -0
- package/src/crypto/Blake2/Blake2.test.ts +317 -0
- package/src/crypto/Blake2/Blake2Service.ts +121 -0
- package/src/crypto/Blake2/hash.ts +59 -0
- package/src/crypto/Blake2/index.ts +30 -0
- package/src/crypto/Bls12381/Bls12381.test.ts +464 -0
- package/src/crypto/Bls12381/Bls12381Live.ts +43 -0
- package/src/crypto/Bls12381/Bls12381Service.ts +131 -0
- package/src/crypto/Bls12381/aggregate.ts +66 -0
- package/src/crypto/Bls12381/index.ts +43 -0
- package/src/crypto/Bls12381/sign.ts +65 -0
- package/src/crypto/Bls12381/verify.ts +71 -0
- package/src/crypto/Bn254/Bn254.test.ts +131 -0
- package/src/crypto/Bn254/Bn254Service.ts +369 -0
- package/src/crypto/Bn254/index.ts +56 -0
- package/src/crypto/Bn254/operations.ts +259 -0
- package/src/crypto/Bn254/types.ts +15 -0
- package/src/crypto/ChaCha20Poly1305/ChaCha20Poly1305.test.ts +199 -0
- package/src/crypto/ChaCha20Poly1305/ChaCha20Poly1305Service.ts +177 -0
- package/src/crypto/ChaCha20Poly1305/errors.ts +38 -0
- package/src/crypto/ChaCha20Poly1305/index.ts +46 -0
- package/src/crypto/ChaCha20Poly1305/operations.ts +161 -0
- package/src/crypto/CryptoLive.test.ts +42 -0
- package/src/crypto/CryptoLive.ts +52 -0
- package/src/crypto/CryptoTest.ts +49 -0
- package/src/crypto/EIP712/EIP712.test.ts +197 -0
- package/src/crypto/EIP712/EIP712Service.ts +184 -0
- package/src/crypto/EIP712/index.ts +50 -0
- package/src/crypto/EIP712/operations.ts +220 -0
- package/src/crypto/ERC6492/ERC6492.test.ts +115 -0
- package/src/crypto/ERC6492/index.ts +9 -0
- package/src/crypto/ERC6492/unwrapSignature.ts +72 -0
- package/src/crypto/ERC6492/verifySignature.ts +139 -0
- package/src/crypto/ERC6492/wrapSignature.ts +55 -0
- package/src/crypto/Ed25519/Ed25519.test.ts +472 -0
- package/src/crypto/Ed25519/Ed25519Live.ts +44 -0
- package/src/crypto/Ed25519/Ed25519Service.ts +134 -0
- package/src/crypto/Ed25519/Ed25519Test.ts +59 -0
- package/src/crypto/Ed25519/getPublicKey.ts +60 -0
- package/src/crypto/Ed25519/index.ts +42 -0
- package/src/crypto/Ed25519/sign.ts +66 -0
- package/src/crypto/Ed25519/verify.ts +75 -0
- package/src/crypto/HDWallet/HDWallet.cleanup.test.ts +128 -0
- package/src/crypto/HDWallet/HDWallet.test.ts +383 -0
- package/src/crypto/HDWallet/HDWalletLive.ts +201 -0
- package/src/crypto/HDWallet/HDWalletService.ts +186 -0
- package/src/crypto/HDWallet/derive.ts +348 -0
- package/src/crypto/HDWallet/errors.ts +121 -0
- package/src/crypto/HDWallet/index.ts +65 -0
- package/src/crypto/HMAC/HMAC.test.ts +380 -0
- package/src/crypto/HMAC/HMACService.ts +174 -0
- package/src/crypto/HMAC/index.ts +39 -0
- package/src/crypto/HMAC/operations.ts +112 -0
- package/src/crypto/Hash/index.ts +51 -0
- package/src/crypto/KZG/KZG.test.ts +94 -0
- package/src/crypto/KZG/KZGService.ts +241 -0
- package/src/crypto/KZG/commit.ts +76 -0
- package/src/crypto/KZG/index.ts +42 -0
- package/src/crypto/KZG/verify.ts +52 -0
- package/src/crypto/Keccak256/Keccak256.test.ts +265 -0
- package/src/crypto/Keccak256/KeccakService.ts +177 -0
- package/src/crypto/Keccak256/hash.ts +76 -0
- package/src/crypto/Keccak256/index.ts +49 -0
- package/src/crypto/Keystore/Keystore.cleanup.test.ts +93 -0
- package/src/crypto/Keystore/Keystore.test.ts +511 -0
- package/src/crypto/Keystore/KeystoreLive.ts +35 -0
- package/src/crypto/Keystore/KeystoreService.ts +115 -0
- package/src/crypto/Keystore/KeystoreTest.ts +65 -0
- package/src/crypto/Keystore/decrypt.ts +105 -0
- package/src/crypto/Keystore/encrypt.ts +71 -0
- package/src/crypto/Keystore/index.ts +41 -0
- package/src/crypto/ModExp/ModExp.test.ts +177 -0
- package/src/crypto/ModExp/ModExpService.ts +139 -0
- package/src/crypto/ModExp/index.ts +39 -0
- package/src/crypto/ModExp/operations.ts +122 -0
- package/src/crypto/P256/P256.test.ts +414 -0
- package/src/crypto/P256/P256Live.ts +41 -0
- package/src/crypto/P256/P256Service.ts +115 -0
- package/src/crypto/P256/index.ts +37 -0
- package/src/crypto/P256/sign.ts +66 -0
- package/src/crypto/P256/verify.ts +75 -0
- package/src/crypto/Ripemd160/Ripemd160.test.ts +61 -0
- package/src/crypto/Ripemd160/Ripemd160Service.ts +119 -0
- package/src/crypto/Ripemd160/hash.ts +58 -0
- package/src/crypto/Ripemd160/index.ts +35 -0
- package/src/crypto/SHA256/SHA256.test.ts +284 -0
- package/src/crypto/SHA256/SHA256Service.ts +179 -0
- package/src/crypto/SHA256/hash.ts +93 -0
- package/src/crypto/SHA256/index.ts +48 -0
- package/src/crypto/Secp256k1/Secp256k1.test.ts +469 -0
- package/src/crypto/Secp256k1/Secp256k1Live.ts +83 -0
- package/src/crypto/Secp256k1/Secp256k1Service.ts +194 -0
- package/src/crypto/Secp256k1/Secp256k1Test.ts +101 -0
- package/src/crypto/Secp256k1/errors.ts +224 -0
- package/src/crypto/Secp256k1/index.ts +65 -0
- package/src/crypto/Secp256k1/recover.ts +106 -0
- package/src/crypto/Secp256k1/sign.ts +96 -0
- package/src/crypto/Secp256k1/verify.ts +111 -0
- package/src/crypto/Signature/Signature.test.ts +323 -0
- package/src/crypto/Signature/constantTimeEqual.ts +54 -0
- package/src/crypto/Signature/errors.ts +93 -0
- package/src/crypto/Signature/hashMessage.ts +83 -0
- package/src/crypto/Signature/index.ts +69 -0
- package/src/crypto/Signature/recoverAddress.ts +163 -0
- package/src/crypto/Signature/recoverMessageAddress.ts +70 -0
- package/src/crypto/Signature/verifyHash.ts +72 -0
- package/src/crypto/Signature/verifyMessage.ts +71 -0
- package/src/crypto/Signature/verifyTypedData.ts +88 -0
- package/src/crypto/Signers/Signers.test.ts +149 -0
- package/src/crypto/Signers/SignersLive.ts +40 -0
- package/src/crypto/Signers/SignersService.ts +73 -0
- package/src/crypto/Signers/SignersTest.ts +49 -0
- package/src/crypto/Signers/index.ts +44 -0
- package/src/crypto/Signers/operations.ts +123 -0
- package/src/crypto/Verify/errors.ts +97 -0
- package/src/crypto/Verify/hashMessage.ts +68 -0
- package/src/crypto/Verify/recoverAddress.ts +163 -0
- package/src/crypto/X25519/X25519.test.ts +168 -0
- package/src/crypto/X25519/X25519Live.ts +37 -0
- package/src/crypto/X25519/X25519Service.ts +81 -0
- package/src/crypto/X25519/X25519Test.ts +38 -0
- package/src/crypto/X25519/computeSecret.ts +61 -0
- package/src/crypto/X25519/generateKeyPair.ts +37 -0
- package/src/crypto/X25519/getPublicKey.ts +40 -0
- package/src/crypto/X25519/index.ts +41 -0
- package/src/crypto/index.ts +239 -0
- package/src/crypto/utils/constantTimeEqual.test.ts +40 -0
- package/src/crypto/utils/constantTimeEqual.ts +36 -0
- package/src/crypto/utils/index.ts +7 -0
- package/src/index.ts +224 -0
- package/src/jsonrpc/Anvil.ts +87 -0
- package/src/jsonrpc/BatchRequest.ts +23 -0
- package/src/jsonrpc/BatchResponse.ts +55 -0
- package/src/jsonrpc/Error.ts +107 -0
- package/src/jsonrpc/Eth.ts +224 -0
- package/src/jsonrpc/Hardhat.ts +69 -0
- package/src/jsonrpc/IdCounter.ts +7 -0
- package/src/jsonrpc/JsonRpc.test.ts +751 -0
- package/src/jsonrpc/Net.ts +24 -0
- package/src/jsonrpc/Request.ts +44 -0
- package/src/jsonrpc/Response.ts +98 -0
- package/src/jsonrpc/Txpool.ts +24 -0
- package/src/jsonrpc/Wallet.ts +52 -0
- package/src/jsonrpc/Web3.ts +22 -0
- package/src/jsonrpc/errors.test.ts +355 -0
- package/src/jsonrpc/errors.ts +680 -0
- package/src/jsonrpc/index.ts +112 -0
- package/src/jsonrpc/schemas/anvil/dropTransaction.ts +53 -0
- package/src/jsonrpc/schemas/anvil/impersonateAccount.ts +53 -0
- package/src/jsonrpc/schemas/anvil/index.ts +73 -0
- package/src/jsonrpc/schemas/anvil/mine.ts +52 -0
- package/src/jsonrpc/schemas/anvil/reset.ts +57 -0
- package/src/jsonrpc/schemas/anvil/revert.ts +49 -0
- package/src/jsonrpc/schemas/anvil/setAutomine.ts +45 -0
- package/src/jsonrpc/schemas/anvil/setBalance.ts +50 -0
- package/src/jsonrpc/schemas/anvil/setBlockTimestampInterval.ts +49 -0
- package/src/jsonrpc/schemas/anvil/setCode.ts +50 -0
- package/src/jsonrpc/schemas/anvil/setNextBlockTimestamp.ts +53 -0
- package/src/jsonrpc/schemas/anvil/setNonce.ts +50 -0
- package/src/jsonrpc/schemas/anvil/setStorageAt.ts +56 -0
- package/src/jsonrpc/schemas/anvil/snapshot.ts +49 -0
- package/src/jsonrpc/schemas/anvil/stopImpersonatingAccount.ts +53 -0
- package/src/jsonrpc/schemas/common.ts +450 -0
- package/src/jsonrpc/schemas/eth/accounts.ts +49 -0
- package/src/jsonrpc/schemas/eth/blobBaseFee.ts +49 -0
- package/src/jsonrpc/schemas/eth/blockNumber.ts +49 -0
- package/src/jsonrpc/schemas/eth/call.ts +69 -0
- package/src/jsonrpc/schemas/eth/chainId.ts +49 -0
- package/src/jsonrpc/schemas/eth/coinbase.ts +49 -0
- package/src/jsonrpc/schemas/eth/createAccessList.ts +57 -0
- package/src/jsonrpc/schemas/eth/estimateGas.ts +59 -0
- package/src/jsonrpc/schemas/eth/feeHistory.ts +54 -0
- package/src/jsonrpc/schemas/eth/gasPrice.ts +49 -0
- package/src/jsonrpc/schemas/eth/getBalance.ts +51 -0
- package/src/jsonrpc/schemas/eth/getBlockByHash.ts +54 -0
- package/src/jsonrpc/schemas/eth/getBlockByNumber.ts +54 -0
- package/src/jsonrpc/schemas/eth/getBlockReceipts.ts +54 -0
- package/src/jsonrpc/schemas/eth/getBlockTransactionCountByHash.ts +54 -0
- package/src/jsonrpc/schemas/eth/getBlockTransactionCountByNumber.ts +55 -0
- package/src/jsonrpc/schemas/eth/getCode.ts +51 -0
- package/src/jsonrpc/schemas/eth/getFilterChanges.ts +58 -0
- package/src/jsonrpc/schemas/eth/getFilterLogs.ts +54 -0
- package/src/jsonrpc/schemas/eth/getLogs.ts +50 -0
- package/src/jsonrpc/schemas/eth/getProof.ts +56 -0
- package/src/jsonrpc/schemas/eth/getStorageAt.ts +57 -0
- package/src/jsonrpc/schemas/eth/getTransactionByBlockHashAndIndex.ts +59 -0
- package/src/jsonrpc/schemas/eth/getTransactionByBlockNumberAndIndex.ts +59 -0
- package/src/jsonrpc/schemas/eth/getTransactionByHash.ts +54 -0
- package/src/jsonrpc/schemas/eth/getTransactionCount.ts +58 -0
- package/src/jsonrpc/schemas/eth/getTransactionReceipt.ts +54 -0
- package/src/jsonrpc/schemas/eth/getUncleByBlockHashAndIndex.ts +58 -0
- package/src/jsonrpc/schemas/eth/getUncleByBlockNumberAndIndex.ts +58 -0
- package/src/jsonrpc/schemas/eth/getUncleCountByBlockHash.ts +54 -0
- package/src/jsonrpc/schemas/eth/getUncleCountByBlockNumber.ts +54 -0
- package/src/jsonrpc/schemas/eth/getWork.ts +53 -0
- package/src/jsonrpc/schemas/eth/hashrate.ts +49 -0
- package/src/jsonrpc/schemas/eth/index.ts +178 -0
- package/src/jsonrpc/schemas/eth/maxPriorityFeePerGas.ts +53 -0
- package/src/jsonrpc/schemas/eth/mining.ts +45 -0
- package/src/jsonrpc/schemas/eth/newBlockFilter.ts +53 -0
- package/src/jsonrpc/schemas/eth/newFilter.ts +50 -0
- package/src/jsonrpc/schemas/eth/newPendingTransactionFilter.ts +53 -0
- package/src/jsonrpc/schemas/eth/protocolVersion.ts +49 -0
- package/src/jsonrpc/schemas/eth/sendRawTransaction.ts +54 -0
- package/src/jsonrpc/schemas/eth/sendTransaction.ts +54 -0
- package/src/jsonrpc/schemas/eth/sign.ts +50 -0
- package/src/jsonrpc/schemas/eth/signTransaction.ts +54 -0
- package/src/jsonrpc/schemas/eth/submitHashrate.ts +57 -0
- package/src/jsonrpc/schemas/eth/submitWork.ts +54 -0
- package/src/jsonrpc/schemas/eth/subscribe.ts +86 -0
- package/src/jsonrpc/schemas/eth/syncing.ts +49 -0
- package/src/jsonrpc/schemas/eth/uninstallFilter.ts +53 -0
- package/src/jsonrpc/schemas/eth/unsubscribe.ts +49 -0
- package/src/jsonrpc/schemas/hardhat/dropTransaction.ts +53 -0
- package/src/jsonrpc/schemas/hardhat/impersonateAccount.ts +53 -0
- package/src/jsonrpc/schemas/hardhat/index.ts +60 -0
- package/src/jsonrpc/schemas/hardhat/mine.ts +52 -0
- package/src/jsonrpc/schemas/hardhat/reset.ts +53 -0
- package/src/jsonrpc/schemas/hardhat/setBalance.ts +50 -0
- package/src/jsonrpc/schemas/hardhat/setCode.ts +50 -0
- package/src/jsonrpc/schemas/hardhat/setNonce.ts +50 -0
- package/src/jsonrpc/schemas/hardhat/setStorageAt.ts +56 -0
- package/src/jsonrpc/schemas/hardhat/stopImpersonatingAccount.ts +53 -0
- package/src/jsonrpc/schemas/index.ts +271 -0
- package/src/jsonrpc/schemas/net/index.ts +40 -0
- package/src/jsonrpc/schemas/net/listening.ts +45 -0
- package/src/jsonrpc/schemas/net/peerCount.ts +49 -0
- package/src/jsonrpc/schemas/net/version.ts +45 -0
- package/src/jsonrpc/schemas/schemas.test.ts +563 -0
- package/src/jsonrpc/schemas/txpool/content.ts +70 -0
- package/src/jsonrpc/schemas/txpool/index.ts +40 -0
- package/src/jsonrpc/schemas/txpool/inspect.ts +67 -0
- package/src/jsonrpc/schemas/txpool/status.ts +52 -0
- package/src/jsonrpc/schemas/wallet/addEthereumChain.ts +81 -0
- package/src/jsonrpc/schemas/wallet/getCallsStatus.ts +87 -0
- package/src/jsonrpc/schemas/wallet/getCapabilities.ts +87 -0
- package/src/jsonrpc/schemas/wallet/getPermissions.ts +51 -0
- package/src/jsonrpc/schemas/wallet/index.ts +64 -0
- package/src/jsonrpc/schemas/wallet/registerOnboarding.ts +50 -0
- package/src/jsonrpc/schemas/wallet/requestPermissions.ts +88 -0
- package/src/jsonrpc/schemas/wallet/revokePermissions.ts +62 -0
- package/src/jsonrpc/schemas/wallet/sendCalls.ts +79 -0
- package/src/jsonrpc/schemas/wallet/showCallsStatus.ts +50 -0
- package/src/jsonrpc/schemas/wallet/switchEthereumChain.ts +66 -0
- package/src/jsonrpc/schemas/wallet/watchAsset.ts +75 -0
- package/src/jsonrpc/schemas/web3/clientVersion.ts +49 -0
- package/src/jsonrpc/schemas/web3/index.ts +34 -0
- package/src/jsonrpc/schemas/web3/sha3.ts +50 -0
- package/src/native/CryptoLiveNative.ts +8 -0
- package/src/native/index.ts +14 -0
- package/src/primitives/Abi/Abi.test.ts +967 -0
- package/src/primitives/Abi/AbiSchema.test.ts +382 -0
- package/src/primitives/Abi/AbiSchema.ts +489 -0
- package/src/primitives/Abi/Item/index.ts +17 -0
- package/src/primitives/Abi/constructor/index.ts +5 -0
- package/src/primitives/Abi/decodeError.test.ts +117 -0
- package/src/primitives/Abi/decodeError.ts +103 -0
- package/src/primitives/Abi/decodeEventLog.test.ts +128 -0
- package/src/primitives/Abi/decodeEventLog.ts +164 -0
- package/src/primitives/Abi/decodeFunction.test.ts +91 -0
- package/src/primitives/Abi/decodeFunction.ts +87 -0
- package/src/primitives/Abi/decodeFunctionData.test.ts +158 -0
- package/src/primitives/Abi/decodeFunctionData.ts +116 -0
- package/src/primitives/Abi/decodeFunctionResult.test.ts +197 -0
- package/src/primitives/Abi/decodeFunctionResult.ts +160 -0
- package/src/primitives/Abi/encodeError.test.ts +106 -0
- package/src/primitives/Abi/encodeError.ts +96 -0
- package/src/primitives/Abi/encodeEventLog.test.ts +91 -0
- package/src/primitives/Abi/encodeEventLog.ts +86 -0
- package/src/primitives/Abi/encodeFunction.test.ts +65 -0
- package/src/primitives/Abi/encodeFunction.ts +65 -0
- package/src/primitives/Abi/encodeFunctionData.test.ts +149 -0
- package/src/primitives/Abi/encodeFunctionData.ts +124 -0
- package/src/primitives/Abi/encodeFunctionResult.test.ts +114 -0
- package/src/primitives/Abi/encodeFunctionResult.ts +96 -0
- package/src/primitives/Abi/error/index.ts +11 -0
- package/src/primitives/Abi/error/standards/index.ts +23 -0
- package/src/primitives/Abi/error/wrapped/index.ts +7 -0
- package/src/primitives/Abi/event/index.ts +15 -0
- package/src/primitives/Abi/findError.test.ts +97 -0
- package/src/primitives/Abi/findError.ts +55 -0
- package/src/primitives/Abi/findEvent.test.ts +100 -0
- package/src/primitives/Abi/findEvent.ts +51 -0
- package/src/primitives/Abi/findFunction.test.ts +86 -0
- package/src/primitives/Abi/findFunction.ts +58 -0
- package/src/primitives/Abi/format.test.ts +112 -0
- package/src/primitives/Abi/format.ts +39 -0
- package/src/primitives/Abi/formatWithArgs.test.ts +105 -0
- package/src/primitives/Abi/formatWithArgs.ts +43 -0
- package/src/primitives/Abi/function/errors.ts +69 -0
- package/src/primitives/Abi/function/index.ts +24 -0
- package/src/primitives/Abi/getErrorSignature.test.ts +78 -0
- package/src/primitives/Abi/getErrorSignature.ts +40 -0
- package/src/primitives/Abi/getEvent.test.ts +98 -0
- package/src/primitives/Abi/getEvent.ts +131 -0
- package/src/primitives/Abi/getEventSignature.test.ts +79 -0
- package/src/primitives/Abi/getEventSignature.ts +40 -0
- package/src/primitives/Abi/getFunction.test.ts +116 -0
- package/src/primitives/Abi/getFunction.ts +121 -0
- package/src/primitives/Abi/getFunctionSignature.test.ts +88 -0
- package/src/primitives/Abi/getFunctionSignature.ts +40 -0
- package/src/primitives/Abi/getSelector.test.ts +149 -0
- package/src/primitives/Abi/getSelector.ts +59 -0
- package/src/primitives/Abi/index.ts +53 -0
- package/src/primitives/Abi/interface/index.ts +11 -0
- package/src/primitives/Abi/parameter/index.ts +5 -0
- package/src/primitives/Abi/parse.test.ts +97 -0
- package/src/primitives/Abi/parse.ts +61 -0
- package/src/primitives/Abi/parseItem.test.ts +144 -0
- package/src/primitives/Abi/parseItem.ts +76 -0
- package/src/primitives/Abi/wasm/index.ts +67 -0
- package/src/primitives/AccessList/Rpc.ts +128 -0
- package/src/primitives/AccessList/index.ts +32 -0
- package/src/primitives/AccountState/Struct.ts +214 -0
- package/src/primitives/AccountState/index.ts +60 -0
- package/src/primitives/Address/Address.test.ts +366 -0
- package/src/primitives/Address/AddressSchema.ts +21 -0
- package/src/primitives/Address/Bytes.ts +55 -0
- package/src/primitives/Address/Checksummed.ts +93 -0
- package/src/primitives/Address/Hex.ts +56 -0
- package/src/primitives/Address/clone.ts +26 -0
- package/src/primitives/Address/compare.ts +29 -0
- package/src/primitives/Address/equals.ts +29 -0
- package/src/primitives/Address/greaterThan.ts +29 -0
- package/src/primitives/Address/index.ts +89 -0
- package/src/primitives/Address/isValid.ts +26 -0
- package/src/primitives/Address/isValidChecksum.ts +26 -0
- package/src/primitives/Address/isZero.ts +26 -0
- package/src/primitives/Address/lessThan.ts +29 -0
- package/src/primitives/Address/toAbiEncoded.ts +28 -0
- package/src/primitives/Address/toBytes.ts +26 -0
- package/src/primitives/Address/toLowercase.ts +28 -0
- package/src/primitives/Address/toShortHex.ts +27 -0
- package/src/primitives/Address/toU256.ts +28 -0
- package/src/primitives/Address/toUppercase.ts +28 -0
- package/src/primitives/Authorization/Rpc.ts +148 -0
- package/src/primitives/Authorization/index.ts +38 -0
- package/src/primitives/Balance/BigInt.ts +48 -0
- package/src/primitives/Balance/Number.ts +46 -0
- package/src/primitives/Balance/String.ts +47 -0
- package/src/primitives/Balance/index.ts +44 -0
- package/src/primitives/Base64/Base64Schema.ts +90 -0
- package/src/primitives/Base64/extensions/index.ts +10 -0
- package/src/primitives/Base64/index.ts +28 -0
- package/src/primitives/BaseFeePerGas/BigInt.ts +49 -0
- package/src/primitives/BaseFeePerGas/Gwei.ts +63 -0
- package/src/primitives/BaseFeePerGas/index.ts +47 -0
- package/src/primitives/BaseFeePerGas/toGwei.ts +28 -0
- package/src/primitives/BeaconBlockRoot/Hex.ts +76 -0
- package/src/primitives/BeaconBlockRoot/index.ts +47 -0
- package/src/primitives/BinaryTree/BinaryTreeSchema.ts +34 -0
- package/src/primitives/BinaryTree/get.ts +28 -0
- package/src/primitives/BinaryTree/index.ts +27 -0
- package/src/primitives/BinaryTree/init.ts +23 -0
- package/src/primitives/BinaryTree/rootHash.ts +22 -0
- package/src/primitives/Blob/BlobSchema.ts +87 -0
- package/src/primitives/Blob/index.ts +54 -0
- package/src/primitives/Blob/isValid.ts +22 -0
- package/src/primitives/Blob/toData.ts +23 -0
- package/src/primitives/Block/Block.test.ts +377 -0
- package/src/primitives/Block/BlockSchema.ts +201 -0
- package/src/primitives/Block/Rpc.ts +189 -0
- package/src/primitives/Block/index.ts +55 -0
- package/src/primitives/BlockBody/BlockBody.test.ts +228 -0
- package/src/primitives/BlockBody/BlockBodySchema.ts +85 -0
- package/src/primitives/BlockBody/Rpc.ts +100 -0
- package/src/primitives/BlockBody/index.ts +52 -0
- package/src/primitives/BlockFilter/BlockFilterSchema.ts +39 -0
- package/src/primitives/BlockFilter/index.ts +20 -0
- package/src/primitives/BlockHash/BlockHashTypeSchema.ts +21 -0
- package/src/primitives/BlockHash/Bytes.ts +53 -0
- package/src/primitives/BlockHash/Hex.ts +56 -0
- package/src/primitives/BlockHash/index.ts +55 -0
- package/src/primitives/BlockHeader/BlockHeaderSchema.ts +84 -0
- package/src/primitives/BlockHeader/Rpc.ts +95 -0
- package/src/primitives/BlockHeader/calculateHash.ts +24 -0
- package/src/primitives/BlockHeader/index.ts +61 -0
- package/src/primitives/BlockNumber/BigInt.ts +51 -0
- package/src/primitives/BlockNumber/BlockNumber.test.ts +122 -0
- package/src/primitives/BlockNumber/BlockNumberTypeSchema.ts +21 -0
- package/src/primitives/BlockNumber/Hex.ts +56 -0
- package/src/primitives/BlockNumber/Number.ts +66 -0
- package/src/primitives/BlockNumber/index.ts +60 -0
- package/src/primitives/BloomFilter/BloomFilterSchema.ts +96 -0
- package/src/primitives/BloomFilter/extensions/index.ts +12 -0
- package/src/primitives/BloomFilter/index.ts +64 -0
- package/src/primitives/Brand/Brand.test.ts +192 -0
- package/src/primitives/Brand/index.ts +292 -0
- package/src/primitives/BuilderBid/BuilderBidSchema.ts +116 -0
- package/src/primitives/BuilderBid/index.ts +38 -0
- package/src/primitives/Bundle/BundleSchema.ts +176 -0
- package/src/primitives/Bundle/index.ts +43 -0
- package/src/primitives/BundleHash/Hex.ts +68 -0
- package/src/primitives/BundleHash/index.ts +30 -0
- package/src/primitives/Bundler/BundlerSchema.ts +77 -0
- package/src/primitives/Bundler/index.ts +35 -0
- package/src/primitives/Bytecode/Bytecode.test.ts +49 -0
- package/src/primitives/Bytecode/BytecodeSchema.ts +48 -0
- package/src/primitives/Bytecode/Bytes.ts +60 -0
- package/src/primitives/Bytecode/Hex.ts +61 -0
- package/src/primitives/Bytecode/index.ts +45 -0
- package/src/primitives/Bytes/Bytes.test.ts +402 -0
- package/src/primitives/Bytes/Bytes1/index.ts +18 -0
- package/src/primitives/Bytes/Bytes16/index.ts +23 -0
- package/src/primitives/Bytes/Bytes2/index.ts +17 -0
- package/src/primitives/Bytes/Bytes3/index.ts +17 -0
- package/src/primitives/Bytes/Bytes32/index.ts +28 -0
- package/src/primitives/Bytes/Bytes4/index.ts +17 -0
- package/src/primitives/Bytes/Bytes5/index.ts +17 -0
- package/src/primitives/Bytes/Bytes6/index.ts +17 -0
- package/src/primitives/Bytes/Bytes64/index.ts +23 -0
- package/src/primitives/Bytes/Bytes7/index.ts +17 -0
- package/src/primitives/Bytes/Bytes8/index.ts +17 -0
- package/src/primitives/Bytes/Hex.ts +59 -0
- package/src/primitives/Bytes/concat.ts +23 -0
- package/src/primitives/Bytes/equals.ts +26 -0
- package/src/primitives/Bytes/extensions/index.ts +6 -0
- package/src/primitives/Bytes/index.ts +79 -0
- package/src/primitives/Bytes/isBytes.ts +23 -0
- package/src/primitives/Bytes/random.ts +22 -0
- package/src/primitives/Bytes/size.ts +22 -0
- package/src/primitives/Bytes/toString.ts +24 -0
- package/src/primitives/Bytes32/Bytes.ts +57 -0
- package/src/primitives/Bytes32/Bytes32.test.ts +62 -0
- package/src/primitives/Bytes32/Hex.ts +57 -0
- package/src/primitives/Bytes32/index.ts +80 -0
- package/src/primitives/CallData/CallData.test.ts +35 -0
- package/src/primitives/CallData/Hex.ts +74 -0
- package/src/primitives/CallData/empty.ts +24 -0
- package/src/primitives/CallData/index.ts +50 -0
- package/src/primitives/CallTrace/CallTraceSchema.ts +38 -0
- package/src/primitives/CallTrace/flatten.ts +21 -0
- package/src/primitives/CallTrace/getCalls.ts +20 -0
- package/src/primitives/CallTrace/hasError.ts +22 -0
- package/src/primitives/CallTrace/index.ts +13 -0
- package/src/primitives/Chain/ChainSchema.ts +231 -0
- package/src/primitives/Chain/index.ts +57 -0
- package/src/primitives/ChainHead/ChainHeadSchema.ts +130 -0
- package/src/primitives/ChainHead/index.ts +53 -0
- package/src/primitives/ChainId/BigInt.ts +79 -0
- package/src/primitives/ChainId/Hex.ts +83 -0
- package/src/primitives/ChainId/Number.ts +78 -0
- package/src/primitives/ChainId/index.ts +56 -0
- package/src/primitives/CompilerVersion/CompilerVersionSchema.ts +42 -0
- package/src/primitives/CompilerVersion/index.ts +10 -0
- package/src/primitives/ContractCode/Bytes.ts +63 -0
- package/src/primitives/ContractCode/ContractCode.test.ts +45 -0
- package/src/primitives/ContractCode/Hex.ts +65 -0
- package/src/primitives/ContractCode/index.ts +51 -0
- package/src/primitives/ContractResult/ContractResultSchema.ts +98 -0
- package/src/primitives/ContractResult/index.ts +13 -0
- package/src/primitives/ContractSignature/ContractSignature.test.ts +111 -0
- package/src/primitives/ContractSignature/Struct.ts +67 -0
- package/src/primitives/ContractSignature/index.ts +68 -0
- package/src/primitives/ContractSignature/verifySignature.ts +254 -0
- package/src/primitives/DecodedData/DecodedDataSchema.ts +72 -0
- package/src/primitives/DecodedData/index.ts +11 -0
- package/src/primitives/Denomination/EtherSchema.ts +87 -0
- package/src/primitives/Denomination/GweiSchema.ts +86 -0
- package/src/primitives/Denomination/WeiSchema.ts +87 -0
- package/src/primitives/Denomination/index.ts +49 -0
- package/src/primitives/Domain/Domain.test.ts +80 -0
- package/src/primitives/Domain/Struct.ts +165 -0
- package/src/primitives/Domain/index.ts +62 -0
- package/src/primitives/DomainSeparator/DomainSeparator.test.ts +67 -0
- package/src/primitives/DomainSeparator/Hex.ts +105 -0
- package/src/primitives/DomainSeparator/index.ts +50 -0
- package/src/primitives/EffectiveGasPrice/BigInt.ts +47 -0
- package/src/primitives/EffectiveGasPrice/Gwei.ts +54 -0
- package/src/primitives/EffectiveGasPrice/calculate.ts +39 -0
- package/src/primitives/EffectiveGasPrice/compare.ts +31 -0
- package/src/primitives/EffectiveGasPrice/equals.ts +31 -0
- package/src/primitives/EffectiveGasPrice/index.ts +59 -0
- package/src/primitives/EffectiveGasPrice/toGwei.ts +28 -0
- package/src/primitives/EncodedData/EncodedDataSchema.ts +66 -0
- package/src/primitives/EncodedData/index.ts +11 -0
- package/src/primitives/Ens/String.ts +45 -0
- package/src/primitives/Ens/index.ts +18 -0
- package/src/primitives/EntryPoint/EntryPointSchema.ts +113 -0
- package/src/primitives/EntryPoint/index.ts +47 -0
- package/src/primitives/Epoch/BigInt.ts +46 -0
- package/src/primitives/Epoch/index.ts +18 -0
- package/src/primitives/ErrorSignature/ErrorSignature.test.ts +43 -0
- package/src/primitives/ErrorSignature/String.ts +102 -0
- package/src/primitives/ErrorSignature/index.ts +55 -0
- package/src/primitives/EventLog/EventLog.test.ts +77 -0
- package/src/primitives/EventLog/Rpc.ts +159 -0
- package/src/primitives/EventLog/extensions/index.ts +17 -0
- package/src/primitives/EventLog/extensions/utils.ts +18 -0
- package/src/primitives/EventLog/index.ts +23 -0
- package/src/primitives/EventSignature/EventSignature.test.ts +54 -0
- package/src/primitives/EventSignature/String.ts +102 -0
- package/src/primitives/EventSignature/index.ts +53 -0
- package/src/primitives/FeeMarket/FeeMarketSchema.ts +160 -0
- package/src/primitives/FeeMarket/index.ts +36 -0
- package/src/primitives/FeeOracle/Struct.ts +152 -0
- package/src/primitives/FeeOracle/index.ts +29 -0
- package/src/primitives/FilterId/Hex.ts +97 -0
- package/src/primitives/FilterId/index.ts +57 -0
- package/src/primitives/ForkId/ForkIdSchema.ts +66 -0
- package/src/primitives/ForkId/index.ts +34 -0
- package/src/primitives/ForwardRequest/ForwardRequestSchema.ts +109 -0
- package/src/primitives/ForwardRequest/index.ts +26 -0
- package/src/primitives/FunctionSignature/FunctionSignature.test.ts +34 -0
- package/src/primitives/FunctionSignature/String.ts +77 -0
- package/src/primitives/FunctionSignature/index.ts +41 -0
- package/src/primitives/Gas/BigInt.ts +66 -0
- package/src/primitives/Gas/Hex.ts +66 -0
- package/src/primitives/Gas/Number.ts +74 -0
- package/src/primitives/Gas/index.ts +51 -0
- package/src/primitives/GasConstants/GasConstantsSchema.ts +139 -0
- package/src/primitives/GasConstants/index.ts +33 -0
- package/src/primitives/GasCosts/GasCostsSchema.ts +113 -0
- package/src/primitives/GasCosts/index.ts +24 -0
- package/src/primitives/GasEstimate/BigInt.ts +47 -0
- package/src/primitives/GasEstimate/Number.ts +47 -0
- package/src/primitives/GasEstimate/index.ts +50 -0
- package/src/primitives/GasEstimate/toGasLimit.ts +34 -0
- package/src/primitives/GasEstimate/withBuffer.ts +38 -0
- package/src/primitives/GasPrice/BigInt.ts +67 -0
- package/src/primitives/GasPrice/Gwei.ts +70 -0
- package/src/primitives/GasPrice/Hex.ts +67 -0
- package/src/primitives/GasPrice/Number.ts +71 -0
- package/src/primitives/GasPrice/index.ts +57 -0
- package/src/primitives/GasRefund/BigInt.ts +47 -0
- package/src/primitives/GasRefund/Number.ts +46 -0
- package/src/primitives/GasRefund/cappedRefund.ts +38 -0
- package/src/primitives/GasRefund/index.ts +49 -0
- package/src/primitives/GasUsed/BigInt.ts +47 -0
- package/src/primitives/GasUsed/Number.ts +46 -0
- package/src/primitives/GasUsed/calculateCost.ts +33 -0
- package/src/primitives/GasUsed/index.ts +48 -0
- package/src/primitives/Hardfork/HardforkSchema.ts +47 -0
- package/src/primitives/Hardfork/index.ts +39 -0
- package/src/primitives/Hash/Bytes.ts +71 -0
- package/src/primitives/Hash/Hash.test.ts +630 -0
- package/src/primitives/Hash/Hex.ts +72 -0
- package/src/primitives/Hash/assert.ts +46 -0
- package/src/primitives/Hash/clone.ts +32 -0
- package/src/primitives/Hash/concat.ts +32 -0
- package/src/primitives/Hash/equals.ts +35 -0
- package/src/primitives/Hash/extensions/index.ts +21 -0
- package/src/primitives/Hash/format.ts +38 -0
- package/src/primitives/Hash/index.ts +65 -0
- package/src/primitives/Hash/isValidHex.ts +30 -0
- package/src/primitives/Hash/isZero.ts +32 -0
- package/src/primitives/Hash/keccak256.ts +54 -0
- package/src/primitives/Hash/merkleRoot.ts +32 -0
- package/src/primitives/Hash/random.ts +36 -0
- package/src/primitives/Hash/slice.ts +38 -0
- package/src/primitives/Hash/toBytes.ts +43 -0
- package/src/primitives/Hash/toString.ts +32 -0
- package/src/primitives/Hex/Bytes.ts +67 -0
- package/src/primitives/Hex/Hex.test.ts +478 -0
- package/src/primitives/Hex/String.ts +64 -0
- package/src/primitives/Hex/clone.ts +31 -0
- package/src/primitives/Hex/equals.ts +32 -0
- package/src/primitives/Hex/index.ts +82 -0
- package/src/primitives/Hex/isHex.ts +32 -0
- package/src/primitives/Hex/isSized.ts +34 -0
- package/src/primitives/Hex/random.ts +31 -0
- package/src/primitives/Hex/zero.ts +30 -0
- package/src/primitives/InitCode/Bytes.ts +62 -0
- package/src/primitives/InitCode/Hex.ts +64 -0
- package/src/primitives/InitCode/InitCode.test.ts +46 -0
- package/src/primitives/InitCode/index.ts +50 -0
- package/src/primitives/Int128/BigInt.ts +52 -0
- package/src/primitives/Int128/Int128.test.ts +374 -0
- package/src/primitives/Int128/Int128Schema.ts +13 -0
- package/src/primitives/Int128/Number.ts +53 -0
- package/src/primitives/Int128/String.ts +52 -0
- package/src/primitives/Int128/abs.ts +10 -0
- package/src/primitives/Int128/add.ts +11 -0
- package/src/primitives/Int128/compare.ts +13 -0
- package/src/primitives/Int128/constants.ts +13 -0
- package/src/primitives/Int128/div.ts +11 -0
- package/src/primitives/Int128/equals.ts +11 -0
- package/src/primitives/Int128/index.ts +83 -0
- package/src/primitives/Int128/isNegative.ts +11 -0
- package/src/primitives/Int128/isZero.ts +11 -0
- package/src/primitives/Int128/mul.ts +11 -0
- package/src/primitives/Int128/negate.ts +11 -0
- package/src/primitives/Int128/sub.ts +11 -0
- package/src/primitives/Int16/BigInt.ts +54 -0
- package/src/primitives/Int16/Int16.test.ts +285 -0
- package/src/primitives/Int16/Int16Schema.ts +13 -0
- package/src/primitives/Int16/Number.ts +52 -0
- package/src/primitives/Int16/String.ts +52 -0
- package/src/primitives/Int16/abs.ts +10 -0
- package/src/primitives/Int16/add.ts +11 -0
- package/src/primitives/Int16/compare.ts +13 -0
- package/src/primitives/Int16/constants.ts +10 -0
- package/src/primitives/Int16/div.ts +11 -0
- package/src/primitives/Int16/equals.ts +11 -0
- package/src/primitives/Int16/index.ts +80 -0
- package/src/primitives/Int16/isNegative.ts +11 -0
- package/src/primitives/Int16/isZero.ts +10 -0
- package/src/primitives/Int16/mul.ts +11 -0
- package/src/primitives/Int16/negate.ts +11 -0
- package/src/primitives/Int16/sub.ts +11 -0
- package/src/primitives/Int256/BigInt.ts +53 -0
- package/src/primitives/Int256/Int256.test.ts +499 -0
- package/src/primitives/Int256/Int256Schema.ts +14 -0
- package/src/primitives/Int256/Number.ts +53 -0
- package/src/primitives/Int256/String.ts +53 -0
- package/src/primitives/Int256/abs.ts +10 -0
- package/src/primitives/Int256/add.ts +11 -0
- package/src/primitives/Int256/compare.ts +13 -0
- package/src/primitives/Int256/constants.ts +13 -0
- package/src/primitives/Int256/div.ts +11 -0
- package/src/primitives/Int256/equals.ts +11 -0
- package/src/primitives/Int256/index.ts +87 -0
- package/src/primitives/Int256/isNegative.ts +11 -0
- package/src/primitives/Int256/isZero.ts +11 -0
- package/src/primitives/Int256/mul.ts +11 -0
- package/src/primitives/Int256/negate.ts +11 -0
- package/src/primitives/Int256/sub.ts +11 -0
- package/src/primitives/Int32/BigInt.ts +52 -0
- package/src/primitives/Int32/Int32.test.ts +267 -0
- package/src/primitives/Int32/Int32Schema.ts +13 -0
- package/src/primitives/Int32/Number.ts +52 -0
- package/src/primitives/Int32/String.ts +52 -0
- package/src/primitives/Int32/abs.ts +10 -0
- package/src/primitives/Int32/add.ts +11 -0
- package/src/primitives/Int32/compare.ts +13 -0
- package/src/primitives/Int32/constants.ts +10 -0
- package/src/primitives/Int32/div.ts +11 -0
- package/src/primitives/Int32/equals.ts +11 -0
- package/src/primitives/Int32/index.ts +80 -0
- package/src/primitives/Int32/isNegative.ts +11 -0
- package/src/primitives/Int32/isZero.ts +10 -0
- package/src/primitives/Int32/mul.ts +11 -0
- package/src/primitives/Int32/negate.ts +11 -0
- package/src/primitives/Int32/sub.ts +11 -0
- package/src/primitives/Int64/BigInt.ts +52 -0
- package/src/primitives/Int64/Int64.test.ts +306 -0
- package/src/primitives/Int64/Int64Schema.ts +13 -0
- package/src/primitives/Int64/Number.ts +53 -0
- package/src/primitives/Int64/String.ts +52 -0
- package/src/primitives/Int64/abs.ts +10 -0
- package/src/primitives/Int64/add.ts +11 -0
- package/src/primitives/Int64/compare.ts +13 -0
- package/src/primitives/Int64/constants.ts +10 -0
- package/src/primitives/Int64/div.ts +11 -0
- package/src/primitives/Int64/equals.ts +11 -0
- package/src/primitives/Int64/index.ts +80 -0
- package/src/primitives/Int64/isNegative.ts +11 -0
- package/src/primitives/Int64/isZero.ts +10 -0
- package/src/primitives/Int64/mul.ts +11 -0
- package/src/primitives/Int64/negate.ts +11 -0
- package/src/primitives/Int64/sub.ts +11 -0
- package/src/primitives/Int8/BigInt.ts +60 -0
- package/src/primitives/Int8/Int8.test.ts +477 -0
- package/src/primitives/Int8/Int8Schema.ts +13 -0
- package/src/primitives/Int8/Number.ts +58 -0
- package/src/primitives/Int8/String.ts +58 -0
- package/src/primitives/Int8/abs.ts +10 -0
- package/src/primitives/Int8/add.ts +11 -0
- package/src/primitives/Int8/compare.ts +13 -0
- package/src/primitives/Int8/constants.ts +10 -0
- package/src/primitives/Int8/div.ts +11 -0
- package/src/primitives/Int8/equals.ts +11 -0
- package/src/primitives/Int8/index.ts +80 -0
- package/src/primitives/Int8/isNegative.ts +11 -0
- package/src/primitives/Int8/isZero.ts +10 -0
- package/src/primitives/Int8/mul.ts +11 -0
- package/src/primitives/Int8/negate.ts +10 -0
- package/src/primitives/Int8/sub.ts +11 -0
- package/src/primitives/License/String.ts +57 -0
- package/src/primitives/License/index.ts +22 -0
- package/src/primitives/LogFilter/LogFilter.test.ts +81 -0
- package/src/primitives/LogFilter/Rpc.ts +209 -0
- package/src/primitives/LogFilter/index.ts +36 -0
- package/src/primitives/LogIndex/Number.ts +93 -0
- package/src/primitives/LogIndex/index.ts +38 -0
- package/src/primitives/MaxFeePerGas/BigInt.ts +49 -0
- package/src/primitives/MaxFeePerGas/Gwei.ts +63 -0
- package/src/primitives/MaxFeePerGas/index.ts +47 -0
- package/src/primitives/MaxFeePerGas/toGwei.ts +28 -0
- package/src/primitives/MaxPriorityFeePerGas/BigInt.ts +48 -0
- package/src/primitives/MaxPriorityFeePerGas/Gwei.ts +63 -0
- package/src/primitives/MaxPriorityFeePerGas/index.ts +51 -0
- package/src/primitives/MaxPriorityFeePerGas/toGwei.ts +28 -0
- package/src/primitives/MemoryDump/MemoryDumpSchema.ts +70 -0
- package/src/primitives/MemoryDump/index.ts +22 -0
- package/src/primitives/MerkleTree/MerkleTreeSchema.ts +52 -0
- package/src/primitives/MerkleTree/index.ts +39 -0
- package/src/primitives/Metadata/MetadataSchema.ts +57 -0
- package/src/primitives/Metadata/index.ts +24 -0
- package/src/primitives/MultiTokenId/MultiTokenIdSchema.ts +48 -0
- package/src/primitives/MultiTokenId/index.ts +23 -0
- package/src/primitives/NetworkId/BigInt.ts +79 -0
- package/src/primitives/NetworkId/Hex.ts +86 -0
- package/src/primitives/NetworkId/Number.ts +104 -0
- package/src/primitives/NetworkId/index.ts +60 -0
- package/src/primitives/NodeInfo/NodeInfoSchema.ts +70 -0
- package/src/primitives/NodeInfo/index.ts +39 -0
- package/src/primitives/Nonce/BigInt.ts +66 -0
- package/src/primitives/Nonce/Hex.ts +66 -0
- package/src/primitives/Nonce/Number.ts +74 -0
- package/src/primitives/Nonce/index.ts +56 -0
- package/src/primitives/OpStep/OpStepSchema.ts +118 -0
- package/src/primitives/OpStep/index.ts +29 -0
- package/src/primitives/Opcode/OpcodeSchema.ts +55 -0
- package/src/primitives/Opcode/index.ts +24 -0
- package/src/primitives/PackedUserOperation/PackedUserOperationSchema.ts +203 -0
- package/src/primitives/PackedUserOperation/hash.test.ts +103 -0
- package/src/primitives/PackedUserOperation/hash.ts +128 -0
- package/src/primitives/PackedUserOperation/index.ts +80 -0
- package/src/primitives/PackedUserOperation/unpack.ts +101 -0
- package/src/primitives/Paymaster/PaymasterSchema.ts +194 -0
- package/src/primitives/Paymaster/index.ts +21 -0
- package/src/primitives/PeerId/PeerIdSchema.ts +47 -0
- package/src/primitives/PeerId/index.ts +31 -0
- package/src/primitives/PeerInfo/PeerInfoSchema.ts +61 -0
- package/src/primitives/PeerInfo/index.ts +39 -0
- package/src/primitives/PendingTransactionFilter/Struct.ts +56 -0
- package/src/primitives/PendingTransactionFilter/index.ts +25 -0
- package/src/primitives/Permit/Permit.test.ts +32 -0
- package/src/primitives/Permit/Struct.ts +77 -0
- package/src/primitives/Permit/index.ts +58 -0
- package/src/primitives/PrivateKey/Bytes.ts +59 -0
- package/src/primitives/PrivateKey/Hex.ts +64 -0
- package/src/primitives/PrivateKey/PrivateKey.test.ts +410 -0
- package/src/primitives/PrivateKey/index.ts +62 -0
- package/src/primitives/PrivateKey/isValid.ts +35 -0
- package/src/primitives/PrivateKey/random.ts +27 -0
- package/src/primitives/Proof/Struct.ts +32 -0
- package/src/primitives/Proof/equals.ts +10 -0
- package/src/primitives/Proof/index.ts +37 -0
- package/src/primitives/Proof/verify.ts +11 -0
- package/src/primitives/ProtocolVersion/ProtocolVersionSchema.ts +55 -0
- package/src/primitives/ProtocolVersion/index.ts +32 -0
- package/src/primitives/Proxy/Struct.ts +49 -0
- package/src/primitives/Proxy/index.ts +11 -0
- package/src/primitives/PublicKey/Bytes.ts +68 -0
- package/src/primitives/PublicKey/Compressed.ts +71 -0
- package/src/primitives/PublicKey/Hex.ts +57 -0
- package/src/primitives/PublicKey/PublicKey.test.ts +443 -0
- package/src/primitives/PublicKey/equals.ts +30 -0
- package/src/primitives/PublicKey/index.ts +70 -0
- package/src/primitives/PublicKey/isCompressed.ts +27 -0
- package/src/primitives/PublicKey/isValid.ts +31 -0
- package/src/primitives/PublicKey/toAddress.ts +29 -0
- package/src/primitives/PublicKey/toBytes.ts +27 -0
- package/src/primitives/PublicKey/verify.ts +36 -0
- package/src/primitives/Receipt/ReceiptSchema.test.ts +94 -0
- package/src/primitives/Receipt/ReceiptSchema.ts +492 -0
- package/src/primitives/Receipt/index.ts +65 -0
- package/src/primitives/RelayData/RelayDataSchema.ts +106 -0
- package/src/primitives/RelayData/index.ts +10 -0
- package/src/primitives/ReturnData/Bytes.ts +60 -0
- package/src/primitives/ReturnData/Hex.ts +61 -0
- package/src/primitives/ReturnData/ReturnData.test.ts +43 -0
- package/src/primitives/ReturnData/ReturnDataSchema.ts +50 -0
- package/src/primitives/ReturnData/index.ts +45 -0
- package/src/primitives/RevertReason/Bytes.ts +81 -0
- package/src/primitives/RevertReason/Hex.ts +85 -0
- package/src/primitives/RevertReason/RevertReason.test.ts +42 -0
- package/src/primitives/RevertReason/RevertReasonSchema.ts +108 -0
- package/src/primitives/RevertReason/index.ts +67 -0
- package/src/primitives/RevertReason/toString.ts +28 -0
- package/src/primitives/Rlp/Rlp.test.ts +991 -0
- package/src/primitives/Rlp/RlpSchema.ts +50 -0
- package/src/primitives/Rlp/decode.ts +57 -0
- package/src/primitives/Rlp/decodeArray.ts +48 -0
- package/src/primitives/Rlp/encode.ts +58 -0
- package/src/primitives/Rlp/encodeArray.ts +32 -0
- package/src/primitives/Rlp/encodeBytes.ts +27 -0
- package/src/primitives/Rlp/encodeList.ts +32 -0
- package/src/primitives/Rlp/flatten.ts +38 -0
- package/src/primitives/Rlp/index.ts +74 -0
- package/src/primitives/Rlp/validate.ts +25 -0
- package/src/primitives/RuntimeCode/Bytes.ts +60 -0
- package/src/primitives/RuntimeCode/Hex.ts +61 -0
- package/src/primitives/RuntimeCode/RuntimeCode.test.ts +43 -0
- package/src/primitives/RuntimeCode/RuntimeCodeSchema.ts +49 -0
- package/src/primitives/RuntimeCode/index.ts +46 -0
- package/src/primitives/Selector/Bytes.ts +64 -0
- package/src/primitives/Selector/Hex.ts +69 -0
- package/src/primitives/Selector/Selector.test.ts +258 -0
- package/src/primitives/Selector/SelectorSchema.ts +95 -0
- package/src/primitives/Selector/Signature.ts +65 -0
- package/src/primitives/Selector/equals.ts +33 -0
- package/src/primitives/Selector/index.ts +55 -0
- package/src/primitives/Signature/Bytes.ts +57 -0
- package/src/primitives/Signature/Compact.ts +59 -0
- package/src/primitives/Signature/DER.ts +65 -0
- package/src/primitives/Signature/Hex.ts +56 -0
- package/src/primitives/Signature/Rpc.ts +77 -0
- package/src/primitives/Signature/Signature.test.ts +496 -0
- package/src/primitives/Signature/SignatureSchema.ts +30 -0
- package/src/primitives/Signature/Tuple.ts +75 -0
- package/src/primitives/Signature/equals.ts +25 -0
- package/src/primitives/Signature/getAlgorithm.ts +29 -0
- package/src/primitives/Signature/index.ts +93 -0
- package/src/primitives/Signature/is.ts +26 -0
- package/src/primitives/Signature/isCanonical.ts +28 -0
- package/src/primitives/Signature/isSignature.ts +26 -0
- package/src/primitives/Signature/normalize.ts +24 -0
- package/src/primitives/Signature/toBytes.ts +24 -0
- package/src/primitives/Signature/toCompact.ts +26 -0
- package/src/primitives/SignedData/SignedDataSchema.ts +61 -0
- package/src/primitives/SignedData/index.ts +26 -0
- package/src/primitives/Siwe/Siwe.test.ts +42 -0
- package/src/primitives/Siwe/String.ts +136 -0
- package/src/primitives/Siwe/index.ts +55 -0
- package/src/primitives/Slot/SlotSchema.ts +51 -0
- package/src/primitives/Slot/index.ts +20 -0
- package/src/primitives/SourceMap/Struct.ts +94 -0
- package/src/primitives/SourceMap/index.ts +12 -0
- package/src/primitives/Ssz/SszSchema.ts +49 -0
- package/src/primitives/Ssz/index.ts +29 -0
- package/src/primitives/State/StateSchema.ts +112 -0
- package/src/primitives/State/index.ts +22 -0
- package/src/primitives/StateDiff/StateDiffSchema.ts +251 -0
- package/src/primitives/StateDiff/index.ts +28 -0
- package/src/primitives/StateProof/StateProofSchema.ts +109 -0
- package/src/primitives/StateProof/index.ts +66 -0
- package/src/primitives/StateRoot/StateRootSchema.ts +109 -0
- package/src/primitives/StateRoot/index.ts +78 -0
- package/src/primitives/StealthAddress/Struct.ts +48 -0
- package/src/primitives/StealthAddress/index.ts +6 -0
- package/src/primitives/Storage/StorageSchema.ts +100 -0
- package/src/primitives/Storage/index.ts +53 -0
- package/src/primitives/StorageDiff/StorageDiffSchema.ts +111 -0
- package/src/primitives/StorageDiff/index.ts +59 -0
- package/src/primitives/StorageProof/Struct.ts +93 -0
- package/src/primitives/StorageProof/equals.ts +72 -0
- package/src/primitives/StorageProof/index.ts +67 -0
- package/src/primitives/StorageValue/Hex.ts +109 -0
- package/src/primitives/StorageValue/index.ts +92 -0
- package/src/primitives/StructLog/Struct.ts +101 -0
- package/src/primitives/StructLog/index.ts +28 -0
- package/src/primitives/SyncStatus/SyncStatusSchema.ts +87 -0
- package/src/primitives/SyncStatus/index.ts +36 -0
- package/src/primitives/TokenBalance/Struct.ts +48 -0
- package/src/primitives/TokenBalance/index.ts +23 -0
- package/src/primitives/TokenId/BigInt.ts +50 -0
- package/src/primitives/TokenId/index.ts +36 -0
- package/src/primitives/TopicFilter/Rpc.ts +142 -0
- package/src/primitives/TopicFilter/TopicFilter.test.ts +22 -0
- package/src/primitives/TopicFilter/index.ts +29 -0
- package/src/primitives/TraceConfig/TraceConfigSchema.ts +104 -0
- package/src/primitives/TraceConfig/index.ts +22 -0
- package/src/primitives/TraceResult/TraceResultSchema.ts +96 -0
- package/src/primitives/TraceResult/index.ts +23 -0
- package/src/primitives/Transaction/Authorization/index.ts +5 -0
- package/src/primitives/Transaction/EIP1559/index.ts +17 -0
- package/src/primitives/Transaction/EIP2930/index.ts +16 -0
- package/src/primitives/Transaction/EIP4844/index.ts +18 -0
- package/src/primitives/Transaction/EIP7702/index.ts +17 -0
- package/src/primitives/Transaction/Legacy/index.ts +17 -0
- package/src/primitives/Transaction/Rpc.ts +176 -0
- package/src/primitives/Transaction/Serialized.ts +98 -0
- package/src/primitives/Transaction/Transaction.test.ts +1562 -0
- package/src/primitives/Transaction/TransactionSchema.ts +515 -0
- package/src/primitives/Transaction/index.ts +289 -0
- package/src/primitives/TransactionHash/Bytes.ts +56 -0
- package/src/primitives/TransactionHash/Hex.ts +62 -0
- package/src/primitives/TransactionHash/index.ts +58 -0
- package/src/primitives/TransactionIndex/Number.ts +59 -0
- package/src/primitives/TransactionIndex/index.ts +53 -0
- package/src/primitives/TransactionStatus/TransactionStatusSchema.ts +57 -0
- package/src/primitives/TransactionStatus/index.ts +9 -0
- package/src/primitives/TransactionUrl/TransactionUrlSchema.ts +54 -0
- package/src/primitives/TransactionUrl/index.ts +21 -0
- package/src/primitives/TypedData/Struct.ts +194 -0
- package/src/primitives/TypedData/TypedData.test.ts +63 -0
- package/src/primitives/TypedData/index.ts +54 -0
- package/src/primitives/U256/index.ts +71 -0
- package/src/primitives/Uint/BigInt.ts +60 -0
- package/src/primitives/Uint/Bytes.ts +62 -0
- package/src/primitives/Uint/Hex.ts +61 -0
- package/src/primitives/Uint/Number.ts +61 -0
- package/src/primitives/Uint/String.ts +57 -0
- package/src/primitives/Uint/Uint.test.ts +838 -0
- package/src/primitives/Uint/bitLength.ts +22 -0
- package/src/primitives/Uint/bitwiseAnd.ts +24 -0
- package/src/primitives/Uint/bitwiseNot.ts +23 -0
- package/src/primitives/Uint/bitwiseOr.ts +24 -0
- package/src/primitives/Uint/bitwiseXor.ts +24 -0
- package/src/primitives/Uint/clone.ts +22 -0
- package/src/primitives/Uint/equals.ts +24 -0
- package/src/primitives/Uint/gcd.ts +24 -0
- package/src/primitives/Uint/greaterThan.ts +24 -0
- package/src/primitives/Uint/greaterThanOrEqual.ts +24 -0
- package/src/primitives/Uint/index.ts +85 -0
- package/src/primitives/Uint/isPowerOf2.ts +23 -0
- package/src/primitives/Uint/isZero.ts +22 -0
- package/src/primitives/Uint/lcm.ts +24 -0
- package/src/primitives/Uint/leadingZeros.ts +24 -0
- package/src/primitives/Uint/lessThan.ts +24 -0
- package/src/primitives/Uint/lessThanOrEqual.ts +24 -0
- package/src/primitives/Uint/max.ts +24 -0
- package/src/primitives/Uint/maximum.ts +27 -0
- package/src/primitives/Uint/min.ts +24 -0
- package/src/primitives/Uint/minimum.ts +27 -0
- package/src/primitives/Uint/minus.ts +27 -0
- package/src/primitives/Uint/notEquals.ts +24 -0
- package/src/primitives/Uint/plus.ts +27 -0
- package/src/primitives/Uint/popCount.ts +24 -0
- package/src/primitives/Uint/product.ts +24 -0
- package/src/primitives/Uint/shiftLeft.ts +24 -0
- package/src/primitives/Uint/shiftRight.ts +24 -0
- package/src/primitives/Uint/sum.ts +24 -0
- package/src/primitives/Uint/times.ts +27 -0
- package/src/primitives/Uint/toAbiEncoded.ts +24 -0
- package/src/primitives/Uint/toBigInt.ts +25 -0
- package/src/primitives/Uint/toBytes.ts +25 -0
- package/src/primitives/Uint/toNumber.ts +28 -0
- package/src/primitives/Uint/toPower.ts +29 -0
- package/src/primitives/Uint/toString.ts +31 -0
- package/src/primitives/Uint128/BigInt.ts +54 -0
- package/src/primitives/Uint128/Bytes.ts +56 -0
- package/src/primitives/Uint128/Hex.ts +55 -0
- package/src/primitives/Uint128/Number.ts +59 -0
- package/src/primitives/Uint128/String.ts +55 -0
- package/src/primitives/Uint128/Uint128Schema.ts +119 -0
- package/src/primitives/Uint128/index.ts +71 -0
- package/src/primitives/Uint16/BigInt.ts +57 -0
- package/src/primitives/Uint16/Bytes.ts +55 -0
- package/src/primitives/Uint16/Hex.ts +55 -0
- package/src/primitives/Uint16/Number.ts +55 -0
- package/src/primitives/Uint16/String.ts +55 -0
- package/src/primitives/Uint16/Uint16.test.ts +313 -0
- package/src/primitives/Uint16/Uint16Schema.ts +117 -0
- package/src/primitives/Uint16/index.ts +70 -0
- package/src/primitives/Uint32/BigInt.ts +55 -0
- package/src/primitives/Uint32/Bytes.ts +55 -0
- package/src/primitives/Uint32/Hex.ts +55 -0
- package/src/primitives/Uint32/Number.ts +55 -0
- package/src/primitives/Uint32/String.ts +55 -0
- package/src/primitives/Uint32/Uint32Schema.ts +122 -0
- package/src/primitives/Uint32/index.ts +70 -0
- package/src/primitives/Uint64/BigInt.ts +55 -0
- package/src/primitives/Uint64/Bytes.ts +56 -0
- package/src/primitives/Uint64/Hex.ts +55 -0
- package/src/primitives/Uint64/Number.ts +59 -0
- package/src/primitives/Uint64/String.ts +55 -0
- package/src/primitives/Uint64/Uint64Schema.ts +122 -0
- package/src/primitives/Uint64/index.ts +71 -0
- package/src/primitives/Uint8/BigInt.ts +57 -0
- package/src/primitives/Uint8/Bytes.ts +55 -0
- package/src/primitives/Uint8/Hex.ts +55 -0
- package/src/primitives/Uint8/Number.ts +55 -0
- package/src/primitives/Uint8/String.ts +55 -0
- package/src/primitives/Uint8/Uint8.test.ts +324 -0
- package/src/primitives/Uint8/Uint8Schema.ts +117 -0
- package/src/primitives/Uint8/index.ts +70 -0
- package/src/primitives/Uncle/Rpc.ts +49 -0
- package/src/primitives/Uncle/index.ts +11 -0
- package/src/primitives/UserOperation/UserOperationSchema.ts +213 -0
- package/src/primitives/UserOperation/index.ts +81 -0
- package/src/primitives/ValidatorIndex/ValidatorIndexSchema.ts +44 -0
- package/src/primitives/ValidatorIndex/index.ts +20 -0
- package/src/primitives/Withdrawal/WithdrawalSchema.ts +47 -0
- package/src/primitives/Withdrawal/index.ts +20 -0
- package/src/primitives/WithdrawalIndex/WithdrawalIndexSchema.ts +47 -0
- package/src/primitives/WithdrawalIndex/index.ts +20 -0
- package/src/primitives/errors/index.ts +1 -0
- package/src/primitives/index.ts +143 -0
- package/src/primitives/validation/assertCommon.ts +40 -0
- package/src/primitives/validation/assertInRange.ts +60 -0
- package/src/primitives/validation/assertInt.ts +121 -0
- package/src/primitives/validation/assertSize.ts +68 -0
- package/src/primitives/validation/assertUint.ts +114 -0
- package/src/primitives/validation/index.ts +23 -0
- package/src/services/AbiEncoder/AbiEncoder.test.ts +190 -0
- package/src/services/AbiEncoder/AbiEncoderService.ts +141 -0
- package/src/services/AbiEncoder/DefaultAbiEncoder.ts +186 -0
- package/src/services/AbiEncoder/index.ts +14 -0
- package/src/services/Account/Account.test.ts +756 -0
- package/src/services/Account/AccountService.ts +453 -0
- package/src/services/Account/JsonRpcAccount.ts +347 -0
- package/src/services/Account/LocalAccount.ts +967 -0
- package/src/services/Account/fromMnemonic.test.ts +67 -0
- package/src/services/Account/fromMnemonic.ts +221 -0
- package/src/services/Account/index.ts +65 -0
- package/src/services/Account/toAccount.test.ts +139 -0
- package/src/services/Account/toAccount.ts +185 -0
- package/src/services/BlockStream/BlockStream.test.ts +1246 -0
- package/src/services/BlockStream/BlockStream.ts +125 -0
- package/src/services/BlockStream/BlockStreamError.ts +33 -0
- package/src/services/BlockStream/BlockStreamService.ts +105 -0
- package/src/services/BlockStream/index.ts +32 -0
- package/src/services/Cache/CacheService.ts +102 -0
- package/src/services/Cache/LookupCacheService.test.ts +305 -0
- package/src/services/Cache/LookupCacheService.ts +209 -0
- package/src/services/Cache/MemoryCache.test.ts +154 -0
- package/src/services/Cache/MemoryCache.ts +175 -0
- package/src/services/Cache/NoopCache.test.ts +159 -0
- package/src/services/Cache/NoopCache.ts +81 -0
- package/src/services/Cache/index.ts +176 -0
- package/src/services/Ccip/Ccip.test.ts +569 -0
- package/src/services/Ccip/CcipService.ts +106 -0
- package/src/services/Ccip/DefaultCcip.ts +189 -0
- package/src/services/Ccip/NoopCcip.ts +52 -0
- package/src/services/Ccip/index.ts +20 -0
- package/src/services/Chain/BlockExplorerService.ts +39 -0
- package/src/services/Chain/Chain.test.ts +296 -0
- package/src/services/Chain/ChainService.ts +97 -0
- package/src/services/Chain/ContractsService.ts +46 -0
- package/src/services/Chain/chains/arbitrum.ts +73 -0
- package/src/services/Chain/chains/base.ts +73 -0
- package/src/services/Chain/chains/index.ts +48 -0
- package/src/services/Chain/chains/mainnet.ts +77 -0
- package/src/services/Chain/chains/optimism.ts +73 -0
- package/src/services/Chain/chains/polygon.ts +73 -0
- package/src/services/Chain/chains/sepolia.ts +78 -0
- package/src/services/Chain/index.ts +77 -0
- package/src/services/Chain/rpcUrls.ts +31 -0
- package/src/services/Contract/Contract.test.ts +988 -0
- package/src/services/Contract/Contract.ts +432 -0
- package/src/services/Contract/ContractTypes.ts +412 -0
- package/src/services/Contract/estimateGas.test.ts +124 -0
- package/src/services/Contract/estimateGas.ts +163 -0
- package/src/services/Contract/index.ts +67 -0
- package/src/services/Debug/Debug.ts +121 -0
- package/src/services/Debug/DebugService.ts +89 -0
- package/src/services/Debug/index.ts +13 -0
- package/src/services/EngineApi/EngineApi.ts +95 -0
- package/src/services/EngineApi/EngineApiService.ts +99 -0
- package/src/services/EngineApi/index.ts +9 -0
- package/src/services/Ens/DefaultEns.ts +60 -0
- package/src/services/Ens/EnsService.ts +66 -0
- package/src/services/Ens/index.ts +61 -0
- package/src/services/FeeEstimator/DefaultFeeEstimator.ts +277 -0
- package/src/services/FeeEstimator/FeeEstimator.test.ts +810 -0
- package/src/services/FeeEstimator/FeeEstimatorService.ts +168 -0
- package/src/services/FeeEstimator/index.ts +57 -0
- package/src/services/Formatter/DefaultFormatter.ts +74 -0
- package/src/services/Formatter/Formatter.test.ts +92 -0
- package/src/services/Formatter/FormatterService.ts +137 -0
- package/src/services/Formatter/chains/arbitrum.ts +35 -0
- package/src/services/Formatter/chains/chains.test.ts +102 -0
- package/src/services/Formatter/chains/index.ts +13 -0
- package/src/services/Formatter/chains/optimism.ts +36 -0
- package/src/services/Formatter/chains/zksync.ts +35 -0
- package/src/services/Formatter/index.ts +22 -0
- package/src/services/Kzg/DefaultKzg.ts +111 -0
- package/src/services/Kzg/Kzg.test.ts +320 -0
- package/src/services/Kzg/KzgService.ts +123 -0
- package/src/services/Kzg/NoopKzg.ts +75 -0
- package/src/services/Kzg/index.ts +15 -0
- package/src/services/Multicall/BalanceResolver.ts +182 -0
- package/src/services/Multicall/GetBalance.ts +27 -0
- package/src/services/Multicall/Multicall.test.ts +384 -0
- package/src/services/Multicall/Multicall.ts +241 -0
- package/src/services/Multicall/index.ts +20 -0
- package/src/services/NonceManager/DefaultNonceManager.ts +154 -0
- package/src/services/NonceManager/NonceManager.test.ts +468 -0
- package/src/services/NonceManager/NonceManagerService.ts +191 -0
- package/src/services/NonceManager/index.ts +46 -0
- package/src/services/Provider/Account.ts +33 -0
- package/src/services/Provider/AccountService.ts +84 -0
- package/src/services/Provider/Blocks.ts +32 -0
- package/src/services/Provider/BlocksService.ts +73 -0
- package/src/services/Provider/Events.ts +33 -0
- package/src/services/Provider/EventsService.ts +71 -0
- package/src/services/Provider/Network.ts +41 -0
- package/src/services/Provider/NetworkService.ts +114 -0
- package/src/services/Provider/Provider.test.ts +1723 -0
- package/src/services/Provider/Provider.ts +1193 -0
- package/src/services/Provider/ProviderService.ts +1218 -0
- package/src/services/Provider/REFACTOR_PLAN.md +203 -0
- package/src/services/Provider/Simulation.ts +34 -0
- package/src/services/Provider/SimulationService.ts +161 -0
- package/src/services/Provider/Streaming.ts +30 -0
- package/src/services/Provider/StreamingService.ts +58 -0
- package/src/services/Provider/Transaction.ts +39 -0
- package/src/services/Provider/TransactionService.ts +83 -0
- package/src/services/Provider/actions/index.ts +26 -0
- package/src/services/Provider/actions/multicall.test.ts +716 -0
- package/src/services/Provider/actions/multicall.ts +304 -0
- package/src/services/Provider/actions/readContract.test.ts +808 -0
- package/src/services/Provider/actions/readContract.ts +311 -0
- package/src/services/Provider/actions/simulateContract.test.ts +454 -0
- package/src/services/Provider/actions/simulateContract.ts +189 -0
- package/src/services/Provider/ens/EnsError.ts +38 -0
- package/src/services/Provider/ens/constants.ts +81 -0
- package/src/services/Provider/ens/ens.test.ts +322 -0
- package/src/services/Provider/ens/getEnsAddress.ts +126 -0
- package/src/services/Provider/ens/getEnsAvatar.ts +51 -0
- package/src/services/Provider/ens/getEnsName.ts +124 -0
- package/src/services/Provider/ens/getEnsResolver.ts +82 -0
- package/src/services/Provider/ens/getEnsText.ts +158 -0
- package/src/services/Provider/ens/index.ts +49 -0
- package/src/services/Provider/ens/utils.ts +165 -0
- package/src/services/Provider/filters.ts +91 -0
- package/src/services/Provider/getBlobBaseFee.ts +170 -0
- package/src/services/Provider/index.ts +213 -0
- package/src/services/Provider/simulateCalls.test.ts +127 -0
- package/src/services/Provider/simulateCalls.ts +281 -0
- package/src/services/RateLimiter/DefaultRateLimiter.ts +226 -0
- package/src/services/RateLimiter/RateLimiter.test.ts +181 -0
- package/src/services/RateLimiter/RateLimiterService.ts +208 -0
- package/src/services/RateLimiter/index.ts +54 -0
- package/src/services/RawProvider/ForkProviderTransport.ts +100 -0
- package/src/services/RawProvider/HttpProviderTransport.test.ts +310 -0
- package/src/services/RawProvider/HttpProviderTransport.ts +76 -0
- package/src/services/RawProvider/InMemoryProviderTransport.test.ts +246 -0
- package/src/services/RawProvider/InMemoryProviderTransport.ts +81 -0
- package/src/services/RawProvider/RawProvider.test.ts +454 -0
- package/src/services/RawProvider/RawProviderService.ts +61 -0
- package/src/services/RawProvider/RawProviderTransport.ts +64 -0
- package/src/services/RawProvider/WebSocketProviderTransport.ts +106 -0
- package/src/services/RawProvider/index.ts +31 -0
- package/src/services/RpcBatch/RpcBatch.test.ts +628 -0
- package/src/services/RpcBatch/RpcRequest.ts +227 -0
- package/src/services/RpcBatch/RpcResolver.test.ts +315 -0
- package/src/services/RpcBatch/RpcResolver.ts +362 -0
- package/src/services/RpcBatch/index.ts +88 -0
- package/src/services/Signer/Signer.test.ts +1629 -0
- package/src/services/Signer/Signer.ts +812 -0
- package/src/services/Signer/SignerService.ts +518 -0
- package/src/services/Signer/actions/addChain.test.ts +178 -0
- package/src/services/Signer/actions/addChain.ts +80 -0
- package/src/services/Signer/actions/deployContract.test.ts +523 -0
- package/src/services/Signer/actions/deployContract.ts +165 -0
- package/src/services/Signer/actions/getAddresses.test.ts +118 -0
- package/src/services/Signer/actions/getAddresses.ts +60 -0
- package/src/services/Signer/actions/getPermissions.test.ts +122 -0
- package/src/services/Signer/actions/getPermissions.ts +54 -0
- package/src/services/Signer/actions/index.ts +49 -0
- package/src/services/Signer/actions/prepareAuthorization.test.ts +206 -0
- package/src/services/Signer/actions/prepareAuthorization.ts +92 -0
- package/src/services/Signer/actions/requestPermissions.test.ts +164 -0
- package/src/services/Signer/actions/requestPermissions.ts +66 -0
- package/src/services/Signer/actions/signAuthorization.test.ts +279 -0
- package/src/services/Signer/actions/signAuthorization.ts +127 -0
- package/src/services/Signer/actions/switchChain.test.ts +129 -0
- package/src/services/Signer/actions/switchChain.ts +56 -0
- package/src/services/Signer/actions/watchAsset.test.ts +175 -0
- package/src/services/Signer/actions/watchAsset.ts +110 -0
- package/src/services/Signer/actions/writeContract.test.ts +281 -0
- package/src/services/Signer/actions/writeContract.ts +109 -0
- package/src/services/Signer/index.ts +108 -0
- package/src/services/TransactionSerializer/DefaultTransactionSerializer.ts +110 -0
- package/src/services/TransactionSerializer/TransactionSerializer.test.ts +200 -0
- package/src/services/TransactionSerializer/TransactionSerializerService.ts +114 -0
- package/src/services/TransactionSerializer/index.ts +38 -0
- package/src/services/Transport/BatchScheduler.test.ts +209 -0
- package/src/services/Transport/BatchScheduler.ts +298 -0
- package/src/services/Transport/BrowserTransport.test.ts +354 -0
- package/src/services/Transport/BrowserTransport.ts +209 -0
- package/src/services/Transport/CustomTransport.test.ts +331 -0
- package/src/services/Transport/CustomTransport.ts +355 -0
- package/src/services/Transport/FallbackTransport.test.ts +492 -0
- package/src/services/Transport/FallbackTransport.ts +240 -0
- package/src/services/Transport/HttpTransport.ts +685 -0
- package/src/services/Transport/HttpTransportConfig.test.ts +153 -0
- package/src/services/Transport/HttpTransportConfig.ts +270 -0
- package/src/services/Transport/HttpTransportHooks.test.ts +176 -0
- package/src/services/Transport/IdGenerator.test.ts +117 -0
- package/src/services/Transport/IdGenerator.ts +82 -0
- package/src/services/Transport/IpcTransport.test.ts +222 -0
- package/src/services/Transport/IpcTransport.ts +732 -0
- package/src/services/Transport/RateLimitedTransport.test.ts +118 -0
- package/src/services/Transport/RateLimitedTransport.ts +124 -0
- package/src/services/Transport/RpcRequest.test.ts +266 -0
- package/src/services/Transport/RpcRequest.ts +312 -0
- package/src/services/Transport/RpcResolver.test.ts +280 -0
- package/src/services/Transport/RpcResolver.ts +184 -0
- package/src/services/Transport/TestTransport.ts +175 -0
- package/src/services/Transport/Transport.test.ts +1755 -0
- package/src/services/Transport/TransportConfig.test.ts +224 -0
- package/src/services/Transport/TransportConfig.ts +285 -0
- package/src/services/Transport/TransportError.test.ts +166 -0
- package/src/services/Transport/TransportError.ts +134 -0
- package/src/services/Transport/TransportFiberRef.test.ts +164 -0
- package/src/services/Transport/TransportInterceptor.test.ts +341 -0
- package/src/services/Transport/TransportInterceptor.ts +531 -0
- package/src/services/Transport/TransportService.ts +124 -0
- package/src/services/Transport/WebSocketTransport.test.ts +588 -0
- package/src/services/Transport/WebSocketTransport.ts +765 -0
- package/src/services/Transport/WebSocketTransportConfig.test.ts +185 -0
- package/src/services/Transport/WebSocketTransportConfig.ts +247 -0
- package/src/services/Transport/__testUtils__/mockIpcSocket.ts +106 -0
- package/src/services/Transport/__testUtils__/mockWebSocket.ts +138 -0
- package/src/services/Transport/config.ts +150 -0
- package/src/services/Transport/index.ts +161 -0
- package/src/services/errors.test.ts +570 -0
- package/src/services/index.ts +439 -0
- package/src/services/presets/index.ts +283 -0
- package/src/services/presets/presets.test.ts +88 -0
- package/src/standards/ERC1155.test.ts +324 -0
- package/src/standards/ERC1155.ts +328 -0
- package/src/standards/ERC165.test.ts +216 -0
- package/src/standards/ERC165.ts +87 -0
- package/src/standards/ERC20.test.ts +310 -0
- package/src/standards/ERC20.ts +275 -0
- package/src/standards/ERC721.test.ts +343 -0
- package/src/standards/ERC721.ts +319 -0
- package/src/standards/errors.test.ts +54 -0
- package/src/standards/errors.ts +7 -0
- package/src/standards/index.ts +5 -0
- package/src/stream/index.test.ts +216 -0
- package/src/stream/index.ts +37 -0
- package/src/transaction/TransactionStream.test.ts +887 -0
- package/src/transaction/TransactionStream.ts +142 -0
- package/src/transaction/TransactionStreamError.test.ts +133 -0
- package/src/transaction/TransactionStreamError.ts +35 -0
- package/src/transaction/TransactionStreamService.ts +121 -0
- package/src/transaction/index.ts +35 -0
- package/src/utils/Unit/Unit.test.ts +337 -0
- package/src/utils/Unit/errors.ts +16 -0
- package/src/utils/Unit/formatEther.ts +24 -0
- package/src/utils/Unit/formatGwei.ts +24 -0
- package/src/utils/Unit/formatUnits.ts +55 -0
- package/src/utils/Unit/index.ts +49 -0
- package/src/utils/Unit/parseEther.ts +24 -0
- package/src/utils/Unit/parseGwei.ts +24 -0
- package/src/utils/Unit/parseUnits.ts +68 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Secp256k1 service definition for Effect-based applications.
|
|
3
|
+
* Provides the service tag and shape interface for secp256k1 cryptographic operations.
|
|
4
|
+
*
|
|
5
|
+
* @module Secp256k1/Secp256k1Service
|
|
6
|
+
* @since 0.0.1
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { HashType } from "@tevm/voltaire/Hash";
|
|
10
|
+
import type {
|
|
11
|
+
Secp256k1PublicKeyType,
|
|
12
|
+
Secp256k1SignatureType,
|
|
13
|
+
} from "@tevm/voltaire/Secp256k1";
|
|
14
|
+
import * as Context from "effect/Context";
|
|
15
|
+
import type * as Effect from "effect/Effect";
|
|
16
|
+
import type {
|
|
17
|
+
InvalidPrivateKeyError,
|
|
18
|
+
InvalidPublicKeyError,
|
|
19
|
+
InvalidRecoveryIdError,
|
|
20
|
+
InvalidSignatureError,
|
|
21
|
+
Secp256k1Error,
|
|
22
|
+
} from "./errors.js";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Options for secp256k1 signing operations.
|
|
26
|
+
*
|
|
27
|
+
* @description
|
|
28
|
+
* Configuration options for the sign operation, primarily for controlling
|
|
29
|
+
* the RFC 6979 deterministic nonce generation.
|
|
30
|
+
*
|
|
31
|
+
* @example Using extra entropy
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import { sign } from 'voltaire-effect/crypto/Secp256k1'
|
|
34
|
+
*
|
|
35
|
+
* const options: SignOptions = {
|
|
36
|
+
* extraEntropy: crypto.getRandomValues(new Uint8Array(32))
|
|
37
|
+
* }
|
|
38
|
+
* const signature = await Effect.runPromise(sign(hash, key, options))
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @since 0.0.1
|
|
42
|
+
*/
|
|
43
|
+
export interface SignOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Additional entropy for RFC 6979 nonce generation.
|
|
46
|
+
*
|
|
47
|
+
* @description
|
|
48
|
+
* When set to a Uint8Array, it is mixed into the nonce generation for
|
|
49
|
+
* additional randomness beyond the deterministic RFC 6979 algorithm.
|
|
50
|
+
* When set to `true`, random entropy is automatically generated.
|
|
51
|
+
* When undefined or `false`, standard RFC 6979 is used.
|
|
52
|
+
*/
|
|
53
|
+
readonly extraEntropy?: Uint8Array | boolean;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Shape interface for secp256k1 cryptographic service operations.
|
|
58
|
+
*
|
|
59
|
+
* @description
|
|
60
|
+
* Defines the contract for secp256k1 ECDSA implementations. This interface
|
|
61
|
+
* specifies the three core operations: sign, recover, and verify.
|
|
62
|
+
*
|
|
63
|
+
* Used as the service shape for {@link Secp256k1Service}.
|
|
64
|
+
*
|
|
65
|
+
* @since 0.0.1
|
|
66
|
+
*/
|
|
67
|
+
export interface Secp256k1ServiceShape {
|
|
68
|
+
/**
|
|
69
|
+
* Signs a message hash using secp256k1 ECDSA.
|
|
70
|
+
*
|
|
71
|
+
* @param {HashType} messageHash - The 32-byte message hash to sign
|
|
72
|
+
* @param {Uint8Array} privateKey - The 32-byte private key
|
|
73
|
+
* @param {SignOptions} [options] - Optional signing options for extra entropy
|
|
74
|
+
* @returns {Effect.Effect<Secp256k1SignatureType, InvalidPrivateKeyError | Secp256k1Error>}
|
|
75
|
+
* Effect containing the 65-byte recoverable signature
|
|
76
|
+
*/
|
|
77
|
+
readonly sign: (
|
|
78
|
+
messageHash: HashType,
|
|
79
|
+
privateKey: Uint8Array,
|
|
80
|
+
options?: SignOptions,
|
|
81
|
+
) => Effect.Effect<
|
|
82
|
+
Secp256k1SignatureType,
|
|
83
|
+
InvalidPrivateKeyError | Secp256k1Error
|
|
84
|
+
>;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Recovers the public key from a signature and message hash.
|
|
88
|
+
*
|
|
89
|
+
* @param {Secp256k1SignatureType} signature - The 65-byte recoverable signature
|
|
90
|
+
* @param {HashType} messageHash - The 32-byte message hash
|
|
91
|
+
* @returns {Effect.Effect<Secp256k1PublicKeyType, InvalidSignatureError | InvalidRecoveryIdError | Secp256k1Error>}
|
|
92
|
+
* Effect containing the 65-byte uncompressed public key
|
|
93
|
+
*/
|
|
94
|
+
readonly recover: (
|
|
95
|
+
signature: Secp256k1SignatureType,
|
|
96
|
+
messageHash: HashType,
|
|
97
|
+
) => Effect.Effect<
|
|
98
|
+
Secp256k1PublicKeyType,
|
|
99
|
+
InvalidSignatureError | InvalidRecoveryIdError | Secp256k1Error
|
|
100
|
+
>;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Verifies a secp256k1 signature against a message hash and public key.
|
|
104
|
+
*
|
|
105
|
+
* @param {Secp256k1SignatureType} signature - The 65-byte signature
|
|
106
|
+
* @param {HashType} messageHash - The 32-byte message hash
|
|
107
|
+
* @param {Secp256k1PublicKeyType} publicKey - The 65-byte uncompressed public key
|
|
108
|
+
* @returns {Effect.Effect<boolean, InvalidSignatureError | InvalidPublicKeyError | Secp256k1Error>}
|
|
109
|
+
* Effect containing true if signature is valid
|
|
110
|
+
*/
|
|
111
|
+
readonly verify: (
|
|
112
|
+
signature: Secp256k1SignatureType,
|
|
113
|
+
messageHash: HashType,
|
|
114
|
+
publicKey: Secp256k1PublicKeyType,
|
|
115
|
+
) => Effect.Effect<
|
|
116
|
+
boolean,
|
|
117
|
+
InvalidSignatureError | InvalidPublicKeyError | Secp256k1Error
|
|
118
|
+
>;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Secp256k1 cryptographic service for Effect-based applications.
|
|
123
|
+
*
|
|
124
|
+
* @description
|
|
125
|
+
* An Effect Context.Tag that provides the standard Ethereum elliptic curve
|
|
126
|
+
* (secp256k1) for transaction and message signing. The service pattern enables
|
|
127
|
+
* swapping implementations for testing or alternative backends.
|
|
128
|
+
*
|
|
129
|
+
* The service exposes three operations:
|
|
130
|
+
* - `sign` - Create a recoverable signature from a message hash and private key
|
|
131
|
+
* - `recover` - Recover the public key from a signature and message hash
|
|
132
|
+
* - `verify` - Verify a signature against a public key
|
|
133
|
+
*
|
|
134
|
+
* @example Basic usage with Effect.gen
|
|
135
|
+
* ```typescript
|
|
136
|
+
* import { Secp256k1Service, Secp256k1Live } from 'voltaire-effect/crypto/Secp256k1'
|
|
137
|
+
* import * as Effect from 'effect/Effect'
|
|
138
|
+
*
|
|
139
|
+
* const program = Effect.gen(function* () {
|
|
140
|
+
* const secp = yield* Secp256k1Service
|
|
141
|
+
* const sig = yield* secp.sign(messageHash, privateKey)
|
|
142
|
+
* const pubKey = yield* secp.recover(sig, messageHash)
|
|
143
|
+
* return yield* secp.verify(sig, messageHash, pubKey)
|
|
144
|
+
* }).pipe(Effect.provide(Secp256k1Live))
|
|
145
|
+
*
|
|
146
|
+
* const isValid = await Effect.runPromise(program) // true
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @example Signing a transaction
|
|
150
|
+
* ```typescript
|
|
151
|
+
* import { Secp256k1Service, Secp256k1Live } from 'voltaire-effect/crypto/Secp256k1'
|
|
152
|
+
* import { KeccakService, KeccakLive } from 'voltaire-effect/crypto/Keccak256'
|
|
153
|
+
* import * as Effect from 'effect/Effect'
|
|
154
|
+
* import * as Layer from 'effect/Layer'
|
|
155
|
+
*
|
|
156
|
+
* const signTx = (txBytes: Uint8Array, privateKey: Uint8Array) =>
|
|
157
|
+
* Effect.gen(function* () {
|
|
158
|
+
* const keccak = yield* KeccakService
|
|
159
|
+
* const secp = yield* Secp256k1Service
|
|
160
|
+
* const txHash = yield* keccak.hash(txBytes)
|
|
161
|
+
* return yield* secp.sign(txHash, privateKey)
|
|
162
|
+
* })
|
|
163
|
+
*
|
|
164
|
+
* const CryptoLive = Layer.merge(KeccakLive, Secp256k1Live)
|
|
165
|
+
* const signature = await Effect.runPromise(signTx(tx, key).pipe(Effect.provide(CryptoLive)))
|
|
166
|
+
* ```
|
|
167
|
+
*
|
|
168
|
+
* @example Error handling
|
|
169
|
+
* ```typescript
|
|
170
|
+
* import { Secp256k1Service, Secp256k1Live } from 'voltaire-effect/crypto/Secp256k1'
|
|
171
|
+
* import * as Effect from 'effect/Effect'
|
|
172
|
+
*
|
|
173
|
+
* const program = Effect.gen(function* () {
|
|
174
|
+
* const secp = yield* Secp256k1Service
|
|
175
|
+
* return yield* secp.sign(messageHash, privateKey)
|
|
176
|
+
* }).pipe(
|
|
177
|
+
* Effect.catchTag('InvalidPrivateKeyError', (e) =>
|
|
178
|
+
* Effect.fail(new Error(`Invalid key: ${e.message}`))
|
|
179
|
+
* ),
|
|
180
|
+
* Effect.provide(Secp256k1Live)
|
|
181
|
+
* )
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* @see {@link Secp256k1Live} - Production implementation
|
|
185
|
+
* @see {@link Secp256k1Test} - Test implementation
|
|
186
|
+
* @see {@link sign} - Standalone sign function
|
|
187
|
+
* @see {@link recover} - Standalone recover function
|
|
188
|
+
* @see {@link verify} - Standalone verify function
|
|
189
|
+
* @since 0.0.1
|
|
190
|
+
*/
|
|
191
|
+
export class Secp256k1Service extends Context.Tag("Secp256k1Service")<
|
|
192
|
+
Secp256k1Service,
|
|
193
|
+
Secp256k1ServiceShape
|
|
194
|
+
>() {}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Test layer for Secp256k1Service.
|
|
3
|
+
* Provides deterministic mock values for unit testing.
|
|
4
|
+
*
|
|
5
|
+
* @module Secp256k1/Secp256k1Test
|
|
6
|
+
* @since 0.0.1
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type {
|
|
10
|
+
Secp256k1PublicKeyType,
|
|
11
|
+
Secp256k1SignatureType,
|
|
12
|
+
} from "@tevm/voltaire/Secp256k1";
|
|
13
|
+
import * as Effect from "effect/Effect";
|
|
14
|
+
import * as Layer from "effect/Layer";
|
|
15
|
+
import {
|
|
16
|
+
Secp256k1Service,
|
|
17
|
+
type Secp256k1ServiceShape,
|
|
18
|
+
} from "./Secp256k1Service.js";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Mock 65-byte signature filled with zeros.
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
const mockSignature = new Uint8Array(65) as unknown as Secp256k1SignatureType;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Mock 65-byte public key filled with zeros.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
const mockPublicKey = new Uint8Array(65) as unknown as Secp256k1PublicKeyType;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Test implementation of Secp256k1ServiceShape.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
const testImpl: Secp256k1ServiceShape = {
|
|
37
|
+
sign: (_messageHash, _privateKey, _options) => Effect.succeed(mockSignature),
|
|
38
|
+
recover: (_signature, _messageHash) => Effect.succeed(mockPublicKey),
|
|
39
|
+
verify: (_signature, _messageHash, _publicKey) => Effect.succeed(true),
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Test layer for Secp256k1Service returning deterministic mock values.
|
|
44
|
+
*
|
|
45
|
+
* @description
|
|
46
|
+
* Provides a mock secp256k1 implementation for unit testing without
|
|
47
|
+
* cryptographic overhead. All operations return deterministic values:
|
|
48
|
+
* - `sign` returns a 65-byte zero-filled signature
|
|
49
|
+
* - `recover` returns a 65-byte zero-filled public key
|
|
50
|
+
* - `verify` always returns `true`
|
|
51
|
+
*
|
|
52
|
+
* This layer is useful for:
|
|
53
|
+
* - Unit tests that need deterministic output
|
|
54
|
+
* - Performance tests that want to isolate non-crypto logic
|
|
55
|
+
* - Tests where cryptographic correctness is not the focus
|
|
56
|
+
*
|
|
57
|
+
* @example Using in tests
|
|
58
|
+
* ```typescript
|
|
59
|
+
* import { Secp256k1Service, Secp256k1Test } from 'voltaire-effect/crypto/Secp256k1'
|
|
60
|
+
* import * as Effect from 'effect/Effect'
|
|
61
|
+
* import { describe, it, expect } from 'vitest'
|
|
62
|
+
*
|
|
63
|
+
* describe('TransactionService', () => {
|
|
64
|
+
* it('should sign transactions', async () => {
|
|
65
|
+
* const program = Effect.gen(function* () {
|
|
66
|
+
* const secp = yield* Secp256k1Service
|
|
67
|
+
* return yield* secp.sign(fakeHash, fakeKey)
|
|
68
|
+
* })
|
|
69
|
+
*
|
|
70
|
+
* const sig = await Effect.runPromise(program.pipe(Effect.provide(Secp256k1Test)))
|
|
71
|
+
* expect(sig.length).toBe(65)
|
|
72
|
+
* })
|
|
73
|
+
*
|
|
74
|
+
* it('should verify returns true in test mode', async () => {
|
|
75
|
+
* const program = Effect.gen(function* () {
|
|
76
|
+
* const secp = yield* Secp256k1Service
|
|
77
|
+
* return yield* secp.verify(fakeSig, fakeHash, fakePubKey)
|
|
78
|
+
* })
|
|
79
|
+
*
|
|
80
|
+
* const isValid = await Effect.runPromise(program.pipe(Effect.provide(Secp256k1Test)))
|
|
81
|
+
* expect(isValid).toBe(true)
|
|
82
|
+
* })
|
|
83
|
+
* })
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @example Combining with other test layers
|
|
87
|
+
* ```typescript
|
|
88
|
+
* import { Secp256k1Test } from 'voltaire-effect/crypto/Secp256k1'
|
|
89
|
+
* import { KeccakTest } from 'voltaire-effect/crypto/Keccak256'
|
|
90
|
+
* import * as Layer from 'effect/Layer'
|
|
91
|
+
*
|
|
92
|
+
* const CryptoTest = Layer.merge(Secp256k1Test, KeccakTest)
|
|
93
|
+
*
|
|
94
|
+
* const result = await Effect.runPromise(program.pipe(Effect.provide(CryptoTest)))
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @see {@link Secp256k1Service} - The service tag
|
|
98
|
+
* @see {@link Secp256k1Live} - Production implementation
|
|
99
|
+
* @since 0.0.1
|
|
100
|
+
*/
|
|
101
|
+
export const Secp256k1Test = Layer.succeed(Secp256k1Service, testImpl);
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Error types and mapping helpers for Secp256k1 Effect wrappers.
|
|
3
|
+
*
|
|
4
|
+
* @module Secp256k1/errors
|
|
5
|
+
* @since 0.0.1
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
InvalidPrivateKeyError as VoltaireInvalidPrivateKeyError,
|
|
10
|
+
InvalidPublicKeyError as VoltaireInvalidPublicKeyError,
|
|
11
|
+
InvalidSignatureError as VoltaireInvalidSignatureError,
|
|
12
|
+
Secp256k1Error as VoltaireSecp256k1Error,
|
|
13
|
+
} from "@tevm/voltaire/Secp256k1";
|
|
14
|
+
import * as Data from "effect/Data";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Base error for all Secp256k1 cryptographic operations.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.0.1
|
|
20
|
+
*/
|
|
21
|
+
export class Secp256k1Error extends Data.TaggedError("Secp256k1Error")<{
|
|
22
|
+
readonly message: string;
|
|
23
|
+
readonly cause?: unknown;
|
|
24
|
+
}> {}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Invalid private key format or value.
|
|
28
|
+
*
|
|
29
|
+
* @since 0.0.1
|
|
30
|
+
*/
|
|
31
|
+
export class InvalidPrivateKeyError extends Data.TaggedError(
|
|
32
|
+
"InvalidPrivateKeyError",
|
|
33
|
+
)<{
|
|
34
|
+
readonly message: string;
|
|
35
|
+
readonly cause?: unknown;
|
|
36
|
+
}> {}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Invalid public key format or not on curve.
|
|
40
|
+
*
|
|
41
|
+
* @since 0.0.1
|
|
42
|
+
*/
|
|
43
|
+
export class InvalidPublicKeyError extends Data.TaggedError(
|
|
44
|
+
"InvalidPublicKeyError",
|
|
45
|
+
)<{
|
|
46
|
+
readonly message: string;
|
|
47
|
+
readonly cause?: unknown;
|
|
48
|
+
}> {}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Invalid signature format or components.
|
|
52
|
+
*
|
|
53
|
+
* @since 0.0.1
|
|
54
|
+
*/
|
|
55
|
+
export class InvalidSignatureError extends Data.TaggedError(
|
|
56
|
+
"InvalidSignatureError",
|
|
57
|
+
)<{
|
|
58
|
+
readonly message: string;
|
|
59
|
+
readonly cause?: unknown;
|
|
60
|
+
}> {}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Recovery ID is invalid for signature recovery.
|
|
64
|
+
*
|
|
65
|
+
* @since 0.0.1
|
|
66
|
+
*/
|
|
67
|
+
export class InvalidRecoveryIdError extends Data.TaggedError(
|
|
68
|
+
"InvalidRecoveryIdError",
|
|
69
|
+
)<{
|
|
70
|
+
readonly message: string;
|
|
71
|
+
readonly recoveryId: number;
|
|
72
|
+
readonly cause?: unknown;
|
|
73
|
+
}> {}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Union of all Secp256k1 error types.
|
|
77
|
+
*
|
|
78
|
+
* @since 0.0.1
|
|
79
|
+
*/
|
|
80
|
+
export type Secp256k1Errors =
|
|
81
|
+
| Secp256k1Error
|
|
82
|
+
| InvalidPrivateKeyError
|
|
83
|
+
| InvalidPublicKeyError
|
|
84
|
+
| InvalidSignatureError
|
|
85
|
+
| InvalidRecoveryIdError;
|
|
86
|
+
|
|
87
|
+
export type Secp256k1Operation = "sign" | "recover" | "verify";
|
|
88
|
+
|
|
89
|
+
const getMessage = (error: unknown): string =>
|
|
90
|
+
error instanceof Error ? error.message : String(error);
|
|
91
|
+
|
|
92
|
+
const getRecoveryId = (error: unknown): number | undefined => {
|
|
93
|
+
if (!error || typeof error !== "object") return undefined;
|
|
94
|
+
const candidate =
|
|
95
|
+
(error as { recoveryId?: unknown }).recoveryId ??
|
|
96
|
+
(error as { v?: unknown }).v;
|
|
97
|
+
return typeof candidate === "number" ? candidate : undefined;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Maps unknown errors to specific Secp256k1 error types.
|
|
102
|
+
*
|
|
103
|
+
* @since 0.0.1
|
|
104
|
+
*/
|
|
105
|
+
export function mapToSecp256k1Error(
|
|
106
|
+
error: unknown,
|
|
107
|
+
operation: "sign",
|
|
108
|
+
): InvalidPrivateKeyError | Secp256k1Error;
|
|
109
|
+
export function mapToSecp256k1Error(
|
|
110
|
+
error: unknown,
|
|
111
|
+
operation: "recover",
|
|
112
|
+
): InvalidSignatureError | InvalidRecoveryIdError | Secp256k1Error;
|
|
113
|
+
export function mapToSecp256k1Error(
|
|
114
|
+
error: unknown,
|
|
115
|
+
operation: "verify",
|
|
116
|
+
): InvalidSignatureError | InvalidPublicKeyError | Secp256k1Error;
|
|
117
|
+
export function mapToSecp256k1Error(
|
|
118
|
+
error: unknown,
|
|
119
|
+
operation: Secp256k1Operation,
|
|
120
|
+
): Secp256k1Errors {
|
|
121
|
+
const message = getMessage(error);
|
|
122
|
+
const normalized = message.toLowerCase();
|
|
123
|
+
const isPrivateKey =
|
|
124
|
+
normalized.includes("private key") || normalized.includes("scalar");
|
|
125
|
+
const isPublicKey =
|
|
126
|
+
normalized.includes("public key") || normalized.includes("point");
|
|
127
|
+
const isSignature = normalized.includes("signature");
|
|
128
|
+
const isRecovery =
|
|
129
|
+
normalized.includes("recovery") || normalized.includes("recovery id");
|
|
130
|
+
const recoveryId = getRecoveryId(error);
|
|
131
|
+
|
|
132
|
+
switch (operation) {
|
|
133
|
+
case "sign": {
|
|
134
|
+
if (error instanceof InvalidPrivateKeyError) return error;
|
|
135
|
+
if (error instanceof Secp256k1Error) return error;
|
|
136
|
+
if (error instanceof VoltaireInvalidPrivateKeyError) {
|
|
137
|
+
return new InvalidPrivateKeyError({
|
|
138
|
+
message: error.message,
|
|
139
|
+
cause: error,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (error instanceof VoltaireSecp256k1Error) {
|
|
143
|
+
return new Secp256k1Error({ message: error.message, cause: error });
|
|
144
|
+
}
|
|
145
|
+
if (isPrivateKey) {
|
|
146
|
+
return new InvalidPrivateKeyError({
|
|
147
|
+
message: `Invalid private key: ${message}`,
|
|
148
|
+
cause: error,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return new Secp256k1Error({
|
|
152
|
+
message: `sign failed: ${message}`,
|
|
153
|
+
cause: error,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
case "recover": {
|
|
157
|
+
if (error instanceof InvalidSignatureError) return error;
|
|
158
|
+
if (error instanceof InvalidRecoveryIdError) return error;
|
|
159
|
+
if (error instanceof Secp256k1Error) return error;
|
|
160
|
+
if (error instanceof VoltaireInvalidSignatureError) {
|
|
161
|
+
return new InvalidSignatureError({
|
|
162
|
+
message: error.message,
|
|
163
|
+
cause: error,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
if (error instanceof VoltaireSecp256k1Error) {
|
|
167
|
+
return new Secp256k1Error({ message: error.message, cause: error });
|
|
168
|
+
}
|
|
169
|
+
if (isRecovery) {
|
|
170
|
+
return new InvalidRecoveryIdError({
|
|
171
|
+
message: `Invalid recovery ID: ${message}`,
|
|
172
|
+
recoveryId: recoveryId ?? -1,
|
|
173
|
+
cause: error,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (isSignature) {
|
|
177
|
+
return new InvalidSignatureError({
|
|
178
|
+
message: `Invalid signature: ${message}`,
|
|
179
|
+
cause: error,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
return new Secp256k1Error({
|
|
183
|
+
message: `recover failed: ${message}`,
|
|
184
|
+
cause: error,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
case "verify": {
|
|
188
|
+
if (error instanceof InvalidSignatureError) return error;
|
|
189
|
+
if (error instanceof InvalidPublicKeyError) return error;
|
|
190
|
+
if (error instanceof Secp256k1Error) return error;
|
|
191
|
+
if (error instanceof VoltaireInvalidSignatureError) {
|
|
192
|
+
return new InvalidSignatureError({
|
|
193
|
+
message: error.message,
|
|
194
|
+
cause: error,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (error instanceof VoltaireInvalidPublicKeyError) {
|
|
198
|
+
return new InvalidPublicKeyError({
|
|
199
|
+
message: error.message,
|
|
200
|
+
cause: error,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (error instanceof VoltaireSecp256k1Error) {
|
|
204
|
+
return new Secp256k1Error({ message: error.message, cause: error });
|
|
205
|
+
}
|
|
206
|
+
if (isPublicKey) {
|
|
207
|
+
return new InvalidPublicKeyError({
|
|
208
|
+
message: `Invalid public key: ${message}`,
|
|
209
|
+
cause: error,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
if (isSignature) {
|
|
213
|
+
return new InvalidSignatureError({
|
|
214
|
+
message: `Invalid signature: ${message}`,
|
|
215
|
+
cause: error,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return new Secp256k1Error({
|
|
219
|
+
message: `verify failed: ${message}`,
|
|
220
|
+
cause: error,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Secp256k1 elliptic curve cryptography module for Effect.
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* This module provides the secp256k1 elliptic curve cryptographic operations
|
|
6
|
+
* wrapped in Effect for type-safe, composable digital signature workflows.
|
|
7
|
+
*
|
|
8
|
+
* Secp256k1 is the standard Ethereum curve used for:
|
|
9
|
+
* - Transaction signing and verification
|
|
10
|
+
* - Message signing (personal_sign, EIP-712)
|
|
11
|
+
* - Public key recovery from signatures
|
|
12
|
+
* - Account/address derivation
|
|
13
|
+
*
|
|
14
|
+
* The module exports:
|
|
15
|
+
* - {@link sign} - Sign a message hash with a private key
|
|
16
|
+
* - {@link recover} - Recover public key from signature
|
|
17
|
+
* - {@link verify} - Verify signature against public key
|
|
18
|
+
* - {@link Secp256k1Service} - Effect service for dependency injection
|
|
19
|
+
* - {@link Secp256k1Live} - Production implementation
|
|
20
|
+
* - {@link Secp256k1Test} - Test implementation with mock values
|
|
21
|
+
*
|
|
22
|
+
* @example Signing a message
|
|
23
|
+
* ```typescript
|
|
24
|
+
* import { sign, Secp256k1Live } from 'voltaire-effect/crypto/Secp256k1'
|
|
25
|
+
* import * as Effect from 'effect/Effect'
|
|
26
|
+
*
|
|
27
|
+
* const signature = await Effect.runPromise(sign(messageHash, privateKey))
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @example Full sign-verify workflow using service
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { Secp256k1Service, Secp256k1Live } from 'voltaire-effect/crypto/Secp256k1'
|
|
33
|
+
* import * as Effect from 'effect/Effect'
|
|
34
|
+
*
|
|
35
|
+
* const program = Effect.gen(function* () {
|
|
36
|
+
* const secp = yield* Secp256k1Service
|
|
37
|
+
* const sig = yield* secp.sign(messageHash, privateKey)
|
|
38
|
+
* const pubKey = yield* secp.recover(sig, messageHash)
|
|
39
|
+
* return yield* secp.verify(sig, messageHash, pubKey)
|
|
40
|
+
* }).pipe(Effect.provide(Secp256k1Live))
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @module Secp256k1
|
|
44
|
+
* @since 0.0.1
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
export {
|
|
48
|
+
InvalidPrivateKeyError,
|
|
49
|
+
InvalidPublicKeyError,
|
|
50
|
+
InvalidRecoveryIdError,
|
|
51
|
+
InvalidSignatureError,
|
|
52
|
+
mapToSecp256k1Error,
|
|
53
|
+
Secp256k1Error,
|
|
54
|
+
type Secp256k1Errors,
|
|
55
|
+
} from "./errors.js";
|
|
56
|
+
export { recover } from "./recover.js";
|
|
57
|
+
export { Secp256k1Live } from "./Secp256k1Live.js";
|
|
58
|
+
export {
|
|
59
|
+
Secp256k1Service,
|
|
60
|
+
type Secp256k1ServiceShape,
|
|
61
|
+
type SignOptions,
|
|
62
|
+
} from "./Secp256k1Service.js";
|
|
63
|
+
export { Secp256k1Test } from "./Secp256k1Test.js";
|
|
64
|
+
export { sign } from "./sign.js";
|
|
65
|
+
export { verify } from "./verify.js";
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Secp256k1 public key recovery function for Effect-based applications.
|
|
3
|
+
* Provides a functional Effect wrapper around secp256k1 ECDSA public key recovery.
|
|
4
|
+
*
|
|
5
|
+
* @module Secp256k1/recover
|
|
6
|
+
* @since 0.0.1
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { HashType } from "@tevm/voltaire/Hash";
|
|
10
|
+
import type {
|
|
11
|
+
Secp256k1PublicKeyType,
|
|
12
|
+
Secp256k1SignatureType,
|
|
13
|
+
} from "@tevm/voltaire/Secp256k1";
|
|
14
|
+
import * as Secp256k1 from "@tevm/voltaire/Secp256k1";
|
|
15
|
+
import * as Effect from "effect/Effect";
|
|
16
|
+
import type {
|
|
17
|
+
InvalidRecoveryIdError,
|
|
18
|
+
InvalidSignatureError,
|
|
19
|
+
Secp256k1Error,
|
|
20
|
+
} from "./errors.js";
|
|
21
|
+
import { mapToSecp256k1Error } from "./errors.js";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Recovers the public key from a secp256k1 signature and message hash.
|
|
25
|
+
*
|
|
26
|
+
* @description
|
|
27
|
+
* Uses the recovery ID (v value) embedded in the 65-byte signature to
|
|
28
|
+
* mathematically recover the original signer's public key. This is the
|
|
29
|
+
* inverse operation of signing and is essential for Ethereum's ecrecover.
|
|
30
|
+
*
|
|
31
|
+
* The recovered public key is the 65-byte uncompressed format:
|
|
32
|
+
* - Prefix byte (0x04)
|
|
33
|
+
* - X coordinate (32 bytes)
|
|
34
|
+
* - Y coordinate (32 bytes)
|
|
35
|
+
*
|
|
36
|
+
* This function is used internally by ecrecover and is useful for:
|
|
37
|
+
* - Verifying transaction signatures
|
|
38
|
+
* - Recovering signer addresses from signed messages
|
|
39
|
+
* - Implementing EIP-191 and EIP-712 verification
|
|
40
|
+
*
|
|
41
|
+
* @param {Secp256k1SignatureType} signature - The 65-byte recoverable signature
|
|
42
|
+
* containing r (32 bytes), s (32 bytes), and v (1 byte recovery ID).
|
|
43
|
+
* @param {HashType} messageHash - The 32-byte message hash that was signed.
|
|
44
|
+
*
|
|
45
|
+
* @returns {Effect.Effect<Secp256k1PublicKeyType, InvalidSignatureError | InvalidRecoveryIdError | Secp256k1Error>}
|
|
46
|
+
* An Effect that:
|
|
47
|
+
* - Succeeds with a 65-byte uncompressed public key (branded Uint8Array)
|
|
48
|
+
* - Fails with InvalidSignatureError if recovery fails
|
|
49
|
+
* - Fails with InvalidRecoveryIdError if the recovery ID is invalid
|
|
50
|
+
* - Fails with Secp256k1Error for other cryptographic failures
|
|
51
|
+
*
|
|
52
|
+
* @throws {InvalidSignatureError} When the signature is malformed.
|
|
53
|
+
* @throws {InvalidRecoveryIdError} When the recovery ID is invalid.
|
|
54
|
+
* @throws {Secp256k1Error} When recovery fails for cryptographic reasons.
|
|
55
|
+
*
|
|
56
|
+
* @example Basic recovery
|
|
57
|
+
* ```typescript
|
|
58
|
+
* import { recover } from 'voltaire-effect/crypto/Secp256k1'
|
|
59
|
+
* import * as Effect from 'effect/Effect'
|
|
60
|
+
*
|
|
61
|
+
* const publicKey = await Effect.runPromise(recover(signature, messageHash))
|
|
62
|
+
* console.log(publicKey.length) // 65 (uncompressed)
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @example Deriving an Ethereum address from recovered key
|
|
66
|
+
* ```typescript
|
|
67
|
+
* import { recover } from 'voltaire-effect/crypto/Secp256k1'
|
|
68
|
+
* import { hash as keccak } from 'voltaire-effect/crypto/Keccak256'
|
|
69
|
+
* import * as Effect from 'effect/Effect'
|
|
70
|
+
*
|
|
71
|
+
* const program = Effect.gen(function* () {
|
|
72
|
+
* const pubKey = yield* recover(signature, messageHash)
|
|
73
|
+
* // Remove 0x04 prefix, hash, take last 20 bytes
|
|
74
|
+
* const pubKeyHash = yield* keccak(pubKey.slice(1))
|
|
75
|
+
* return pubKeyHash.slice(-20) // The address
|
|
76
|
+
* })
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example Error handling
|
|
80
|
+
* ```typescript
|
|
81
|
+
* import { recover } from 'voltaire-effect/crypto/Secp256k1'
|
|
82
|
+
* import * as Effect from 'effect/Effect'
|
|
83
|
+
*
|
|
84
|
+
* const program = recover(signature, messageHash).pipe(
|
|
85
|
+
* Effect.catchTag('InvalidSignatureError', (e) =>
|
|
86
|
+
* Effect.fail(new Error(`Invalid signature: ${e.message}`))
|
|
87
|
+
* )
|
|
88
|
+
* )
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @see {@link sign} - Sign a message hash
|
|
92
|
+
* @see {@link verify} - Verify signature without recovery
|
|
93
|
+
* @see {@link Secp256k1Service} - Service interface for dependency injection
|
|
94
|
+
* @since 0.0.1
|
|
95
|
+
*/
|
|
96
|
+
export const recover = (
|
|
97
|
+
signature: Secp256k1SignatureType,
|
|
98
|
+
messageHash: HashType,
|
|
99
|
+
): Effect.Effect<
|
|
100
|
+
Secp256k1PublicKeyType,
|
|
101
|
+
InvalidSignatureError | InvalidRecoveryIdError | Secp256k1Error
|
|
102
|
+
> =>
|
|
103
|
+
Effect.try({
|
|
104
|
+
try: () => Secp256k1.recoverPublicKey(signature, messageHash),
|
|
105
|
+
catch: (e) => mapToSecp256k1Error(e, "recover"),
|
|
106
|
+
});
|