<!--
Sitemap:
- [API Reference](/api/)
- [API Reference](/ercs/)
- [Error Handling](/error-handling)
- [Imports & Bundle Size](/imports)
- [Installation](/installation)
- [Platform Compatibility](/platform-compatibility): Platforms compatible with Ox
- [API Reference](/tempo/)
- [API Reference](/webauthn/)
- [Abi](/api/Abi/)
- [AbiConstructor](/api/AbiConstructor/)
- [AbiError](/api/AbiError/)
- [AbiEvent](/api/AbiEvent/)
- [AbiFunction](/api/AbiFunction/)
- [AbiItem](/api/AbiItem/)
- [AbiParameters](/api/AbiParameters/)
- [AccessList](/api/AccessList/)
- [AccountProof](/api/AccountProof/)
- [Address](/api/Address/)
- [AesGcm](/api/AesGcm/)
- [Authorization](/api/Authorization/)
- [Base32](/api/Base32/)
- [Base58](/api/Base58/)
- [Base64](/api/Base64/)
- [Bech32m](/api/Bech32m/)
- [BinaryStateTree](/api/BinaryStateTree/)
- [BlobCells](/api/BlobCells/)
- [Blobs](/api/Blobs/)
- [Block](/api/Block/)
- [BlockOverrides](/api/BlockOverrides/)
- [Bloom](/api/Bloom/)
- [Bls](/api/Bls/)
- [BlsPoint](/api/BlsPoint/)
- [Bytes](/api/Bytes/)
- [Cbor](/api/Cbor/)
- [CompactSize](/api/CompactSize/)
- [ContractAddress](/api/ContractAddress/)
- [CoseKey](/api/CoseKey/)
- [Ed25519](/api/Ed25519/)
- [Ens](/api/Ens/)
- [Fee](/api/Fee/)
- [Filter](/api/Filter/)
- [Hash](/api/Hash/)
- [HdKey](/api/HdKey/)
- [Hex](/api/Hex/)
- [Json](/api/Json/)
- [Keystore](/api/Keystore/)
- [Kzg](/api/Kzg/)
- [Log](/api/Log/)
- [Mnemonic](/api/Mnemonic/)
- [P256](/api/P256/)
- [PersonalMessage](/api/PersonalMessage/)
- [Provider](/api/Provider/)
- [PublicKey](/api/PublicKey/)
- [Rlp](/api/Rlp/)
- [RpcRequest](/api/RpcRequest/)
- [RpcResponse](/api/RpcResponse/)
- [RpcTransport](/api/RpcTransport/)
- [Secp256k1](/api/Secp256k1/)
- [Signature](/api/Signature/)
- [Siwe](/api/Siwe/)
- [StateOverrides](/api/StateOverrides/)
- [TransactionEnvelope](/api/TransactionEnvelope/)
- [TxEnvelopeEip1559](/api/TxEnvelopeEip1559/)
- [TxEnvelopeEip2930](/api/TxEnvelopeEip2930/)
- [TxEnvelopeEip4844](/api/TxEnvelopeEip4844/)
- [TxEnvelopeEip7702](/api/TxEnvelopeEip7702/)
- [TxEnvelopeLegacy](/api/TxEnvelopeLegacy/)
- [TypedData](/api/TypedData/)
- [ValidatorData](/api/ValidatorData/)
- [Value](/api/Value/)
- [WebAuthnP256](/api/WebAuthnP256/)
- [WebCryptoP256](/api/WebCryptoP256/)
- [Withdrawal](/api/Withdrawal/)
- [X25519](/api/X25519/)
- [Application Binary Interface (ABI)](/guides/abi)
- [Bytes & Hex](/guides/bytes-hex)
- [ECDSA & Signers](/guides/ecdsa)
- [EIP-1193 Providers](/guides/eip-1193)
- [AES-GCM Encryption](/guides/encryption)
- [JSON-RPC](/guides/json-rpc)
- [Mnemonics](/guides/mnemonics)
- [Recursive Length Prefix (RLP)](/guides/rlp)
- [Signed & Typed Data](/guides/signed-data)
- [Sign-In With Ethereum (SIWE)](/guides/siwe)
- [Transaction Envelopes](/guides/transaction-envelopes)
- [WebAuthn Signers](/guides/webauthn)
- [Abi.format](/api/Abi/format)
- [Abi.from](/api/Abi/from)
- [Abi Types](/api/Abi/types)
- [AbiConstructor.decode](/api/AbiConstructor/decode)
- [AbiConstructor.encode](/api/AbiConstructor/encode)
- [AbiConstructor Errors](/api/AbiConstructor/errors)
- [AbiConstructor.format](/api/AbiConstructor/format)
- [AbiConstructor.from](/api/AbiConstructor/from)
- [AbiConstructor.fromAbi](/api/AbiConstructor/fromAbi)
- [AbiConstructor Types](/api/AbiConstructor/types)
- [AbiError.decode](/api/AbiError/decode)
- [AbiError.encode](/api/AbiError/encode)
- [AbiError.extract](/api/AbiError/extract)
- [AbiError.format](/api/AbiError/format)
- [AbiError.from](/api/AbiError/from)
- [AbiError.fromAbi](/api/AbiError/fromAbi)
- [AbiError.getSelector](/api/AbiError/getSelector)
- [AbiError Types](/api/AbiError/types)
- [AbiEvent.assertArgs](/api/AbiEvent/assertArgs)
- [AbiEvent.decode](/api/AbiEvent/decode)
- [AbiEvent.decodeLog](/api/AbiEvent/decodeLog)
- [AbiEvent.encode](/api/AbiEvent/encode)
- [AbiEvent Errors](/api/AbiEvent/errors)
- [AbiEvent.extractLogs](/api/AbiEvent/extractLogs)
- [AbiEvent.format](/api/AbiEvent/format)
- [AbiEvent.from](/api/AbiEvent/from)
- [AbiEvent.fromAbi](/api/AbiEvent/fromAbi)
- [AbiEvent.getSelector](/api/AbiEvent/getSelector)
- [AbiEvent Types](/api/AbiEvent/types)
- [AbiFunction.decodeData](/api/AbiFunction/decodeData)
- [AbiFunction.decodeResult](/api/AbiFunction/decodeResult)
- [AbiFunction.encodeData](/api/AbiFunction/encodeData)
- [AbiFunction.encodeResult](/api/AbiFunction/encodeResult)
- [AbiFunction.format](/api/AbiFunction/format)
- [AbiFunction.from](/api/AbiFunction/from)
- [AbiFunction.fromAbi](/api/AbiFunction/fromAbi)
- [AbiFunction.getSelector](/api/AbiFunction/getSelector)
- [AbiFunction Types](/api/AbiFunction/types)
- [AbiItem Errors](/api/AbiItem/errors)
- [AbiItem.format](/api/AbiItem/format)
- [AbiItem.from](/api/AbiItem/from)
- [AbiItem.fromAbi](/api/AbiItem/fromAbi)
- [AbiItem.getSelector](/api/AbiItem/getSelector)
- [AbiItem.getSignature](/api/AbiItem/getSignature)
- [AbiItem.getSignatureHash](/api/AbiItem/getSignatureHash)
- [AbiItem Types](/api/AbiItem/types)
- [AbiParameters.decode](/api/AbiParameters/decode)
- [AbiParameters.encode](/api/AbiParameters/encode)
- [AbiParameters.encodePacked](/api/AbiParameters/encodePacked)
- [AbiParameters Errors](/api/AbiParameters/errors)
- [AbiParameters.format](/api/AbiParameters/format)
- [AbiParameters.from](/api/AbiParameters/from)
- [AbiParameters Types](/api/AbiParameters/types)
- [AccessList Errors](/api/AccessList/errors)
- [AccessList.fromTupleList](/api/AccessList/fromTupleList)
- [AccessList.toTupleList](/api/AccessList/toTupleList)
- [AccessList Types](/api/AccessList/types)
- [AccountProof.fromRpc](/api/AccountProof/fromRpc)
- [AccountProof.toRpc](/api/AccountProof/toRpc)
- [AccountProof Types](/api/AccountProof/types)
- [Address.assert](/api/Address/assert)
- [Address.checksum](/api/Address/checksum)
- [Address Errors](/api/Address/errors)
- [Address.from](/api/Address/from)
- [Address.fromPublicKey](/api/Address/fromPublicKey)
- [Address.isEqual](/api/Address/isEqual)
- [Address Types](/api/Address/types)
- [Address.validate](/api/Address/validate)
- [AesGcm.decrypt](/api/AesGcm/decrypt)
- [AesGcm.encrypt](/api/AesGcm/encrypt)
- [AesGcm.getKey](/api/AesGcm/getKey)
- [AesGcm.randomSalt](/api/AesGcm/randomSalt)
- [Authorization.from](/api/Authorization/from)
- [Authorization.fromRpc](/api/Authorization/fromRpc)
- [Authorization.fromRpcList](/api/Authorization/fromRpcList)
- [Authorization.fromTuple](/api/Authorization/fromTuple)
- [Authorization.fromTupleList](/api/Authorization/fromTupleList)
- [Authorization.getSignPayload](/api/Authorization/getSignPayload)
- [Authorization.hash](/api/Authorization/hash)
- [Authorization.toRpc](/api/Authorization/toRpc)
- [Authorization.toRpcList](/api/Authorization/toRpcList)
- [Authorization.toTuple](/api/Authorization/toTuple)
- [Authorization.toTupleList](/api/Authorization/toTupleList)
- [Authorization Types](/api/Authorization/types)
- [Base32 Errors](/api/Base32/errors)
- [Base32.fromBytes](/api/Base32/fromBytes)
- [Base32.fromHex](/api/Base32/fromHex)
- [Base32.toBytes](/api/Base32/toBytes)
- [Base32.toHex](/api/Base32/toHex)
- [Base58 Errors](/api/Base58/errors)
- [Base58.fromBytes](/api/Base58/fromBytes)
- [Base58.fromHex](/api/Base58/fromHex)
- [Base58.fromString](/api/Base58/fromString)
- [Base58.toBytes](/api/Base58/toBytes)
- [Base58.toHex](/api/Base58/toHex)
- [Base58.toString](/api/Base58/toString)
- [Base64 Errors](/api/Base64/errors)
- [Base64.fromBytes](/api/Base64/fromBytes)
- [Base64.fromHex](/api/Base64/fromHex)
- [Base64.fromString](/api/Base64/fromString)
- [Base64.toBytes](/api/Base64/toBytes)
- [Base64.toHex](/api/Base64/toHex)
- [Base64.toString](/api/Base64/toString)
- [Bech32m.decode](/api/Bech32m/decode)
- [Bech32m.encode](/api/Bech32m/encode)
- [Bech32m Errors](/api/Bech32m/errors)
- [Bech32m Types](/api/Bech32m/types)
- [BinaryStateTree.create](/api/BinaryStateTree/create)
- [BinaryStateTree.insert](/api/BinaryStateTree/insert)
- [BinaryStateTree.merkelize](/api/BinaryStateTree/merkelize)
- [BinaryStateTree Types](/api/BinaryStateTree/types)
- [BlobCells Errors](/api/BlobCells/errors)
- [BlobCells.fromBlob](/api/BlobCells/fromBlob)
- [BlobCells.recover](/api/BlobCells/recover)
- [BlobCells.toDataColumns](/api/BlobCells/toDataColumns)
- [BlobCells Types](/api/BlobCells/types)
- [BlobCells.verify](/api/BlobCells/verify)
- [Blobs.commitmentsToVersionedHashes](/api/Blobs/commitmentsToVersionedHashes)
- [Blobs.commitmentToVersionedHash](/api/Blobs/commitmentToVersionedHash)
- [Blobs Errors](/api/Blobs/errors)
- [Blobs.from](/api/Blobs/from)
- [Blobs.to](/api/Blobs/to)
- [Blobs.toBytes](/api/Blobs/toBytes)
- [Blobs.toCellProofs](/api/Blobs/toCellProofs)
- [Blobs.toCommitments](/api/Blobs/toCommitments)
- [Blobs.toHex](/api/Blobs/toHex)
- [Blobs.toVersionedHashes](/api/Blobs/toVersionedHashes)
- [Blobs Types](/api/Blobs/types)
- [Block.fromRpc](/api/Block/fromRpc)
- [Block.toRpc](/api/Block/toRpc)
- [Block Types](/api/Block/types)
- [BlockOverrides.fromRpc](/api/BlockOverrides/fromRpc)
- [BlockOverrides.toRpc](/api/BlockOverrides/toRpc)
- [BlockOverrides Types](/api/BlockOverrides/types)
- [Bloom.contains](/api/Bloom/contains)
- [Bloom.containsHash](/api/Bloom/containsHash)
- [Bloom.containsPrepared](/api/Bloom/containsPrepared)
- [Bloom Errors](/api/Bloom/errors)
- [Bloom.prepare](/api/Bloom/prepare)
- [Bloom Types](/api/Bloom/types)
- [Bloom.validate](/api/Bloom/validate)
- [Bls.aggregate](/api/Bls/aggregate)
- [Bls.createKeyPair](/api/Bls/createKeyPair)
- [Bls.getPublicKey](/api/Bls/getPublicKey)
- [Bls.randomPrivateKey](/api/Bls/randomPrivateKey)
- [Bls.sign](/api/Bls/sign)
- [Bls Types](/api/Bls/types)
- [Bls.verify](/api/Bls/verify)
- [BlsPoint.fromBytes](/api/BlsPoint/fromBytes)
- [BlsPoint.fromHex](/api/BlsPoint/fromHex)
- [BlsPoint.toBytes](/api/BlsPoint/toBytes)
- [BlsPoint.toHex](/api/BlsPoint/toHex)
- [BlsPoint Types](/api/BlsPoint/types)
- [Bytes.assert](/api/Bytes/assert)
- [Bytes.concat](/api/Bytes/concat)
- [Bytes Errors](/api/Bytes/errors)
- [Bytes.from](/api/Bytes/from)
- [Bytes.fromArray](/api/Bytes/fromArray)
- [Bytes.fromBoolean](/api/Bytes/fromBoolean)
- [Bytes.fromHex](/api/Bytes/fromHex)
- [Bytes.fromNumber](/api/Bytes/fromNumber)
- [Bytes.fromString](/api/Bytes/fromString)
- [Bytes.isEqual](/api/Bytes/isEqual)
- [Bytes.padLeft](/api/Bytes/padLeft)
- [Bytes.padRight](/api/Bytes/padRight)
- [Bytes.random](/api/Bytes/random)
- [Bytes.size](/api/Bytes/size)
- [Bytes.slice](/api/Bytes/slice)
- [Bytes.toBigInt](/api/Bytes/toBigInt)
- [Bytes.toBoolean](/api/Bytes/toBoolean)
- [Bytes.toHex](/api/Bytes/toHex)
- [Bytes.toNumber](/api/Bytes/toNumber)
- [Bytes.toString](/api/Bytes/toString)
- [Bytes.trimLeft](/api/Bytes/trimLeft)
- [Bytes.trimRight](/api/Bytes/trimRight)
- [Bytes Types](/api/Bytes/types)
- [Bytes.validate](/api/Bytes/validate)
- [Cbor.decode](/api/Cbor/decode)
- [Cbor.encode](/api/Cbor/encode)
- [Cbor Errors](/api/Cbor/errors)
- [CompactSize Errors](/api/CompactSize/errors)
- [CompactSize.fromBytes](/api/CompactSize/fromBytes)
- [CompactSize.fromHex](/api/CompactSize/fromHex)
- [CompactSize.toBytes](/api/CompactSize/toBytes)
- [CompactSize.toHex](/api/CompactSize/toHex)
- [ContractAddress.from](/api/ContractAddress/from)
- [ContractAddress.fromCreate](/api/ContractAddress/fromCreate)
- [ContractAddress.fromCreate2](/api/ContractAddress/fromCreate2)
- [CoseKey Errors](/api/CoseKey/errors)
- [CoseKey.fromPublicKey](/api/CoseKey/fromPublicKey)
- [CoseKey.toPublicKey](/api/CoseKey/toPublicKey)
- [Ed25519.createKeyPair](/api/Ed25519/createKeyPair)
- [Ed25519.getPublicKey](/api/Ed25519/getPublicKey)
- [Ed25519.randomPrivateKey](/api/Ed25519/randomPrivateKey)
- [Ed25519.sign](/api/Ed25519/sign)
- [Ed25519.toX25519PrivateKey](/api/Ed25519/toX25519PrivateKey)
- [Ed25519.toX25519PublicKey](/api/Ed25519/toX25519PublicKey)
- [Ed25519.verify](/api/Ed25519/verify)
- [Ens Errors](/api/Ens/errors)
- [Ens.labelhash](/api/Ens/labelhash)
- [Ens.namehash](/api/Ens/namehash)
- [Ens.normalize](/api/Ens/normalize)
- [Ens.toCoinType](/api/Ens/toCoinType)
- [Fee.effectiveGasPrice](/api/Fee/effectiveGasPrice)
- [Fee.estimateMaxFeePerGas](/api/Fee/estimateMaxFeePerGas)
- [Fee.fromHistoryRpc](/api/Fee/fromHistoryRpc)
- [Fee.toHistoryRpc](/api/Fee/toHistoryRpc)
- [Fee Types](/api/Fee/types)
- [Filter.fromRpc](/api/Filter/fromRpc)
- [Filter.toRpc](/api/Filter/toRpc)
- [Filter Types](/api/Filter/types)
- [Hash.hmac256](/api/Hash/hmac256)
- [Hash.keccak256](/api/Hash/keccak256)
- [Hash.ripemd160](/api/Hash/ripemd160)
- [Hash.sha256](/api/Hash/sha256)
- [Hash.validate](/api/Hash/validate)
- [HdKey.fromExtendedKey](/api/HdKey/fromExtendedKey)
- [HdKey.fromJson](/api/HdKey/fromJson)
- [HdKey.fromSeed](/api/HdKey/fromSeed)
- [HdKey.path](/api/HdKey/path)
- [HdKey Types](/api/HdKey/types)
- [Hex.assert](/api/Hex/assert)
- [Hex.concat](/api/Hex/concat)
- [Hex Errors](/api/Hex/errors)
- [Hex.from](/api/Hex/from)
- [Hex.fromBoolean](/api/Hex/fromBoolean)
- [Hex.fromBytes](/api/Hex/fromBytes)
- [Hex.fromNumber](/api/Hex/fromNumber)
- [Hex.fromString](/api/Hex/fromString)
- [Hex.isEqual](/api/Hex/isEqual)
- [Hex.padLeft](/api/Hex/padLeft)
- [Hex.padRight](/api/Hex/padRight)
- [Hex.random](/api/Hex/random)
- [Hex.size](/api/Hex/size)
- [Hex.slice](/api/Hex/slice)
- [Hex.toBigInt](/api/Hex/toBigInt)
- [Hex.toBoolean](/api/Hex/toBoolean)
- [Hex.toBytes](/api/Hex/toBytes)
- [Hex.toNumber](/api/Hex/toNumber)
- [Hex.toString](/api/Hex/toString)
- [Hex.trimLeft](/api/Hex/trimLeft)
- [Hex.trimRight](/api/Hex/trimRight)
- [Hex Types](/api/Hex/types)
- [Hex.validate](/api/Hex/validate)
- [Json.canonicalize](/api/Json/canonicalize)
- [Json.parse](/api/Json/parse)
- [Json.stringify](/api/Json/stringify)
- [Keystore.decrypt](/api/Keystore/decrypt)
- [Keystore.encrypt](/api/Keystore/encrypt)
- [Keystore.pbkdf2](/api/Keystore/pbkdf2)
- [Keystore.pbkdf2Async](/api/Keystore/pbkdf2Async)
- [Keystore.scrypt](/api/Keystore/scrypt)
- [Keystore.scryptAsync](/api/Keystore/scryptAsync)
- [Keystore.toKey](/api/Keystore/toKey)
- [Keystore.toKeyAsync](/api/Keystore/toKeyAsync)
- [Keystore Types](/api/Keystore/types)
- [Kzg.from](/api/Kzg/from)
- [Kzg Types](/api/Kzg/types)
- [Log.fromRpc](/api/Log/fromRpc)
- [Log.toRpc](/api/Log/toRpc)
- [Log Types](/api/Log/types)
- [Mnemonic.path](/api/Mnemonic/path)
- [Mnemonic.random](/api/Mnemonic/random)
- [Mnemonic.toHdKey](/api/Mnemonic/toHdKey)
- [Mnemonic.toPrivateKey](/api/Mnemonic/toPrivateKey)
- [Mnemonic.toSeed](/api/Mnemonic/toSeed)
- [Mnemonic.validate](/api/Mnemonic/validate)
- [P256.createKeyPair](/api/P256/createKeyPair)
- [P256.getPublicKey](/api/P256/getPublicKey)
- [P256.getSharedSecret](/api/P256/getSharedSecret)
- [P256.randomPrivateKey](/api/P256/randomPrivateKey)
- [P256.recoverPublicKey](/api/P256/recoverPublicKey)
- [P256.sign](/api/P256/sign)
- [P256.verify](/api/P256/verify)
- [PersonalMessage.encode](/api/PersonalMessage/encode)
- [PersonalMessage.getSignPayload](/api/PersonalMessage/getSignPayload)
- [Provider.createEmitter](/api/Provider/createEmitter)
- [Provider Errors](/api/Provider/errors)
- [Provider.from](/api/Provider/from)
- [Provider.parseError](/api/Provider/parseError)
- [Provider Types](/api/Provider/types)
- [PublicKey.assert](/api/PublicKey/assert)
- [PublicKey.compress](/api/PublicKey/compress)
- [PublicKey Errors](/api/PublicKey/errors)
- [PublicKey.from](/api/PublicKey/from)
- [PublicKey.fromBytes](/api/PublicKey/fromBytes)
- [PublicKey.fromHex](/api/PublicKey/fromHex)
- [PublicKey.toBytes](/api/PublicKey/toBytes)
- [PublicKey.toHex](/api/PublicKey/toHex)
- [PublicKey Types](/api/PublicKey/types)
- [PublicKey.validate](/api/PublicKey/validate)
- [Rlp.from](/api/Rlp/from)
- [Rlp.fromBytes](/api/Rlp/fromBytes)
- [Rlp.fromHex](/api/Rlp/fromHex)
- [Rlp.toBytes](/api/Rlp/toBytes)
- [Rlp.toHex](/api/Rlp/toHex)
- [RpcRequest.createStore](/api/RpcRequest/createStore)
- [RpcRequest.from](/api/RpcRequest/from)
- [RpcRequest Types](/api/RpcRequest/types)
- [RpcResponse Errors](/api/RpcResponse/errors)
- [RpcResponse.from](/api/RpcResponse/from)
- [RpcResponse.parse](/api/RpcResponse/parse)
- [RpcResponse.parseError](/api/RpcResponse/parseError)
- [RpcResponse Types](/api/RpcResponse/types)
- [RpcTransport Errors](/api/RpcTransport/errors)
- [RpcTransport.fromHttp](/api/RpcTransport/fromHttp)
- [RpcTransport Types](/api/RpcTransport/types)
- [Secp256k1.createKeyPair](/api/Secp256k1/createKeyPair)
- [Secp256k1.getPublicKey](/api/Secp256k1/getPublicKey)
- [Secp256k1.getSharedSecret](/api/Secp256k1/getSharedSecret)
- [Secp256k1.randomPrivateKey](/api/Secp256k1/randomPrivateKey)
- [Secp256k1.recoverAddress](/api/Secp256k1/recoverAddress)
- [Secp256k1.recoverPublicKey](/api/Secp256k1/recoverPublicKey)
- [Secp256k1.sign](/api/Secp256k1/sign)
- [Secp256k1.verify](/api/Secp256k1/verify)
- [Signature.assert](/api/Signature/assert)
- [Signature Errors](/api/Signature/errors)
- [Signature.extract](/api/Signature/extract)
- [Signature.from](/api/Signature/from)
- [Signature.fromBytes](/api/Signature/fromBytes)
- [Signature.fromCompactBytes](/api/Signature/fromCompactBytes)
- [Signature.fromDerBytes](/api/Signature/fromDerBytes)
- [Signature.fromDerHex](/api/Signature/fromDerHex)
- [Signature.fromHex](/api/Signature/fromHex)
- [Signature.fromLegacy](/api/Signature/fromLegacy)
- [Signature.fromRecoveredBytes](/api/Signature/fromRecoveredBytes)
- [Signature.fromRpc](/api/Signature/fromRpc)
- [Signature.fromTuple](/api/Signature/fromTuple)
- [Signature.toBytes](/api/Signature/toBytes)
- [Signature.toCompactBytes](/api/Signature/toCompactBytes)
- [Signature.toDerBytes](/api/Signature/toDerBytes)
- [Signature.toDerHex](/api/Signature/toDerHex)
- [Signature.toHex](/api/Signature/toHex)
- [Signature.toLegacy](/api/Signature/toLegacy)
- [Signature.toRecoveredBytes](/api/Signature/toRecoveredBytes)
- [Signature.toRpc](/api/Signature/toRpc)
- [Signature.toTuple](/api/Signature/toTuple)
- [Signature Types](/api/Signature/types)
- [Signature.validate](/api/Signature/validate)
- [Signature.vToYParity](/api/Signature/vToYParity)
- [Signature.yParityToV](/api/Signature/yParityToV)
- [Siwe.createMessage](/api/Siwe/createMessage)
- [Siwe Errors](/api/Siwe/errors)
- [Siwe.generateNonce](/api/Siwe/generateNonce)
- [Siwe.isUri](/api/Siwe/isUri)
- [Siwe.parseMessage](/api/Siwe/parseMessage)
- [Siwe Types](/api/Siwe/types)
- [Siwe.validateMessage](/api/Siwe/validateMessage)
- [StateOverrides.fromRpc](/api/StateOverrides/fromRpc)
- [StateOverrides.toRpc](/api/StateOverrides/toRpc)
- [StateOverrides Types](/api/StateOverrides/types)
- [TransactionEnvelope.assert](/api/TransactionEnvelope/assert)
- [TransactionEnvelope.deserialize](/api/TransactionEnvelope/deserialize)
- [TransactionEnvelope Errors](/api/TransactionEnvelope/errors)
- [TransactionEnvelope.from](/api/TransactionEnvelope/from)
- [TransactionEnvelope.getSerializedType](/api/TransactionEnvelope/getSerializedType)
- [TransactionEnvelope.getSignPayload](/api/TransactionEnvelope/getSignPayload)
- [TransactionEnvelope.getType](/api/TransactionEnvelope/getType)
- [TransactionEnvelope.hash](/api/TransactionEnvelope/hash)
- [TransactionEnvelope.serialize](/api/TransactionEnvelope/serialize)
- [TransactionEnvelope.toRpc](/api/TransactionEnvelope/toRpc)
- [TransactionEnvelope.toTransactionRequest](/api/TransactionEnvelope/toTransactionRequest)
- [TransactionEnvelope Types](/api/TransactionEnvelope/types)
- [TransactionEnvelope.validate](/api/TransactionEnvelope/validate)
- [TxEnvelopeEip1559.assert](/api/TxEnvelopeEip1559/assert)
- [TxEnvelopeEip1559.deserialize](/api/TxEnvelopeEip1559/deserialize)
- [TxEnvelopeEip1559.from](/api/TxEnvelopeEip1559/from)
- [TxEnvelopeEip1559.getSignPayload](/api/TxEnvelopeEip1559/getSignPayload)
- [TxEnvelopeEip1559.hash](/api/TxEnvelopeEip1559/hash)
- [TxEnvelopeEip1559.serialize](/api/TxEnvelopeEip1559/serialize)
- [TxEnvelopeEip1559.toRpc](/api/TxEnvelopeEip1559/toRpc)
- [TxEnvelopeEip1559 Types](/api/TxEnvelopeEip1559/types)
- [TxEnvelopeEip1559.validate](/api/TxEnvelopeEip1559/validate)
- [TxEnvelopeEip2930.assert](/api/TxEnvelopeEip2930/assert)
- [TxEnvelopeEip2930.deserialize](/api/TxEnvelopeEip2930/deserialize)
- [TxEnvelopeEip2930.from](/api/TxEnvelopeEip2930/from)
- [TxEnvelopeEip2930.getSignPayload](/api/TxEnvelopeEip2930/getSignPayload)
- [TxEnvelopeEip2930.hash](/api/TxEnvelopeEip2930/hash)
- [TxEnvelopeEip2930.serialize](/api/TxEnvelopeEip2930/serialize)
- [TxEnvelopeEip2930.toRpc](/api/TxEnvelopeEip2930/toRpc)
- [TxEnvelopeEip2930 Types](/api/TxEnvelopeEip2930/types)
- [TxEnvelopeEip2930.validate](/api/TxEnvelopeEip2930/validate)
- [TxEnvelopeEip4844.assert](/api/TxEnvelopeEip4844/assert)
- [TxEnvelopeEip4844.deserialize](/api/TxEnvelopeEip4844/deserialize)
- [TxEnvelopeEip4844 Errors](/api/TxEnvelopeEip4844/errors)
- [TxEnvelopeEip4844.from](/api/TxEnvelopeEip4844/from)
- [TxEnvelopeEip4844.getSignPayload](/api/TxEnvelopeEip4844/getSignPayload)
- [TxEnvelopeEip4844.hash](/api/TxEnvelopeEip4844/hash)
- [TxEnvelopeEip4844.serialize](/api/TxEnvelopeEip4844/serialize)
- [TxEnvelopeEip4844.toRpc](/api/TxEnvelopeEip4844/toRpc)
- [TxEnvelopeEip4844 Types](/api/TxEnvelopeEip4844/types)
- [TxEnvelopeEip4844.validate](/api/TxEnvelopeEip4844/validate)
- [TxEnvelopeEip7702.assert](/api/TxEnvelopeEip7702/assert)
- [TxEnvelopeEip7702.deserialize](/api/TxEnvelopeEip7702/deserialize)
- [TxEnvelopeEip7702.from](/api/TxEnvelopeEip7702/from)
- [TxEnvelopeEip7702.getSignPayload](/api/TxEnvelopeEip7702/getSignPayload)
- [TxEnvelopeEip7702.hash](/api/TxEnvelopeEip7702/hash)
- [TxEnvelopeEip7702.serialize](/api/TxEnvelopeEip7702/serialize)
- [TxEnvelopeEip7702.toRpc](/api/TxEnvelopeEip7702/toRpc)
- [TxEnvelopeEip7702 Types](/api/TxEnvelopeEip7702/types)
- [TxEnvelopeEip7702.validate](/api/TxEnvelopeEip7702/validate)
- [TxEnvelopeLegacy.assert](/api/TxEnvelopeLegacy/assert)
- [TxEnvelopeLegacy.deserialize](/api/TxEnvelopeLegacy/deserialize)
- [TxEnvelopeLegacy.from](/api/TxEnvelopeLegacy/from)
- [TxEnvelopeLegacy.getSignPayload](/api/TxEnvelopeLegacy/getSignPayload)
- [TxEnvelopeLegacy.hash](/api/TxEnvelopeLegacy/hash)
- [TxEnvelopeLegacy.serialize](/api/TxEnvelopeLegacy/serialize)
- [TxEnvelopeLegacy.toRpc](/api/TxEnvelopeLegacy/toRpc)
- [TxEnvelopeLegacy Types](/api/TxEnvelopeLegacy/types)
- [TxEnvelopeLegacy.validate](/api/TxEnvelopeLegacy/validate)
- [TypedData.assert](/api/TypedData/assert)
- [TypedData.domainSeparator](/api/TypedData/domainSeparator)
- [TypedData.encode](/api/TypedData/encode)
- [TypedData.encodeType](/api/TypedData/encodeType)
- [TypedData Errors](/api/TypedData/errors)
- [TypedData.extractEip712DomainTypes](/api/TypedData/extractEip712DomainTypes)
- [TypedData.getSignPayload](/api/TypedData/getSignPayload)
- [TypedData.hashDomain](/api/TypedData/hashDomain)
- [TypedData.hashStruct](/api/TypedData/hashStruct)
- [TypedData.serialize](/api/TypedData/serialize)
- [TypedData Types](/api/TypedData/types)
- [TypedData.validate](/api/TypedData/validate)
- [ValidatorData.encode](/api/ValidatorData/encode)
- [ValidatorData.getSignPayload](/api/ValidatorData/getSignPayload)
- [Value Errors](/api/Value/errors)
- [Value.format](/api/Value/format)
- [Value.formatEther](/api/Value/formatEther)
- [Value.formatGwei](/api/Value/formatGwei)
- [Value.from](/api/Value/from)
- [Value.fromEther](/api/Value/fromEther)
- [Value.fromGwei](/api/Value/fromGwei)
- [WebAuthnP256.createCredential](/api/WebAuthnP256/createCredential)
- [WebAuthnP256.sign](/api/WebAuthnP256/sign)
- [WebAuthnP256 Types](/api/WebAuthnP256/types)
- [WebAuthnP256.verify](/api/WebAuthnP256/verify)
- [WebCryptoP256.createKeyPair](/api/WebCryptoP256/createKeyPair)
- [WebCryptoP256.createKeyPairECDH](/api/WebCryptoP256/createKeyPairECDH)
- [WebCryptoP256 Errors](/api/WebCryptoP256/errors)
- [WebCryptoP256.getSharedSecret](/api/WebCryptoP256/getSharedSecret)
- [WebCryptoP256.sign](/api/WebCryptoP256/sign)
- [WebCryptoP256.verify](/api/WebCryptoP256/verify)
- [Withdrawal.fromRpc](/api/Withdrawal/fromRpc)
- [Withdrawal.toRpc](/api/Withdrawal/toRpc)
- [Withdrawal Types](/api/Withdrawal/types)
- [X25519.createKeyPair](/api/X25519/createKeyPair)
- [X25519.getPublicKey](/api/X25519/getPublicKey)
- [X25519.getSharedSecret](/api/X25519/getSharedSecret)
- [X25519.randomPrivateKey](/api/X25519/randomPrivateKey)
- [EntryPoint](/ercs/erc4337/EntryPoint/)
- [RpcSchema](/ercs/erc4337/RpcSchema/)
- [UserOperation](/ercs/erc4337/UserOperation/)
- [UserOperationGas](/ercs/erc4337/UserOperationGas/)
- [UserOperationReceipt](/ercs/erc4337/UserOperationReceipt/)
- [SignatureErc6492](/ercs/erc6492/SignatureErc6492/)
- [Calls](/ercs/erc7821/Calls/)
- [Execute](/ercs/erc7821/Execute/)
- [SignatureErc8010](/ercs/erc8010/SignatureErc8010/)
- [Attribution](/ercs/erc8021/Attribution/)
- [AuthorizationTempo](/tempo/reference/AuthorizationTempo/)
- [KeyAuthorization](/tempo/reference/KeyAuthorization/)
- [Period](/tempo/reference/Period/)
- [PoolId](/tempo/reference/PoolId/)
- [RpcSchemaTempo](/tempo/reference/RpcSchemaTempo/)
- [SignatureEnvelope](/tempo/reference/SignatureEnvelope/)
- [Tick](/tempo/reference/Tick/)
- [TokenId](/tempo/reference/TokenId/)
- [TokenRole](/tempo/reference/TokenRole/)
- [Transaction](/tempo/reference/Transaction/)
- [TransactionReceipt](/tempo/reference/TransactionReceipt/)
- [TransactionRequest](/tempo/reference/TransactionRequest/)
- [TxEnvelopeTempo](/tempo/reference/TxEnvelopeTempo/)
- [VirtualAddress](/tempo/reference/VirtualAddress/)
- [VirtualMaster](/tempo/reference/VirtualMaster/)
- [ZoneId](/tempo/reference/ZoneId/)
- [ZoneRpcAuthentication](/tempo/reference/ZoneRpcAuthentication/)
- [Authentication](/webauthn/webauthn/Authentication/)
- [Authenticator](/webauthn/webauthn/Authenticator/)
- [Credential_2](/webauthn/webauthn/Credential/)
- [Registration](/webauthn/webauthn/Registration/)
- [EntryPoint Types](/ercs/erc4337/EntryPoint/types)
- [RpcSchema.from](/ercs/erc4337/RpcSchema/from)
- [RpcSchema Types](/ercs/erc4337/RpcSchema/types)
- [UserOperation.from](/ercs/erc4337/UserOperation/from)
- [UserOperation.fromPacked](/ercs/erc4337/UserOperation/fromPacked)
- [UserOperation.fromRpc](/ercs/erc4337/UserOperation/fromRpc)
- [UserOperation.getSignPayload](/ercs/erc4337/UserOperation/getSignPayload)
- [UserOperation.hash](/ercs/erc4337/UserOperation/hash)
- [UserOperation.toInitCode](/ercs/erc4337/UserOperation/toInitCode)
- [UserOperation.toPacked](/ercs/erc4337/UserOperation/toPacked)
- [UserOperation.toRpc](/ercs/erc4337/UserOperation/toRpc)
- [UserOperation.toTypedData](/ercs/erc4337/UserOperation/toTypedData)
- [UserOperation Types](/ercs/erc4337/UserOperation/types)
- [UserOperationGas.fromRpc](/ercs/erc4337/UserOperationGas/fromRpc)
- [UserOperationGas.toRpc](/ercs/erc4337/UserOperationGas/toRpc)
- [UserOperationGas Types](/ercs/erc4337/UserOperationGas/types)
- [UserOperationReceipt.fromRpc](/ercs/erc4337/UserOperationReceipt/fromRpc)
- [UserOperationReceipt.toRpc](/ercs/erc4337/UserOperationReceipt/toRpc)
- [UserOperationReceipt Types](/ercs/erc4337/UserOperationReceipt/types)
- [SignatureErc6492.assert](/ercs/erc6492/SignatureErc6492/assert)
- [SignatureErc6492 Errors](/ercs/erc6492/SignatureErc6492/errors)
- [SignatureErc6492.from](/ercs/erc6492/SignatureErc6492/from)
- [SignatureErc6492 Types](/ercs/erc6492/SignatureErc6492/types)
- [SignatureErc6492.unwrap](/ercs/erc6492/SignatureErc6492/unwrap)
- [SignatureErc6492.validate](/ercs/erc6492/SignatureErc6492/validate)
- [SignatureErc6492.wrap](/ercs/erc6492/SignatureErc6492/wrap)
- [Calls.decode](/ercs/erc7821/Calls/decode)
- [Calls.encode](/ercs/erc7821/Calls/encode)
- [Calls.getAbiParameters](/ercs/erc7821/Calls/getAbiParameters)
- [Calls Types](/ercs/erc7821/Calls/types)
- [Execute.decodeBatchOfBatchesData](/ercs/erc7821/Execute/decodeBatchOfBatchesData)
- [Execute.decodeData](/ercs/erc7821/Execute/decodeData)
- [Execute.encodeBatchOfBatchesData](/ercs/erc7821/Execute/encodeBatchOfBatchesData)
- [Execute.encodeData](/ercs/erc7821/Execute/encodeData)
- [Execute Types](/ercs/erc7821/Execute/types)
- [SignatureErc8010.assert](/ercs/erc8010/SignatureErc8010/assert)
- [SignatureErc8010 Errors](/ercs/erc8010/SignatureErc8010/errors)
- [SignatureErc8010.from](/ercs/erc8010/SignatureErc8010/from)
- [SignatureErc8010 Types](/ercs/erc8010/SignatureErc8010/types)
- [SignatureErc8010.unwrap](/ercs/erc8010/SignatureErc8010/unwrap)
- [SignatureErc8010.validate](/ercs/erc8010/SignatureErc8010/validate)
- [SignatureErc8010.wrap](/ercs/erc8010/SignatureErc8010/wrap)
- [Attribution.fromData](/ercs/erc8021/Attribution/fromData)
- [Attribution.getSchemaId](/ercs/erc8021/Attribution/getSchemaId)
- [Attribution.toDataSuffix](/ercs/erc8021/Attribution/toDataSuffix)
- [Attribution Types](/ercs/erc8021/Attribution/types)
- [AuthorizationTempo.from](/tempo/reference/AuthorizationTempo/from)
- [AuthorizationTempo.fromRpc](/tempo/reference/AuthorizationTempo/fromRpc)
- [AuthorizationTempo.fromRpcList](/tempo/reference/AuthorizationTempo/fromRpcList)
- [AuthorizationTempo.fromTuple](/tempo/reference/AuthorizationTempo/fromTuple)
- [AuthorizationTempo.fromTupleList](/tempo/reference/AuthorizationTempo/fromTupleList)
- [AuthorizationTempo.getSignPayload](/tempo/reference/AuthorizationTempo/getSignPayload)
- [AuthorizationTempo.hash](/tempo/reference/AuthorizationTempo/hash)
- [AuthorizationTempo.toRpc](/tempo/reference/AuthorizationTempo/toRpc)
- [AuthorizationTempo.toRpcList](/tempo/reference/AuthorizationTempo/toRpcList)
- [AuthorizationTempo.toTuple](/tempo/reference/AuthorizationTempo/toTuple)
- [AuthorizationTempo.toTupleList](/tempo/reference/AuthorizationTempo/toTupleList)
- [AuthorizationTempo Types](/tempo/reference/AuthorizationTempo/types)
- [KeyAuthorization.deserialize](/tempo/reference/KeyAuthorization/deserialize)
- [KeyAuthorization.from](/tempo/reference/KeyAuthorization/from)
- [KeyAuthorization.fromRpc](/tempo/reference/KeyAuthorization/fromRpc)
- [KeyAuthorization.fromTuple](/tempo/reference/KeyAuthorization/fromTuple)
- [KeyAuthorization.getSignPayload](/tempo/reference/KeyAuthorization/getSignPayload)
- [KeyAuthorization.hash](/tempo/reference/KeyAuthorization/hash)
- [KeyAuthorization.serialize](/tempo/reference/KeyAuthorization/serialize)
- [KeyAuthorization.toRpc](/tempo/reference/KeyAuthorization/toRpc)
- [KeyAuthorization.toTuple](/tempo/reference/KeyAuthorization/toTuple)
- [KeyAuthorization Types](/tempo/reference/KeyAuthorization/types)
- [Period.days](/tempo/reference/Period/days)
- [Period.hours](/tempo/reference/Period/hours)
- [Period.minutes](/tempo/reference/Period/minutes)
- [Period.months](/tempo/reference/Period/months)
- [Period.seconds](/tempo/reference/Period/seconds)
- [Period.weeks](/tempo/reference/Period/weeks)
- [Period.years](/tempo/reference/Period/years)
- [PoolId.from](/tempo/reference/PoolId/from)
- [RpcSchemaTempo Types](/tempo/reference/RpcSchemaTempo/types)
- [SignatureEnvelope.assert](/tempo/reference/SignatureEnvelope/assert)
- [SignatureEnvelope.deserialize](/tempo/reference/SignatureEnvelope/deserialize)
- [SignatureEnvelope Errors](/tempo/reference/SignatureEnvelope/errors)
- [SignatureEnvelope.extractAddress](/tempo/reference/SignatureEnvelope/extractAddress)
- [SignatureEnvelope.extractPublicKey](/tempo/reference/SignatureEnvelope/extractPublicKey)
- [SignatureEnvelope.from](/tempo/reference/SignatureEnvelope/from)
- [SignatureEnvelope.fromRpc](/tempo/reference/SignatureEnvelope/fromRpc)
- [SignatureEnvelope.getType](/tempo/reference/SignatureEnvelope/getType)
- [SignatureEnvelope.serialize](/tempo/reference/SignatureEnvelope/serialize)
- [SignatureEnvelope.toRpc](/tempo/reference/SignatureEnvelope/toRpc)
- [SignatureEnvelope Types](/tempo/reference/SignatureEnvelope/types)
- [SignatureEnvelope.validate](/tempo/reference/SignatureEnvelope/validate)
- [SignatureEnvelope.verify](/tempo/reference/SignatureEnvelope/verify)
- [Tick Errors](/tempo/reference/Tick/errors)
- [Tick.fromPrice](/tempo/reference/Tick/fromPrice)
- [Tick.toPrice](/tempo/reference/Tick/toPrice)
- [Tick Types](/tempo/reference/Tick/types)
- [TokenId.compute](/tempo/reference/TokenId/compute)
- [TokenId.from](/tempo/reference/TokenId/from)
- [TokenId.fromAddress](/tempo/reference/TokenId/fromAddress)
- [TokenId.toAddress](/tempo/reference/TokenId/toAddress)
- [TokenId Types](/tempo/reference/TokenId/types)
- [TokenRole.serialize](/tempo/reference/TokenRole/serialize)
- [TokenRole Types](/tempo/reference/TokenRole/types)
- [Transaction.fromRpc](/tempo/reference/Transaction/fromRpc)
- [Transaction.toRpc](/tempo/reference/Transaction/toRpc)
- [Transaction Types](/tempo/reference/Transaction/types)
- [TransactionReceipt.fromRpc](/tempo/reference/TransactionReceipt/fromRpc)
- [TransactionReceipt.toRpc](/tempo/reference/TransactionReceipt/toRpc)
- [TransactionReceipt Types](/tempo/reference/TransactionReceipt/types)
- [TransactionRequest Errors](/tempo/reference/TransactionRequest/errors)
- [TransactionRequest.fromRpc](/tempo/reference/TransactionRequest/fromRpc)
- [TransactionRequest.toEnvelope](/tempo/reference/TransactionRequest/toEnvelope)
- [TransactionRequest.toRpc](/tempo/reference/TransactionRequest/toRpc)
- [TransactionRequest Types](/tempo/reference/TransactionRequest/types)
- [TxEnvelopeTempo.assert](/tempo/reference/TxEnvelopeTempo/assert)
- [TxEnvelopeTempo.deserialize](/tempo/reference/TxEnvelopeTempo/deserialize)
- [TxEnvelopeTempo.encodeForSigning](/tempo/reference/TxEnvelopeTempo/encodeForSigning)
- [TxEnvelopeTempo Errors](/tempo/reference/TxEnvelopeTempo/errors)
- [TxEnvelopeTempo.from](/tempo/reference/TxEnvelopeTempo/from)
- [TxEnvelopeTempo.getFeePayerSignPayload](/tempo/reference/TxEnvelopeTempo/getFeePayerSignPayload)
- [TxEnvelopeTempo.getSignPayload](/tempo/reference/TxEnvelopeTempo/getSignPayload)
- [TxEnvelopeTempo.hash](/tempo/reference/TxEnvelopeTempo/hash)
- [TxEnvelopeTempo.serialize](/tempo/reference/TxEnvelopeTempo/serialize)
- [TxEnvelopeTempo.toTransactionRequest](/tempo/reference/TxEnvelopeTempo/toTransactionRequest)
- [TxEnvelopeTempo Types](/tempo/reference/TxEnvelopeTempo/types)
- [TxEnvelopeTempo.validate](/tempo/reference/TxEnvelopeTempo/validate)
- [VirtualAddress Errors](/tempo/reference/VirtualAddress/errors)
- [VirtualAddress.from](/tempo/reference/VirtualAddress/from)
- [VirtualAddress.isVirtual](/tempo/reference/VirtualAddress/isVirtual)
- [VirtualAddress.parse](/tempo/reference/VirtualAddress/parse)
- [VirtualAddress Types](/tempo/reference/VirtualAddress/types)
- [VirtualAddress.validate](/tempo/reference/VirtualAddress/validate)
- [VirtualMaster.getMasterId](/tempo/reference/VirtualMaster/getMasterId)
- [VirtualMaster.getRegistrationHash](/tempo/reference/VirtualMaster/getRegistrationHash)
- [VirtualMaster.mineSalt](/tempo/reference/VirtualMaster/mineSalt)
- [VirtualMaster.mineSaltAsync](/tempo/reference/VirtualMaster/mineSaltAsync)
- [VirtualMaster Types](/tempo/reference/VirtualMaster/types)
- [VirtualMaster.validateSalt](/tempo/reference/VirtualMaster/validateSalt)
- [ZoneId.fromChainId](/tempo/reference/ZoneId/fromChainId)
- [ZoneId.toChainId](/tempo/reference/ZoneId/toChainId)
- [ZoneRpcAuthentication.deserialize](/tempo/reference/ZoneRpcAuthentication/deserialize)
- [ZoneRpcAuthentication Errors](/tempo/reference/ZoneRpcAuthentication/errors)
- [ZoneRpcAuthentication.from](/tempo/reference/ZoneRpcAuthentication/from)
- [ZoneRpcAuthentication.getFields](/tempo/reference/ZoneRpcAuthentication/getFields)
- [ZoneRpcAuthentication.getSignPayload](/tempo/reference/ZoneRpcAuthentication/getSignPayload)
- [ZoneRpcAuthentication.hash](/tempo/reference/ZoneRpcAuthentication/hash)
- [ZoneRpcAuthentication.serialize](/tempo/reference/ZoneRpcAuthentication/serialize)
- [ZoneRpcAuthentication Types](/tempo/reference/ZoneRpcAuthentication/types)
- [Authentication.deserializeOptions](/webauthn/webauthn/Authentication/deserializeOptions)
- [Authentication.deserializeResponse](/webauthn/webauthn/Authentication/deserializeResponse)
- [Authentication Errors](/webauthn/webauthn/Authentication/errors)
- [Authentication.getOptions](/webauthn/webauthn/Authentication/getOptions)
- [Authentication.getSignPayload](/webauthn/webauthn/Authentication/getSignPayload)
- [Authentication.serializeOptions](/webauthn/webauthn/Authentication/serializeOptions)
- [Authentication.serializeResponse](/webauthn/webauthn/Authentication/serializeResponse)
- [Authentication.sign](/webauthn/webauthn/Authentication/sign)
- [Authentication Types](/webauthn/webauthn/Authentication/types)
- [Authentication.verify](/webauthn/webauthn/Authentication/verify)
- [Authenticator.getAttestationObject](/webauthn/webauthn/Authenticator/getAttestationObject)
- [Authenticator.getAuthenticatorData](/webauthn/webauthn/Authenticator/getAuthenticatorData)
- [Authenticator.getClientDataJSON](/webauthn/webauthn/Authenticator/getClientDataJSON)
- [Authenticator.getSignCount](/webauthn/webauthn/Authenticator/getSignCount)
- [Credential_2.deserialize](/webauthn/webauthn/Credential/deserialize)
- [Credential_2.serialize](/webauthn/webauthn/Credential/serialize)
- [Credential Types](/webauthn/webauthn/Credential/types)
- [Registration.create](/webauthn/webauthn/Registration/create)
- [Registration.deserializeOptions](/webauthn/webauthn/Registration/deserializeOptions)
- [Registration.deserializeResponse](/webauthn/webauthn/Registration/deserializeResponse)
- [Registration Errors](/webauthn/webauthn/Registration/errors)
- [Registration.getOptions](/webauthn/webauthn/Registration/getOptions)
- [Registration.serializeOptions](/webauthn/webauthn/Registration/serializeOptions)
- [Registration.serializeResponse](/webauthn/webauthn/Registration/serializeResponse)
- [Registration Types](/webauthn/webauthn/Registration/types)
- [Registration.verify](/webauthn/webauthn/Registration/verify)
-->

# Signed & Typed Data

## Overview

The [ERC-191 Signed Data](https://eips.ethereum.org/EIPS/eip-191) standard defines a specification for handling signed data in Ethereum contracts.
By defining a structured format for signable data, ERC-191 helps prevent vulnerabilities associated with obscured transaction signing and multi-signature wallets.

Signable data are prefixed with a version byte (e.g. `0x45` for Personal Messages). This protects an end-user from signing obscured transaction data constructed by a malicious actor and consequently losing funds.

Ox supports the following ERC-191 versions:

| Module                                    | Name                                    | Version |
| ----------------------------------------- | --------------------------------------- | ------- |
| [`PersonalMessage`](/api/PersonalMessage) | Personal Message (aka. `personal_sign`) | `0x45`  |
| [`TypedData`](/api/TypedData)             | Typed Data                              | `0x01`  |
| [`ValidatorData`](/api/ValidatorData)     | Data with intended validator            | `0x00`  |

## Personal Messages

Personal messages are a common use-case for ERC-191. They are typically used to sign arbitrary messages that will be displayed to the user, for example, a [Sign-In With Ethereum (SIWE) message](/guides/siwe#create-siwe-message).

A signable Personal Message payload can be computed using [`PersonalMessage.getSignPayload`](/api/PersonalMessage/getSignPayload):

```ts twoslash
import { Hex, PersonalMessage } from 'ox'

const payload = PersonalMessage.getSignPayload(
  Hex.fromString('hello world')
)
```

We can then sign the payload by using a [Signer](/guides/ecdsa#signers). For this example, we will use [`Secp256k1.sign`](/api/Secp256k1/sign):

```ts twoslash
import { Hex, PersonalMessage, Secp256k1 } from 'ox'

const payload = PersonalMessage.getSignPayload(
  Hex.fromString('hello world')
)

const signature = Secp256k1.sign({ // [!code focus]
  payload, // [!code focus]
  privateKey: '0x...', // [!code focus]
}) // [!code focus]
```

### Wallets

Most Wallets expose a [`personal_sign` RPC interface](https://docs.metamask.io/wallet/reference/json-rpc-methods/personal_sign/) that can be used to sign Personal Messages. This means you can use the `personal_sign` RPC method to sign a message without the ceremony of constructing and signing it yourself.

```ts twoslash
import 'ox/window'
import { Hex, Provider } from 'ox'

const provider = Provider.from(window.ethereum)

const [address] = await provider.request({ method: 'eth_requestAccounts' })

const signature = await provider.request({ // [!code focus]
  method: 'personal_sign', // [!code focus]
  params: [Hex.fromString('hello world'), address], // [!code focus]
}) // [!code focus]
```

## Typed Data

Typed Data is another type of signed data that is used to present structured data to the user to sign.
This structure (and encoding format) is defined by the [EIP-712 standard](https://eips.ethereum.org/EIPS/eip-712).

A signable Typed Data payload can be computed using [`TypedData.getSignPayload`](/api/TypedData/getSignPayload):

```ts twoslash
import { TypedData } from 'ox'
 
const payload = TypedData.getSignPayload({ 
  domain: {
    name: 'Ether Mail',
    version: '1',
    chainId: 1,
    verifyingContract: '0x0000000000000000000000000000000000000000',
  },
  types: {
    Person: [
      { name: 'name', type: 'string' },
      { name: 'wallet', type: 'address' },
    ],
    Mail: [
      { name: 'from', type: 'Person' },
      { name: 'to', type: 'Person' },
      { name: 'contents', type: 'string' },
    ],
  },
  primaryType: 'Mail',
  message: {
    from: {
      name: 'Cow',
      wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
    },
    to: {
      name: 'Bob',
      wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
    },
    contents: 'Hello, Bob!',
  },
})
```

We can then sign the payload by using a [Signer](/guides/ecdsa#signers). For this example, we will use [`Secp256k1.sign`](/api/Secp256k1/sign):

```ts twoslash
import { Hex, Secp256k1, TypedData } from 'ox'

const payload = TypedData.getSignPayload({ 
  domain: {
    name: 'Ether Mail',
    version: '1',
    chainId: 1,
    verifyingContract: '0x0000000000000000000000000000000000000000',
  },
  types: {
    Person: [
      { name: 'name', type: 'string' },
      { name: 'wallet', type: 'address' },
    ],
    Mail: [
      { name: 'from', type: 'Person' },
      { name: 'to', type: 'Person' },
      { name: 'contents', type: 'string' },
    ],
  },
  primaryType: 'Mail',
  message: {
    from: {
      name: 'Cow',
      wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826',
    },
    to: {
      name: 'Bob',
      wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',
    },
    contents: 'Hello, Bob!',
  },
})

const signature = Secp256k1.sign({ // [!code focus]
  payload, // [!code focus]
  privateKey: '0x...', // [!code focus]
}) // [!code focus]
```

### Wallets

Most Wallets expose a [`eth_signTypedData_v4` RPC interface](https://docs.metamask.io/wallet/reference/json-rpc-methods/eth_signtypeddata_v4/) that can be used to sign Typed Data. This means you can use the `eth_signTypedData_v4` RPC method to sign a message without the ceremony of constructing and signing it yourself.

```ts twoslash
// @noErrors
import 'ox/window'
import { Hex, Provider, Secp256k1, TypedData } from 'ox'

const provider = Provider.from(window.ethereum)

const [address] = await provider.request({ method: 'eth_requestAccounts' })

const payload = TypedData.serialize({ /* ... */ }) // [!code focus]

const signature = await provider.request({ // [!code focus]
  method: 'eth_signTypedData_v4', // [!code focus]
  params: [address, payload], // [!code focus]
}) // [!code focus]
```

## Related Modules

| Module                                  | Description                                                                                                           |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [PersonalMessage](/api/PersonalMessage) | Utilities & types for working with [EIP-191 Personal Messages](https://eips.ethereum.org/EIPS/eip-191#version-0x45-e) |
| [TypedData](/api/TypedData)             | Utility functions for working with [EIP-712 Typed Data](https://eips.ethereum.org/EIPS/eip-712)                       |
| [ValidatorData](/api/ValidatorData)     | Utilities & types for working with [EIP-191 Validator Data](https://eips.ethereum.org/EIPS/eip-191#0x00)              |
