Skip to content

signTransferWithAuthorization

signTransferWithAuthorization(account, domain, message): Promise<SignedAuthorization<TransferWithAuthorizationMessage>>

Defined in: src/tokens/eip3009.ts:192

Signs an EIP-3009 TransferWithAuthorization message.

The signing account MUST equal message.from — EIP-3009 rejects signatures from anyone else (the on-chain check is pure ecrecover against from).

Parameters

account

Account

domain

Eip3009Domain

message

TransferWithAuthorizationMessage

Returns

Promise<SignedAuthorization<TransferWithAuthorizationMessage>>

Example

import { privateKeyToAccount } from "viem/accounts";
import {
authorizationDeadlineFromNow,
generateAuthorizationNonce,
JPYC_EIP712_DOMAIN_HINT,
polygon,
signTransferWithAuthorization,
} from "kawasekit";
const account = privateKeyToAccount("0x...");
const signed = await signTransferWithAuthorization(account, {
...JPYC_EIP712_DOMAIN_HINT,
chainId: polygon.id,
verifyingContract: "0xE7C3D8C9a439feDe00D2600032D5dB0Be71C3c29",
}, {
from: account.address,
to: "0xBeef...",
value: 100n * 10n ** 18n,
validAfter: 0n,
validBefore: authorizationDeadlineFromNow(300),
nonce: generateAuthorizationNonce(),
});
// → submit (v, r, s) to token.transferWithAuthorization(...)