# AlchemySignerWebClient | @account-kit/signer

> A lower level client used by the AlchemySigner used to communicate with Alchemy's signer service.

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

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

Defined in: [account-kit/signer/src/client/index.ts:60](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L60)

A lower level client used by the AlchemySigner used to communicate with
Alchemy's signer service.

## Extends

- [`BaseSignerClient`](BaseSignerClient)\<[`ExportWalletParams`](../type-aliases/ExportWalletParams), [`ExportWalletOutput`](../type-aliases/ExportWalletOutput)>

## Constructors

### Constructor

```ts
new AlchemySignerWebClient(params): AlchemySignerWebClient;
```

Defined in: [account-kit/signer/src/client/index.ts:95](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L95)

Initializes a new instance with the given parameters, setting up the connection, iframe configuration, and WebAuthn stamper.

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});
```

#### 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>
        `Object`
      </td>

      <td>
        the parameters required to initialize the client
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`AlchemySignerWebClient`

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`constructor`](BaseSignerClient#constructor)

## Properties

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

  <tbody>
    <tr>
      <td>
        <a id="eventemitter" /> `eventEmitter`
      </td>

      <td>
        `EventEmitter`\<[`AlchemySignerClientEvents`](../type-aliases/AlchemySignerClientEvents)>
      </td>
    </tr>

    <tr>
      <td>
        <a id="iframeconfig" /> `iframeConfig`
      </td>

      <td>
        `object`
      </td>
    </tr>

    <tr>
      <td>
        `iframeConfig.iframeContainerId`
      </td>

      <td>
        `string`
      </td>
    </tr>

    <tr>
      <td>
        `iframeConfig.iframeElementId`
      </td>

      <td>
        `string`
      </td>
    </tr>

    <tr>
      <td>
        <a id="oauthcallbackurl" /> `oauthCallbackUrl`
      </td>

      <td>
        `string`
      </td>
    </tr>

    <tr>
      <td>
        <a id="oauthconfig" /> `oauthConfig`
      </td>

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

    <tr>
      <td>
        <a id="rootorg" /> `rootOrg`
      </td>

      <td>
        `string`
      </td>
    </tr>

    <tr>
      <td>
        <a id="turnkeyclient" /> `turnkeyClient`
      </td>

      <td>
        `TurnkeyClient`
      </td>
    </tr>

  </tbody>
</table>

## Accessors

### user

#### Get Signature

```ts
get protected user(): undefined | User;
```

Defined in: [account-kit/signer/src/client/base.ts:150](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L150)

##### Returns

`undefined` | [`User`](../type-aliases/User)

#### Set Signature

```ts
set protected user(user): void;
```

Defined in: [account-kit/signer/src/client/base.ts:154](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L154)

##### Parameters

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

  <tbody>
    <tr>
      <td>
        `user`
      </td>

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

  </tbody>
</table>

##### Returns

`void`

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`user`](BaseSignerClient#user)

## Methods

### addMfa()

```ts
addMfa(params): Promise<AddMfaResult>;
```

Defined in: [account-kit/signer/src/client/base.ts:1177](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1177)

Initiates the setup of a new MFA factor for the current user. Mfa will need to be verified before it is active.

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

      <td>
        The parameters required to enable a new MFA factor
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`AddMfaResult`](../type-aliases/AddMfaResult)>

A promise that resolves to the factor setup information

#### Throws

If no user is authenticated

#### Throws

If an unsupported factor type is provided

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`addMfa`](BaseSignerClient#addmfa)

---

### addOauthProvider()

```ts
addOauthProvider(params): Promise<OauthProviderInfo>;
```

Defined in: [account-kit/signer/src/client/base.ts:619](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L619)

Adds an OAuth provider for the authenticated user using the provided parameters. Throws an error if the user is not authenticated.

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

      <td>
        The parameters for adding an OAuth provider, including `providerName` and `oidcToken`.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`OauthProviderInfo`](../type-aliases/OauthProviderInfo)>

A Promise that resolves when the OAuth provider is added.

#### Throws

Throws if the user is not authenticated.

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`addOauthProvider`](BaseSignerClient#addoauthprovider)

---

### addPasskey()

```ts
addPasskey(options): Promise<string[]>;
```

Defined in: [account-kit/signer/src/client/base.ts:512](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L512)

Handles the creation of authenticators using WebAuthn attestation and the provided options. Requires the user to be authenticated.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `options`
      </td>

      <td>
        `CredentialCreationOptions`
      </td>

      <td>
        The options used to create the WebAuthn attestation
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`string`\[]>

A promise that resolves to an array of authenticator IDs

#### Throws

If the user is not authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`addPasskey`](BaseSignerClient#addpasskey)

---

### completeAuthWithBundle()

```ts
completeAuthWithBundle(config): Promise<User>;
```

Defined in: [account-kit/signer/src/client/index.ts:337](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L337)

Completes auth for the user by injecting a credential bundle and retrieving
the user information based on the provided organization ID. Emits events
during the process.

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const account = await client.completeAuthWithBundle({
  orgId: "user-org-id",
  bundle: "bundle-from-email",
  connectedEventName: "connectedEmail",
});
```

#### 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>
        \{ `accessToken?`: `string`; `authenticatingType`: `"email"` | `"otp"` | `"sms"` | `"passkey"` | `"oauth"` | `"otpVerify"` | `"custom-jwt"`; `bundle`: `string`; `connectedEventName`: keyof [`AlchemySignerClientEvents`](../type-aliases/AlchemySignerClientEvents); `idToken?`: `string`; `orgId`: `string`; }
      </td>

      <td>
        The configuration object for the authentication function containing the
        credential bundle to inject and the organization id associated with the
        user, as well as the event to be emitted on success and optionally an OIDC
        ID token with extra user information
      </td>
    </tr>

    <tr>
      <td>
        `config.accessToken?`
      </td>

      <td>
        `string`
      </td>

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

    <tr>
      <td>
        `config.authenticatingType`
      </td>

      <td>
        `"email"` | `"otp"` | `"sms"` | `"passkey"` | `"oauth"` | `"otpVerify"` | `"custom-jwt"`
      </td>

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

    <tr>
      <td>
        `config.bundle`
      </td>

      <td>
        `string`
      </td>

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

    <tr>
      <td>
        `config.connectedEventName`
      </td>

      <td>
        keyof [`AlchemySignerClientEvents`](../type-aliases/AlchemySignerClientEvents)
      </td>

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

    <tr>
      <td>
        `config.idToken?`
      </td>

      <td>
        `string`
      </td>

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

    <tr>
      <td>
        `config.orgId`
      </td>

      <td>
        `string`
      </td>

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

  </tbody>
</table>

#### Returns

`Promise`\<[`User`](../type-aliases/User)>

A promise that resolves to the authenticated user
information

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`completeAuthWithBundle`](BaseSignerClient#completeauthwithbundle)

---

### createAccount()

```ts
createAccount(params): Promise<SignupResponse>;
```

Defined in: [account-kit/signer/src/client/base.ts:179](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L179)

Authenticates the user by either email or passkey account creation flow. Emits events during the process.

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

      <td>
        The parameters for creating an account, including the type (email or passkey) and additional details.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`SignupResponse`](../type-aliases/SignupResponse)>

A promise that resolves with the response object containing the account creation result.

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`createAccount`](BaseSignerClient#createaccount)

---

### disconnect()

```ts
disconnect(): Promise<void>;
```

Defined in: [account-kit/signer/src/client/index.ts:461](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L461)

Asynchronous function that clears the user and resets the iframe stamper.

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const account = await client.disconnect();
```

#### Returns

`Promise`\<`void`>

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`disconnect`](BaseSignerClient#disconnect)

---

### experimental_addToMultiOwner()

```ts
experimental_addToMultiOwner(orgId, members): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:1022](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1022)

This will add additional members to an existing multi-sig account

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `orgId`
      </td>

      <td>
        `string`
      </td>

      <td>
        orgId of the multi-sig to add members to
      </td>
    </tr>

    <tr>
      <td>
        `members`
      </td>

      <td>
        `` `0x${string}` ``\[]
      </td>

      <td>
        the addresses of the members to add
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`void`>

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`experimental_addToMultiOwner`](BaseSignerClient#experimental_addtomultiowner)

---

### experimental_createApiKey()

```ts
experimental_createApiKey(params): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:785](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L785)

Creates an API key that can take any action on behalf of the current user.
(Note that this method is currently experimental and is subject to change.)

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

      <td>
        Parameters for creating the API key.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`void`>

#### Throws

If there is no authenticated user or the API key creation fails.

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`experimental_createApiKey`](BaseSignerClient#experimental_createapikey)

---

### experimental_createMultiOwner()

```ts
experimental_createMultiOwner(additionalMembers): Promise<{
  evmSignerAddress: `0x${string}`;
  members: object[];
  orgId: string;
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:1000](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1000)

This will create a multi-owner account with the current user and additional specified signers

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `additionalMembers`
      </td>

      <td>
        `` `0x${string}` ``\[]
      </td>

      <td>
        members to add, aside from the currently authenticated user
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`evmSignerAddress`: `` `0x${string}` ``;
`members`: `object`\[];
`orgId`: `string`;
}>

created multi-owner account

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`experimental_createMultiOwner`](BaseSignerClient#experimental_createmultiowner)

---

### experimental_deleteFromMultiOwner()

```ts
experimental_deleteFromMultiOwner(orgId, members): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:1060](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1060)

This will remove members from an existing multi-sig account

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `orgId`
      </td>

      <td>
        `string`
      </td>

      <td>
        orgId of the multi-sig to remove members from
      </td>
    </tr>

    <tr>
      <td>
        `members`
      </td>

      <td>
        `` `0x${string}` ``\[]
      </td>

      <td>
        the addresses of the members to remove
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`void`>

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`experimental_deleteFromMultiOwner`](BaseSignerClient#experimental_deletefrommultiowner)

---

### experimental_multiOwnerExportPrivateKeyEncrypted()

```ts
experimental_multiOwnerExportPrivateKeyEncrypted(opts): Promise<ExportPrivateKeyEncryptedResult>;
```

Defined in: [account-kit/signer/src/client/base.ts:1616](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1616)

Exports a private key for a given account in a multi-owner org

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `opts`
      </td>

      <td>
        `MultiOwnerExportPrivateKeyParams` & `object`
      </td>

      <td>
        the parameters for the export
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`ExportPrivateKeyEncryptedResult`>

the private key

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`experimental_multiOwnerExportPrivateKeyEncrypted`](BaseSignerClient#experimental_multiownerexportprivatekeyencrypted)

---

### experimental_multiOwnerSignRawMessage()

```ts
experimental_multiOwnerSignRawMessage(
   msg,
   orgId,
   orgAddress): Promise<`0x${string}`>;
```

Defined in: [account-kit/signer/src/client/base.ts:963](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L963)

This will sign on behalf of the multi-owner org, without doing any transformations on the message.
For SignMessage or SignTypedData, the caller should hash the message before calling this method and pass
that result here.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `msg`
      </td>

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

      <td>
        the hex representation of the bytes to sign
      </td>
    </tr>

    <tr>
      <td>
        `orgId`
      </td>

      <td>
        `string`
      </td>

      <td>
        orgId of the multi-owner org to sign on behalf of
      </td>
    </tr>

    <tr>
      <td>
        `orgAddress`
      </td>

      <td>
        `string`
      </td>

      <td>
        address of the multi-owner org to sign on behalf of
      </td>
    </tr>

  </tbody>
</table>

#### Returns

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

the signature over the raw hex

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`experimental_multiOwnerSignRawMessage`](BaseSignerClient#experimental_multiownersignrawmessage)

---

### exportPrivateKey()

```ts
exportPrivateKey(opts): Promise<string>;
```

Defined in: [account-kit/signer/src/client/base.ts:1580](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1580)

Exports a private key for a given account

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `opts`
      </td>

      <td>
        `ExportPrivateKeyParams`
      </td>

      <td>
        the parameters for the export
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`string`>

the private key

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`exportPrivateKey`](BaseSignerClient#exportprivatekey)

---

### exportPrivateKeyEncrypted()

```ts
exportPrivateKeyEncrypted(opts): Promise<ExportPrivateKeyEncryptedResult>;
```

Defined in: [account-kit/signer/src/client/base.ts:1522](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1522)

Exports a private key for a given account encrypted with the provided public key

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `opts`
      </td>

      <td>
        `ExportPrivateKeyParams` & `object`
      </td>

      <td>
        the parameters for the export
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`ExportPrivateKeyEncryptedResult`>

the private key

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`exportPrivateKeyEncrypted`](BaseSignerClient#exportprivatekeyencrypted)

---

### exportWallet()

```ts
exportWallet(config): Promise<boolean>;
```

Defined in: [account-kit/signer/src/client/index.ts:395](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L395)

Initiates the export of a wallet by creating an iframe stamper and calling the appropriate export function.
The export can be based on a seed phrase or a private key.

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const account = await client.exportWallet({
  iframeContainerId: "export-iframe-container",
});
```

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

      <td>
        The parameters for exporting the wallet
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`boolean`>

A promise that resolves when the export process is complete

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`exportWallet`](BaseSignerClient#exportwallet)

---

### exportWalletInner()

```ts
protected exportWalletInner(params): Promise<boolean>;
```

Defined in: [account-kit/signer/src/client/index.ts:427](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L427)

Exports wallet credentials based on the specified type, either as a SEED_PHRASE or PRIVATE_KEY.

#### 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>
        \{ `exportAs`: `"SEED_PHRASE"` | `"PRIVATE_KEY"`; `exportStamper`: `ExportWalletStamper`; }
      </td>

      <td>
        The parameters for exporting the wallet
      </td>
    </tr>

    <tr>
      <td>
        `params.exportAs`
      </td>

      <td>
        `"SEED_PHRASE"` | `"PRIVATE_KEY"`
      </td>

      <td>
        Specifies the format for exporting the wallet, either as a SEED\_PHRASE or PRIVATE\_KEY
      </td>
    </tr>

    <tr>
      <td>
        `params.exportStamper`
      </td>

      <td>
        `ExportWalletStamper`
      </td>

      <td>
        The stamper used for exporting the wallet
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`boolean`>

A promise that resolves to true if the export is successful

---

### getMfaFactors()

```ts
getMfaFactors(): Promise<{
  multiFactors: MfaFactor[];
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:1145](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1145)

Retrieves the list of MFA factors configured for the current user.

#### Returns

`Promise`\<\{
`multiFactors`: [`MfaFactor`](../type-aliases/MfaFactor)\[];
}>

A promise that resolves to an array of configured MFA factors

#### Throws

If no user is authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`getMfaFactors`](BaseSignerClient#getmfafactors)

---

### getOauthConfig()

```ts
protected getOauthConfig(): Promise<OauthConfig>;
```

Defined in: [account-kit/signer/src/client/index.ts:730](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L730)

#### Returns

`Promise`\<[`OauthConfig`](../type-aliases/OauthConfig)>

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`getOauthConfig`](BaseSignerClient#getoauthconfig)

---

### getOauthNonce()

```ts
protected getOauthNonce(turnkeyPublicKey): string;
```

Defined in: [account-kit/signer/src/client/base.ts:1512](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1512)

Turnkey requires the nonce in the id token to be in this format.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `turnkeyPublicKey`
      </td>

      <td>
        `string`
      </td>

      <td>
        key from a Turnkey iframe
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`string`

nonce to be used in OIDC

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`getOauthNonce`](BaseSignerClient#getoauthnonce)

---

### getOauthProviderUrl()

```ts
protected getOauthProviderUrl(args): Promise<string>;
```

Defined in: [account-kit/signer/src/client/base.ts:1337](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1337)

Returns the authentication url for the selected OAuth Proivder

#### Example

```ts

cosnt oauthParams = {
 authProviderId: "google",
 isCustomProvider: false,
 auth0Connection: undefined,
 scope: undefined,
 claims: undefined,
 mode: "redirect",
 redirectUrl: "https://your-url-path/oauth-return",
 expirationSeconds: 3000
};

const turnkeyPublicKey = await this.initIframeStamper();
const oauthCallbackUrl = this.oauthCallbackUrl;
const oauthConfig = this.getOauthConfig() // Optional value for OauthConfig()
const usesRelativeUrl = true // Optional value to determine if we use a relative (or absolute) url for the `redirect_url`

const oauthProviderUrl = getOauthProviderUrl({
 oauthParams,
 turnkeyPublicKey,
 oauthCallbackUrl
})

```

#### Parameters

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

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

      <td>
        [`GetOauthProviderUrlArgs`](../type-aliases/GetOauthProviderUrlArgs)
      </td>

      <td>
        Required. The Oauth provider's auth parameters
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`string`>

returns the Oauth provider's url

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`getOauthProviderUrl`](BaseSignerClient#getoauthproviderurl)

---

### getPasskeyStatus()

```ts
getPasskeyStatus(): Promise<{
  isPasskeyAdded: boolean;
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:597](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L597)

Retrieves the status of the passkey for the current user. Requires the user to be authenticated.

#### Returns

`Promise`\<\{
`isPasskeyAdded`: `boolean`;
}>

A promise that resolves to an object containing the passkey status

#### Throws

If the user is not authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`getPasskeyStatus`](BaseSignerClient#getpasskeystatus)

---

### getUser()

```ts
getUser(): null | User;
```

Defined in: [account-kit/signer/src/client/base.ts:1095](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1095)

Returns the current user or null if no user is set.

#### Returns

`null` | [`User`](../type-aliases/User)

the current user object or null if no user is available

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`getUser`](BaseSignerClient#getuser)

---

### getWebAuthnAttestation()

```ts
protected getWebAuthnAttestation(options?, userDetails?): Promise<GetWebAuthnAttestationResult>;
```

Defined in: [account-kit/signer/src/client/index.ts:675](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L675)

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `options?`
      </td>

      <td>
        [`CredentialCreationOptionOverrides`](../type-aliases/CredentialCreationOptionOverrides)
      </td>
    </tr>

    <tr>
      <td>
        `userDetails?`
      </td>

      <td>
        \{ `username`: `string`; }
      </td>
    </tr>

    <tr>
      <td>
        `userDetails.username?`
      </td>

      <td>
        `string`
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`GetWebAuthnAttestationResult`](../type-aliases/GetWebAuthnAttestationResult)>

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`getWebAuthnAttestation`](BaseSignerClient#getwebauthnattestation)

---

### initEmailAuth()

```ts
initEmailAuth(params): Promise<{
  multiFactors?: MfaFactor[];
  orgId: string;
  otpId?: string;
}>;
```

Defined in: [account-kit/signer/src/client/index.ts:144](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L144)

Begin authenticating a user with their email and an expiration time for the authentication request. Initializes the iframe stamper to get the target public key.
This method sends an email to the user to complete their login

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const account = await client.initEmailAuth({ email: "you@mail.com" });
```

#### 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>
        `Omit`\<[`EmailAuthParams`](../type-aliases/EmailAuthParams), `"targetPublicKey"`>
      </td>

      <td>
        The parameters for email authentication, excluding the target public key
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`multiFactors?`: [`MfaFactor`](../type-aliases/MfaFactor)\[];
`orgId`: `string`;
`otpId?`: `string`;
}>

The response from the authentication request

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`initEmailAuth`](BaseSignerClient#initemailauth)

---

### initOauth()

```ts
initOauth(): Promise<OauthConfig>;
```

Defined in: [account-kit/signer/src/client/base.ts:145](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L145)

Asynchronously fetches and sets the OAuth configuration.

#### Returns

`Promise`\<[`OauthConfig`](../type-aliases/OauthConfig)>

A promise that resolves to the OAuth configuration

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`initOauth`](BaseSignerClient#initoauth)

---

### initOtp()

```ts
initOtp(type, contact): Promise<{
  otpId: string;
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:495](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L495)

Initiates an OTP (One-Time Password) verification process for a user contact.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `type`
      </td>

      <td>
        `"email"` | `"sms"`
      </td>

      <td>
        The type of OTP to send, either "email" or "sms"
      </td>
    </tr>

    <tr>
      <td>
        `contact`
      </td>

      <td>
        `string`
      </td>

      <td>
        The email address or phone number to send the OTP to
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`otpId`: `string`;
}>

A promise that resolves to an object containing the OTP ID

#### Throws

When no user is currently authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`initOtp`](BaseSignerClient#initotp)

---

### initSessionStamper()

```ts
protected initSessionStamper(): Promise<string>;
```

Defined in: [account-kit/signer/src/client/index.ts:742](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L742)

Initializes the session stamper and returns its public key.

#### Returns

`Promise`\<`string`>

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`initSessionStamper`](BaseSignerClient#initsessionstamper)

---

### initSmsAuth()

```ts
initSmsAuth(params): Promise<{
  multiFactors?: MfaFactor[];
  orgId: string;
  otpId?: string;
}>;
```

Defined in: [account-kit/signer/src/client/index.ts:195](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L195)

Begin authenticating a user through sms. Initializes the iframe stamper to get the target public key.
This method sends a text message to the user to complete their login

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const account = await client.initSmsAuth({ phone: "+1234567890" });
```

#### 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>
        `Omit`\<[`SmsAuthParams`](../type-aliases/SmsAuthParams), `"targetPublicKey"`>
      </td>

      <td>
        The parameters for sms authentication, excluding the target public key
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`multiFactors?`: [`MfaFactor`](../type-aliases/MfaFactor)\[];
`orgId`: `string`;
`otpId?`: `string`;
}>

The response from the authentication request

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`initSmsAuth`](BaseSignerClient#initsmsauth)

---

### initWebauthnStamper()

```ts
protected initWebauthnStamper(user): Promise<void>;
```

Defined in: [account-kit/signer/src/client/index.ts:765](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L765)

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `user`
      </td>

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

  </tbody>
</table>

#### Returns

`Promise`\<`void`>

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`initWebauthnStamper`](BaseSignerClient#initwebauthnstamper)

---

### listAuthMethods()

```ts
listAuthMethods(): Promise<AuthMethods>;
```

Defined in: [account-kit/signer/src/client/base.ts:669](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L669)

Retrieves the list of authentication methods for the current user.

#### Returns

`Promise`\<[`AuthMethods`](../type-aliases/AuthMethods)>

A promise that resolves to the list of authentication methods

#### Throws

If the user is not authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`listAuthMethods`](BaseSignerClient#listauthmethods)

---

### lookupUserByAccessKey()

```ts
lookupUserByAccessKey(params): Promise<{
  orgId: null | string;
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:838](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L838)

Looks up information based on an access key.

#### 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>
        `LookupUserByAccessKeyParams`
      </td>

      <td>
        The access key parameters
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`orgId`: `null` | `string`;
}>

The result of the lookup request

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`lookupUserByAccessKey`](BaseSignerClient#lookupuserbyaccesskey)

---

### lookupUserByEmail()

```ts
lookupUserByEmail(email): Promise<{
  orgId: null | string;
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:818](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L818)

Looks up information based on an email address.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `email`
      </td>

      <td>
        `string`
      </td>

      <td>
        the email address to look up
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`orgId`: `null` | `string`;
}>

the result of the lookup request

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`lookupUserByEmail`](BaseSignerClient#lookupuserbyemail)

---

### lookupUserByPhone()

```ts
lookupUserByPhone(phone): Promise<{
  orgId: null | string;
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:828](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L828)

Looks up information based on a phone number.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `phone`
      </td>

      <td>
        `string`
      </td>

      <td>
        the phone number to look up
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`orgId`: `null` | `string`;
}>

the result of the lookup request

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`lookupUserByPhone`](BaseSignerClient#lookupuserbyphone)

---

### lookupUserWithPasskey()

```ts
lookupUserWithPasskey(user?): Promise<User>;
```

Defined in: [account-kit/signer/src/client/base.ts:575](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L575)

Asynchronously handles the authentication process using WebAuthn Stamper. If a user is provided, sets the user and returns it. Otherwise, retrieves the current user and initializes the WebAuthn stamper.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `user?`
      </td>

      <td>
        [`User`](../type-aliases/User)
      </td>

      <td>
        `undefined`
      </td>

      <td>
        An optional user object to authenticate
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`User`](../type-aliases/User)>

A promise that resolves to the authenticated user object

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`lookupUserWithPasskey`](BaseSignerClient#lookupuserwithpasskey)

---

### oauthWithPopup()

```ts
oauthWithPopup(args): Promise<
  | User
  | AuthLinkingPrompt
  | IdTokenOnly>;
```

Defined in: [account-kit/signer/src/client/index.ts:550](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L550)

Initiates an OAuth authentication flow in a popup window and returns the authenticated user.

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const user = await client.oauthWithPopup({
  type: "oauth",
  authProviderId: "google",
  mode: "popup",
});
```

#### Parameters

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

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

      <td>
        | `object` & `object` & `object` | `object` & `object` & `object` | `object` & `object` & `object`
      </td>

      <td>
        The authentication parameters specifying OAuth type and popup mode
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<
| [`User`](../type-aliases/User)
| [`AuthLinkingPrompt`](../type-aliases/AuthLinkingPrompt)
| [`IdTokenOnly`](../type-aliases/IdTokenOnly)>

A promise that resolves to a `User` object containing the authenticated user information

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`oauthWithPopup`](BaseSignerClient#oauthwithpopup)

---

### oauthWithRedirect()

```ts
oauthWithRedirect(args): Promise<
  | User
  | IdTokenOnly>;
```

Defined in: [account-kit/signer/src/client/index.ts:506](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L506)

Redirects the user to the OAuth provider URL based on the provided arguments. This function will always reject after 1 second if the redirection does not occur.

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

await client.oauthWithRedirect({
  type: "oauth",
  authProviderId: "google",
  mode: "redirect",
  redirectUrl: "/",
});
```

#### Parameters

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

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

      <td>
        | `object` & `object` & `object` | `object` & `object` & `object` | `object` & `object` & `object`
      </td>

      <td>
        The arguments required to obtain the OAuth provider URL
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<
| [`User`](../type-aliases/User)
| [`IdTokenOnly`](../type-aliases/IdTokenOnly)>

A promise that will never resolve, only reject if the redirection fails

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`oauthWithRedirect`](BaseSignerClient#oauthwithredirect)

---

### on()

```ts
on<E>(event, listener): () => any;
```

Defined in: [account-kit/signer/src/client/base.ts:317](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L317)

Listen to events emitted by the client

#### Type Parameters

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

  <tbody>
    <tr>
      <td>
        `E` *extends* keyof [`AlchemySignerClientEvents`](../type-aliases/AlchemySignerClientEvents)
      </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>
        `event`
      </td>

      <td>
        `E`
      </td>

      <td>
        the event you want to listen to
      </td>
    </tr>

    <tr>
      <td>
        `listener`
      </td>

      <td>
        [`AlchemySignerClientEvents`](../type-aliases/AlchemySignerClientEvents)\[`E`]
      </td>

      <td>
        the callback function to execute when an event is fired
      </td>
    </tr>

  </tbody>
</table>

#### Returns

a function that will remove the listener when called

```ts
(): any;
```

##### Returns

`any`

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`on`](BaseSignerClient#on)

---

### pollActivityCompletion()

```ts
protected pollActivityCompletion<T>(
   activity,
   organizationId,
   resultKey): Promise<NonNullable<object[T]>>;
```

Defined in: [account-kit/signer/src/client/base.ts:1457](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1457)

#### Type Parameters

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

  <tbody>
    <tr>
      <td>
        `T` *extends*
        | `"createOrganizationResult"`
        | `"createAuthenticatorsResult"`
        | `"createUsersResult"`
        | `"createPrivateKeysResult"`
        | `"createInvitationsResult"`
        | `"acceptInvitationResult"`
        | `"signRawPayloadResult"`
        | `"createPolicyResult"`
        | `"disablePrivateKeyResult"`
        | `"deleteUsersResult"`
        | `"deleteAuthenticatorsResult"`
        | `"deleteInvitationResult"`
        | `"deleteOrganizationResult"`
        | `"deletePolicyResult"`
        | `"createUserTagResult"`
        | `"deleteUserTagsResult"`
        | `"signTransactionResult"`
        | `"deleteApiKeysResult"`
        | `"createApiKeysResult"`
        | `"createPrivateKeyTagResult"`
        | `"deletePrivateKeyTagsResult"`
        | `"setPaymentMethodResult"`
        | `"activateBillingTierResult"`
        | `"deletePaymentMethodResult"`
        | `"createApiOnlyUsersResult"`
        | `"updateRootQuorumResult"`
        | `"updateUserTagResult"`
        | `"updatePrivateKeyTagResult"`
        | `"createSubOrganizationResult"`
        | `"updateAllowedOriginsResult"`
        | `"createPrivateKeysResultV2"`
        | `"updateUserResult"`
        | `"updatePolicyResult"`
        | `"createSubOrganizationResultV3"`
        | `"createWalletResult"`
        | `"createWalletAccountsResult"`
        | `"initUserEmailRecoveryResult"`
        | `"recoverUserResult"`
        | `"setOrganizationFeatureResult"`
        | `"removeOrganizationFeatureResult"`
        | `"exportPrivateKeyResult"`
        | `"exportWalletResult"`
        | `"createSubOrganizationResultV4"`
        | `"emailAuthResult"`
        | `"exportWalletAccountResult"`
        | `"initImportWalletResult"`
        | `"importWalletResult"`
        | `"initImportPrivateKeyResult"`
        | `"importPrivateKeyResult"`
        | `"createPoliciesResult"`
        | `"signRawPayloadsResult"`
        | `"createReadOnlySessionResult"`
        | `"createOauthProvidersResult"`
        | `"deleteOauthProvidersResult"`
        | `"createSubOrganizationResultV5"`
        | `"oauthResult"`
        | `"createReadWriteSessionResult"`
        | `"createSubOrganizationResultV6"`
        | `"deletePrivateKeysResult"`
        | `"deleteWalletsResult"`
        | `"createReadWriteSessionResultV2"`
        | `"deleteSubOrganizationResult"`
        | `"initOtpAuthResult"`
        | `"otpAuthResult"`
        | `"createSubOrganizationResultV7"`
        | `"updateWalletResult"`
        | `"updatePolicyResultV2"`
        | `"initOtpAuthResultV2"`
        | `"initOtpResult"`
        | `"verifyOtpResult"`
        | `"otpLoginResult"`
        | `"stampLoginResult"`
        | `"oauthLoginResult"`
        | `"updateUserNameResult"`
        | `"updateUserEmailResult"`
        | `"updateUserPhoneNumberResult"`
        | `"initFiatOnRampResult"`
        | `"createSmartContractInterfaceResult"`
        | `"deleteSmartContractInterfaceResult"`
        | `"enableAuthProxyResult"`
        | `"disableAuthProxyResult"`
        | `"updateAuthProxyConfigResult"`
        | `"createOauth2CredentialResult"`
        | `"updateOauth2CredentialResult"`
        | `"deleteOauth2CredentialResult"`
        | `"oauth2AuthenticateResult"`
      </td>
    </tr>
  </tbody>
</table>

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `activity`
      </td>

      <td>
        `Object`
      </td>
    </tr>

    <tr>
      <td>
        `organizationId`
      </td>

      <td>
        `string`
      </td>
    </tr>

    <tr>
      <td>
        `resultKey`
      </td>

      <td>
        `T`
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`NonNullable`\<`object`\[`T`]>>

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`pollActivityCompletion`](BaseSignerClient#pollactivitycompletion)

---

### removeEmail()

```ts
removeEmail(): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:385](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L385)

Removes the email for the authenticated user, disallowing them from login with that email.

#### Returns

`Promise`\<`void`>

A promise that resolves when the email is removed

#### Throws

If the user is not authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`removeEmail`](BaseSignerClient#removeemail)

---

### removeMfa()

```ts
removeMfa(params): Promise<{
  multiFactors: MfaFactor[];
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:1247](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1247)

Removes existing MFA factors by ID.

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

      <td>
        The parameters specifying which factors to disable
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`multiFactors`: [`MfaFactor`](../type-aliases/MfaFactor)\[];
}>

A promise that resolves to the updated list of MFA factors

#### Throws

If no user is authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`removeMfa`](BaseSignerClient#removemfa)

---

### removeOauthProvider()

```ts
removeOauthProvider(providerId): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:647](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L647)

Deletes a specified OAuth provider for the authenticated user.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `providerId`
      </td>

      <td>
        `string`
      </td>

      <td>
        The ID of the provider to be deleted
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`void`>

#### Throws

If the user is not authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`removeOauthProvider`](BaseSignerClient#removeoauthprovider)

---

### removePasskey()

```ts
removePasskey(authenticatorId): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:554](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L554)

Removes a passkey authenticator from the user's account.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `authenticatorId`
      </td>

      <td>
        `string`
      </td>

      <td>
        The ID of the authenticator to remove.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`void`>

A promise that resolves when the authenticator is removed.

#### Throws

If the user is not authenticated.

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`removePasskey`](BaseSignerClient#removepasskey)

---

### removePhoneNumber()

```ts
removePhoneNumber(): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:454](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L454)

Removes the phone number for the authenticated user, disallowing them from login with that phone number.

#### Returns

`Promise`\<`void`>

A promise that resolves when the phone number is removed

#### Throws

If the user is not authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`removePhoneNumber`](BaseSignerClient#removephonenumber)

---

### request()

```ts
request<R>(route, body): Promise<SignerResponse<R>>;
```

Defined in: [account-kit/signer/src/client/base.ts:1107](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1107)

Sends a POST request to the given signer route with the specified body and returns the response.
Not intended to be used directly, use the specific methods instead on the client instead.

#### Type Parameters

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

  <tbody>
    <tr>
      <td>
        `R` *extends*
        | `"/v1/signup"`
        | `"/v1/whoami"`
        | `"/v1/auth"`
        | `"/v1/lookup"`
        | `"/v1/init-otp"`
        | `"/v1/verify-otp"`
        | `"/v1/sign-payload"`
        | `"/v1/update-email-auth"`
        | `"/v1/update-phone-auth"`
        | `"/v1/add-oauth-provider"`
        | `"/v1/remove-oauth-provider"`
        | `"/v1/list-auth-methods"`
        | `"/v1/prepare-oauth"`
        | `"/v1/otp"`
        | `"/v1/auth-list-multi-factors"`
        | `"/v1/auth-delete-multi-factors"`
        | `"/v1/auth-request-multi-factor"`
        | `"/v1/auth-verify-multi-factor"`
        | `"/v1/auth-jwt"`
        | `"/v1/signer-config"`
        | `"/v1/auth-validate-multi-factors"`
        | `"/v1/multi-owner-create"`
        | `"/v1/multi-owner-prepare-add"`
        | `"/v1/multi-owner-add"`
        | `"/v1/multi-owner-update-root-quorum"`
        | `"/v1/multi-owner-sign-raw-payload"`
        | `"/v1/multi-owner-prepare-delete"`
        | `"/v1/multi-owner-delete"`
        | `"/v1/track-key-export"`
      </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>
        `route`
      </td>

      <td>
        `R`
      </td>

      <td>
        The route to which the request should be sent
      </td>
    </tr>

    <tr>
      <td>
        `body`
      </td>

      <td>
        [`SignerBody`](../type-aliases/SignerBody)\<`R`>
      </td>

      <td>
        The request body containing the data to be sent
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`SignerResponse`](../type-aliases/SignerResponse)\<`R`>>

A promise that resolves to the response from the signer

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`request`](BaseSignerClient#request)

---

### setEmail()

Implementation for setEmail method with optional OTP verification.

#### Param

An OTP object containing the OTP ID & OTP code (or an email address for legacy usage)

#### Call Signature

```ts
setEmail(email): Promise<string>;
```

Defined in: [account-kit/signer/src/client/base.ts:339](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L339)

Sets the email for the authenticated user, allowing them to login with that
email.

##### Deprecated

You must contact Alchemy to enable this feature for your team,
as there are important security considerations. In particular, you must not
call this without first validating that the user owns this email account.
Recommended to use the email verification flow instead.

##### Parameters

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

  <tbody>
    <tr>
      <td>
        `email`
      </td>

      <td>
        `string`
      </td>

      <td>
        The email to set for the user
      </td>
    </tr>

  </tbody>
</table>

##### Returns

`Promise`\<`string`>

A promise that resolves to the updated email

##### Throws

If the user is not authenticated

##### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`setEmail`](BaseSignerClient#setemail)

#### Call Signature

```ts
setEmail(otp): Promise<string>;
```

Defined in: [account-kit/signer/src/client/base.ts:349](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L349)

Sets the email for the authenticated user, allowing them to login with that
email. Must be called after calling `initOtp` with the email.

##### Parameters

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

  <tbody>
    <tr>
      <td>
        `otp`
      </td>

      <td>
        [`VerificationOtp`](../type-aliases/VerificationOtp)
      </td>

      <td>
        The OTP verification object including the OTP ID and OTP code
      </td>
    </tr>

  </tbody>
</table>

##### Returns

`Promise`\<`string`>

A promise that resolves to the updated email

##### Throws

If the user is not authenticated

##### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`setEmail`](BaseSignerClient#setemail)

---

### setPhoneNumber()

```ts
setPhoneNumber(otp): Promise<void>;
```

Defined in: [account-kit/signer/src/client/base.ts:439](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L439)

Updates the phone number for the authenticated user, allowing them to login with that
phone number. Must be called after calling `initOtp` with the phone number.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `otp`
      </td>

      <td>
        [`VerificationOtp`](../type-aliases/VerificationOtp)
      </td>

      <td>
        The OTP object including the OTP ID and OTP code
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<`void`>

A promise that resolves when the phone number is set

#### Throws

If the user is not authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`setPhoneNumber`](BaseSignerClient#setphonenumber)

---

### setStamper()

```ts
protected setStamper(stamper): void;
```

Defined in: [account-kit/signer/src/client/base.ts:169](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L169)

Sets the stamper of the TurnkeyClient.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `stamper`
      </td>

      <td>
        `TStamper`
      </td>

      <td>
        the stamper function to set for the TurnkeyClient
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`void`

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`setStamper`](BaseSignerClient#setstamper)

---

### signRawMessage()

```ts
signRawMessage(msg, mode): Promise<`0x${string}`>;
```

Defined in: [account-kit/signer/src/client/base.ts:855](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L855)

This will sign a message with the user's private key, without doing any transformations on the message.
For SignMessage or SignTypedData, the caller should hash the message before calling this method and pass
that result here.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `msg`
      </td>

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

      <td>
        `undefined`
      </td>

      <td>
        the hex representation of the bytes to sign
      </td>
    </tr>

    <tr>
      <td>
        `mode`
      </td>

      <td>
        `"SOLANA"` | `"ETHEREUM"`
      </td>

      <td>
        `"ETHEREUM"`
      </td>

      <td>
        specify if signing should happen for solana or ethereum
      </td>
    </tr>

  </tbody>
</table>

#### Returns

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

the signature over the raw hex

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`signRawMessage`](BaseSignerClient#signrawmessage)

---

### stampGetOrganization()

```ts
stampGetOrganization(): Promise<TSignedRequest>;
```

Defined in: [account-kit/signer/src/client/base.ts:763](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L763)

Generates a stamped getOrganization request for the current user.

#### Returns

`Promise`\<`TSignedRequest`>

a promise that resolves to the "getOrganization" information for the logged in user

#### Throws

if no user is authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`stampGetOrganization`](BaseSignerClient#stampgetorganization)

---

### stampWhoami()

```ts
stampWhoami(): Promise<TSignedRequest>;
```

Defined in: [account-kit/signer/src/client/base.ts:747](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L747)

Generates a stamped whoami request for the current user. This request can then be used to call /signer/v1/whoami to get the user information.
This is useful if you want to get the user information in a different context like a server. You can pass the stamped request to the server
and then call our API to get the user information. Using this stamp is the most trusted way to get the user information since a stamp can only
belong to the user who created it.

#### Returns

`Promise`\<`TSignedRequest`>

a promise that resolves to the "whoami" information for the logged in user

#### Throws

if no organization ID is provided

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`stampWhoami`](BaseSignerClient#stampwhoami)

---

### submitJwt()

```ts
submitJwt(args): Promise<JwtResponse>;
```

Defined in: [account-kit/signer/src/client/index.ts:295](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L295)

Authenticates using a custom issued JWT

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const account = await client.submitJwt({
  jwt: "custom-issued-jwt",
  authProvider: "auth-provider-name",
});
```

#### Parameters

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

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

      <td>
        `Omit`\<[`JwtParams`](../type-aliases/JwtParams), `"targetPublicKey"`>
      </td>

      <td>
        The parameters for the JWT request, excluding the target public key.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`JwtResponse`](../type-aliases/JwtResponse)>

A promise that resolves to an object containing the credential bundle.

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`submitJwt`](BaseSignerClient#submitjwt)

---

### submitOtpCode()

```ts
submitOtpCode(args): Promise<SubmitOtpCodeResponse>;
```

Defined in: [account-kit/signer/src/client/index.ts:234](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L234)

Authenticates using an OTP code which was previously received via email.

#### Example

```ts
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const account = await client.submitOtpCode({
  orgId: "user-org-id",
  otpId: "opt-returned-from-initEmailAuth",
  otpCode: "otp-code-from-email",
});
```

#### Parameters

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

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

      <td>
        `Omit`\<[`OtpParams`](../type-aliases/OtpParams), `"targetPublicKey"`>
      </td>

      <td>
        The parameters for the OTP request, excluding the target public key.
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`SubmitOtpCodeResponse`](../type-aliases/SubmitOtpCodeResponse)>

A promise that resolves to an object containing the credential bundle.

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`submitOtpCode`](BaseSignerClient#submitotpcode)

---

### targetPublicKey()

```ts
targetPublicKey(): Promise<string>;
```

Defined in: [account-kit/signer/src/client/index.ts:671](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/index.ts#L671)

Initializes the iframe stamper and returns its public key.

#### Example

```ts twoslash
import { AlchemySignerWebClient } from "@account-kit/signer";

const client = new AlchemySignerWebClient({
  connection: {
    apiKey: "your-api-key",
  },
  iframeConfig: {
    iframeContainerId: "signer-iframe-container",
  },
});

const publicKey = await client.targetPublicKey();
```

#### Returns

`Promise`\<`string`>

A promise that resolves with the target public key when the iframe stamper is successfully initialized, or throws an error if the target public key is not supported.

#### Overrides

[`BaseSignerClient`](BaseSignerClient).[`targetPublicKey`](BaseSignerClient#targetpublickey)

---

### validateMultiFactors()

```ts
validateMultiFactors(params): Promise<{
  bundle: string;
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:1279](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1279)

Validates multiple MFA factors using the provided encrypted payload and MFA codes.

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

      <td>
        The validation parameters
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`bundle`: `string`;
}>

A promise that resolves to an object containing the credential bundle

#### Throws

If no credential bundle is returned from the server

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`validateMultiFactors`](BaseSignerClient#validatemultifactors)

---

### verifyMfa()

```ts
verifyMfa(params): Promise<{
  multiFactors: MfaFactor[];
}>;
```

Defined in: [account-kit/signer/src/client/base.ts:1214](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L1214)

Verifies a newly created MFA factor to complete the setup process.

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

      <td>
        The parameters required to verify the MFA factor
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<\{
`multiFactors`: [`MfaFactor`](../type-aliases/MfaFactor)\[];
}>

A promise that resolves to the updated list of MFA factors

#### Throws

If no user is authenticated

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`verifyMfa`](BaseSignerClient#verifymfa)

---

### whoami()

```ts
whoami(
   orgId?,
   idToken?,
   accessToken?): Promise<User>;
```

Defined in: [account-kit/signer/src/client/base.ts:687](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/signer/src/client/base.ts#L687)

Retrieves the current user or fetches the user information if not already available.

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `orgId?`
      </td>

      <td>
        `string`
      </td>

      <td>
        optional organization ID, defaults to the user's organization ID
      </td>
    </tr>

    <tr>
      <td>
        `idToken?`
      </td>

      <td>
        `string`
      </td>

      <td>
        an OIDC ID token containing additional user information
      </td>
    </tr>

    <tr>
      <td>
        `accessToken?`
      </td>

      <td>
        `string`
      </td>

      <td>
        an access token which if provided will be added to the user
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`Promise`\<[`User`](../type-aliases/User)>

A promise that resolves to the user object

#### Throws

if no organization ID is provided when there is no current user

#### Inherited from

[`BaseSignerClient`](BaseSignerClient).[`whoami`](BaseSignerClient#whoami)