@fiado/type-kit 3.212.0 → 3.214.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 (70) hide show
  1. package/bin/kyc/events/KycVerificationChangedV1.d.ts +16 -0
  2. package/bin/kyc/events/KycVerificationChangedV1.js +16 -0
  3. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.d.ts +11 -0
  4. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.js +46 -0
  5. package/bin/loanCredit/enums/ClientLevelEnum.d.ts +11 -0
  6. package/bin/loanCredit/enums/ClientLevelEnum.js +15 -0
  7. package/bin/retailWizard/dtos/WizardCreditSummary.d.ts +26 -0
  8. package/bin/retailWizard/dtos/WizardCreditSummary.js +2 -0
  9. package/bin/retailWizard/dtos/WizardLoan.d.ts +24 -0
  10. package/bin/retailWizard/dtos/WizardLoan.js +58 -0
  11. package/bin/retailWizard/dtos/WizardSession.d.ts +3 -0
  12. package/bin/retailWizard/dtos/requests/DownPaymentRequest.d.ts +16 -0
  13. package/bin/retailWizard/dtos/requests/DownPaymentRequest.js +46 -0
  14. package/bin/retailWizard/dtos/requests/QuoteRequest.d.ts +11 -0
  15. package/bin/retailWizard/dtos/requests/QuoteRequest.js +36 -0
  16. package/bin/retailWizard/dtos/requests/RegisterDeviceRequest.d.ts +9 -0
  17. package/bin/{platformRbac/dtos/CompleteMyProfileRequest.js → retailWizard/dtos/requests/RegisterDeviceRequest.js} +9 -14
  18. package/bin/retailWizard/dtos/requests/SignatureSignRequest.d.ts +9 -0
  19. package/bin/{walletFunding/dtos/CancelWalletFundingRequest.js → retailWizard/dtos/requests/SignatureSignRequest.js} +13 -5
  20. package/bin/retailWizard/dtos/responses/ContractPreviewResponse.d.ts +12 -0
  21. package/bin/retailWizard/dtos/responses/ContractPreviewResponse.js +2 -0
  22. package/bin/retailWizard/dtos/responses/DownPaymentResponse.d.ts +14 -0
  23. package/bin/retailWizard/dtos/responses/DownPaymentResponse.js +2 -0
  24. package/bin/retailWizard/dtos/responses/QuoteResponse.d.ts +23 -0
  25. package/bin/retailWizard/dtos/responses/QuoteResponse.js +2 -0
  26. package/bin/retailWizard/dtos/responses/RegisterDeviceResponse.d.ts +14 -0
  27. package/bin/retailWizard/dtos/responses/RegisterDeviceResponse.js +2 -0
  28. package/bin/retailWizard/dtos/responses/ScoreConsultResponse.d.ts +20 -0
  29. package/bin/retailWizard/dtos/responses/ScoreConsultResponse.js +2 -0
  30. package/bin/retailWizard/dtos/responses/ScoreResultResponse.d.ts +14 -0
  31. package/bin/retailWizard/dtos/responses/ScoreResultResponse.js +2 -0
  32. package/bin/retailWizard/dtos/responses/SessionFinanciersResponse.d.ts +26 -0
  33. package/bin/retailWizard/dtos/responses/SessionFinanciersResponse.js +2 -0
  34. package/bin/retailWizard/dtos/responses/SignatureSendOtpResponse.d.ts +10 -0
  35. package/bin/retailWizard/dtos/responses/SignatureSendOtpResponse.js +2 -0
  36. package/bin/retailWizard/dtos/responses/SignatureSignResponse.d.ts +10 -0
  37. package/bin/retailWizard/dtos/responses/SignatureSignResponse.js +2 -0
  38. package/bin/retailWizard/index.d.ts +15 -0
  39. package/bin/retailWizard/index.js +15 -0
  40. package/package.json +1 -1
  41. package/src/kyc/events/KycVerificationChangedV1.ts +20 -0
  42. package/src/retailWizard/dtos/WizardCreditSummary.ts +27 -0
  43. package/src/retailWizard/dtos/WizardLoan.ts +45 -0
  44. package/src/retailWizard/dtos/WizardSession.ts +3 -0
  45. package/src/retailWizard/dtos/requests/DownPaymentRequest.ts +30 -0
  46. package/src/retailWizard/dtos/requests/QuoteRequest.ts +21 -0
  47. package/src/retailWizard/dtos/requests/RegisterDeviceRequest.ts +15 -0
  48. package/src/retailWizard/dtos/requests/SignatureSignRequest.ts +15 -0
  49. package/src/retailWizard/dtos/responses/ContractPreviewResponse.ts +13 -0
  50. package/src/retailWizard/dtos/responses/DownPaymentResponse.ts +15 -0
  51. package/src/retailWizard/dtos/responses/QuoteResponse.ts +25 -0
  52. package/src/retailWizard/dtos/responses/RegisterDeviceResponse.ts +15 -0
  53. package/src/retailWizard/dtos/responses/ScoreConsultResponse.ts +21 -0
  54. package/src/retailWizard/dtos/responses/ScoreResultResponse.ts +15 -0
  55. package/src/retailWizard/dtos/responses/SessionFinanciersResponse.ts +28 -0
  56. package/src/retailWizard/dtos/responses/SignatureSendOtpResponse.ts +10 -0
  57. package/src/retailWizard/dtos/responses/SignatureSignResponse.ts +11 -0
  58. package/src/retailWizard/index.ts +15 -0
  59. package/bin/benefitCenter/enums/BenefitFlowEnum.d.ts +0 -11
  60. package/bin/benefitCenter/enums/BenefitFlowEnum.js +0 -15
  61. package/bin/places/dtos/CashInFeeDto.d.ts +0 -17
  62. package/bin/places/dtos/CashInFeeDto.js +0 -12
  63. package/bin/platformRbac/dtos/CompleteMyProfileRequest.d.ts +0 -9
  64. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +0 -14
  65. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +0 -41
  66. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +0 -15
  67. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +0 -13
  68. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +0 -3
  69. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +0 -7
  70. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +0 -6
@@ -1,6 +1,8 @@
1
1
  import { IdentificationDocumentStatus } from '../../identity/enums/IdentificationDocumentStatus';
2
2
  import { KycVerificationStatusEnum } from '../enums/KycVerificationStatusEnum';
3
3
  import { KycSubChecks } from '../dtos/KycSubChecks';
4
+ import { KycPersonData } from '../dtos/responses/KycPersonData';
5
+ import { AddressBase } from '../../address/dtos/AddressBase';
4
6
  /**
5
7
  * Cambio terminal de una verificación KYC, tal como lo publica `kyc-metamap-webhook` directo en
6
8
  * `RetailKycInboundQueue` (el webhook manda un `SendMessage` cuando la verificación pasa a COMPLETED).
@@ -42,4 +44,18 @@ export declare class KycVerificationChangedV1 {
42
44
  * HIT → oficial de cumplimiento, mala foto → reintento) vive del lado de SureKeep, NO aquí.
43
45
  */
44
46
  subChecks?: KycSubChecks;
47
+ /**
48
+ * Identidad del cliente extraída del INE por `kyc-metamap-webhook` en el `verification_completed`.
49
+ * OPCIONAL y aditivo: un mensaje viejo sin `person` sigue validando. El consumer (SureKeep) la usa
50
+ * para el upsert del customer — sin ella el upsert falla en el boundary (`DatosKycIncompletos`),
51
+ * porque el estado autoritativo de `getByDirectory` no siempre trae la persona consolidada a tiempo.
52
+ * ⚠️ PII: nunca loguear esta estructura.
53
+ */
54
+ person?: KycPersonData;
55
+ /**
56
+ * Domicilio del INE ya ESTRUCTURADO por `places-business` (paso 02e), listo para copiarse a
57
+ * `RetailCustomer.address` en el upsert. OPCIONAL y aditivo: el webhook lo puebla cuando la OCR trae
58
+ * domicilio y `places` resuelve; si no, el upsert corre sin dirección y se completa después. ⚠️ PII.
59
+ */
60
+ address?: AddressBase;
45
61
  }
@@ -15,6 +15,8 @@ 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
17
  const KycSubChecks_1 = require("../dtos/KycSubChecks");
18
+ const KycPersonData_1 = require("../dtos/responses/KycPersonData");
19
+ const AddressBase_1 = require("../../address/dtos/AddressBase");
18
20
  /**
19
21
  * Cambio terminal de una verificación KYC, tal como lo publica `kyc-metamap-webhook` directo en
20
22
  * `RetailKycInboundQueue` (el webhook manda un `SendMessage` cuando la verificación pasa a COMPLETED).
@@ -82,3 +84,17 @@ __decorate([
82
84
  (0, class_transformer_1.Type)(() => KycSubChecks_1.KycSubChecks),
83
85
  __metadata("design:type", KycSubChecks_1.KycSubChecks)
84
86
  ], KycVerificationChangedV1.prototype, "subChecks", void 0);
87
+ __decorate([
88
+ (0, class_transformer_1.Expose)(),
89
+ (0, class_validator_1.IsOptional)(),
90
+ (0, class_validator_1.ValidateNested)(),
91
+ (0, class_transformer_1.Type)(() => KycPersonData_1.KycPersonData),
92
+ __metadata("design:type", KycPersonData_1.KycPersonData)
93
+ ], KycVerificationChangedV1.prototype, "person", void 0);
94
+ __decorate([
95
+ (0, class_transformer_1.Expose)(),
96
+ (0, class_validator_1.IsOptional)(),
97
+ (0, class_validator_1.ValidateNested)(),
98
+ (0, class_transformer_1.Type)(() => AddressBase_1.AddressBase),
99
+ __metadata("design:type", AddressBase_1.AddressBase)
100
+ ], KycVerificationChangedV1.prototype, "address", void 0);
@@ -0,0 +1,11 @@
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
+ }
@@ -0,0 +1,46 @@
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);
@@ -0,0 +1,11 @@
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
+ }
@@ -0,0 +1,15 @@
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 = {}));
@@ -0,0 +1,26 @@
1
+ import { ClientLevelEnum } from '../../loanScoring/enums/ClientLevelEnum';
2
+ import { LoanCreditStatusEnum } from '../../loanCredit/enums/LoanCreditStatusEnum';
3
+ /**
4
+ * Resumen financiero TRANSITORIO del crédito para las pantallas del wizard (06 cotización /
5
+ * 08 firma). Se arma en cada response desde `loan-credit GET|originate|quote` — NO se persiste
6
+ * en la sesión (regla punteros-no-datos del sub-objeto `loan`). Montos en cents; TNA decimal.
7
+ * SureKeep Fase 2 — pista SOFOM.
8
+ */
9
+ export interface WizardCreditSummary {
10
+ creditId: string;
11
+ status: LoanCreditStatusEnum;
12
+ planId: string;
13
+ termWeeks: number;
14
+ equipmentPriceCents: number;
15
+ downPaymentCents: number;
16
+ financedCapitalCents: number;
17
+ tnaAnnual: number;
18
+ /** Cuota semanal sin IVA (amortización francesa, constante). */
19
+ weeklyPaymentCents: number;
20
+ /** Cuota semanal con IVA — el número que ve el cliente. */
21
+ weeklyPaymentWithIvaCents: number;
22
+ totalInterestCents: number;
23
+ totalIvaCents: number;
24
+ totalToPayCents: number;
25
+ clientLevelAtOrigination?: ClientLevelEnum;
26
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,24 @@
1
+ import { ClientLevelEnum } from '../../loanScoring/enums/ClientLevelEnum';
2
+ /**
3
+ * Contexto de crédito de la sesión (`WizardSession.loan`) — pista SOFOM, pasos 04-09 del wizard.
4
+ *
5
+ * Guarda SOLO PUNTEROS al dominio loan-*: el detalle financiero (montos, cuota, checklist,
6
+ * estado) se lee de `loan-credit GET /private/credits/{creditId}`; la oferta/decisión del score
7
+ * de `loan-scoring GET /private/scoring/evaluations/{sciEvaluationId}`. Nunca denormalizar datos
8
+ * financieros acá (única excepción: `level`, para el chip de nivel sin refetch).
9
+ *
10
+ * `null` en ventas de contado/externa; se hidrata paso a paso solo en la venta a crédito.
11
+ * SureKeep Fase 2 — pista SOFOM.
12
+ */
13
+ export declare class WizardLoan {
14
+ /** Paso 04 — acreditado creado on-demand al elegir SureKeep (`POST /private/borrowers`). */
15
+ borrowerId: string;
16
+ /** Paso 05 — snapshot inmutable de la evaluación SCI (`POST /private/scoring/evaluate`). */
17
+ sciEvaluationId?: string;
18
+ /** Paso 05 — nivel denormalizado (display del chip de nivel; el snapshot es la fuente). */
19
+ level?: ClientLevelEnum;
20
+ /** Paso 06 — plan del catálogo SOFOM resuelto por nivel (loan-offerings). */
21
+ planId?: string;
22
+ /** Paso 06 — crédito originado en `PENDING_ACTIVATION` (`POST /private/credits/originate`). */
23
+ creditId?: string;
24
+ }
@@ -0,0 +1,58 @@
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.WizardLoan = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const ClientLevelEnum_1 = require("../../loanScoring/enums/ClientLevelEnum");
16
+ /**
17
+ * Contexto de crédito de la sesión (`WizardSession.loan`) — pista SOFOM, pasos 04-09 del wizard.
18
+ *
19
+ * Guarda SOLO PUNTEROS al dominio loan-*: el detalle financiero (montos, cuota, checklist,
20
+ * estado) se lee de `loan-credit GET /private/credits/{creditId}`; la oferta/decisión del score
21
+ * de `loan-scoring GET /private/scoring/evaluations/{sciEvaluationId}`. Nunca denormalizar datos
22
+ * financieros acá (única excepción: `level`, para el chip de nivel sin refetch).
23
+ *
24
+ * `null` en ventas de contado/externa; se hidrata paso a paso solo en la venta a crédito.
25
+ * SureKeep Fase 2 — pista SOFOM.
26
+ */
27
+ class WizardLoan {
28
+ }
29
+ exports.WizardLoan = WizardLoan;
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ (0, class_validator_1.IsString)(),
33
+ __metadata("design:type", String)
34
+ ], WizardLoan.prototype, "borrowerId", void 0);
35
+ __decorate([
36
+ (0, class_transformer_1.Expose)(),
37
+ (0, class_validator_1.IsOptional)(),
38
+ (0, class_validator_1.IsString)(),
39
+ __metadata("design:type", String)
40
+ ], WizardLoan.prototype, "sciEvaluationId", void 0);
41
+ __decorate([
42
+ (0, class_transformer_1.Expose)(),
43
+ (0, class_validator_1.IsOptional)(),
44
+ (0, class_validator_1.IsEnum)(ClientLevelEnum_1.ClientLevelEnum),
45
+ __metadata("design:type", String)
46
+ ], WizardLoan.prototype, "level", void 0);
47
+ __decorate([
48
+ (0, class_transformer_1.Expose)(),
49
+ (0, class_validator_1.IsOptional)(),
50
+ (0, class_validator_1.IsString)(),
51
+ __metadata("design:type", String)
52
+ ], WizardLoan.prototype, "planId", void 0);
53
+ __decorate([
54
+ (0, class_transformer_1.Expose)(),
55
+ (0, class_validator_1.IsOptional)(),
56
+ (0, class_validator_1.IsString)(),
57
+ __metadata("design:type", String)
58
+ ], WizardLoan.prototype, "creditId", void 0);
@@ -5,6 +5,7 @@ import type { PaymentMethodEnum } from '../enums/PaymentMethodEnum';
5
5
  import type { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
6
6
  import type { OccupationEnum } from '../enums/OccupationEnum';
7
7
  import type { WizardConsents } from './WizardConsents';
8
+ import type { WizardLoan } from './WizardLoan';
8
9
  import type { WizardPayment } from './WizardPayment';
9
10
  import type { WizardWelcome } from './WizardWelcome';
10
11
  /** Modalidad de captura del KYC (M1 §213-329). */
@@ -52,6 +53,8 @@ export interface WizardSession {
52
53
  folio: string | null;
53
54
  payment: WizardPayment | null;
54
55
  welcome: WizardWelcome | null;
56
+ /** Contexto de crédito (pista SOFOM, pasos 04-09): PUNTEROS al dominio loan-*. Null en contado/externa. */
57
+ loan: WizardLoan | null;
55
58
  saleId: string | null;
56
59
  /** Prospecto vinculado (si la sesión se reanudó desde un prospecto): se cierra al cerrar la venta (D-prospecto). */
57
60
  prospectId: string | null;
@@ -0,0 +1,16 @@
1
+ import { SalePaymentMethodEnum } from '../../enums/SalePaymentMethodEnum';
2
+ import { SalePaymentDetail } from '../SalePaymentDetail';
3
+ /**
4
+ * POST /wizard/sessions/:id/down-payment — cobro del ENGANCHE de la venta a crédito (paso 07,
5
+ * pista SOFOM). Endpoint propio, separado del cobro de contado (`/payment`): acá la regla dura es
6
+ * `amountCents == downPaymentCents` del crédito (`loan-credit GET /credits/{id}`), NO el precio
7
+ * full. Idempotente por sesión. El folio `SK-…-ENG-…` lo genera el server (no viaja en el body).
8
+ * Al confirmar, el wizard marca la condición 1 del checklist (`activate-check { downPayment }`).
9
+ * SPEI: el vendedor captura el comprobante (`speiTrackingKey`+`senderClabe`) y avanza.
10
+ * SureKeep Fase 2 — pista SOFOM.
11
+ */
12
+ export declare class DownPaymentRequest {
13
+ method: SalePaymentMethodEnum;
14
+ amountCents: number;
15
+ detail?: SalePaymentDetail;
16
+ }
@@ -0,0 +1,46 @@
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.DownPaymentRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const SalePaymentMethodEnum_1 = require("../../enums/SalePaymentMethodEnum");
16
+ const SalePaymentDetail_1 = require("../SalePaymentDetail");
17
+ /**
18
+ * POST /wizard/sessions/:id/down-payment — cobro del ENGANCHE de la venta a crédito (paso 07,
19
+ * pista SOFOM). Endpoint propio, separado del cobro de contado (`/payment`): acá la regla dura es
20
+ * `amountCents == downPaymentCents` del crédito (`loan-credit GET /credits/{id}`), NO el precio
21
+ * full. Idempotente por sesión. El folio `SK-…-ENG-…` lo genera el server (no viaja en el body).
22
+ * Al confirmar, el wizard marca la condición 1 del checklist (`activate-check { downPayment }`).
23
+ * SPEI: el vendedor captura el comprobante (`speiTrackingKey`+`senderClabe`) y avanza.
24
+ * SureKeep Fase 2 — pista SOFOM.
25
+ */
26
+ class DownPaymentRequest {
27
+ }
28
+ exports.DownPaymentRequest = DownPaymentRequest;
29
+ __decorate([
30
+ (0, class_transformer_1.Expose)(),
31
+ (0, class_validator_1.IsEnum)(SalePaymentMethodEnum_1.SalePaymentMethodEnum),
32
+ __metadata("design:type", String)
33
+ ], DownPaymentRequest.prototype, "method", void 0);
34
+ __decorate([
35
+ (0, class_transformer_1.Expose)(),
36
+ (0, class_validator_1.IsInt)(),
37
+ (0, class_validator_1.Min)(0),
38
+ __metadata("design:type", Number)
39
+ ], DownPaymentRequest.prototype, "amountCents", void 0);
40
+ __decorate([
41
+ (0, class_transformer_1.Expose)(),
42
+ (0, class_validator_1.IsOptional)(),
43
+ (0, class_transformer_1.Type)(() => SalePaymentDetail_1.SalePaymentDetail),
44
+ (0, class_validator_1.ValidateNested)(),
45
+ __metadata("design:type", SalePaymentDetail_1.SalePaymentDetail)
46
+ ], DownPaymentRequest.prototype, "detail", void 0);
@@ -0,0 +1,11 @@
1
+ /**
2
+ * POST /wizard/sessions/:id/quote — términos elegidos en el cotizador del paso 06 (slider de
3
+ * enganche + botones de plazo). El wizard valida contra los bounds del PLAN resuelto por nivel
4
+ * (`minDownPaymentPct`/`maxDownPaymentPct`/`termWeeksOptions`) y origina (o re-cotiza) el crédito
5
+ * en loan-credit. El precio del equipo NO viaja: es el ancla `reservedCashPriceCents` de la sesión.
6
+ * SureKeep Fase 2 — pista SOFOM.
7
+ */
8
+ export declare class QuoteRequest {
9
+ downPaymentCents: number;
10
+ termWeeks: number;
11
+ }
@@ -0,0 +1,36 @@
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.QuoteRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /**
16
+ * POST /wizard/sessions/:id/quote — términos elegidos en el cotizador del paso 06 (slider de
17
+ * enganche + botones de plazo). El wizard valida contra los bounds del PLAN resuelto por nivel
18
+ * (`minDownPaymentPct`/`maxDownPaymentPct`/`termWeeksOptions`) y origina (o re-cotiza) el crédito
19
+ * en loan-credit. El precio del equipo NO viaja: es el ancla `reservedCashPriceCents` de la sesión.
20
+ * SureKeep Fase 2 — pista SOFOM.
21
+ */
22
+ class QuoteRequest {
23
+ }
24
+ exports.QuoteRequest = QuoteRequest;
25
+ __decorate([
26
+ (0, class_transformer_1.Expose)(),
27
+ (0, class_validator_1.IsInt)(),
28
+ (0, class_validator_1.Min)(0),
29
+ __metadata("design:type", Number)
30
+ ], QuoteRequest.prototype, "downPaymentCents", void 0);
31
+ __decorate([
32
+ (0, class_transformer_1.Expose)(),
33
+ (0, class_validator_1.IsInt)(),
34
+ (0, class_validator_1.Min)(1),
35
+ __metadata("design:type", Number)
36
+ ], QuoteRequest.prototype, "termWeeks", void 0);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * POST /wizard/sessions/:id/device — registro del IMEI del equipo entregado (paso 09, variante
3
+ * crédito). El wizard valida el formato (15 dígitos); el Luhn y la unicidad (`IMEI_IN_USE`) los
4
+ * valida loan-credit en el `activate-check`, que además dispara el enrolamiento MDM (condiciones
5
+ * 3-4 del checklist). SureKeep Fase 2 — pista SOFOM.
6
+ */
7
+ export declare class RegisterDeviceRequest {
8
+ imei: string;
9
+ }
@@ -9,26 +9,21 @@ 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.CompleteMyProfileRequest = void 0;
12
+ exports.RegisterDeviceRequest = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  /**
16
- * Body del PUT /me/profile/complete (autenticado, gate post-MFA del autoregistro). DEC-RBAC-034.
17
- * Opera sobre el propio usuario (cognitoSub del token). Valida nombre + los `userFieldDefs` requeridos
18
- * del tenant (422 MISSING_REQUIRED_FIELDS si faltan) y flipea `profileComplete=true`.
16
+ * POST /wizard/sessions/:id/device registro del IMEI del equipo entregado (paso 09, variante
17
+ * crédito). El wizard valida el formato (15 dígitos); el Luhn y la unicidad (`IMEI_IN_USE`) los
18
+ * valida loan-credit en el `activate-check`, que además dispara el enrolamiento MDM (condiciones
19
+ * 3-4 del checklist). SureKeep Fase 2 — pista SOFOM.
19
20
  */
20
- class CompleteMyProfileRequest {
21
+ class RegisterDeviceRequest {
21
22
  }
22
- exports.CompleteMyProfileRequest = CompleteMyProfileRequest;
23
+ exports.RegisterDeviceRequest = RegisterDeviceRequest;
23
24
  __decorate([
24
25
  (0, class_transformer_1.Expose)(),
25
26
  (0, class_validator_1.IsString)(),
26
- (0, class_validator_1.IsNotEmpty)(),
27
+ (0, class_validator_1.Matches)(/^\d{15}$/, { message: 'imei debe ser de 15 dígitos' }),
27
28
  __metadata("design:type", String)
28
- ], CompleteMyProfileRequest.prototype, "displayName", void 0);
29
- __decorate([
30
- (0, class_transformer_1.Expose)(),
31
- (0, class_validator_1.IsOptional)(),
32
- (0, class_validator_1.IsObject)(),
33
- __metadata("design:type", Object)
34
- ], CompleteMyProfileRequest.prototype, "customFields", void 0);
29
+ ], RegisterDeviceRequest.prototype, "imei", void 0);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * POST /wizard/sessions/:id/signature/sign — firma FES tiempo 2 (paso 08): verifica el OTP de
3
+ * firma (4 dígitos — M2 §4.4) y firma los contratos en loan-credit (sha256 + `signedAt` +
4
+ * condición 2 del checklist). Errores: `OTP_INVALID` · `OTP_EXPIRED` · `OTP_MAX_ATTEMPTS`.
5
+ * SureKeep Fase 2 — pista SOFOM.
6
+ */
7
+ export declare class SignatureSignRequest {
8
+ otpCode: string;
9
+ }
@@ -9,13 +9,21 @@ 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.CancelWalletFundingRequest = void 0;
12
+ exports.SignatureSignRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
13
14
  const class_validator_1 = require("class-validator");
14
- class CancelWalletFundingRequest {
15
+ /**
16
+ * POST /wizard/sessions/:id/signature/sign — firma FES tiempo 2 (paso 08): verifica el OTP de
17
+ * firma (4 dígitos — M2 §4.4) y firma los contratos en loan-credit (sha256 + `signedAt` +
18
+ * condición 2 del checklist). Errores: `OTP_INVALID` · `OTP_EXPIRED` · `OTP_MAX_ATTEMPTS`.
19
+ * SureKeep Fase 2 — pista SOFOM.
20
+ */
21
+ class SignatureSignRequest {
15
22
  }
16
- exports.CancelWalletFundingRequest = CancelWalletFundingRequest;
23
+ exports.SignatureSignRequest = SignatureSignRequest;
17
24
  __decorate([
25
+ (0, class_transformer_1.Expose)(),
18
26
  (0, class_validator_1.IsString)(),
19
- (0, class_validator_1.MaxLength)(64),
27
+ (0, class_validator_1.Matches)(/^\d{4}$/, { message: 'otpCode debe ser de 4 dígitos' }),
20
28
  __metadata("design:type", String)
21
- ], CancelWalletFundingRequest.prototype, "idempotencyKey", void 0);
29
+ ], SignatureSignRequest.prototype, "otpCode", void 0);
@@ -0,0 +1,12 @@
1
+ import { WizardCreditSummary } from '../WizardCreditSummary';
2
+ /**
3
+ * GET /wizard/sessions/:id/contract/preview — resumen previo a la firma FES (paso 08): el estado
4
+ * financiero del crédito (fuente: loan-credit) + las variables del template del contrato que el
5
+ * wizard armará para el sign tiempo-1 (`contractData`: nombre, CURP, domicilio… — PII TRANSITORIA,
6
+ * viaja solo en esta response, NO se persiste ni loggea). El PDF real lo genera el sign tiempo-1
7
+ * en loan-credit; este preview no llama a document-generator. SureKeep Fase 2 — pista SOFOM.
8
+ */
9
+ export interface ContractPreviewResponse {
10
+ credit: WizardCreditSummary;
11
+ contractData: Record<string, string>;
12
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { ActivationChecklist } from '../../../loanCredit/dtos/ActivationChecklist';
2
+ /**
3
+ * POST /wizard/sessions/:id/down-payment — confirmación del cobro del enganche (paso 07).
4
+ * `paymentId` = el folio de enganche `SK-…-ENG-…` (identificador natural del cobro en caja;
5
+ * concilia contra el depósito semanal del retailer). `checklist` refleja el estado post
6
+ * `activate-check { downPayment: true }` en loan-credit. SureKeep Fase 2 — pista SOFOM.
7
+ */
8
+ export interface DownPaymentResponse {
9
+ paymentId: string;
10
+ folio: string;
11
+ /** ISO 8601 del registro del cobro en la sesión. */
12
+ registeredAt: string;
13
+ checklist: ActivationChecklist;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ import { WizardCreditSummary } from '../WizardCreditSummary';
2
+ /** Bounds y parámetros del plan que gobiernan el cotizador (slider + plazos) del paso 06. */
3
+ export interface QuotePlanBounds {
4
+ planId: string;
5
+ code: string;
6
+ /** Enganche mínimo como decimal sobre 1 (`0.40` = 40%). */
7
+ minDownPaymentPct: number;
8
+ /** Techo de enganche (decimal sobre 1); `null` = sin techo definido. */
9
+ maxDownPaymentPct: number | null;
10
+ termWeeksOptions: number[];
11
+ /** TNA decimal (`2.60` = 260%) — la tasa que manda es la del PLAN. */
12
+ tnaAnnual: number;
13
+ openingCommissionPct: number;
14
+ }
15
+ /**
16
+ * POST /wizard/sessions/:id/quote — respuesta del cotizador del paso 06: el plan resuelto por
17
+ * nivel + el snapshot financiero del crédito originado/re-cotizado (transitorio, NO se persiste
18
+ * en la sesión — la fuente es loan-credit). SureKeep Fase 2 — pista SOFOM.
19
+ */
20
+ export interface QuoteResponse {
21
+ plan: QuotePlanBounds;
22
+ credit: WizardCreditSummary;
23
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { LoanCreditStatusEnum } from '../../../loanCredit/enums/LoanCreditStatusEnum';
2
+ import { ActivationChecklist } from '../../../loanCredit/dtos/ActivationChecklist';
3
+ /**
4
+ * POST /wizard/sessions/:id/device — resultado del registro de IMEI + candado (paso 09).
5
+ * `active: true` cuando el checklist quedó 4/4 y el crédito pasó a `ACTIVE` (el front bloquea
6
+ * "Continuar a Bienvenida" hasta entonces; `missingItems` lista lo que falta).
7
+ * SureKeep Fase 2 — pista SOFOM.
8
+ */
9
+ export interface RegisterDeviceResponse {
10
+ creditStatus: LoanCreditStatusEnum;
11
+ checklist: ActivationChecklist;
12
+ missingItems: string[];
13
+ active: boolean;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,20 @@
1
+ import { ClientLevelEnum } from '../../../loanScoring/enums/ClientLevelEnum';
2
+ import { ScoringDecisionEnum } from '../../../loanScoring/enums/ScoringDecisionEnum';
3
+ import { ScoringOffer } from '../../../loanScoring/dtos/ScoringOffer';
4
+ /**
5
+ * POST /wizard/sessions/:id/score/consult — resultado de la evaluación SCI del paso 05.
6
+ *
7
+ * El wizard es idempotente por sesión: si la sesión ya tiene `loan.sciEvaluationId`, devuelve el
8
+ * snapshot existente (no re-evalúa — cada evaluate del motor genera un snapshot NUEVO).
9
+ * `REJECTED`/`NO_ELIGIBLE` no matan la venta: el front ofrece financiera externa o contado.
10
+ * SureKeep Fase 2 — pista SOFOM.
11
+ */
12
+ export interface ScoreConsultResponse {
13
+ /** Decisión normalizada del motor de scoring. */
14
+ status: ScoringDecisionEnum;
15
+ level: ClientLevelEnum;
16
+ /** Puntero al snapshot inmutable en loan-scoring (se persiste en `WizardSession.loan`). */
17
+ sciEvaluationId: string;
18
+ /** Oferta del proveedor (display del paso 05; la cotización del 06 usa el PLAN, no esto). */
19
+ offer: ScoringOffer | null;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { ClientLevelEnum } from '../../../loanScoring/enums/ClientLevelEnum';
2
+ import { ScoringDecisionEnum } from '../../../loanScoring/enums/ScoringDecisionEnum';
3
+ import { ScoringOffer } from '../../../loanScoring/dtos/ScoringOffer';
4
+ /**
5
+ * GET /wizard/sessions/:id/score/result — lectura del resultado del score del paso 05 (la tablet
6
+ * lee el snapshot ya persistido vía `loan.sciEvaluationId`; no dispara evaluación).
7
+ * SureKeep Fase 2 — pista SOFOM.
8
+ */
9
+ export interface ScoreResultResponse {
10
+ status: ScoringDecisionEnum;
11
+ level: ClientLevelEnum;
12
+ sciEvaluationId: string;
13
+ offer: ScoringOffer | null;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });