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/AbiError.ts
ADDED
|
@@ -0,0 +1,719 @@
|
|
|
1
|
+
import * as abitype from 'abitype'
|
|
2
|
+
import type * as Abi from './Abi.js'
|
|
3
|
+
import * as AbiItem from './AbiItem.js'
|
|
4
|
+
import * as AbiParameters from './AbiParameters.js'
|
|
5
|
+
import type * as Errors from './Errors.js'
|
|
6
|
+
import * as Hex from './Hex.js'
|
|
7
|
+
import type * as internal from './internal/abiError.js'
|
|
8
|
+
import type * as AbiItem_internal from './internal/abiItem.js'
|
|
9
|
+
import type { IsNarrowable, IsNever } from './internal/types.js'
|
|
10
|
+
|
|
11
|
+
/** Root type for an {@link ox#AbiItem.AbiItem} with an `error` type. */
|
|
12
|
+
export type AbiError = abitype.AbiError & {
|
|
13
|
+
hash?: Hex.Hex | undefined
|
|
14
|
+
overloads?: readonly AbiError[] | undefined
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** @internal */
|
|
18
|
+
export function decode<
|
|
19
|
+
const abiError extends AbiError,
|
|
20
|
+
as extends 'Object' | 'Array' = 'Array',
|
|
21
|
+
>(
|
|
22
|
+
abiError: abiError,
|
|
23
|
+
data: Hex.Hex,
|
|
24
|
+
options?: decode.Options<as> | undefined,
|
|
25
|
+
): decode.ReturnType<abiError, as>
|
|
26
|
+
/**
|
|
27
|
+
* ABI-decodes the provided error input (`inputs`).
|
|
28
|
+
*
|
|
29
|
+
* :::tip
|
|
30
|
+
*
|
|
31
|
+
* This function is typically used to decode contract function reverts (e.g. a JSON-RPC error response).
|
|
32
|
+
*
|
|
33
|
+
* See the [End-to-end Example](#end-to-end).
|
|
34
|
+
*
|
|
35
|
+
* :::
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts twoslash
|
|
39
|
+
* import { AbiError } from 'ox'
|
|
40
|
+
*
|
|
41
|
+
* const error = AbiError.from('error InvalidSignature(uint r, uint s, uint8 yParity)')
|
|
42
|
+
*
|
|
43
|
+
* const value = AbiError.decode(error, '0xecde634900000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001')
|
|
44
|
+
* // @log: [420n, 69n, 1]
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* You can extract an ABI Error from a JSON ABI with {@link ox#AbiError.(fromAbi:function)}:
|
|
49
|
+
*
|
|
50
|
+
* ```ts twoslash
|
|
51
|
+
* // @noErrors
|
|
52
|
+
* import { Abi, AbiError } from 'ox'
|
|
53
|
+
*
|
|
54
|
+
* const abi = Abi.from([...]) // [!code hl]
|
|
55
|
+
* const error = AbiError.fromAbi(abi, 'InvalidSignature') // [!code hl]
|
|
56
|
+
*
|
|
57
|
+
* const value = AbiError.decode(error, '0xecde634900000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001')
|
|
58
|
+
* // @log: [420n, 69n, 1]
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* You can pass the error `data` to the `name` property of {@link ox#AbiError.(fromAbi:function)} to extract and infer the error by its 4-byte selector:
|
|
63
|
+
*
|
|
64
|
+
* ```ts twoslash
|
|
65
|
+
* // @noErrors
|
|
66
|
+
* import { Abi, AbiError } from 'ox'
|
|
67
|
+
*
|
|
68
|
+
* const data = '0xecde634900000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001'
|
|
69
|
+
*
|
|
70
|
+
* const abi = Abi.from([...])
|
|
71
|
+
* const error = AbiError.fromAbi(abi, data) // [!code hl]
|
|
72
|
+
*
|
|
73
|
+
* const value = AbiError.decode(error, data)
|
|
74
|
+
* // @log: [420n, 69n, 1]
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ### End-to-end
|
|
79
|
+
*
|
|
80
|
+
* Below is an end-to-end example of using `AbiError.decode` to decode the revert error of an `approve` contract call on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
|
|
81
|
+
*
|
|
82
|
+
* ```ts twoslash
|
|
83
|
+
* // @noErrors
|
|
84
|
+
* import 'ox/window'
|
|
85
|
+
* import { Abi, AbiError, AbiFunction } from 'ox'
|
|
86
|
+
*
|
|
87
|
+
* // 1. Extract the Function from the Contract's ABI.
|
|
88
|
+
* const abi = Abi.from([
|
|
89
|
+
* // ...
|
|
90
|
+
* {
|
|
91
|
+
* inputs: [
|
|
92
|
+
* { name: 'to', type: 'address' },
|
|
93
|
+
* { name: 'tokenId', type: 'uint256' },
|
|
94
|
+
* ],
|
|
95
|
+
* name: 'approve',
|
|
96
|
+
* outputs: [],
|
|
97
|
+
* stateMutability: 'nonpayable',
|
|
98
|
+
* type: 'function',
|
|
99
|
+
* },
|
|
100
|
+
* // ...
|
|
101
|
+
* ])
|
|
102
|
+
* const approve = AbiFunction.fromAbi(abi, 'approve')
|
|
103
|
+
*
|
|
104
|
+
* // 2. Encode the Function Input.
|
|
105
|
+
* const data = AbiFunction.encodeData(
|
|
106
|
+
* approve,
|
|
107
|
+
* ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
|
|
108
|
+
* )
|
|
109
|
+
*
|
|
110
|
+
* try {
|
|
111
|
+
* // 3. Attempt to perform the the Contract Call.
|
|
112
|
+
* await window.ethereum!.request({
|
|
113
|
+
* method: 'eth_call',
|
|
114
|
+
* params: [
|
|
115
|
+
* {
|
|
116
|
+
* data,
|
|
117
|
+
* to: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
|
|
118
|
+
* },
|
|
119
|
+
* ],
|
|
120
|
+
* })
|
|
121
|
+
* } catch (e) { // [!code focus]
|
|
122
|
+
* // 4. Extract and decode the Error. // [!code focus]
|
|
123
|
+
* const error = AbiError.fromAbi(abi, e.data) // [!code focus]
|
|
124
|
+
* const value = AbiError.decode(error, e.data) // [!code focus]
|
|
125
|
+
* console.error(`${error.name}(${value})`) // [!code focus]
|
|
126
|
+
* // @error: Error(ERC721: approve caller is not owner nor approved for all)
|
|
127
|
+
* } // [!code focus]
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* :::note
|
|
131
|
+
*
|
|
132
|
+
* For simplicity, the above example uses `window.ethereum.request`, but you can use any
|
|
133
|
+
* type of JSON-RPC interface.
|
|
134
|
+
*
|
|
135
|
+
* :::
|
|
136
|
+
*
|
|
137
|
+
* @param abiError - The ABI Error to decode.
|
|
138
|
+
* @param data - The error data.
|
|
139
|
+
* @param options - Decoding options.
|
|
140
|
+
* @returns The decoded error.
|
|
141
|
+
*/
|
|
142
|
+
export function decode(
|
|
143
|
+
abiError: AbiError,
|
|
144
|
+
data: Hex.Hex,
|
|
145
|
+
options?: decode.Options | undefined,
|
|
146
|
+
): unknown | readonly unknown[] | undefined
|
|
147
|
+
/** @internal */
|
|
148
|
+
export function decode(
|
|
149
|
+
abiError: AbiError,
|
|
150
|
+
data: Hex.Hex,
|
|
151
|
+
options: decode.Options = {},
|
|
152
|
+
): decode.ReturnType {
|
|
153
|
+
if (Hex.size(data) < 4) throw new AbiItem.InvalidSelectorSizeError({ data })
|
|
154
|
+
if (abiError.inputs.length === 0) return undefined
|
|
155
|
+
|
|
156
|
+
const values = AbiParameters.decode(
|
|
157
|
+
abiError.inputs,
|
|
158
|
+
Hex.slice(data, 4),
|
|
159
|
+
options,
|
|
160
|
+
)
|
|
161
|
+
if (values && Object.keys(values).length === 1) {
|
|
162
|
+
if (Array.isArray(values)) return values[0]
|
|
163
|
+
return Object.values(values)[0]
|
|
164
|
+
}
|
|
165
|
+
return values
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export declare namespace decode {
|
|
169
|
+
type Options<as extends 'Object' | 'Array' = 'Array'> = {
|
|
170
|
+
/**
|
|
171
|
+
* Whether the decoded values should be returned as an `Object` or `Array`.
|
|
172
|
+
*
|
|
173
|
+
* @default "Array"
|
|
174
|
+
*/
|
|
175
|
+
as?: as | 'Array' | 'Object' | undefined
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
type ReturnType<
|
|
179
|
+
abiError extends AbiError = AbiError,
|
|
180
|
+
as extends 'Object' | 'Array' = 'Array',
|
|
181
|
+
> = IsNarrowable<abiError, AbiError> extends true
|
|
182
|
+
? abiError['inputs'] extends readonly []
|
|
183
|
+
? undefined
|
|
184
|
+
: abiError['inputs'] extends readonly [
|
|
185
|
+
infer type extends abitype.AbiParameter,
|
|
186
|
+
]
|
|
187
|
+
? abitype.AbiParameterToPrimitiveType<type>
|
|
188
|
+
: AbiParameters.decode.ReturnType<
|
|
189
|
+
abiError['inputs'],
|
|
190
|
+
as
|
|
191
|
+
> extends infer types
|
|
192
|
+
? types extends readonly []
|
|
193
|
+
? undefined
|
|
194
|
+
: types extends readonly [infer type]
|
|
195
|
+
? type
|
|
196
|
+
: types
|
|
197
|
+
: never
|
|
198
|
+
: unknown | readonly unknown[] | undefined
|
|
199
|
+
|
|
200
|
+
type ErrorType =
|
|
201
|
+
| AbiParameters.decode.ErrorType
|
|
202
|
+
| Hex.size.ErrorType
|
|
203
|
+
| AbiItem.InvalidSelectorSizeError
|
|
204
|
+
| Errors.GlobalErrorType
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* ABI-encodes the provided error input (`inputs`), prefixed with the 4 byte error selector.
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```ts twoslash
|
|
212
|
+
* import { AbiError } from 'ox'
|
|
213
|
+
*
|
|
214
|
+
* const error = AbiError.from(
|
|
215
|
+
* 'error InvalidSignature(uint r, uint s, uint8 yParity)'
|
|
216
|
+
* )
|
|
217
|
+
*
|
|
218
|
+
* const data = AbiError.encode( // [!code focus]
|
|
219
|
+
* error, // [!code focus]
|
|
220
|
+
* [1n, 2n, 0] // [!code focus]
|
|
221
|
+
* ) // [!code focus]
|
|
222
|
+
* // @log: '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* You can extract an ABI Error from a JSON ABI with {@link ox#AbiError.(fromAbi:function)}:
|
|
227
|
+
*
|
|
228
|
+
* ```ts twoslash
|
|
229
|
+
* // @noErrors
|
|
230
|
+
* import { Abi, AbiError } from 'ox'
|
|
231
|
+
*
|
|
232
|
+
* const abi = Abi.from([ // [!code hl]
|
|
233
|
+
* // ... // [!code hl]
|
|
234
|
+
* { // [!code hl]
|
|
235
|
+
* name: 'InvalidSignature', // [!code hl]
|
|
236
|
+
* type: 'error', // [!code hl]
|
|
237
|
+
* inputs: [ // [!code hl]
|
|
238
|
+
* { name: 'r', type: 'uint256' }, // [!code hl]
|
|
239
|
+
* { name: 's', type: 'uint256' }, // [!code hl]
|
|
240
|
+
* { name: 'yParity', type: 'uint8' }, // [!code hl]
|
|
241
|
+
* ], // [!code hl]
|
|
242
|
+
* }, // [!code hl]
|
|
243
|
+
* // ... // [!code hl]
|
|
244
|
+
* ]) // [!code hl]
|
|
245
|
+
* const error = AbiError.fromAbi(abi, 'InvalidSignature') // [!code hl]
|
|
246
|
+
*
|
|
247
|
+
* const data = AbiError.encode(
|
|
248
|
+
* error,
|
|
249
|
+
* ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
|
|
250
|
+
* )
|
|
251
|
+
* // @log: '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* @param abiError - ABI Error to encode
|
|
255
|
+
* @param args - Error arguments
|
|
256
|
+
* @returns ABI-encoded error name and arguments
|
|
257
|
+
*/
|
|
258
|
+
export function encode<const abiError extends AbiError>(
|
|
259
|
+
abiError: abiError,
|
|
260
|
+
...args: encode.Args<abiError>
|
|
261
|
+
): encode.ReturnType {
|
|
262
|
+
const selector = getSelector(abiError)
|
|
263
|
+
|
|
264
|
+
const data =
|
|
265
|
+
args.length > 0
|
|
266
|
+
? AbiParameters.encode(abiError.inputs, (args as any)[0])
|
|
267
|
+
: undefined
|
|
268
|
+
|
|
269
|
+
return data ? Hex.concat(selector, data) : selector
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
export declare namespace encode {
|
|
273
|
+
type Args<abiError extends AbiError = AbiError> = IsNarrowable<
|
|
274
|
+
abiError,
|
|
275
|
+
AbiError
|
|
276
|
+
> extends true
|
|
277
|
+
? abitype.AbiParametersToPrimitiveTypes<
|
|
278
|
+
abiError['inputs']
|
|
279
|
+
> extends readonly []
|
|
280
|
+
? []
|
|
281
|
+
: [abitype.AbiParametersToPrimitiveTypes<abiError['inputs']>]
|
|
282
|
+
: readonly unknown[]
|
|
283
|
+
|
|
284
|
+
type ReturnType = Hex.Hex
|
|
285
|
+
|
|
286
|
+
type ErrorType = Errors.GlobalErrorType
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
encode.parseError = (error: unknown) =>
|
|
290
|
+
/* v8 ignore next */
|
|
291
|
+
error as encode.ErrorType
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Formats an {@link ox#AbiError.AbiError} into a **Human Readable ABI Error**.
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* ```ts twoslash
|
|
298
|
+
* import { AbiError } from 'ox'
|
|
299
|
+
*
|
|
300
|
+
* const formatted = AbiError.format({
|
|
301
|
+
* type: 'error',
|
|
302
|
+
* name: 'Example',
|
|
303
|
+
* inputs: [
|
|
304
|
+
* {
|
|
305
|
+
* name: 'spender',
|
|
306
|
+
* type: 'address',
|
|
307
|
+
* },
|
|
308
|
+
* {
|
|
309
|
+
* name: 'amount',
|
|
310
|
+
* type: 'uint256',
|
|
311
|
+
* },
|
|
312
|
+
* ],
|
|
313
|
+
* })
|
|
314
|
+
*
|
|
315
|
+
* formatted
|
|
316
|
+
* // ^?
|
|
317
|
+
*
|
|
318
|
+
*
|
|
319
|
+
* ```
|
|
320
|
+
*
|
|
321
|
+
* @param abiError - The ABI Error to format.
|
|
322
|
+
* @returns The formatted ABI Error.
|
|
323
|
+
*/
|
|
324
|
+
export function format<const abiError extends AbiError>(
|
|
325
|
+
abiError: abiError | AbiError,
|
|
326
|
+
): abitype.FormatAbiItem<abiError> {
|
|
327
|
+
return abitype.formatAbiItem(abiError) as never
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
export declare namespace format {
|
|
331
|
+
type ErrorType = Errors.GlobalErrorType
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
format.parseError = (error: unknown) =>
|
|
335
|
+
/* v8 ignore next */
|
|
336
|
+
error as format.ErrorType
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Parses an arbitrary **JSON ABI Error** or **Human Readable ABI Error** into a typed {@link ox#AbiError.AbiError}.
|
|
340
|
+
*
|
|
341
|
+
* @example
|
|
342
|
+
* ### JSON ABIs
|
|
343
|
+
*
|
|
344
|
+
* ```ts twoslash
|
|
345
|
+
* import { AbiError } from 'ox'
|
|
346
|
+
*
|
|
347
|
+
* const badSignatureVError = AbiError.from({
|
|
348
|
+
* inputs: [{ name: 'v', type: 'uint8' }],
|
|
349
|
+
* name: 'BadSignatureV',
|
|
350
|
+
* type: 'error',
|
|
351
|
+
* })
|
|
352
|
+
*
|
|
353
|
+
* badSignatureVError
|
|
354
|
+
* //^?
|
|
355
|
+
*
|
|
356
|
+
*
|
|
357
|
+
*
|
|
358
|
+
*
|
|
359
|
+
*
|
|
360
|
+
*
|
|
361
|
+
*
|
|
362
|
+
*
|
|
363
|
+
*
|
|
364
|
+
*
|
|
365
|
+
*
|
|
366
|
+
*
|
|
367
|
+
* ```
|
|
368
|
+
*
|
|
369
|
+
* @example
|
|
370
|
+
* ### Human Readable ABIs
|
|
371
|
+
*
|
|
372
|
+
* A Human Readable ABI can be parsed into a typed ABI object:
|
|
373
|
+
*
|
|
374
|
+
* ```ts twoslash
|
|
375
|
+
* import { AbiError } from 'ox'
|
|
376
|
+
*
|
|
377
|
+
* const badSignatureVError = AbiError.from(
|
|
378
|
+
* 'error BadSignatureV(uint8 v)' // [!code hl]
|
|
379
|
+
* )
|
|
380
|
+
*
|
|
381
|
+
* badSignatureVError
|
|
382
|
+
* //^?
|
|
383
|
+
*
|
|
384
|
+
*
|
|
385
|
+
*
|
|
386
|
+
*
|
|
387
|
+
*
|
|
388
|
+
*
|
|
389
|
+
*
|
|
390
|
+
*
|
|
391
|
+
*
|
|
392
|
+
*
|
|
393
|
+
*
|
|
394
|
+
*
|
|
395
|
+
*
|
|
396
|
+
* ```
|
|
397
|
+
*
|
|
398
|
+
* @example
|
|
399
|
+
* It is possible to specify `struct`s along with your definitions:
|
|
400
|
+
*
|
|
401
|
+
* ```ts twoslash
|
|
402
|
+
* import { AbiError } from 'ox'
|
|
403
|
+
*
|
|
404
|
+
* const badSignatureVError = AbiError.from([
|
|
405
|
+
* 'struct Signature { uint8 v; }', // [!code hl]
|
|
406
|
+
* 'error BadSignatureV(Signature signature)',
|
|
407
|
+
* ])
|
|
408
|
+
*
|
|
409
|
+
* badSignatureVError
|
|
410
|
+
* //^?
|
|
411
|
+
*
|
|
412
|
+
*
|
|
413
|
+
*
|
|
414
|
+
*
|
|
415
|
+
*
|
|
416
|
+
*
|
|
417
|
+
*
|
|
418
|
+
*
|
|
419
|
+
*
|
|
420
|
+
*
|
|
421
|
+
*
|
|
422
|
+
*
|
|
423
|
+
* ```
|
|
424
|
+
*
|
|
425
|
+
*
|
|
426
|
+
*
|
|
427
|
+
* @param abiError - The ABI Error to parse.
|
|
428
|
+
* @returns Typed ABI Error.
|
|
429
|
+
*/
|
|
430
|
+
export function from<
|
|
431
|
+
const abiError extends AbiError | string | readonly string[],
|
|
432
|
+
>(
|
|
433
|
+
abiError: (abiError | AbiError | string | readonly string[]) &
|
|
434
|
+
(
|
|
435
|
+
| (abiError extends string ? internal.Signature<abiError> : never)
|
|
436
|
+
| (abiError extends readonly string[]
|
|
437
|
+
? internal.Signatures<abiError>
|
|
438
|
+
: never)
|
|
439
|
+
| AbiError
|
|
440
|
+
),
|
|
441
|
+
options: from.Options = {},
|
|
442
|
+
): from.ReturnType<abiError> {
|
|
443
|
+
return AbiItem.from(abiError as AbiError, options) as never
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
export declare namespace from {
|
|
447
|
+
type Options = {
|
|
448
|
+
/**
|
|
449
|
+
* Whether or not to prepare the extracted function (optimization for encoding performance).
|
|
450
|
+
* When `true`, the `hash` property is computed and included in the returned value.
|
|
451
|
+
*
|
|
452
|
+
* @default true
|
|
453
|
+
*/
|
|
454
|
+
prepare?: boolean | undefined
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
type ReturnType<abiError extends AbiError | string | readonly string[]> =
|
|
458
|
+
AbiItem.from.ReturnType<abiError>
|
|
459
|
+
|
|
460
|
+
type ErrorType = AbiItem.from.ErrorType | Errors.GlobalErrorType
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
from.parseError = (error: unknown) =>
|
|
464
|
+
/* v8 ignore next */
|
|
465
|
+
error as from.ErrorType
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Extracts an {@link ox#AbiError.AbiError} from an {@link ox#Abi.Abi} given a name and optional arguments.
|
|
469
|
+
*
|
|
470
|
+
* @example
|
|
471
|
+
* ### Extracting by Name
|
|
472
|
+
*
|
|
473
|
+
* ABI Errors can be extracted by their name using the `name` option:
|
|
474
|
+
*
|
|
475
|
+
* ```ts twoslash
|
|
476
|
+
* import { Abi, AbiError } from 'ox'
|
|
477
|
+
*
|
|
478
|
+
* const abi = Abi.from([
|
|
479
|
+
* 'function foo()',
|
|
480
|
+
* 'error BadSignatureV(uint8 v)',
|
|
481
|
+
* 'function bar(string a) returns (uint256 x)',
|
|
482
|
+
* ])
|
|
483
|
+
*
|
|
484
|
+
* const item = AbiError.fromAbi(abi, 'BadSignatureV') // [!code focus]
|
|
485
|
+
* // ^?
|
|
486
|
+
*
|
|
487
|
+
*
|
|
488
|
+
*
|
|
489
|
+
*
|
|
490
|
+
*
|
|
491
|
+
*
|
|
492
|
+
* ```
|
|
493
|
+
*
|
|
494
|
+
* @example
|
|
495
|
+
* ### Extracting by Selector
|
|
496
|
+
*
|
|
497
|
+
* ABI Errors can be extract by their selector when {@link ox#Hex.Hex} is provided to `name`.
|
|
498
|
+
*
|
|
499
|
+
* ```ts twoslash
|
|
500
|
+
* import { Abi, AbiError } from 'ox'
|
|
501
|
+
*
|
|
502
|
+
* const abi = Abi.from([
|
|
503
|
+
* 'function foo()',
|
|
504
|
+
* 'error BadSignatureV(uint8 v)',
|
|
505
|
+
* 'function bar(string a) returns (uint256 x)',
|
|
506
|
+
* ])
|
|
507
|
+
* const item = AbiError.fromAbi(abi, '0x095ea7b3') // [!code focus]
|
|
508
|
+
* // ^?
|
|
509
|
+
*
|
|
510
|
+
*
|
|
511
|
+
*
|
|
512
|
+
*
|
|
513
|
+
*
|
|
514
|
+
*
|
|
515
|
+
*
|
|
516
|
+
*
|
|
517
|
+
*
|
|
518
|
+
* ```
|
|
519
|
+
*
|
|
520
|
+
* :::note
|
|
521
|
+
*
|
|
522
|
+
* Extracting via a hex selector is useful when extracting an ABI Error from JSON-RPC error data.
|
|
523
|
+
*
|
|
524
|
+
* :::
|
|
525
|
+
*
|
|
526
|
+
* @param abi - The ABI to extract from.
|
|
527
|
+
* @param name - The name (or selector) of the ABI item to extract.
|
|
528
|
+
* @param options - Extraction options.
|
|
529
|
+
* @returns The ABI item.
|
|
530
|
+
*/
|
|
531
|
+
export function fromAbi<
|
|
532
|
+
const abi extends Abi.Abi | readonly unknown[],
|
|
533
|
+
name extends Name<abi>,
|
|
534
|
+
const args extends
|
|
535
|
+
| AbiItem_internal.ExtractArgs<abi, name>
|
|
536
|
+
| undefined = undefined,
|
|
537
|
+
//
|
|
538
|
+
allNames = Name<abi>,
|
|
539
|
+
>(
|
|
540
|
+
abi: abi | Abi.Abi | readonly unknown[],
|
|
541
|
+
name: Hex.Hex | (name extends allNames ? name : never),
|
|
542
|
+
options?: AbiItem.fromAbi.Options<
|
|
543
|
+
abi,
|
|
544
|
+
name,
|
|
545
|
+
args,
|
|
546
|
+
AbiItem_internal.ExtractArgs<abi, name>
|
|
547
|
+
>,
|
|
548
|
+
): fromAbi.ReturnType<abi, name, args> {
|
|
549
|
+
if (name === 'Error') return solidityError as never
|
|
550
|
+
if (name === 'Panic') return solidityPanic as never
|
|
551
|
+
if (Hex.validate(name, { strict: false })) {
|
|
552
|
+
const selector = Hex.slice(name, 0, 4)
|
|
553
|
+
if (selector === solidityErrorSelector) return solidityError as never
|
|
554
|
+
if (selector === solidityPanicSelector) return solidityPanic as never
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
const item = AbiItem.fromAbi(abi, name, options as any)
|
|
558
|
+
if (item.type !== 'error')
|
|
559
|
+
throw new AbiItem.NotFoundError({ name, type: 'error' })
|
|
560
|
+
return item as never
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
export declare namespace fromAbi {
|
|
564
|
+
type ReturnType<
|
|
565
|
+
abi extends Abi.Abi | readonly unknown[] = Abi.Abi,
|
|
566
|
+
name extends Name<abi> = Name<abi>,
|
|
567
|
+
args extends
|
|
568
|
+
| AbiItem_internal.ExtractArgs<abi, name>
|
|
569
|
+
| undefined = AbiItem_internal.ExtractArgs<abi, name>,
|
|
570
|
+
> = IsNarrowable<name, Name<abi>> extends true
|
|
571
|
+
?
|
|
572
|
+
| (name extends 'Error' ? typeof solidityError : never)
|
|
573
|
+
| (name extends 'Panic'
|
|
574
|
+
? typeof solidityPanic
|
|
575
|
+
: never) extends infer result
|
|
576
|
+
? IsNever<result> extends true
|
|
577
|
+
? AbiItem.fromAbi.ReturnType<abi, name, args, AbiError>
|
|
578
|
+
: result
|
|
579
|
+
: never
|
|
580
|
+
:
|
|
581
|
+
| AbiItem.fromAbi.ReturnType<abi, name, args, AbiError>
|
|
582
|
+
| typeof solidityError
|
|
583
|
+
| typeof solidityPanic
|
|
584
|
+
|
|
585
|
+
type ErrorType = AbiItem.fromAbi.ErrorType | Errors.GlobalErrorType
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
fromAbi.parseError = (error: unknown) =>
|
|
589
|
+
/* v8 ignore next */
|
|
590
|
+
error as fromAbi.ErrorType
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* Computes the [4-byte selector](https://solidity-by-example.org/function-selector/) for an {@link ox#AbiError.AbiError}.
|
|
594
|
+
*
|
|
595
|
+
* @example
|
|
596
|
+
* ```ts twoslash
|
|
597
|
+
* import { AbiError } from 'ox'
|
|
598
|
+
*
|
|
599
|
+
* const selector = AbiError.getSelector('error BadSignatureV(uint8 v)')
|
|
600
|
+
* // @log: '0x6352211e'
|
|
601
|
+
* ```
|
|
602
|
+
*
|
|
603
|
+
* @example
|
|
604
|
+
* ```ts twoslash
|
|
605
|
+
* import { AbiError } from 'ox'
|
|
606
|
+
*
|
|
607
|
+
* const selector = AbiError.getSelector({
|
|
608
|
+
* inputs: [{ name: 'v', type: 'uint8' }],
|
|
609
|
+
* name: 'BadSignatureV',
|
|
610
|
+
* type: 'error'
|
|
611
|
+
* })
|
|
612
|
+
* // @log: '0x6352211e'
|
|
613
|
+
* ```
|
|
614
|
+
*
|
|
615
|
+
* @param abiItem - The ABI item to compute the selector for.
|
|
616
|
+
* @returns The first 4 bytes of the {@link ox#Hash.(keccak256:function)} hash of the error signature.
|
|
617
|
+
*/
|
|
618
|
+
export function getSelector(abiItem: string | AbiError): Hex.Hex {
|
|
619
|
+
return AbiItem.getSelector(abiItem)
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
export declare namespace getSelector {
|
|
623
|
+
type ErrorType = AbiItem.getSelector.ErrorType | Errors.GlobalErrorType
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
/* v8 ignore next */
|
|
627
|
+
getSelector.parseError = (error: unknown) => error as getSelector.ErrorType
|
|
628
|
+
|
|
629
|
+
// https://docs.soliditylang.org/en/v0.8.16/control-structures.html#panic-via-assert-and-error-via-require
|
|
630
|
+
export const panicReasons = {
|
|
631
|
+
1: 'An `assert` condition failed.',
|
|
632
|
+
17: 'Arithmetic operation resulted in underflow or overflow.',
|
|
633
|
+
18: 'Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).',
|
|
634
|
+
33: 'Attempted to convert to an invalid type.',
|
|
635
|
+
34: 'Attempted to access a storage byte array that is incorrectly encoded.',
|
|
636
|
+
49: 'Performed `.pop()` on an empty array',
|
|
637
|
+
50: 'Array index is out of bounds.',
|
|
638
|
+
65: 'Allocated too much memory or created an array which is too large.',
|
|
639
|
+
81: 'Attempted to call a zero-initialized variable of internal function type.',
|
|
640
|
+
} as Record<number, string>
|
|
641
|
+
|
|
642
|
+
export const solidityError = /*#__PURE__*/ from({
|
|
643
|
+
inputs: [
|
|
644
|
+
{
|
|
645
|
+
name: 'message',
|
|
646
|
+
type: 'string',
|
|
647
|
+
},
|
|
648
|
+
],
|
|
649
|
+
name: 'Error',
|
|
650
|
+
type: 'error',
|
|
651
|
+
})
|
|
652
|
+
|
|
653
|
+
export const solidityErrorSelector = '0x08c379a0'
|
|
654
|
+
|
|
655
|
+
export const solidityPanic = /*#__PURE__*/ from({
|
|
656
|
+
inputs: [
|
|
657
|
+
{
|
|
658
|
+
name: 'reason',
|
|
659
|
+
type: 'uint8',
|
|
660
|
+
},
|
|
661
|
+
],
|
|
662
|
+
name: 'Panic',
|
|
663
|
+
type: 'error',
|
|
664
|
+
})
|
|
665
|
+
|
|
666
|
+
export const solidityPanicSelector = '0x4e487b71'
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Extracts an {@link ox#AbiError.AbiError} item from an {@link ox#Abi.Abi}, given a name.
|
|
670
|
+
*
|
|
671
|
+
* @example
|
|
672
|
+
* ```ts twoslash
|
|
673
|
+
* import { Abi, AbiError } from 'ox'
|
|
674
|
+
*
|
|
675
|
+
* const abi = Abi.from([
|
|
676
|
+
* 'error Foo(string)',
|
|
677
|
+
* 'error Bar(uint256)',
|
|
678
|
+
* ])
|
|
679
|
+
*
|
|
680
|
+
* type Foo = AbiError.FromAbi<typeof abi, 'Foo'>
|
|
681
|
+
* // ^?
|
|
682
|
+
*
|
|
683
|
+
*
|
|
684
|
+
*
|
|
685
|
+
*
|
|
686
|
+
*
|
|
687
|
+
*
|
|
688
|
+
*
|
|
689
|
+
*
|
|
690
|
+
* ```
|
|
691
|
+
*/
|
|
692
|
+
export type FromAbi<
|
|
693
|
+
abi extends Abi.Abi,
|
|
694
|
+
name extends ExtractNames<abi>,
|
|
695
|
+
> = abitype.ExtractAbiError<abi, name>
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* Extracts the names of all {@link ox#AbiError.AbiError} items in an {@link ox#Abi.Abi}.
|
|
699
|
+
*
|
|
700
|
+
* @example
|
|
701
|
+
* ```ts twoslash
|
|
702
|
+
* import { Abi, AbiError } from 'ox'
|
|
703
|
+
*
|
|
704
|
+
* const abi = Abi.from([
|
|
705
|
+
* 'error Foo(string)',
|
|
706
|
+
* 'error Bar(uint256)',
|
|
707
|
+
* ])
|
|
708
|
+
*
|
|
709
|
+
* type names = AbiError.Name<typeof abi>
|
|
710
|
+
* // ^?
|
|
711
|
+
* ```
|
|
712
|
+
*/
|
|
713
|
+
export type Name<abi extends Abi.Abi | readonly unknown[] = Abi.Abi> =
|
|
714
|
+
abi extends Abi.Abi ? ExtractNames<abi> : string
|
|
715
|
+
|
|
716
|
+
export type ExtractNames<abi extends Abi.Abi> =
|
|
717
|
+
| abitype.ExtractAbiErrorNames<abi>
|
|
718
|
+
| 'Panic'
|
|
719
|
+
| 'Error'
|