voltaire-effect 0.2.23 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/KZGService-B7PJerOb.d.ts +146 -0
- package/dist/ProviderService-BZ5pqDrD.d.ts +319 -0
- package/dist/{X25519Test-DGsk1V9o.d.ts → X25519Test-D5Q-5fL9.d.ts} +4 -143
- package/dist/crypto/index.d.ts +5 -6
- package/dist/crypto/index.js +227 -201
- package/dist/{index-IgkEHjBe.d.ts → index-BCOuszKZ.d.ts} +17634 -11962
- package/dist/index.d.ts +3195 -976
- package/dist/index.js +6994 -4679
- package/dist/native/index.d.ts +25 -16
- package/dist/native/index.js +7020 -4705
- package/dist/primitives/index.d.ts +14 -8
- package/dist/primitives/index.js +4060 -2539
- package/dist/services/index.d.ts +9054 -30
- package/dist/services/index.js +1592 -1331
- package/package.json +2 -2
- package/src/crypto/ERC6492/ERC6492.test.ts +32 -14
- package/src/crypto/ERC6492/verifySignature.ts +4 -5
- package/src/crypto/Keccak256/Keccak256.test.ts +42 -1
- package/src/crypto/Keccak256/hashSync.ts +53 -0
- package/src/crypto/Keccak256/index.ts +2 -0
- package/src/index.ts +7 -2
- package/src/primitives/Abi/decode.test.ts +38 -0
- package/src/primitives/Abi/decode.ts +67 -0
- package/src/primitives/Abi/decodeData.test.ts +37 -0
- package/src/primitives/Abi/decodeData.ts +77 -0
- package/src/primitives/Abi/decodeLog.test.ts +32 -0
- package/src/primitives/Abi/decodeLog.ts +81 -0
- package/src/primitives/Abi/decodeWrappedError.test.ts +41 -0
- package/src/primitives/Abi/decodeWrappedError.ts +68 -0
- package/src/primitives/Abi/encode.test.ts +43 -0
- package/src/primitives/Abi/encode.ts +67 -0
- package/src/primitives/Abi/encodePacked.test.ts +35 -0
- package/src/primitives/Abi/encodePacked.ts +62 -0
- package/src/primitives/Abi/encodeWrappedError.test.ts +21 -0
- package/src/primitives/Abi/encodeWrappedError.ts +64 -0
- package/src/primitives/Abi/findSelectorCollisions.test.ts +50 -0
- package/src/primitives/Abi/findSelectorCollisions.ts +83 -0
- package/src/primitives/Abi/index.ts +33 -7
- package/src/primitives/Abi/parseLogs.test.ts +37 -0
- package/src/primitives/Abi/parseLogs.ts +62 -0
- package/src/primitives/AccessList/AccessList.test.ts +229 -0
- package/src/primitives/AccessList/AccessListTypeSchema.ts +16 -0
- package/src/primitives/AccessList/addressCount.ts +21 -0
- package/src/primitives/AccessList/assertValid.ts +37 -0
- package/src/primitives/AccessList/create.ts +19 -0
- package/src/primitives/AccessList/deduplicate.ts +23 -0
- package/src/primitives/AccessList/from.ts +39 -0
- package/src/primitives/AccessList/fromBytes.ts +36 -0
- package/src/primitives/AccessList/gasCost.ts +22 -0
- package/src/primitives/AccessList/gasSavings.ts +26 -0
- package/src/primitives/AccessList/hasSavings.ts +23 -0
- package/src/primitives/AccessList/includesAddress.ts +25 -0
- package/src/primitives/AccessList/includesStorageKey.ts +28 -0
- package/src/primitives/AccessList/index.ts +99 -19
- package/src/primitives/AccessList/is.ts +23 -0
- package/src/primitives/AccessList/isEmpty.ts +23 -0
- package/src/primitives/AccessList/isItem.ts +22 -0
- package/src/primitives/AccessList/keysFor.ts +29 -0
- package/src/primitives/AccessList/merge.ts +24 -0
- package/src/primitives/AccessList/storageKeyCount.ts +21 -0
- package/src/primitives/AccessList/toBytes.ts +23 -0
- package/src/primitives/AccessList/withAddress.ts +27 -0
- package/src/primitives/AccessList/withStorageKey.ts +30 -0
- package/src/primitives/Address/Address.test.ts +146 -0
- package/src/primitives/Address/assert.ts +51 -0
- package/src/primitives/Address/calculateCreate2Address.ts +33 -0
- package/src/primitives/Address/calculateCreateAddress.ts +30 -0
- package/src/primitives/Address/deduplicateAddresses.ts +20 -0
- package/src/primitives/Address/from.ts +41 -0
- package/src/primitives/Address/fromAbiEncoded.ts +35 -0
- package/src/primitives/Address/fromBase64.ts +25 -0
- package/src/primitives/Address/fromBytes.ts +25 -0
- package/src/primitives/Address/fromHex.ts +31 -0
- package/src/primitives/Address/fromNumber.ts +25 -0
- package/src/primitives/Address/fromPrivateKey.ts +25 -0
- package/src/primitives/Address/fromPublicKey.ts +56 -0
- package/src/primitives/Address/index.ts +99 -35
- package/src/primitives/Address/is.ts +20 -0
- package/src/primitives/Address/isAddress.ts +22 -0
- package/src/primitives/Address/sortAddresses.ts +19 -0
- package/src/primitives/Address/toChecksummed.ts +32 -0
- package/src/primitives/Address/toHex.ts +18 -0
- package/src/primitives/Address/zero.ts +18 -0
- package/src/primitives/Base64/Base64.test.ts +75 -0
- package/src/primitives/Base64/convert.ts +37 -0
- package/src/primitives/Base64/decode.ts +59 -0
- package/src/primitives/Base64/encode.ts +42 -0
- package/src/primitives/Base64/from.ts +39 -0
- package/src/primitives/Base64/index.ts +81 -1
- package/src/primitives/Base64/size.ts +16 -0
- package/src/primitives/Base64/validation.ts +16 -0
- package/src/primitives/Blob/Blob.test.ts +292 -0
- package/src/primitives/Blob/calculateGas.ts +30 -0
- package/src/primitives/Blob/estimateBlobCount.ts +30 -0
- package/src/primitives/Blob/from.ts +38 -0
- package/src/primitives/Blob/fromData.ts +36 -0
- package/src/primitives/Blob/index.ts +99 -12
- package/src/primitives/Blob/isValidVersion.ts +27 -0
- package/src/primitives/Blob/joinData.ts +43 -0
- package/src/primitives/Blob/splitData.ts +36 -0
- package/src/primitives/Blob/toCommitment.ts +43 -0
- package/src/primitives/Blob/toProof.ts +50 -0
- package/src/primitives/Blob/toVersionedHash.ts +35 -0
- package/src/primitives/Blob/verify.ts +49 -0
- package/src/primitives/Blob/verifyBatch.ts +119 -0
- package/src/primitives/BloomFilter/BloomFilter.test.ts +138 -0
- package/src/primitives/BloomFilter/add.ts +23 -0
- package/src/primitives/BloomFilter/combine.ts +21 -0
- package/src/primitives/BloomFilter/contains.ts +26 -0
- package/src/primitives/BloomFilter/create.ts +35 -0
- package/src/primitives/BloomFilter/density.ts +22 -0
- package/src/primitives/BloomFilter/expectedFalsePositiveRate.ts +25 -0
- package/src/primitives/BloomFilter/fromHex.ts +37 -0
- package/src/primitives/BloomFilter/hash.ts +43 -0
- package/src/primitives/BloomFilter/index.ts +59 -37
- package/src/primitives/BloomFilter/isEmpty.ts +22 -0
- package/src/primitives/BloomFilter/merge.ts +24 -0
- package/src/primitives/BloomFilter/toHex.ts +22 -0
- package/src/primitives/Bytecode/analyze.ts +58 -0
- package/src/primitives/Bytecode/detectFusions.ts +10 -0
- package/src/primitives/Bytecode/equals.ts +10 -0
- package/src/primitives/Bytecode/extractRuntime.ts +12 -0
- package/src/primitives/Bytecode/format.ts +16 -0
- package/src/primitives/Bytecode/from.ts +16 -0
- package/src/primitives/Bytecode/fromHex.ts +14 -0
- package/src/primitives/Bytecode/getBlock.ts +12 -0
- package/src/primitives/Bytecode/getNextPc.ts +12 -0
- package/src/primitives/Bytecode/getPushSize.ts +8 -0
- package/src/primitives/Bytecode/hasMetadata.ts +10 -0
- package/src/primitives/Bytecode/hash.ts +9 -0
- package/src/primitives/Bytecode/index.ts +103 -13
- package/src/primitives/Bytecode/isPush.ts +8 -0
- package/src/primitives/Bytecode/isTerminator.ts +8 -0
- package/src/primitives/Bytecode/isValidJumpDest.ts +12 -0
- package/src/primitives/Bytecode/parseInstructions.ts +10 -0
- package/src/primitives/Bytecode/prettyPrint.ts +12 -0
- package/src/primitives/Bytecode/scan.ts +20 -0
- package/src/primitives/Bytecode/size.ts +9 -0
- package/src/primitives/Bytecode/stripMetadata.ts +10 -0
- package/src/primitives/Bytecode/toAbi.ts +10 -0
- package/src/primitives/Bytecode/toHex.ts +10 -0
- package/src/primitives/Bytecode/types.ts +23 -0
- package/src/primitives/Bytecode/validate.ts +9 -0
- package/src/primitives/ContractSignature/ContractSignature.test.ts +1 -13
- package/src/primitives/ContractSignature/verifySignature.ts +88 -62
- package/src/primitives/Ens/Ens.test.ts +71 -0
- package/src/primitives/Ens/convert.ts +13 -0
- package/src/primitives/Ens/from.ts +32 -0
- package/src/primitives/Ens/hash.ts +46 -0
- package/src/primitives/Ens/index.ts +86 -4
- package/src/primitives/Ens/normalize.ts +45 -0
- package/src/primitives/Ens/validation.ts +38 -0
- package/src/primitives/EventLog/accessors.ts +32 -0
- package/src/primitives/EventLog/clone.ts +17 -0
- package/src/primitives/EventLog/create.ts +46 -0
- package/src/primitives/EventLog/filtering.ts +48 -0
- package/src/primitives/EventLog/index.ts +96 -6
- package/src/primitives/EventLog/status.ts +17 -0
- package/src/primitives/EventLog/toRpc.ts +49 -0
- package/src/primitives/Hardfork/HardforkSchema.ts +3 -3
- package/src/primitives/Hardfork/allIds.ts +13 -0
- package/src/primitives/Hardfork/allNames.ts +13 -0
- package/src/primitives/Hardfork/compare.ts +17 -0
- package/src/primitives/Hardfork/comparisons.ts +45 -0
- package/src/primitives/Hardfork/equals.ts +17 -0
- package/src/primitives/Hardfork/features.ts +61 -0
- package/src/primitives/Hardfork/fromString.ts +16 -0
- package/src/primitives/Hardfork/index.ts +128 -18
- package/src/primitives/Hardfork/isValidName.ts +14 -0
- package/src/primitives/Hardfork/minMax.ts +23 -0
- package/src/primitives/Hardfork/range.ts +19 -0
- package/src/primitives/Hardfork/toString.ts +16 -0
- package/src/primitives/Hash/Hash.test.ts +104 -0
- package/src/primitives/Hash/from.ts +47 -0
- package/src/primitives/Hash/fromBytes.ts +46 -0
- package/src/primitives/Hash/fromHex.ts +44 -0
- package/src/primitives/Hash/index.ts +45 -8
- package/src/primitives/Hash/isHash.ts +31 -0
- package/src/primitives/Hash/toHex.ts +29 -0
- package/src/primitives/Hex/Hex.test.ts +327 -153
- package/src/primitives/Hex/assertSize.ts +41 -0
- package/src/primitives/Hex/concat.ts +37 -0
- package/src/primitives/Hex/from.ts +38 -0
- package/src/primitives/Hex/fromBigInt.ts +40 -0
- package/src/primitives/Hex/fromBoolean.ts +29 -0
- package/src/primitives/Hex/fromNumber.ts +41 -0
- package/src/primitives/Hex/fromString.ts +28 -0
- package/src/primitives/Hex/index.ts +68 -37
- package/src/primitives/Hex/pad.ts +40 -0
- package/src/primitives/Hex/padRight.ts +39 -0
- package/src/primitives/Hex/size.ts +29 -0
- package/src/primitives/Hex/slice.ts +42 -0
- package/src/primitives/Hex/toBigInt.ts +27 -0
- package/src/primitives/Hex/toBoolean.ts +38 -0
- package/src/primitives/Hex/toNumber.ts +37 -0
- package/src/primitives/Hex/toStringHex.ts +39 -0
- package/src/primitives/Hex/trim.ts +27 -0
- package/src/primitives/Hex/validate.ts +37 -0
- package/src/primitives/Hex/xor.ts +39 -0
- package/src/primitives/Opcode/OpcodeSchema.ts +1 -1
- package/src/primitives/Opcode/disassemble.ts +15 -0
- package/src/primitives/Opcode/dupPosition.ts +15 -0
- package/src/primitives/Opcode/format.ts +15 -0
- package/src/primitives/Opcode/getters.ts +54 -0
- package/src/primitives/Opcode/index.ts +301 -11
- package/src/primitives/Opcode/info.ts +18 -0
- package/src/primitives/Opcode/jumpDests.ts +15 -0
- package/src/primitives/Opcode/logTopics.ts +15 -0
- package/src/primitives/Opcode/name.ts +15 -0
- package/src/primitives/Opcode/parse.ts +15 -0
- package/src/primitives/Opcode/predicates.ts +72 -0
- package/src/primitives/Opcode/pushBytes.ts +15 -0
- package/src/primitives/Opcode/pushOpcode.ts +15 -0
- package/src/primitives/Opcode/swapPosition.ts +15 -0
- package/src/primitives/Rlp/decodeBatch.ts +46 -0
- package/src/primitives/Rlp/decodeObject.ts +46 -0
- package/src/primitives/Rlp/decodeValue.ts +51 -0
- package/src/primitives/Rlp/encodeBatch.ts +50 -0
- package/src/primitives/Rlp/encodeObject.ts +48 -0
- package/src/primitives/Rlp/encodeVariadic.ts +49 -0
- package/src/primitives/Rlp/equals.ts +22 -0
- package/src/primitives/Rlp/from.ts +44 -0
- package/src/primitives/Rlp/fromJSON.ts +45 -0
- package/src/primitives/Rlp/getEncodedLength.ts +47 -0
- package/src/primitives/Rlp/getLength.ts +44 -0
- package/src/primitives/Rlp/index.ts +67 -14
- package/src/primitives/Rlp/isBytesData.ts +21 -0
- package/src/primitives/Rlp/isCanonical.ts +32 -0
- package/src/primitives/Rlp/isData.ts +21 -0
- package/src/primitives/Rlp/isList.ts +46 -0
- package/src/primitives/Rlp/isListData.ts +21 -0
- package/src/primitives/Rlp/isString.ts +46 -0
- package/src/primitives/Rlp/toJSON.ts +20 -0
- package/src/primitives/Rlp/toRaw.ts +31 -0
- package/src/primitives/Signature/Signature.test.ts +217 -0
- package/src/primitives/Signature/from.ts +38 -0
- package/src/primitives/Signature/fromBytes.ts +31 -0
- package/src/primitives/Signature/fromCompact.ts +33 -0
- package/src/primitives/Signature/fromDER.ts +35 -0
- package/src/primitives/Signature/fromEd25519.ts +24 -0
- package/src/primitives/Signature/fromHex.ts +29 -0
- package/src/primitives/Signature/fromP256.ts +25 -0
- package/src/primitives/Signature/fromRpc.ts +38 -0
- package/src/primitives/Signature/fromSecp256k1.ts +29 -0
- package/src/primitives/Signature/fromTuple.ts +33 -0
- package/src/primitives/Signature/getR.ts +24 -0
- package/src/primitives/Signature/getS.ts +24 -0
- package/src/primitives/Signature/getV.ts +24 -0
- package/src/primitives/Signature/index.ts +61 -11
- package/src/primitives/Signature/toDER.ts +24 -0
- package/src/primitives/Signature/toHex.ts +24 -0
- package/src/primitives/Signature/toRpc.ts +35 -0
- package/src/primitives/Signature/toTuple.ts +29 -0
- package/src/primitives/Signature/verify.ts +31 -0
- package/src/primitives/Siwe/create.ts +56 -0
- package/src/primitives/Siwe/hash.ts +27 -0
- package/src/primitives/Siwe/index.ts +57 -21
- package/src/primitives/Siwe/parse.ts +24 -0
- package/src/primitives/Siwe/verify.ts +47 -0
- package/src/primitives/Transaction/Transaction.test.ts +309 -0
- package/src/primitives/Transaction/index.ts +467 -2
- package/src/primitives/Uint/Uint.test.ts +200 -0
- package/src/primitives/Uint/dividedBy.ts +34 -0
- package/src/primitives/Uint/from.ts +35 -0
- package/src/primitives/Uint/fromAbiEncoded.ts +29 -0
- package/src/primitives/Uint/fromBigInt.ts +30 -0
- package/src/primitives/Uint/fromBytes.ts +32 -0
- package/src/primitives/Uint/fromHex.ts +32 -0
- package/src/primitives/Uint/fromNumber.ts +30 -0
- package/src/primitives/Uint/index.ts +90 -45
- package/src/primitives/Uint/isUint256.ts +25 -0
- package/src/primitives/Uint/isValid.ts +25 -0
- package/src/primitives/Uint/modulo.ts +34 -0
- package/src/primitives/Uint/toHex.ts +31 -0
- package/src/primitives/Uint/tryFrom.ts +30 -0
- package/src/services/Contract/Contract.test.ts +46 -41
- package/src/services/Contract/Contract.ts +25 -29
- package/src/services/Contract/ContractTypes.ts +6 -3
- package/src/services/Contract/estimateGas.test.ts +21 -9
- package/src/services/Contract/estimateGas.ts +21 -23
- package/src/services/Debug/Debug.ts +1 -1
- package/src/services/Debug/DebugService.ts +1 -1
- package/src/services/FeeEstimator/DefaultFeeEstimator.ts +10 -6
- package/src/services/FeeEstimator/FeeEstimator.test.ts +68 -62
- package/src/services/Multicall/BalanceResolver.ts +1 -1
- package/src/services/Multicall/GetBalance.ts +1 -1
- package/src/services/Multicall/Multicall.ts +1 -1
- package/src/services/NonceManager/DefaultNonceManager.ts +4 -7
- package/src/services/NonceManager/NonceManager.test.ts +20 -33
- package/src/services/Provider/Provider.test.ts +155 -349
- package/src/services/Provider/Provider.ts +14 -1180
- package/src/services/Provider/ProviderService.ts +14 -1199
- package/src/services/Provider/actions/multicall.test.ts +29 -39
- package/src/services/Provider/actions/multicall.ts +2 -2
- package/src/services/Provider/actions/readContract.test.ts +45 -50
- package/src/services/Provider/actions/readContract.ts +2 -6
- package/src/services/Provider/actions/simulateContract.test.ts +55 -232
- package/src/services/Provider/actions/simulateContract.ts +2 -3
- package/src/services/Provider/ens/getEnsAddress.ts +11 -14
- package/src/services/Provider/ens/getEnsName.ts +15 -18
- package/src/services/Provider/ens/getEnsResolver.ts +11 -14
- package/src/services/Provider/ens/getEnsText.ts +15 -18
- package/src/services/Provider/functions/backfillBlocks.ts +97 -0
- package/src/services/Provider/functions/call.ts +45 -0
- package/src/services/Provider/functions/createAccessList.ts +61 -0
- package/src/services/Provider/functions/createBlockFilter.ts +41 -0
- package/src/services/Provider/functions/createEventFilter.ts +43 -0
- package/src/services/Provider/functions/createPendingTransactionFilter.ts +41 -0
- package/src/services/Provider/functions/estimateGas.ts +52 -0
- package/src/services/Provider/functions/getAccounts.ts +40 -0
- package/src/services/Provider/functions/getBalance.ts +50 -0
- package/src/services/Provider/functions/getBlobBaseFee.ts +46 -0
- package/src/services/Provider/functions/getBlock.ts +95 -0
- package/src/services/Provider/functions/getBlockNumber.ts +51 -0
- package/src/services/Provider/functions/getBlockReceipts.ts +78 -0
- package/src/services/Provider/functions/getBlockTransactionCount.ts +86 -0
- package/src/services/Provider/functions/getChainId.ts +46 -0
- package/src/services/Provider/functions/getCode.ts +43 -0
- package/src/services/Provider/functions/getCoinbase.ts +40 -0
- package/src/services/Provider/functions/getFeeHistory.ts +85 -0
- package/src/services/Provider/functions/getFilterChanges.ts +42 -0
- package/src/services/Provider/functions/getFilterLogs.ts +44 -0
- package/src/services/Provider/functions/getGasPrice.ts +46 -0
- package/src/services/Provider/functions/getHashrate.ts +46 -0
- package/src/services/Provider/functions/getLogs.ts +45 -0
- package/src/services/Provider/functions/getMaxPriorityFeePerGas.ts +46 -0
- package/src/services/Provider/functions/getMining.ts +40 -0
- package/src/services/Provider/functions/getProof.ts +52 -0
- package/src/services/Provider/functions/getProtocolVersion.ts +40 -0
- package/src/services/Provider/functions/getStorageAt.ts +52 -0
- package/src/services/Provider/functions/getSyncing.ts +56 -0
- package/src/services/Provider/functions/getTransaction.ts +57 -0
- package/src/services/Provider/functions/getTransactionByBlockHashAndIndex.ts +73 -0
- package/src/services/Provider/functions/getTransactionByBlockNumberAndIndex.ts +86 -0
- package/src/services/Provider/functions/getTransactionConfirmations.ts +70 -0
- package/src/services/Provider/functions/getTransactionCount.ts +50 -0
- package/src/services/Provider/functions/getTransactionReceipt.ts +57 -0
- package/src/services/Provider/functions/getUncle.ts +97 -0
- package/src/services/Provider/functions/getUncleCount.ts +86 -0
- package/src/services/Provider/functions/index.ts +73 -0
- package/src/services/Provider/functions/netVersion.ts +40 -0
- package/src/services/Provider/functions/sendRawTransaction.ts +40 -0
- package/src/services/Provider/functions/sendTransaction.ts +48 -0
- package/src/services/Provider/functions/sign.ts +50 -0
- package/src/services/Provider/functions/signTransaction.ts +52 -0
- package/src/services/Provider/functions/simulateV1.ts +95 -0
- package/src/services/Provider/functions/simulateV2.ts +51 -0
- package/src/services/Provider/functions/subscribe.ts +49 -0
- package/src/services/Provider/functions/uninstallFilter.ts +40 -0
- package/src/services/Provider/functions/unsubscribe.ts +41 -0
- package/src/services/Provider/functions/waitForTransactionReceipt.ts +168 -0
- package/src/services/Provider/functions/watchBlocks.ts +98 -0
- package/src/services/Provider/index.ts +29 -178
- package/src/services/Provider/types.ts +780 -0
- package/src/services/Provider/utils.ts +204 -0
- package/src/services/RawProvider/ForkProviderTransport.ts +2 -3
- package/src/services/RawProvider/HttpProviderTransport.ts +3 -3
- package/src/services/RawProvider/InMemoryProviderTransport.ts +3 -3
- package/src/services/RawProvider/WebSocketProviderTransport.ts +3 -3
- package/src/services/Signer/Signer.test.ts +211 -187
- package/src/services/Signer/Signer.ts +26 -16
- package/src/services/Signer/actions/deployContract.test.ts +125 -105
- package/src/services/Signer/actions/deployContract.ts +3 -2
- package/src/services/Signer/actions/prepareAuthorization.test.ts +47 -48
- package/src/services/Signer/actions/prepareAuthorization.ts +3 -3
- package/src/services/Signer/actions/signAuthorization.test.ts +39 -45
- package/src/services/Signer/actions/signAuthorization.ts +3 -3
- package/src/services/Signer/actions/writeContract.test.ts +41 -57
- package/src/services/Transport/FallbackTransport.ts +3 -3
- package/src/services/Transport/HttpTransport.ts +3 -3
- package/src/services/Transport/config.ts +7 -7
- package/src/services/Transport/index.ts +3 -4
- package/src/services/errors.test.ts +3 -8
- package/src/services/index.ts +8 -90
- package/src/services/presets/index.ts +9 -10
- package/src/services/presets/presets.test.ts +14 -29
- package/src/standards/ERC165.test.ts +19 -20
- package/src/standards/ERC165.ts +9 -11
- package/src/type-exports.test.ts +37 -0
- package/dist/AccountService-BetXokad.d.ts +0 -1717
- package/dist/RpcResolver-BpvqybjD.d.ts +0 -6439
- package/src/services/Provider/Account.ts +0 -33
- package/src/services/Provider/AccountService.ts +0 -84
- package/src/services/Provider/Blocks.ts +0 -32
- package/src/services/Provider/BlocksService.ts +0 -73
- package/src/services/Provider/Events.ts +0 -33
- package/src/services/Provider/EventsService.ts +0 -71
- package/src/services/Provider/Network.ts +0 -41
- package/src/services/Provider/NetworkService.ts +0 -114
- package/src/services/Provider/Simulation.ts +0 -34
- package/src/services/Provider/SimulationService.ts +0 -161
- package/src/services/Provider/Streaming.ts +0 -30
- package/src/services/Provider/StreamingService.ts +0 -58
- package/src/services/Provider/Transaction.ts +0 -39
- package/src/services/Provider/TransactionService.ts +0 -83
- package/src/services/Provider/filters.ts +0 -91
- package/src/services/Provider/getBlobBaseFee.ts +0 -170
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to get the uncle count in a block.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/getUncleCount
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import {
|
|
11
|
+
type BlockTag,
|
|
12
|
+
type GetUncleCountArgs,
|
|
13
|
+
ProviderResponseError,
|
|
14
|
+
} from "../types.js";
|
|
15
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Gets the number of uncles in a block.
|
|
19
|
+
*
|
|
20
|
+
* @param args - Block identifier (blockTag or blockHash)
|
|
21
|
+
* @returns Effect yielding the uncle count as bigint
|
|
22
|
+
*
|
|
23
|
+
* @since 0.4.0
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { Effect } from 'effect'
|
|
28
|
+
* import { getUncleCount, Provider, HttpTransport } from 'voltaire-effect'
|
|
29
|
+
*
|
|
30
|
+
* const program = Effect.gen(function* () {
|
|
31
|
+
* // Get uncle count for latest block
|
|
32
|
+
* const count = yield* getUncleCount({})
|
|
33
|
+
*
|
|
34
|
+
* // Get by block hash
|
|
35
|
+
* const countByHash = yield* getUncleCount({
|
|
36
|
+
* blockHash: '0x...'
|
|
37
|
+
* })
|
|
38
|
+
* }).pipe(
|
|
39
|
+
* Effect.provide(Provider),
|
|
40
|
+
* Effect.provide(HttpTransport('https://mainnet.infura.io/v3/YOUR_KEY'))
|
|
41
|
+
* )
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export const getUncleCount = (
|
|
45
|
+
args: GetUncleCountArgs = {},
|
|
46
|
+
): Effect.Effect<bigint, TransportError | ProviderResponseError, ProviderService> =>
|
|
47
|
+
Effect.flatMap(ProviderService, (svc) => {
|
|
48
|
+
if ("blockHash" in args && args.blockHash !== undefined) {
|
|
49
|
+
const hash =
|
|
50
|
+
typeof args.blockHash === "string"
|
|
51
|
+
? args.blockHash
|
|
52
|
+
: `0x${Buffer.from(args.blockHash).toString("hex")}`;
|
|
53
|
+
return svc
|
|
54
|
+
.request<string>("eth_getUncleCountByBlockHash", [hash])
|
|
55
|
+
.pipe(
|
|
56
|
+
Effect.flatMap((hex) =>
|
|
57
|
+
Effect.try({
|
|
58
|
+
try: () => BigInt(hex),
|
|
59
|
+
catch: (error) =>
|
|
60
|
+
new ProviderResponseError(
|
|
61
|
+
hex,
|
|
62
|
+
"Invalid hex from eth_getUncleCountByBlockHash",
|
|
63
|
+
{ cause: error },
|
|
64
|
+
),
|
|
65
|
+
}),
|
|
66
|
+
),
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const blockTag: BlockTag = args.blockTag ?? "latest";
|
|
71
|
+
return svc
|
|
72
|
+
.request<string>("eth_getUncleCountByBlockNumber", [blockTag])
|
|
73
|
+
.pipe(
|
|
74
|
+
Effect.flatMap((hex) =>
|
|
75
|
+
Effect.try({
|
|
76
|
+
try: () => BigInt(hex),
|
|
77
|
+
catch: (error) =>
|
|
78
|
+
new ProviderResponseError(
|
|
79
|
+
hex,
|
|
80
|
+
"Invalid hex from eth_getUncleCountByBlockNumber",
|
|
81
|
+
{ cause: error },
|
|
82
|
+
),
|
|
83
|
+
}),
|
|
84
|
+
),
|
|
85
|
+
);
|
|
86
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free functions for Provider operations.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Block operations
|
|
9
|
+
export { getBlockNumber } from "./getBlockNumber.js";
|
|
10
|
+
export { getBlock } from "./getBlock.js";
|
|
11
|
+
export { getBlockTransactionCount } from "./getBlockTransactionCount.js";
|
|
12
|
+
export { getBlockReceipts } from "./getBlockReceipts.js";
|
|
13
|
+
export { getUncle } from "./getUncle.js";
|
|
14
|
+
export { getUncleCount } from "./getUncleCount.js";
|
|
15
|
+
|
|
16
|
+
// Account operations
|
|
17
|
+
export { getBalance } from "./getBalance.js";
|
|
18
|
+
export { getTransactionCount } from "./getTransactionCount.js";
|
|
19
|
+
export { getCode } from "./getCode.js";
|
|
20
|
+
export { getStorageAt } from "./getStorageAt.js";
|
|
21
|
+
export { getProof } from "./getProof.js";
|
|
22
|
+
|
|
23
|
+
// Transaction operations
|
|
24
|
+
export { getTransaction } from "./getTransaction.js";
|
|
25
|
+
export { getTransactionReceipt } from "./getTransactionReceipt.js";
|
|
26
|
+
export { getTransactionByBlockHashAndIndex } from "./getTransactionByBlockHashAndIndex.js";
|
|
27
|
+
export { getTransactionByBlockNumberAndIndex } from "./getTransactionByBlockNumberAndIndex.js";
|
|
28
|
+
export { sendRawTransaction } from "./sendRawTransaction.js";
|
|
29
|
+
export { getTransactionConfirmations } from "./getTransactionConfirmations.js";
|
|
30
|
+
export { waitForTransactionReceipt, type WaitForTransactionReceiptOptions } from "./waitForTransactionReceipt.js";
|
|
31
|
+
|
|
32
|
+
// Call and simulation operations
|
|
33
|
+
export { call } from "./call.js";
|
|
34
|
+
export { estimateGas } from "./estimateGas.js";
|
|
35
|
+
export { createAccessList, type CreateAccessListResult } from "./createAccessList.js";
|
|
36
|
+
export { simulateV1 } from "./simulateV1.js";
|
|
37
|
+
export { simulateV2 } from "./simulateV2.js";
|
|
38
|
+
|
|
39
|
+
// Event/Log operations
|
|
40
|
+
export { getLogs } from "./getLogs.js";
|
|
41
|
+
export { createEventFilter } from "./createEventFilter.js";
|
|
42
|
+
export { createBlockFilter } from "./createBlockFilter.js";
|
|
43
|
+
export { createPendingTransactionFilter } from "./createPendingTransactionFilter.js";
|
|
44
|
+
export { getFilterChanges } from "./getFilterChanges.js";
|
|
45
|
+
export { getFilterLogs } from "./getFilterLogs.js";
|
|
46
|
+
export { uninstallFilter } from "./uninstallFilter.js";
|
|
47
|
+
|
|
48
|
+
// Network operations
|
|
49
|
+
export { getChainId } from "./getChainId.js";
|
|
50
|
+
export { getGasPrice } from "./getGasPrice.js";
|
|
51
|
+
export { getMaxPriorityFeePerGas } from "./getMaxPriorityFeePerGas.js";
|
|
52
|
+
export { getFeeHistory } from "./getFeeHistory.js";
|
|
53
|
+
export { getBlobBaseFee } from "./getBlobBaseFee.js";
|
|
54
|
+
export { getSyncing } from "./getSyncing.js";
|
|
55
|
+
export { getAccounts } from "./getAccounts.js";
|
|
56
|
+
export { getCoinbase } from "./getCoinbase.js";
|
|
57
|
+
export { netVersion } from "./netVersion.js";
|
|
58
|
+
export { getProtocolVersion } from "./getProtocolVersion.js";
|
|
59
|
+
export { getMining } from "./getMining.js";
|
|
60
|
+
export { getHashrate } from "./getHashrate.js";
|
|
61
|
+
|
|
62
|
+
// Streaming operations
|
|
63
|
+
export { watchBlocks } from "./watchBlocks.js";
|
|
64
|
+
export { backfillBlocks } from "./backfillBlocks.js";
|
|
65
|
+
|
|
66
|
+
// Subscription operations
|
|
67
|
+
export { subscribe } from "./subscribe.js";
|
|
68
|
+
export { unsubscribe } from "./unsubscribe.js";
|
|
69
|
+
|
|
70
|
+
// Node-dependent operations (unlocked accounts)
|
|
71
|
+
export { sendTransaction } from "./sendTransaction.js";
|
|
72
|
+
export { sign } from "./sign.js";
|
|
73
|
+
export { signTransaction } from "./signTransaction.js";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to get the network version.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/netVersion
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Gets the network ID (net_version).
|
|
14
|
+
*
|
|
15
|
+
* @returns Effect yielding the network version as string
|
|
16
|
+
*
|
|
17
|
+
* @since 0.4.0
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { Effect } from 'effect'
|
|
22
|
+
* import { netVersion, Provider, HttpTransport } from 'voltaire-effect'
|
|
23
|
+
*
|
|
24
|
+
* const program = Effect.gen(function* () {
|
|
25
|
+
* const version = yield* netVersion()
|
|
26
|
+
* console.log('Network version:', version)
|
|
27
|
+
* }).pipe(
|
|
28
|
+
* Effect.provide(Provider),
|
|
29
|
+
* Effect.provide(HttpTransport('https://mainnet.infura.io/v3/YOUR_KEY'))
|
|
30
|
+
* )
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export const netVersion = (): Effect.Effect<
|
|
34
|
+
string,
|
|
35
|
+
TransportError,
|
|
36
|
+
ProviderService
|
|
37
|
+
> =>
|
|
38
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
39
|
+
svc.request<string>("net_version"),
|
|
40
|
+
);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to send a raw signed transaction.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/sendRawTransaction
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
10
|
+
import { ProviderService } from "../ProviderService.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Sends a raw signed transaction.
|
|
14
|
+
*
|
|
15
|
+
* @param signedTx - The signed transaction as a hex string
|
|
16
|
+
* @returns Effect yielding the transaction hash
|
|
17
|
+
*
|
|
18
|
+
* @since 0.4.0
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { Effect } from 'effect'
|
|
23
|
+
* import { sendRawTransaction, Provider, HttpTransport } from 'voltaire-effect'
|
|
24
|
+
*
|
|
25
|
+
* const program = Effect.gen(function* () {
|
|
26
|
+
* const signedTx = '0x...' // Your signed transaction
|
|
27
|
+
* const txHash = yield* sendRawTransaction(signedTx)
|
|
28
|
+
* console.log(`Transaction submitted: ${txHash}`)
|
|
29
|
+
* }).pipe(
|
|
30
|
+
* Effect.provide(Provider),
|
|
31
|
+
* Effect.provide(HttpTransport('https://mainnet.infura.io/v3/YOUR_KEY'))
|
|
32
|
+
* )
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export const sendRawTransaction = (
|
|
36
|
+
signedTx: `0x${string}`,
|
|
37
|
+
): Effect.Effect<`0x${string}`, TransportError, ProviderService> =>
|
|
38
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
39
|
+
svc.request<`0x${string}`>("eth_sendRawTransaction", [signedTx]),
|
|
40
|
+
);
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to send a transaction from an unlocked account.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/sendTransaction
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import { formatTransactionRequest, type RpcTransactionRequest } from "../utils.js";
|
|
11
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Sends a transaction from an unlocked account using eth_sendTransaction.
|
|
15
|
+
*
|
|
16
|
+
* This is a node-dependent operation that requires the from address to be
|
|
17
|
+
* unlocked on the node (e.g., for local development or test nodes).
|
|
18
|
+
* For sending signed transactions, use sendRawTransaction instead.
|
|
19
|
+
*
|
|
20
|
+
* @param tx - Transaction request with from, to, value, data, etc.
|
|
21
|
+
* @returns Effect yielding the transaction hash
|
|
22
|
+
*
|
|
23
|
+
* @since 0.4.0
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { Effect } from 'effect'
|
|
28
|
+
* import { sendTransaction, Provider, HttpTransport } from 'voltaire-effect'
|
|
29
|
+
*
|
|
30
|
+
* const program = Effect.gen(function* () {
|
|
31
|
+
* const txHash = yield* sendTransaction({
|
|
32
|
+
* from: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
33
|
+
* to: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
|
|
34
|
+
* value: 1000000000000000000n, // 1 ETH
|
|
35
|
+
* })
|
|
36
|
+
* console.log('Transaction hash:', txHash)
|
|
37
|
+
* }).pipe(
|
|
38
|
+
* Effect.provide(Provider),
|
|
39
|
+
* Effect.provide(HttpTransport('http://localhost:8545'))
|
|
40
|
+
* )
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export const sendTransaction = (
|
|
44
|
+
tx: RpcTransactionRequest,
|
|
45
|
+
): Effect.Effect<`0x${string}`, TransportError, ProviderService> =>
|
|
46
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
47
|
+
svc.request<`0x${string}`>("eth_sendTransaction", [formatTransactionRequest(tx)]),
|
|
48
|
+
);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to sign a message using an unlocked account.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/sign
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import { toAddressHex } from "../utils.js";
|
|
11
|
+
import type { AddressInput } from "../types.js";
|
|
12
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Signs a message using an unlocked account via eth_sign.
|
|
16
|
+
*
|
|
17
|
+
* This is a node-dependent operation that requires the address to be
|
|
18
|
+
* unlocked on the node. The message is prefixed with the Ethereum
|
|
19
|
+
* signed message prefix before signing.
|
|
20
|
+
*
|
|
21
|
+
* @param address - Address of the account to sign with
|
|
22
|
+
* @param message - Hex-encoded message to sign
|
|
23
|
+
* @returns Effect yielding the signature
|
|
24
|
+
*
|
|
25
|
+
* @since 0.4.0
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { Effect } from 'effect'
|
|
30
|
+
* import { sign, Provider, HttpTransport } from 'voltaire-effect'
|
|
31
|
+
*
|
|
32
|
+
* const program = Effect.gen(function* () {
|
|
33
|
+
* const signature = yield* sign(
|
|
34
|
+
* '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
35
|
+
* '0x48656c6c6f20576f726c64' // "Hello World"
|
|
36
|
+
* )
|
|
37
|
+
* console.log('Signature:', signature)
|
|
38
|
+
* }).pipe(
|
|
39
|
+
* Effect.provide(Provider),
|
|
40
|
+
* Effect.provide(HttpTransport('http://localhost:8545'))
|
|
41
|
+
* )
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export const sign = (
|
|
45
|
+
address: AddressInput,
|
|
46
|
+
message: `0x${string}`,
|
|
47
|
+
): Effect.Effect<`0x${string}`, TransportError, ProviderService> =>
|
|
48
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
49
|
+
svc.request<`0x${string}`>("eth_sign", [toAddressHex(address), message]),
|
|
50
|
+
);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to sign a transaction using an unlocked account.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/signTransaction
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import { formatTransactionRequest, type RpcTransactionRequest } from "../utils.js";
|
|
11
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Signs a transaction using an unlocked account via eth_signTransaction.
|
|
15
|
+
*
|
|
16
|
+
* This is a node-dependent operation that requires the from address to be
|
|
17
|
+
* unlocked on the node. Returns the signed transaction data that can be
|
|
18
|
+
* broadcast later using sendRawTransaction.
|
|
19
|
+
*
|
|
20
|
+
* @param tx - Transaction request to sign
|
|
21
|
+
* @returns Effect yielding the signed transaction data
|
|
22
|
+
*
|
|
23
|
+
* @since 0.4.0
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* import { Effect } from 'effect'
|
|
28
|
+
* import { signTransaction, sendRawTransaction, Provider, HttpTransport } from 'voltaire-effect'
|
|
29
|
+
*
|
|
30
|
+
* const program = Effect.gen(function* () {
|
|
31
|
+
* const signedTx = yield* signTransaction({
|
|
32
|
+
* from: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
33
|
+
* to: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8',
|
|
34
|
+
* value: 1000000000000000000n,
|
|
35
|
+
* nonce: 0n,
|
|
36
|
+
* gas: 21000n,
|
|
37
|
+
* maxFeePerGas: 20000000000n,
|
|
38
|
+
* maxPriorityFeePerGas: 1000000000n,
|
|
39
|
+
* })
|
|
40
|
+
* console.log('Signed transaction:', signedTx)
|
|
41
|
+
* }).pipe(
|
|
42
|
+
* Effect.provide(Provider),
|
|
43
|
+
* Effect.provide(HttpTransport('http://localhost:8545'))
|
|
44
|
+
* )
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export const signTransaction = (
|
|
48
|
+
tx: RpcTransactionRequest,
|
|
49
|
+
): Effect.Effect<unknown, TransportError, ProviderService> =>
|
|
50
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
51
|
+
svc.request<unknown>("eth_signTransaction", [formatTransactionRequest(tx)]),
|
|
52
|
+
);
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to simulate multiple blocks and calls with eth_simulateV1.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/simulateV1
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import type {
|
|
11
|
+
BlockTag,
|
|
12
|
+
SimulateV1Payload,
|
|
13
|
+
SimulateV1Result,
|
|
14
|
+
SimulateV1Error,
|
|
15
|
+
} from "../types.js";
|
|
16
|
+
import { formatCallRequest, toAddressHex } from "../utils.js";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Formats a SimulateV1Payload for JSON-RPC submission.
|
|
20
|
+
*/
|
|
21
|
+
const formatSimulateV1Payload = (payload: SimulateV1Payload): unknown => {
|
|
22
|
+
return {
|
|
23
|
+
blockStateCalls: payload.blockStateCalls.map((block) => ({
|
|
24
|
+
...(block.blockOverrides && {
|
|
25
|
+
blockOverrides: {
|
|
26
|
+
...(block.blockOverrides.number !== undefined && {
|
|
27
|
+
number: `0x${block.blockOverrides.number.toString(16)}`,
|
|
28
|
+
}),
|
|
29
|
+
...(block.blockOverrides.difficulty !== undefined && {
|
|
30
|
+
difficulty: `0x${block.blockOverrides.difficulty.toString(16)}`,
|
|
31
|
+
}),
|
|
32
|
+
...(block.blockOverrides.time !== undefined && {
|
|
33
|
+
time: `0x${block.blockOverrides.time.toString(16)}`,
|
|
34
|
+
}),
|
|
35
|
+
...(block.blockOverrides.gasLimit !== undefined && {
|
|
36
|
+
gasLimit: `0x${block.blockOverrides.gasLimit.toString(16)}`,
|
|
37
|
+
}),
|
|
38
|
+
...(block.blockOverrides.coinbase !== undefined && {
|
|
39
|
+
coinbase: toAddressHex(block.blockOverrides.coinbase),
|
|
40
|
+
}),
|
|
41
|
+
...(block.blockOverrides.baseFee !== undefined && {
|
|
42
|
+
baseFee: `0x${block.blockOverrides.baseFee.toString(16)}`,
|
|
43
|
+
}),
|
|
44
|
+
},
|
|
45
|
+
}),
|
|
46
|
+
...(block.stateOverrides && { stateOverrides: block.stateOverrides }),
|
|
47
|
+
calls: block.calls.map(formatCallRequest),
|
|
48
|
+
})),
|
|
49
|
+
...(payload.traceTransfers !== undefined && { traceTransfers: payload.traceTransfers }),
|
|
50
|
+
...(payload.validation !== undefined && { validation: payload.validation }),
|
|
51
|
+
...(payload.returnFullTransactions !== undefined && {
|
|
52
|
+
returnFullTransactions: payload.returnFullTransactions,
|
|
53
|
+
}),
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Simulates multiple blocks and calls using eth_simulateV1.
|
|
59
|
+
*
|
|
60
|
+
* Note: This method is optional and not supported by all nodes.
|
|
61
|
+
*
|
|
62
|
+
* @param payload - The simulation payload
|
|
63
|
+
* @param blockTag - Block to simulate from (default: "latest")
|
|
64
|
+
* @returns Effect yielding the simulation results
|
|
65
|
+
*
|
|
66
|
+
* @since 0.4.0
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* import { Effect } from 'effect'
|
|
71
|
+
* import { simulateV1, Provider, HttpTransport } from 'voltaire-effect'
|
|
72
|
+
*
|
|
73
|
+
* const program = Effect.gen(function* () {
|
|
74
|
+
* const results = yield* simulateV1({
|
|
75
|
+
* blockStateCalls: [{
|
|
76
|
+
* calls: [{
|
|
77
|
+
* to: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
78
|
+
* data: '0x...'
|
|
79
|
+
* }]
|
|
80
|
+
* }]
|
|
81
|
+
* })
|
|
82
|
+
* console.log(results)
|
|
83
|
+
* }).pipe(
|
|
84
|
+
* Effect.provide(Provider),
|
|
85
|
+
* Effect.provide(HttpTransport('https://mainnet.infura.io/v3/YOUR_KEY'))
|
|
86
|
+
* )
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export const simulateV1 = (
|
|
90
|
+
payload: SimulateV1Payload,
|
|
91
|
+
blockTag: BlockTag = "latest",
|
|
92
|
+
): Effect.Effect<SimulateV1Result, SimulateV1Error, ProviderService> =>
|
|
93
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
94
|
+
svc.request<SimulateV1Result>("eth_simulateV1", [formatSimulateV1Payload(payload), blockTag]),
|
|
95
|
+
);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to simulate with eth_simulateV2.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/simulateV2
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import type {
|
|
11
|
+
BlockTag,
|
|
12
|
+
SimulateV2Payload,
|
|
13
|
+
SimulateV2Result,
|
|
14
|
+
SimulateV2Error,
|
|
15
|
+
} from "../types.js";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Simulates using eth_simulateV2 (draft/evolving API).
|
|
19
|
+
*
|
|
20
|
+
* Note: This method is optional and not supported by all nodes.
|
|
21
|
+
* The API is still evolving and may change.
|
|
22
|
+
*
|
|
23
|
+
* @param payload - The simulation payload (schema may evolve)
|
|
24
|
+
* @param blockTag - Block to simulate from (default: "latest")
|
|
25
|
+
* @returns Effect yielding the simulation results
|
|
26
|
+
*
|
|
27
|
+
* @since 0.4.0
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { Effect } from 'effect'
|
|
32
|
+
* import { simulateV2, Provider, HttpTransport } from 'voltaire-effect'
|
|
33
|
+
*
|
|
34
|
+
* const program = Effect.gen(function* () {
|
|
35
|
+
* const results = yield* simulateV2({
|
|
36
|
+
* // payload format may evolve
|
|
37
|
+
* })
|
|
38
|
+
* console.log(results)
|
|
39
|
+
* }).pipe(
|
|
40
|
+
* Effect.provide(Provider),
|
|
41
|
+
* Effect.provide(HttpTransport('https://mainnet.infura.io/v3/YOUR_KEY'))
|
|
42
|
+
* )
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export const simulateV2 = <TResult = SimulateV2Result>(
|
|
46
|
+
payload: SimulateV2Payload,
|
|
47
|
+
blockTag: BlockTag = "latest",
|
|
48
|
+
): Effect.Effect<TResult, SimulateV2Error, ProviderService> =>
|
|
49
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
50
|
+
svc.request<TResult>("eth_simulateV2", [payload, blockTag]),
|
|
51
|
+
);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to subscribe to Ethereum events via eth_subscribe.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/subscribe
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Subscribes to Ethereum events using eth_subscribe.
|
|
14
|
+
*
|
|
15
|
+
* Requires a WebSocket transport that supports subscriptions.
|
|
16
|
+
*
|
|
17
|
+
* @param subscription - Subscription type (e.g., 'newHeads', 'logs', 'newPendingTransactions')
|
|
18
|
+
* @param params - Optional subscription parameters
|
|
19
|
+
* @returns Effect yielding the subscription ID
|
|
20
|
+
*
|
|
21
|
+
* @since 0.4.0
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* import { Effect } from 'effect'
|
|
26
|
+
* import { subscribe, Provider, WebSocketTransport } from 'voltaire-effect'
|
|
27
|
+
*
|
|
28
|
+
* const program = Effect.gen(function* () {
|
|
29
|
+
* // Subscribe to new block headers
|
|
30
|
+
* const subId = yield* subscribe('newHeads')
|
|
31
|
+
*
|
|
32
|
+
* // Subscribe to logs with filter
|
|
33
|
+
* const logsSubId = yield* subscribe('logs', [{
|
|
34
|
+
* address: '0x...',
|
|
35
|
+
* topics: ['0x...']
|
|
36
|
+
* }])
|
|
37
|
+
* }).pipe(
|
|
38
|
+
* Effect.provide(Provider),
|
|
39
|
+
* Effect.provide(WebSocketTransport('wss://mainnet.infura.io/ws/v3/YOUR_KEY'))
|
|
40
|
+
* )
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export const subscribe = (
|
|
44
|
+
subscription: string,
|
|
45
|
+
params?: readonly unknown[],
|
|
46
|
+
): Effect.Effect<`0x${string}`, TransportError, ProviderService> =>
|
|
47
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
48
|
+
svc.request<`0x${string}`>("eth_subscribe", [subscription, ...(params ?? [])]),
|
|
49
|
+
);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to uninstall a filter.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/uninstallFilter
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import type { FilterId } from "../types.js";
|
|
11
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Uninstalls a filter and frees resources.
|
|
15
|
+
*
|
|
16
|
+
* @param filterId - Filter ID to uninstall
|
|
17
|
+
* @returns Effect yielding true if filter was found and removed
|
|
18
|
+
*
|
|
19
|
+
* @since 0.4.0
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { Effect } from 'effect'
|
|
24
|
+
* import { createBlockFilter, uninstallFilter, Provider, HttpTransport } from 'voltaire-effect'
|
|
25
|
+
*
|
|
26
|
+
* const program = Effect.gen(function* () {
|
|
27
|
+
* const filterId = yield* createBlockFilter()
|
|
28
|
+
* const uninstalled = yield* uninstallFilter(filterId)
|
|
29
|
+
* }).pipe(
|
|
30
|
+
* Effect.provide(Provider),
|
|
31
|
+
* Effect.provide(HttpTransport('https://mainnet.infura.io/v3/YOUR_KEY'))
|
|
32
|
+
* )
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export const uninstallFilter = (
|
|
36
|
+
filterId: FilterId,
|
|
37
|
+
): Effect.Effect<boolean, TransportError, ProviderService> =>
|
|
38
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
39
|
+
svc.request<boolean>("eth_uninstallFilter", [filterId]),
|
|
40
|
+
);
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Free function to unsubscribe from Ethereum events via eth_unsubscribe.
|
|
3
|
+
*
|
|
4
|
+
* @module Provider/functions/unsubscribe
|
|
5
|
+
* @since 0.4.0
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import { ProviderService } from "../ProviderService.js";
|
|
10
|
+
import type { TransportError } from "../../Transport/TransportError.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Unsubscribes from an Ethereum subscription using eth_unsubscribe.
|
|
14
|
+
*
|
|
15
|
+
* @param subscriptionId - The subscription ID returned by subscribe()
|
|
16
|
+
* @returns Effect yielding true if successfully unsubscribed, false otherwise
|
|
17
|
+
*
|
|
18
|
+
* @since 0.4.0
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { Effect } from 'effect'
|
|
23
|
+
* import { subscribe, unsubscribe, Provider, WebSocketTransport } from 'voltaire-effect'
|
|
24
|
+
*
|
|
25
|
+
* const program = Effect.gen(function* () {
|
|
26
|
+
* const subId = yield* subscribe('newHeads')
|
|
27
|
+
* // ... do work ...
|
|
28
|
+
* const unsubscribed = yield* unsubscribe(subId)
|
|
29
|
+
* console.log('Unsubscribed:', unsubscribed)
|
|
30
|
+
* }).pipe(
|
|
31
|
+
* Effect.provide(Provider),
|
|
32
|
+
* Effect.provide(WebSocketTransport('wss://mainnet.infura.io/ws/v3/YOUR_KEY'))
|
|
33
|
+
* )
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export const unsubscribe = (
|
|
37
|
+
subscriptionId: `0x${string}`,
|
|
38
|
+
): Effect.Effect<boolean, TransportError, ProviderService> =>
|
|
39
|
+
Effect.flatMap(ProviderService, (svc) =>
|
|
40
|
+
svc.request<boolean>("eth_unsubscribe", [subscriptionId]),
|
|
41
|
+
);
|