@alchemy/aa-core
Version:
viem based SDK that enables interactions with ERC-4337 Smart Accounts. ABIs are based off the definitions generated in @account-abstraction/contracts
62 lines • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildUserOperationFromTxs = void 0;
const viem_1 = require("viem");
const isSmartAccountClient_js_1 = require("../../client/isSmartAccountClient.js");
const account_js_1 = require("../../errors/account.js");
const client_js_1 = require("../../errors/client.js");
const transaction_js_1 = require("../../errors/transaction.js");
const index_js_1 = require("../../utils/index.js");
const buildUserOperation_js_1 = require("./buildUserOperation.js");
async function buildUserOperationFromTxs(client, args) {
const { account = client.account, requests, overrides, context } = args;
if (!account) {
throw new account_js_1.AccountNotFoundError();
}
if (!(0, isSmartAccountClient_js_1.isBaseSmartAccountClient)(client)) {
throw new client_js_1.IncompatibleClientError("BaseSmartAccountClient", "buildUserOperationFromTxs", client);
}
const batch = requests.map((request) => {
if (!request.to) {
throw new transaction_js_1.TransactionMissingToParamError();
}
return {
target: request.to,
data: request.data ?? "0x",
value: request.value ? (0, viem_1.fromHex)(request.value, "bigint") : 0n,
};
});
const mfpgOverridesInTx = () => requests
.filter((x) => x.maxFeePerGas != null)
.map((x) => (0, viem_1.fromHex)(x.maxFeePerGas, "bigint"));
const maxFeePerGas = overrides?.maxFeePerGas != null
? overrides?.maxFeePerGas
: mfpgOverridesInTx().length > 0
? (0, index_js_1.bigIntMax)(...mfpgOverridesInTx())
: undefined;
const mpfpgOverridesInTx = () => requests
.filter((x) => x.maxPriorityFeePerGas != null)
.map((x) => (0, viem_1.fromHex)(x.maxPriorityFeePerGas, "bigint"));
const maxPriorityFeePerGas = overrides?.maxPriorityFeePerGas != null
? overrides?.maxPriorityFeePerGas
: mpfpgOverridesInTx().length > 0
? (0, index_js_1.bigIntMax)(...mpfpgOverridesInTx())
: undefined;
const _overrides = {
maxFeePerGas,
maxPriorityFeePerGas,
};
const uoStruct = await (0, buildUserOperation_js_1.buildUserOperation)(client, {
uo: batch,
account,
context,
overrides: _overrides,
});
return {
uoStruct,
batch,
overrides: _overrides,
};
}
exports.buildUserOperationFromTxs = buildUserOperationFromTxs;
//# sourceMappingURL=buildUserOperationFromTxs.js.map