A TypedDataEncode prepares and encodes EIP-712 payloads for signed typed data.

This is useful for those that wish to compute various components of a typed data hash, primary types, or sub-components, but generally the higher level Signer.signTypedData is more useful.

Constructors

new TypedDataEncoder()

new TypedDataEncoder(types): TypedDataEncoder

Create a new TypedDataEncoder for types.

This performs all necessary checking that types are valid and do not violate the EIP-712 structural constraints as well as computes the primaryType.

Parameters

ParameterType
typesRecord<string, TypedDataField[]>

Returns

TypedDataEncoder

Source

hash/typed-data.ts:259

Properties

PropertyModifierTypeDescription
primaryTypereadonlystringThe primary type for the structured types.

This is derived automatically from the types, since no recursion is possible, once the DAG for
the types is consturcted internally, the primary type must be the only remaining type with no parent nodes.

Accessors

types

get types(): Record<string, TypedDataField[]>

The types.

Returns

Record<string, TypedDataField[]>

Source

hash/typed-data.ts:244

Methods

encode()

encode(value): string

Return the fulled encoded value for the types.

Parameters

ParameterTypeDescription
valueRecord<string, any>The value to encode.

Returns

string

The encoded value.

Source

hash/typed-data.ts:465


encodeData()

encodeData(type, value): string

Return the encoded value for the type.

Parameters

ParameterTypeDescription
typestringThe type to encode the value for.
valueanyThe value to encode.

Returns

string

The encoded value.

Source

hash/typed-data.ts:444


encodeType()

encodeType(name): string

Return the full type for name.

Parameters

ParameterTypeDescription
namestringThe name to get the full type for.

Returns

string

The full type.

Source

hash/typed-data.ts:431


getEncoder()

getEncoder(type): (value) => string

Returnthe encoder for the specific type.

Parameters

ParameterTypeDescription
typestringThe type to get the encoder for.

Returns

Function

The encoder for the type.

Parameters
ParameterType
valueany
Returns

string

Source

hash/typed-data.ts:365


hash()

hash(value): string

Return the hash of the fully encoded value for the types.

Parameters

ParameterTypeDescription
valueRecord<string, any>The value to hash.

Returns

string

The hash of the value.

Source

hash/typed-data.ts:475


hashStruct()

hashStruct(name, value): string

Returns the hash of value for the type of name.

Parameters

ParameterTypeDescription
namestringThe name of the type.
valueRecord<string, any>The value to hash.

Returns

string

The hash of the value.

Source

hash/typed-data.ts:455


visit()

visit(value, callback): any

Call calback for each value in value, passing the type and component within value.

This is useful for replacing addresses or other transformation that may be desired on each component, based on its type.

Parameters

ParameterTypeDescription
valueRecord<string, any>The value to visit.
callback(type, data) => anyThe callback to call for each value.

Returns

any

The result of the callback.

Source

hash/typed-data.ts:528


encode()

static encode(
   domain, 
   types, 
   value): string

Return the fully encoded EIP-712 value for types with domain.

Parameters

ParameterTypeDescription
domainTypedDataDomainThe domain to use.
typesRecord<string, TypedDataField[]>The types to encode.
valueRecord<string, any>The value to encode.

Returns

string

The encoded value.

Source

hash/typed-data.ts:599


from()

static from(types): TypedDataEncoder

Create a new TypedDataEncoder for types.

Parameters

ParameterTypeDescription
typesRecord<string, TypedDataField[]>The types to encode.

Returns

TypedDataEncoder

The encoder for the types.

Throws

If the types are invalid.

Source

hash/typed-data.ts:539


getPayload()

static getPayload(
   domain, 
   types, 
   value): any

Returns the JSON-encoded payload expected by nodes which implement the JSON-RPC EIP-712 method.

Parameters

ParameterTypeDescription
domainTypedDataDomainThe domain to use.
typesRecord<string, TypedDataField[]>The types to encode.
valueRecord<string, any>The value to encode.

Returns

any

The JSON-encoded payload.

Source

hash/typed-data.ts:633


getPrimaryType()

static getPrimaryType(types): string

Return the primary type for types.

Parameters

ParameterTypeDescription
typesRecord<string, TypedDataField[]>The types to get the primary type for.

Returns

string

The primary type.

Throws

If the types are invalid.

Source

hash/typed-data.ts:550


hash()

static hash(
   domain, 
   types, 
   value): string

Return the hash of the fully encoded EIP-712 value for types with domain.

Parameters

ParameterTypeDescription
domainTypedDataDomainThe domain to use.
typesRecord<string, TypedDataField[]>The types to hash.
valueRecord<string, any>The value to hash.

Returns

string

The hash of the value.

Source

hash/typed-data.ts:616


hashDomain()

static hashDomain(domain): string

Return the domain hash for domain.

Parameters

ParameterTypeDescription
domainTypedDataDomainThe domain to hash.

Returns

string

The hash of the domain.

Throws

If the domain is invalid.

Source

hash/typed-data.ts:573


hashStruct()

static hashStruct(
   name, 
   types, 
   value): string

Return the hashed struct for value using types and name.

Parameters

ParameterTypeDescription
namestringThe name of the type.
typesRecord<string, TypedDataField[]>The types to hash.
valueRecord<string, any>The value to hash.

Returns

string

The hash of the value.

Source

hash/typed-data.ts:562