Skip to content

buildUserOperationFromTxs

Performs buildUserOperationFromTx in batch and builds into a single, yet to be signed UserOperation (UO) struct. The output user operation struct will be filled with all gas fields (and paymaster data if a paymaster is used) based on the transactions data (to, data, value, maxFeePerGas, maxPriorityFeePerGas) computed using the configured ClientMiddlewares on the SmartAccountClient.

Import

import { buildUserOperationFromTxs } from "@aa-sdk/core";

Usage

import type { RpcTransactionRequest } from "viem";
import { smartAccountClient } from "./smartAccountClient";
 
const requests: RpcTransactionRequest[] = [
{
from, // ignored
to,
data: encodeFunctionData({
  abi: ContractABI.abi,
  functionName: "func",
  args: [arg1, arg2, ...],
}),
},
{
from, // ignored
to,
data: encodeFunctionData({
  abi: ContractABI.abi,
  functionName: "func",
  args: [arg1, arg2, ...],
}),
},
];
const uoStruct = await smartAccountClient.buildUserOperationFromTxs({
requests,
});
 
// signUserOperation signs the above unsigned user operation struct built
// using the account connected to the smart account client
const request = await smartAccountClient.signUserOperation({ uoStruct });
 
// You can use the BundlerAction `sendRawUserOperation` (packages/core/src/actions/bundler/sendRawUserOperation.ts)
// to send the signed user operation request to the bundler, requesting the bundler to send the signed uo to the
// EntryPoint contract pointed at by the entryPoint address parameter
const entryPointAddress = client.account.getEntryPoint().address;
const uoHash = await smartAccountClient.sendRawUserOperation({
request,
entryPoint: entryPointAddress,
});

Parameters

client

Client<TTransport, TChain, TAccount> the smart account client to use to make RPC calls

args

BuildTransactionParameters an object containing the requests to build as well as, the account if not hoisted, the context, the overrides, and optionally a flag to enable signing of the UO via the underlying middleware

Returns

Promise<BuildUserOperationFromTransactionsResult<TEntryPointVersion>> a Promise containing the built user operation