aa-schnorr-multisig-sdk
Version:
Account Abstraction Schnorr Multi-Signatures SDK
58 lines (57 loc) • 2.99 kB
JavaScript
;
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;