@neofaceid/web-sdk 1.42.3 → 1.44.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.
package/dist/index.d.ts CHANGED
@@ -645,9 +645,41 @@ export declare interface DetectionResult {
645
645
  details?: any;
646
646
  }
647
647
 
648
+ /** Desfecho da inscrição de aparelho. */
649
+ export declare type DeviceEnrollmentOutcome = {
650
+ status: 'enrolled';
651
+ deviceLabel: string | null;
652
+ enrolledAt?: string;
653
+ } | {
654
+ status: 'expired';
655
+ } | {
656
+ status: 'cancelled';
657
+ };
658
+
648
659
  /** Token de inscrição de aparelho, devolvido por {@link requestDeviceEnrollmentToken}. */
649
660
  export declare interface DeviceEnrollmentToken {
650
- /** JWT RS256 de uso único. Vira o conteúdo do QR. */
661
+ /**
662
+ * Identificador curto, no formato `XXXX-XXXX`, de um alfabeto sem os pares
663
+ * que se confundem (`0/O`, `1/I/L`, `U/V`).
664
+ *
665
+ * **É isto que o QR deve carregar**, não o {@link token}. O JWT inteiro vira
666
+ * uma grade densa que exige tela grande e câmera boa, e deixa o segredo
667
+ * óptico — exposto em qualquer foto da tela. O handle fotografado vale muito
668
+ * menos: não carrega `person_id`, `consumer_id` nem assinatura, e morre na
669
+ * primeira troca. Como é legível, também serve para ditar por telefone ou
670
+ * digitar à mão quando a câmera falha.
671
+ */
672
+ handle: string;
673
+ /**
674
+ * Identificador da solicitação. É a chave do canal SSE que avisa quando o
675
+ * aparelho for inscrito: `/api/v1/devices/enrollment/{jti}/events/`.
676
+ */
677
+ jti: string;
678
+ /**
679
+ * JWT RS256 de uso único. Continua vindo por compatibilidade, mas **não deve
680
+ * ir para o QR** — quem resolve o handle é o Push, contra o core, por canal
681
+ * interno.
682
+ */
651
683
  token: string;
652
684
  /** Validade em segundos (o core emite 300). */
653
685
  expiresIn: number;
@@ -1372,6 +1404,12 @@ export declare interface ProofOfLifeResult {
1372
1404
  * `denied` e `expired` são desfechos, não exceções — quem chama precisa
1373
1405
  * distinguir os dois para dirigir a cascata de fallback: expirar pode cair
1374
1406
  * para senha, recusar **não pode**.
1407
+ *
1408
+ * `cancelled` carrega `source` pelo mesmo motivo: a pessoa fechar o modal no
1409
+ * navegador e a solicitação ser cancelada do outro lado são situações
1410
+ * diferentes, e dizer "você cancelou" para quem não cancelou é afirmar algo
1411
+ * falso. É o colapso que o core pediu para evitar entre `denied` e `expired`,
1412
+ * um nível abaixo.
1375
1413
  */
1376
1414
  export declare type PushApprovalOutcome = {
1377
1415
  status: 'approved';
@@ -1383,6 +1421,8 @@ export declare type PushApprovalOutcome = {
1383
1421
  status: 'expired';
1384
1422
  } | {
1385
1423
  status: 'cancelled';
1424
+ source: 'user' | 'server';
1425
+ reason?: string;
1386
1426
  };
1387
1427
 
1388
1428
  declare interface RecognitionResult {
@@ -1595,7 +1635,7 @@ export declare const registerPersonWithoutFace: (personData: {
1595
1635
  /**
1596
1636
  * Data de lançamento da versão atual
1597
1637
  */
1598
- export declare const RELEASE_DATE = "2026-09-14";
1638
+ export declare const RELEASE_DATE = "2026-09-16";
1599
1639
 
1600
1640
  declare interface RequestChallengeWithSessionParams {
1601
1641
  applicationToken: string;
@@ -1900,6 +1940,42 @@ export declare function startBiometricRegistration(personData: {
1900
1940
  onCannotGesture?: () => void;
1901
1941
  }): void;
1902
1942
 
1943
+ /**
1944
+ * Abre o fluxo de inscrição de aparelho: mostra o código, aguarda o celular
1945
+ * lê-lo e confirma o vínculo.
1946
+ *
1947
+ * Exige uma pessoa autenticada — o core pede o Bearer do DONOR junto do
1948
+ * `X-App-Token`, e por isso a inscrição só existe no autosserviço.
1949
+ *
1950
+ * O QR carrega o **handle curto**, nunca o JWT: um código denso exige tela
1951
+ * grande e câmera boa, e o token inteiro ficaria exposto em qualquer foto da
1952
+ * tela. Quem resolve o handle é a plataforma Push, contra o core, por canal
1953
+ * interno — o navegador não participa dessa troca.
1954
+ *
1955
+ * @example
1956
+ * ```ts
1957
+ * const r = await startDeviceEnrollment({
1958
+ * userAccessToken: sessao.accessToken,
1959
+ * applicationToken: TOKEN,
1960
+ * });
1961
+ * if (r.status === 'enrolled') {
1962
+ * // r.deviceLabel pode ser null enquanto o Push não envia o rótulo
1963
+ * }
1964
+ * ```
1965
+ */
1966
+ export declare function startDeviceEnrollment(options: StartDeviceEnrollmentOptions): Promise<DeviceEnrollmentOutcome>;
1967
+
1968
+ export declare interface StartDeviceEnrollmentOptions {
1969
+ /**
1970
+ * Access token do DONOR autenticado. A inscrição só existe no autosserviço,
1971
+ * com a pessoa logada — o core exige este Bearer **junto** do `X-App-Token`.
1972
+ */
1973
+ userAccessToken: string;
1974
+ applicationToken: string;
1975
+ /** Nome do integrador (fallback: `init({ appName })`). */
1976
+ appName?: string;
1977
+ }
1978
+
1903
1979
  /**
1904
1980
  * Função auxiliar para iniciar a captura de documento
1905
1981
  */
@@ -2032,7 +2108,7 @@ export declare const validateToken: (applicationToken: string) => Promise<boolea
2032
2108
  * MINOR: Incrementado quando adicionamos funcionalidades mantendo compatibilidade
2033
2109
  * PATCH: Incrementado quando corrigimos bugs mantendo compatibilidade
2034
2110
  */
2035
- export declare const VERSION = "1.42.3";
2111
+ export declare const VERSION = "1.44.0";
2036
2112
 
2037
2113
  /**
2038
2114
  * Executa `fn(sessionId)`. Se o servidor devolver 410 (sessão consumida/expirada),