# LocalAccountSigner | @aa-sdk/core

> Represents a local account signer and provides methods to sign messages and transactions, as well as static methods to create the signer from mnemonic or private key.

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

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

Defined in: [aa-sdk/core/src/signer/local-account.ts:22](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L22)

Represents a local account signer and provides methods to sign messages and transactions, as well as static methods to create the signer from mnemonic or private key.

## Type Parameters

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

  <tbody>
    <tr>
      <td>
        `T` *extends*
        | [`HDAccount`](https://viem.sh)
        | [`PrivateKeyAccount`](https://viem.sh)
        | [`LocalAccount`](https://viem.sh)
      </td>
    </tr>
  </tbody>
</table>

## Implements

- [`SmartAccountSigner`](../interfaces/SmartAccountSigner)\<`T`>

## Constructors

### Constructor

```ts
new LocalAccountSigner<T>(inner): LocalAccountSigner<T>;
```

Defined in: [aa-sdk/core/src/signer/local-account.ts:44](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L44)

A function to initialize an object with an inner parameter and derive a signerType from it.

#### Example

```ts
import { LocalAccountSigner } from "@aa-sdk/core";
import { privateKeyToAccount, generatePrivateKey } from "viem";

const signer = new LocalAccountSigner(
  privateKeyToAccount(generatePrivateKey()),
);
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `inner`
      </td>

      <td>
        `T`
      </td>

      <td>
        The inner parameter containing the necessary data
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`LocalAccountSigner`\<`T`>

## Properties

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

  <tbody>
    <tr>
      <td>
        <a id="inner" /> `inner`
      </td>

      <td>
        `T`
      </td>

      <td>
        ‐
      </td>
    </tr>

    <tr>
      <td>
        <a id="signertype" /> `signerType`
      </td>

      <td>
        `string`
      </td>

      <td>
        ‐
      </td>
    </tr>

    <tr>
      <td>
        <a id="signmessage" /> `signMessage`
      </td>

      <td>
        (`message`) => `Promise`\<`` `0x${string}` ``>
      </td>

      <td>
        Signs the provided message using the inner signMessage function.

        **Example**

        ```ts
        import { LocalAccountSigner } from "@aa-sdk/core";
        import { generatePrivateKey } from "viem";

        const signer = LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
        const signature = await signer.signMessage("Hello, world!");
        ```
      </td>
    </tr>

  </tbody>
</table>

## Methods

### getAddress()

```ts
readonly getAddress(): Promise<`0x${string}`>;
```

Defined in: [aa-sdk/core/src/signer/local-account.ts:140](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L140)

Returns the address of the inner object in a specific hexadecimal format.

#### Example

```ts
import { LocalAccountSigner } from "@aa-sdk/core";
import { generatePrivateKey } from "viem";

const signer =
  LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
const address = await signer.getAddress();
```

#### Returns

`Promise`\<`` `0x${string}` ``>

A promise that resolves to the address in the format `0x{string}`

#### Implementation of

[`SmartAccountSigner`](../interfaces/SmartAccountSigner).[`getAddress`](../interfaces/SmartAccountSigner#getaddress)

---

### signAuthorization()

```ts
signAuthorization(this, unsignedAuthorization): Promise<SignedAuthorization<number>>;
```

Defined in: [aa-sdk/core/src/signer/local-account.ts:119](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L119)

Signs an unsigned authorization using the provided private key account.

#### Example

```ts twoslash
import { LocalAccountSigner } from "@aa-sdk/core";
import { generatePrivateKey } from "viem/accounts";

const signer =
  LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
const signedAuthorization = await signer.signAuthorization({
  contractAddress: "0x1234123412341234123412341234123412341234",
  chainId: 1,
  nonce: 3,
});
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `this`
      </td>

      <td>
        `LocalAccountSigner`\<\{ }>
      </td>

      <td>
        ‐
      </td>
    </tr>

    <tr>
      <td>
        `unsignedAuthorization`
      </td>

      <td>
        [`AuthorizationRequest`](../type-aliases/AuthorizationRequest)\<`number`>
      </td>

      <td>
        The unsigned authorization to be signed.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`SignedAuthorization`](https://viem.sh)\<`number`>>

A promise that resolves to the signed authorization.

#### Implementation of

[`SmartAccountSigner`](../interfaces/SmartAccountSigner).[`signAuthorization`](../interfaces/SmartAccountSigner#signauthorization)

---

### signTypedData()

```ts
readonly signTypedData<TTypedData, TPrimaryType>(params): Promise<`0x${string}`>;
```

Defined in: [aa-sdk/core/src/signer/local-account.ts:90](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L90)

Signs typed data using the given parameters.

#### Example

```ts
import { LocalAccountSigner } from "@aa-sdk/core";
import { generatePrivateKey } from "viem";

const signer =
  LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
const signature = await signer.signTypedData({
  domain: {},
  types: {},
  primaryType: "",
  message: {},
});
```

#### Type Parameters

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

  <tbody>
    <tr>
      <td>
        `TTypedData` *extends*
        | \{
        \[`key`: `string`]: readonly [`TypedDataParameter`](https://abitype.dev)\[];
        \[`key`: `` `string[${string}]` ``]: `undefined`;
        \[`key`: `` `function[${string}]` ``]: `undefined`;
        \[`key`: `` `address[${string}]` ``]: `undefined`;
        \[`key`: `` `bool[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes1[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes2[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes3[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes4[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes5[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes6[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes7[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes8[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes9[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes10[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes11[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes12[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes13[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes14[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes15[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes16[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes17[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes18[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes19[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes20[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes21[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes22[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes23[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes24[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes25[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes26[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes27[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes28[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes29[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes30[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes31[${string}]` ``]: `undefined`;
        \[`key`: `` `bytes32[${string}]` ``]: `undefined`;
        \[`key`: `` `int[${string}]` ``]: `undefined`;
        \[`key`: `` `int8[${string}]` ``]: `undefined`;
        \[`key`: `` `int16[${string}]` ``]: `undefined`;
        \[`key`: `` `int24[${string}]` ``]: `undefined`;
        \[`key`: `` `int32[${string}]` ``]: `undefined`;
        \[`key`: `` `int40[${string}]` ``]: `undefined`;
        \[`key`: `` `int48[${string}]` ``]: `undefined`;
        \[`key`: `` `int56[${string}]` ``]: `undefined`;
        \[`key`: `` `int64[${string}]` ``]: `undefined`;
        \[`key`: `` `int72[${string}]` ``]: `undefined`;
        \[`key`: `` `int80[${string}]` ``]: `undefined`;
        \[`key`: `` `int88[${string}]` ``]: `undefined`;
        \[`key`: `` `int96[${string}]` ``]: `undefined`;
        \[`key`: `` `int104[${string}]` ``]: `undefined`;
        \[`key`: `` `int112[${string}]` ``]: `undefined`;
        \[`key`: `` `int120[${string}]` ``]: `undefined`;
        \[`key`: `` `int128[${string}]` ``]: `undefined`;
        \[`key`: `` `int136[${string}]` ``]: `undefined`;
        \[`key`: `` `int144[${string}]` ``]: `undefined`;
        \[`key`: `` `int152[${string}]` ``]: `undefined`;
        \[`key`: `` `int160[${string}]` ``]: `undefined`;
        \[`key`: `` `int168[${string}]` ``]: `undefined`;
        \[`key`: `` `int176[${string}]` ``]: `undefined`;
        \[`key`: `` `int184[${string}]` ``]: `undefined`;
        \[`key`: `` `int192[${string}]` ``]: `undefined`;
        \[`key`: `` `int200[${string}]` ``]: `undefined`;
        \[`key`: `` `int208[${string}]` ``]: `undefined`;
        \[`key`: `` `int216[${string}]` ``]: `undefined`;
        \[`key`: `` `int224[${string}]` ``]: `undefined`;
        \[`key`: `` `int232[${string}]` ``]: `undefined`;
        \[`key`: `` `int240[${string}]` ``]: `undefined`;
        \[`key`: `` `int248[${string}]` ``]: `undefined`;
        \[`key`: `` `int256[${string}]` ``]: `undefined`;
        \[`key`: `` `uint[${string}]` ``]: `undefined`;
        \[`key`: `` `uint8[${string}]` ``]: `undefined`;
        \[`key`: `` `uint16[${string}]` ``]: `undefined`;
        \[`key`: `` `uint24[${string}]` ``]: `undefined`;
        \[`key`: `` `uint32[${string}]` ``]: `undefined`;
        \[`key`: `` `uint40[${string}]` ``]: `undefined`;
        \[`key`: `` `uint48[${string}]` ``]: `undefined`;
        \[`key`: `` `uint56[${string}]` ``]: `undefined`;
        \[`key`: `` `uint64[${string}]` ``]: `undefined`;
        \[`key`: `` `uint72[${string}]` ``]: `undefined`;
        \[`key`: `` `uint80[${string}]` ``]: `undefined`;
        \[`key`: `` `uint88[${string}]` ``]: `undefined`;
        \[`key`: `` `uint96[${string}]` ``]: `undefined`;
        \[`key`: `` `uint104[${string}]` ``]: `undefined`;
        \[`key`: `` `uint112[${string}]` ``]: `undefined`;
        \[`key`: `` `uint120[${string}]` ``]: `undefined`;
        \[`key`: `` `uint128[${string}]` ``]: `undefined`;
        \[`key`: `` `uint136[${string}]` ``]: `undefined`;
        \[`key`: `` `uint144[${string}]` ``]: `undefined`;
        \[`key`: `` `uint152[${string}]` ``]: `undefined`;
        \[`key`: `` `uint160[${string}]` ``]: `undefined`;
        \[`key`: `` `uint168[${string}]` ``]: `undefined`;
        \[`key`: `` `uint176[${string}]` ``]: `undefined`;
        \[`key`: `` `uint184[${string}]` ``]: `undefined`;
        \[`key`: `` `uint192[${string}]` ``]: `undefined`;
        \[`key`: `` `uint200[${string}]` ``]: `undefined`;
        \[`key`: `` `uint208[${string}]` ``]: `undefined`;
        \[`key`: `` `uint216[${string}]` ``]: `undefined`;
        \[`key`: `` `uint224[${string}]` ``]: `undefined`;
        \[`key`: `` `uint232[${string}]` ``]: `undefined`;
        \[`key`: `` `uint240[${string}]` ``]: `undefined`;
        \[`key`: `` `uint248[${string}]` ``]: `undefined`;
        \[`key`: `` `uint256[${string}]` ``]: `undefined`;
        `string?`: `undefined`;
        `address?`: `undefined`;
        `bool?`: `undefined`;
        `bytes?`: `undefined`;
        `bytes1?`: `undefined`;
        `bytes2?`: `undefined`;
        `bytes3?`: `undefined`;
        `bytes4?`: `undefined`;
        `bytes5?`: `undefined`;
        `bytes6?`: `undefined`;
        `bytes7?`: `undefined`;
        `bytes8?`: `undefined`;
        `bytes9?`: `undefined`;
        `bytes10?`: `undefined`;
        `bytes11?`: `undefined`;
        `bytes12?`: `undefined`;
        `bytes13?`: `undefined`;
        `bytes14?`: `undefined`;
        `bytes15?`: `undefined`;
        `bytes16?`: `undefined`;
        `bytes17?`: `undefined`;
        `bytes18?`: `undefined`;
        `bytes19?`: `undefined`;
        `bytes20?`: `undefined`;
        `bytes21?`: `undefined`;
        `bytes22?`: `undefined`;
        `bytes23?`: `undefined`;
        `bytes24?`: `undefined`;
        `bytes25?`: `undefined`;
        `bytes26?`: `undefined`;
        `bytes27?`: `undefined`;
        `bytes28?`: `undefined`;
        `bytes29?`: `undefined`;
        `bytes30?`: `undefined`;
        `bytes31?`: `undefined`;
        `bytes32?`: `undefined`;
        `int8?`: `undefined`;
        `int16?`: `undefined`;
        `int24?`: `undefined`;
        `int32?`: `undefined`;
        `int40?`: `undefined`;
        `int48?`: `undefined`;
        `int56?`: `undefined`;
        `int64?`: `undefined`;
        `int72?`: `undefined`;
        `int80?`: `undefined`;
        `int88?`: `undefined`;
        `int96?`: `undefined`;
        `int104?`: `undefined`;
        `int112?`: `undefined`;
        `int120?`: `undefined`;
        `int128?`: `undefined`;
        `int136?`: `undefined`;
        `int144?`: `undefined`;
        `int152?`: `undefined`;
        `int160?`: `undefined`;
        `int168?`: `undefined`;
        `int176?`: `undefined`;
        `int184?`: `undefined`;
        `int192?`: `undefined`;
        `int200?`: `undefined`;
        `int208?`: `undefined`;
        `int216?`: `undefined`;
        `int224?`: `undefined`;
        `int232?`: `undefined`;
        `int240?`: `undefined`;
        `int248?`: `undefined`;
        `int256?`: `undefined`;
        `uint8?`: `undefined`;
        `uint16?`: `undefined`;
        `uint24?`: `undefined`;
        `uint32?`: `undefined`;
        `uint40?`: `undefined`;
        `uint48?`: `undefined`;
        `uint56?`: `undefined`;
        `uint64?`: `undefined`;
        `uint72?`: `undefined`;
        `uint80?`: `undefined`;
        `uint88?`: `undefined`;
        `uint96?`: `undefined`;
        `uint104?`: `undefined`;
        `uint112?`: `undefined`;
        `uint120?`: `undefined`;
        `uint128?`: `undefined`;
        `uint136?`: `undefined`;
        `uint144?`: `undefined`;
        `uint152?`: `undefined`;
        `uint160?`: `undefined`;
        `uint168?`: `undefined`;
        `uint176?`: `undefined`;
        `uint184?`: `undefined`;
        `uint192?`: `undefined`;
        `uint200?`: `undefined`;
        `uint208?`: `undefined`;
        `uint216?`: `undefined`;
        `uint224?`: `undefined`;
        `uint232?`: `undefined`;
        `uint240?`: `undefined`;
        `uint248?`: `undefined`;
        `uint256?`: `undefined`;
        }
        | `Record`\<`string`, `unknown`>
      </td>

      <td>
        ‐
      </td>
    </tr>

    <tr>
      <td>
        `TPrimaryType` *extends* `string` | `number` | `symbol`
      </td>

      <td>
        keyof `TTypedData`
      </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>
        `params`
      </td>

      <td>
        [`TypedDataDefinition`](https://viem.sh)\<`TTypedData`, `TPrimaryType`>
      </td>

      <td>
        The parameters defining the typed data and primary type
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`` `0x${string}` ``>

A promise that resolves to the signed data in hexadecimal format

#### Implementation of

[`SmartAccountSigner`](../interfaces/SmartAccountSigner).[`signTypedData`](../interfaces/SmartAccountSigner#signtypeddata)

---

### generatePrivateKeySigner()

```ts
static generatePrivateKeySigner(): LocalAccountSigner<{
}>;
```

Defined in: [aa-sdk/core/src/signer/local-account.ts:200](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L200)

Generates a new private key and creates a `LocalAccountSigner` for a `PrivateKeyAccount`.

#### Example

```ts
import { LocalAccountSigner } from "@aa-sdk/core";

const signer = LocalAccountSigner.generatePrivateKeySigner();
```

#### Returns

`LocalAccountSigner`\<\{
}>

A `LocalAccountSigner` instance initialized with the generated private key account

---

### mnemonicToAccountSigner()

```ts
static mnemonicToAccountSigner(key, opts?): LocalAccountSigner<{
}>;
```

Defined in: [aa-sdk/core/src/signer/local-account.ts:159](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L159)

Creates a LocalAccountSigner using the provided mnemonic key and optional HD options.

#### Example

```ts
import { LocalAccountSigner } from "@aa-sdk/core";
import { generateMnemonic } from "viem";

const signer = LocalAccountSigner.mnemonicToAccountSigner(generateMnemonic());
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `key`
      </td>

      <td>
        `string`
      </td>

      <td>
        The mnemonic key to derive the account from.
      </td>
    </tr>

    <tr>
      <td>
        `opts?`
      </td>

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

      <td>
        Optional HD options for deriving the account.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`LocalAccountSigner`\<\{
}>

A LocalAccountSigner object for the derived account.

---

### privateKeyToAccountSigner()

```ts
static privateKeyToAccountSigner(key): LocalAccountSigner<{
}>;
```

Defined in: [aa-sdk/core/src/signer/local-account.ts:181](https://github.com/alchemyplatform/aa-sdk/blob/main/aa-sdk/core/src/signer/local-account.ts#L181)

Creates a `LocalAccountSigner` instance using the provided private key.

#### Example

```ts
import { LocalAccountSigner } from "@aa-sdk/core";
import { generatePrivateKey } from "viem";

const signer =
  LocalAccountSigner.privateKeyToAccountSigner(generatePrivateKey());
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `key`
      </td>

      <td>
        `` `0x${string}` ``
      </td>

      <td>
        The private key in hexadecimal format
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`LocalAccountSigner`\<\{
}>

An instance of `LocalAccountSigner` initialized with the provided private key