# createMultiOwnerModularAccountClient | @account-kit/smart-contracts

> Creates a multi-owner modular account client with the provided parameters including account, transport, chain, and additional client configuration. This function uses a modular account and extends it with various plugin actions.

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

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

Creates a multi-owner modular account client with the provided parameters including account, transport, chain, and additional client configuration. This function uses a modular account and extends it with various plugin actions.

## Examples

```ts
import { createMultiOwnerModularAccountClient } from "@account-kit/smart-contracts";
import { LocalAccountSigner } from "@aa-sdk/core";
import { sepolia } from "viem/chains";
import { http } from "viem";
import { generatePrivateKey } from "viem/accounts";

const accountClient = await createMultiOwnerModularAccountClient({
  chain: sepolia,
  transport: http("RPC_URL"),
  signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
});
```

```ts
import { createMultiOwnerModularAccountClient } from "@account-kit/smart-contracts";
import { sepolia, alchemy } from "@account-kit/infra";
import { LocalAccountSigner } from "@aa-sdk/core";
import { generatePrivateKey } from "viem";

const alchemyAccountClient = await createMultiOwnerModularAccountClient({
  transport: alchemy({ apiKey: "your-api-key" }),
  chain: sepolia,
  signer: LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey()),
});
```

## Param

The parameters for creating the multi-owner modular account client

## Call Signature

```ts
function createMultiOwnerModularAccountClient<TSigner>(
  params,
): Promise<
  AlchemySmartAccountClient<
    undefined | Chain,
    MultiOwnerModularAccount<TSigner>,
    ExecutionActions<
      MultiOwnerModularAccount<TSigner>,
      undefined,
      keyof EntryPointRegistryBase<unknown>
    > &
      ManagementActions<
        MultiOwnerModularAccount<TSigner>,
        undefined,
        keyof EntryPointRegistryBase<unknown>
      > &
      ReadAndEncodeActions<MultiOwnerModularAccount<TSigner>> &
      object &
      object &
      PluginManagerActions<MultiOwnerModularAccount<TSigner>> &
      AccountLoupeActions<MultiOwnerModularAccount<TSigner>>
  >
>;
```

Defined in: [account-kit/smart-contracts/src/msca/client/client.ts:91](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/client/client.ts#L91)

### Type Parameters

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

  <tbody>
    <tr>
      <td>
        `TSigner` *extends* `SmartAccountSigner`\<`any`>
      </td>

      <td>
        `SmartAccountSigner`\<`any`>
      </td>
    </tr>

  </tbody>
</table>

### Parameters

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

  <tbody>
    <tr>
      <td>
        `params`
      </td>

      <td>
        `Omit`\<`CreateMultiOwnerModularAccountParams`\<[`HttpTransport`](https://viem.sh), `TSigner`>, `"transport"`> & `Omit`\<`AlchemySmartAccountClientConfig`\<[`Chain`](https://viem.sh), `LightAccount`\<`TSigner`>>, `"account"`> & `object`
      </td>
    </tr>

  </tbody>
</table>

### Returns

`Promise`\<`AlchemySmartAccountClient`\<`undefined` | [`Chain`](https://viem.sh), [`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>, `ExecutionActions`\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>, `undefined`, keyof `EntryPointRegistryBase`\<`unknown`>> & `ManagementActions`\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>, `undefined`, keyof `EntryPointRegistryBase`\<`unknown`>> & `ReadAndEncodeActions`\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>> & `object` & `object` & [`PluginManagerActions`](../type-aliases/PluginManagerActions)\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>> & [`AccountLoupeActions`](../type-aliases/AccountLoupeActions)\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>>>>

## Call Signature

```ts
function createMultiOwnerModularAccountClient<TTransport, TChain, TSigner>(
  args,
): Promise<
  SmartAccountClient<
    CustomTransport,
    Chain,
    MultiOwnerModularAccount<TSigner>,
    ExecutionActions<
      MultiOwnerModularAccount<TSigner>,
      undefined,
      keyof EntryPointRegistryBase<unknown>
    > &
      ManagementActions<
        MultiOwnerModularAccount<TSigner>,
        undefined,
        keyof EntryPointRegistryBase<unknown>
      > &
      ReadAndEncodeActions<MultiOwnerModularAccount<TSigner>> &
      object &
      object &
      PluginManagerActions<MultiOwnerModularAccount<TSigner>> &
      AccountLoupeActions<MultiOwnerModularAccount<TSigner>>
  >
>;
```

Defined in: [account-kit/smart-contracts/src/msca/client/client.ts:107](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/client/client.ts#L107)

### 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>
        `TSigner` *extends* `SmartAccountSigner`\<`any`>
      </td>

      <td>
        `SmartAccountSigner`\<`any`>
      </td>
    </tr>

  </tbody>
</table>

### Parameters

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

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

      <td>
        `CreateMultiOwnerModularAccountClientParams`\<`TTransport`, `TChain`, `TSigner`> & `NotType`\<`TTransport`, `AlchemyTransport`>
      </td>
    </tr>

  </tbody>
</table>

### Returns

`Promise`\<`SmartAccountClient`\<[`CustomTransport`](https://viem.sh), [`Chain`](https://viem.sh), [`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>, `ExecutionActions`\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>, `undefined`, keyof `EntryPointRegistryBase`\<`unknown`>> & `ManagementActions`\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>, `undefined`, keyof `EntryPointRegistryBase`\<`unknown`>> & `ReadAndEncodeActions`\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>> & `object` & `object` & [`PluginManagerActions`](../type-aliases/PluginManagerActions)\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>> & [`AccountLoupeActions`](../type-aliases/AccountLoupeActions)\<[`MultiOwnerModularAccount`](../type-aliases/MultiOwnerModularAccount)\<`TSigner`>>>>