@41devs/naya-id-js 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,6 @@
1
1
  /**
2
- * Configuration du parcours de vérification Naya ID.
3
- *
4
- * Reprend, à l'identique, le modèle des SDK Flutter et Angular : tous les champs
5
- * sont optionnels et le SDK fonctionne avec des valeurs par défaut raisonnables
6
- * (tous pays, tous documents, français).
2
+ * Configuration publique du SDK et valeurs par défaut.
7
3
  */
8
- /** Pays supportés par Naya ID (zone CEDEAO). Code = ISO 3166-1 alpha-2. */
9
4
  declare const NAYA_COUNTRIES: readonly [{
10
5
  readonly code: "BJ";
11
6
  readonly label: "Bénin";
@@ -26,38 +21,47 @@ declare const NAYA_COUNTRIES: readonly [{
26
21
  readonly label: "Togo";
27
22
  }];
28
23
  type NayaCountryCode = (typeof NAYA_COUNTRIES)[number]['code'];
29
- /** Types de documents acceptés. La valeur est envoyée telle quelle à l'API. */
30
24
  type NayaDocumentType = 'cni' | 'passeport' | 'permis';
31
25
  declare const NAYA_DOCUMENT_TYPES: readonly NayaDocumentType[];
32
26
  /** Langues de l'interface du SDK. */
33
- type NayaLocale = 'fr' | 'en';
27
+ type NayaLocale = 'fr' | 'en' | 'pt';
28
+ declare const NAYA_LOCALES: readonly NayaLocale[];
29
+ declare function countryLabel(code: NayaCountryCode): string;
30
+ /** La CNI CEDEAO porte sa MRZ au verso ; les autres pièces n'en ont pas besoin. */
31
+ declare function documentNeedsVerso(doc: NayaDocumentType): boolean;
34
32
  /**
35
- * Fournisseur d'authentification.
33
+ * Authentification.
36
34
  *
37
- * Deux modes, un seul à renseigner :
38
- * `apiKey` — la clé d'application est transmise depuis le navigateur.
39
- * Simple, mais la clé est lisible côté client : à réserver
40
- * aux démos et aux intégrations le front est maîtrisé.
41
- * `sessionToken` jeton éphémère obtenu par le backend du client, limité à
42
- * une vérification. À privilégier en production.
35
+ * `apiKey` la clé d'application est transmise depuis le navigateur ; le
36
+ * SDK ouvre lui-même la session. Réservé aux démos et aux fronts maîtrisés :
37
+ * une clé live doit déclarer ses origines dans le dashboard.
38
+ * `sessionToken` + `verificationId` la session a été ouverte par le
39
+ * backend du client ; le SDK la reprend et n'appelle jamais `/start`.
40
+ * À privilégier en production.
43
41
  */
44
42
  interface NayaAuth {
45
43
  apiKey?: string;
46
44
  sessionToken?: string;
45
+ verificationId?: string;
47
46
  }
48
- /** Palette optionnelle : surcharge des couleurs de marque. */
49
47
  interface NayaThemeOverrides {
50
- /** Couleur principale (défaut : navy Naya #1A3A5C). */
48
+ /** Couleur principale (défaut : encre Naya #172062). */
51
49
  primaryColor?: string;
52
- /** Couleur d'accent des CTA (défaut : ambre Naya #F5A623). */
50
+ /** Couleur d'accent des CTA (défaut : flamme Naya #E6950A). */
53
51
  accentColor?: string;
52
+ /** Pile de polices ; défaut : police système. */
53
+ fontFamily?: string;
54
+ /** Rayons : `sharp` (4/8 px), `soft` (12/24 px, défaut), `round` (pilule). */
55
+ radius?: 'sharp' | 'soft' | 'round';
56
+ /** Thème clair, sombre, ou suivant les préférences du système (défaut). */
57
+ mode?: 'light' | 'dark' | 'auto';
54
58
  }
55
59
  /**
56
- * Emplacement des ressources de détection de vivacité (MediaPipe). Par défaut,
57
- * elles sont chargées depuis un CDN public. Les applications à CSP stricte
58
- * (qui bloquent les hôtes externes) doivent auto-héberger ces fichiers et
59
- * renseigner ici leurs URL.
60
+ * Ressources de détection de vivacité (MediaPipe). Par défaut, servies par le
61
+ * CDN Naya, avec repli automatique sur les CDN publics si celui-ci ne répond
62
+ * pas. Les applications à CSP stricte peuvent auto-héberger ces fichiers.
60
63
  */
64
+ type NayaOcrConfirmMode = 'display' | 'edit';
61
65
  interface NayaLivenessAssets {
62
66
  /** URL du module ESM `@mediapipe/tasks-vision` (`vision_bundle.mjs`). */
63
67
  esmUrl?: string;
@@ -65,6 +69,52 @@ interface NayaLivenessAssets {
65
69
  wasmBaseUrl?: string;
66
70
  /** URL du modèle `.task` de Face Landmarker. */
67
71
  modelUrl?: string;
72
+ /** Empreinte SHA-256 attendue du modèle (hex) ; `null` désactive le contrôle. */
73
+ modelSha256?: string | null;
74
+ /** Replier sur jsDelivr / Google si l'hôte principal échoue (défaut : true). */
75
+ fallbackToPublicCdn?: boolean;
76
+ }
77
+ interface NayaConsentOptions {
78
+ /** Lien vers la politique de confidentialité affichée sur l'écran de consentement. */
79
+ policyUrl?: string;
80
+ /** Version du texte de consentement, transmise à l'API. */
81
+ version?: string;
82
+ }
83
+ interface NayaCaptureOptions {
84
+ /** Déclenchement automatique quand la qualité est stable (défaut : true). */
85
+ autoCapture?: boolean;
86
+ /** Côté max de l'image envoyée, en pixels (défaut : 1600 ; 1200 sur réseau lent). */
87
+ maxDimension?: number;
88
+ /**
89
+ * Import d'une photo depuis un fichier : `auto` (proposé quand aucune caméra
90
+ * arrière n'est disponible, typiquement sur ordinateur), `always`, `never`.
91
+ */
92
+ fileUpload?: 'auto' | 'always' | 'never';
93
+ }
94
+ interface NayaLivenessOptions {
95
+ /** Délai avant de proposer des conseils et un nouvel essai (défaut : 45 s). */
96
+ timeoutMs?: number;
97
+ /**
98
+ * Après un délai dépassé ou deux échecs, proposer le parcours sans défi
99
+ * (selfie seul, décision plafonnée à la revue). Défaut : true.
100
+ */
101
+ allowPassive?: boolean;
102
+ /** Précharger le modèle pendant la capture du document (défaut : true). */
103
+ preload?: boolean;
104
+ }
105
+ interface NayaHandoffOptions {
106
+ /** Proposer le relais vers un téléphone par QR code sur ordinateur (défaut : true). */
107
+ enabled?: boolean;
108
+ /** Page hébergée qui reprend la session ; défaut : celle configurée côté API. */
109
+ baseUrl?: string;
110
+ }
111
+ type NayaEventName = 'ready' | 'step' | 'session' | 'consent' | 'document_captured' | 'liveness_step' | 'liveness_done' | 'submitted' | 'result' | 'error' | 'cancelled' | 'handoff_shown';
112
+ interface NayaEvent {
113
+ type: NayaEventName;
114
+ /** `performance.now()` au moment de l'événement. */
115
+ at: number;
116
+ step?: string;
117
+ data?: Record<string, unknown>;
68
118
  }
69
119
  interface NayaConfig {
70
120
  /** Pré-sélectionne le pays : l'utilisateur ne le choisit plus. */
@@ -76,16 +126,13 @@ interface NayaConfig {
76
126
  documentTypes?: readonly NayaDocumentType[];
77
127
  /** Pays proposés quand `country` n'est pas défini. */
78
128
  countries?: readonly NayaCountryCode[];
79
- /** Langue de l'interface. */
129
+ /** Langue de l'interface ; défaut : celle du navigateur (fr, en, pt). */
80
130
  locale?: NayaLocale;
81
- /**
82
- * URL (HTTPS) notifiée par le serveur Naya à chaque décision sur cette
83
- * session — décision automatique puis, le cas échéant, revue manuelle.
84
- */
131
+ /** URL HTTPS notifiée par le serveur Naya à chaque décision (mode apiKey). */
85
132
  callbackUrl?: string;
86
133
  /** Nombre de parcours autorisés après un rejet (bouton « Réessayer »). */
87
134
  maxAttempts?: number;
88
- /** Surcharge des couleurs de marque. */
135
+ /** Surcharge des couleurs, de la police, des rayons et du mode. */
89
136
  theme?: NayaThemeOverrides;
90
137
  /** URL d'un logo client, affiché à côté de « Propulsé par Naya ID ». */
91
138
  clientLogoUrl?: string;
@@ -93,6 +140,38 @@ interface NayaConfig {
93
140
  baseUrl?: string;
94
141
  /** Auto-hébergement des ressources MediaPipe (CSP stricte). */
95
142
  livenessAssets?: NayaLivenessAssets;
143
+ /** Monter le parcours dans cet élément au lieu d'un overlay plein écran. */
144
+ container?: HTMLElement | null;
145
+ /** Écran de consentement biométrique ; `false` si recueilli en amont par l'hôte. */
146
+ consent?: boolean | NayaConsentOptions;
147
+ /**
148
+ * Écran des données lues sur le document. `false` (défaut) : rien n'est
149
+ * montré ; `'display'` : lecture seule, l'utilisateur dit si c'est exact ;
150
+ * `'edit'` : il peut saisir des corrections. Dans tous les cas l'extraction
151
+ * (`ocrData`) reste intacte côté serveur : ce qui est saisi part à part
152
+ * (`declaredData`) et un écart plafonne la décision à la revue.
153
+ * `true` vaut `'edit'`.
154
+ */
155
+ confirmOcr?: boolean | NayaOcrConfirmMode;
156
+ capture?: NayaCaptureOptions;
157
+ liveness?: NayaLivenessOptions;
158
+ handoff?: boolean | NayaHandoffOptions;
159
+ /**
160
+ * Ouvrir la session dès le choix du document pour recouvrir la latence
161
+ * réseau. Attention : une session ouverte peut être facturée même si la
162
+ * capture est abandonnée. Défaut : false.
163
+ */
164
+ eagerSession?: boolean;
165
+ /** Télémétrie anonyme (entonnoir, erreurs, qualité). Défaut : true. */
166
+ telemetry?: boolean;
167
+ /** Journal détaillé dans la console (préfixe `[NayaId]`). */
168
+ debug?: boolean;
169
+ /** Retour haptique aux étapes clés sur mobile (défaut : true). */
170
+ haptics?: boolean;
171
+ /** Surcharge de libellés, par clé de chaîne. */
172
+ strings?: Partial<Record<string, string>>;
173
+ /** Hook d'événements pour l'analytique de l'hôte. */
174
+ onEvent?: (event: NayaEvent) => void;
96
175
  }
97
176
  /** Configuration effective : `NayaConfig` avec tous les défauts appliqués. */
98
177
  interface ResolvedNayaConfig {
@@ -106,20 +185,29 @@ interface ResolvedNayaConfig {
106
185
  clientLogoUrl?: string;
107
186
  baseUrl: string;
108
187
  livenessAssets: NayaLivenessAssets;
188
+ container: HTMLElement | null;
189
+ consent: false | Required<NayaConsentOptions>;
190
+ confirmOcr: false | NayaOcrConfirmMode;
191
+ capture: Required<NayaCaptureOptions>;
192
+ liveness: Required<NayaLivenessOptions>;
193
+ handoff: Required<NayaHandoffOptions>;
194
+ eagerSession: boolean;
195
+ telemetry: boolean;
196
+ debug: boolean;
197
+ haptics: boolean;
198
+ strings: Partial<Record<string, string>>;
199
+ onEvent?: (event: NayaEvent) => void;
109
200
  }
110
- declare const NAYA_DEFAULT_PRIMARY = "#1A3A5C";
111
- declare const NAYA_DEFAULT_ACCENT = "#F5A623";
201
+ declare const NAYA_DEFAULT_PRIMARY = "#172062";
202
+ declare const NAYA_DEFAULT_ACCENT = "#E6950A";
112
203
  declare const NAYA_DEFAULT_BASE_URL = "https://api.naya.41devs.com/v1";
204
+ /** Langue du navigateur ramenée aux langues supportées. */
205
+ declare function detectLocale(): NayaLocale;
113
206
  /** Applique les valeurs par défaut à une configuration partielle. */
114
207
  declare function resolveConfig(config?: NayaConfig): ResolvedNayaConfig;
115
- /** Libellé lisible d'un code pays. */
116
- declare function countryLabel(code: NayaCountryCode): string;
117
- /** La CNI CEDEAO porte sa MRZ au verso ; passeport et permis n'en ont pas besoin. */
118
- declare function documentNeedsVerso(doc: NayaDocumentType): boolean;
119
208
 
120
209
  /**
121
210
  * Résultat du parcours, rendu à l'application cliente à la fermeture du SDK.
122
- * Miroir fidèle des modèles Flutter et Angular.
123
211
  */
124
212
  /** Issue du parcours de vérification. */
125
213
  type NayaStatus =
@@ -131,8 +219,14 @@ type NayaStatus =
131
219
  | 'rejected'
132
220
  /** L'utilisateur a quitté le parcours avant la fin. */
133
221
  | 'cancelled'
134
- /** Erreur technique (réseau, serveur…) ayant interrompu le parcours. */
222
+ /** Erreur technique (réseau, serveur, caméra…) ayant interrompu le parcours. */
135
223
  | 'error';
224
+ /**
225
+ * Code d'erreur stable, indépendant de la langue. `errorMessage` porte le
226
+ * détail lisible (souvent celui du serveur) et `requestId` la référence à
227
+ * communiquer au support.
228
+ */
229
+ type NayaErrorCode = 'network' | 'timeout' | 'unauthorized' | 'origin_not_allowed' | 'session_expired' | 'session_closed' | 'quota' | 'kyb_pending' | 'rate_limited' | 'upload_limit' | 'bad_request' | 'server' | 'camera_denied' | 'camera_unavailable' | 'camera_busy' | 'liveness_assets' | 'unsupported_browser' | 'in_app_browser' | 'insecure_context' | 'invalid_params' | 'unknown';
136
230
  /**
137
231
  * Données d'identité extraites du document par l'OCR Naya, éventuellement
138
232
  * corrigées par l'utilisateur.
@@ -166,87 +260,145 @@ interface NayaResult {
166
260
  * les notifications `callbackUrl` et le dashboard.
167
261
  */
168
262
  verificationId?: string;
169
- /** Score de risque agrégé 0-100 (plus haut = plus sûr). */
263
+ /** Motifs stables de la décision (DOC_EXPIRED, FACE_MISMATCH…). */
264
+ reasonCodes?: string[];
265
+ /** `active` (défi exécuté) ou `passive` (selfie seul). */
266
+ livenessMode?: 'active' | 'passive';
170
267
  riskScore?: number;
171
- /** Concordance faciale document ↔ selfie, 0-100. */
172
268
  matchScore?: number;
173
- /** Intégrité du document, 0-100. */
174
269
  authenticityScore?: number;
175
- /** Score de vivacité, 0-100. */
176
270
  livenessScore?: number;
177
- /** Confiance de l'extraction OCR, 0-100. */
178
271
  ocrConfidence?: number;
179
- /** Données d'identité finales (OCR fusionné avec les corrections). */
272
+ /** Extraction brute du document, telle que lue par le serveur ; jamais altérée. */
180
273
  ocrData?: NayaOcrData;
181
- /** Note d'analyse produite par le pipeline Naya. */
274
+ /** Ce que l'utilisateur a déclaré (mode `confirmOcr: 'edit'`), conservé à part. */
275
+ declaredData?: Record<string, string>;
276
+ /** Champs où `declaredData` diffère de `ocrData`. */
277
+ dataMismatches?: string[];
278
+ /** L'utilisateur a contesté les données lues (mode `'display'`). */
279
+ dataDisputed?: boolean;
280
+ /** Note d'analyse du serveur (rejet, revue). */
182
281
  note?: string;
183
- /** Détail de l'erreur quand `status` vaut `'error'`. */
282
+ /** Renseignés quand `status === 'error'`. */
283
+ errorCode?: NayaErrorCode;
184
284
  errorMessage?: string;
285
+ /** Statut HTTP de l'erreur serveur, le cas échéant. */
286
+ statusCode?: number;
287
+ /** Référence de requête renvoyée par l'API, à transmettre au support. */
288
+ requestId?: string;
185
289
  }
186
290
  declare function cancelledResult(verificationId?: string): NayaResult;
187
- declare function errorResult(errorMessage: string, verificationId?: string): NayaResult;
291
+ declare function errorResult(errorMessage: string, verificationId?: string, extra?: {
292
+ errorCode?: NayaErrorCode;
293
+ statusCode?: number;
294
+ requestId?: string;
295
+ }): NayaResult;
188
296
 
189
297
  /**
190
- * Client HTTP du pipeline de vérification Naya.
191
- *
192
- * Bâti sur `fetch` natif, sans dépendance. Les délais sont dimensionnés pour les
193
- * étapes longues (OCR et décision côté serveur).
194
- *
195
- * Authentification via `NayaAuth` : `apiKey` (en-tête `X-API-Key`) ou
196
- * `sessionToken` (en-tête `Authorization: Bearer`). Le choix est transparent
197
- * pour le reste du SDK.
298
+ * Détection des capacités du navigateur, avant d'ouvrir l'interface : mieux
299
+ * vaut refuser proprement avec la raison que d'échouer au moment du selfie.
198
300
  */
199
- /** Erreur renvoyée par l'API Naya ou par le transport réseau. */
200
- declare class NayaApiError extends Error {
201
- readonly statusCode?: number;
202
- constructor(message: string, statusCode?: number);
301
+ interface NayaSupport {
302
+ ok: boolean;
303
+ code?: NayaErrorCode;
304
+ reason?: string;
305
+ secureContext: boolean;
306
+ mediaDevices: boolean;
307
+ webAssembly: boolean;
308
+ webGL: boolean;
309
+ inAppBrowser: boolean;
310
+ inAppBrowserName: string | null;
311
+ mobile: boolean;
312
+ ios: boolean;
313
+ android: boolean;
314
+ /** Classe d'appareil rapportée à la télémétrie : `mobile` | `tablet` | `desktop`. */
315
+ deviceClass: 'mobile' | 'tablet' | 'desktop';
203
316
  }
204
317
 
205
318
  /**
206
- * SDK JavaScript officiel de Naya ID — vérification d'identité (eKYC) clé en
207
- * main pour l'Afrique de l'Ouest (zone CEDEAO), chargeable en une balise
208
- * `<script>`.
319
+ * Client HTTP du pipeline de vérification Naya.
209
320
  *
210
- * Pendant web « sans framework » des SDK Flutter et Angular : même parcours,
211
- * mêmes écrans, même contrat d'API.
321
+ * Bâti sur `fetch` natif, sans dépendance. Les délais sont dimensionnés pour
322
+ * les étapes longues (OCR et décision côté serveur). Les échecs transitoires
323
+ * (réseau, délai, 429, 502-504) sont retentés avec un délai croissant.
212
324
  *
213
- * ```html
214
- * <script src="https://cdn.jsdelivr.net/npm/@41devs/naya-id-js@0/dist/naya-id.min.js"></script>
215
- * <script>
216
- * const result = await NayaId.startVerification({
217
- * apiKey: 'naya_live_xxx',
218
- * config: { country: 'BJ' },
219
- * });
220
- * // result.status → 'approved' | 'review' | 'rejected' | 'cancelled' | 'error'
221
- * </script>
222
- * ```
325
+ * Authentification : `apiKey` (en-tête `X-API-Key`) ou `sessionToken`
326
+ * (en-tête `Authorization: Bearer`).
223
327
  */
328
+ /** Erreur typée renvoyée par l'API Naya ou par le transport réseau. */
329
+ declare class NayaApiError extends Error {
330
+ readonly code: NayaErrorCode;
331
+ readonly statusCode?: number;
332
+ readonly requestId?: string;
333
+ readonly retryable: boolean;
334
+ constructor(message: string, code: NayaErrorCode, opts?: {
335
+ statusCode?: number;
336
+ requestId?: string;
337
+ retryable?: boolean;
338
+ });
339
+ }
224
340
 
225
341
  interface StartVerificationParams {
226
342
  /** Clé d'application `naya_live_…` / `naya_test_…` (lisible côté navigateur). */
227
343
  apiKey?: string;
228
- /** Jeton de session éphémère obtenu par votre backend (à privilégier). */
344
+ /**
345
+ * Jeton de session rendu par `POST /verifications/start`, obtenu par votre
346
+ * backend (à privilégier). Va toujours avec `verificationId` : le SDK reprend
347
+ * la vérification ouverte par le serveur au lieu d'en ouvrir une nouvelle.
348
+ */
229
349
  sessionToken?: string;
230
- /** Alternative aux deux champs ci-dessus, forme objet. */
350
+ /** Identifiant de la vérification ouverte par votre backend (avec `sessionToken`). */
351
+ verificationId?: string;
352
+ /** Alternative aux champs ci-dessus, forme objet. */
231
353
  auth?: NayaAuth;
232
- /** Configuration optionnelle (pays, documents, langue, callbackUrl, thème…). */
354
+ /** Configuration optionnelle (pays, documents, langue, thème, conteneur…). */
233
355
  config?: NayaConfig;
234
356
  }
235
357
  /**
236
358
  * Lance le parcours de vérification d'identité : l'interface Naya s'ouvre en
237
- * plein écran au-dessus de la page, prend en charge la capture du document, la
238
- * vivacité et la décision, puis résout un `NayaResult` et rend la main.
359
+ * plein écran au-dessus de la page (ou dans `config.container`), prend en
360
+ * charge le consentement, la capture du document, la vivacité, la
361
+ * confirmation des données et la décision, puis résout un `NayaResult`.
239
362
  *
240
- * **Ne rejette jamais** : une erreur réseau ou une annulation revient toujours
241
- * sous forme de `NayaResult` (`status: 'error'` ou `'cancelled'`).
363
+ * **Ne rejette jamais** : une erreur ou une annulation revient toujours sous
364
+ * forme de `NayaResult` (`status: 'error'` avec `errorCode`, ou `'cancelled'`).
242
365
  */
243
366
  declare function startVerification(params: StartVerificationParams): Promise<NayaResult>;
367
+ /** Vérifie que le navigateur peut exécuter le parcours, avant de l'ouvrir. */
368
+ declare function isSupported(): NayaSupport;
369
+ interface NayaVerification {
370
+ /** Monte l'interface et résout à la fermeture. Un seul `open` à la fois. */
371
+ open(): Promise<NayaResult>;
372
+ /** Ferme le parcours (résultat `cancelled`). */
373
+ close(): void;
374
+ /** Abonne un écouteur ; rend la fonction de désabonnement. */
375
+ on(event: NayaEventName | 'result', cb: (payload: NayaEvent | NayaResult) => void): () => void;
376
+ /** Ferme et libère les écouteurs. */
377
+ destroy(): void;
378
+ readonly isOpen: boolean;
379
+ }
380
+ /**
381
+ * API programmatique : instance réutilisable avec `open`, `close`, `on`.
382
+ * Utile aux enveloppes de framework et à l'analytique de l'hôte.
383
+ */
384
+ declare function create(params: StartVerificationParams): NayaVerification;
385
+ /**
386
+ * `<naya-id-verification api-key="…" country="BJ" locale="fr" inline auto>`
387
+ * Attributs : `api-key`, `session-token`, `verification-id`, `locale`,
388
+ * `country`, `document-types` (liste séparée par des virgules), `callback-url`,
389
+ * `inline` (monte dans l'élément), `auto` (démarre à l'insertion), `theme-primary`,
390
+ * `theme-accent`, `theme-mode`. Événements : `naya-event`, `naya-result`.
391
+ */
392
+ declare function defineElement(tag?: string): void;
244
393
  /** Version du SDK. */
245
- declare const version = "0.1.0";
394
+ declare const version: string;
246
395
 
247
396
  declare const _default: {
248
397
  startVerification: typeof startVerification;
398
+ create: typeof create;
399
+ isSupported: typeof isSupported;
400
+ defineElement: typeof defineElement;
249
401
  version: string;
250
402
  };
251
403
 
252
- export { NAYA_COUNTRIES, NAYA_DEFAULT_ACCENT, NAYA_DEFAULT_BASE_URL, NAYA_DEFAULT_PRIMARY, NAYA_DOCUMENT_TYPES, NayaApiError, type NayaAuth, type NayaConfig, type NayaCountryCode, type NayaDocumentType, type NayaLivenessAssets, type NayaLocale, type NayaOcrData, type NayaResult, type NayaStatus, type NayaThemeOverrides, type ResolvedNayaConfig, type StartVerificationParams, cancelledResult, countryLabel, _default as default, documentNeedsVerso, errorResult, ocrToDeclaredData, parseOcrData, resolveConfig, startVerification, version };
404
+ export { NAYA_COUNTRIES, NAYA_DEFAULT_ACCENT, NAYA_DEFAULT_BASE_URL, NAYA_DEFAULT_PRIMARY, NAYA_DOCUMENT_TYPES, NAYA_LOCALES, NayaApiError, type NayaAuth, type NayaCaptureOptions, type NayaConfig, type NayaConsentOptions, type NayaCountryCode, type NayaDocumentType, type NayaErrorCode, type NayaEvent, type NayaEventName, type NayaHandoffOptions, type NayaLivenessAssets, type NayaLivenessOptions, type NayaLocale, type NayaOcrData, type NayaResult, type NayaStatus, type NayaSupport, type NayaThemeOverrides, type NayaVerification, type ResolvedNayaConfig, type StartVerificationParams, cancelledResult, countryLabel, create, _default as default, defineElement, detectLocale, documentNeedsVerso, errorResult, isSupported, ocrToDeclaredData, parseOcrData, resolveConfig, startVerification, version };