UNPKG

@biconomy/abstractjs

Version:

SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.

40 lines 1.58 kB
import { concatHex, encodeAbiParameters } from "viem"; import { DEFAULT_PREFIX } from "../../clients/decorators/mee/index.js"; import { createMerkleTree } from "../../modules/index.js"; export 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 = 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 = concatHex([ DEFAULT_PREFIX, 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; }; export default sponsorSupertransaction; //# sourceMappingURL=sponsorSupertransaction.js.map