@dudousxd/adonis-authkit-server 0.4.0 → 0.6.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.
Files changed (50) hide show
  1. package/README.md +23 -2
  2. package/build/host/views/account/apps.edge +58 -0
  3. package/build/host/views/account/security.edge +53 -0
  4. package/build/host/views/account/tokens.edge +1 -0
  5. package/build/host/views/admin/users.edge +62 -2
  6. package/build/host/views/login.edge +55 -0
  7. package/build/host/views/mfa-challenge.edge +12 -0
  8. package/build/index.d.ts +9 -3
  9. package/build/index.js +5 -2
  10. package/build/src/accounts/account_store.d.ts +80 -2
  11. package/build/src/accounts/account_store.js +12 -0
  12. package/build/src/accounts/lucid_account_store.js +8 -0
  13. package/build/src/accounts/lucid_store/core.d.ts +2 -2
  14. package/build/src/accounts/lucid_store/core.js +33 -0
  15. package/build/src/accounts/lucid_store/mfa.js +4 -1
  16. package/build/src/accounts/lucid_store/status_profile.d.ts +21 -0
  17. package/build/src/accounts/lucid_store/status_profile.js +66 -0
  18. package/build/src/audit/audit_sink.d.ts +1 -1
  19. package/build/src/define_config.d.ts +53 -0
  20. package/build/src/define_config.js +14 -1
  21. package/build/src/doctor/checks.js +32 -32
  22. package/build/src/events/dispatcher.d.ts +45 -0
  23. package/build/src/events/dispatcher.js +92 -0
  24. package/build/src/host/admin_sessions_service.d.ts +8 -0
  25. package/build/src/host/admin_sessions_service.js +19 -0
  26. package/build/src/host/controllers/account_apps_controller.d.ts +15 -0
  27. package/build/src/host/controllers/account_apps_controller.js +61 -0
  28. package/build/src/host/controllers/account_mfa_controller.js +6 -2
  29. package/build/src/host/controllers/account_security_controller.d.ts +9 -0
  30. package/build/src/host/controllers/account_security_controller.js +52 -2
  31. package/build/src/host/controllers/account_session_controller.js +3 -1
  32. package/build/src/host/controllers/admin/admin_users_controller.d.ts +13 -0
  33. package/build/src/host/controllers/admin/admin_users_controller.js +133 -0
  34. package/build/src/host/controllers/interaction_controller.d.ts +32 -0
  35. package/build/src/host/controllers/interaction_controller.js +175 -8
  36. package/build/src/host/default_mailer.d.ts +8 -0
  37. package/build/src/host/default_mailer.js +81 -19
  38. package/build/src/host/email_templates.d.ts +4 -0
  39. package/build/src/host/email_templates.js +5 -2
  40. package/build/src/host/i18n.d.ts +395 -11
  41. package/build/src/host/i18n.js +433 -12
  42. package/build/src/host/login_attempt.d.ts +1 -0
  43. package/build/src/host/login_attempt.js +11 -0
  44. package/build/src/host/register_auth_host.js +18 -1
  45. package/build/src/host/trusted_device.d.ts +61 -0
  46. package/build/src/host/trusted_device.js +65 -0
  47. package/build/src/host/validators.d.ts +35 -0
  48. package/build/src/host/validators.js +14 -0
  49. package/build/src/observability/metrics_controller.js +4 -4
  50. package/package.json +1 -1
@@ -3,26 +3,29 @@
3
3
  *
4
4
  * Todas as strings visíveis ao usuário das views Edge (e as mensagens de
5
5
  * flash/erro produzidas pelos controllers) vivem num catálogo achatado de
6
- * chaves pontilhadas. O default embutido é pt-BR — os apps continuam
7
- * funcionando SEM nenhuma configuração. O host pode sobrescrever chaves
8
- * pontuais ou fornecer locales inteiros (ex.: `en`) via `I18nConfig`.
6
+ * chaves pontilhadas. O default embutido é inglês (`en`) — os apps continuam
7
+ * funcionando SEM nenhuma configuração. O pt-BR é um locale embutido: basta
8
+ * `i18n: { locale: 'pt-BR' }`. O host também pode sobrescrever chaves pontuais
9
+ * ou fornecer locales inteiros (ex.: `fr`) via `I18nConfig`.
9
10
  */
10
11
  /** Catálogo achatado de chaves de mensagem → strings. */
11
12
  export type AuthMessages = Record<string, string>;
12
13
  export interface I18nConfig {
13
- /** Locale ativo. Default: 'pt-BR'. */
14
+ /** Locale ativo. Default: 'en'. Locale embutido extra: 'pt-BR'. */
14
15
  locale?: string;
15
16
  /**
16
17
  * Locales adicionais e/ou overrides pontuais. As chaves do locale ativo são
17
- * mescladas SOBRE o default pt-BR então o host pode trocar só algumas
18
- * chaves ou trazer um locale novo por completo.
18
+ * mescladas SOBRE o catálogo embutido do locale (ou sobre o default `en`
19
+ * quando o locale não é embutido) então o host pode trocar só algumas
20
+ * chaves, complementar um locale embutido, ou trazer um locale novo por
21
+ * completo.
19
22
  */
20
23
  messages?: Record<string, Partial<AuthMessages>>;
21
24
  }
22
25
  /** Locale default do host-kit. */
23
- export declare const DEFAULT_LOCALE = "pt-BR";
26
+ export declare const DEFAULT_LOCALE = "en";
24
27
  /**
25
- * Catálogo default (pt-BR) — cobre TODAS as strings visíveis ao usuário das
28
+ * Catálogo default (inglês) — cobre TODAS as strings visíveis ao usuário das
26
29
  * views e as mensagens de flash/erro dos controllers. Chaves agrupadas por tela.
27
30
  */
28
31
  export declare const DEFAULT_MESSAGES: {
@@ -41,6 +44,9 @@ export declare const DEFAULT_MESSAGES: {
41
44
  'login.switch_account': string;
42
45
  'login.password_label': string;
43
46
  'login.submit': string;
47
+ 'login.magic_link_button': string;
48
+ 'login.magic_link_sent': string;
49
+ 'login.passkey_button': string;
44
50
  'signup.page_title': string;
45
51
  'signup.title': string;
46
52
  'signup.intro': string;
@@ -77,6 +83,7 @@ export declare const DEFAULT_MESSAGES: {
77
83
  'mfa_challenge.recovery_submit': string;
78
84
  'mfa_challenge.passkey_button': string;
79
85
  'mfa_challenge.passkey_error': string;
86
+ 'mfa_challenge.trust_device': string;
80
87
  'consent.page_title': string;
81
88
  'consent.title': string;
82
89
  'consent.body': string;
@@ -118,6 +125,27 @@ export declare const DEFAULT_MESSAGES: {
118
125
  'account.security.change_email_submit': string;
119
126
  'account.security.email_change_requested': string;
120
127
  'account.security.email_changed': string;
128
+ 'account.security.trusted_devices_section': string;
129
+ 'account.security.trusted_devices_intro': string;
130
+ 'account.security.trusted_devices_revoke': string;
131
+ 'account.security.trusted_devices_revoked': string;
132
+ 'account.profile.section': string;
133
+ 'account.profile.intro': string;
134
+ 'account.profile.name_label': string;
135
+ 'account.profile.avatar_label': string;
136
+ 'account.profile.submit': string;
137
+ 'account.profile.updated': string;
138
+ 'account.profile.not_supported': string;
139
+ 'account.apps.page_title': string;
140
+ 'account.apps.title': string;
141
+ 'account.apps.intro': string;
142
+ 'account.apps.logout': string;
143
+ 'account.apps.empty': string;
144
+ 'account.apps.tokens': string;
145
+ 'account.apps.revoke': string;
146
+ 'account.apps.revoke_confirm': string;
147
+ 'account.apps.revoked': string;
148
+ 'account.apps.not_supported': string;
121
149
  'account.email_confirmed.page_title': string;
122
150
  'account.email_confirmed.ok_title': string;
123
151
  'account.email_confirmed.ok_body': string;
@@ -164,6 +192,20 @@ export declare const DEFAULT_MESSAGES: {
164
192
  'admin.users.roles_placeholder': string;
165
193
  'admin.users.save_roles': string;
166
194
  'admin.users.sessions': string;
195
+ 'admin.users.create_section': string;
196
+ 'admin.users.create_name_placeholder': string;
197
+ 'admin.users.create_email_placeholder': string;
198
+ 'admin.users.create_password_placeholder': string;
199
+ 'admin.users.create_submit': string;
200
+ 'admin.users.created': string;
201
+ 'admin.users.reset_password': string;
202
+ 'admin.users.reset_sent': string;
203
+ 'admin.users.disable': string;
204
+ 'admin.users.enable': string;
205
+ 'admin.users.disabled': string;
206
+ 'admin.users.enabled': string;
207
+ 'admin.users.disabled_badge': string;
208
+ 'admin.users.disable_confirm': string;
167
209
  'admin.sessions.page_title': string;
168
210
  'admin.sessions.title': string;
169
211
  'admin.sessions.account': string;
@@ -240,15 +282,357 @@ export declare const DEFAULT_MESSAGES: {
240
282
  'mfa_challenge.required_no_enrollment': string;
241
283
  'errors.invalid_credentials': string;
242
284
  'errors.invalid_code': string;
285
+ 'errors.account_disabled': string;
243
286
  'errors.email_taken': string;
244
287
  'errors.signup_failed': string;
245
288
  'errors.invalid_or_expired_token': string;
246
289
  'errors.account_locked': string;
290
+ 'errors.session_expired': string;
291
+ 'errors.challenge_expired': string;
292
+ 'errors.passkeys_unavailable': string;
293
+ 'errors.no_passkey_registered': string;
294
+ 'mail.common.link_fallback': string;
295
+ 'mail.reset.subject': string;
296
+ 'mail.reset.heading': string;
297
+ 'mail.reset.intro': string;
298
+ 'mail.reset.cta': string;
299
+ 'mail.reset.fallback': string;
300
+ 'mail.reset.expires': string;
301
+ 'mail.verify.subject': string;
302
+ 'mail.verify.heading': string;
303
+ 'mail.verify.intro': string;
304
+ 'mail.verify.cta': string;
305
+ 'mail.verify.fallback': string;
306
+ 'mail.verify.expires': string;
307
+ 'mail.magic_link.subject': string;
308
+ 'mail.magic_link.heading': string;
309
+ 'mail.magic_link.intro': string;
310
+ 'mail.magic_link.cta': string;
311
+ 'mail.magic_link.fallback': string;
312
+ 'mail.new_login.subject': string;
313
+ 'mail.new_login.heading': string;
314
+ 'mail.new_login.intro': string;
315
+ 'mail.new_login.when': string;
316
+ 'mail.new_login.ip': string;
317
+ 'mail.new_login.device': string;
318
+ 'mail.new_login.fallback': string;
319
+ 'mail.email_change.subject': string;
320
+ 'mail.email_change.heading': string;
321
+ 'mail.email_change.intro': string;
322
+ 'mail.email_change.cta': string;
323
+ 'mail.email_change.fallback': string;
324
+ 'mail.email_change.expires': string;
247
325
  };
248
326
  /**
249
- * Resolve o catálogo ativo: mescla os overrides do locale selecionado SOBRE o
250
- * default pt-BR. Sem config, retorna os defaults intactos. Chaves omitidas pelo
251
- * locale escolhido caem no default pt-BR (fallback de cobertura).
327
+ * Catálogo embutido pt-BR. Espelha TODAS as chaves do default `en`. Ativado
328
+ * com `i18n: { locale: 'pt-BR' }` sem nenhuma config extra de mensagens.
329
+ */
330
+ export declare const PT_BR_MESSAGES: {
331
+ 'common.app_fallback': string;
332
+ 'common.brand_eyebrow': string;
333
+ 'login.page_title': string;
334
+ 'login.title': string;
335
+ 'login.identifier_intro': string;
336
+ 'login.email_label': string;
337
+ 'login.identifier_submit': string;
338
+ 'login.create_account': string;
339
+ 'login.forgot_password': string;
340
+ 'login.divider_or': string;
341
+ 'login.google': string;
342
+ 'login.greeting': string;
343
+ 'login.switch_account': string;
344
+ 'login.password_label': string;
345
+ 'login.submit': string;
346
+ 'login.magic_link_button': string;
347
+ 'login.magic_link_sent': string;
348
+ 'login.passkey_button': string;
349
+ 'signup.page_title': string;
350
+ 'signup.title': string;
351
+ 'signup.intro': string;
352
+ 'signup.name_label': string;
353
+ 'signup.email_label': string;
354
+ 'signup.password_label': string;
355
+ 'signup.submit': string;
356
+ 'signup.have_account': string;
357
+ 'forgot.page_title': string;
358
+ 'forgot.sent_title': string;
359
+ 'forgot.sent_body': string;
360
+ 'forgot.title': string;
361
+ 'forgot.intro': string;
362
+ 'forgot.email_label': string;
363
+ 'forgot.submit': string;
364
+ 'reset.page_title': string;
365
+ 'reset.done_title': string;
366
+ 'reset.done_body': string;
367
+ 'reset.title': string;
368
+ 'reset.intro': string;
369
+ 'reset.password_label': string;
370
+ 'reset.submit': string;
371
+ 'verify_email.page_title': string;
372
+ 'verify_email.verified_title': string;
373
+ 'verify_email.verified_body': string;
374
+ 'verify_email.invalid_title': string;
375
+ 'verify_email.invalid_body': string;
376
+ 'mfa_challenge.page_title': string;
377
+ 'mfa_challenge.title': string;
378
+ 'mfa_challenge.intro': string;
379
+ 'mfa_challenge.code_label': string;
380
+ 'mfa_challenge.submit': string;
381
+ 'mfa_challenge.recovery_summary': string;
382
+ 'mfa_challenge.recovery_submit': string;
383
+ 'mfa_challenge.passkey_button': string;
384
+ 'mfa_challenge.passkey_error': string;
385
+ 'mfa_challenge.trust_device': string;
386
+ 'consent.page_title': string;
387
+ 'consent.title': string;
388
+ 'consent.body': string;
389
+ 'consent.submit': string;
390
+ 'account.login.page_title': string;
391
+ 'account.login.title': string;
392
+ 'account.login.intro': string;
393
+ 'account.login.email_label': string;
394
+ 'account.login.password_label': string;
395
+ 'account.login.submit': string;
396
+ 'account.tokens.page_title': string;
397
+ 'account.tokens.title': string;
398
+ 'account.tokens.logout': string;
399
+ 'account.tokens.security': string;
400
+ 'account.tokens.created_notice': string;
401
+ 'account.tokens.name_placeholder': string;
402
+ 'account.tokens.create': string;
403
+ 'account.tokens.empty': string;
404
+ 'account.tokens.created_at': string;
405
+ 'account.tokens.last_used': string;
406
+ 'account.tokens.never_used': string;
407
+ 'account.tokens.scopes': string;
408
+ 'account.tokens.audience': string;
409
+ 'account.tokens.revoke': string;
410
+ 'account.security.page_title': string;
411
+ 'account.security.title': string;
412
+ 'account.security.logout': string;
413
+ 'account.security.current_email': string;
414
+ 'account.security.not_supported': string;
415
+ 'account.security.password_section': string;
416
+ 'account.security.current_password_label': string;
417
+ 'account.security.new_password_label': string;
418
+ 'account.security.change_password_submit': string;
419
+ 'account.security.password_changed': string;
420
+ 'account.security.email_section': string;
421
+ 'account.security.email_intro': string;
422
+ 'account.security.new_email_label': string;
423
+ 'account.security.email_password_label': string;
424
+ 'account.security.change_email_submit': string;
425
+ 'account.security.email_change_requested': string;
426
+ 'account.security.email_changed': string;
427
+ 'account.security.trusted_devices_section': string;
428
+ 'account.security.trusted_devices_intro': string;
429
+ 'account.security.trusted_devices_revoke': string;
430
+ 'account.security.trusted_devices_revoked': string;
431
+ 'account.profile.section': string;
432
+ 'account.profile.intro': string;
433
+ 'account.profile.name_label': string;
434
+ 'account.profile.avatar_label': string;
435
+ 'account.profile.submit': string;
436
+ 'account.profile.updated': string;
437
+ 'account.profile.not_supported': string;
438
+ 'account.apps.page_title': string;
439
+ 'account.apps.title': string;
440
+ 'account.apps.intro': string;
441
+ 'account.apps.logout': string;
442
+ 'account.apps.empty': string;
443
+ 'account.apps.tokens': string;
444
+ 'account.apps.revoke': string;
445
+ 'account.apps.revoke_confirm': string;
446
+ 'account.apps.revoked': string;
447
+ 'account.apps.not_supported': string;
448
+ 'account.email_confirmed.page_title': string;
449
+ 'account.email_confirmed.ok_title': string;
450
+ 'account.email_confirmed.ok_body': string;
451
+ 'account.email_confirmed.invalid_title': string;
452
+ 'account.email_confirmed.invalid_body': string;
453
+ 'account.mfa.page_title': string;
454
+ 'account.mfa.title': string;
455
+ 'account.mfa.logout': string;
456
+ 'account.mfa.recovery_codes_notice': string;
457
+ 'account.mfa.enroll_intro': string;
458
+ 'account.mfa.qr_alt': string;
459
+ 'account.mfa.manual_intro': string;
460
+ 'account.mfa.confirm_code_label': string;
461
+ 'account.mfa.activate': string;
462
+ 'account.mfa.enabled_html': string;
463
+ 'account.mfa.disable': string;
464
+ 'account.mfa.disabled_intro': string;
465
+ 'account.mfa.enable': string;
466
+ 'mfa.passkey.section_title': string;
467
+ 'mfa.passkey.section_intro': string;
468
+ 'mfa.passkey.add': string;
469
+ 'mfa.passkey.remove': string;
470
+ 'mfa.passkey.empty': string;
471
+ 'mfa.passkey.unnamed': string;
472
+ 'mfa.passkey.created_at': string;
473
+ 'mfa.passkey.register_error': string;
474
+ 'mfa.passkey.unsupported': string;
475
+ 'admin.nav.dashboard': string;
476
+ 'admin.nav.users': string;
477
+ 'admin.nav.clients': string;
478
+ 'admin.nav.audit': string;
479
+ 'admin.nav.logout': string;
480
+ 'admin.dashboard.page_title': string;
481
+ 'admin.dashboard.title': string;
482
+ 'admin.dashboard.users_count': string;
483
+ 'admin.dashboard.clients_count': string;
484
+ 'admin.dashboard.audit_count': string;
485
+ 'admin.dashboard.recent_title': string;
486
+ 'admin.users.page_title': string;
487
+ 'admin.users.title': string;
488
+ 'admin.users.search_placeholder': string;
489
+ 'admin.users.search': string;
490
+ 'admin.users.empty': string;
491
+ 'admin.users.roles_placeholder': string;
492
+ 'admin.users.save_roles': string;
493
+ 'admin.users.sessions': string;
494
+ 'admin.users.create_section': string;
495
+ 'admin.users.create_name_placeholder': string;
496
+ 'admin.users.create_email_placeholder': string;
497
+ 'admin.users.create_password_placeholder': string;
498
+ 'admin.users.create_submit': string;
499
+ 'admin.users.created': string;
500
+ 'admin.users.reset_password': string;
501
+ 'admin.users.reset_sent': string;
502
+ 'admin.users.disable': string;
503
+ 'admin.users.enable': string;
504
+ 'admin.users.disabled': string;
505
+ 'admin.users.enabled': string;
506
+ 'admin.users.disabled_badge': string;
507
+ 'admin.users.disable_confirm': string;
508
+ 'admin.sessions.page_title': string;
509
+ 'admin.sessions.title': string;
510
+ 'admin.sessions.account': string;
511
+ 'admin.sessions.back': string;
512
+ 'admin.sessions.not_supported': string;
513
+ 'admin.sessions.revoked_notice': string;
514
+ 'admin.sessions.sessions_section': string;
515
+ 'admin.sessions.sessions_empty': string;
516
+ 'admin.sessions.session_login_ts': string;
517
+ 'admin.sessions.session_amr': string;
518
+ 'admin.sessions.grants_section': string;
519
+ 'admin.sessions.grants_empty': string;
520
+ 'admin.sessions.grant_client': string;
521
+ 'admin.sessions.grant_tokens': string;
522
+ 'admin.sessions.revoke_all': string;
523
+ 'admin.sessions.revoke_confirm': string;
524
+ 'admin.clients.page_title': string;
525
+ 'admin.clients.title': string;
526
+ 'admin.clients.empty': string;
527
+ 'admin.clients.confidential': string;
528
+ 'admin.clients.public': string;
529
+ 'admin.clients.grants': string;
530
+ 'admin.clients.redirect_uris': string;
531
+ 'admin.clients.dynamic_notice': string;
532
+ 'admin.clients.static_section': string;
533
+ 'admin.clients.dynamic_section': string;
534
+ 'admin.clients.dynamic_empty': string;
535
+ 'admin.clients.dynamic_not_supported': string;
536
+ 'admin.clients.new': string;
537
+ 'admin.clients.new_title': string;
538
+ 'admin.clients.edit_title': string;
539
+ 'admin.clients.edit': string;
540
+ 'admin.clients.delete': string;
541
+ 'admin.clients.delete_confirm': string;
542
+ 'admin.clients.regenerate_secret': string;
543
+ 'admin.clients.regenerate_confirm': string;
544
+ 'admin.clients.back': string;
545
+ 'admin.clients.cancel': string;
546
+ 'admin.clients.save': string;
547
+ 'admin.clients.create': string;
548
+ 'admin.clients.secret_once_title': string;
549
+ 'admin.clients.secret_once_notice': string;
550
+ 'admin.clients.field_client_id': string;
551
+ 'admin.clients.field_client_id_placeholder': string;
552
+ 'admin.clients.field_client_id_help': string;
553
+ 'admin.clients.field_redirect_uris': string;
554
+ 'admin.clients.field_redirect_uris_help': string;
555
+ 'admin.clients.field_post_logout_uris': string;
556
+ 'admin.clients.field_post_logout_uris_help': string;
557
+ 'admin.clients.field_grant_types': string;
558
+ 'admin.clients.field_auth_method': string;
559
+ 'admin.audit.page_title': string;
560
+ 'admin.audit.title': string;
561
+ 'admin.audit.type_placeholder': string;
562
+ 'admin.audit.subject_placeholder': string;
563
+ 'admin.audit.filter': string;
564
+ 'admin.audit.empty': string;
565
+ 'admin.audit.not_supported': string;
566
+ 'admin.pagination.page': string;
567
+ 'admin.pagination.prev': string;
568
+ 'admin.pagination.next': string;
569
+ 'device.input.title': string;
570
+ 'device.input.intro': string;
571
+ 'device.input.submit': string;
572
+ 'device.input.error_invalid': string;
573
+ 'device.input.error_aborted': string;
574
+ 'device.input.error_generic': string;
575
+ 'device.confirm.title': string;
576
+ 'device.confirm.body': string;
577
+ 'device.confirm.submit': string;
578
+ 'device.confirm.abort': string;
579
+ 'device.success.title': string;
580
+ 'device.success.body': string;
581
+ 'mfa_challenge.required_no_enrollment': string;
582
+ 'errors.invalid_credentials': string;
583
+ 'errors.invalid_code': string;
584
+ 'errors.account_disabled': string;
585
+ 'errors.email_taken': string;
586
+ 'errors.signup_failed': string;
587
+ 'errors.invalid_or_expired_token': string;
588
+ 'errors.account_locked': string;
589
+ 'errors.session_expired': string;
590
+ 'errors.challenge_expired': string;
591
+ 'errors.passkeys_unavailable': string;
592
+ 'errors.no_passkey_registered': string;
593
+ 'mail.common.link_fallback': string;
594
+ 'mail.reset.subject': string;
595
+ 'mail.reset.heading': string;
596
+ 'mail.reset.intro': string;
597
+ 'mail.reset.cta': string;
598
+ 'mail.reset.fallback': string;
599
+ 'mail.reset.expires': string;
600
+ 'mail.verify.subject': string;
601
+ 'mail.verify.heading': string;
602
+ 'mail.verify.intro': string;
603
+ 'mail.verify.cta': string;
604
+ 'mail.verify.fallback': string;
605
+ 'mail.verify.expires': string;
606
+ 'mail.magic_link.subject': string;
607
+ 'mail.magic_link.heading': string;
608
+ 'mail.magic_link.intro': string;
609
+ 'mail.magic_link.cta': string;
610
+ 'mail.magic_link.fallback': string;
611
+ 'mail.new_login.subject': string;
612
+ 'mail.new_login.heading': string;
613
+ 'mail.new_login.intro': string;
614
+ 'mail.new_login.when': string;
615
+ 'mail.new_login.ip': string;
616
+ 'mail.new_login.device': string;
617
+ 'mail.new_login.fallback': string;
618
+ 'mail.email_change.subject': string;
619
+ 'mail.email_change.heading': string;
620
+ 'mail.email_change.intro': string;
621
+ 'mail.email_change.cta': string;
622
+ 'mail.email_change.fallback': string;
623
+ 'mail.email_change.expires': string;
624
+ };
625
+ /**
626
+ * Locales embutidos no host-kit. O `en` é o default; o `pt-BR` está disponível
627
+ * com `i18n: { locale: 'pt-BR' }` sem nenhuma config de mensagens extra. Os
628
+ * overrides/locales do host (via `I18nConfig.messages`) são mesclados por cima.
629
+ */
630
+ export declare const BUILTIN_MESSAGES: Record<string, AuthMessages>;
631
+ /**
632
+ * Resolve o catálogo ativo. Começa do catálogo embutido do locale selecionado
633
+ * (ou do default `en` quando o locale não é embutido), depois mescla os
634
+ * overrides do host por cima. Sem config, retorna o default `en` intacto.
635
+ * Chaves omitidas caem no default `en` (fallback de cobertura).
252
636
  */
253
637
  export declare function resolveMessages(i18n?: I18nConfig): AuthMessages;
254
638
  /**