Skip to main content
@tevm/voltaire
@tevm/voltaire / primitives/TypedData

primitives/TypedData

Classes

InvalidTypedDataError

Defined in: src/primitives/TypedData/errors.js:4 Error thrown when TypedData is invalid

Extends

  • Error

Constructors

Constructor
new InvalidTypedDataError(message, context?): InvalidTypedDataError
Defined in: src/primitives/TypedData/errors.js:9
Parameters
message
string
context?
any
Returns
InvalidTypedDataError
Overrides
Error.constructor

Properties

context
context: any
Defined in: src/primitives/TypedData/errors.js:12
name
name: string
Defined in: src/primitives/TypedData/errors.js:11
Inherited from
Error.name

Type Aliases

TypedDataField

TypedDataField = object
Defined in: src/primitives/TypedData/TypedDataType.ts:6 EIP-712 Typed Data field definition

Properties

name
readonly name: string
Defined in: src/primitives/TypedData/TypedDataType.ts:7
type
readonly type: string
Defined in: src/primitives/TypedData/TypedDataType.ts:8

TypedDataType

TypedDataType<T> = object
Defined in: src/primitives/TypedData/TypedDataType.ts:16 EIP-712 Typed Data structure Complete structure for EIP-712 typed structured data signing

Type Parameters

T
T = Record<string, unknown>

Properties

domain
readonly domain: DomainType
Defined in: src/primitives/TypedData/TypedDataType.ts:22
message
readonly message: T
Defined in: src/primitives/TypedData/TypedDataType.ts:23
primaryType
readonly primaryType: string
Defined in: src/primitives/TypedData/TypedDataType.ts:21
types
readonly types: object
Defined in: src/primitives/TypedData/TypedDataType.ts:17
Index Signature
[key: string]: readonly TypedDataField[]
EIP712Domain
readonly EIP712Domain: readonly TypedDataField[]

Functions

_encode()

_encode(typedData, crypto): Uint8Array<ArrayBufferLike>
Defined in: src/primitives/TypedData/encode.js:17 Encode EIP-712 typed data message Returns the encoded message data (without domain separator)

Parameters

typedData
TypedDataType<Record<string, unknown>> TypedData
crypto
Crypto dependencies
keccak256
(data) => Uint8Array Keccak256 hash function

Returns

Uint8Array<ArrayBufferLike> Encoded message data

Example

const encoded = TypedData.encode(typedData, { keccak256 });

_from()

_from(typedData): TypedDataType<Record<string, unknown>>
Defined in: src/primitives/TypedData/from.js:32 Create TypedData from object

Parameters

typedData
TypedData object
domain
object Domain separator
message
any Message data
primaryType
string Primary type name
types
Record<string, readonly TypedDataField[]> Type definitions

Returns

TypedDataType<Record<string, unknown>> TypedData

Throws

If typedData is invalid

Example

import * as TypedData from './primitives/TypedData/index.js';
const typedData = TypedData.from({
  types: {
    EIP712Domain: [{ name: 'name', type: 'string' }],
    Person: [{ name: 'name', type: 'string' }]
  },
  primaryType: 'Person',
  domain: { name: 'MyDApp' },
  message: { name: 'Alice' }
});

_hash()

_hash(typedData, crypto): HashType
Defined in: src/primitives/TypedData/hash.js:20 Compute EIP-712 typed data hash for signing hash = keccak256(“\x19\x01” || domainSeparator || messageHash)

Parameters

typedData
TypedDataType<Record<string, unknown>> TypedData
crypto
Crypto dependencies
keccak256
(data) => Uint8Array Keccak256 hash function

Returns

HashType Hash for signing

Example

import { keccak256 } from './crypto/Keccak256/index.js';
const hash = TypedData.hash(typedData, { keccak256 });
const signature = await wallet.signMessage(hash);

_validate()

_validate(typedData): void
Defined in: src/primitives/TypedData/validate.js:14 Validate EIP-712 typed data structure

Parameters

typedData
TypedDataType<Record<string, unknown>> TypedData

Returns

void

Throws

If validation fails

Example

TypedData.validate(typedData); // throws if invalid

encode()

encode(typedData, crypto): Uint8Array
Defined in: src/primitives/TypedData/index.ts:45

Parameters

typedData
TypedDataType<Record<string, unknown>>
crypto
keccak256
(data) => Uint8Array

Returns

Uint8Array

from()

from<T>(typedData): TypedDataType<T>
Defined in: src/primitives/TypedData/index.ts:16

Type Parameters

T
T = Record<string, unknown>

Parameters

typedData
domain
{ chainId?: number | ChainIdType; name?: string; salt?: string | HashType; verifyingContract?: string | AddressType; version?: string; }
domain.chainId?
number | ChainIdType
domain.name?
string
domain.salt?
string | HashType
domain.verifyingContract?
string | AddressType
domain.version?
string
message
T
primaryType
string
types
{[key: string]: readonly TypedDataField[]; EIP712Domain: readonly TypedDataField[]; }
types.EIP712Domain
readonly TypedDataField[]

Returns

TypedDataType<T>

hash()

hash(typedData, crypto): HashType
Defined in: src/primitives/TypedData/index.ts:36

Parameters

typedData
TypedDataType<Record<string, unknown>>
crypto
keccak256
(data) => Uint8Array

Returns

HashType

validate()

validate(typedData): void
Defined in: src/primitives/TypedData/index.ts:54

Parameters

typedData
TypedDataType<Record<string, unknown>>

Returns

void