permissionless
Version:
A utility library for working with ERC-4337
34 lines (31 loc) • 771 B
text/typescript
import {
type Address,
type LocalAccount,
type SignMessageReturnType,
type SignableMessage,
hashMessage
} from "viem"
export async function signMessage({
message,
admin,
accountAddress,
chainId
}: {
chainId: number
message: SignableMessage
admin: LocalAccount
accountAddress: Address
}): Promise<SignMessageReturnType> {
const hashedMessage = hashMessage(message)
return admin.signTypedData({
domain: {
name: "Account",
version: "1",
chainId,
verifyingContract: accountAddress
},
primaryType: "AccountMessage",
types: { AccountMessage: [{ name: "message", type: "bytes" }] },
message: { message: hashedMessage }
})
}