ox 0.0.1 → 0.1.0
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/Abi/package.json +6 -0
- package/Abi.ts +163 -0
- package/AbiConstructor/package.json +6 -0
- package/AbiConstructor.ts +413 -0
- package/AbiError/package.json +6 -0
- package/AbiError.ts +719 -0
- package/AbiEvent/package.json +6 -0
- package/AbiEvent.ts +1284 -0
- package/AbiFunction/package.json +6 -0
- package/AbiFunction.ts +813 -0
- package/AbiItem/package.json +6 -0
- package/AbiItem.ts +779 -0
- package/AbiParameters/package.json +6 -0
- package/AbiParameters.ts +712 -0
- package/AccessList/package.json +6 -0
- package/AccessList.ts +124 -0
- package/AccountProof/package.json +6 -0
- package/AccountProof.ts +35 -0
- package/Address/package.json +6 -0
- package/Address.ts +359 -0
- package/AesGcm/package.json +6 -0
- package/AesGcm.ts +220 -0
- package/Authorization/package.json +6 -0
- package/Authorization.ts +639 -0
- package/Base58/package.json +6 -0
- package/Base58.ts +180 -0
- package/Base64/package.json +6 -0
- package/Base64.ts +333 -0
- package/Blobs/package.json +6 -0
- package/Blobs.ts +982 -0
- package/Block/package.json +6 -0
- package/Block.ts +317 -0
- package/Bloom/package.json +6 -0
- package/Bloom.ts +80 -0
- package/Bls/package.json +6 -0
- package/Bls.ts +496 -0
- package/BlsPoint/package.json +6 -0
- package/BlsPoint.ts +232 -0
- package/Bytes/package.json +6 -0
- package/Bytes.ts +963 -0
- package/CHANGELOG.md +7 -0
- package/Caches/package.json +6 -0
- package/Caches.ts +21 -0
- package/ContractAddress/package.json +6 -0
- package/ContractAddress.ts +181 -0
- package/Ens/package.json +6 -0
- package/Ens.ts +116 -0
- package/Errors/package.json +6 -0
- package/Errors.ts +95 -0
- package/Fee/package.json +6 -0
- package/Fee.ts +57 -0
- package/Filter/package.json +6 -0
- package/Filter.ts +144 -0
- package/Hash/package.json +6 -0
- package/Hash.ts +210 -0
- package/HdKey/package.json +6 -0
- package/HdKey.ts +175 -0
- package/Hex/package.json +6 -0
- package/Hex.ts +1040 -0
- package/Json/package.json +6 -0
- package/Json.ts +84 -0
- package/Kzg/package.json +6 -0
- package/Kzg.ts +51 -0
- package/LICENSE +21 -0
- package/Log/package.json +6 -0
- package/Log.ts +248 -0
- package/Mnemonic/package.json +6 -0
- package/Mnemonic.ts +249 -0
- package/P256/package.json +6 -0
- package/P256.ts +230 -0
- package/PersonalMessage/package.json +6 -0
- package/PersonalMessage.ts +70 -0
- package/Provider/package.json +6 -0
- package/Provider.ts +354 -0
- package/PublicKey/package.json +6 -0
- package/PublicKey.ts +545 -0
- package/README.md +75 -26
- package/Rlp/package.json +6 -0
- package/Rlp.ts +390 -0
- package/RpcRequest/package.json +6 -0
- package/RpcRequest.ts +192 -0
- package/RpcResponse/package.json +6 -0
- package/RpcResponse.ts +389 -0
- package/RpcSchema/package.json +6 -0
- package/RpcSchema.ts +273 -0
- package/RpcTransport/package.json +6 -0
- package/RpcTransport.ts +198 -0
- package/Secp256k1/package.json +6 -0
- package/Secp256k1.ts +304 -0
- package/Signature/package.json +6 -0
- package/Signature.ts +909 -0
- package/Siwe/package.json +6 -0
- package/Siwe.ts +516 -0
- package/Solidity/package.json +6 -0
- package/Solidity.ts +109 -0
- package/Transaction/package.json +6 -0
- package/Transaction.ts +429 -0
- package/TransactionEnvelope/package.json +6 -0
- package/TransactionEnvelope.ts +205 -0
- package/TransactionEnvelopeEip1559/package.json +6 -0
- package/TransactionEnvelopeEip1559.ts +656 -0
- package/TransactionEnvelopeEip2930/package.json +6 -0
- package/TransactionEnvelopeEip2930.ts +624 -0
- package/TransactionEnvelopeEip4844/package.json +6 -0
- package/TransactionEnvelopeEip4844.ts +764 -0
- package/TransactionEnvelopeEip7702/package.json +6 -0
- package/TransactionEnvelopeEip7702.ts +639 -0
- package/TransactionEnvelopeLegacy/package.json +6 -0
- package/TransactionEnvelopeLegacy.ts +674 -0
- package/TransactionReceipt/package.json +6 -0
- package/TransactionReceipt.ts +341 -0
- package/TransactionRequest/package.json +6 -0
- package/TransactionRequest.ts +151 -0
- package/TypedData/package.json +6 -0
- package/TypedData.ts +931 -0
- package/ValidatorData/package.json +6 -0
- package/ValidatorData.ts +87 -0
- package/Value/package.json +6 -0
- package/Value.ts +242 -0
- package/WebAuthnP256/package.json +6 -0
- package/WebAuthnP256.ts +803 -0
- package/WebCryptoP256/package.json +6 -0
- package/WebCryptoP256.ts +190 -0
- package/Withdrawal/package.json +6 -0
- package/Withdrawal.ts +95 -0
- package/_cjs/Abi.js +17 -0
- package/_cjs/Abi.js.map +1 -0
- package/_cjs/AbiConstructor.js +42 -0
- package/_cjs/AbiConstructor.js.map +1 -0
- package/_cjs/AbiError.js +98 -0
- package/_cjs/AbiError.js.map +1 -0
- package/_cjs/AbiEvent.js +338 -0
- package/_cjs/AbiEvent.js.map +1 -0
- package/_cjs/AbiFunction.js +85 -0
- package/_cjs/AbiFunction.js.map +1 -0
- package/_cjs/AbiItem.js +180 -0
- package/_cjs/AbiItem.js.map +1 -0
- package/_cjs/AbiParameters.js +229 -0
- package/_cjs/AbiParameters.js.map +1 -0
- package/_cjs/AccessList.js +51 -0
- package/_cjs/AccessList.js.map +1 -0
- package/_cjs/AccountProof.js +3 -0
- package/_cjs/AccountProof.js.map +1 -0
- package/_cjs/Address.js +121 -0
- package/_cjs/Address.js.map +1 -0
- package/_cjs/AesGcm.js +55 -0
- package/_cjs/AesGcm.js.map +1 -0
- package/_cjs/Authorization.js +99 -0
- package/_cjs/Authorization.js.map +1 -0
- package/_cjs/Base58.js +52 -0
- package/_cjs/Base58.js.map +1 -0
- package/_cjs/Base64.js +76 -0
- package/_cjs/Base64.js.map +1 -0
- package/_cjs/Blobs.js +255 -0
- package/_cjs/Blobs.js.map +1 -0
- package/_cjs/Block.js +87 -0
- package/_cjs/Block.js.map +1 -0
- package/_cjs/Bloom.js +23 -0
- package/_cjs/Bloom.js.map +1 -0
- package/_cjs/Bls.js +79 -0
- package/_cjs/Bls.js.map +1 -0
- package/_cjs/BlsPoint.js +32 -0
- package/_cjs/BlsPoint.js.map +1 -0
- package/_cjs/Bytes.js +279 -0
- package/_cjs/Bytes.js.map +1 -0
- package/_cjs/Caches.js +14 -0
- package/_cjs/Caches.js.map +1 -0
- package/_cjs/ContractAddress.js +39 -0
- package/_cjs/ContractAddress.js.map +1 -0
- package/_cjs/Ens.js +37 -0
- package/_cjs/Ens.js.map +1 -0
- package/_cjs/Errors.js +99 -0
- package/_cjs/Errors.js.map +1 -0
- package/_cjs/Fee.js +3 -0
- package/_cjs/Fee.js.map +1 -0
- package/_cjs/Filter.js +43 -0
- package/_cjs/Filter.js.map +1 -0
- package/_cjs/Hash.js +40 -0
- package/_cjs/Hash.js.map +1 -0
- package/_cjs/HdKey.js +30 -0
- package/_cjs/HdKey.js.map +1 -0
- package/_cjs/Hex.js +324 -0
- package/_cjs/Hex.js.map +1 -0
- package/_cjs/Json.js +25 -0
- package/_cjs/Json.js.map +1 -0
- package/_cjs/Kzg.js +14 -0
- package/_cjs/Kzg.js.map +1 -0
- package/_cjs/Log.js +35 -0
- package/_cjs/Log.js.map +1 -0
- package/_cjs/Mnemonic.js +56 -0
- package/_cjs/Mnemonic.js.map +1 -0
- package/_cjs/P256.js +52 -0
- package/_cjs/P256.js.map +1 -0
- package/_cjs/PersonalMessage.js +16 -0
- package/_cjs/PersonalMessage.js.map +1 -0
- package/_cjs/Provider.js +90 -0
- package/_cjs/Provider.js.map +1 -0
- package/_cjs/PublicKey.js +192 -0
- package/_cjs/PublicKey.js.map +1 -0
- package/_cjs/Rlp.js +179 -0
- package/_cjs/Rlp.js.map +1 -0
- package/_cjs/RpcRequest.js +27 -0
- package/_cjs/RpcRequest.js.map +1 -0
- package/_cjs/RpcResponse.js +368 -0
- package/_cjs/RpcResponse.js.map +1 -0
- package/_cjs/RpcSchema.js +7 -0
- package/_cjs/RpcSchema.js.map +1 -0
- package/_cjs/RpcTransport.js +95 -0
- package/_cjs/RpcTransport.js.map +1 -0
- package/_cjs/Secp256k1.js +57 -0
- package/_cjs/Secp256k1.js.map +1 -0
- package/_cjs/Signature.js +305 -0
- package/_cjs/Signature.js.map +1 -0
- package/_cjs/Siwe.js +231 -0
- package/_cjs/Siwe.js.map +1 -0
- package/_cjs/Solidity.js +104 -0
- package/_cjs/Solidity.js.map +1 -0
- package/_cjs/Transaction.js +106 -0
- package/_cjs/Transaction.js.map +1 -0
- package/_cjs/TransactionEnvelope.js +80 -0
- package/_cjs/TransactionEnvelope.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip1559.js +182 -0
- package/_cjs/TransactionEnvelopeEip1559.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip2930.js +166 -0
- package/_cjs/TransactionEnvelopeEip2930.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip4844.js +224 -0
- package/_cjs/TransactionEnvelopeEip4844.js.map +1 -0
- package/_cjs/TransactionEnvelopeEip7702.js +156 -0
- package/_cjs/TransactionEnvelopeEip7702.js.map +1 -0
- package/_cjs/TransactionEnvelopeLegacy.js +221 -0
- package/_cjs/TransactionEnvelopeLegacy.js.map +1 -0
- package/_cjs/TransactionReceipt.js +76 -0
- package/_cjs/TransactionReceipt.js.map +1 -0
- package/_cjs/TransactionRequest.js +51 -0
- package/_cjs/TransactionRequest.js.map +1 -0
- package/_cjs/TypedData.js +318 -0
- package/_cjs/TypedData.js.map +1 -0
- package/_cjs/ValidatorData.js +16 -0
- package/_cjs/ValidatorData.js.map +1 -0
- package/_cjs/Value.js +96 -0
- package/_cjs/Value.js.map +1 -0
- package/_cjs/WebAuthnP256.js +245 -0
- package/_cjs/WebAuthnP256.js.map +1 -0
- package/_cjs/WebCryptoP256.js +46 -0
- package/_cjs/WebCryptoP256.js.map +1 -0
- package/_cjs/Withdrawal.js +24 -0
- package/_cjs/Withdrawal.js.map +1 -0
- package/_cjs/index.js +66 -0
- package/_cjs/index.js.map +1 -0
- package/_cjs/internal/abi.js +11 -0
- package/_cjs/internal/abi.js.map +1 -0
- package/_cjs/internal/abiConstructor.js +3 -0
- package/_cjs/internal/abiConstructor.js.map +1 -0
- package/_cjs/internal/abiError.js +3 -0
- package/_cjs/internal/abiError.js.map +1 -0
- package/_cjs/internal/abiEvent.js +3 -0
- package/_cjs/internal/abiEvent.js.map +1 -0
- package/_cjs/internal/abiFunction.js +3 -0
- package/_cjs/internal/abiFunction.js.map +1 -0
- package/_cjs/internal/abiItem.js +110 -0
- package/_cjs/internal/abiItem.js.map +1 -0
- package/_cjs/internal/abiParameters.js +376 -0
- package/_cjs/internal/abiParameters.js.map +1 -0
- package/_cjs/internal/base58.js +89 -0
- package/_cjs/internal/base58.js.map +1 -0
- package/_cjs/internal/bytes.js +88 -0
- package/_cjs/internal/bytes.js.map +1 -0
- package/_cjs/internal/cursor.js +210 -0
- package/_cjs/internal/cursor.js.map +1 -0
- package/_cjs/internal/ens.js +43 -0
- package/_cjs/internal/ens.js.map +1 -0
- package/_cjs/internal/errors.js +28 -0
- package/_cjs/internal/errors.js.map +1 -0
- package/_cjs/internal/hdKey.js +19 -0
- package/_cjs/internal/hdKey.js.map +1 -0
- package/_cjs/internal/hex.js +66 -0
- package/_cjs/internal/hex.js.map +1 -0
- package/_cjs/internal/lru.js +34 -0
- package/_cjs/internal/lru.js.map +1 -0
- package/_cjs/internal/mnemonic/wordlists.js +24 -0
- package/_cjs/internal/mnemonic/wordlists.js.map +1 -0
- package/_cjs/internal/promise.js +49 -0
- package/_cjs/internal/promise.js.map +1 -0
- package/_cjs/internal/register.js +3 -0
- package/_cjs/internal/register.js.map +1 -0
- package/_cjs/internal/rpcSchema.js +3 -0
- package/_cjs/internal/rpcSchema.js.map +1 -0
- package/_cjs/internal/rpcSchemas/eth.js +3 -0
- package/_cjs/internal/rpcSchemas/eth.js.map +1 -0
- package/_cjs/internal/rpcSchemas/wallet.js +3 -0
- package/_cjs/internal/rpcSchemas/wallet.js.map +1 -0
- package/_cjs/internal/rpcTransport.js +19 -0
- package/_cjs/internal/rpcTransport.js.map +1 -0
- package/_cjs/internal/types.js +3 -0
- package/_cjs/internal/types.js.map +1 -0
- package/_cjs/internal/uid.js +17 -0
- package/_cjs/internal/uid.js.map +1 -0
- package/_cjs/internal/webauthn.js +28 -0
- package/_cjs/internal/webauthn.js.map +1 -0
- package/_cjs/package.json +1 -0
- package/_cjs/trusted-setups/Paths.js +6 -0
- package/_cjs/trusted-setups/Paths.js.map +1 -0
- package/_cjs/trusted-setups/index.js +5 -0
- package/_cjs/trusted-setups/index.js.map +1 -0
- package/_cjs/trusted-setups/internal/paths.js +11 -0
- package/_cjs/trusted-setups/internal/paths.js.map +1 -0
- package/_cjs/version.js +5 -0
- package/_cjs/version.js.map +1 -0
- package/_cjs/window/index.js +3 -0
- package/_cjs/window/index.js.map +1 -0
- package/_esm/Abi.js +19 -0
- package/_esm/Abi.js.map +1 -0
- package/_esm/AbiConstructor.js +102 -0
- package/_esm/AbiConstructor.js.map +1 -0
- package/_esm/AbiError.js +364 -0
- package/_esm/AbiError.js.map +1 -0
- package/_esm/AbiEvent.js +1038 -0
- package/_esm/AbiEvent.js.map +1 -0
- package/_esm/AbiFunction.js +549 -0
- package/_esm/AbiFunction.js.map +1 -0
- package/_esm/AbiItem.js +574 -0
- package/_esm/AbiItem.js.map +1 -0
- package/_esm/AbiParameters.js +543 -0
- package/_esm/AbiParameters.js.map +1 -0
- package/_esm/AccessList.js +105 -0
- package/_esm/AccessList.js.map +1 -0
- package/_esm/AccountProof.js +2 -0
- package/_esm/AccountProof.js.map +1 -0
- package/_esm/Address.js +268 -0
- package/_esm/Address.js.map +1 -0
- package/_esm/AesGcm.js +124 -0
- package/_esm/AesGcm.js.map +1 -0
- package/_esm/Authorization.js +441 -0
- package/_esm/Authorization.js.map +1 -0
- package/_esm/Base58.js +142 -0
- package/_esm/Base58.js.map +1 -0
- package/_esm/Base64.js +236 -0
- package/_esm/Base64.js.map +1 -0
- package/_esm/Blobs.js +624 -0
- package/_esm/Blobs.js.map +1 -0
- package/_esm/Block.js +177 -0
- package/_esm/Block.js.map +1 -0
- package/_esm/Bloom.js +57 -0
- package/_esm/Bloom.js.map +1 -0
- package/_esm/Bls.js +141 -0
- package/_esm/Bls.js.map +1 -0
- package/_esm/BlsPoint.js +59 -0
- package/_esm/BlsPoint.js.map +1 -0
- package/_esm/Bytes.js +719 -0
- package/_esm/Bytes.js.map +1 -0
- package/_esm/Caches.js +19 -0
- package/_esm/Caches.js.map +1 -0
- package/_esm/ContractAddress.js +110 -0
- package/_esm/ContractAddress.js.map +1 -0
- package/_esm/Ens.js +84 -0
- package/_esm/Ens.js.map +1 -0
- package/_esm/Errors.js +105 -0
- package/_esm/Errors.js.map +1 -0
- package/_esm/Fee.js +2 -0
- package/_esm/Fee.js.map +1 -0
- package/_esm/Filter.js +100 -0
- package/_esm/Filter.js.map +1 -0
- package/_esm/Hash.js +126 -0
- package/_esm/Hash.js.map +1 -0
- package/_esm/HdKey.js +107 -0
- package/_esm/HdKey.js.map +1 -0
- package/_esm/Hex.js +763 -0
- package/_esm/Hex.js.map +1 -0
- package/_esm/Json.js +62 -0
- package/_esm/Json.js.map +1 -0
- package/_esm/Kzg.js +30 -0
- package/_esm/Kzg.js.map +1 -0
- package/_esm/Log.js +181 -0
- package/_esm/Log.js.map +1 -0
- package/_esm/Mnemonic.js +154 -0
- package/_esm/Mnemonic.js.map +1 -0
- package/_esm/P256.js +131 -0
- package/_esm/P256.js.map +1 -0
- package/_esm/PersonalMessage.js +46 -0
- package/_esm/PersonalMessage.js.map +1 -0
- package/_esm/Provider.js +122 -0
- package/_esm/Provider.js.map +1 -0
- package/_esm/PublicKey.js +395 -0
- package/_esm/PublicKey.js.map +1 -0
- package/_esm/Rlp.js +267 -0
- package/_esm/Rlp.js.map +1 -0
- package/_esm/RpcRequest.js +131 -0
- package/_esm/RpcRequest.js.map +1 -0
- package/_esm/RpcResponse.js +457 -0
- package/_esm/RpcResponse.js.map +1 -0
- package/_esm/RpcSchema.js +46 -0
- package/_esm/RpcSchema.js.map +1 -0
- package/_esm/RpcTransport.js +110 -0
- package/_esm/RpcTransport.js.map +1 -0
- package/_esm/Secp256k1.js +173 -0
- package/_esm/Secp256k1.js.map +1 -0
- package/_esm/Signature.js +696 -0
- package/_esm/Signature.js.map +1 -0
- package/_esm/Siwe.js +374 -0
- package/_esm/Siwe.js.map +1 -0
- package/_esm/Solidity.js +104 -0
- package/_esm/Solidity.js.map +1 -0
- package/_esm/Transaction.js +176 -0
- package/_esm/Transaction.js.map +1 -0
- package/_esm/TransactionEnvelope.js +139 -0
- package/_esm/TransactionEnvelope.js.map +1 -0
- package/_esm/TransactionEnvelopeEip1559.js +455 -0
- package/_esm/TransactionEnvelopeEip1559.js.map +1 -0
- package/_esm/TransactionEnvelopeEip2930.js +439 -0
- package/_esm/TransactionEnvelopeEip2930.js.map +1 -0
- package/_esm/TransactionEnvelopeEip4844.js +542 -0
- package/_esm/TransactionEnvelopeEip4844.js.map +1 -0
- package/_esm/TransactionEnvelopeEip7702.js +442 -0
- package/_esm/TransactionEnvelopeEip7702.js.map +1 -0
- package/_esm/TransactionEnvelopeLegacy.js +495 -0
- package/_esm/TransactionEnvelopeLegacy.js.map +1 -0
- package/_esm/TransactionReceipt.js +229 -0
- package/_esm/TransactionReceipt.js.map +1 -0
- package/_esm/TransactionRequest.js +89 -0
- package/_esm/TransactionRequest.js.map +1 -0
- package/_esm/TypedData.js +635 -0
- package/_esm/TypedData.js.map +1 -0
- package/_esm/ValidatorData.js +52 -0
- package/_esm/ValidatorData.js.map +1 -0
- package/_esm/Value.js +196 -0
- package/_esm/Value.js.map +1 -0
- package/_esm/WebAuthnP256.js +471 -0
- package/_esm/WebAuthnP256.js.map +1 -0
- package/_esm/WebCryptoP256.js +116 -0
- package/_esm/WebCryptoP256.js.map +1 -0
- package/_esm/Withdrawal.js +72 -0
- package/_esm/Withdrawal.js.map +1 -0
- package/_esm/index.js +3366 -0
- package/_esm/index.js.map +1 -0
- package/_esm/internal/abi.js +9 -0
- package/_esm/internal/abi.js.map +1 -0
- package/_esm/internal/abiConstructor.js +2 -0
- package/_esm/internal/abiConstructor.js.map +1 -0
- package/_esm/internal/abiError.js +2 -0
- package/_esm/internal/abiError.js.map +1 -0
- package/_esm/internal/abiEvent.js +2 -0
- package/_esm/internal/abiEvent.js.map +1 -0
- package/_esm/internal/abiFunction.js +2 -0
- package/_esm/internal/abiFunction.js.map +1 -0
- package/_esm/internal/abiItem.js +122 -0
- package/_esm/internal/abiItem.js.map +1 -0
- package/_esm/internal/abiParameters.js +419 -0
- package/_esm/internal/abiParameters.js.map +1 -0
- package/_esm/internal/base58.js +91 -0
- package/_esm/internal/base58.js.map +1 -0
- package/_esm/internal/bytes.js +86 -0
- package/_esm/internal/bytes.js.map +1 -0
- package/_esm/internal/cursor.js +207 -0
- package/_esm/internal/cursor.js.map +1 -0
- package/_esm/internal/ens.js +47 -0
- package/_esm/internal/ens.js.map +1 -0
- package/_esm/internal/errors.js +26 -0
- package/_esm/internal/errors.js.map +1 -0
- package/_esm/internal/hdKey.js +17 -0
- package/_esm/internal/hdKey.js.map +1 -0
- package/_esm/internal/hex.js +64 -0
- package/_esm/internal/hex.js.map +1 -0
- package/_esm/internal/lru.js +36 -0
- package/_esm/internal/lru.js.map +1 -0
- package/_esm/internal/mnemonic/wordlists.js +11 -0
- package/_esm/internal/mnemonic/wordlists.js.map +1 -0
- package/_esm/internal/promise.js +52 -0
- package/_esm/internal/promise.js.map +1 -0
- package/_esm/internal/register.js +2 -0
- package/_esm/internal/register.js.map +1 -0
- package/_esm/internal/rpcSchema.js +2 -0
- package/_esm/internal/rpcSchema.js.map +1 -0
- package/_esm/internal/rpcSchemas/eth.js +2 -0
- package/_esm/internal/rpcSchemas/eth.js.map +1 -0
- package/_esm/internal/rpcSchemas/wallet.js +2 -0
- package/_esm/internal/rpcSchemas/wallet.js.map +1 -0
- package/_esm/internal/rpcTransport.js +20 -0
- package/_esm/internal/rpcTransport.js.map +1 -0
- package/_esm/internal/types.js +2 -0
- package/_esm/internal/types.js.map +1 -0
- package/_esm/internal/uid.js +15 -0
- package/_esm/internal/uid.js.map +1 -0
- package/_esm/internal/webauthn.js +35 -0
- package/_esm/internal/webauthn.js.map +1 -0
- package/_esm/package.json +1 -0
- package/_esm/trusted-setups/Paths.js +3 -0
- package/_esm/trusted-setups/Paths.js.map +1 -0
- package/_esm/trusted-setups/index.js +2 -0
- package/_esm/trusted-setups/index.js.map +1 -0
- package/_esm/trusted-setups/internal/paths.js +12 -0
- package/_esm/trusted-setups/internal/paths.js.map +1 -0
- package/_esm/version.js +3 -0
- package/_esm/version.js.map +1 -0
- package/_esm/window/index.js +2 -0
- package/_esm/window/index.js.map +1 -0
- package/_test/Abi.test-d/package.json +6 -0
- package/_test/AbiConstructor.test-d/package.json +6 -0
- package/_test/AbiError.test-d/package.json +6 -0
- package/_test/AbiEvent.snap-d/package.json +6 -0
- package/_test/AbiEvent.snap-d.ts +329 -0
- package/_test/AbiFunction.snap-d/package.json +6 -0
- package/_test/AbiFunction.snap-d.ts +262 -0
- package/_test/AbiItem.snap-d/package.json +6 -0
- package/_test/AbiItem.snap-d.ts +131 -0
- package/_test/AbiParameters.bench/package.json +6 -0
- package/_test/AbiParameters.snap-d/package.json +6 -0
- package/_test/AbiParameters.snap-d.ts +66 -0
- package/_test/Address.bench/package.json +6 -0
- package/_test/Base58.bench/package.json +6 -0
- package/_test/Hex.bench/package.json +6 -0
- package/_test/Hex.test-d/package.json +6 -0
- package/_test/PublicKey.test-d/package.json +6 -0
- package/_test/Rlp.bench/package.json +6 -0
- package/_test/Rlp.test-d/package.json +6 -0
- package/_test/Signature.snap-d/package.json +6 -0
- package/_test/Signature.snap-d.ts +96 -0
- package/_test/TransactionEnvelopeEip1559.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip2930.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip4844.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeEip7702.test-d/package.json +6 -0
- package/_test/TransactionEnvelopeLegacy.test-d/package.json +6 -0
- package/_test/TypedData.test-d/package.json +6 -0
- package/_types/Abi.d.ts +137 -0
- package/_types/Abi.d.ts.map +1 -0
- package/_types/AbiConstructor.d.ts +305 -0
- package/_types/AbiConstructor.d.ts.map +1 -0
- package/_types/AbiError.d.ts +522 -0
- package/_types/AbiError.d.ts.map +1 -0
- package/_types/AbiEvent.d.ts +892 -0
- package/_types/AbiEvent.d.ts.map +1 -0
- package/_types/AbiFunction.d.ts +602 -0
- package/_types/AbiFunction.d.ts.map +1 -0
- package/_types/AbiItem.d.ts +544 -0
- package/_types/AbiItem.d.ts.map +1 -0
- package/_types/AbiParameters.d.ts +466 -0
- package/_types/AbiParameters.d.ts.map +1 -0
- package/_types/AccessList.d.ts +83 -0
- package/_types/AccessList.d.ts.map +1 -0
- package/_types/AccountProof.d.ts +32 -0
- package/_types/AccountProof.d.ts.map +1 -0
- package/_types/Address.d.ts +244 -0
- package/_types/Address.d.ts.map +1 -0
- package/_types/AesGcm.d.ts +116 -0
- package/_types/AesGcm.d.ts.map +1 -0
- package/_types/Authorization.d.ts +461 -0
- package/_types/Authorization.d.ts.map +1 -0
- package/_types/Base58.d.ts +131 -0
- package/_types/Base58.d.ts.map +1 -0
- package/_types/Base64.d.ts +244 -0
- package/_types/Base64.d.ts.map +1 -0
- package/_types/Blobs.d.ts +556 -0
- package/_types/Blobs.d.ts.map +1 -0
- package/_types/Block.d.ts +190 -0
- package/_types/Block.d.ts.map +1 -0
- package/_types/Bloom.d.ts +54 -0
- package/_types/Bloom.d.ts.map +1 -0
- package/_types/Bls.d.ts +365 -0
- package/_types/Bls.d.ts.map +1 -0
- package/_types/BlsPoint.d.ts +187 -0
- package/_types/BlsPoint.d.ts.map +1 -0
- package/_types/Bytes.d.ts +674 -0
- package/_types/Bytes.d.ts.map +1 -0
- package/_types/Caches.d.ts +13 -0
- package/_types/Caches.d.ts.map +1 -0
- package/_types/ContractAddress.d.ts +115 -0
- package/_types/ContractAddress.d.ts.map +1 -0
- package/_types/Ens.d.ts +72 -0
- package/_types/Ens.d.ts.map +1 -0
- package/_types/Errors.d.ts +33 -0
- package/_types/Errors.d.ts.map +1 -0
- package/_types/Fee.d.ts +41 -0
- package/_types/Fee.d.ts.map +1 -0
- package/_types/Filter.d.ts +100 -0
- package/_types/Filter.d.ts.map +1 -0
- package/_types/Hash.d.ts +135 -0
- package/_types/Hash.d.ts.map +1 -0
- package/_types/HdKey.d.ts +146 -0
- package/_types/HdKey.d.ts.map +1 -0
- package/_types/Hex.d.ts +711 -0
- package/_types/Hex.d.ts.map +1 -0
- package/_types/Json.d.ts +53 -0
- package/_types/Json.d.ts.map +1 -0
- package/_types/Kzg.d.ts +42 -0
- package/_types/Kzg.d.ts.map +1 -0
- package/_types/Log.d.ts +194 -0
- package/_types/Log.d.ts.map +1 -0
- package/_types/Mnemonic.d.ts +176 -0
- package/_types/Mnemonic.d.ts.map +1 -0
- package/_types/P256.d.ts +207 -0
- package/_types/P256.d.ts.map +1 -0
- package/_types/PersonalMessage.d.ts +49 -0
- package/_types/PersonalMessage.d.ts.map +1 -0
- package/_types/Provider.d.ts +268 -0
- package/_types/Provider.d.ts.map +1 -0
- package/_types/PublicKey.d.ts +327 -0
- package/_types/PublicKey.d.ts.map +1 -0
- package/_types/Rlp.d.ts +153 -0
- package/_types/Rlp.d.ts.map +1 -0
- package/_types/RpcRequest.d.ts +144 -0
- package/_types/RpcRequest.d.ts.map +1 -0
- package/_types/RpcResponse.d.ts +266 -0
- package/_types/RpcResponse.d.ts.map +1 -0
- package/_types/RpcSchema.d.ts +248 -0
- package/_types/RpcSchema.d.ts.map +1 -0
- package/_types/RpcTransport.d.ts +65 -0
- package/_types/RpcTransport.d.ts.map +1 -0
- package/_types/Secp256k1.d.ts +277 -0
- package/_types/Secp256k1.d.ts.map +1 -0
- package/_types/Signature.d.ts +601 -0
- package/_types/Signature.d.ts.map +1 -0
- package/_types/Siwe.d.ts +249 -0
- package/_types/Siwe.d.ts.map +1 -0
- package/_types/Solidity.d.ts +100 -0
- package/_types/Solidity.d.ts.map +1 -0
- package/_types/Transaction.d.ts +235 -0
- package/_types/Transaction.d.ts.map +1 -0
- package/_types/TransactionEnvelope.d.ts +141 -0
- package/_types/TransactionEnvelope.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip1559.d.ts +367 -0
- package/_types/TransactionEnvelopeEip1559.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip2930.d.ts +364 -0
- package/_types/TransactionEnvelopeEip2930.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip4844.d.ts +419 -0
- package/_types/TransactionEnvelopeEip4844.d.ts.map +1 -0
- package/_types/TransactionEnvelopeEip7702.d.ts +377 -0
- package/_types/TransactionEnvelopeEip7702.d.ts.map +1 -0
- package/_types/TransactionEnvelopeLegacy.d.ts +358 -0
- package/_types/TransactionEnvelopeLegacy.d.ts.map +1 -0
- package/_types/TransactionReceipt.d.ts +271 -0
- package/_types/TransactionReceipt.d.ts.map +1 -0
- package/_types/TransactionRequest.d.ts +92 -0
- package/_types/TransactionRequest.d.ts.map +1 -0
- package/_types/TypedData.d.ts +496 -0
- package/_types/TypedData.d.ts.map +1 -0
- package/_types/ValidatorData.d.ts +64 -0
- package/_types/ValidatorData.d.ts.map +1 -0
- package/_types/Value.d.ts +159 -0
- package/_types/Value.d.ts.map +1 -0
- package/_types/WebAuthnP256.d.ts +445 -0
- package/_types/WebAuthnP256.d.ts.map +1 -0
- package/_types/WebCryptoP256.d.ts +119 -0
- package/_types/WebCryptoP256.d.ts.map +1 -0
- package/_types/Withdrawal.d.ts +74 -0
- package/_types/Withdrawal.d.ts.map +1 -0
- package/_types/index.d.ts +3367 -0
- package/_types/index.d.ts.map +1 -0
- package/_types/internal/abi.d.ts +4 -0
- package/_types/internal/abi.d.ts.map +1 -0
- package/_types/internal/abiConstructor.d.ts +11 -0
- package/_types/internal/abiConstructor.d.ts.map +1 -0
- package/_types/internal/abiError.d.ts +11 -0
- package/_types/internal/abiError.d.ts.map +1 -0
- package/_types/internal/abiEvent.d.ts +60 -0
- package/_types/internal/abiEvent.d.ts.map +1 -0
- package/_types/internal/abiFunction.d.ts +11 -0
- package/_types/internal/abiFunction.d.ts.map +1 -0
- package/_types/internal/abiItem.d.ts +100 -0
- package/_types/internal/abiItem.d.ts.map +1 -0
- package/_types/internal/abiParameters.d.ts +169 -0
- package/_types/internal/abiParameters.d.ts.map +1 -0
- package/_types/internal/base58.d.ts +17 -0
- package/_types/internal/base58.d.ts.map +1 -0
- package/_types/internal/bytes.d.ts +52 -0
- package/_types/internal/bytes.d.ts.map +1 -0
- package/_types/internal/cursor.d.ts +70 -0
- package/_types/internal/cursor.d.ts.map +1 -0
- package/_types/internal/ens.d.ts +23 -0
- package/_types/internal/ens.d.ts.map +1 -0
- package/_types/internal/errors.d.ts +7 -0
- package/_types/internal/errors.d.ts.map +1 -0
- package/_types/internal/hdKey.d.ts +10 -0
- package/_types/internal/hdKey.d.ts.map +1 -0
- package/_types/internal/hex.d.ts +39 -0
- package/_types/internal/hex.d.ts.map +1 -0
- package/_types/internal/lru.d.ts +13 -0
- package/_types/internal/lru.d.ts.map +1 -0
- package/_types/internal/mnemonic/wordlists.d.ts +11 -0
- package/_types/internal/mnemonic/wordlists.d.ts.map +1 -0
- package/_types/internal/promise.d.ts +27 -0
- package/_types/internal/promise.d.ts.map +1 -0
- package/_types/internal/register.d.ts +13 -0
- package/_types/internal/register.d.ts.map +1 -0
- package/_types/internal/rpcSchema.d.ts +12 -0
- package/_types/internal/rpcSchema.d.ts.map +1 -0
- package/_types/internal/rpcSchemas/eth.d.ts +718 -0
- package/_types/internal/rpcSchemas/eth.d.ts.map +1 -0
- package/_types/internal/rpcSchemas/wallet.d.ts +416 -0
- package/_types/internal/rpcSchemas/wallet.d.ts.map +1 -0
- package/_types/internal/rpcTransport.d.ts +38 -0
- package/_types/internal/rpcTransport.d.ts.map +1 -0
- package/_types/internal/types.d.ts +284 -0
- package/_types/internal/types.d.ts.map +1 -0
- package/_types/internal/uid.d.ts +3 -0
- package/_types/internal/uid.d.ts.map +1 -0
- package/_types/internal/webauthn.d.ts +127 -0
- package/_types/internal/webauthn.d.ts.map +1 -0
- package/_types/trusted-setups/Paths.d.ts +2 -0
- package/_types/trusted-setups/Paths.d.ts.map +1 -0
- package/_types/trusted-setups/index.d.ts +2 -0
- package/_types/trusted-setups/index.d.ts.map +1 -0
- package/_types/trusted-setups/internal/paths.d.ts +3 -0
- package/_types/trusted-setups/internal/paths.d.ts.map +1 -0
- package/_types/version.d.ts +3 -0
- package/_types/version.d.ts.map +1 -0
- package/_types/window/index.d.ts +7 -0
- package/_types/window/index.d.ts.map +1 -0
- package/index.ts +3427 -0
- package/internal/abi.ts +11 -0
- package/internal/abiConstructor.ts +32 -0
- package/internal/abiError.ts +30 -0
- package/internal/abiEvent.ts +154 -0
- package/internal/abiFunction.ts +32 -0
- package/internal/abiItem.ts +593 -0
- package/internal/abiParameters.ts +741 -0
- package/internal/base58.ts +106 -0
- package/internal/bytes.ts +152 -0
- package/internal/cursor.ts +252 -0
- package/internal/ens.ts +64 -0
- package/internal/errors.ts +26 -0
- package/internal/hdKey.ts +25 -0
- package/internal/hex.ts +123 -0
- package/internal/lru.ts +34 -0
- package/internal/mnemonic/wordlists.ts +10 -0
- package/internal/promise.ts +66 -0
- package/internal/register.ts +15 -0
- package/internal/rpcSchema.ts +20 -0
- package/internal/rpcSchemas/eth.ts +727 -0
- package/internal/rpcSchemas/wallet.ts +428 -0
- package/internal/rpcTransport.ts +74 -0
- package/internal/types.ts +414 -0
- package/internal/uid.ts +15 -0
- package/internal/webauthn.ts +198 -0
- package/package.json +500 -20
- package/trusted-setups/Paths/package.json +6 -0
- package/trusted-setups/Paths.ts +3 -0
- package/trusted-setups/index.ts +1 -0
- package/trusted-setups/internal/paths.ts +13 -0
- package/trusted-setups/internal/setups/mainnet.json +8265 -0
- package/trusted-setups/internal/setups/mainnet.txt +4163 -0
- package/trusted-setups/package.json +6 -0
- package/tsdoc.json +4 -0
- package/version/package.json +6 -0
- package/version.ts +2 -0
- package/window/index.ts +7 -0
- package/window/package.json +6 -0
- package/cl/ansiesc.js +0 -25
- package/cl/deps.js +0 -7
- package/cl/editor.js +0 -141
- package/cl/index.html +0 -19
- package/cl/ox.js +0 -44
- package/cl/socket.io.js +0 -1922
- package/cl/style.css +0 -37
- package/srv/deps.js +0 -88
- package/srv/httpSrv.js +0 -82
- package/srv/ox.js +0 -44
- package/srv/remoteXtermReq.js +0 -70
package/AbiParameters.ts
ADDED
|
@@ -0,0 +1,712 @@
|
|
|
1
|
+
import * as abitype from 'abitype'
|
|
2
|
+
import * as Address from './Address.js'
|
|
3
|
+
import * as Bytes from './Bytes.js'
|
|
4
|
+
import * as Errors from './Errors.js'
|
|
5
|
+
import * as Hex from './Hex.js'
|
|
6
|
+
import * as Solidity from './Solidity.js'
|
|
7
|
+
import * as internal from './internal/abiParameters.js'
|
|
8
|
+
import * as Cursor from './internal/cursor.js'
|
|
9
|
+
|
|
10
|
+
/** Root type for ABI parameters. */
|
|
11
|
+
export type AbiParameters = readonly abitype.AbiParameter[]
|
|
12
|
+
|
|
13
|
+
/** A parameter on an {@link ox#AbiParameters.AbiParameters}. */
|
|
14
|
+
export type Parameter = abitype.AbiParameter
|
|
15
|
+
|
|
16
|
+
/** A packed ABI type. */
|
|
17
|
+
export type PackedAbiType =
|
|
18
|
+
| abitype.SolidityAddress
|
|
19
|
+
| abitype.SolidityBool
|
|
20
|
+
| abitype.SolidityBytes
|
|
21
|
+
| abitype.SolidityInt
|
|
22
|
+
| abitype.SolidityString
|
|
23
|
+
| abitype.SolidityArrayWithoutTuple
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Decodes ABI-encoded data into its respective primitive values based on ABI Parameters.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts twoslash
|
|
30
|
+
* import { AbiParameters } from 'ox'
|
|
31
|
+
*
|
|
32
|
+
* const data = AbiParameters.decode(
|
|
33
|
+
* AbiParameters.from(['string', 'uint', 'bool']),
|
|
34
|
+
* '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
|
|
35
|
+
* )
|
|
36
|
+
* // @log: ['wagmi', 420n, true]
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ### JSON Parameters
|
|
41
|
+
*
|
|
42
|
+
* You can pass **JSON ABI** Parameters:
|
|
43
|
+
*
|
|
44
|
+
* ```ts twoslash
|
|
45
|
+
* import { AbiParameters } from 'ox'
|
|
46
|
+
*
|
|
47
|
+
* const data = AbiParameters.decode(
|
|
48
|
+
* [
|
|
49
|
+
* { name: 'x', type: 'string' },
|
|
50
|
+
* { name: 'y', type: 'uint' },
|
|
51
|
+
* { name: 'z', type: 'bool' },
|
|
52
|
+
* ],
|
|
53
|
+
* '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
|
|
54
|
+
* )
|
|
55
|
+
* // @log: ['wagmi', 420n, true]
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @param parameters - The set of ABI parameters to decode, in the shape of the `inputs` or `outputs` attribute of an ABI Item. These parameters must include valid [ABI types](https://docs.soliditylang.org/en/latest/types.html).
|
|
59
|
+
* @param data - ABI encoded data.
|
|
60
|
+
* @param options - Decoding options.
|
|
61
|
+
* @returns Array of decoded values.
|
|
62
|
+
*/
|
|
63
|
+
export function decode<
|
|
64
|
+
const parameters extends AbiParameters,
|
|
65
|
+
as extends 'Object' | 'Array' = 'Array',
|
|
66
|
+
>(
|
|
67
|
+
parameters: parameters,
|
|
68
|
+
data: Bytes.Bytes | Hex.Hex,
|
|
69
|
+
options?: decode.Options<as>,
|
|
70
|
+
): decode.ReturnType<parameters, as>
|
|
71
|
+
|
|
72
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
73
|
+
export function decode(
|
|
74
|
+
parameters: AbiParameters,
|
|
75
|
+
data: Bytes.Bytes | Hex.Hex,
|
|
76
|
+
options: { as?: 'Array' | 'Object' | undefined } = {},
|
|
77
|
+
): readonly unknown[] | Record<string, unknown> {
|
|
78
|
+
const { as = 'Array' } = options
|
|
79
|
+
|
|
80
|
+
const bytes = typeof data === 'string' ? Bytes.fromHex(data) : data
|
|
81
|
+
const cursor = Cursor.create(bytes)
|
|
82
|
+
|
|
83
|
+
if (Bytes.size(bytes) === 0 && parameters.length > 0)
|
|
84
|
+
throw new ZeroDataError()
|
|
85
|
+
if (Bytes.size(bytes) && Bytes.size(bytes) < 32)
|
|
86
|
+
throw new DataSizeTooSmallError({
|
|
87
|
+
data: typeof data === 'string' ? data : Hex.fromBytes(data),
|
|
88
|
+
parameters: parameters as readonly Parameter[],
|
|
89
|
+
size: Bytes.size(bytes),
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
let consumed = 0
|
|
93
|
+
const values: any = as === 'Array' ? [] : {}
|
|
94
|
+
for (let i = 0; i < parameters.length; ++i) {
|
|
95
|
+
const param = parameters[i] as Parameter
|
|
96
|
+
cursor.setPosition(consumed)
|
|
97
|
+
const [data, consumed_] = internal.decodeParameter(cursor, param, {
|
|
98
|
+
staticPosition: 0,
|
|
99
|
+
})
|
|
100
|
+
consumed += consumed_
|
|
101
|
+
if (as === 'Array') values.push(data)
|
|
102
|
+
else values[param.name ?? i] = data
|
|
103
|
+
}
|
|
104
|
+
return values
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export declare namespace decode {
|
|
108
|
+
type Options<as extends 'Object' | 'Array'> = {
|
|
109
|
+
/**
|
|
110
|
+
* Whether the decoded values should be returned as an `Object` or `Array`.
|
|
111
|
+
*
|
|
112
|
+
* @default "Array"
|
|
113
|
+
*/
|
|
114
|
+
as?: as | 'Object' | 'Array' | undefined
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
type ReturnType<
|
|
118
|
+
parameters extends AbiParameters = AbiParameters,
|
|
119
|
+
as extends 'Object' | 'Array' = 'Array',
|
|
120
|
+
> = parameters extends readonly []
|
|
121
|
+
? as extends 'Object'
|
|
122
|
+
? {}
|
|
123
|
+
: []
|
|
124
|
+
: as extends 'Object'
|
|
125
|
+
? internal.ToObject<parameters>
|
|
126
|
+
: internal.ToPrimitiveTypes<parameters>
|
|
127
|
+
|
|
128
|
+
type ErrorType =
|
|
129
|
+
| Bytes.fromHex.ErrorType
|
|
130
|
+
| internal.decodeParameter.ErrorType
|
|
131
|
+
| ZeroDataError
|
|
132
|
+
| DataSizeTooSmallError
|
|
133
|
+
| Errors.GlobalErrorType
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
decode.parseError = (error: unknown) =>
|
|
137
|
+
/* v8 ignore next */
|
|
138
|
+
error as decode.ErrorType
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Encodes primitive values into ABI encoded data as per the [Application Binary Interface (ABI) Specification](https://docs.soliditylang.org/en/latest/abi-spec).
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```ts twoslash
|
|
145
|
+
* import { AbiParameters } from 'ox'
|
|
146
|
+
*
|
|
147
|
+
* const data = AbiParameters.encode(
|
|
148
|
+
* AbiParameters.from(['string', 'uint', 'bool']),
|
|
149
|
+
* ['wagmi', 420n, true],
|
|
150
|
+
* )
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* ### JSON Parameters
|
|
155
|
+
*
|
|
156
|
+
* Specify **JSON ABI** Parameters as schema:
|
|
157
|
+
*
|
|
158
|
+
* ```ts twoslash
|
|
159
|
+
* import { AbiParameters } from 'ox'
|
|
160
|
+
*
|
|
161
|
+
* const data = AbiParameters.encode(
|
|
162
|
+
* [
|
|
163
|
+
* { type: 'string', name: 'name' },
|
|
164
|
+
* { type: 'uint', name: 'age' },
|
|
165
|
+
* { type: 'bool', name: 'isOwner' },
|
|
166
|
+
* ],
|
|
167
|
+
* ['wagmi', 420n, true],
|
|
168
|
+
* )
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* @param parameters - The set of ABI parameters to encode, in the shape of the `inputs` or `outputs` attribute of an ABI Item. These parameters must include valid [ABI types](https://docs.soliditylang.org/en/latest/types.html).
|
|
172
|
+
* @param values - The set of primitive values that correspond to the ABI types defined in `parameters`.
|
|
173
|
+
* @returns ABI encoded data.
|
|
174
|
+
*/
|
|
175
|
+
export function encode<
|
|
176
|
+
const parameters extends AbiParameters | readonly unknown[],
|
|
177
|
+
>(
|
|
178
|
+
parameters: parameters,
|
|
179
|
+
values: parameters extends AbiParameters
|
|
180
|
+
? internal.ToPrimitiveTypes<parameters>
|
|
181
|
+
: never,
|
|
182
|
+
): Hex.Hex {
|
|
183
|
+
if (parameters.length !== values.length)
|
|
184
|
+
throw new LengthMismatchError({
|
|
185
|
+
expectedLength: parameters.length as number,
|
|
186
|
+
givenLength: values.length as any,
|
|
187
|
+
})
|
|
188
|
+
// Prepare the parameters to determine dynamic types to encode.
|
|
189
|
+
const preparedParameters = internal.prepareParameters({
|
|
190
|
+
parameters: parameters as readonly Parameter[],
|
|
191
|
+
values: values as any,
|
|
192
|
+
})
|
|
193
|
+
const data = internal.encode(preparedParameters)
|
|
194
|
+
if (data.length === 0) return '0x'
|
|
195
|
+
return data
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export declare namespace encode {
|
|
199
|
+
type ErrorType =
|
|
200
|
+
| LengthMismatchError
|
|
201
|
+
| internal.encode.ErrorType
|
|
202
|
+
| internal.prepareParameters.ErrorType
|
|
203
|
+
| Errors.GlobalErrorType
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
encode.parseError = (error: unknown) =>
|
|
207
|
+
/* v8 ignore next */
|
|
208
|
+
error as encode.ErrorType
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Encodes an array of primitive values to a [packed ABI encoding](https://docs.soliditylang.org/en/latest/abi-spec.html#non-standard-packed-mode).
|
|
212
|
+
*
|
|
213
|
+
* @example
|
|
214
|
+
* ```ts twoslash
|
|
215
|
+
* import { AbiParameters } from 'ox'
|
|
216
|
+
*
|
|
217
|
+
* const encoded = AbiParameters.encodePacked(
|
|
218
|
+
* ['address', 'string'],
|
|
219
|
+
* ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 'hello world'],
|
|
220
|
+
* )
|
|
221
|
+
* // @log: '0xd8da6bf26964af9d7eed9e03e53415d37aa9604568656c6c6f20776f726c64'
|
|
222
|
+
* ```
|
|
223
|
+
*
|
|
224
|
+
* @param types - Set of ABI types to pack encode.
|
|
225
|
+
* @param values - The set of primitive values that correspond to the ABI types defined in `types`.
|
|
226
|
+
* @returns The encoded packed data.
|
|
227
|
+
*/
|
|
228
|
+
export function encodePacked<
|
|
229
|
+
const packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],
|
|
230
|
+
>(types: packedAbiTypes, values: encodePacked.Values<packedAbiTypes>): Hex.Hex {
|
|
231
|
+
if (types.length !== values.length)
|
|
232
|
+
throw new LengthMismatchError({
|
|
233
|
+
expectedLength: types.length as number,
|
|
234
|
+
givenLength: values.length as number,
|
|
235
|
+
})
|
|
236
|
+
|
|
237
|
+
const data: Hex.Hex[] = []
|
|
238
|
+
for (let i = 0; i < (types as unknown[]).length; i++) {
|
|
239
|
+
const type = types[i]
|
|
240
|
+
const value = values[i]
|
|
241
|
+
data.push(encodePacked.encode(type, value))
|
|
242
|
+
}
|
|
243
|
+
return Hex.concat(...data)
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export namespace encodePacked {
|
|
247
|
+
export type ErrorType =
|
|
248
|
+
| Hex.concat.ErrorType
|
|
249
|
+
| LengthMismatchError
|
|
250
|
+
| Errors.GlobalErrorType
|
|
251
|
+
|
|
252
|
+
export type Values<
|
|
253
|
+
packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],
|
|
254
|
+
> = {
|
|
255
|
+
[key in keyof packedAbiTypes]: packedAbiTypes[key] extends abitype.AbiType
|
|
256
|
+
? abitype.AbiParameterToPrimitiveType<{ type: packedAbiTypes[key] }>
|
|
257
|
+
: unknown
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// eslint-disable-next-line jsdoc/require-jsdoc
|
|
261
|
+
export function encode<const packedAbiType extends PackedAbiType | unknown>(
|
|
262
|
+
type: packedAbiType,
|
|
263
|
+
value: Values<[packedAbiType]>[0],
|
|
264
|
+
isArray = false,
|
|
265
|
+
): Hex.Hex {
|
|
266
|
+
if (type === 'address') {
|
|
267
|
+
const address = value as Address.Address
|
|
268
|
+
Address.assert(address)
|
|
269
|
+
return Hex.padLeft(
|
|
270
|
+
address.toLowerCase() as Hex.Hex,
|
|
271
|
+
isArray ? 32 : 0,
|
|
272
|
+
) as Address.Address
|
|
273
|
+
}
|
|
274
|
+
if (type === 'string') return Hex.fromString(value as string)
|
|
275
|
+
if (type === 'bytes') return value as Hex.Hex
|
|
276
|
+
if (type === 'bool')
|
|
277
|
+
return Hex.padLeft(Hex.fromBoolean(value as boolean), isArray ? 32 : 1)
|
|
278
|
+
|
|
279
|
+
const intMatch = (type as string).match(Solidity.integerRegex)
|
|
280
|
+
if (intMatch) {
|
|
281
|
+
const [_type, baseType, bits = '256'] = intMatch
|
|
282
|
+
const size = Number.parseInt(bits) / 8
|
|
283
|
+
return Hex.fromNumber(value as number, {
|
|
284
|
+
size: isArray ? 32 : size,
|
|
285
|
+
signed: baseType === 'int',
|
|
286
|
+
})
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
const bytesMatch = (type as string).match(Solidity.bytesRegex)
|
|
290
|
+
if (bytesMatch) {
|
|
291
|
+
const [_type, size] = bytesMatch
|
|
292
|
+
if (Number.parseInt(size!) !== ((value as Hex.Hex).length - 2) / 2)
|
|
293
|
+
throw new BytesSizeMismatchError({
|
|
294
|
+
expectedSize: Number.parseInt(size!),
|
|
295
|
+
value: value as Hex.Hex,
|
|
296
|
+
})
|
|
297
|
+
return Hex.padRight(value as Hex.Hex, isArray ? 32 : 0) as Hex.Hex
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const arrayMatch = (type as string).match(Solidity.arrayRegex)
|
|
301
|
+
if (arrayMatch && Array.isArray(value)) {
|
|
302
|
+
const [_type, childType] = arrayMatch
|
|
303
|
+
const data: Hex.Hex[] = []
|
|
304
|
+
for (let i = 0; i < value.length; i++) {
|
|
305
|
+
data.push(encode(childType, value[i], true))
|
|
306
|
+
}
|
|
307
|
+
if (data.length === 0) return '0x'
|
|
308
|
+
return Hex.concat(...data)
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
throw new InvalidTypeError(type as string)
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/* v8 ignore next */
|
|
316
|
+
encodePacked.parseError = (error: unknown) => error as encodePacked.ErrorType
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Formats {@link ox#AbiParameters.AbiParameters} into **Human Readable ABI Parameters**.
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* ```ts twoslash
|
|
323
|
+
* import { AbiParameters } from 'ox'
|
|
324
|
+
*
|
|
325
|
+
* const formatted = AbiParameters.format([
|
|
326
|
+
* {
|
|
327
|
+
* name: 'spender',
|
|
328
|
+
* type: 'address',
|
|
329
|
+
* },
|
|
330
|
+
* {
|
|
331
|
+
* name: 'amount',
|
|
332
|
+
* type: 'uint256',
|
|
333
|
+
* },
|
|
334
|
+
* ])
|
|
335
|
+
*
|
|
336
|
+
* formatted
|
|
337
|
+
* // ^?
|
|
338
|
+
*
|
|
339
|
+
*
|
|
340
|
+
* ```
|
|
341
|
+
*
|
|
342
|
+
* @param parameters - The ABI Parameters to format.
|
|
343
|
+
* @returns The formatted ABI Parameters .
|
|
344
|
+
*/
|
|
345
|
+
export function format<
|
|
346
|
+
const parameters extends readonly [
|
|
347
|
+
Parameter | abitype.AbiEventParameter,
|
|
348
|
+
...(readonly (Parameter | abitype.AbiEventParameter)[]),
|
|
349
|
+
],
|
|
350
|
+
>(
|
|
351
|
+
parameters:
|
|
352
|
+
| parameters
|
|
353
|
+
| readonly [
|
|
354
|
+
Parameter | abitype.AbiEventParameter,
|
|
355
|
+
...(readonly (Parameter | abitype.AbiEventParameter)[]),
|
|
356
|
+
],
|
|
357
|
+
): abitype.FormatAbiParameters<parameters> {
|
|
358
|
+
return abitype.formatAbiParameters(parameters)
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
export declare namespace format {
|
|
362
|
+
type ErrorType = Errors.GlobalErrorType
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
format.parseError = (error: unknown) =>
|
|
366
|
+
/* v8 ignore next */
|
|
367
|
+
error as format.ErrorType
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Parses arbitrary **JSON ABI Parameters** or **Human Readable ABI Parameters** into typed {@link ox#AbiParameters.AbiParameters}.
|
|
371
|
+
*
|
|
372
|
+
* @example
|
|
373
|
+
* ### JSON Parameters
|
|
374
|
+
*
|
|
375
|
+
* ```ts twoslash
|
|
376
|
+
* import { AbiParameters } from 'ox'
|
|
377
|
+
*
|
|
378
|
+
* const parameters = AbiParameters.from([
|
|
379
|
+
* {
|
|
380
|
+
* name: 'spender',
|
|
381
|
+
* type: 'address',
|
|
382
|
+
* },
|
|
383
|
+
* {
|
|
384
|
+
* name: 'amount',
|
|
385
|
+
* type: 'uint256',
|
|
386
|
+
* },
|
|
387
|
+
* ])
|
|
388
|
+
*
|
|
389
|
+
* parameters
|
|
390
|
+
* //^?
|
|
391
|
+
*
|
|
392
|
+
*
|
|
393
|
+
*
|
|
394
|
+
*
|
|
395
|
+
*
|
|
396
|
+
*
|
|
397
|
+
*
|
|
398
|
+
* ```
|
|
399
|
+
*
|
|
400
|
+
* @example
|
|
401
|
+
* ### Human Readable Parameters
|
|
402
|
+
*
|
|
403
|
+
* Human Readable ABI Parameters can be parsed into a typed {@link ox#AbiParameters.AbiParameters}:
|
|
404
|
+
*
|
|
405
|
+
* ```ts twoslash
|
|
406
|
+
* import { AbiParameters } from 'ox'
|
|
407
|
+
*
|
|
408
|
+
* const parameters = AbiParameters.from('address spender, uint256 amount')
|
|
409
|
+
*
|
|
410
|
+
* parameters
|
|
411
|
+
* //^?
|
|
412
|
+
*
|
|
413
|
+
*
|
|
414
|
+
*
|
|
415
|
+
*
|
|
416
|
+
*
|
|
417
|
+
*
|
|
418
|
+
*
|
|
419
|
+
* ```
|
|
420
|
+
*
|
|
421
|
+
* @example
|
|
422
|
+
* It is possible to specify `struct`s along with your definitions:
|
|
423
|
+
*
|
|
424
|
+
* ```ts twoslash
|
|
425
|
+
* import { AbiParameters } from 'ox'
|
|
426
|
+
*
|
|
427
|
+
* const parameters = AbiParameters.from([
|
|
428
|
+
* 'struct Foo { address spender; uint256 amount; }', // [!code hl]
|
|
429
|
+
* 'Foo foo, address bar',
|
|
430
|
+
* ])
|
|
431
|
+
*
|
|
432
|
+
* parameters
|
|
433
|
+
* //^?
|
|
434
|
+
*
|
|
435
|
+
*
|
|
436
|
+
*
|
|
437
|
+
*
|
|
438
|
+
*
|
|
439
|
+
*
|
|
440
|
+
*
|
|
441
|
+
*
|
|
442
|
+
*
|
|
443
|
+
*
|
|
444
|
+
*
|
|
445
|
+
*
|
|
446
|
+
* ```
|
|
447
|
+
*
|
|
448
|
+
*
|
|
449
|
+
*
|
|
450
|
+
* @param parameters - The ABI Parameters to parse.
|
|
451
|
+
* @returns The typed ABI Parameters.
|
|
452
|
+
*/
|
|
453
|
+
export function from<
|
|
454
|
+
const parameters extends AbiParameters | string | readonly string[],
|
|
455
|
+
>(
|
|
456
|
+
parameters: parameters | AbiParameters | string | readonly string[],
|
|
457
|
+
): from.ReturnType<parameters> {
|
|
458
|
+
if (Array.isArray(parameters) && typeof parameters[0] === 'string')
|
|
459
|
+
return abitype.parseAbiParameters(parameters) as never
|
|
460
|
+
if (typeof parameters === 'string')
|
|
461
|
+
return abitype.parseAbiParameters(parameters) as never
|
|
462
|
+
return parameters as never
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
export declare namespace from {
|
|
466
|
+
type ReturnType<
|
|
467
|
+
parameters extends AbiParameters | string | readonly string[],
|
|
468
|
+
> = parameters extends string
|
|
469
|
+
? abitype.ParseAbiParameters<parameters>
|
|
470
|
+
: parameters extends readonly string[]
|
|
471
|
+
? abitype.ParseAbiParameters<parameters>
|
|
472
|
+
: parameters
|
|
473
|
+
|
|
474
|
+
type ErrorType = Errors.GlobalErrorType
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
from.parseError = (error: unknown) =>
|
|
478
|
+
/* v8 ignore next */
|
|
479
|
+
error as from.ErrorType
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* Throws when the data size is too small for the given parameters.
|
|
483
|
+
*
|
|
484
|
+
* @example
|
|
485
|
+
* ```ts twoslash
|
|
486
|
+
* import { AbiParameters } from 'ox'
|
|
487
|
+
*
|
|
488
|
+
* AbiParameters.decode([{ type: 'uint256' }], '0x010f')
|
|
489
|
+
* // ↑ ❌ 2 bytes
|
|
490
|
+
* // @error: AbiParameters.DataSizeTooSmallError: Data size of 2 bytes is too small for given parameters.
|
|
491
|
+
* // @error: Params: (uint256)
|
|
492
|
+
* // @error: Data: 0x010f (2 bytes)
|
|
493
|
+
* ```
|
|
494
|
+
*
|
|
495
|
+
* ### Solution
|
|
496
|
+
*
|
|
497
|
+
* Pass a valid data size.
|
|
498
|
+
*
|
|
499
|
+
* ```ts twoslash
|
|
500
|
+
* import { AbiParameters } from 'ox'
|
|
501
|
+
*
|
|
502
|
+
* AbiParameters.decode([{ type: 'uint256' }], '0x00000000000000000000000000000000000000000000000000000000000010f')
|
|
503
|
+
* // ↑ ✅ 32 bytes
|
|
504
|
+
* ```
|
|
505
|
+
*/
|
|
506
|
+
export class DataSizeTooSmallError extends Errors.BaseError {
|
|
507
|
+
override readonly name = 'AbiParameters.DataSizeTooSmallError'
|
|
508
|
+
constructor({
|
|
509
|
+
data,
|
|
510
|
+
parameters,
|
|
511
|
+
size,
|
|
512
|
+
}: { data: Hex.Hex; parameters: readonly Parameter[]; size: number }) {
|
|
513
|
+
super(`Data size of ${size} bytes is too small for given parameters.`, {
|
|
514
|
+
metaMessages: [
|
|
515
|
+
`Params: (${abitype.formatAbiParameters(parameters as readonly [Parameter])})`,
|
|
516
|
+
`Data: ${data} (${size} bytes)`,
|
|
517
|
+
],
|
|
518
|
+
})
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
/**
|
|
523
|
+
* Throws when zero data is provided, but data is expected.
|
|
524
|
+
*
|
|
525
|
+
* @example
|
|
526
|
+
* ```ts twoslash
|
|
527
|
+
* import { AbiParameters } from 'ox'
|
|
528
|
+
*
|
|
529
|
+
* AbiParameters.decode([{ type: 'uint256' }], '0x')
|
|
530
|
+
* // ↑ ❌ zero data
|
|
531
|
+
* // @error: AbiParameters.DataSizeTooSmallError: Data size of 2 bytes is too small for given parameters.
|
|
532
|
+
* // @error: Params: (uint256)
|
|
533
|
+
* // @error: Data: 0x010f (2 bytes)
|
|
534
|
+
* ```
|
|
535
|
+
*
|
|
536
|
+
* ### Solution
|
|
537
|
+
*
|
|
538
|
+
* Pass valid data.
|
|
539
|
+
*
|
|
540
|
+
* ```ts twoslash
|
|
541
|
+
* import { AbiParameters } from 'ox'
|
|
542
|
+
*
|
|
543
|
+
* AbiParameters.decode([{ type: 'uint256' }], '0x00000000000000000000000000000000000000000000000000000000000010f')
|
|
544
|
+
* // ↑ ✅ 32 bytes
|
|
545
|
+
* ```
|
|
546
|
+
*/
|
|
547
|
+
export class ZeroDataError extends Errors.BaseError {
|
|
548
|
+
override readonly name = 'AbiParameters.ZeroDataError'
|
|
549
|
+
constructor() {
|
|
550
|
+
super('Cannot decode zero data ("0x") with ABI parameters.')
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* The length of the array value does not match the length specified in the corresponding ABI parameter.
|
|
556
|
+
*
|
|
557
|
+
* ### Example
|
|
558
|
+
*
|
|
559
|
+
* ```ts twoslash
|
|
560
|
+
* // @noErrors
|
|
561
|
+
* import { AbiParameters } from 'ox'
|
|
562
|
+
* // ---cut---
|
|
563
|
+
* AbiParameters.encode(AbiParameters.from('uint256[3]'), [[69n, 420n]])
|
|
564
|
+
* // ↑ expected: 3 ↑ ❌ length: 2
|
|
565
|
+
* // @error: AbiParameters.ArrayLengthMismatchError: ABI encoding array length mismatch
|
|
566
|
+
* // @error: for type `uint256[3]`. Expected: `3`. Given: `2`.
|
|
567
|
+
* ```
|
|
568
|
+
*
|
|
569
|
+
* ### Solution
|
|
570
|
+
*
|
|
571
|
+
* Pass an array of the correct length.
|
|
572
|
+
*
|
|
573
|
+
* ```ts twoslash
|
|
574
|
+
* import { AbiParameters } from 'ox'
|
|
575
|
+
* // ---cut---
|
|
576
|
+
* AbiParameters.encode(AbiParameters.from(['uint256[3]']), [[69n, 420n, 69n]])
|
|
577
|
+
* // ↑ ✅ length: 3
|
|
578
|
+
* ```
|
|
579
|
+
*/
|
|
580
|
+
export class ArrayLengthMismatchError extends Errors.BaseError {
|
|
581
|
+
override readonly name = 'AbiParameters.ArrayLengthMismatchError'
|
|
582
|
+
constructor({
|
|
583
|
+
expectedLength,
|
|
584
|
+
givenLength,
|
|
585
|
+
type,
|
|
586
|
+
}: { expectedLength: number; givenLength: number; type: string }) {
|
|
587
|
+
super(
|
|
588
|
+
`Array length mismatch for type \`${type}\`. Expected: \`${expectedLength}\`. Given: \`${givenLength}\`.`,
|
|
589
|
+
)
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* The size of the bytes value does not match the size specified in the corresponding ABI parameter.
|
|
595
|
+
*
|
|
596
|
+
* ### Example
|
|
597
|
+
*
|
|
598
|
+
* ```ts twoslash
|
|
599
|
+
* // @noErrors
|
|
600
|
+
* import { AbiParameters } from 'ox'
|
|
601
|
+
* // ---cut---
|
|
602
|
+
* AbiParameters.encode(AbiParameters.from('bytes8'), [['0xdeadbeefdeadbeefdeadbeef']])
|
|
603
|
+
* // ↑ expected: 8 bytes ↑ ❌ size: 12 bytes
|
|
604
|
+
* // @error: BytesSizeMismatchError: Size of bytes "0xdeadbeefdeadbeefdeadbeef"
|
|
605
|
+
* // @error: (bytes12) does not match expected size (bytes8).
|
|
606
|
+
* ```
|
|
607
|
+
*
|
|
608
|
+
* ### Solution
|
|
609
|
+
*
|
|
610
|
+
* Pass a bytes value of the correct size.
|
|
611
|
+
*
|
|
612
|
+
* ```ts twoslash
|
|
613
|
+
* import { AbiParameters } from 'ox'
|
|
614
|
+
* // ---cut---
|
|
615
|
+
* AbiParameters.encode(AbiParameters.from(['bytes8']), ['0xdeadbeefdeadbeef'])
|
|
616
|
+
* // ↑ ✅ size: 8 bytes
|
|
617
|
+
* ```
|
|
618
|
+
*/
|
|
619
|
+
export class BytesSizeMismatchError extends Errors.BaseError {
|
|
620
|
+
override readonly name = 'AbiParameters.BytesSizeMismatchError'
|
|
621
|
+
constructor({
|
|
622
|
+
expectedSize,
|
|
623
|
+
value,
|
|
624
|
+
}: { expectedSize: number; value: Hex.Hex }) {
|
|
625
|
+
super(
|
|
626
|
+
`Size of bytes "${value}" (bytes${Hex.size(
|
|
627
|
+
value,
|
|
628
|
+
)}) does not match expected size (bytes${expectedSize}).`,
|
|
629
|
+
)
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* The length of the values to encode does not match the length of the ABI parameters.
|
|
635
|
+
*
|
|
636
|
+
* ### Example
|
|
637
|
+
*
|
|
638
|
+
* ```ts twoslash
|
|
639
|
+
* // @noErrors
|
|
640
|
+
* import { AbiParameters } from 'ox'
|
|
641
|
+
* // ---cut---
|
|
642
|
+
* AbiParameters.encode(AbiParameters.from(['string', 'uint256']), ['hello'])
|
|
643
|
+
* // @error: LengthMismatchError: ABI encoding params/values length mismatch.
|
|
644
|
+
* // @error: Expected length (params): 2
|
|
645
|
+
* // @error: Given length (values): 1
|
|
646
|
+
* ```
|
|
647
|
+
*
|
|
648
|
+
* ### Solution
|
|
649
|
+
*
|
|
650
|
+
* Pass the correct number of values to encode.
|
|
651
|
+
*
|
|
652
|
+
* ### Solution
|
|
653
|
+
*
|
|
654
|
+
* Pass a [valid ABI type](https://docs.soliditylang.org/en/develop/abi-spec.html#types).
|
|
655
|
+
*/
|
|
656
|
+
export class LengthMismatchError extends Errors.BaseError {
|
|
657
|
+
override readonly name = 'AbiParameters.LengthMismatchError'
|
|
658
|
+
constructor({
|
|
659
|
+
expectedLength,
|
|
660
|
+
givenLength,
|
|
661
|
+
}: { expectedLength: number; givenLength: number }) {
|
|
662
|
+
super(
|
|
663
|
+
[
|
|
664
|
+
'ABI encoding parameters/values length mismatch.',
|
|
665
|
+
`Expected length (parameters): ${expectedLength}`,
|
|
666
|
+
`Given length (values): ${givenLength}`,
|
|
667
|
+
].join('\n'),
|
|
668
|
+
)
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* The value provided is not a valid array as specified in the corresponding ABI parameter.
|
|
674
|
+
*
|
|
675
|
+
* ### Example
|
|
676
|
+
*
|
|
677
|
+
* ```ts twoslash
|
|
678
|
+
* // @noErrors
|
|
679
|
+
* import { AbiParameters } from 'ox'
|
|
680
|
+
* // ---cut---
|
|
681
|
+
* AbiParameters.encode(AbiParameters.from(['uint256[3]']), [69])
|
|
682
|
+
* ```
|
|
683
|
+
*
|
|
684
|
+
* ### Solution
|
|
685
|
+
*
|
|
686
|
+
* Pass an array value.
|
|
687
|
+
*/
|
|
688
|
+
export class InvalidArrayError extends Errors.BaseError {
|
|
689
|
+
override readonly name = 'AbiParameters.InvalidArrayError'
|
|
690
|
+
constructor(value: unknown) {
|
|
691
|
+
super(`Value \`${value}\` is not a valid array.`)
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
/**
|
|
696
|
+
* Throws when the ABI parameter type is invalid.
|
|
697
|
+
*
|
|
698
|
+
* @example
|
|
699
|
+
* ```ts twoslash
|
|
700
|
+
* import { AbiParameters } from 'ox'
|
|
701
|
+
*
|
|
702
|
+
* AbiParameters.decode([{ type: 'lol' }], '0x00000000000000000000000000000000000000000000000000000000000010f')
|
|
703
|
+
* // ↑ ❌ invalid type
|
|
704
|
+
* // @error: AbiParameters.InvalidTypeError: Type `lol` is not a valid ABI Type.
|
|
705
|
+
* ```
|
|
706
|
+
*/
|
|
707
|
+
export class InvalidTypeError extends Errors.BaseError {
|
|
708
|
+
override readonly name = 'AbiParameters.InvalidTypeError'
|
|
709
|
+
constructor(type: string) {
|
|
710
|
+
super(`Type \`${type}\` is not a valid ABI Type.`)
|
|
711
|
+
}
|
|
712
|
+
}
|