# buildUserOperationFromTxs | @aa-sdk/core

> Overview of the buildUserOperationFromTxs function from @aa-sdk/core

> For the complete documentation index, see [llms.txt](/docs/llms.txt).

{/* This file is auto-generated by TypeDoc. Do not edit manually. */}

```ts
function buildUserOperationFromTxs<
  TTransport,
  TChain,
  TAccount,
  TEntryPointVersion,
  TContext,
>(
  client_,
  args,
): Promise<BuildUserOperationFromTransactionsResult<TEntryPointVersion>>;
```

Defined in: [aa-sdk/core/src/actions/smartAccount/buildUserOperationFromTxs.ts:74](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/actions/smartAccount/buildUserOperationFromTxs.ts#L74)

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.

## Example

```ts
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,
});
```

## Type Parameters

<table>
  <thead>
    <tr>
      <th align="left">Type Parameter</th>
      <th align="left">Default type</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `TTransport` *extends* [`Transport`](https://viem.sh)
      </td>

      <td>
        [`Transport`](https://viem.sh)
      </td>
    </tr>

    <tr>
      <td>
        `TChain` *extends* `undefined` | [`Chain`](https://viem.sh)
      </td>

      <td>
        `undefined` | [`Chain`](https://viem.sh)
      </td>
    </tr>

    <tr>
      <td>
        `TAccount` *extends* `any`
      </td>

      <td>
        `any`
      </td>
    </tr>

    <tr>
      <td>
        `TEntryPointVersion` *extends* `GetEntryPointFromAccount`\<`TAccount`>
      </td>

      <td>
        `GetEntryPointFromAccount`\<`TAccount`>
      </td>
    </tr>

    <tr>
      <td>
        `TContext` *extends* `any`
      </td>

      <td>
        `any`
      </td>
    </tr>

  </tbody>
</table>

## Parameters

<table>
  <thead>
    <tr>
      <th align="left">Parameter</th>
      <th align="left">Type</th>
      <th align="left">Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `client_`
      </td>

      <td>
        [`Client`](https://viem.sh)\<`TTransport`, `TChain`, `TAccount`>
      </td>

      <td>
        the smart account client to use to make RPC calls
      </td>
    </tr>

    <tr>
      <td>
        `args`
      </td>

      <td>
        `BuildTransactionParameters`\<`TAccount`, `TContext`, `TEntryPointVersion`>
      </td>

      <td>
        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
      </td>
    </tr>

  </tbody>
</table>

## Returns

`Promise`\<`BuildUserOperationFromTransactionsResult`\<`TEntryPointVersion`>>

a Promise containing the built user operation