> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SolanaWallet

<Note>
  **This page has been updated for Wallets SDK V1.** If you are using the previous version,
  see the [previous version of this page](/sdk-reference/wallets/v0/typescript/classes/SolanaWallet) or the [V1 migration guide](/wallets/guides/migrate-to-v1).
</Note>

Defined in: [packages/wallets/src/wallets/solana.ts:18](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/solana.ts#L18)

## Extends

* [`Wallet`](./Wallet)\<[`SolanaChain`](../type-aliases/SolanaChain)>

## Constructors

### new SolanaWallet()

> **new SolanaWallet**(`wallet`): `SolanaWallet`

Defined in: [packages/wallets/src/wallets/solana.ts:19](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/solana.ts#L19)

#### Parameters

| Parameter | Type                              |
| --------- | --------------------------------- |
| `wallet`  | [`Wallet`](./Wallet)\<`"solana"`> |

#### Returns

`SolanaWallet`

#### Overrides

[`Wallet`](./Wallet).[`constructor`](./Wallet#constructor)

## Properties

| Property                     | Type       | Inherited from                                     | Defined in                                                                                                                                   |
| ---------------------------- | ---------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| <a id="address" /> `address` | `string`   | [`Wallet`](./Wallet).[`address`](./Wallet#address) | [packages/wallets/src/wallets/wallet.ts:85](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L85) |
| <a id="alias" /> `alias?`    | `string`   | [`Wallet`](./Wallet).[`alias`](./Wallet#alias)     | [packages/wallets/src/wallets/wallet.ts:87](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L87) |
| <a id="chain" /> `chain`     | `"solana"` | [`Wallet`](./Wallet).[`chain`](./Wallet#chain)     | [packages/wallets/src/wallets/wallet.ts:84](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L84) |
| <a id="owner" /> `owner?`    | `string`   | [`Wallet`](./Wallet).[`owner`](./Wallet#owner)     | [packages/wallets/src/wallets/wallet.ts:86](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L86) |

## Accessors

### apiClient

#### Get Signature

> **get** **apiClient**(): [`WalletsApiClient`](./WalletsApiClient)

Defined in: [packages/wallets/src/wallets/wallet.ts:206](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L206)

##### Returns

[`WalletsApiClient`](./WalletsApiClient)

#### Inherited from

[`Wallet`](./Wallet).[`apiClient`](./Wallet#apiclient)

***

### recovery

#### Get Signature

> **get** **recovery**(): [`SignerConfigForChain`](../type-aliases/SignerConfigForChain)\<`C`>

Defined in: [packages/wallets/src/wallets/wallet.ts:219](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L219)

**`Experimental`**

Get the recovery signer config

##### Returns

[`SignerConfigForChain`](../type-aliases/SignerConfigForChain)\<`C`>

The recovery signer config
This API is experimental and may change in the future

#### Inherited from

[`Wallet`](./Wallet).[`recovery`](./Wallet#recovery)

***

### signer

#### Get Signature

> **get** **signer**(): [`SignerAdapter`](../interfaces/SignerAdapter)\<keyof `SignResultMap`> | `undefined`

Defined in: [packages/wallets/src/wallets/wallet.ts:112](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L112)

##### Returns

[`SignerAdapter`](../interfaces/SignerAdapter)\<keyof `SignResultMap`> | `undefined`

#### Inherited from

[`Wallet`](./Wallet).[`signer`](./Wallet#signer)

## Methods

### addSigner()

> **addSigner**\<`T`>(`signer`, `options`?): `Promise`\<`T` *extends* `PrepareOnly`\<`true`> ? [`Signer`](../type-aliases/Signer) & `object` : [`Signer`](../type-aliases/Signer)>

Defined in: [packages/wallets/src/wallets/wallet.ts:614](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L614)

Add a signer to the wallet.
Always uses the recovery signer internally to approve the registration.
If the signer being added is the current operational signer, it will be reassembled with the new locator.
Otherwise, the original signer is restored after the operation.

#### Type Parameters

| Type Parameter                                                                      | Default type |
| ----------------------------------------------------------------------------------- | ------------ |
| `T` *extends* [`AddSignerOptions`](../type-aliases/AddSignerOptions) \| `undefined` | `undefined`  |

#### Parameters

| Parameter  | Type                                                                                                                                                                                                                                                                                                            | Description                     |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| `signer`   | [`EmailSignerConfig`](../type-aliases/EmailSignerConfig) \| [`PhoneSignerConfig`](../type-aliases/PhoneSignerConfig) \| [`DeviceSignerConfig`](../type-aliases/DeviceSignerConfig) \| `BaseSignerConfig`\<`"solana"`> \| [`ExternalWalletRegistrationConfig`](../type-aliases/ExternalWalletRegistrationConfig) | The signer configuration object |
| `options`? | `T`                                                                                                                                                                                                                                                                                                             | The options for the operation   |

#### Returns

`Promise`\<`T` *extends* `PrepareOnly`\<`true`> ? [`Signer`](../type-aliases/Signer) & `object` : [`Signer`](../type-aliases/Signer)>

#### Inherited from

[`Wallet`](./Wallet).[`addSigner`](./Wallet#addsigner)

***

### approve()

> **approve**\<`T`>(`params`): `Promise`\<`ApproveResult`\<`T`>>

Defined in: [packages/wallets/src/wallets/wallet.ts:568](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L568)

Approve a transaction or signature

#### Type Parameters

| Type Parameter                                                 |
| -------------------------------------------------------------- |
| `T` *extends* [`ApproveParams`](../type-aliases/ApproveParams) |

#### Parameters

| Parameter | Type | Description    |
| --------- | ---- | -------------- |
| `params`  | `T`  | The parameters |

#### Returns

`Promise`\<`ApproveResult`\<`T`>>

The transaction or signature

#### Inherited from

[`Wallet`](./Wallet).[`approve`](./Wallet#approve)

***

### ~~approveTransaction()~~

> **approveTransaction**(`params`): `Promise`\<`Error`>

Defined in: [packages/wallets/src/wallets/wallet.ts:544](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L544)

#### Parameters

| Parameter | Type                                             | Description    |
| --------- | ------------------------------------------------ | -------------- |
| `params`  | [`ApproveParams`](../type-aliases/ApproveParams) | The parameters |

#### Returns

`Promise`\<`Error`>

The transaction

#### Deprecated

Use `approve` instead.
Approve a transaction

#### Inherited from

[`Wallet`](./Wallet).[`approveTransaction`](./Wallet#approvetransaction)

***

### balances()

> **balances**(`tokens`?): `Promise`\<[`Balances`](../type-aliases/Balances)\<`"solana"`>>

Defined in: [packages/wallets/src/wallets/wallet.ts:236](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L236)

Get the wallet balances - always includes USDC and native token (ETH/SOL)

#### Parameters

| Parameter | Type        | Description                                                                        |
| --------- | ----------- | ---------------------------------------------------------------------------------- |
| `tokens`? | `string`\[] | Additional tokens to request (optional: native token and usdc are always included) |

#### Returns

`Promise`\<[`Balances`](../type-aliases/Balances)\<`"solana"`>>

The balances returns nativeToken, usdc, tokens

#### Throws

If the balances cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`balances`](./Wallet#balances)

***

### isSignerApproved()

> **isSignerApproved**(`signerLocator`): `Promise`\<`boolean`>

Defined in: [packages/wallets/src/wallets/wallet.ts:866](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L866)

Check if a signer is approved and usable for the current wallet chain.

#### Parameters

| Parameter       | Type     | Description                        |
| --------------- | -------- | ---------------------------------- |
| `signerLocator` | `string` | The locator of the signer to check |

#### Returns

`Promise`\<`boolean`>

true if the signer is approved for this chain

#### Inherited from

[`Wallet`](./Wallet).[`isSignerApproved`](./Wallet#issignerapproved)

***

### needsRecovery()

> **needsRecovery**(): `boolean`

Defined in: [packages/wallets/src/wallets/wallet.ts:875](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L875)

Whether the wallet needs recovery (signer registration) before the next transaction.

#### Returns

`boolean`

true if recovery is needed

#### Inherited from

[`Wallet`](./Wallet).[`needsRecovery`](./Wallet#needsrecovery)

***

### nfts()

> **nfts**(`params`): `Promise`\<`unknown`>

Defined in: [packages/wallets/src/wallets/wallet.ts:394](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L394)

Get the wallet NFTs

#### Parameters

| Parameter        | Type                                        | Description                 |
| ---------------- | ------------------------------------------- | --------------------------- |
| `params`         | \{ `page`: `number`; `perPage`: `number`; } | The parameters              |
| `params.page`    | `number`                                    | The page number             |
| `params.perPage` | `number`                                    | The number of NFTs per page |

#### Returns

`Promise`\<`unknown`>

The NFTs

#### Inherited from

[`Wallet`](./Wallet).[`nfts`](./Wallet#nfts)

***

### recover()

> **recover**(): `Promise`\<`void`>

Defined in: [packages/wallets/src/wallets/wallet.ts:891](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L891)

Register a device signer with the wallet using the recovery signer.
Generates a new device key and registers it on-chain.
Returns early if the device signer's locator is already approved on-chain.

#### Returns

`Promise`\<`void`>

#### Inherited from

[`Wallet`](./Wallet).[`recover`](./Wallet#recover)

***

### send()

> **send**\<`T`>(`to`, `token`, `amount`, `options`?): `Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T` *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

Defined in: [packages/wallets/src/wallets/wallet.ts:461](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L461)

Send a token to a wallet or user locator

#### Type Parameters

| Type Parameter                                             | Default type |
| ---------------------------------------------------------- | ------------ |
| `T` *extends* `SendTokenTransactionOptions` \| `undefined` | `undefined`  |

#### Parameters

| Parameter  | Type                      | Description                             |
| ---------- | ------------------------- | --------------------------------------- |
| `to`       | `string` \| `UserLocator` | The recipient (address or user locator) |
| `token`    | `string`                  | The token (address or currency symbol)  |
| `amount`   | `string`                  | The amount to send (decimal units)      |
| `options`? | `T`                       | The options for the transaction         |

#### Returns

`Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T` *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

The transaction

#### Inherited from

[`Wallet`](./Wallet).[`send`](./Wallet#send)

***

### sendTransaction()

> **sendTransaction**\<`T`>(`params`): `Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T` *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

Defined in: [packages/wallets/src/wallets/solana.ts:55](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/solana.ts#L55)

Send a raw Solana transaction.

#### Type Parameters

| Type Parameter                                         | Default type |
| ------------------------------------------------------ | ------------ |
| `T` *extends* `TransactionInputOptions` \| `undefined` | `undefined`  |

#### Parameters

| Parameter | Type                                                                          | Description                                                               |
| --------- | ----------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `params`  | [`SolanaTransactionInput`](../type-aliases/SolanaTransactionInput) & `object` | The transaction parameters (serialized transaction or Transaction object) |

#### Returns

`Promise`\<[`Transaction`](../type-aliases/Transaction)\<`T` *extends* `PrepareOnly`\<`true`> ? `true` : `false`>>

The transaction result

***

### signerIsRegistered()

> **signerIsRegistered**(`signerLocator`): `Promise`\<`boolean`>

Defined in: [packages/wallets/src/wallets/wallet.ts:856](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L856)

Check if a signer is registered in this wallet.

#### Parameters

| Parameter       | Type     | Description                        |
| --------------- | -------- | ---------------------------------- |
| `signerLocator` | `string` | The locator of the signer to check |

#### Returns

`Promise`\<`boolean`>

true if the signer is registered

#### Inherited from

[`Wallet`](./Wallet).[`signerIsRegistered`](./Wallet#signerisregistered)

***

### signers()

> **signers**(): `Promise`\<[`Signer`](../type-aliases/Signer)\[]>

Defined in: [packages/wallets/src/wallets/wallet.ts:995](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L995)

List the signers for this wallet.
Returns full signer objects with status.
For EVM wallets, only signers with an approval (pending or completed) for the wallet's chain are included.

#### Returns

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

The signers

#### Inherited from

[`Wallet`](./Wallet).[`signers`](./Wallet#signers)

***

### stagingFund()

> **stagingFund**(`amount`, `chain`?): `Promise`\<`FundWalletResponse`>

Defined in: [packages/wallets/src/wallets/wallet.ts:286](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L286)

Funds the wallet with Crossmint's stablecoin (USDXM).

**Note:** This method is only available in staging environments and exclusively supports USDXM tokens.
It cannot be used in production environments.

#### Parameters

| Parameter | Type                             | Description                                                                 |
| --------- | -------------------------------- | --------------------------------------------------------------------------- |
| `amount`  | `number`                         | The amount of USDXM to fund the wallet with                                 |
| `chain`?  | [`Chain`](../type-aliases/Chain) | Optional chain to fund on. If not provided, uses the wallet's default chain |

#### Returns

`Promise`\<`FundWalletResponse`>

The funding response

#### Throws

If the funding operation fails or if called in a production environment

#### Inherited from

[`Wallet`](./Wallet).[`stagingFund`](./Wallet#stagingfund)

***

### transaction()

> **transaction**(`transactionId`): `Promise`\<`WalletsTransactionV2025ResponseDto`>

Defined in: [packages/wallets/src/wallets/wallet.ts:420](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L420)

Get a transaction by id

#### Parameters

| Parameter       | Type     |
| --------------- | -------- |
| `transactionId` | `string` |

#### Returns

`Promise`\<`WalletsTransactionV2025ResponseDto`>

The transaction

#### Throws

If the transaction cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`transaction`](./Wallet#transaction)

***

### transactions()

> **transactions**(): `Promise`\<`GetTransactionsResponse`>

Defined in: [packages/wallets/src/wallets/wallet.ts:407](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L407)

Get the wallet transactions

#### Returns

`Promise`\<`GetTransactionsResponse`>

The transactions

#### Throws

If the transactions cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`transactions`](./Wallet#transactions)

***

### transfers()

> **transfers**(`params`?): `Promise`\<`WalletsActivityResponseUnstableDto`>

Defined in: [packages/wallets/src/wallets/wallet.ts:433](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L433)

Get the wallet transfers

#### Parameters

| Parameter        | Type                                                             |
| ---------------- | ---------------------------------------------------------------- |
| `params`?        | \{ `status`: `"successful"` \| `"failed"`; `tokens`: `string`; } |
| `params.status`? | `"successful"` \| `"failed"`                                     |
| `params.tokens`? | `string`                                                         |

#### Returns

`Promise`\<`WalletsActivityResponseUnstableDto`>

The transfers

#### Throws

If the transfers cannot be retrieved

#### Inherited from

[`Wallet`](./Wallet).[`transfers`](./Wallet#transfers)

***

### useSigner()

> **useSigner**(`signer`): `Promise`\<`void`>

Defined in: [packages/wallets/src/wallets/wallet.ts:758](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/wallet.ts#L758)

Set the active signer for this wallet.
Accepts a signer config object. The locator is inferred internally.
Works for both registered signers and the recovery signer.

For passkey signers: if no `id` is provided, the wallet will auto-select the passkey
if exactly one passkey signer is registered. If multiple passkeys exist, an `id` must be specified.

For device signers: if no device key is found locally, the signer will be created
automatically during the next transaction (via recovery).

For external-wallet signers: the config object must include an onSign callback
(applies to both registered and recovery signers).

#### Parameters

| Parameter | Type                                                                                                                                                                                                                  | Description                     |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
| `signer`  | [`EmailSignerConfig`](../type-aliases/EmailSignerConfig) \| [`PhoneSignerConfig`](../type-aliases/PhoneSignerConfig) \| [`DeviceSignerConfig`](../type-aliases/DeviceSignerConfig) \| `BaseSignerConfig`\<`"solana"`> | The signer config object to use |

#### Returns

`Promise`\<`void`>

#### Inherited from

[`Wallet`](./Wallet).[`useSigner`](./Wallet#usesigner)

***

### from()

> `static` **from**(`wallet`): `SolanaWallet`

Defined in: [packages/wallets/src/wallets/solana.ts:35](https://github.com/Crossmint/crossmint-sdk/blob/main/packages/wallets/src/wallets/solana.ts#L35)

#### Parameters

| Parameter | Type                                                    |
| --------- | ------------------------------------------------------- |
| `wallet`  | [`Wallet`](./Wallet)\<[`Chain`](../type-aliases/Chain)> |

#### Returns

`SolanaWallet`
