@fiado/type-kit 3.209.0 → 3.210.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 (39) hide show
  1. package/_test_/unit/kyc/KycVerificationChangedV1.test.ts +57 -1
  2. package/bin/kyc/dtos/KycSubChecks.d.ts +37 -0
  3. package/bin/kyc/dtos/KycSubChecks.js +84 -0
  4. package/bin/kyc/enums/KycSubCheckStatusEnum.d.ts +15 -0
  5. package/bin/kyc/enums/KycSubCheckStatusEnum.js +19 -0
  6. package/bin/kyc/enums/KycWatchlistStatusEnum.d.ts +16 -0
  7. package/bin/kyc/enums/KycWatchlistStatusEnum.js +20 -0
  8. package/bin/kyc/events/KycVerificationChangedV1.d.ts +12 -2
  9. package/bin/kyc/events/KycVerificationChangedV1.js +10 -2
  10. package/bin/kyc/index.d.ts +3 -0
  11. package/bin/kyc/index.js +4 -0
  12. package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +11 -0
  13. package/bin/loanConfig/enums/ModifiableByRoleEnum.js +15 -0
  14. package/bin/places/dtos/CashInFeeDto.d.ts +17 -0
  15. package/bin/places/dtos/CashInFeeDto.js +12 -0
  16. package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +22 -0
  17. package/bin/{walletFunding/dtos/CancelFundingRequest.js → platformRbac/dtos/ResendOtpRequest.js} +16 -13
  18. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +11 -0
  19. package/bin/{walletFunding/dtos/CancelFundingReferenceRequest.js → platformRbac/dtos/ResendSelfRegisterOtpRequest.js} +18 -13
  20. package/package.json +1 -1
  21. package/src/kyc/dtos/KycSubChecks.ts +55 -0
  22. package/src/kyc/enums/KycSubCheckStatusEnum.ts +15 -0
  23. package/src/kyc/enums/KycWatchlistStatusEnum.ts +16 -0
  24. package/src/kyc/events/KycVerificationChangedV1.ts +16 -4
  25. package/src/kyc/index.ts +5 -0
  26. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.d.ts +0 -11
  27. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.js +0 -46
  28. package/bin/loanCredit/enums/ClientLevelEnum.d.ts +0 -11
  29. package/bin/loanCredit/enums/ClientLevelEnum.js +0 -15
  30. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +0 -6
  31. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +0 -7
  32. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +0 -6
  33. package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +0 -11
  34. package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +0 -14
  35. package/bin/walletFunding/dtos/CancelFundingResponse.js +0 -12
  36. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +0 -3
  37. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +0 -21
  38. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +0 -7
  39. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +0 -6
@@ -1,7 +1,11 @@
1
1
  import 'reflect-metadata';
2
2
  import { plainToInstance } from 'class-transformer';
3
3
  import { validate } from 'class-validator';
4
- import { KycVerificationChangedV1 } from '../../../src/kyc/index';
4
+ import {
5
+ KycVerificationChangedV1,
6
+ KycSubCheckStatusEnum,
7
+ KycWatchlistStatusEnum,
8
+ } from '../../../src/kyc/index';
5
9
 
6
10
  describe('KycVerificationChangedV1', () => {
7
11
  it('valida el shape que produce el Pipe desde el NewImage', async () => {
@@ -83,6 +87,58 @@ describe('KycVerificationChangedV1', () => {
83
87
  expect(errors.map((e) => e.property)).toContain('verificationResult');
84
88
  });
85
89
 
90
+ // SureKeep F2 — subChecks. ADITIVO: un mensaje sin subChecks (el shape que hoy publica el
91
+ // webhook antes de este cambio) DEBE seguir validando. Sin este candado se podría marcar
92
+ // subChecks como requerido y romper la compatibilidad hacia atrás.
93
+ it('valida un mensaje SIN subChecks (compatibilidad hacia atrás)', async () => {
94
+ const raw = {
95
+ verificationId: 'ver-1', directoryId: 'dir-1', peopleId: 'ppl-1',
96
+ verificationStatus: 'COMPLETED', verificationResult: 'VERIFIED',
97
+ updateDate: '2026-07-21T10:05:00.000Z',
98
+ };
99
+
100
+ const dto = plainToInstance(KycVerificationChangedV1, raw, { excludeExtraneousValues: true });
101
+
102
+ expect(await validate(dto as object)).toHaveLength(0);
103
+ expect(dto.subChecks).toBeUndefined();
104
+ });
105
+
106
+ it('acepta y tipa los 8 subChecks, con CLEAR/HIT distinto de PASS/FAIL', async () => {
107
+ const raw = {
108
+ verificationId: 'ver-1', directoryId: 'dir-1', peopleId: 'ppl-1',
109
+ verificationStatus: 'COMPLETED', verificationResult: 'VERIFIED',
110
+ updateDate: '2026-07-21T10:05:00.000Z',
111
+ subChecks: {
112
+ documentReading: 'PASS', templateMatching: 'PASS', alterationDetection: 'PASS',
113
+ facematch: 'PASS', liveness: 'PASS', ageCheck: 'PASS',
114
+ watchlists: 'HIT', premiumAmlWatchlists: 'CLEAR',
115
+ },
116
+ };
117
+
118
+ const dto = plainToInstance(KycVerificationChangedV1, raw, { excludeExtraneousValues: true });
119
+
120
+ expect(await validate(dto as object)).toHaveLength(0);
121
+ expect(dto.subChecks?.facematch).toBe(KycSubCheckStatusEnum.PASS);
122
+ expect(dto.subChecks?.watchlists).toBe(KycWatchlistStatusEnum.HIT);
123
+ });
124
+
125
+ // Candado del vocabulario: un binario NO acepta HIT y una lista NO acepta PASS. Sin esto,
126
+ // los dos enums podrían colapsar en uno y se perdería el matiz "HIT no es un fallo".
127
+ it('rechaza PASS en una watchlist (una lista es CLEAR/HIT, no PASS/FAIL)', async () => {
128
+ const raw = {
129
+ verificationId: 'ver-1', directoryId: 'dir-1', peopleId: 'ppl-1',
130
+ verificationStatus: 'COMPLETED', verificationResult: 'VERIFIED',
131
+ updateDate: '2026-07-21T10:05:00.000Z',
132
+ subChecks: { watchlists: 'PASS' },
133
+ };
134
+
135
+ const dto = plainToInstance(KycVerificationChangedV1, raw, { excludeExtraneousValues: true });
136
+ const errors = await validate(dto as object);
137
+
138
+ const nested = errors.find((e) => e.property === 'subChecks');
139
+ expect(nested?.children?.some((c) => c.property === 'watchlists')).toBe(true);
140
+ });
141
+
86
142
  // El consumidor ordena por updateDate (spec §6): sin @IsISO8601() el orden es una asunción.
87
143
  it('rechaza updateDate con formato no ISO-8601', async () => {
88
144
  const raw = {
@@ -0,0 +1,37 @@
1
+ import { KycSubCheckStatusEnum } from '../enums/KycSubCheckStatusEnum';
2
+ import { KycWatchlistStatusEnum } from '../enums/KycWatchlistStatusEnum';
3
+ /**
4
+ * Los 8 sub-pasos del KYC de Metamap, descompuestos — el resultado de CADA estación, no el
5
+ * veredicto global. Viaja dentro de `KycVerificationChangedV1.subChecks`.
6
+ *
7
+ * **Por qué existe:** hoy el KYC llega como un solo bombillo (VERIFIED/REJECTED). Pero no todo
8
+ * fallo es igual: un facematch fallido es fraude, un hit de watchlist es "que lo mire cumplimiento",
9
+ * una mala foto es un reintento. Descomponerlo deja que SureKeep aplique una política por sub-paso.
10
+ *
11
+ * **El webhook los produce como TRADUCTOR, no como juez:** deriva cada uno de la presencia de
12
+ * `error` en el `step_completed` de Metamap. NO decide qué significa el fallo para la venta —
13
+ * esa política vive del lado de SureKeep (consolidación / oficial de cumplimiento).
14
+ *
15
+ * **Todos opcionales:** un flujo de Metamap puede no correr todas las estaciones. Un campo ausente
16
+ * significa "esa estación no corrió en este flujo", distinto de un `FAIL`.
17
+ *
18
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
19
+ */
20
+ export declare class KycSubChecks {
21
+ /** ¿Se leyó bien el documento? Mala foto → FAIL (reintento). */
22
+ documentReading?: KycSubCheckStatusEnum;
23
+ /** ¿El documento es una plantilla válida (una INE de verdad)? */
24
+ templateMatching?: KycSubCheckStatusEnum;
25
+ /** ¿El documento fue alterado/photoshopeado? FAIL = detectó alteración. */
26
+ alterationDetection?: KycSubCheckStatusEnum;
27
+ /** ¿La cara de la selfie coincide con la del documento? FAIL = no coincide (suplantación). */
28
+ facematch?: KycSubCheckStatusEnum;
29
+ /** ¿Es una persona viva frente a la cámara y no una foto de una foto? FAIL = no vivo. */
30
+ liveness?: KycSubCheckStatusEnum;
31
+ /** ¿Tiene 18 o más? FAIL = menor de edad. */
32
+ ageCheck?: KycSubCheckStatusEnum;
33
+ /** ¿Apareció en una watchlist? HIT = apareció → oficial de cumplimiento (NO es rechazo). */
34
+ watchlists?: KycWatchlistStatusEnum;
35
+ /** ¿Apareció en una lista premium (PEP/sanciones)? HIT → oficial de cumplimiento. */
36
+ premiumAmlWatchlists?: KycWatchlistStatusEnum;
37
+ }
@@ -0,0 +1,84 @@
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.KycSubChecks = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const KycSubCheckStatusEnum_1 = require("../enums/KycSubCheckStatusEnum");
16
+ const KycWatchlistStatusEnum_1 = require("../enums/KycWatchlistStatusEnum");
17
+ /**
18
+ * Los 8 sub-pasos del KYC de Metamap, descompuestos — el resultado de CADA estación, no el
19
+ * veredicto global. Viaja dentro de `KycVerificationChangedV1.subChecks`.
20
+ *
21
+ * **Por qué existe:** hoy el KYC llega como un solo bombillo (VERIFIED/REJECTED). Pero no todo
22
+ * fallo es igual: un facematch fallido es fraude, un hit de watchlist es "que lo mire cumplimiento",
23
+ * una mala foto es un reintento. Descomponerlo deja que SureKeep aplique una política por sub-paso.
24
+ *
25
+ * **El webhook los produce como TRADUCTOR, no como juez:** deriva cada uno de la presencia de
26
+ * `error` en el `step_completed` de Metamap. NO decide qué significa el fallo para la venta —
27
+ * esa política vive del lado de SureKeep (consolidación / oficial de cumplimiento).
28
+ *
29
+ * **Todos opcionales:** un flujo de Metamap puede no correr todas las estaciones. Un campo ausente
30
+ * significa "esa estación no corrió en este flujo", distinto de un `FAIL`.
31
+ *
32
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
33
+ */
34
+ class KycSubChecks {
35
+ }
36
+ exports.KycSubChecks = KycSubChecks;
37
+ __decorate([
38
+ (0, class_transformer_1.Expose)(),
39
+ (0, class_validator_1.IsOptional)(),
40
+ (0, class_validator_1.IsEnum)(KycSubCheckStatusEnum_1.KycSubCheckStatusEnum),
41
+ __metadata("design:type", String)
42
+ ], KycSubChecks.prototype, "documentReading", void 0);
43
+ __decorate([
44
+ (0, class_transformer_1.Expose)(),
45
+ (0, class_validator_1.IsOptional)(),
46
+ (0, class_validator_1.IsEnum)(KycSubCheckStatusEnum_1.KycSubCheckStatusEnum),
47
+ __metadata("design:type", String)
48
+ ], KycSubChecks.prototype, "templateMatching", void 0);
49
+ __decorate([
50
+ (0, class_transformer_1.Expose)(),
51
+ (0, class_validator_1.IsOptional)(),
52
+ (0, class_validator_1.IsEnum)(KycSubCheckStatusEnum_1.KycSubCheckStatusEnum),
53
+ __metadata("design:type", String)
54
+ ], KycSubChecks.prototype, "alterationDetection", void 0);
55
+ __decorate([
56
+ (0, class_transformer_1.Expose)(),
57
+ (0, class_validator_1.IsOptional)(),
58
+ (0, class_validator_1.IsEnum)(KycSubCheckStatusEnum_1.KycSubCheckStatusEnum),
59
+ __metadata("design:type", String)
60
+ ], KycSubChecks.prototype, "facematch", void 0);
61
+ __decorate([
62
+ (0, class_transformer_1.Expose)(),
63
+ (0, class_validator_1.IsOptional)(),
64
+ (0, class_validator_1.IsEnum)(KycSubCheckStatusEnum_1.KycSubCheckStatusEnum),
65
+ __metadata("design:type", String)
66
+ ], KycSubChecks.prototype, "liveness", void 0);
67
+ __decorate([
68
+ (0, class_transformer_1.Expose)(),
69
+ (0, class_validator_1.IsOptional)(),
70
+ (0, class_validator_1.IsEnum)(KycSubCheckStatusEnum_1.KycSubCheckStatusEnum),
71
+ __metadata("design:type", String)
72
+ ], KycSubChecks.prototype, "ageCheck", void 0);
73
+ __decorate([
74
+ (0, class_transformer_1.Expose)(),
75
+ (0, class_validator_1.IsOptional)(),
76
+ (0, class_validator_1.IsEnum)(KycWatchlistStatusEnum_1.KycWatchlistStatusEnum),
77
+ __metadata("design:type", String)
78
+ ], KycSubChecks.prototype, "watchlists", void 0);
79
+ __decorate([
80
+ (0, class_transformer_1.Expose)(),
81
+ (0, class_validator_1.IsOptional)(),
82
+ (0, class_validator_1.IsEnum)(KycWatchlistStatusEnum_1.KycWatchlistStatusEnum),
83
+ __metadata("design:type", String)
84
+ ], KycSubChecks.prototype, "premiumAmlWatchlists", void 0);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Resultado de un sub-paso BINARIO del KYC (los que pasan o fallan sin matices).
3
+ *
4
+ * El webhook lo deriva de la presencia/ausencia de `error` en el `step_completed` de Metamap:
5
+ * sin error → `PASS`, con error → `FAIL`. No hay tri-estado en estos.
6
+ *
7
+ * Aplica a: document-reading, template-matching, alteration-detection, facematch, liveness, age-check.
8
+ * (Las listas de watchlist usan `KycWatchlistStatusEnum` — un hit NO es un fallo.)
9
+ *
10
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
11
+ */
12
+ export declare enum KycSubCheckStatusEnum {
13
+ PASS = "PASS",
14
+ FAIL = "FAIL"
15
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KycSubCheckStatusEnum = void 0;
4
+ /**
5
+ * Resultado de un sub-paso BINARIO del KYC (los que pasan o fallan sin matices).
6
+ *
7
+ * El webhook lo deriva de la presencia/ausencia de `error` en el `step_completed` de Metamap:
8
+ * sin error → `PASS`, con error → `FAIL`. No hay tri-estado en estos.
9
+ *
10
+ * Aplica a: document-reading, template-matching, alteration-detection, facematch, liveness, age-check.
11
+ * (Las listas de watchlist usan `KycWatchlistStatusEnum` — un hit NO es un fallo.)
12
+ *
13
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
14
+ */
15
+ var KycSubCheckStatusEnum;
16
+ (function (KycSubCheckStatusEnum) {
17
+ KycSubCheckStatusEnum["PASS"] = "PASS";
18
+ KycSubCheckStatusEnum["FAIL"] = "FAIL";
19
+ })(KycSubCheckStatusEnum || (exports.KycSubCheckStatusEnum = KycSubCheckStatusEnum = {}));
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Resultado de un sub-paso de LISTA del KYC (watchlists, premium-aml-watchlists).
3
+ *
4
+ * Deliberadamente NO reusa `KycSubCheckStatusEnum`: un `HIT` en una lista **no es un fallo**.
5
+ * Es un "que lo mire un humano" — el cliente aparece en una lista y un oficial de cumplimiento (D21)
6
+ * decide, en vez de rechazar automáticamente. Ese matiz es justo lo que el vocabulario binario
7
+ * pasado por alto perdía: si `HIT` fuera `FAIL`, la venta se bloquearía sola sin revisión.
8
+ *
9
+ * `CLEAR` = no apareció en ninguna lista. `HIT` = apareció, requiere revisión de cumplimiento.
10
+ *
11
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
12
+ */
13
+ export declare enum KycWatchlistStatusEnum {
14
+ CLEAR = "CLEAR",
15
+ HIT = "HIT"
16
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KycWatchlistStatusEnum = void 0;
4
+ /**
5
+ * Resultado de un sub-paso de LISTA del KYC (watchlists, premium-aml-watchlists).
6
+ *
7
+ * Deliberadamente NO reusa `KycSubCheckStatusEnum`: un `HIT` en una lista **no es un fallo**.
8
+ * Es un "que lo mire un humano" — el cliente aparece en una lista y un oficial de cumplimiento (D21)
9
+ * decide, en vez de rechazar automáticamente. Ese matiz es justo lo que el vocabulario binario
10
+ * pasado por alto perdía: si `HIT` fuera `FAIL`, la venta se bloquearía sola sin revisión.
11
+ *
12
+ * `CLEAR` = no apareció en ninguna lista. `HIT` = apareció, requiere revisión de cumplimiento.
13
+ *
14
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
15
+ */
16
+ var KycWatchlistStatusEnum;
17
+ (function (KycWatchlistStatusEnum) {
18
+ KycWatchlistStatusEnum["CLEAR"] = "CLEAR";
19
+ KycWatchlistStatusEnum["HIT"] = "HIT";
20
+ })(KycWatchlistStatusEnum || (exports.KycWatchlistStatusEnum = KycWatchlistStatusEnum = {}));
@@ -1,8 +1,9 @@
1
1
  import { IdentificationDocumentStatus } from '../../identity/enums/IdentificationDocumentStatus';
2
2
  import { KycVerificationStatusEnum } from '../enums/KycVerificationStatusEnum';
3
+ import { KycSubChecks } from '../dtos/KycSubChecks';
3
4
  /**
4
- * Cambio terminal de una verificación KYC, tal como llega desde el DDB Stream de
5
- * `KycVerifications` a través del EventBridge Pipe (filtrado a COMPLETED).
5
+ * Cambio terminal de una verificación KYC, tal como lo publica `kyc-metamap-webhook` directo en
6
+ * `RetailKycInboundQueue` (el webhook manda un `SendMessage` cuando la verificación pasa a COMPLETED).
6
7
  *
7
8
  * NO lleva `tenantId`: el de la tabla es un valor hardcodeado que no discrimina silo.
8
9
  * La pertenencia se resuelve en el consumer con el gate de `WizardSession`.
@@ -32,4 +33,13 @@ export declare class KycVerificationChangedV1 {
32
33
  * (ejemplo real: '2025-10-06T21:40:58.277Z'). Verificado, no asumido (2026-07-21).
33
34
  */
34
35
  updateDate: string;
36
+ /**
37
+ * Los 8 sub-pasos descompuestos (SureKeep F2). OPCIONAL y aditivo: un mensaje viejo sin
38
+ * `subChecks` sigue validando, y un consumidor que aún no aplica política los ignora sin romperse.
39
+ *
40
+ * El webhook los produce como traductor (error del `step_completed` → PASS/FAIL, o CLEAR/HIT
41
+ * para las listas). La POLÍTICA de qué hacer con cada uno (facematch FAIL → rechazo, watchlist
42
+ * HIT → oficial de cumplimiento, mala foto → reintento) vive del lado de SureKeep, NO aquí.
43
+ */
44
+ subChecks?: KycSubChecks;
35
45
  }
@@ -14,9 +14,10 @@ const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  const IdentificationDocumentStatus_1 = require("../../identity/enums/IdentificationDocumentStatus");
16
16
  const KycVerificationStatusEnum_1 = require("../enums/KycVerificationStatusEnum");
17
+ const KycSubChecks_1 = require("../dtos/KycSubChecks");
17
18
  /**
18
- * Cambio terminal de una verificación KYC, tal como llega desde el DDB Stream de
19
- * `KycVerifications` a través del EventBridge Pipe (filtrado a COMPLETED).
19
+ * Cambio terminal de una verificación KYC, tal como lo publica `kyc-metamap-webhook` directo en
20
+ * `RetailKycInboundQueue` (el webhook manda un `SendMessage` cuando la verificación pasa a COMPLETED).
20
21
  *
21
22
  * NO lleva `tenantId`: el de la tabla es un valor hardcodeado que no discrimina silo.
22
23
  * La pertenencia se resuelve en el consumer con el gate de `WizardSession`.
@@ -74,3 +75,10 @@ __decorate([
74
75
  (0, class_validator_1.IsISO8601)(),
75
76
  __metadata("design:type", String)
76
77
  ], KycVerificationChangedV1.prototype, "updateDate", void 0);
78
+ __decorate([
79
+ (0, class_transformer_1.Expose)(),
80
+ (0, class_validator_1.IsOptional)(),
81
+ (0, class_validator_1.ValidateNested)(),
82
+ (0, class_transformer_1.Type)(() => KycSubChecks_1.KycSubChecks),
83
+ __metadata("design:type", KycSubChecks_1.KycSubChecks)
84
+ ], KycVerificationChangedV1.prototype, "subChecks", void 0);
@@ -1,4 +1,7 @@
1
1
  export * from './enums/KycVerificationStatusEnum';
2
+ export * from './enums/KycSubCheckStatusEnum';
3
+ export * from './enums/KycWatchlistStatusEnum';
4
+ export * from './dtos/KycSubChecks';
2
5
  export * from './dtos/responses/KycPersonData';
3
6
  export * from './dtos/responses/KycByDirectoryResponse';
4
7
  export * from './events/KycVerificationChangedV1';
package/bin/kyc/index.js CHANGED
@@ -17,6 +17,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  // Enums (el consolidado reusa RetailKycStatusEnum del dominio retailCustomer — DEC-KYC-014;
18
18
  // `verificationResult` reusa IdentificationDocumentStatus de `identity` — DEC-KYC-016)
19
19
  __exportStar(require("./enums/KycVerificationStatusEnum"), exports);
20
+ __exportStar(require("./enums/KycSubCheckStatusEnum"), exports);
21
+ __exportStar(require("./enums/KycWatchlistStatusEnum"), exports);
22
+ // Sub-pasos descompuestos (SureKeep F2)
23
+ __exportStar(require("./dtos/KycSubChecks"), exports);
20
24
  // Response DTOs
21
25
  __exportStar(require("./dtos/responses/KycPersonData"), exports);
22
26
  __exportStar(require("./dtos/responses/KycByDirectoryResponse"), exports);
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
3
+ * `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
4
+ * TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
5
+ * @enum {string}
6
+ */
7
+ export declare enum ModifiableByRoleEnum {
8
+ SUPER_ADMIN = "super_admin",
9
+ SOFOM_ADMIN = "sofom_admin",
10
+ RETAILER_ADMIN = "retailer_admin"
11
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModifiableByRoleEnum = void 0;
4
+ /**
5
+ * Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
6
+ * `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
7
+ * TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
8
+ * @enum {string}
9
+ */
10
+ var ModifiableByRoleEnum;
11
+ (function (ModifiableByRoleEnum) {
12
+ ModifiableByRoleEnum["SUPER_ADMIN"] = "super_admin";
13
+ ModifiableByRoleEnum["SOFOM_ADMIN"] = "sofom_admin";
14
+ ModifiableByRoleEnum["RETAILER_ADMIN"] = "retailer_admin";
15
+ })(ModifiableByRoleEnum || (exports.ModifiableByRoleEnum = ModifiableByRoleEnum = {}));
@@ -0,0 +1,17 @@
1
+ import { CurrencyId } from '../../currency/enums/CurrencyId';
2
+ /**
3
+ * Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
4
+ * - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
5
+ * - Passport (MX): por red → `fixed` + `percentage`.
6
+ * Response DTO — sin decoradores de validación.
7
+ */
8
+ export declare class CashInFeeDto {
9
+ /** Comisión fija, en la moneda del país. */
10
+ fixed?: number;
11
+ /** Porcentaje del monto depositado (0–100). */
12
+ percentage?: number;
13
+ /** Tope máximo de comisión (GreenDot: el asociado cobra hasta este cap). */
14
+ cap?: number;
15
+ /** Moneda del fee: USD (GreenDot) | MXN (Passport). */
16
+ currency: CurrencyId;
17
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CashInFeeDto = void 0;
4
+ /**
5
+ * Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
6
+ * - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
7
+ * - Passport (MX): por red → `fixed` + `percentage`.
8
+ * Response DTO — sin decoradores de validación.
9
+ */
10
+ class CashInFeeDto {
11
+ }
12
+ exports.CashInFeeDto = CashInFeeDto;
@@ -0,0 +1,22 @@
1
+ import { MfaMethodEnum } from '../enums/MfaMethodEnum';
2
+ /**
3
+ * Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
4
+ * Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
5
+ * identidad SIN password. `tenantId` obligatorio (DEC-064 — el picker ya lo resolvió, NO "solo email").
6
+ * El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
7
+ * siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
8
+ */
9
+ export declare class ResendOtpRequest {
10
+ email: string;
11
+ tenantId: string;
12
+ }
13
+ /**
14
+ * Respuesta del resend-otp. `session`/`mfaMethod` frescos del nuevo challenge CUSTOM_AUTH.
15
+ * Plain sin validators (no validamos lo que mandamos al cliente — fiado-validation-and-dtos § 7).
16
+ * Ambos opcionales: en los caminos de rechazo silencioso (anti-enumeración) o ramas sin CUSTOM_AUTH
17
+ * el server responde 200 genérico sin session ni método.
18
+ */
19
+ export interface ResendOtpResponse {
20
+ session?: string;
21
+ mfaMethod?: MfaMethodEnum;
22
+ }
@@ -9,25 +9,28 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.CancelFundingRequest = void 0;
12
+ exports.ResendOtpRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
13
14
  const class_validator_1 = require("class-validator");
14
15
  /**
15
- * Request del cancel via Centro de Beneficios (spec 13 v2.0).
16
- * `reference` viaja en el path, `directoryId` se resuelve del JWT.
17
- * `providerModuleName` permite al marketplace rutear al publisher correcto
18
- * sin tener que persistir el mapping (el wallet-app sabe el moduleName
19
- * porque vino en la respuesta del authorize).
16
+ * Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
17
+ * Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
18
+ * identidad SIN password. `tenantId` obligatorio (DEC-064 el picker ya lo resolvió, NO "solo email").
19
+ * El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
20
+ * siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
20
21
  */
21
- class CancelFundingRequest {
22
+ class ResendOtpRequest {
22
23
  }
23
- exports.CancelFundingRequest = CancelFundingRequest;
24
+ exports.ResendOtpRequest = ResendOtpRequest;
24
25
  __decorate([
25
- (0, class_validator_1.IsString)(),
26
- (0, class_validator_1.MaxLength)(64),
26
+ (0, class_transformer_1.Expose)(),
27
+ (0, class_validator_1.IsEmail)(),
28
+ (0, class_validator_1.IsNotEmpty)(),
27
29
  __metadata("design:type", String)
28
- ], CancelFundingRequest.prototype, "idempotencyKey", void 0);
30
+ ], ResendOtpRequest.prototype, "email", void 0);
29
31
  __decorate([
32
+ (0, class_transformer_1.Expose)(),
30
33
  (0, class_validator_1.IsString)(),
31
- (0, class_validator_1.MaxLength)(128),
34
+ (0, class_validator_1.IsNotEmpty)(),
32
35
  __metadata("design:type", String)
33
- ], CancelFundingRequest.prototype, "providerModuleName", void 0);
36
+ ], ResendOtpRequest.prototype, "tenantId", void 0);
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
3
+ * Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
4
+ * `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
5
+ * server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
6
+ * scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
7
+ */
8
+ export declare class ResendSelfRegisterOtpRequest {
9
+ tenantId: string;
10
+ email: string;
11
+ }
@@ -9,23 +9,28 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.CancelFundingReferenceRequest = void 0;
12
+ exports.ResendSelfRegisterOtpRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
13
14
  const class_validator_1 = require("class-validator");
14
- class CancelFundingReferenceRequest {
15
+ /**
16
+ * Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
17
+ * Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
18
+ * `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
19
+ * server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
20
+ * scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
21
+ */
22
+ class ResendSelfRegisterOtpRequest {
15
23
  }
16
- exports.CancelFundingReferenceRequest = CancelFundingReferenceRequest;
24
+ exports.ResendSelfRegisterOtpRequest = ResendSelfRegisterOtpRequest;
17
25
  __decorate([
26
+ (0, class_transformer_1.Expose)(),
18
27
  (0, class_validator_1.IsString)(),
19
- (0, class_validator_1.MaxLength)(64),
28
+ (0, class_validator_1.IsNotEmpty)(),
20
29
  __metadata("design:type", String)
21
- ], CancelFundingReferenceRequest.prototype, "reference", void 0);
30
+ ], ResendSelfRegisterOtpRequest.prototype, "tenantId", void 0);
22
31
  __decorate([
23
- (0, class_validator_1.IsString)(),
24
- (0, class_validator_1.MaxLength)(64),
25
- __metadata("design:type", String)
26
- ], CancelFundingReferenceRequest.prototype, "directoryId", void 0);
27
- __decorate([
28
- (0, class_validator_1.IsString)(),
29
- (0, class_validator_1.MaxLength)(64),
32
+ (0, class_transformer_1.Expose)(),
33
+ (0, class_validator_1.IsEmail)(),
34
+ (0, class_validator_1.IsNotEmpty)(),
30
35
  __metadata("design:type", String)
31
- ], CancelFundingReferenceRequest.prototype, "idempotencyKey", void 0);
36
+ ], ResendSelfRegisterOtpRequest.prototype, "email", void 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.209.0",
3
+ "version": "3.210.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,55 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsOptional } from 'class-validator';
3
+ import { KycSubCheckStatusEnum } from '../enums/KycSubCheckStatusEnum';
4
+ import { KycWatchlistStatusEnum } from '../enums/KycWatchlistStatusEnum';
5
+
6
+ /**
7
+ * Los 8 sub-pasos del KYC de Metamap, descompuestos — el resultado de CADA estación, no el
8
+ * veredicto global. Viaja dentro de `KycVerificationChangedV1.subChecks`.
9
+ *
10
+ * **Por qué existe:** hoy el KYC llega como un solo bombillo (VERIFIED/REJECTED). Pero no todo
11
+ * fallo es igual: un facematch fallido es fraude, un hit de watchlist es "que lo mire cumplimiento",
12
+ * una mala foto es un reintento. Descomponerlo deja que SureKeep aplique una política por sub-paso.
13
+ *
14
+ * **El webhook los produce como TRADUCTOR, no como juez:** deriva cada uno de la presencia de
15
+ * `error` en el `step_completed` de Metamap. NO decide qué significa el fallo para la venta —
16
+ * esa política vive del lado de SureKeep (consolidación / oficial de cumplimiento).
17
+ *
18
+ * **Todos opcionales:** un flujo de Metamap puede no correr todas las estaciones. Un campo ausente
19
+ * significa "esa estación no corrió en este flujo", distinto de un `FAIL`.
20
+ *
21
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
22
+ */
23
+ export class KycSubChecks {
24
+ /** ¿Se leyó bien el documento? Mala foto → FAIL (reintento). */
25
+ @Expose() @IsOptional() @IsEnum(KycSubCheckStatusEnum)
26
+ documentReading?: KycSubCheckStatusEnum;
27
+
28
+ /** ¿El documento es una plantilla válida (una INE de verdad)? */
29
+ @Expose() @IsOptional() @IsEnum(KycSubCheckStatusEnum)
30
+ templateMatching?: KycSubCheckStatusEnum;
31
+
32
+ /** ¿El documento fue alterado/photoshopeado? FAIL = detectó alteración. */
33
+ @Expose() @IsOptional() @IsEnum(KycSubCheckStatusEnum)
34
+ alterationDetection?: KycSubCheckStatusEnum;
35
+
36
+ /** ¿La cara de la selfie coincide con la del documento? FAIL = no coincide (suplantación). */
37
+ @Expose() @IsOptional() @IsEnum(KycSubCheckStatusEnum)
38
+ facematch?: KycSubCheckStatusEnum;
39
+
40
+ /** ¿Es una persona viva frente a la cámara y no una foto de una foto? FAIL = no vivo. */
41
+ @Expose() @IsOptional() @IsEnum(KycSubCheckStatusEnum)
42
+ liveness?: KycSubCheckStatusEnum;
43
+
44
+ /** ¿Tiene 18 o más? FAIL = menor de edad. */
45
+ @Expose() @IsOptional() @IsEnum(KycSubCheckStatusEnum)
46
+ ageCheck?: KycSubCheckStatusEnum;
47
+
48
+ /** ¿Apareció en una watchlist? HIT = apareció → oficial de cumplimiento (NO es rechazo). */
49
+ @Expose() @IsOptional() @IsEnum(KycWatchlistStatusEnum)
50
+ watchlists?: KycWatchlistStatusEnum;
51
+
52
+ /** ¿Apareció en una lista premium (PEP/sanciones)? HIT → oficial de cumplimiento. */
53
+ @Expose() @IsOptional() @IsEnum(KycWatchlistStatusEnum)
54
+ premiumAmlWatchlists?: KycWatchlistStatusEnum;
55
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Resultado de un sub-paso BINARIO del KYC (los que pasan o fallan sin matices).
3
+ *
4
+ * El webhook lo deriva de la presencia/ausencia de `error` en el `step_completed` de Metamap:
5
+ * sin error → `PASS`, con error → `FAIL`. No hay tri-estado en estos.
6
+ *
7
+ * Aplica a: document-reading, template-matching, alteration-detection, facematch, liveness, age-check.
8
+ * (Las listas de watchlist usan `KycWatchlistStatusEnum` — un hit NO es un fallo.)
9
+ *
10
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
11
+ */
12
+ export enum KycSubCheckStatusEnum {
13
+ PASS = 'PASS',
14
+ FAIL = 'FAIL',
15
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Resultado de un sub-paso de LISTA del KYC (watchlists, premium-aml-watchlists).
3
+ *
4
+ * Deliberadamente NO reusa `KycSubCheckStatusEnum`: un `HIT` en una lista **no es un fallo**.
5
+ * Es un "que lo mire un humano" — el cliente aparece en una lista y un oficial de cumplimiento (D21)
6
+ * decide, en vez de rechazar automáticamente. Ese matiz es justo lo que el vocabulario binario
7
+ * pasado por alto perdía: si `HIT` fuera `FAIL`, la venta se bloquearía sola sin revisión.
8
+ *
9
+ * `CLEAR` = no apareció en ninguna lista. `HIT` = apareció, requiere revisión de cumplimiento.
10
+ *
11
+ * SureKeep Fase 2 — descomposición del KYC en sub-pasos.
12
+ */
13
+ export enum KycWatchlistStatusEnum {
14
+ CLEAR = 'CLEAR',
15
+ HIT = 'HIT',
16
+ }
@@ -1,11 +1,12 @@
1
- import { Expose } from 'class-transformer';
2
- import { IsEnum, IsISO8601, IsNotEmpty, IsOptional, IsString } from 'class-validator';
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsEnum, IsISO8601, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator';
3
3
  import { IdentificationDocumentStatus } from '../../identity/enums/IdentificationDocumentStatus';
4
4
  import { KycVerificationStatusEnum } from '../enums/KycVerificationStatusEnum';
5
+ import { KycSubChecks } from '../dtos/KycSubChecks';
5
6
 
6
7
  /**
7
- * Cambio terminal de una verificación KYC, tal como llega desde el DDB Stream de
8
- * `KycVerifications` a través del EventBridge Pipe (filtrado a COMPLETED).
8
+ * Cambio terminal de una verificación KYC, tal como lo publica `kyc-metamap-webhook` directo en
9
+ * `RetailKycInboundQueue` (el webhook manda un `SendMessage` cuando la verificación pasa a COMPLETED).
9
10
  *
10
11
  * NO lleva `tenantId`: el de la tabla es un valor hardcodeado que no discrimina silo.
11
12
  * La pertenencia se resuelve en el consumer con el gate de `WizardSession`.
@@ -48,4 +49,15 @@ export class KycVerificationChangedV1 {
48
49
  */
49
50
  @Expose() @IsString() @IsISO8601()
50
51
  updateDate!: string;
52
+
53
+ /**
54
+ * Los 8 sub-pasos descompuestos (SureKeep F2). OPCIONAL y aditivo: un mensaje viejo sin
55
+ * `subChecks` sigue validando, y un consumidor que aún no aplica política los ignora sin romperse.
56
+ *
57
+ * El webhook los produce como traductor (error del `step_completed` → PASS/FAIL, o CLEAR/HIT
58
+ * para las listas). La POLÍTICA de qué hacer con cada uno (facematch FAIL → rechazo, watchlist
59
+ * HIT → oficial de cumplimiento, mala foto → reintento) vive del lado de SureKeep, NO aquí.
60
+ */
61
+ @Expose() @IsOptional() @ValidateNested() @Type(() => KycSubChecks)
62
+ subChecks?: KycSubChecks;
51
63
  }
package/src/kyc/index.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  // Enums (el consolidado reusa RetailKycStatusEnum del dominio retailCustomer — DEC-KYC-014;
2
2
  // `verificationResult` reusa IdentificationDocumentStatus de `identity` — DEC-KYC-016)
3
3
  export * from './enums/KycVerificationStatusEnum';
4
+ export * from './enums/KycSubCheckStatusEnum';
5
+ export * from './enums/KycWatchlistStatusEnum';
6
+
7
+ // Sub-pasos descompuestos (SureKeep F2)
8
+ export * from './dtos/KycSubChecks';
4
9
 
5
10
  // Response DTOs
6
11
  export * from './dtos/responses/KycPersonData';
@@ -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,6 +0,0 @@
1
- export declare class CancelFundingReferenceRequest {
2
- /** Referencia Passport (PK de EqualityFundingReference_GT). */
3
- reference: string;
4
- directoryId: string;
5
- idempotencyKey: string;
6
- }
@@ -1,7 +0,0 @@
1
- import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
- import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
- export declare class CancelFundingReferenceResponse {
4
- reference: string;
5
- status: BenefitPaymentStatusEnum;
6
- errorCode?: WalletFundingErrorCodeEnum;
7
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CancelFundingReferenceResponse = void 0;
4
- class CancelFundingReferenceResponse {
5
- }
6
- exports.CancelFundingReferenceResponse = CancelFundingReferenceResponse;
@@ -1,11 +0,0 @@
1
- /**
2
- * Request del cancel via Centro de Beneficios (spec 13 v2.0).
3
- * `reference` viaja en el path, `directoryId` se resuelve del JWT.
4
- * `providerModuleName` permite al marketplace rutear al publisher correcto
5
- * sin tener que persistir el mapping (el wallet-app sabe el moduleName
6
- * porque vino en la respuesta del authorize).
7
- */
8
- export declare class CancelFundingRequest {
9
- idempotencyKey: string;
10
- providerModuleName: string;
11
- }
@@ -1,14 +0,0 @@
1
- import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
- import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
- /**
4
- * Response del cancel via Centro de Beneficios (spec 13 v2.0).
5
- * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
6
- * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
7
- * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
8
- */
9
- export declare class CancelFundingResponse {
10
- reference: string;
11
- status: BenefitPaymentStatusEnum;
12
- errorCode?: WalletFundingErrorCodeEnum;
13
- message?: string;
14
- }
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CancelFundingResponse = void 0;
4
- /**
5
- * Response del cancel via Centro de Beneficios (spec 13 v2.0).
6
- * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
7
- * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
8
- * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
9
- */
10
- class CancelFundingResponse {
11
- }
12
- exports.CancelFundingResponse = CancelFundingResponse;
@@ -1,3 +0,0 @@
1
- export declare class CancelWalletFundingRequest {
2
- idempotencyKey: string;
3
- }
@@ -1,21 +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.CancelWalletFundingRequest = void 0;
13
- const class_validator_1 = require("class-validator");
14
- class CancelWalletFundingRequest {
15
- }
16
- exports.CancelWalletFundingRequest = CancelWalletFundingRequest;
17
- __decorate([
18
- (0, class_validator_1.IsString)(),
19
- (0, class_validator_1.MaxLength)(64),
20
- __metadata("design:type", String)
21
- ], CancelWalletFundingRequest.prototype, "idempotencyKey", void 0);
@@ -1,7 +0,0 @@
1
- import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
- import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
- export declare class CancelWalletFundingResponse {
4
- status: BenefitPaymentStatusEnum;
5
- errorCode?: WalletFundingErrorCodeEnum;
6
- reference?: string;
7
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CancelWalletFundingResponse = void 0;
4
- class CancelWalletFundingResponse {
5
- }
6
- exports.CancelWalletFundingResponse = CancelWalletFundingResponse;