@biconomy/abstractjs
Version:
SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.
44 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sponsorSupertransaction = void 0;
const viem_1 = require("viem");
const mee_1 = require("../../clients/decorators/mee/index.js");
const modules_1 = require("../../modules/index.js");
const sponsorSupertransaction = async (mcNexus, params) => {
const { chainId, quote } = params;
const { signer } = mcNexus.deploymentOn(chainId, true);
const leafHashes = quote.userOps.map((userOp) => {
return userOp.shortEncoding ? userOp.userOpHash : userOp.meeUserOpHash;
});
const merkleTree = (0, modules_1.createMerkleTree)(leafHashes);
if (merkleTree.root !== quote.hash) {
throw new Error("Invalid merkle tree rebuilt from the quote. Cant approve sponsorship.");
}
const rawSignature = await signer.signMessage({
message: {
raw: quote.hash
}
});
const proof = merkleTree.getProof(0);
const sponsorshipSignedQuote = quote;
sponsorshipSignedQuote.userOps[0].userOp.signature = (0, viem_1.concatHex)([
mee_1.DEFAULT_PREFIX,
(0, viem_1.encodeAbiParameters)([
{ type: "bytes32" },
{ type: "uint48" },
{ type: "uint48" },
{ type: "bytes32[]" },
{ type: "bytes" }
], [
sponsorshipSignedQuote.hash,
Number(sponsorshipSignedQuote.userOps[0].lowerBoundTimestamp),
Number(sponsorshipSignedQuote.userOps[0].upperBoundTimestamp),
proof,
rawSignature
])
]);
return sponsorshipSignedQuote;
};
exports.sponsorSupertransaction = sponsorSupertransaction;
exports.default = exports.sponsorSupertransaction;
//# sourceMappingURL=sponsorSupertransaction.js.map