signTypedData
Signs typed data from a smart account and calculates an Ethereum-specific signature in https://eips.ethereum.org/EIPS/eip-712: sign(keccak256("\x19\x01" ‖ domainSeparator ‖ hashStruct(message)))
Usage
example.ts
import { smartAccountClient } from "./smartAccountClient"
const signedData = await smartAccountClient.signTypedData({
domain: {
name: "Ether Mail",
version: "1",
chainId: 1,
verifyingContract: getAddress("0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"),
},
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" as const,
message: {
from: {
name: "Bob",
wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB",
},
to: {
name: "Alice",
wallet: "0xaAaAaAaaAaAaAaaAaAAAAAAAAaaaAaAaAaaAaaAa",
},
contents: "Hello Alice!",
},
})
Returns
- Type:
Hex
The signed data.
Parameters
domain
- Type:
TypedDataDomain
The typed data domain.
types
- Type:
TypedData
The type definitions for the typed data.
primaryType
- Type: Inferred
string
.
The primary type to extract from types
and use in value
.
message
- Type: Inferred from
types
&primaryType
.
The message to sign