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
|
@@ -0,0 +1,741 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AbiParameter,
|
|
3
|
+
AbiParameterKind,
|
|
4
|
+
AbiParameterToPrimitiveType,
|
|
5
|
+
AbiParametersToPrimitiveTypes,
|
|
6
|
+
} from 'abitype'
|
|
7
|
+
import * as AbiParameters from '../AbiParameters.js'
|
|
8
|
+
import * as Address from '../Address.js'
|
|
9
|
+
import * as Bytes from '../Bytes.js'
|
|
10
|
+
import * as Errors from '../Errors.js'
|
|
11
|
+
import * as Hex from '../Hex.js'
|
|
12
|
+
import type * as Cursor from './cursor.js'
|
|
13
|
+
import type { Compute, IsNarrowable, UnionToIntersection } from './types.js'
|
|
14
|
+
|
|
15
|
+
/** @internal */
|
|
16
|
+
export type ParameterToPrimitiveType<
|
|
17
|
+
abiParameter extends AbiParameter | { name: string; type: unknown },
|
|
18
|
+
abiParameterKind extends AbiParameterKind = AbiParameterKind,
|
|
19
|
+
> = AbiParameterToPrimitiveType<abiParameter, abiParameterKind>
|
|
20
|
+
|
|
21
|
+
/** @internal */
|
|
22
|
+
export type PreparedParameter = { dynamic: boolean; encoded: Hex.Hex }
|
|
23
|
+
|
|
24
|
+
/** @internal */
|
|
25
|
+
export type ToObject<
|
|
26
|
+
parameters extends readonly AbiParameter[],
|
|
27
|
+
kind extends AbiParameterKind = AbiParameterKind,
|
|
28
|
+
> = IsNarrowable<parameters, AbiParameters.AbiParameters> extends true
|
|
29
|
+
? Compute<
|
|
30
|
+
UnionToIntersection<
|
|
31
|
+
{
|
|
32
|
+
[index in keyof parameters]: parameters[index] extends {
|
|
33
|
+
name: infer name extends string
|
|
34
|
+
}
|
|
35
|
+
? {
|
|
36
|
+
[key in name]: AbiParameterToPrimitiveType<
|
|
37
|
+
parameters[index],
|
|
38
|
+
kind
|
|
39
|
+
>
|
|
40
|
+
}
|
|
41
|
+
: {
|
|
42
|
+
[key in index]: AbiParameterToPrimitiveType<
|
|
43
|
+
parameters[index],
|
|
44
|
+
kind
|
|
45
|
+
>
|
|
46
|
+
}
|
|
47
|
+
}[number]
|
|
48
|
+
>
|
|
49
|
+
>
|
|
50
|
+
: unknown
|
|
51
|
+
|
|
52
|
+
/** @internal */
|
|
53
|
+
export type ToPrimitiveTypes<
|
|
54
|
+
abiParameters extends readonly AbiParameter[],
|
|
55
|
+
abiParameterKind extends AbiParameterKind = AbiParameterKind,
|
|
56
|
+
> = AbiParametersToPrimitiveTypes<abiParameters, abiParameterKind>
|
|
57
|
+
|
|
58
|
+
/** @internal */
|
|
59
|
+
export type Tuple = ParameterToPrimitiveType<TupleAbiParameter>
|
|
60
|
+
|
|
61
|
+
/** @internal */
|
|
62
|
+
export function decodeParameter(
|
|
63
|
+
cursor: Cursor.Cursor,
|
|
64
|
+
param: AbiParameters.Parameter,
|
|
65
|
+
{ staticPosition }: { staticPosition: number },
|
|
66
|
+
) {
|
|
67
|
+
const arrayComponents = getArrayComponents(param.type)
|
|
68
|
+
if (arrayComponents) {
|
|
69
|
+
const [length, type] = arrayComponents
|
|
70
|
+
return decodeArray(cursor, { ...param, type }, { length, staticPosition })
|
|
71
|
+
}
|
|
72
|
+
if (param.type === 'tuple')
|
|
73
|
+
return decodeTuple(cursor, param as TupleAbiParameter, { staticPosition })
|
|
74
|
+
|
|
75
|
+
if (param.type === 'address') return decodeAddress(cursor)
|
|
76
|
+
if (param.type === 'bool') return decodeBool(cursor)
|
|
77
|
+
if (param.type.startsWith('bytes'))
|
|
78
|
+
return decodeBytes(cursor, param, { staticPosition })
|
|
79
|
+
if (param.type.startsWith('uint') || param.type.startsWith('int'))
|
|
80
|
+
return decodeNumber(cursor, param)
|
|
81
|
+
if (param.type === 'string') return decodeString(cursor, { staticPosition })
|
|
82
|
+
throw new AbiParameters.InvalidTypeError(param.type)
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export declare namespace decodeParameter {
|
|
86
|
+
type ErrorType =
|
|
87
|
+
| decodeArray.ErrorType
|
|
88
|
+
| decodeTuple.ErrorType
|
|
89
|
+
| decodeAddress.ErrorType
|
|
90
|
+
| decodeBool.ErrorType
|
|
91
|
+
| decodeBytes.ErrorType
|
|
92
|
+
| decodeNumber.ErrorType
|
|
93
|
+
| decodeString.ErrorType
|
|
94
|
+
| AbiParameters.InvalidTypeError
|
|
95
|
+
| Errors.GlobalErrorType
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const sizeOfLength = 32
|
|
99
|
+
const sizeOfOffset = 32
|
|
100
|
+
|
|
101
|
+
/** @internal */
|
|
102
|
+
export function decodeAddress(cursor: Cursor.Cursor) {
|
|
103
|
+
const value = cursor.readBytes(32)
|
|
104
|
+
return [Hex.fromBytes(Bytes.slice(value, -20)), 32]
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export declare namespace decodeAddress {
|
|
108
|
+
type ErrorType =
|
|
109
|
+
| Hex.fromBytes.ErrorType
|
|
110
|
+
| Bytes.slice.ErrorType
|
|
111
|
+
| Errors.GlobalErrorType
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** @internal */
|
|
115
|
+
export function decodeArray(
|
|
116
|
+
cursor: Cursor.Cursor,
|
|
117
|
+
param: AbiParameters.Parameter,
|
|
118
|
+
{ length, staticPosition }: { length: number | null; staticPosition: number },
|
|
119
|
+
) {
|
|
120
|
+
// If the length of the array is not known in advance (dynamic array),
|
|
121
|
+
// this means we will need to wonder off to the pointer and decode.
|
|
122
|
+
if (!length) {
|
|
123
|
+
// Dealing with a dynamic type, so get the offset of the array data.
|
|
124
|
+
const offset = Bytes.toNumber(cursor.readBytes(sizeOfOffset))
|
|
125
|
+
|
|
126
|
+
// Start is the static position of current slot + offset.
|
|
127
|
+
const start = staticPosition + offset
|
|
128
|
+
const startOfData = start + sizeOfLength
|
|
129
|
+
|
|
130
|
+
// Get the length of the array from the offset.
|
|
131
|
+
cursor.setPosition(start)
|
|
132
|
+
const length = Bytes.toNumber(cursor.readBytes(sizeOfLength))
|
|
133
|
+
|
|
134
|
+
// Check if the array has any dynamic children.
|
|
135
|
+
const dynamicChild = hasDynamicChild(param)
|
|
136
|
+
|
|
137
|
+
let consumed = 0
|
|
138
|
+
const value: unknown[] = []
|
|
139
|
+
for (let i = 0; i < length; ++i) {
|
|
140
|
+
// If any of the children is dynamic, then all elements will be offset pointer, thus size of one slot (32 bytes).
|
|
141
|
+
// Otherwise, elements will be the size of their encoding (consumed bytes).
|
|
142
|
+
cursor.setPosition(startOfData + (dynamicChild ? i * 32 : consumed))
|
|
143
|
+
const [data, consumed_] = decodeParameter(cursor, param, {
|
|
144
|
+
staticPosition: startOfData,
|
|
145
|
+
})
|
|
146
|
+
consumed += consumed_
|
|
147
|
+
value.push(data)
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// As we have gone wondering, restore to the original position + next slot.
|
|
151
|
+
cursor.setPosition(staticPosition + 32)
|
|
152
|
+
return [value, 32]
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// If the length of the array is known in advance,
|
|
156
|
+
// and the length of an element deeply nested in the array is not known,
|
|
157
|
+
// we need to decode the offset of the array data.
|
|
158
|
+
if (hasDynamicChild(param)) {
|
|
159
|
+
// Dealing with dynamic types, so get the offset of the array data.
|
|
160
|
+
const offset = Bytes.toNumber(cursor.readBytes(sizeOfOffset))
|
|
161
|
+
|
|
162
|
+
// Start is the static position of current slot + offset.
|
|
163
|
+
const start = staticPosition + offset
|
|
164
|
+
|
|
165
|
+
const value: unknown[] = []
|
|
166
|
+
for (let i = 0; i < length; ++i) {
|
|
167
|
+
// Move cursor along to the next slot (next offset pointer).
|
|
168
|
+
cursor.setPosition(start + i * 32)
|
|
169
|
+
const [data] = decodeParameter(cursor, param, {
|
|
170
|
+
staticPosition: start,
|
|
171
|
+
})
|
|
172
|
+
value.push(data)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// As we have gone wondering, restore to the original position + next slot.
|
|
176
|
+
cursor.setPosition(staticPosition + 32)
|
|
177
|
+
return [value, 32]
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// If the length of the array is known in advance and the array is deeply static,
|
|
181
|
+
// then we can just decode each element in sequence.
|
|
182
|
+
let consumed = 0
|
|
183
|
+
const value: unknown[] = []
|
|
184
|
+
for (let i = 0; i < length; ++i) {
|
|
185
|
+
const [data, consumed_] = decodeParameter(cursor, param, {
|
|
186
|
+
staticPosition: staticPosition + consumed,
|
|
187
|
+
})
|
|
188
|
+
consumed += consumed_
|
|
189
|
+
value.push(data)
|
|
190
|
+
}
|
|
191
|
+
return [value, consumed]
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
export declare namespace decodeArray {
|
|
195
|
+
type ErrorType = Bytes.toNumber.ErrorType | Errors.GlobalErrorType
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/** @internal */
|
|
199
|
+
export function decodeBool(cursor: Cursor.Cursor) {
|
|
200
|
+
return [Bytes.toBoolean(cursor.readBytes(32), { size: 32 }), 32]
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export declare namespace decodeBool {
|
|
204
|
+
type ErrorType = Bytes.toBoolean.ErrorType | Errors.GlobalErrorType
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/** @internal */
|
|
208
|
+
export function decodeBytes(
|
|
209
|
+
cursor: Cursor.Cursor,
|
|
210
|
+
param: AbiParameters.Parameter,
|
|
211
|
+
{ staticPosition }: { staticPosition: number },
|
|
212
|
+
) {
|
|
213
|
+
const [_, size] = param.type.split('bytes')
|
|
214
|
+
if (!size) {
|
|
215
|
+
// Dealing with dynamic types, so get the offset of the bytes data.
|
|
216
|
+
const offset = Bytes.toNumber(cursor.readBytes(32))
|
|
217
|
+
|
|
218
|
+
// Set position of the cursor to start of bytes data.
|
|
219
|
+
cursor.setPosition(staticPosition + offset)
|
|
220
|
+
|
|
221
|
+
const length = Bytes.toNumber(cursor.readBytes(32))
|
|
222
|
+
|
|
223
|
+
// If there is no length, we have zero data.
|
|
224
|
+
if (length === 0) {
|
|
225
|
+
// As we have gone wondering, restore to the original position + next slot.
|
|
226
|
+
cursor.setPosition(staticPosition + 32)
|
|
227
|
+
return ['0x', 32]
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const data = cursor.readBytes(length)
|
|
231
|
+
|
|
232
|
+
// As we have gone wondering, restore to the original position + next slot.
|
|
233
|
+
cursor.setPosition(staticPosition + 32)
|
|
234
|
+
return [Hex.fromBytes(data), 32]
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const value = Hex.fromBytes(cursor.readBytes(Number.parseInt(size), 32))
|
|
238
|
+
return [value, 32]
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export declare namespace decodeBytes {
|
|
242
|
+
type ErrorType =
|
|
243
|
+
| Hex.fromBytes.ErrorType
|
|
244
|
+
| Bytes.toNumber.ErrorType
|
|
245
|
+
| Errors.GlobalErrorType
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/** @internal */
|
|
249
|
+
export function decodeNumber(
|
|
250
|
+
cursor: Cursor.Cursor,
|
|
251
|
+
param: AbiParameters.Parameter,
|
|
252
|
+
) {
|
|
253
|
+
const signed = param.type.startsWith('int')
|
|
254
|
+
const size = Number.parseInt(param.type.split('int')[1] || '256')
|
|
255
|
+
const value = cursor.readBytes(32)
|
|
256
|
+
return [
|
|
257
|
+
size > 48
|
|
258
|
+
? Bytes.toBigInt(value, { signed })
|
|
259
|
+
: Bytes.toNumber(value, { signed }),
|
|
260
|
+
32,
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export declare namespace decodeNumber {
|
|
265
|
+
type ErrorType =
|
|
266
|
+
| Bytes.toNumber.ErrorType
|
|
267
|
+
| Bytes.toBigInt.ErrorType
|
|
268
|
+
| Errors.GlobalErrorType
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/** @internal */
|
|
272
|
+
export type TupleAbiParameter = AbiParameters.Parameter & {
|
|
273
|
+
components: readonly AbiParameters.Parameter[]
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/** @internal */
|
|
277
|
+
export function decodeTuple(
|
|
278
|
+
cursor: Cursor.Cursor,
|
|
279
|
+
param: TupleAbiParameter,
|
|
280
|
+
{ staticPosition }: { staticPosition: number },
|
|
281
|
+
) {
|
|
282
|
+
// Tuples can have unnamed components (i.e. they are arrays), so we must
|
|
283
|
+
// determine whether the tuple is named or unnamed. In the case of a named
|
|
284
|
+
// tuple, the value will be an object where each property is the name of the
|
|
285
|
+
// component. In the case of an unnamed tuple, the value will be an array.
|
|
286
|
+
const hasUnnamedChild =
|
|
287
|
+
param.components.length === 0 || param.components.some(({ name }) => !name)
|
|
288
|
+
|
|
289
|
+
// Initialize the value to an object or an array, depending on whether the
|
|
290
|
+
// tuple is named or unnamed.
|
|
291
|
+
const value: any = hasUnnamedChild ? [] : {}
|
|
292
|
+
let consumed = 0
|
|
293
|
+
|
|
294
|
+
// If the tuple has a dynamic child, we must first decode the offset to the
|
|
295
|
+
// tuple data.
|
|
296
|
+
if (hasDynamicChild(param)) {
|
|
297
|
+
// Dealing with dynamic types, so get the offset of the tuple data.
|
|
298
|
+
const offset = Bytes.toNumber(cursor.readBytes(sizeOfOffset))
|
|
299
|
+
|
|
300
|
+
// Start is the static position of referencing slot + offset.
|
|
301
|
+
const start = staticPosition + offset
|
|
302
|
+
|
|
303
|
+
for (let i = 0; i < param.components.length; ++i) {
|
|
304
|
+
const component = param.components[i]!
|
|
305
|
+
cursor.setPosition(start + consumed)
|
|
306
|
+
const [data, consumed_] = decodeParameter(cursor, component, {
|
|
307
|
+
staticPosition: start,
|
|
308
|
+
})
|
|
309
|
+
consumed += consumed_
|
|
310
|
+
value[hasUnnamedChild ? i : component?.name!] = data
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// As we have gone wondering, restore to the original position + next slot.
|
|
314
|
+
cursor.setPosition(staticPosition + 32)
|
|
315
|
+
return [value, 32]
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// If the tuple has static children, we can just decode each component
|
|
319
|
+
// in sequence.
|
|
320
|
+
for (let i = 0; i < param.components.length; ++i) {
|
|
321
|
+
const component = param.components[i]!
|
|
322
|
+
const [data, consumed_] = decodeParameter(cursor, component, {
|
|
323
|
+
staticPosition,
|
|
324
|
+
})
|
|
325
|
+
value[hasUnnamedChild ? i : component?.name!] = data
|
|
326
|
+
consumed += consumed_
|
|
327
|
+
}
|
|
328
|
+
return [value, consumed]
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export declare namespace decodeTuple {
|
|
332
|
+
type ErrorType = Bytes.toNumber.ErrorType | Errors.GlobalErrorType
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/** @internal */
|
|
336
|
+
export function decodeString(
|
|
337
|
+
cursor: Cursor.Cursor,
|
|
338
|
+
{ staticPosition }: { staticPosition: number },
|
|
339
|
+
) {
|
|
340
|
+
// Get offset to start of string data.
|
|
341
|
+
const offset = Bytes.toNumber(cursor.readBytes(32))
|
|
342
|
+
|
|
343
|
+
// Start is the static position of current slot + offset.
|
|
344
|
+
const start = staticPosition + offset
|
|
345
|
+
cursor.setPosition(start)
|
|
346
|
+
|
|
347
|
+
const length = Bytes.toNumber(cursor.readBytes(32))
|
|
348
|
+
|
|
349
|
+
// If there is no length, we have zero data (empty string).
|
|
350
|
+
if (length === 0) {
|
|
351
|
+
cursor.setPosition(staticPosition + 32)
|
|
352
|
+
return ['', 32]
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
const data = cursor.readBytes(length, 32)
|
|
356
|
+
const value = Bytes.toString(Bytes.trimLeft(data))
|
|
357
|
+
|
|
358
|
+
// As we have gone wondering, restore to the original position + next slot.
|
|
359
|
+
cursor.setPosition(staticPosition + 32)
|
|
360
|
+
|
|
361
|
+
return [value, 32]
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
export declare namespace decodeString {
|
|
365
|
+
type ErrorType =
|
|
366
|
+
| Bytes.toNumber.ErrorType
|
|
367
|
+
| Bytes.toString.ErrorType
|
|
368
|
+
| Bytes.trimLeft.ErrorType
|
|
369
|
+
| Errors.GlobalErrorType
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
/** @internal */
|
|
373
|
+
export function prepareParameters<
|
|
374
|
+
const parameters extends AbiParameters.AbiParameters,
|
|
375
|
+
>({
|
|
376
|
+
parameters,
|
|
377
|
+
values,
|
|
378
|
+
}: {
|
|
379
|
+
parameters: parameters
|
|
380
|
+
values: parameters extends AbiParameters.AbiParameters
|
|
381
|
+
? ToPrimitiveTypes<parameters>
|
|
382
|
+
: never
|
|
383
|
+
}) {
|
|
384
|
+
const preparedParameters: PreparedParameter[] = []
|
|
385
|
+
for (let i = 0; i < parameters.length; i++) {
|
|
386
|
+
preparedParameters.push(
|
|
387
|
+
prepareParameter({ parameter: parameters[i]!, value: values[i] }),
|
|
388
|
+
)
|
|
389
|
+
}
|
|
390
|
+
return preparedParameters
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/** @internal */
|
|
394
|
+
export declare namespace prepareParameters {
|
|
395
|
+
type ErrorType = prepareParameter.ErrorType | Errors.GlobalErrorType
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
/** @internal */
|
|
399
|
+
export function prepareParameter<
|
|
400
|
+
const parameter extends AbiParameters.Parameter,
|
|
401
|
+
>({
|
|
402
|
+
parameter: parameter_,
|
|
403
|
+
value,
|
|
404
|
+
}: {
|
|
405
|
+
parameter: parameter
|
|
406
|
+
value: parameter extends AbiParameters.Parameter
|
|
407
|
+
? ParameterToPrimitiveType<parameter>
|
|
408
|
+
: never
|
|
409
|
+
}): PreparedParameter {
|
|
410
|
+
const parameter = parameter_ as AbiParameters.Parameter
|
|
411
|
+
|
|
412
|
+
const arrayComponents = getArrayComponents(parameter.type)
|
|
413
|
+
if (arrayComponents) {
|
|
414
|
+
const [length, type] = arrayComponents
|
|
415
|
+
return encodeArray(value, {
|
|
416
|
+
length,
|
|
417
|
+
parameter: {
|
|
418
|
+
...parameter,
|
|
419
|
+
type,
|
|
420
|
+
},
|
|
421
|
+
})
|
|
422
|
+
}
|
|
423
|
+
if (parameter.type === 'tuple') {
|
|
424
|
+
return encodeTuple(value as unknown as Tuple, {
|
|
425
|
+
parameter: parameter as TupleAbiParameter,
|
|
426
|
+
})
|
|
427
|
+
}
|
|
428
|
+
if (parameter.type === 'address') {
|
|
429
|
+
return encodeAddress(value as unknown as Hex.Hex)
|
|
430
|
+
}
|
|
431
|
+
if (parameter.type === 'bool') {
|
|
432
|
+
return encodeBoolean(value as unknown as boolean)
|
|
433
|
+
}
|
|
434
|
+
if (parameter.type.startsWith('uint') || parameter.type.startsWith('int')) {
|
|
435
|
+
const signed = parameter.type.startsWith('int')
|
|
436
|
+
return encodeNumber(value as unknown as number, { signed })
|
|
437
|
+
}
|
|
438
|
+
if (parameter.type.startsWith('bytes')) {
|
|
439
|
+
return encodeBytes(value as unknown as Hex.Hex, { type: parameter.type })
|
|
440
|
+
}
|
|
441
|
+
if (parameter.type === 'string') {
|
|
442
|
+
return encodeString(value as unknown as string)
|
|
443
|
+
}
|
|
444
|
+
throw new AbiParameters.InvalidTypeError(parameter.type)
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/** @internal */
|
|
448
|
+
export declare namespace prepareParameter {
|
|
449
|
+
type ErrorType =
|
|
450
|
+
| encodeArray.ErrorType
|
|
451
|
+
| encodeTuple.ErrorType
|
|
452
|
+
| encodeAddress.ErrorType
|
|
453
|
+
| encodeBoolean.ErrorType
|
|
454
|
+
| encodeBytes.ErrorType
|
|
455
|
+
| encodeString.ErrorType
|
|
456
|
+
| AbiParameters.InvalidTypeError
|
|
457
|
+
| Errors.GlobalErrorType
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/** @internal */
|
|
461
|
+
export function encode(preparedParameters: PreparedParameter[]): Hex.Hex {
|
|
462
|
+
// 1. Compute the size of the static part of the parameters.
|
|
463
|
+
let staticSize = 0
|
|
464
|
+
for (let i = 0; i < preparedParameters.length; i++) {
|
|
465
|
+
const { dynamic, encoded } = preparedParameters[i]!
|
|
466
|
+
if (dynamic) staticSize += 32
|
|
467
|
+
else staticSize += Hex.size(encoded)
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
// 2. Split the parameters into static and dynamic parts.
|
|
471
|
+
const staticParameters: Hex.Hex[] = []
|
|
472
|
+
const dynamicParameters: Hex.Hex[] = []
|
|
473
|
+
let dynamicSize = 0
|
|
474
|
+
for (let i = 0; i < preparedParameters.length; i++) {
|
|
475
|
+
const { dynamic, encoded } = preparedParameters[i]!
|
|
476
|
+
if (dynamic) {
|
|
477
|
+
staticParameters.push(
|
|
478
|
+
Hex.fromNumber(staticSize + dynamicSize, { size: 32 }),
|
|
479
|
+
)
|
|
480
|
+
dynamicParameters.push(encoded)
|
|
481
|
+
dynamicSize += Hex.size(encoded)
|
|
482
|
+
} else {
|
|
483
|
+
staticParameters.push(encoded)
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
// 3. Concatenate static and dynamic parts.
|
|
488
|
+
return Hex.concat(...staticParameters, ...dynamicParameters)
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
/** @internal */
|
|
492
|
+
export declare namespace encode {
|
|
493
|
+
type ErrorType =
|
|
494
|
+
| Hex.concat.ErrorType
|
|
495
|
+
| Hex.fromNumber.ErrorType
|
|
496
|
+
| Hex.size.ErrorType
|
|
497
|
+
| Errors.GlobalErrorType
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/** @internal */
|
|
501
|
+
export function encodeAddress(value: Hex.Hex): PreparedParameter {
|
|
502
|
+
Address.assert(value, { strict: false })
|
|
503
|
+
return {
|
|
504
|
+
dynamic: false,
|
|
505
|
+
encoded: Hex.padLeft(value.toLowerCase() as Hex.Hex),
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/** @internal */
|
|
510
|
+
export declare namespace encodeAddress {
|
|
511
|
+
type ErrorType =
|
|
512
|
+
| Address.assert.ErrorType
|
|
513
|
+
| Hex.padLeft.ErrorType
|
|
514
|
+
| Errors.GlobalErrorType
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/** @internal */
|
|
518
|
+
export function encodeArray<const parameter extends AbiParameters.Parameter>(
|
|
519
|
+
value: ParameterToPrimitiveType<parameter>,
|
|
520
|
+
{
|
|
521
|
+
length,
|
|
522
|
+
parameter,
|
|
523
|
+
}: {
|
|
524
|
+
length: number | null
|
|
525
|
+
parameter: parameter
|
|
526
|
+
},
|
|
527
|
+
): PreparedParameter {
|
|
528
|
+
const dynamic = length === null
|
|
529
|
+
|
|
530
|
+
if (!Array.isArray(value)) throw new AbiParameters.InvalidArrayError(value)
|
|
531
|
+
if (!dynamic && value.length !== length)
|
|
532
|
+
throw new AbiParameters.ArrayLengthMismatchError({
|
|
533
|
+
expectedLength: length!,
|
|
534
|
+
givenLength: value.length,
|
|
535
|
+
type: `${parameter.type}[${length}]`,
|
|
536
|
+
})
|
|
537
|
+
|
|
538
|
+
let dynamicChild = false
|
|
539
|
+
const preparedParameters: PreparedParameter[] = []
|
|
540
|
+
for (let i = 0; i < value.length; i++) {
|
|
541
|
+
const preparedParam = prepareParameter({ parameter, value: value[i] })
|
|
542
|
+
if (preparedParam.dynamic) dynamicChild = true
|
|
543
|
+
preparedParameters.push(preparedParam)
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
if (dynamic || dynamicChild) {
|
|
547
|
+
const data = encode(preparedParameters)
|
|
548
|
+
if (dynamic) {
|
|
549
|
+
const length = Hex.fromNumber(preparedParameters.length, { size: 32 })
|
|
550
|
+
return {
|
|
551
|
+
dynamic: true,
|
|
552
|
+
encoded:
|
|
553
|
+
preparedParameters.length > 0 ? Hex.concat(length, data) : length,
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
if (dynamicChild) return { dynamic: true, encoded: data }
|
|
557
|
+
}
|
|
558
|
+
return {
|
|
559
|
+
dynamic: false,
|
|
560
|
+
encoded: Hex.concat(...preparedParameters.map(({ encoded }) => encoded)),
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
/** @internal */
|
|
565
|
+
export declare namespace encodeArray {
|
|
566
|
+
type ErrorType =
|
|
567
|
+
| AbiParameters.InvalidArrayError
|
|
568
|
+
| AbiParameters.ArrayLengthMismatchError
|
|
569
|
+
| Hex.concat.ErrorType
|
|
570
|
+
| Hex.fromNumber.ErrorType
|
|
571
|
+
| Errors.GlobalErrorType
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
/** @internal */
|
|
575
|
+
export function encodeBytes(
|
|
576
|
+
value: Hex.Hex,
|
|
577
|
+
{ type }: { type: string },
|
|
578
|
+
): PreparedParameter {
|
|
579
|
+
const [, parametersize] = type.split('bytes')
|
|
580
|
+
const bytesSize = Hex.size(value)
|
|
581
|
+
if (!parametersize) {
|
|
582
|
+
let value_ = value
|
|
583
|
+
// If the size is not divisible by 32 bytes, pad the end
|
|
584
|
+
// with empty bytes to the ceiling 32 bytes.
|
|
585
|
+
if (bytesSize % 32 !== 0)
|
|
586
|
+
value_ = Hex.padRight(value_, Math.ceil((value.length - 2) / 2 / 32) * 32)
|
|
587
|
+
return {
|
|
588
|
+
dynamic: true,
|
|
589
|
+
encoded: Hex.concat(
|
|
590
|
+
Hex.padLeft(Hex.fromNumber(bytesSize, { size: 32 })),
|
|
591
|
+
value_,
|
|
592
|
+
),
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
if (bytesSize !== Number.parseInt(parametersize))
|
|
596
|
+
throw new AbiParameters.BytesSizeMismatchError({
|
|
597
|
+
expectedSize: Number.parseInt(parametersize),
|
|
598
|
+
value,
|
|
599
|
+
})
|
|
600
|
+
return { dynamic: false, encoded: Hex.padRight(value) }
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
/** @internal */
|
|
604
|
+
export declare namespace encodeBytes {
|
|
605
|
+
type ErrorType =
|
|
606
|
+
| Hex.padLeft.ErrorType
|
|
607
|
+
| Hex.padRight.ErrorType
|
|
608
|
+
| Hex.fromNumber.ErrorType
|
|
609
|
+
| Hex.slice.ErrorType
|
|
610
|
+
| Errors.GlobalErrorType
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
/** @internal */
|
|
614
|
+
export function encodeBoolean(value: boolean): PreparedParameter {
|
|
615
|
+
if (typeof value !== 'boolean')
|
|
616
|
+
throw new Errors.BaseError(
|
|
617
|
+
`Invalid boolean value: "${value}" (type: ${typeof value}). Expected: \`true\` or \`false\`.`,
|
|
618
|
+
)
|
|
619
|
+
return { dynamic: false, encoded: Hex.padLeft(Hex.fromBoolean(value)) }
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
/** @internal */
|
|
623
|
+
export declare namespace encodeBoolean {
|
|
624
|
+
type ErrorType =
|
|
625
|
+
| Hex.padLeft.ErrorType
|
|
626
|
+
| Hex.fromBoolean.ErrorType
|
|
627
|
+
| Errors.GlobalErrorType
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/** @internal */
|
|
631
|
+
export function encodeNumber(
|
|
632
|
+
value: number,
|
|
633
|
+
{ signed }: { signed: boolean },
|
|
634
|
+
): PreparedParameter {
|
|
635
|
+
return {
|
|
636
|
+
dynamic: false,
|
|
637
|
+
encoded: Hex.fromNumber(value, {
|
|
638
|
+
size: 32,
|
|
639
|
+
signed,
|
|
640
|
+
}),
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/** @internal */
|
|
645
|
+
export declare namespace encodeNumber {
|
|
646
|
+
type ErrorType = Hex.fromNumber.ErrorType | Errors.GlobalErrorType
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
/** @internal */
|
|
650
|
+
export function encodeString(value: string): PreparedParameter {
|
|
651
|
+
const hexValue = Hex.fromString(value)
|
|
652
|
+
const partsLength = Math.ceil(Hex.size(hexValue) / 32)
|
|
653
|
+
const parts: Hex.Hex[] = []
|
|
654
|
+
for (let i = 0; i < partsLength; i++) {
|
|
655
|
+
parts.push(Hex.padRight(Hex.slice(hexValue, i * 32, (i + 1) * 32)))
|
|
656
|
+
}
|
|
657
|
+
return {
|
|
658
|
+
dynamic: true,
|
|
659
|
+
encoded: Hex.concat(
|
|
660
|
+
Hex.padRight(Hex.fromNumber(Hex.size(hexValue), { size: 32 })),
|
|
661
|
+
...parts,
|
|
662
|
+
),
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
/** @internal */
|
|
667
|
+
export declare namespace encodeString {
|
|
668
|
+
type ErrorType =
|
|
669
|
+
| Hex.fromNumber.ErrorType
|
|
670
|
+
| Hex.padRight.ErrorType
|
|
671
|
+
| Hex.slice.ErrorType
|
|
672
|
+
| Hex.size.ErrorType
|
|
673
|
+
| Errors.GlobalErrorType
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
/** @internal */
|
|
677
|
+
export function encodeTuple<
|
|
678
|
+
const parameter extends AbiParameters.Parameter & {
|
|
679
|
+
components: readonly AbiParameters.Parameter[]
|
|
680
|
+
},
|
|
681
|
+
>(
|
|
682
|
+
value: ParameterToPrimitiveType<parameter>,
|
|
683
|
+
{ parameter }: { parameter: parameter },
|
|
684
|
+
): PreparedParameter {
|
|
685
|
+
let dynamic = false
|
|
686
|
+
const preparedParameters: PreparedParameter[] = []
|
|
687
|
+
for (let i = 0; i < parameter.components.length; i++) {
|
|
688
|
+
const param_ = parameter.components[i]!
|
|
689
|
+
const index = Array.isArray(value) ? i : param_.name
|
|
690
|
+
const preparedParam = prepareParameter({
|
|
691
|
+
parameter: param_,
|
|
692
|
+
value: (value as any)[index!] as readonly unknown[],
|
|
693
|
+
})
|
|
694
|
+
preparedParameters.push(preparedParam)
|
|
695
|
+
if (preparedParam.dynamic) dynamic = true
|
|
696
|
+
}
|
|
697
|
+
return {
|
|
698
|
+
dynamic,
|
|
699
|
+
encoded: dynamic
|
|
700
|
+
? encode(preparedParameters)
|
|
701
|
+
: Hex.concat(...preparedParameters.map(({ encoded }) => encoded)),
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
/** @internal */
|
|
706
|
+
export declare namespace encodeTuple {
|
|
707
|
+
type ErrorType = Hex.concat.ErrorType | Errors.GlobalErrorType
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
/** @internal */
|
|
711
|
+
export function getArrayComponents(
|
|
712
|
+
type: string,
|
|
713
|
+
): [length: number | null, innerType: string] | undefined {
|
|
714
|
+
const matches = type.match(/^(.*)\[(\d+)?\]$/)
|
|
715
|
+
return matches
|
|
716
|
+
? // Return `null` if the array is dynamic.
|
|
717
|
+
[matches[2]! ? Number(matches[2]!) : null, matches[1]!]
|
|
718
|
+
: undefined
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/** @internal */
|
|
722
|
+
export function hasDynamicChild(param: AbiParameters.Parameter) {
|
|
723
|
+
const { type } = param
|
|
724
|
+
if (type === 'string') return true
|
|
725
|
+
if (type === 'bytes') return true
|
|
726
|
+
if (type.endsWith('[]')) return true
|
|
727
|
+
|
|
728
|
+
if (type === 'tuple') return (param as any).components?.some(hasDynamicChild)
|
|
729
|
+
|
|
730
|
+
const arrayComponents = getArrayComponents(param.type)
|
|
731
|
+
if (
|
|
732
|
+
arrayComponents &&
|
|
733
|
+
hasDynamicChild({
|
|
734
|
+
...param,
|
|
735
|
+
type: arrayComponents[1],
|
|
736
|
+
} as AbiParameters.Parameter)
|
|
737
|
+
)
|
|
738
|
+
return true
|
|
739
|
+
|
|
740
|
+
return false
|
|
741
|
+
}
|