UNPKG

aa-schnorr-multisig-sdk

Version:

Account Abstraction Schnorr Multi-Signatures SDK

69 lines (68 loc) 3.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMultiSigAccountAbstraction = exports.MultiSigAccountAbstraction = void 0; const aa_core_1 = require("@alchemy/aa-core"); const ethers_1 = require("ethers"); const viem_1 = require("viem"); const abi_1 = require("../generated/abi"); const schema_1 = require("./schema"); class MultiSigAccountAbstraction extends aa_core_1.BaseSmartContractAccount { constructor(params) { var _a, _b, _c, _d, _e; (0, schema_1.MultiSigSmartAccountParamsSchema)().parse(params); super(params); this.owner = params.owner; this.combinedAddress = (_b = (_a = params.combinedAddress) === null || _a === void 0 ? void 0 : _a.map((key) => key)) !== null && _b !== void 0 ? _b : []; this.salt = (_c = params.salt) !== null && _c !== void 0 ? _c : ethers_1.utils.formatBytes32String("salt"); this.factoryAddress = ((_d = params.factoryAddress) !== null && _d !== void 0 ? _d : "0x"); this.entryPointAddress = ((_e = params.entryPointAddress) !== null && _e !== void 0 ? _e : (0, aa_core_1.getDefaultEntryPointAddress)(params.chain)); } getDummySignature() { return "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c"; } // eslint-disable-next-line @typescript-eslint/require-await async encodeExecute(target, value, data) { return (0, viem_1.encodeFunctionData)({ abi: abi_1.MultiSigSmartAccount_abi, functionName: "execute", args: [target, value, data], }); } // eslint-disable-next-line @typescript-eslint/require-await async encodeBatchExecute(_txs) { const [targets, datas] = _txs.reduce((accum, curr) => { accum[0].push(curr.target); accum[1].push(curr.data); return accum; }, [[], []]); return (0, viem_1.encodeFunctionData)({ abi: abi_1.MultiSigSmartAccount_abi, functionName: "executeBatch", args: [targets, datas], }); } signMessage(msg) { let _encodedMsg = msg; if (typeof msg === "string" && msg.startsWith("0x")) _encodedMsg = (0, viem_1.hexToBytes)(msg); else if (typeof msg === "string") _encodedMsg = new TextEncoder().encode(msg); return this.owner.signMessage(_encodedMsg); } // eslint-disable-next-line @typescript-eslint/require-await async getAccountInitCode() { return (0, viem_1.concatHex)([ this.factoryAddress, (0, viem_1.encodeFunctionData)({ abi: abi_1.MultiSigSmartAccountFactory_abi, functionName: "createAccount", args: [this.combinedAddress, this.salt], }), ]); } } exports.MultiSigAccountAbstraction = MultiSigAccountAbstraction; function createMultiSigAccountAbstraction(params) { return new MultiSigAccountAbstraction(params); } exports.createMultiSigAccountAbstraction = createMultiSigAccountAbstraction;