@biconomy/abstractjs
Version:
SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.
128 lines • 8.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMeeK1ModuleStubSignature = exports.toMeeK1Module = void 0;
const viem_1 = require("viem");
const experimental_1 = require("viem/experimental");
const smartSessions_1 = require("../smartSessions/index.js");
const toValidator_1 = require("../toValidator.js");
const MOCK_SUPERTXN_HASH_AND_TIMESTAMPS = "0x9e1cce57126e9205fe085888ed6b5ca0033f168e26b8927adb1c6da566cf7c5100000000000000000000000000000000000000000000000000000000642622800000000000000000000000000000000000000000000000000000000064262668";
const toMeeK1Module = (parameters) => {
const { signatureType = "no-mee", superTxEntriesCount = 3 } = parameters;
if (!parameters.walletClient.account) {
throw new Error("Account should be defined in the wallet client provided to the module");
}
const walletClient7739 = parameters.walletClient.extend((0, experimental_1.erc7739Actions)());
const signMessageErc7739 = async (message, verifierDomain) => {
return await walletClient7739.signMessage({
account: parameters.walletClient.account,
message,
verifierDomain: verifierDomain
});
};
const signTypedDataErc7739 = async (typedData, verifierDomain) => {
const { domain, types, primaryType, message } = typedData;
(0, viem_1.validateTypedData)({ domain, types, primaryType, message });
return await walletClient7739.signTypedData({
account: parameters.walletClient.account,
domain: domain,
types: types,
primaryType: primaryType,
message: message,
verifierDomain: verifierDomain
});
};
return (0, toValidator_1.toValidator)({
initData: parameters.walletClient.account.address,
data: parameters.walletClient.account.address,
deInitData: "0x",
...parameters,
address: parameters.module,
module: parameters.module,
type: "validator",
signMessageErc7739,
signTypedDataErc7739,
getStubSignature: async () => (0, exports.getMeeK1ModuleStubSignature)(signatureType, superTxEntriesCount),
erc7739VersionSupported_: 1
});
};
exports.toMeeK1Module = toMeeK1Module;
const getMeeK1ModuleStubSignature = (signatureType, superTxEntriesCount) => {
const leafCount = superTxEntriesCount + 1;
const proofSize = Math.ceil(Math.log2(leafCount));
let prefix = "0x";
let mockModePayload = "0x";
if (signatureType === "no-mee") {
return smartSessions_1.DUMMY_SIGNATURE;
}
if (signatureType === "simple") {
prefix = "0x177eee00";
mockModePayload = (0, viem_1.concatHex)([
MOCK_SUPERTXN_HASH_AND_TIMESTAMPS,
"0x00000000000000000000000000000000000000000000000000000000000000a0",
"0x0000000000000000000000000000000000000000000000000000000000000100"
]);
}
if (signatureType === "permit") {
prefix = "0x177eee01";
mockModePayload = (0, viem_1.concatHex)([
"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000001d1499e622d69689cdf9004d05ec547d650ff211000000000000000000000000a0cb889707d426a7a386870a03bc70d1b0697598fe8244a8453f6a5a1623e38a7117cfcadf84d670fe741a32e447cd5f5671a68b0000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027d5730e3c64852e56f4f10c0c27a8d96651193fd13663c1dd652b5f18677458",
MOCK_SUPERTXN_HASH_AND_TIMESTAMPS,
"0x00000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000250e2ad6bd90d6121dc5166dc6968f23ba43497594de5c7ca655f58e96d31775d"
]);
}
if (signatureType === "on-chain") {
prefix = "0x177eee02";
mockModePayload = (0, viem_1.concatHex)([
"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000001d1499e622d69689cdf9004d05ec547d650ff211000000000000000000000000a0cb889707d426a7a386870a03bc70d1b0697598fe8244a8453f6a5a1623e38a7117cfcadf84d670fe741a32e447cd5f5671a68b000000000000000000000000000000000000000000000001158e460913d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
MOCK_SUPERTXN_HASH_AND_TIMESTAMPS,
"0x000000000000000000000000000000000000000000000000000000000000000568f7d0137aa459fc3d87c0405f9df08008c9b97b3da85ef4f663b0e4fc910b518146837426fd3167918049cae2bc9fdf90aabc1e9db16244b56a12463711c2d500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
]);
}
if (signatureType === "mm-dtk") {
prefix = "0x177eee03";
mockModePayload = (0, viem_1.concatHex)([
"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000001d1499e622d69689cdf9004d05ec547d650ff211000000000000000000000000a0cb889707d426a7a386870a03bc70d1b0697598fe8244a8453f6a5a1623e38a7117cfcadf84d670fe741a32e447cd5f5671a68b0000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027d5730e3c64852e56f4f10c0c27a8d96651193fd13663c1dd652b5f18677458",
MOCK_SUPERTXN_HASH_AND_TIMESTAMPS,
"0x00000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000000250e2ad6bd90d6121dc5166dc6968f23ba43497594de5c7ca655f58e96d31775d"
]);
}
if (signatureType === "safe-sa") {
prefix = "0x177eee04";
mockModePayload = (0, viem_1.concatHex)([
"0x0000000000000000000000000000000000000000000000000000000000000020",
"0x47e79534a245952e8b16893a336b85a3d9ea9fa8fa568c00004d05ec547d0001",
"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000180",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x00000000000000000000000000000000000000000000000000000000000001c0",
"0x0000000000000000000000000000000000000000000000000000000000000001",
"0x0000000000000000000000000000000000000000000000000000000000000001",
"0x0000000000000000000000000000000000000000000000000000000000000044",
"0x095ea7b3000000000000000000000000a0cb889707d426a7a386870a03bc70d1",
"0x0b6975980000000000000000000000000000000000000000000000003782dace",
"0x0000000000000000000000000000000000000000000000000000000000000041",
smartSessions_1.DUMMY_SIGNATURE
]);
}
const leaves = Array.from({ length: proofSize }, () => "0x3239aa7c79368121ae1a0e73b662a9fd8f0c7f6aa1a7dfdc2eebdbeb2f9b070c");
const proofPayload = (0, viem_1.concatHex)([
`0x${proofSize.toString(16).padStart(64, "0")}`,
...leaves
]);
return (0, viem_1.concatHex)([
prefix,
mockModePayload,
proofPayload,
"0x0000000000000000000000000000000000000000000000000000000000000041",
smartSessions_1.DUMMY_SIGNATURE
]);
};
exports.getMeeK1ModuleStubSignature = getMeeK1ModuleStubSignature;
//# sourceMappingURL=toMeeK1Module.js.map