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

# Data types & enums

> The value types shared by every MBKYC SDK — config, requests, results, readers, fingers, and selections.

These types are common to every SDK. Names are shown in their canonical form; each language uses its idiomatic casing (e.g. `RightThumb` in Kotlin/C#, `.rightThumb` in Swift, `right_thumb`/`9` on the wire). Method signatures per language live in each [SDK guide](/sdks/android) and the [API overview](/reference/api-overview).

## Config

Passed to `create()` / `init()`. Fields match 1:1 across languages.

| Field          | Type                      | Required     | Notes                                                                                                      |
| -------------- | ------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------- |
| `baseUrl`      | string                    | yes          | Your proxy / Validation Gateway endpoint.                                                                  |
| `apiKeyId`     | string                    | yes          | The **non-secret** API key ID.                                                                             |
| `tokenSigner`  | callback                  | yes          | Signs request inputs; the API secret never enters the SDK. See [Authentication](/concepts/authentication). |
| `logConfig`    | [`LogConfig`](#logconfig) | yes          | Where and how to write diagnostic logs.                                                                    |
| `timeoutMs`    | number                    | no           | Backend request timeout. Default `30000`.                                                                  |
| `extraHeaders` | map                       | no           | Added to every backend request. **Max 5 entries.**                                                         |
| `context`      | Android `Context`         | Android only | Required on Android; not present elsewhere.                                                                |

### LogConfig

| Field              | Type   | Notes                                             |
| ------------------ | ------ | ------------------------------------------------- |
| `logDir`           | path   | Directory for log files.                          |
| `maxFileSizeBytes` | number | Rotation size per file (e.g. `10 * 1024 * 1024`). |
| `maxFiles`         | number | How many rotated files to keep.                   |

## Validation requests

The single `validate` call takes one of these. Attaching a [`Fingerprint`](#fingerprint) turns on biometric matching. See [Validation methods](/concepts/validation-methods).

```
EmiratesIdCard   { readerId, cardDipTimeoutMs?, fingerprint?, clientReferenceId? }
EmiratesIdNfc    { tag, nfcTimeoutMs?, fingerprint?, clientReferenceId? }          // Android only
EmiratesIdManual { idNumber, documentNumber, nationality,
                   dateOfBirth?, issueDate?, expiryDate?, fingerprint?, clientReferenceId? }
PassportManual   { passportNumber, passportType, nationality,
                   dateOfBirth?, issueDate?, expiryDate?, clientReferenceId? }
```

| Field                                      | Notes                                                                                                                                   |
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| `readerId`                                 | A reader ID from [`listSmartcardReaders()`](#readerinfo).                                                                               |
| `cardDipTimeoutMs`                         | Optional. How long to wait for a card to be presented. Default `5000`.                                                                  |
| `nfcTimeoutMs`                             | Optional. NFC read timeout (Android). Default `30000`.                                                                                  |
| `idNumber`                                 | Emirates ID, e.g. `784-XXXX-XXXXXXX-X` (hyphens optional).                                                                              |
| `nationality`                              | ISO country code, e.g. `ARE`.                                                                                                           |
| `dateOfBirth` / `issueDate` / `expiryDate` | `YYYY-MM-DD`. Optional.                                                                                                                 |
| `clientReferenceId`                        | Optional **UUID** for correlation — a non-UUID is ignored. See [Client reference ID](/concepts/validation-methods#client-reference-id). |

### Fingerprint

The biometric sub-object attached to an Emirates ID request.

```
Fingerprint { readerId, recommendationHandler, captureTimeoutMs? }
```

| Field                   | Notes                                                                                                  |
| ----------------------- | ------------------------------------------------------------------------------------------------------ |
| `readerId`              | A reader ID from [`listFingerprintReaders()`](#readerinfo).                                            |
| `recommendationHandler` | Your callback; the SDK invokes it with the ranked finger list. See [Biometrics](/concepts/biometrics). |
| `captureTimeoutMs`      | Optional capture timeout. Default `10000`.                                                             |

## VerificationResult

Returned by `validate`.

| Field               | Type    | Notes                                                                                                                     |
| ------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------- |
| `success`           | boolean | Whether the verification passed.                                                                                          |
| `message`           | string  | Human-readable status.                                                                                                    |
| `data`              | object? | The resident's verified details — every field is catalogued in [Verification response](/reference/verification-response). |
| `clientReferenceId` | string  | Echoes your request value, or the server-assigned UUID.                                                                   |

## ReaderInfo

Returned by `listSmartcardReaders()` / `listFingerprintReaders()`.

| Field    | Type   | Notes                                                                            |
| -------- | ------ | -------------------------------------------------------------------------------- |
| `id`     | string | Pass to a request's `readerId`. Vendor-prefixed (`ccid:…`, `nfc:…`, `morpho:…`). |
| `name`   | string | Human-readable reader name.                                                      |
| `vendor` | string | Vendor identifier.                                                               |

## RegistrationStatus

Returned by `checkRegistration()`. One of:

| Value       | Meaning                                |
| ----------- | -------------------------------------- |
| `active`    | Device is registered and can validate. |
| `inactive`  | Device is registered but disabled.     |
| `not_found` | Device is not registered.              |

(Swift's `RegistrationStatus` also carries an optional `deviceName`.)

## Finger

Finger indices follow **ISO/IEC 7816-11** — the numeric value is what travels on the wire.

| Name          | Index | Name         | Index |
| ------------- | ----- | ------------ | ----- |
| `NoMeaning`   | 3     | `LeftThumb`  | 6     |
| `RightThumb`  | 5     | `LeftIndex`  | 10    |
| `RightIndex`  | 9     | `LeftMiddle` | 14    |
| `RightMiddle` | 13    | `LeftRing`   | 18    |
| `RightRing`   | 17    | `LeftLittle` | 22    |
| `RightLittle` | 15    |              |       |

## FingerSelection

What your [recommendation handler](/concepts/biometrics) returns.

| Variant               | Meaning                                                            |
| --------------------- | ------------------------------------------------------------------ |
| `Recommended(finger)` | Capture a finger chosen from the backend's ranked list.            |
| `Custom(finger)`      | Capture a specific finger you chose (e.g. when the list is empty). |
| `Cancel`              | Abort the biometric capture.                                       |
