permissionless
Version:
A utility library for working with ERC-4337
48 lines • 1.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.signTypedData = signTypedData;
const viem_1 = require("viem");
const isWebAuthnAccount_js_1 = require("./isWebAuthnAccount.js");
const signMessage_js_1 = require("./signMessage.js");
const wrapMessageHash_js_1 = require("./wrapMessageHash.js");
async function signTypedData(parameters) {
const { owner, accountAddress, kernelVersion: accountVersion, chainId, ...typedData } = parameters;
if ((accountVersion === "0.2.1" || accountVersion === "0.2.2") &&
!(0, isWebAuthnAccount_js_1.isWebAuthnAccount)(owner)) {
return owner.signTypedData({
...typedData
});
}
const { message, primaryType, types: _types, domain } = typedData;
const types = {
EIP712Domain: (0, viem_1.getTypesForEIP712Domain)({
domain: domain
}),
..._types
};
(0, viem_1.validateTypedData)({
domain,
message,
primaryType,
types
});
const typedHash = (0, viem_1.hashTypedData)({ message, primaryType, types, domain });
const wrappedMessageHash = (0, wrapMessageHash_js_1.wrapMessageHash)(typedHash, {
kernelVersion: accountVersion,
accountAddress,
chainId: chainId
});
if ((0, isWebAuthnAccount_js_1.isWebAuthnAccount)(owner)) {
return (0, signMessage_js_1.signMessage)({
message: { raw: wrappedMessageHash },
owner,
accountAddress,
kernelVersion: accountVersion,
chainId
});
}
return owner.signMessage({
message: { raw: wrappedMessageHash }
});
}
//# sourceMappingURL=signTypedData.js.map