UNPKG

aa-schnorr-multisig-sdk

Version:

Account Abstraction Schnorr Multi-Signatures SDK

58 lines (57 loc) 2.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMultiSigAccountSigner = exports.MultiSigAccountSigner = void 0; const aa_core_1 = require("@alchemy/aa-core"); const aa_ethers_1 = require("@alchemy/aa-ethers"); class MultiSigAccountSigner extends aa_ethers_1.AccountSigner { constructor(accountSigner) { super(accountSigner.provider); } async sendMultiSigTransaction(tx) { const _provider = this.provider.accountProvider; const _summedSignature = tx.getSummedSigData(); const _opRequest = tx.userOpRequest; _opRequest.signature = _summedSignature; const txHash = await _provider.rpcClient.sendUserOperation(_opRequest, _provider.getEntryPointAddress()); const txUserOp = await _provider.waitForUserOperationTransaction(txHash); return txUserOp; } async sendMultiSigUserOp(userOp) { const _provider = this.provider.accountProvider; const _summedSignature = userOp.getSummedSigData(); const _opRequest = userOp.userOpRequest; _opRequest.signature = _summedSignature; const txHash = await _provider.rpcClient.sendUserOperation(_opRequest, _provider.getEntryPointAddress()); const txUserOp = await _provider.waitForUserOperationTransaction(txHash); return txUserOp; } async buildUserOp(userOp) { const _provider = this.provider.accountProvider; const uoStruct = await _provider.buildUserOperation(userOp); const request = (0, aa_core_1.deepHexlify)(uoStruct); const opHash = (0, aa_core_1.getUserOperationHash)(request, _provider.getEntryPointAddress(), BigInt(await this.getChainId())); return { request, opHash }; } async buildUserOpWithGasEstimator(userOp, gasEstimator) { // eslint-disable-next-line @typescript-eslint/require-await this.withGasEstimator(async (userOperation) => { var _a, _b, _c; return { ...userOperation, callGasLimit: (_a = gasEstimator.callGasLimit) !== null && _a !== void 0 ? _a : 2000000, preVerificationGas: (_b = gasEstimator.preVerificationGas) !== null && _b !== void 0 ? _b : 2000000, verificationGasLimit: (_c = gasEstimator.verificationGasLimit) !== null && _c !== void 0 ? _c : 2000000, }; }); const _provider = this.provider.accountProvider; const uoStruct = await _provider.buildUserOperation(userOp); const request = (0, aa_core_1.deepHexlify)(uoStruct); const opHash = (0, aa_core_1.getUserOperationHash)(request, _provider.getEntryPointAddress(), BigInt(await this.getChainId())); return { request, opHash }; } } exports.MultiSigAccountSigner = MultiSigAccountSigner; function createMultiSigAccountSigner(accountSigner) { return new MultiSigAccountSigner(accountSigner); } exports.createMultiSigAccountSigner = createMultiSigAccountSigner;