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/AbiItem.ts
ADDED
|
@@ -0,0 +1,779 @@
|
|
|
1
|
+
import * as abitype from 'abitype'
|
|
2
|
+
import type * as Abi from './Abi.js'
|
|
3
|
+
import * as Errors from './Errors.js'
|
|
4
|
+
import * as Hash from './Hash.js'
|
|
5
|
+
import * as Hex from './Hex.js'
|
|
6
|
+
import * as internal from './internal/abiItem.js'
|
|
7
|
+
import type { UnionCompute } from './internal/types.js'
|
|
8
|
+
|
|
9
|
+
/** Root type for an item on an {@link ox#Abi.Abi}. */
|
|
10
|
+
export type AbiItem = Abi.Abi[number]
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Extracts an {@link ox#AbiItem.AbiItem} item from an {@link ox#Abi.Abi}, given a name.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts twoslash
|
|
17
|
+
* import { Abi, AbiItem } from 'ox'
|
|
18
|
+
*
|
|
19
|
+
* const abi = Abi.from([
|
|
20
|
+
* 'error Foo(string)',
|
|
21
|
+
* 'function foo(string)',
|
|
22
|
+
* 'event Bar(uint256)',
|
|
23
|
+
* ])
|
|
24
|
+
*
|
|
25
|
+
* type Foo = AbiItem.FromAbi<typeof abi, 'Foo'>
|
|
26
|
+
* // ^?
|
|
27
|
+
*
|
|
28
|
+
*
|
|
29
|
+
*
|
|
30
|
+
*
|
|
31
|
+
*
|
|
32
|
+
*
|
|
33
|
+
*
|
|
34
|
+
*
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export type FromAbi<
|
|
38
|
+
abi extends Abi.Abi,
|
|
39
|
+
name extends ExtractNames<abi>,
|
|
40
|
+
> = Extract<abi[number], { name: name }>
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Extracts the names of all {@link ox#AbiItem.AbiItem} items in an {@link ox#Abi.Abi}.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts twoslash
|
|
47
|
+
* import { Abi, AbiItem } from 'ox'
|
|
48
|
+
*
|
|
49
|
+
* const abi = Abi.from([
|
|
50
|
+
* 'error Foo(string)',
|
|
51
|
+
* 'function foo(string)',
|
|
52
|
+
* 'event Bar(uint256)',
|
|
53
|
+
* ])
|
|
54
|
+
*
|
|
55
|
+
* type names = AbiItem.Name<typeof abi>
|
|
56
|
+
* // ^?
|
|
57
|
+
*
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export type Name<abi extends Abi.Abi | readonly unknown[] = Abi.Abi> =
|
|
61
|
+
abi extends Abi.Abi ? ExtractNames<abi> : string
|
|
62
|
+
|
|
63
|
+
export type ExtractNames<abi extends Abi.Abi> = Extract<
|
|
64
|
+
abi[number],
|
|
65
|
+
{ name: string }
|
|
66
|
+
>['name']
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Formats an {@link ox#AbiItem.AbiItem} into a **Human Readable ABI Item**.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts twoslash
|
|
73
|
+
* import { AbiItem } from 'ox'
|
|
74
|
+
*
|
|
75
|
+
* const formatted = AbiItem.format({
|
|
76
|
+
* type: 'function',
|
|
77
|
+
* name: 'approve',
|
|
78
|
+
* stateMutability: 'nonpayable',
|
|
79
|
+
* inputs: [
|
|
80
|
+
* {
|
|
81
|
+
* name: 'spender',
|
|
82
|
+
* type: 'address',
|
|
83
|
+
* },
|
|
84
|
+
* {
|
|
85
|
+
* name: 'amount',
|
|
86
|
+
* type: 'uint256',
|
|
87
|
+
* },
|
|
88
|
+
* ],
|
|
89
|
+
* outputs: [{ type: 'bool' }],
|
|
90
|
+
* })
|
|
91
|
+
*
|
|
92
|
+
* formatted
|
|
93
|
+
* // ^?
|
|
94
|
+
*
|
|
95
|
+
*
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* @param abiItem - The ABI Item to format.
|
|
99
|
+
* @returns The formatted ABI Item .
|
|
100
|
+
*/
|
|
101
|
+
export function format<const abiItem extends AbiItem>(
|
|
102
|
+
abiItem: abiItem | AbiItem,
|
|
103
|
+
): abitype.FormatAbiItem<abiItem> {
|
|
104
|
+
return abitype.formatAbiItem(abiItem) as never
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export declare namespace format {
|
|
108
|
+
type ErrorType = Errors.GlobalErrorType
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
format.parseError = (error: unknown) =>
|
|
112
|
+
/* v8 ignore next */
|
|
113
|
+
error as format.ErrorType
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Parses an arbitrary **JSON ABI Item** or **Human Readable ABI Item** into a typed {@link ox#AbiItem.AbiItem}.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ### JSON ABIs
|
|
120
|
+
*
|
|
121
|
+
* ```ts twoslash
|
|
122
|
+
* import { AbiItem } from 'ox'
|
|
123
|
+
*
|
|
124
|
+
* const abiItem = AbiItem.from({
|
|
125
|
+
* type: 'function',
|
|
126
|
+
* name: 'approve',
|
|
127
|
+
* stateMutability: 'nonpayable',
|
|
128
|
+
* inputs: [
|
|
129
|
+
* {
|
|
130
|
+
* name: 'spender',
|
|
131
|
+
* type: 'address',
|
|
132
|
+
* },
|
|
133
|
+
* {
|
|
134
|
+
* name: 'amount',
|
|
135
|
+
* type: 'uint256',
|
|
136
|
+
* },
|
|
137
|
+
* ],
|
|
138
|
+
* outputs: [{ type: 'bool' }],
|
|
139
|
+
* })
|
|
140
|
+
*
|
|
141
|
+
* abiItem
|
|
142
|
+
* //^?
|
|
143
|
+
*
|
|
144
|
+
*
|
|
145
|
+
*
|
|
146
|
+
*
|
|
147
|
+
*
|
|
148
|
+
*
|
|
149
|
+
*
|
|
150
|
+
*
|
|
151
|
+
*
|
|
152
|
+
*
|
|
153
|
+
*
|
|
154
|
+
*
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ### Human Readable ABIs
|
|
159
|
+
*
|
|
160
|
+
* A Human Readable ABI can be parsed into a typed ABI object:
|
|
161
|
+
*
|
|
162
|
+
* ```ts twoslash
|
|
163
|
+
* import { AbiItem } from 'ox'
|
|
164
|
+
*
|
|
165
|
+
* const abiItem = AbiItem.from(
|
|
166
|
+
* 'function approve(address spender, uint256 amount) returns (bool)' // [!code hl]
|
|
167
|
+
* )
|
|
168
|
+
*
|
|
169
|
+
* abiItem
|
|
170
|
+
* //^?
|
|
171
|
+
*
|
|
172
|
+
*
|
|
173
|
+
*
|
|
174
|
+
*
|
|
175
|
+
*
|
|
176
|
+
*
|
|
177
|
+
*
|
|
178
|
+
*
|
|
179
|
+
*
|
|
180
|
+
*
|
|
181
|
+
*
|
|
182
|
+
*
|
|
183
|
+
*
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* It is possible to specify `struct`s along with your definitions:
|
|
188
|
+
*
|
|
189
|
+
* ```ts twoslash
|
|
190
|
+
* import { AbiItem } from 'ox'
|
|
191
|
+
*
|
|
192
|
+
* const abiItem = AbiItem.from([
|
|
193
|
+
* 'struct Foo { address spender; uint256 amount; }', // [!code hl]
|
|
194
|
+
* 'function approve(Foo foo) returns (bool)',
|
|
195
|
+
* ])
|
|
196
|
+
*
|
|
197
|
+
* abiItem
|
|
198
|
+
* //^?
|
|
199
|
+
*
|
|
200
|
+
*
|
|
201
|
+
*
|
|
202
|
+
*
|
|
203
|
+
*
|
|
204
|
+
*
|
|
205
|
+
*
|
|
206
|
+
*
|
|
207
|
+
*
|
|
208
|
+
*
|
|
209
|
+
*
|
|
210
|
+
*
|
|
211
|
+
* ```
|
|
212
|
+
*
|
|
213
|
+
*
|
|
214
|
+
*
|
|
215
|
+
* @param abiItem - The ABI Item to parse.
|
|
216
|
+
* @returns The typed ABI Item.
|
|
217
|
+
*/
|
|
218
|
+
export function from<
|
|
219
|
+
const abiItem extends AbiItem | string | readonly string[],
|
|
220
|
+
>(
|
|
221
|
+
abiItem: (abiItem | AbiItem | string | readonly string[]) &
|
|
222
|
+
(
|
|
223
|
+
| (abiItem extends string ? internal.Signature<abiItem> : never)
|
|
224
|
+
| (abiItem extends readonly string[]
|
|
225
|
+
? internal.Signatures<abiItem>
|
|
226
|
+
: never)
|
|
227
|
+
| AbiItem
|
|
228
|
+
),
|
|
229
|
+
options: from.Options = {},
|
|
230
|
+
): from.ReturnType<abiItem> {
|
|
231
|
+
const { prepare = true } = options
|
|
232
|
+
const item = (() => {
|
|
233
|
+
if (Array.isArray(abiItem)) return abitype.parseAbiItem(abiItem)
|
|
234
|
+
if (typeof abiItem === 'string')
|
|
235
|
+
return abitype.parseAbiItem(abiItem as never)
|
|
236
|
+
return abiItem
|
|
237
|
+
})() as AbiItem
|
|
238
|
+
return {
|
|
239
|
+
...item,
|
|
240
|
+
...(prepare ? { hash: getSignatureHash(item) } : {}),
|
|
241
|
+
} as never
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export declare namespace from {
|
|
245
|
+
type Options = {
|
|
246
|
+
/**
|
|
247
|
+
* Whether or not to prepare the extracted item (optimization for encoding performance).
|
|
248
|
+
* When `true`, the `hash` property is computed and included in the returned value.
|
|
249
|
+
*
|
|
250
|
+
* @default true
|
|
251
|
+
*/
|
|
252
|
+
prepare?: boolean | undefined
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
type ReturnType<abiItem extends AbiItem | string | readonly string[]> =
|
|
256
|
+
abiItem extends string
|
|
257
|
+
? abitype.ParseAbiItem<abiItem>
|
|
258
|
+
: abiItem extends readonly string[]
|
|
259
|
+
? abitype.ParseAbiItem<abiItem>
|
|
260
|
+
: abiItem
|
|
261
|
+
|
|
262
|
+
type ErrorType = Errors.GlobalErrorType
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
from.parseError = (error: unknown) =>
|
|
266
|
+
/* v8 ignore next */
|
|
267
|
+
error as from.ErrorType
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Extracts an {@link ox#AbiItem.AbiItem} from an {@link ox#Abi.Abi} given a name and optional arguments.
|
|
271
|
+
*
|
|
272
|
+
* @example
|
|
273
|
+
* ABI Items can be extracted by their name using the `name` option:
|
|
274
|
+
*
|
|
275
|
+
* ```ts twoslash
|
|
276
|
+
* import { Abi, AbiItem } from 'ox'
|
|
277
|
+
*
|
|
278
|
+
* const abi = Abi.from([
|
|
279
|
+
* 'function foo()',
|
|
280
|
+
* 'event Transfer(address owner, address to, uint256 tokenId)',
|
|
281
|
+
* 'function bar(string a) returns (uint256 x)',
|
|
282
|
+
* ])
|
|
283
|
+
*
|
|
284
|
+
* const item = AbiItem.fromAbi(abi, 'Transfer') // [!code focus]
|
|
285
|
+
* // ^?
|
|
286
|
+
*
|
|
287
|
+
*
|
|
288
|
+
*
|
|
289
|
+
*
|
|
290
|
+
*
|
|
291
|
+
*
|
|
292
|
+
* ```
|
|
293
|
+
*
|
|
294
|
+
* @example
|
|
295
|
+
* ### Extracting by Selector
|
|
296
|
+
*
|
|
297
|
+
* ABI Items can be extract by their selector when {@link ox#Hex.Hex} is provided to `name`.
|
|
298
|
+
*
|
|
299
|
+
* ```ts twoslash
|
|
300
|
+
* import { Abi, AbiItem } from 'ox'
|
|
301
|
+
*
|
|
302
|
+
* const abi = Abi.from([
|
|
303
|
+
* 'function foo()',
|
|
304
|
+
* 'event Transfer(address owner, address to, uint256 tokenId)',
|
|
305
|
+
* 'function bar(string a) returns (uint256 x)',
|
|
306
|
+
* ])
|
|
307
|
+
* const item = AbiItem.fromAbi(abi, '0x095ea7b3') // [!code focus]
|
|
308
|
+
* // ^?
|
|
309
|
+
*
|
|
310
|
+
*
|
|
311
|
+
*
|
|
312
|
+
*
|
|
313
|
+
*
|
|
314
|
+
*
|
|
315
|
+
*
|
|
316
|
+
*
|
|
317
|
+
*
|
|
318
|
+
*
|
|
319
|
+
*
|
|
320
|
+
*
|
|
321
|
+
*
|
|
322
|
+
* ```
|
|
323
|
+
*
|
|
324
|
+
* :::note
|
|
325
|
+
*
|
|
326
|
+
* Extracting via a hex selector is useful when extracting an ABI Item from an `eth_call` RPC response,
|
|
327
|
+
* a Transaction `input`, or from Event Log `topics`.
|
|
328
|
+
*
|
|
329
|
+
* :::
|
|
330
|
+
*
|
|
331
|
+
* @param abi - The ABI to extract from.
|
|
332
|
+
* @param name - The name (or selector) of the ABI item to extract.
|
|
333
|
+
* @param options - Extraction options.
|
|
334
|
+
* @returns The ABI item.
|
|
335
|
+
*/
|
|
336
|
+
export function fromAbi<
|
|
337
|
+
const abi extends Abi.Abi | readonly unknown[],
|
|
338
|
+
name extends Name<abi>,
|
|
339
|
+
const args extends internal.ExtractArgs<abi, name> | undefined = undefined,
|
|
340
|
+
//
|
|
341
|
+
allNames = Name<abi>,
|
|
342
|
+
>(
|
|
343
|
+
abi: abi | Abi.Abi | readonly unknown[],
|
|
344
|
+
name: Hex.Hex | (name extends allNames ? name : never),
|
|
345
|
+
options?: fromAbi.Options<abi, name, args>,
|
|
346
|
+
): fromAbi.ReturnType<abi, name, args> {
|
|
347
|
+
const { args = [], prepare = true } = (options ??
|
|
348
|
+
{}) as unknown as fromAbi.Options
|
|
349
|
+
|
|
350
|
+
const isSelector = Hex.validate(name, { strict: false })
|
|
351
|
+
const abiItems = (abi as Abi.Abi).filter((abiItem) => {
|
|
352
|
+
if (isSelector) {
|
|
353
|
+
if (abiItem.type === 'function' || abiItem.type === 'error')
|
|
354
|
+
return getSelector(abiItem) === Hex.slice(name, 0, 4)
|
|
355
|
+
if (abiItem.type === 'event') return getSignatureHash(abiItem) === name
|
|
356
|
+
return false
|
|
357
|
+
}
|
|
358
|
+
return 'name' in abiItem && abiItem.name === name
|
|
359
|
+
})
|
|
360
|
+
|
|
361
|
+
if (abiItems.length === 0) throw new NotFoundError({ name: name as string })
|
|
362
|
+
if (abiItems.length === 1)
|
|
363
|
+
return {
|
|
364
|
+
...abiItems[0],
|
|
365
|
+
...(prepare ? { hash: getSignatureHash(abiItems[0]!) } : {}),
|
|
366
|
+
} as never
|
|
367
|
+
|
|
368
|
+
let matchedAbiItem: AbiItem | undefined = undefined
|
|
369
|
+
for (const abiItem of abiItems) {
|
|
370
|
+
if (!('inputs' in abiItem)) continue
|
|
371
|
+
if (!args || args.length === 0) {
|
|
372
|
+
if (!abiItem.inputs || abiItem.inputs.length === 0)
|
|
373
|
+
return {
|
|
374
|
+
...abiItem,
|
|
375
|
+
...(prepare ? { hash: getSignatureHash(abiItem) } : {}),
|
|
376
|
+
} as never
|
|
377
|
+
continue
|
|
378
|
+
}
|
|
379
|
+
if (!abiItem.inputs) continue
|
|
380
|
+
if (abiItem.inputs.length === 0) continue
|
|
381
|
+
if (abiItem.inputs.length !== args.length) continue
|
|
382
|
+
const matched = args.every((arg, index) => {
|
|
383
|
+
const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]
|
|
384
|
+
if (!abiParameter) return false
|
|
385
|
+
return internal.isArgOfType(arg, abiParameter)
|
|
386
|
+
})
|
|
387
|
+
if (matched) {
|
|
388
|
+
// Check for ambiguity against already matched parameters (e.g. `address` vs `bytes20`).
|
|
389
|
+
if (
|
|
390
|
+
matchedAbiItem &&
|
|
391
|
+
'inputs' in matchedAbiItem &&
|
|
392
|
+
matchedAbiItem.inputs
|
|
393
|
+
) {
|
|
394
|
+
const ambiguousTypes = internal.getAmbiguousTypes(
|
|
395
|
+
abiItem.inputs,
|
|
396
|
+
matchedAbiItem.inputs,
|
|
397
|
+
args as readonly unknown[],
|
|
398
|
+
)
|
|
399
|
+
if (ambiguousTypes)
|
|
400
|
+
throw new AmbiguityError(
|
|
401
|
+
{
|
|
402
|
+
abiItem,
|
|
403
|
+
type: ambiguousTypes[0]!,
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
abiItem: matchedAbiItem,
|
|
407
|
+
type: ambiguousTypes[1]!,
|
|
408
|
+
},
|
|
409
|
+
)
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
matchedAbiItem = abiItem
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
const abiItem = (() => {
|
|
417
|
+
if (matchedAbiItem) return matchedAbiItem
|
|
418
|
+
const [abiItem, ...overloads] = abiItems
|
|
419
|
+
return { ...abiItem!, overloads }
|
|
420
|
+
})()
|
|
421
|
+
|
|
422
|
+
if (!abiItem) throw new NotFoundError({ name: name as string })
|
|
423
|
+
return {
|
|
424
|
+
...abiItem,
|
|
425
|
+
...(prepare ? { hash: getSignatureHash(abiItem) } : {}),
|
|
426
|
+
} as never
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
export declare namespace fromAbi {
|
|
430
|
+
type Options<
|
|
431
|
+
abi extends Abi.Abi | readonly unknown[] = Abi.Abi,
|
|
432
|
+
name extends Name<abi> = Name<abi>,
|
|
433
|
+
args extends
|
|
434
|
+
| internal.ExtractArgs<abi, name>
|
|
435
|
+
| undefined = internal.ExtractArgs<abi, name>,
|
|
436
|
+
///
|
|
437
|
+
allArgs = internal.ExtractArgs<abi, name>,
|
|
438
|
+
> = {
|
|
439
|
+
/**
|
|
440
|
+
* Whether or not to prepare the extracted item (optimization for encoding performance).
|
|
441
|
+
* When `true`, the `hash` property is computed and included in the returned value.
|
|
442
|
+
*
|
|
443
|
+
* @default true
|
|
444
|
+
*/
|
|
445
|
+
prepare?: boolean | undefined
|
|
446
|
+
} & UnionCompute<
|
|
447
|
+
readonly [] extends allArgs
|
|
448
|
+
? {
|
|
449
|
+
args?:
|
|
450
|
+
| allArgs // show all options
|
|
451
|
+
// infer value, widen inferred value of `args` conditionally to match `allArgs`
|
|
452
|
+
| (abi extends Abi.Abi
|
|
453
|
+
? args extends allArgs
|
|
454
|
+
? internal.Widen<args>
|
|
455
|
+
: never
|
|
456
|
+
: never)
|
|
457
|
+
| undefined
|
|
458
|
+
}
|
|
459
|
+
: {
|
|
460
|
+
args?:
|
|
461
|
+
| allArgs // show all options
|
|
462
|
+
| (internal.Widen<args> & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)
|
|
463
|
+
| undefined
|
|
464
|
+
}
|
|
465
|
+
>
|
|
466
|
+
|
|
467
|
+
type ReturnType<
|
|
468
|
+
abi extends Abi.Abi | readonly unknown[] = Abi.Abi,
|
|
469
|
+
name extends Name<abi> = Name<abi>,
|
|
470
|
+
args extends
|
|
471
|
+
| internal.ExtractArgs<abi, name>
|
|
472
|
+
| undefined = internal.ExtractArgs<abi, name>,
|
|
473
|
+
fallback = AbiItem,
|
|
474
|
+
> = abi extends Abi.Abi
|
|
475
|
+
? Abi.Abi extends abi
|
|
476
|
+
? fallback
|
|
477
|
+
: internal.ExtractForArgs<
|
|
478
|
+
abi,
|
|
479
|
+
name,
|
|
480
|
+
args extends internal.ExtractArgs<abi, name>
|
|
481
|
+
? args
|
|
482
|
+
: internal.ExtractArgs<abi, name>
|
|
483
|
+
>
|
|
484
|
+
: fallback
|
|
485
|
+
|
|
486
|
+
type ErrorType = Errors.GlobalErrorType
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
fromAbi.parseError = (error: unknown) =>
|
|
490
|
+
/* v8 ignore next */
|
|
491
|
+
error as fromAbi.ErrorType
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Computes the [4-byte selector](https://solidity-by-example.org/function-selector/) for an {@link ox#AbiItem.AbiItem}.
|
|
495
|
+
*
|
|
496
|
+
* Useful for computing function selectors for calldata.
|
|
497
|
+
*
|
|
498
|
+
* @example
|
|
499
|
+
* ```ts twoslash
|
|
500
|
+
* import { AbiItem } from 'ox'
|
|
501
|
+
*
|
|
502
|
+
* const selector = AbiItem.getSelector('function ownerOf(uint256 tokenId)')
|
|
503
|
+
* // @log: '0x6352211e'
|
|
504
|
+
* ```
|
|
505
|
+
*
|
|
506
|
+
* @example
|
|
507
|
+
* ```ts twoslash
|
|
508
|
+
* import { AbiItem } from 'ox'
|
|
509
|
+
*
|
|
510
|
+
* const selector = AbiItem.getSelector({
|
|
511
|
+
* inputs: [{ type: 'uint256' }],
|
|
512
|
+
* name: 'ownerOf',
|
|
513
|
+
* outputs: [],
|
|
514
|
+
* stateMutability: 'view',
|
|
515
|
+
* type: 'function'
|
|
516
|
+
* })
|
|
517
|
+
* // @log: '0x6352211e'
|
|
518
|
+
* ```
|
|
519
|
+
*
|
|
520
|
+
* @param abiItem - The ABI item to compute the selector for. Can be a signature or an ABI item for an error, event, function, etc.
|
|
521
|
+
* @returns The first 4 bytes of the {@link ox#Hash.(keccak256:function)} hash of the function signature.
|
|
522
|
+
*/
|
|
523
|
+
export function getSelector(abiItem: string | AbiItem): Hex.Hex {
|
|
524
|
+
return Hex.slice(getSignatureHash(abiItem), 0, 4)
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
export declare namespace getSelector {
|
|
528
|
+
type ErrorType =
|
|
529
|
+
| getSignatureHash.ErrorType
|
|
530
|
+
| Hex.slice.ErrorType
|
|
531
|
+
| Errors.GlobalErrorType
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/* v8 ignore next */
|
|
535
|
+
getSelector.parseError = (error: unknown) => error as getSelector.ErrorType
|
|
536
|
+
|
|
537
|
+
/**
|
|
538
|
+
* Computes the stringified signature for a given {@link ox#AbiItem.AbiItem}.
|
|
539
|
+
*
|
|
540
|
+
* @example
|
|
541
|
+
* ```ts twoslash
|
|
542
|
+
* import { AbiItem } from 'ox'
|
|
543
|
+
*
|
|
544
|
+
* const signature = AbiItem.getSignature('function ownerOf(uint256 tokenId)')
|
|
545
|
+
* // @log: 'ownerOf(uint256)'
|
|
546
|
+
* ```
|
|
547
|
+
*
|
|
548
|
+
* @example
|
|
549
|
+
* ```ts twoslash
|
|
550
|
+
* import { AbiItem } from 'ox'
|
|
551
|
+
*
|
|
552
|
+
* const signature = AbiItem.getSignature({
|
|
553
|
+
* name: 'ownerOf',
|
|
554
|
+
* type: 'function',
|
|
555
|
+
* inputs: [{ name: 'tokenId', type: 'uint256' }],
|
|
556
|
+
* outputs: [],
|
|
557
|
+
* stateMutability: 'view',
|
|
558
|
+
* })
|
|
559
|
+
* // @log: 'ownerOf(uint256)'
|
|
560
|
+
* ```
|
|
561
|
+
*
|
|
562
|
+
* @param abiItem - The ABI Item to compute the signature for.
|
|
563
|
+
* @returns The stringified signature of the ABI Item.
|
|
564
|
+
*/
|
|
565
|
+
export function getSignature(abiItem: string | AbiItem): string {
|
|
566
|
+
const signature = (() => {
|
|
567
|
+
if (typeof abiItem === 'string') return abiItem
|
|
568
|
+
return abitype.formatAbiItem(abiItem)
|
|
569
|
+
})()
|
|
570
|
+
return internal.normalizeSignature(signature)
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
export declare namespace getSignature {
|
|
574
|
+
type ErrorType =
|
|
575
|
+
| internal.normalizeSignature.ErrorType
|
|
576
|
+
| Errors.GlobalErrorType
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/* v8 ignore next */
|
|
580
|
+
getSignature.parseError = (error: unknown) => error as getSignature.ErrorType
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Computes the signature hash for an {@link ox#AbiItem.AbiItem}.
|
|
584
|
+
*
|
|
585
|
+
* Useful for computing Event Topic values.
|
|
586
|
+
*
|
|
587
|
+
* @example
|
|
588
|
+
* ```ts twoslash
|
|
589
|
+
* import { AbiItem } from 'ox'
|
|
590
|
+
*
|
|
591
|
+
* const hash = AbiItem.getSignatureHash('event Transfer(address indexed from, address indexed to, uint256 amount)')
|
|
592
|
+
* // @log: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
|
|
593
|
+
* ```
|
|
594
|
+
*
|
|
595
|
+
* @example
|
|
596
|
+
* ```ts twoslash
|
|
597
|
+
* import { AbiItem } from 'ox'
|
|
598
|
+
*
|
|
599
|
+
* const hash = AbiItem.getSignatureHash({
|
|
600
|
+
* name: 'Transfer',
|
|
601
|
+
* type: 'event',
|
|
602
|
+
* inputs: [
|
|
603
|
+
* { name: 'from', type: 'address', indexed: true },
|
|
604
|
+
* { name: 'to', type: 'address', indexed: true },
|
|
605
|
+
* { name: 'amount', type: 'uint256', indexed: false },
|
|
606
|
+
* ],
|
|
607
|
+
* })
|
|
608
|
+
* // @log: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'
|
|
609
|
+
* ```
|
|
610
|
+
*
|
|
611
|
+
* @param abiItem - The ABI Item to compute the signature hash for.
|
|
612
|
+
* @returns The {@link ox#Hash.(keccak256:function)} hash of the ABI item's signature.
|
|
613
|
+
*/
|
|
614
|
+
export function getSignatureHash(abiItem: string | AbiItem): Hex.Hex {
|
|
615
|
+
if (typeof abiItem !== 'string' && 'hash' in abiItem && abiItem.hash)
|
|
616
|
+
return abiItem.hash as Hex.Hex
|
|
617
|
+
return Hash.keccak256(Hex.fromString(getSignature(abiItem)))
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
export declare namespace getSignatureHash {
|
|
621
|
+
type ErrorType =
|
|
622
|
+
| getSignature.ErrorType
|
|
623
|
+
| Hash.keccak256.ErrorType
|
|
624
|
+
| Hex.fromString.ErrorType
|
|
625
|
+
| Errors.GlobalErrorType
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
getSignatureHash.parseError = (error: unknown) =>
|
|
629
|
+
/* v8 ignore next */
|
|
630
|
+
error as getSignatureHash.ErrorType
|
|
631
|
+
|
|
632
|
+
/**
|
|
633
|
+
* Throws when ambiguous types are found on overloaded ABI items.
|
|
634
|
+
*
|
|
635
|
+
* @example
|
|
636
|
+
* ```ts twoslash
|
|
637
|
+
* import { Abi, AbiFunction } from 'ox'
|
|
638
|
+
*
|
|
639
|
+
* const foo = Abi.from(['function foo(address)', 'function foo(bytes20)'])
|
|
640
|
+
* AbiFunction.fromAbi(foo, 'foo', {
|
|
641
|
+
* args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
|
|
642
|
+
* })
|
|
643
|
+
* // @error: AbiItem.AmbiguityError: Found ambiguous types in overloaded ABI Items.
|
|
644
|
+
* // @error: `bytes20` in `foo(bytes20)`, and
|
|
645
|
+
* // @error: `address` in `foo(address)`
|
|
646
|
+
* // @error: These types encode differently and cannot be distinguished at runtime.
|
|
647
|
+
* // @error: Remove one of the ambiguous items in the ABI.
|
|
648
|
+
* ```
|
|
649
|
+
*
|
|
650
|
+
* ### Solution
|
|
651
|
+
*
|
|
652
|
+
* Remove one of the ambiguous types from the ABI.
|
|
653
|
+
*
|
|
654
|
+
* ```ts twoslash
|
|
655
|
+
* import { Abi, AbiFunction } from 'ox'
|
|
656
|
+
*
|
|
657
|
+
* const foo = Abi.from([
|
|
658
|
+
* 'function foo(address)',
|
|
659
|
+
* 'function foo(bytes20)' // [!code --]
|
|
660
|
+
* ])
|
|
661
|
+
* AbiFunction.fromAbi(foo, 'foo', {
|
|
662
|
+
* args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'],
|
|
663
|
+
* })
|
|
664
|
+
* // @error: AbiItem.AmbiguityError: Found ambiguous types in overloaded ABI Items.
|
|
665
|
+
* // @error: `bytes20` in `foo(bytes20)`, and
|
|
666
|
+
* // @error: `address` in `foo(address)`
|
|
667
|
+
* // @error: These types encode differently and cannot be distinguished at runtime.
|
|
668
|
+
* // @error: Remove one of the ambiguous items in the ABI.
|
|
669
|
+
* ```
|
|
670
|
+
*/
|
|
671
|
+
export class AmbiguityError extends Errors.BaseError {
|
|
672
|
+
override readonly name = 'AbiItem.AmbiguityError'
|
|
673
|
+
constructor(
|
|
674
|
+
x: { abiItem: Abi.Abi[number]; type: string },
|
|
675
|
+
y: { abiItem: Abi.Abi[number]; type: string },
|
|
676
|
+
) {
|
|
677
|
+
super('Found ambiguous types in overloaded ABI Items.', {
|
|
678
|
+
metaMessages: [
|
|
679
|
+
// TODO: abitype to add support for signature-formatted ABI items.
|
|
680
|
+
`\`${x.type}\` in \`${internal.normalizeSignature(abitype.formatAbiItem(x.abiItem))}\`, and`,
|
|
681
|
+
`\`${y.type}\` in \`${internal.normalizeSignature(abitype.formatAbiItem(y.abiItem))}\``,
|
|
682
|
+
'',
|
|
683
|
+
'These types encode differently and cannot be distinguished at runtime.',
|
|
684
|
+
'Remove one of the ambiguous items in the ABI.',
|
|
685
|
+
],
|
|
686
|
+
})
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* Throws when an ABI item is not found in the ABI.
|
|
692
|
+
*
|
|
693
|
+
* @example
|
|
694
|
+
* ```ts twoslash
|
|
695
|
+
* // @noErrors
|
|
696
|
+
* import { Abi, AbiFunction } from 'ox'
|
|
697
|
+
*
|
|
698
|
+
* const foo = Abi.from([
|
|
699
|
+
* 'function foo(address)',
|
|
700
|
+
* 'function bar(uint)'
|
|
701
|
+
* ])
|
|
702
|
+
* AbiFunction.fromAbi(foo, 'baz')
|
|
703
|
+
* // @error: AbiItem.NotFoundError: ABI function with name "baz" not found.
|
|
704
|
+
* ```
|
|
705
|
+
*
|
|
706
|
+
* ### Solution
|
|
707
|
+
*
|
|
708
|
+
* Ensure the ABI item exists on the ABI.
|
|
709
|
+
*
|
|
710
|
+
* ```ts twoslash
|
|
711
|
+
* // @noErrors
|
|
712
|
+
* import { Abi, AbiFunction } from 'ox'
|
|
713
|
+
*
|
|
714
|
+
* const foo = Abi.from([
|
|
715
|
+
* 'function foo(address)',
|
|
716
|
+
* 'function bar(uint)',
|
|
717
|
+
* 'function baz(bool)' // [!code ++]
|
|
718
|
+
* ])
|
|
719
|
+
* AbiFunction.fromAbi(foo, 'baz')
|
|
720
|
+
* ```
|
|
721
|
+
*/
|
|
722
|
+
export class NotFoundError extends Errors.BaseError {
|
|
723
|
+
override readonly name = 'AbiItem.NotFoundError'
|
|
724
|
+
constructor({
|
|
725
|
+
name,
|
|
726
|
+
data,
|
|
727
|
+
type = 'item',
|
|
728
|
+
}: {
|
|
729
|
+
name?: string | undefined
|
|
730
|
+
data?: Hex.Hex | undefined
|
|
731
|
+
type?: string | undefined
|
|
732
|
+
}) {
|
|
733
|
+
const selector = (() => {
|
|
734
|
+
if (name) return ` with name "${name}"`
|
|
735
|
+
if (data) return ` with data "${data}"`
|
|
736
|
+
return ''
|
|
737
|
+
})()
|
|
738
|
+
super(`ABI ${type}${selector} not found.`)
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
/**
|
|
743
|
+
* Throws when the selector size is invalid.
|
|
744
|
+
*
|
|
745
|
+
* @example
|
|
746
|
+
* ```ts twoslash
|
|
747
|
+
* import { Abi, AbiFunction } from 'ox'
|
|
748
|
+
*
|
|
749
|
+
* const foo = Abi.from([
|
|
750
|
+
* 'function foo(address)',
|
|
751
|
+
* 'function bar(uint)'
|
|
752
|
+
* ])
|
|
753
|
+
* AbiFunction.fromAbi(foo, '0xaaa')
|
|
754
|
+
* // @error: AbiItem.InvalidSelectorSizeError: Selector size is invalid. Expected 4 bytes. Received 2 bytes ("0xaaa").
|
|
755
|
+
* ```
|
|
756
|
+
*
|
|
757
|
+
* ### Solution
|
|
758
|
+
*
|
|
759
|
+
* Ensure the selector size is 4 bytes.
|
|
760
|
+
*
|
|
761
|
+
* ```ts twoslash
|
|
762
|
+
* // @noErrors
|
|
763
|
+
* import { Abi, AbiFunction } from 'ox'
|
|
764
|
+
*
|
|
765
|
+
* const foo = Abi.from([
|
|
766
|
+
* 'function foo(address)',
|
|
767
|
+
* 'function bar(uint)'
|
|
768
|
+
* ])
|
|
769
|
+
* AbiFunction.fromAbi(foo, '0x7af82b1a')
|
|
770
|
+
* ```
|
|
771
|
+
*/
|
|
772
|
+
export class InvalidSelectorSizeError extends Errors.BaseError {
|
|
773
|
+
override readonly name = 'AbiItem.InvalidSelectorSizeError'
|
|
774
|
+
constructor({ data }: { data: Hex.Hex }) {
|
|
775
|
+
super(
|
|
776
|
+
`Selector size is invalid. Expected 4 bytes. Received ${Hex.size(data)} bytes ("${data}").`,
|
|
777
|
+
)
|
|
778
|
+
}
|
|
779
|
+
}
|