# createSmartAccountClientFromExisting | @aa-sdk/core

> Creates a smart account client using an existing client and specific configuration. This function can be used to reuse a pre-existing BundlerClient while customizing other aspects of the smart account.

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

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

```ts
function createSmartAccountClientFromExisting<
  TTransport,
  TChain,
  TAccount,
  TClient,
  TActions,
  TRpcSchema,
  TContext,
>(
  config,
): SmartAccountClient<
  CustomTransport,
  TChain,
  TAccount,
  TActions,
  TRpcSchema,
  TContext
>;
```

Defined in: [aa-sdk/core/src/client/smartAccountClient.ts:314](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/client/smartAccountClient.ts#L314)

## 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*
        | `undefined`
        | [`SmartContractAccount`](../type-aliases/SmartContractAccount)
      </td>

      <td>
        | `undefined`
        | [`SmartContractAccount`](../type-aliases/SmartContractAccount)
      </td>
    </tr>

    <tr>
      <td>
        `TClient` *extends* [`BundlerClient`](../type-aliases/BundlerClient)\<`TTransport`>
      </td>

      <td>
        [`BundlerClient`](../type-aliases/BundlerClient)\<`TTransport`>
      </td>
    </tr>

    <tr>
      <td>
        `TActions` *extends* [`SmartAccountClientActions`](../type-aliases/SmartAccountClientActions)\<`TChain`, `TAccount`, `TContext`>
      </td>

      <td>
        [`SmartAccountClientActions`](../type-aliases/SmartAccountClientActions)\<`TChain`, `TAccount`,
        | `undefined`
        | [`UserOperationContext`](../type-aliases/UserOperationContext)>
      </td>
    </tr>

    <tr>
      <td>
        `TRpcSchema` *extends* \[\{
        `Method`: `"eth_sendUserOperation"`;
        `Parameters`: \[[`UserOperationRequest`](../type-aliases/UserOperationRequest), `` `0x${string}` ``];
        `ReturnType`: `` `0x${string}` ``;
        }, \{
        `Method`: `"eth_estimateUserOperationGas"`;
        `Parameters`: \[[`UserOperationRequest`](../type-aliases/UserOperationRequest), `` `0x${string}` ``, [`RpcStateOverride`](https://viem.sh)?];
        `ReturnType`: [`UserOperationEstimateGasResponse`](../interfaces/UserOperationEstimateGasResponse);
        }, \{
        `Method`: `"eth_getUserOperationReceipt"`;
        `Parameters`: \[`` `0x${string}` ``, (`"latest"` | `"pending"`)?];
        `ReturnType`: `null` | [`UserOperationReceipt`](../interfaces/UserOperationReceipt);
        }, \{
        `Method`: `"eth_getUserOperationByHash"`;
        `Parameters`: \[`` `0x${string}` ``];
        `ReturnType`:   | `null`
        | [`UserOperationResponse`](../interfaces/UserOperationResponse)\<`EntryPointVersion`>;
        }]
      </td>

      <td>
        \[\{
        `Method`: `"eth_sendUserOperation"`;
        `Parameters`: \[[`UserOperationRequest`](../type-aliases/UserOperationRequest), `` `0x${string}` ``];
        `ReturnType`: `` `0x${string}` ``;
        }, \{
        `Method`: `"eth_estimateUserOperationGas"`;
        `Parameters`: \[[`UserOperationRequest`](../type-aliases/UserOperationRequest), `` `0x${string}` ``, [`RpcStateOverride`](https://viem.sh)?];
        `ReturnType`: [`UserOperationEstimateGasResponse`](../interfaces/UserOperationEstimateGasResponse);
        }, \{
        `Method`: `"eth_getUserOperationReceipt"`;
        `Parameters`: \[`` `0x${string}` ``, (`"latest"` | `"pending"`)?];
        `ReturnType`: `null` | [`UserOperationReceipt`](../interfaces/UserOperationReceipt);
        }, \{
        `Method`: `"eth_getUserOperationByHash"`;
        `Parameters`: \[`` `0x${string}` ``];
        `ReturnType`:   | `null`
        | [`UserOperationResponse`](../interfaces/UserOperationResponse)\<`EntryPointVersion`>;
        }]
      </td>
    </tr>

    <tr>
      <td>
        `TContext` *extends*
        | `undefined`
        | [`UserOperationContext`](../type-aliases/UserOperationContext)
      </td>

      <td>
        | `undefined`
        | [`UserOperationContext`](../type-aliases/UserOperationContext)
      </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>
        `config`
      </td>

      <td>
        `Omit`\<\{ `account?`: `TAccount`; `addBreadCrumb?`: \<`T`>(`crumb`) => `T`; `customMiddleware?`: [`ClientMiddlewareFn`](../type-aliases/ClientMiddlewareFn)\<`TContext`>; `dummyPaymasterAndData?`: [`ClientMiddlewareFn`](../type-aliases/ClientMiddlewareFn)\<`TContext`>; `feeEstimator?`: [`ClientMiddlewareFn`](../type-aliases/ClientMiddlewareFn)\<`TContext`>; `gasEstimator?`: [`ClientMiddlewareFn`](../type-aliases/ClientMiddlewareFn)\<`TContext`>; `opts?`: `Object`; `paymasterAndData?`: [`ClientMiddlewareFn`](../type-aliases/ClientMiddlewareFn)\<`TContext`>; `signUserOperation?`: [`ClientMiddlewareFn`](../type-aliases/ClientMiddlewareFn)\<`TContext`>; `userOperationSimulator?`: [`ClientMiddlewareFn`](../type-aliases/ClientMiddlewareFn)\<`TContext`>; }, `"chain"` | `"transport"`> & `object`
      </td>

      <td>
        the configuration object which includes the client
      </td>
    </tr>

  </tbody>
</table>

## Returns

[`SmartAccountClient`](../type-aliases/SmartAccountClient)\<[`CustomTransport`](https://viem.sh), `TChain`, `TAccount`, `TActions`, `TRpcSchema`, `TContext`>

A smart account client created from the existing BundlerClient