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

# Models

> EmbeddedWallet and the response / transaction types.

All models are JSON-serialisable (via `json_annotation`) and extend `Equatable` for value equality. They are generated with `build_runner` — after changing a model, run:

```bash theme={null}
dart run build_runner build --delete-conflicting-outputs
```

***

## EmbeddedWallet

The core wallet read model.

```dart theme={null}
class EmbeddedWallet {
  final String walletId;
  final String name;
  final String currency;    // ISO 4217, e.g. 'USD'
  final double balance;
  final String? colorSuffix; // '01'–'06' or null for the default background
  // ...
}
```

`EmbeddedWallet` is immutable. Use `copyWith` for local overrides:

```dart theme={null}
final updated = wallet.copyWith(balance: freshBalance);
```

***

## Response types

| Type                                 | Contents                                                                  |
| ------------------------------------ | ------------------------------------------------------------------------- |
| `EmbeddedWalletListResponse`         | `List<EmbeddedWallet> wallets`                                            |
| `EmbeddedWalletDetailResponse`       | A single `EmbeddedWallet`                                                 |
| `EmbeddedWalletBalanceResponse`      | `String walletId`, `double balance`                                       |
| `EmbeddedWalletTransactionsResponse` | `List<EmbeddedWalletTransaction> transactions`, `int? total`, `int? page` |

***

## EmbeddedWalletTransaction

```dart theme={null}
class EmbeddedWalletTransaction {
  final String id;
  final String walletId;
  final double amount;
  final String? currency;
  final EmbeddedTransactionDirection direction; // incoming | outgoing
  final EmbeddedWalletTransactionStatus status;
  final String? title;
  final String? counterpartyName;
  final DateTime? createdAt;
  // ...
}
```

### EmbeddedTransactionDirection

```dart theme={null}
enum EmbeddedTransactionDirection {
  incoming,
  outgoing,
}
```

Use the `isIncoming` convenience getter:

```dart theme={null}
final bool isIncoming = transaction.isIncoming; // direction == incoming
```

### EmbeddedWalletTransactionStatus

```dart theme={null}
enum EmbeddedWalletTransactionStatus {
  pending,
  completed,
  failed,
  reversed,
}
```
