# Wallet

Interface representing a full Stacks wallet. Extends `WalletKeys` with the encrypted secret key and a list of derived accounts.

***

### Usage

```ts
import { generateWallet, generateNewAccount, Wallet } from '@stacks/wallet-sdk';

const wallet: Wallet = await generateWallet({
  secretKey: 'your 24-word seed phrase ...',
  password: 'password',
});

console.log(wallet.encryptedSecretKey); // hex-encoded encrypted mnemonic
console.log(wallet.rootKey);            // xprv... root extended private key
console.log(wallet.configPrivateKey);   // hex key for encrypting config data
console.log(wallet.salt);               // hex salt for app-specific key derivation
console.log(wallet.accounts.length);    // 1

// Add more accounts
const updatedWallet = generateNewAccount(wallet);
console.log(updatedWallet.accounts.length); // 2
```

[**Reference Link**](https://github.com/stx-labs/stacks.js/tree/main/packages/wallet-sdk/src/models/common.ts#L43)

***

### Definition

```ts
interface Wallet extends WalletKeys {
  /** The encrypted secret key */
  encryptedSecretKey: string;
  /** A list of accounts generated by this wallet */
  accounts: Account[];
}
```

***

### Properties

Inherits all properties from `WalletKeys`, plus:

| Property             | Type        | Description                                                                |
| -------------------- | ----------- | -------------------------------------------------------------------------- |
| `encryptedSecretKey` | `string`    | The mnemonic seed phrase encrypted with the wallet password (hex-encoded). |
| `accounts`           | `Account[]` | Array of accounts derived from this wallet.                                |

From `WalletKeys`:

| Property           | Type     | Description                                                      |
| ------------------ | -------- | ---------------------------------------------------------------- |
| `salt`             | `string` | Used when generating app-specific private keys.                  |
| `rootKey`          | `string` | The root extended private key (`xprv...`) of the BIP39 keychain. |
| `configPrivateKey` | `string` | A private key used to encrypt wallet configuration data.         |
