@fiado/type-kit 3.301.0 → 3.303.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/_test_/unit/kyc/KycProofOfAddressCompletedV1.test.ts +195 -0
  2. package/_test_/unit/retailWizard/proofOfAddressPrepareRequest.test.ts +26 -0
  3. package/bin/kyc/enums/ProofAddressStatusEnum.d.ts +33 -0
  4. package/bin/kyc/enums/ProofAddressStatusEnum.js +37 -0
  5. package/bin/kyc/events/KycProofOfAddressCompletedV1.d.ts +49 -0
  6. package/bin/kyc/events/KycProofOfAddressCompletedV1.js +75 -0
  7. package/bin/kyc/index.d.ts +2 -0
  8. package/bin/kyc/index.js +2 -0
  9. package/bin/retailWizard/dtos/AccountStep.d.ts +10 -0
  10. package/bin/retailWizard/dtos/requests/ProofOfAddressPrepareRequest.d.ts +10 -0
  11. package/bin/retailWizard/dtos/requests/ProofOfAddressPrepareRequest.js +28 -0
  12. package/bin/retailWizard/dtos/responses/AccountStatusResponse.d.ts +11 -7
  13. package/bin/retailWizard/dtos/responses/KycPrepareResponse.d.ts +15 -0
  14. package/bin/retailWizard/dtos/responses/KycPrepareResponse.js +12 -1
  15. package/bin/retailWizard/dtos/responses/ProofOfAddressPrepareResponse.d.ts +26 -0
  16. package/bin/retailWizard/dtos/responses/ProofOfAddressPrepareResponse.js +2 -0
  17. package/bin/retailWizard/enums/AccountOutcomeEnum.d.ts +14 -0
  18. package/bin/retailWizard/enums/AccountOutcomeEnum.js +18 -0
  19. package/bin/retailWizard/enums/AccountStepStatusEnum.d.ts +10 -0
  20. package/bin/retailWizard/enums/AccountStepStatusEnum.js +14 -0
  21. package/bin/retailWizard/enums/AccountVerdictEnum.d.ts +21 -0
  22. package/bin/retailWizard/enums/AccountVerdictEnum.js +25 -0
  23. package/bin/retailWizard/index.d.ts +6 -3
  24. package/bin/retailWizard/index.js +6 -3
  25. package/package.json +1 -1
  26. package/src/kyc/enums/ProofAddressStatusEnum.ts +44 -0
  27. package/src/kyc/events/KycProofOfAddressCompletedV1.ts +68 -0
  28. package/src/kyc/index.ts +2 -0
  29. package/src/retailWizard/dtos/AccountStep.ts +11 -0
  30. package/src/retailWizard/dtos/requests/ProofOfAddressPrepareRequest.ts +15 -0
  31. package/src/retailWizard/dtos/responses/AccountStatusResponse.ts +11 -7
  32. package/src/retailWizard/dtos/responses/KycPrepareResponse.ts +16 -0
  33. package/src/retailWizard/dtos/responses/ProofOfAddressPrepareResponse.ts +27 -0
  34. package/src/retailWizard/enums/AccountOutcomeEnum.ts +14 -0
  35. package/src/retailWizard/enums/AccountStepStatusEnum.ts +10 -0
  36. package/src/retailWizard/enums/AccountVerdictEnum.ts +21 -0
  37. package/src/retailWizard/index.ts +6 -3
  38. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.d.ts +0 -11
  39. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.js +0 -46
  40. package/bin/loanCredit/enums/ClientLevelEnum.d.ts +0 -11
  41. package/bin/loanCredit/enums/ClientLevelEnum.js +0 -15
  42. package/bin/retailWizard/dtos/AccountStation.d.ts +0 -14
  43. package/bin/retailWizard/enums/AccountIssuanceStatusEnum.d.ts +0 -12
  44. package/bin/retailWizard/enums/AccountIssuanceStatusEnum.js +0 -16
  45. package/bin/retailWizard/enums/AccountStationStatusEnum.d.ts +0 -9
  46. package/bin/retailWizard/enums/AccountStationStatusEnum.js +0 -13
  47. package/src/retailWizard/dtos/AccountStation.ts +0 -15
  48. package/src/retailWizard/enums/AccountIssuanceStatusEnum.ts +0 -12
  49. package/src/retailWizard/enums/AccountStationStatusEnum.ts +0 -9
  50. /package/bin/retailWizard/dtos/{AccountStation.js → AccountStep.js} +0 -0
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountStepStatusEnum = void 0;
4
+ /**
5
+ * Estado de un requisito del expediente de la cuenta PagoConFiado.
6
+ * SureKeep Fase 2 — pista Retail.
7
+ */
8
+ var AccountStepStatusEnum;
9
+ (function (AccountStepStatusEnum) {
10
+ AccountStepStatusEnum["COMPLETED"] = "COMPLETED";
11
+ AccountStepStatusEnum["PENDING"] = "PENDING";
12
+ /** Depende de otro requisito todavia sin cumplir. */
13
+ AccountStepStatusEnum["LOCKED"] = "LOCKED";
14
+ })(AccountStepStatusEnum || (exports.AccountStepStatusEnum = AccountStepStatusEnum = {}));
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Veredicto del expediente del comprador para abrir su cuenta PagoConFiado, tal como lo publica
3
+ * `fiado-onboarding-lambda` en `MESSAGE.FIDO`. SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export declare enum AccountVerdictEnum {
6
+ /** La cuenta ya existe. */
7
+ ACCOUNT_CREATED = "ACCOUNT_CREATED",
8
+ /** Coincidencia en la lista de Fiado: terminal, la cuenta no va a abrir. */
9
+ CANNOT_OPEN = "CANNOT_OPEN",
10
+ /** Recuperable: hay que volver a subir la identificacion. */
11
+ UPLOAD_IDENTIFICATION_AGAIN = "UPLOAD_IDENTIFICATION_AGAIN",
12
+ /** Recuperable: falta informacion. */
13
+ INFO_NEEDED = "INFO_NEEDED",
14
+ /** La revision esta en curso; solo cabe esperar. */
15
+ INFO_VERIFICATION_IN_PROCESS = "INFO_VERIFICATION_IN_PROCESS",
16
+ /**
17
+ * Faltan datos del expediente. Es el valor POR DEFECTO del lambda de onboarding cuando ninguna
18
+ * otra condicion aplica, asi que no alcanza para diagnosticar: hay que mirar los `steps`.
19
+ */
20
+ COMPLETE_YOUR_INFORMATION = "COMPLETE_YOUR_INFORMATION"
21
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountVerdictEnum = void 0;
4
+ /**
5
+ * Veredicto del expediente del comprador para abrir su cuenta PagoConFiado, tal como lo publica
6
+ * `fiado-onboarding-lambda` en `MESSAGE.FIDO`. SureKeep Fase 2 — pista Retail.
7
+ */
8
+ var AccountVerdictEnum;
9
+ (function (AccountVerdictEnum) {
10
+ /** La cuenta ya existe. */
11
+ AccountVerdictEnum["ACCOUNT_CREATED"] = "ACCOUNT_CREATED";
12
+ /** Coincidencia en la lista de Fiado: terminal, la cuenta no va a abrir. */
13
+ AccountVerdictEnum["CANNOT_OPEN"] = "CANNOT_OPEN";
14
+ /** Recuperable: hay que volver a subir la identificacion. */
15
+ AccountVerdictEnum["UPLOAD_IDENTIFICATION_AGAIN"] = "UPLOAD_IDENTIFICATION_AGAIN";
16
+ /** Recuperable: falta informacion. */
17
+ AccountVerdictEnum["INFO_NEEDED"] = "INFO_NEEDED";
18
+ /** La revision esta en curso; solo cabe esperar. */
19
+ AccountVerdictEnum["INFO_VERIFICATION_IN_PROCESS"] = "INFO_VERIFICATION_IN_PROCESS";
20
+ /**
21
+ * Faltan datos del expediente. Es el valor POR DEFECTO del lambda de onboarding cuando ninguna
22
+ * otra condicion aplica, asi que no alcanza para diagnosticar: hay que mirar los `steps`.
23
+ */
24
+ AccountVerdictEnum["COMPLETE_YOUR_INFORMATION"] = "COMPLETE_YOUR_INFORMATION";
25
+ })(AccountVerdictEnum || (exports.AccountVerdictEnum = AccountVerdictEnum = {}));
@@ -13,8 +13,9 @@ export * from './enums/ProspectStatusEnum';
13
13
  export * from './enums/PendingReasonEnum';
14
14
  export * from './enums/OccupationEnum';
15
15
  export * from './enums/BeneficiaryRelationEnum';
16
- export * from './enums/AccountIssuanceStatusEnum';
17
- export * from './enums/AccountStationStatusEnum';
16
+ export * from './enums/AccountVerdictEnum';
17
+ export * from './enums/AccountOutcomeEnum';
18
+ export * from './enums/AccountStepStatusEnum';
18
19
  export * from './dtos/WizardConsents';
19
20
  export * from './dtos/WizardPayment';
20
21
  export * from './dtos/WizardProduct';
@@ -24,7 +25,7 @@ export * from './dtos/ProspectNewCustomer';
24
25
  export * from './dtos/WizardBeneficiary';
25
26
  export * from './dtos/WizardLoan';
26
27
  export * from './dtos/WizardCreditSummary';
27
- export * from './dtos/AccountStation';
28
+ export * from './dtos/AccountStep';
28
29
  export * from './dtos/WizardSession';
29
30
  export * from './dtos/OtpVerification';
30
31
  export * from './dtos/Sale';
@@ -39,6 +40,7 @@ export * from './dtos/requests/ConsentsRequest';
39
40
  export * from './dtos/requests/KycPrepareRequest';
40
41
  export * from './dtos/requests/KycConfirmRequest';
41
42
  export * from './dtos/requests/KycManualRequest';
43
+ export * from './dtos/requests/ProofOfAddressPrepareRequest';
42
44
  export * from './dtos/requests/OccupationRequest';
43
45
  export * from './dtos/requests/AddProductRequest';
44
46
  export * from './dtos/requests/DeleteProductRequest';
@@ -62,6 +64,7 @@ export * from './dtos/requests/DownPaymentRequest';
62
64
  export * from './dtos/requests/SignatureSignRequest';
63
65
  export * from './dtos/requests/RegisterDeviceRequest';
64
66
  export * from './dtos/responses/KycPrepareResponse';
67
+ export * from './dtos/responses/ProofOfAddressPrepareResponse';
65
68
  export * from './dtos/responses/SessionFinanciersResponse';
66
69
  export * from './dtos/responses/ScoreConsultResponse';
67
70
  export * from './dtos/responses/ScoreResultResponse';
@@ -31,8 +31,9 @@ __exportStar(require("./enums/ProspectStatusEnum"), exports);
31
31
  __exportStar(require("./enums/PendingReasonEnum"), exports);
32
32
  __exportStar(require("./enums/OccupationEnum"), exports);
33
33
  __exportStar(require("./enums/BeneficiaryRelationEnum"), exports);
34
- __exportStar(require("./enums/AccountIssuanceStatusEnum"), exports);
35
- __exportStar(require("./enums/AccountStationStatusEnum"), exports);
34
+ __exportStar(require("./enums/AccountVerdictEnum"), exports);
35
+ __exportStar(require("./enums/AccountOutcomeEnum"), exports);
36
+ __exportStar(require("./enums/AccountStepStatusEnum"), exports);
36
37
  // DTOs anidados
37
38
  __exportStar(require("./dtos/WizardConsents"), exports);
38
39
  __exportStar(require("./dtos/WizardPayment"), exports);
@@ -43,7 +44,7 @@ __exportStar(require("./dtos/ProspectNewCustomer"), exports);
43
44
  __exportStar(require("./dtos/WizardBeneficiary"), exports);
44
45
  __exportStar(require("./dtos/WizardLoan"), exports);
45
46
  __exportStar(require("./dtos/WizardCreditSummary"), exports);
46
- __exportStar(require("./dtos/AccountStation"), exports);
47
+ __exportStar(require("./dtos/AccountStep"), exports);
47
48
  // Entidades principales (shapes de estado/persistencia — planas)
48
49
  __exportStar(require("./dtos/WizardSession"), exports);
49
50
  __exportStar(require("./dtos/OtpVerification"), exports);
@@ -61,6 +62,7 @@ __exportStar(require("./dtos/requests/ConsentsRequest"), exports);
61
62
  __exportStar(require("./dtos/requests/KycPrepareRequest"), exports);
62
63
  __exportStar(require("./dtos/requests/KycConfirmRequest"), exports);
63
64
  __exportStar(require("./dtos/requests/KycManualRequest"), exports);
65
+ __exportStar(require("./dtos/requests/ProofOfAddressPrepareRequest"), exports);
64
66
  __exportStar(require("./dtos/requests/OccupationRequest"), exports);
65
67
  __exportStar(require("./dtos/requests/AddProductRequest"), exports);
66
68
  __exportStar(require("./dtos/requests/DeleteProductRequest"), exports);
@@ -85,6 +87,7 @@ __exportStar(require("./dtos/requests/SignatureSignRequest"), exports);
85
87
  __exportStar(require("./dtos/requests/RegisterDeviceRequest"), exports);
86
88
  // Response DTOs (output tipado por endpoint)
87
89
  __exportStar(require("./dtos/responses/KycPrepareResponse"), exports);
90
+ __exportStar(require("./dtos/responses/ProofOfAddressPrepareResponse"), exports);
88
91
  __exportStar(require("./dtos/responses/SessionFinanciersResponse"), exports);
89
92
  __exportStar(require("./dtos/responses/ScoreConsultResponse"), exports);
90
93
  __exportStar(require("./dtos/responses/ScoreResultResponse"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.301.0",
3
+ "version": "3.303.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Resultado del procesamiento del comprobante de domicilio de Metamap: "¿pudimos usar el
3
+ * comprobante?", que no es lo mismo que "¿Metamap aprobó el documento?".
4
+ *
5
+ * Espeja `@fiado/fiado-abstractions` (`Fiado/Identity/ProofAddressStatusEnum`) porque los
6
+ * consumidores de SureKeep no dependen de esa lib.
7
+ */
8
+ export enum ProofAddressStatusEnum {
9
+ /** Domicilio de México o Estados Unidos resuelto a nivel calle y guardado con sus componentes. */
10
+ SUCCESS = "SUCCESS",
11
+
12
+ /** Domicilio mexicano que el geocoder no resolvió a nivel calle. Se guardó el texto del recibo para revisión manual. */
13
+ MEX_HELP_NEEDED = "MEX_HELP_NEEDED",
14
+
15
+ /** Igual que `MEX_HELP_NEEDED`, para un domicilio estadounidense. */
16
+ USA_HELP_NEEDED = "USA_HELP_NEEDED",
17
+
18
+ /** El usuario declaró un país en Metamap y el domicilio resolvió al otro. Requiere revisión. */
19
+ COUNTRY_MISMATCH = "COUNTRY_MISMATCH",
20
+
21
+ /** El domicilio es de un país fuera de México y Estados Unidos. Se guarda pero NO habilita el requisito. */
22
+ COUNTRY_NOT_SUPPORTED = "COUNTRY_NOT_SUPPORTED",
23
+
24
+ /** Metamap mandó el documento a revisión manual. No se procesa hasta tener su veredicto. */
25
+ PENDING_METAMAP_REVIEW = "PENDING_METAMAP_REVIEW",
26
+
27
+ /** El OCR de Metamap no devolvió domicilio: el comprobante es ilegible o no es un comprobante. */
28
+ NO_ADDRESS_DETECTED = "NO_ADDRESS_DETECTED",
29
+
30
+ /** El geocoder respondió sin candidatos. Texto ilegible o domicilio fuera de los países consultados. */
31
+ PLACES_NO_MATCH = "PLACES_NO_MATCH",
32
+
33
+ /** No se pudo traer la evidencia de Metamap (timeout, 5xx). Reintentable. */
34
+ METAMAP_ERROR = "METAMAP_ERROR",
35
+
36
+ /** Falló `places-business`. Reintentable. */
37
+ PLACES_ERROR = "PLACES_ERROR",
38
+
39
+ /** Falló `fiado-address-lambda` al guardar el domicilio. Reintentable. */
40
+ ADDRESS_SAVE_ERROR = "ADDRESS_SAVE_ERROR",
41
+
42
+ /** El domicilio se guardó pero falló prender la casilla. Reintentable — el dato está a salvo. */
43
+ CHECKBOX_ERROR = "CHECKBOX_ERROR",
44
+ }
@@ -0,0 +1,68 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsBoolean, IsEnum, IsIn, IsISO8601, IsNotEmpty, IsOptional, IsString, Matches } from 'class-validator';
3
+ import { ProofAddressStatusEnum } from '../enums/ProofAddressStatusEnum';
4
+
5
+ /**
6
+ * El resultado del COMPROBANTE DE DOMICILIO de Metamap, publicado por `kyc-metamap-webhook` cuando
7
+ * termina de procesarlo. Es un flow aparte del documento de identidad.
8
+ *
9
+ * **Convive con `KycVerificationChangedV1` y `KycStepCompletedV1` en la MISMA cola**
10
+ * (`RetailKycInboundQueue`). El discriminador es `eventType`.
11
+ *
12
+ * 🔴 **Sin PII, a propósito.** No lleva el domicilio ni el texto del recibo: solo identificadores
13
+ * operacionales y el veredicto. Quien necesite el domicilio lo lee del expediente del cliente.
14
+ *
15
+ * **Idempotencia:** la clave es `verificationId`. Un comprobante se procesa una sola vez por
16
+ * verificación; reprocesar el evento escribe el mismo valor.
17
+ *
18
+ * SureKeep Fase 2 — comprobante de domicilio del paso 02.
19
+ */
20
+ export class KycProofOfAddressCompletedV1 {
21
+ /**
22
+ * Discriminador del tipo de evento. **Requerido**, a diferencia de `KycStepCompletedV1`: ese es
23
+ * opcional por los mensajes que ya estaban en vuelo, éste nace hoy y puede exigirlo desde el primero.
24
+ */
25
+ @Expose() @IsIn(['KycProofOfAddressCompletedV1'])
26
+ eventType!: string;
27
+
28
+ /** Correlaciona el comprobante con su verificación de Metamap. */
29
+ @Expose() @IsString() @IsNotEmpty()
30
+ verificationId!: string;
31
+
32
+ /**
33
+ * Con esto el consumidor encuentra la sesión (el gate de pertenencia). `@IsNotEmpty()` y no solo
34
+ * `@IsString()`: un `''` colado fallaría tres pasos río abajo en vez de en el boundary.
35
+ */
36
+ @Expose() @IsString() @IsNotEmpty()
37
+ directoryId!: string;
38
+
39
+ /** Identidad Fiado del cliente. Opcional: el productor publica `''` cuando Metamap no lo manda. */
40
+ @Expose() @IsOptional() @IsString()
41
+ peopleId?: string;
42
+
43
+ /** Por qué el comprobante quedó como quedó — el motivo legible, no solo si sirvió. */
44
+ @Expose() @IsEnum(ProofAddressStatusEnum)
45
+ status!: ProofAddressStatusEnum;
46
+
47
+ /**
48
+ * ¿Quedó un domicilio en el expediente del cliente? Va explícito aunque sea derivable del
49
+ * `status`: sin él cada consumidor reimplementaría el mapa de 12 casos que conoce el productor.
50
+ */
51
+ @Expose() @IsBoolean()
52
+ addressPersisted!: boolean;
53
+
54
+ /**
55
+ * Cuándo se cerró el comprobante. **Obligatorio:** la cola es SQS estándar, que no garantiza
56
+ * orden, y el consumidor descarta lo que llega más viejo que lo que ya escribió.
57
+ *
58
+ * ⚠️ **UTC estricto, con `Z` y sin offset** — por eso el `@Matches` además del `@IsISO8601()`.
59
+ * `@IsISO8601()` solo acepta `2026-08-11T15:05:00+05:00`, y ese es el que hace daño: léxicamente
60
+ * es "mayor" que un `T10:06:00Z` posterior, así que el consumidor descarta el evento real y nada
61
+ * truena. Normalizar a UTC es trabajo del webhook; este candado lo manda al DLQ si deja de hacerlo.
62
+ */
63
+ @Expose() @IsString() @IsISO8601({ strict: true })
64
+ @Matches(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, {
65
+ message: 'occurredAt debe ser ISO-8601 en UTC con Z (ej. 2026-08-11T10:05:00.000Z): un offset rompe el orden léxico',
66
+ })
67
+ occurredAt!: string;
68
+ }
package/src/kyc/index.ts CHANGED
@@ -4,6 +4,7 @@ export * from './enums/KycVerificationStatusEnum';
4
4
  export * from './enums/KycSubCheckStatusEnum';
5
5
  export * from './enums/KycWatchlistStatusEnum';
6
6
  export * from './enums/KycSubCheckNameEnum';
7
+ export * from './enums/ProofAddressStatusEnum';
7
8
 
8
9
  // Sub-pasos descompuestos (SureKeep F2)
9
10
  export * from './dtos/KycSubChecks';
@@ -24,3 +25,4 @@ export * from './dtos/responses/KycByDirectoryResponse';
24
25
  // Events
25
26
  export * from './events/KycVerificationChangedV1';
26
27
  export * from './events/KycStepCompletedV1';
28
+ export * from './events/KycProofOfAddressCompletedV1';
@@ -0,0 +1,11 @@
1
+ import { AccountStepStatusEnum } from '../enums/AccountStepStatusEnum';
2
+
3
+ /**
4
+ * Un requisito del expediente de la cuenta PagoConFiado del comprador.
5
+ * SureKeep Fase 2 — pista Retail.
6
+ */
7
+ export interface AccountStep {
8
+ /** `STEP_ID_VALIDATION`, `STEP_ADDRESS`, ... El catalogo lo define `fiado-onboarding-lambda`. */
9
+ step: string;
10
+ status: AccountStepStatusEnum;
11
+ }
@@ -0,0 +1,15 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsIn } from 'class-validator';
3
+ import { KycModalityInput } from './KycPrepareRequest';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/proof-of-address/prepare — prepara el flujo del COMPROBANTE DE
7
+ * DOMICILIO de Metamap. Gemelo de `KycPrepareRequest` para el otro flow.
8
+ * `modality` = link al cliente o captura en tablet.
9
+ * SureKeep Fase 2 — pista Retail.
10
+ */
11
+ export class ProofOfAddressPrepareRequest {
12
+ @Expose()
13
+ @IsIn(['CUSTOMER_LINK', 'STORE_DEVICE'])
14
+ modality!: KycModalityInput;
15
+ }
@@ -1,5 +1,6 @@
1
- import { AccountIssuanceStatusEnum } from '../../enums/AccountIssuanceStatusEnum';
2
- import { AccountStation } from '../AccountStation';
1
+ import { AccountOutcomeEnum } from '../../enums/AccountOutcomeEnum';
2
+ import { AccountVerdictEnum } from '../../enums/AccountVerdictEnum';
3
+ import { AccountStep } from '../AccountStep';
3
4
 
4
5
  /**
5
6
  * GET /wizard/sessions/:id/account-status — estado de la cuenta PagoConFiado del comprador.
@@ -11,9 +12,12 @@ export interface AccountStatusResponse {
11
12
  accountReady: boolean;
12
13
  /** CLABE de la cuenta. `null` mientras no haya cuenta. */
13
14
  clabe: string | null;
14
- issuanceStatus: AccountIssuanceStatusEnum;
15
- /** Camino de la apertura, en orden cronologico. Vacio si la emision no arranco. */
16
- stations: AccountStation[];
17
- /** Motivo legible del ultimo fallo. `null` si no hay ninguno. */
18
- failReason: string | null;
15
+ /** Veredicto crudo del expediente, tal como lo publica el lambda de onboarding. */
16
+ verdict: AccountVerdictEnum;
17
+ /** Lectura accionable del veredicto: es lo que el front usa para decidir. */
18
+ outcome: AccountOutcomeEnum;
19
+ /** Los `steps` que no estan COMPLETED. Vacio si el expediente esta completo. */
20
+ missingSteps: string[];
21
+ /** Requisitos del expediente con su estado. Vacio si no hay expediente que leer. */
22
+ steps: AccountStep[];
19
23
  }
@@ -48,6 +48,22 @@ export interface KycSdkMetadata {
48
48
  * no código.
49
49
  */
50
50
  source?: KycMetadataSourceEnum;
51
+ /**
52
+ * Paso del onboarding que originó la verificación. Es lo único que distingue al comprobante de
53
+ * domicilio del documento de identidad: `kyc-metamap-webhook` rutea por este campo.
54
+ */
55
+ kycStep?: KycMetadataStepEnum;
56
+ }
57
+
58
+ /**
59
+ * Paso del onboarding que originó una verificación, tal como viaja en `KycSdkMetadata.kycStep`.
60
+ *
61
+ * Enum y no string libre por el mismo motivo que `KycMetadataSourceEnum`: el valor lo escribe un
62
+ * repo (`retail-wizard-business`) y lo compara otro (`kyc-metamap-webhook`). Un typo dejaría al
63
+ * webhook procesando el comprobante como si fuera un documento de identidad, sin un solo error.
64
+ */
65
+ export enum KycMetadataStepEnum {
66
+ PROOF_OF_ADDRESS = 'PROOF_OF_ADDRESS',
51
67
  }
52
68
 
53
69
  /**
@@ -0,0 +1,27 @@
1
+ import { KycModalityEnum } from '../../../retailCustomer/enums/KycModalityEnum';
2
+
3
+ /**
4
+ * POST /wizard/sessions/:id/proof-of-address/prepare — respuesta. Gemelo de `KycPrepareResponse`
5
+ * para el flow del comprobante de domicilio; la metadata del SDK es la misma `KycSdkMetadata` y la
6
+ * marca de que es comprobante viaja en su `kycStep`.
7
+ *
8
+ * **Bifurca por modalidad**, por eso todo es opcional salvo `modality`:
9
+ * - `STORE_DEVICE` → `clientId` + `flowId` + `metadata` para montar el `<metamap-button>` en la tablet.
10
+ * - `CUSTOMER_LINK` → `shortUrl` para el QR / SMS al teléfono del cliente.
11
+ *
12
+ * SureKeep Fase 2 — pista Retail.
13
+ */
14
+ export interface ProofOfAddressPrepareResponse {
15
+ /** `MANUAL` no es una modalidad de `prepare`: la captura manual es su propio endpoint. */
16
+ modality: KycModalityEnum.CUSTOMER_LINK | KycModalityEnum.STORE_DEVICE;
17
+ /** STORE_DEVICE — clientId de la cuenta Metamap (mismo valor en prod y dev). */
18
+ clientId?: string;
19
+ /** STORE_DEVICE — flow de Metamap del comprobante de domicilio. */
20
+ flowId?: string;
21
+ /** STORE_DEVICE — `KycSdkMetadata` serializada en base64. */
22
+ metadata?: string;
23
+ /** CUSTOMER_LINK — link corto para el QR o el SMS. */
24
+ shortUrl?: string;
25
+ /** El expediente ya tiene domicilio principal: no hay comprobante que pedir. */
26
+ alreadyHasAddress?: boolean;
27
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Lectura accionable del veredicto de la cuenta PagoConFiado: lo que el front usa para decidir si
3
+ * destraba, sigue esperando, pide datos o corta. SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum AccountOutcomeEnum {
6
+ /** Hay cuenta: el paso se destraba. */
7
+ READY = 'READY',
8
+ /** La apertura avanza sola; el front sigue polleando. */
9
+ IN_PROGRESS = 'IN_PROGRESS',
10
+ /** Falta completar el expediente; el detalle esta en `missingSteps`. */
11
+ MISSING_INFO = 'MISSING_INFO',
12
+ /** Terminal: la cuenta no va a abrir. */
13
+ CANNOT_OPEN = 'CANNOT_OPEN',
14
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Estado de un requisito del expediente de la cuenta PagoConFiado.
3
+ * SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum AccountStepStatusEnum {
6
+ COMPLETED = 'COMPLETED',
7
+ PENDING = 'PENDING',
8
+ /** Depende de otro requisito todavia sin cumplir. */
9
+ LOCKED = 'LOCKED',
10
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Veredicto del expediente del comprador para abrir su cuenta PagoConFiado, tal como lo publica
3
+ * `fiado-onboarding-lambda` en `MESSAGE.FIDO`. SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum AccountVerdictEnum {
6
+ /** La cuenta ya existe. */
7
+ ACCOUNT_CREATED = 'ACCOUNT_CREATED',
8
+ /** Coincidencia en la lista de Fiado: terminal, la cuenta no va a abrir. */
9
+ CANNOT_OPEN = 'CANNOT_OPEN',
10
+ /** Recuperable: hay que volver a subir la identificacion. */
11
+ UPLOAD_IDENTIFICATION_AGAIN = 'UPLOAD_IDENTIFICATION_AGAIN',
12
+ /** Recuperable: falta informacion. */
13
+ INFO_NEEDED = 'INFO_NEEDED',
14
+ /** La revision esta en curso; solo cabe esperar. */
15
+ INFO_VERIFICATION_IN_PROCESS = 'INFO_VERIFICATION_IN_PROCESS',
16
+ /**
17
+ * Faltan datos del expediente. Es el valor POR DEFECTO del lambda de onboarding cuando ninguna
18
+ * otra condicion aplica, asi que no alcanza para diagnosticar: hay que mirar los `steps`.
19
+ */
20
+ COMPLETE_YOUR_INFORMATION = 'COMPLETE_YOUR_INFORMATION',
21
+ }
@@ -16,8 +16,9 @@ export * from './enums/ProspectStatusEnum';
16
16
  export * from './enums/PendingReasonEnum';
17
17
  export * from './enums/OccupationEnum';
18
18
  export * from './enums/BeneficiaryRelationEnum';
19
- export * from './enums/AccountIssuanceStatusEnum';
20
- export * from './enums/AccountStationStatusEnum';
19
+ export * from './enums/AccountVerdictEnum';
20
+ export * from './enums/AccountOutcomeEnum';
21
+ export * from './enums/AccountStepStatusEnum';
21
22
 
22
23
  // DTOs anidados
23
24
  export * from './dtos/WizardConsents';
@@ -29,7 +30,7 @@ export * from './dtos/ProspectNewCustomer';
29
30
  export * from './dtos/WizardBeneficiary';
30
31
  export * from './dtos/WizardLoan';
31
32
  export * from './dtos/WizardCreditSummary';
32
- export * from './dtos/AccountStation';
33
+ export * from './dtos/AccountStep';
33
34
 
34
35
  // Entidades principales (shapes de estado/persistencia — planas)
35
36
  export * from './dtos/WizardSession';
@@ -50,6 +51,7 @@ export * from './dtos/requests/ConsentsRequest';
50
51
  export * from './dtos/requests/KycPrepareRequest';
51
52
  export * from './dtos/requests/KycConfirmRequest';
52
53
  export * from './dtos/requests/KycManualRequest';
54
+ export * from './dtos/requests/ProofOfAddressPrepareRequest';
53
55
  export * from './dtos/requests/OccupationRequest';
54
56
  export * from './dtos/requests/AddProductRequest';
55
57
  export * from './dtos/requests/DeleteProductRequest';
@@ -75,6 +77,7 @@ export * from './dtos/requests/RegisterDeviceRequest';
75
77
 
76
78
  // Response DTOs (output tipado por endpoint)
77
79
  export * from './dtos/responses/KycPrepareResponse';
80
+ export * from './dtos/responses/ProofOfAddressPrepareResponse';
78
81
  export * from './dtos/responses/SessionFinanciersResponse';
79
82
  export * from './dtos/responses/ScoreConsultResponse';
80
83
  export * from './dtos/responses/ScoreResultResponse';
@@ -1,11 +0,0 @@
1
- /**
2
- * Body de PUT /credits/:creditId/checklist (loan-credit-business). Marca condiciones de activación
3
- * cumplidas. Solo se mandan las que cambian; en F3 las marcarán los flujos de firma de contrato
4
- * (`downPayment` + `contractSigned`) y de enrolamiento MDM (`imeiEnrolled` + `lockVerified`).
5
- */
6
- export declare class UpdateActivationChecklistRequest {
7
- downPayment?: boolean;
8
- contractSigned?: boolean;
9
- imeiEnrolled?: boolean;
10
- lockVerified?: boolean;
11
- }
@@ -1,46 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UpdateActivationChecklistRequest = void 0;
13
- const class_transformer_1 = require("class-transformer");
14
- const class_validator_1 = require("class-validator");
15
- /**
16
- * Body de PUT /credits/:creditId/checklist (loan-credit-business). Marca condiciones de activación
17
- * cumplidas. Solo se mandan las que cambian; en F3 las marcarán los flujos de firma de contrato
18
- * (`downPayment` + `contractSigned`) y de enrolamiento MDM (`imeiEnrolled` + `lockVerified`).
19
- */
20
- class UpdateActivationChecklistRequest {
21
- }
22
- exports.UpdateActivationChecklistRequest = UpdateActivationChecklistRequest;
23
- __decorate([
24
- (0, class_transformer_1.Expose)(),
25
- (0, class_validator_1.IsOptional)(),
26
- (0, class_validator_1.IsBoolean)(),
27
- __metadata("design:type", Boolean)
28
- ], UpdateActivationChecklistRequest.prototype, "downPayment", void 0);
29
- __decorate([
30
- (0, class_transformer_1.Expose)(),
31
- (0, class_validator_1.IsOptional)(),
32
- (0, class_validator_1.IsBoolean)(),
33
- __metadata("design:type", Boolean)
34
- ], UpdateActivationChecklistRequest.prototype, "contractSigned", void 0);
35
- __decorate([
36
- (0, class_transformer_1.Expose)(),
37
- (0, class_validator_1.IsOptional)(),
38
- (0, class_validator_1.IsBoolean)(),
39
- __metadata("design:type", Boolean)
40
- ], UpdateActivationChecklistRequest.prototype, "imeiEnrolled", void 0);
41
- __decorate([
42
- (0, class_transformer_1.Expose)(),
43
- (0, class_validator_1.IsOptional)(),
44
- (0, class_validator_1.IsBoolean)(),
45
- __metadata("design:type", Boolean)
46
- ], UpdateActivationChecklistRequest.prototype, "lockVerified", void 0);
@@ -1,11 +0,0 @@
1
- /**
2
- * Nivel del cliente según su SCI (M7/05_MOTOR §3.2): 21-60 Bronce · 61-80 Plata · 81-100 Oro.
3
- * Distinto de `CreditPlanLevelEnum` de loanOfferings (que además tiene `ALL` para planes):
4
- * un CLIENTE nunca es `ALL`.
5
- * @enum {string}
6
- */
7
- export declare enum ClientLevelEnum {
8
- BRONZE = "BRONZE",
9
- SILVER = "SILVER",
10
- GOLD = "GOLD"
11
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ClientLevelEnum = void 0;
4
- /**
5
- * Nivel del cliente según su SCI (M7/05_MOTOR §3.2): 21-60 Bronce · 61-80 Plata · 81-100 Oro.
6
- * Distinto de `CreditPlanLevelEnum` de loanOfferings (que además tiene `ALL` para planes):
7
- * un CLIENTE nunca es `ALL`.
8
- * @enum {string}
9
- */
10
- var ClientLevelEnum;
11
- (function (ClientLevelEnum) {
12
- ClientLevelEnum["BRONZE"] = "BRONZE";
13
- ClientLevelEnum["SILVER"] = "SILVER";
14
- ClientLevelEnum["GOLD"] = "GOLD";
15
- })(ClientLevelEnum || (exports.ClientLevelEnum = ClientLevelEnum = {}));
@@ -1,14 +0,0 @@
1
- import { AccountStationStatusEnum } from '../enums/AccountStationStatusEnum';
2
- /**
3
- * Una estacion del camino de apertura de la cuenta PCF, para que el wizard muestre en que va y,
4
- * si algo se cayo, por que. SureKeep Fase 2 — pista Retail.
5
- */
6
- export interface AccountStation {
7
- /** `ACCOUNT_CREATION`, `CURP_VALIDATION`, ... El catalogo lo define card-business y crece alla. */
8
- step: string;
9
- status: AccountStationStatusEnum;
10
- /** Texto legible en espanol, tal como lo escribio card-business. Se muestra al vendedor. */
11
- message: string;
12
- /** ISO 8601. Cuando se registro la estacion. */
13
- timestamp: string;
14
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Avance de la apertura de la cuenta PagoConFiado (PCF) del comprador, visto por el wizard.
3
- *
4
- * Espeja `Card.CardIssuanceStatus` y suma `NOT_STARTED`, que ese dominio no tiene: sin registro de
5
- * emision card-business responde una lista vacia. SureKeep Fase 2 — pista Retail.
6
- */
7
- export declare enum AccountIssuanceStatusEnum {
8
- NOT_STARTED = "NOT_STARTED",
9
- IN_PROCESS = "IN_PROCESS",
10
- COMPLETED = "COMPLETED",
11
- FAILED = "FAILED"
12
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AccountIssuanceStatusEnum = void 0;
4
- /**
5
- * Avance de la apertura de la cuenta PagoConFiado (PCF) del comprador, visto por el wizard.
6
- *
7
- * Espeja `Card.CardIssuanceStatus` y suma `NOT_STARTED`, que ese dominio no tiene: sin registro de
8
- * emision card-business responde una lista vacia. SureKeep Fase 2 — pista Retail.
9
- */
10
- var AccountIssuanceStatusEnum;
11
- (function (AccountIssuanceStatusEnum) {
12
- AccountIssuanceStatusEnum["NOT_STARTED"] = "NOT_STARTED";
13
- AccountIssuanceStatusEnum["IN_PROCESS"] = "IN_PROCESS";
14
- AccountIssuanceStatusEnum["COMPLETED"] = "COMPLETED";
15
- AccountIssuanceStatusEnum["FAILED"] = "FAILED";
16
- })(AccountIssuanceStatusEnum || (exports.AccountIssuanceStatusEnum = AccountIssuanceStatusEnum = {}));
@@ -1,9 +0,0 @@
1
- /**
2
- * Resultado de una estacion del camino de apertura de la cuenta PCF.
3
- * SureKeep Fase 2 — pista Retail.
4
- */
5
- export declare enum AccountStationStatusEnum {
6
- PASSED = "PASSED",
7
- FAILED = "FAILED",
8
- PENDING = "PENDING"
9
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AccountStationStatusEnum = void 0;
4
- /**
5
- * Resultado de una estacion del camino de apertura de la cuenta PCF.
6
- * SureKeep Fase 2 — pista Retail.
7
- */
8
- var AccountStationStatusEnum;
9
- (function (AccountStationStatusEnum) {
10
- AccountStationStatusEnum["PASSED"] = "PASSED";
11
- AccountStationStatusEnum["FAILED"] = "FAILED";
12
- AccountStationStatusEnum["PENDING"] = "PENDING";
13
- })(AccountStationStatusEnum || (exports.AccountStationStatusEnum = AccountStationStatusEnum = {}));