@fiado/type-kit 3.213.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 (63) hide show
  1. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.d.ts +11 -0
  2. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.js +46 -0
  3. package/bin/loanCredit/enums/ClientLevelEnum.d.ts +11 -0
  4. package/bin/loanCredit/enums/ClientLevelEnum.js +15 -0
  5. package/bin/retailWizard/dtos/WizardCreditSummary.d.ts +26 -0
  6. package/bin/retailWizard/dtos/WizardCreditSummary.js +2 -0
  7. package/bin/retailWizard/dtos/WizardLoan.d.ts +24 -0
  8. package/bin/retailWizard/dtos/WizardLoan.js +58 -0
  9. package/bin/retailWizard/dtos/WizardSession.d.ts +3 -0
  10. package/bin/retailWizard/dtos/requests/DownPaymentRequest.d.ts +16 -0
  11. package/bin/retailWizard/dtos/requests/DownPaymentRequest.js +46 -0
  12. package/bin/retailWizard/dtos/requests/QuoteRequest.d.ts +11 -0
  13. package/bin/retailWizard/dtos/requests/QuoteRequest.js +36 -0
  14. package/bin/retailWizard/dtos/requests/RegisterDeviceRequest.d.ts +9 -0
  15. package/bin/{platformRbac/dtos/ResendOtpRequest.js → retailWizard/dtos/requests/RegisterDeviceRequest.js} +9 -16
  16. package/bin/retailWizard/dtos/requests/SignatureSignRequest.d.ts +9 -0
  17. package/bin/{platformRbac/dtos/ResendSelfRegisterOtpRequest.js → retailWizard/dtos/requests/SignatureSignRequest.js} +9 -16
  18. package/bin/retailWizard/dtos/responses/ContractPreviewResponse.d.ts +12 -0
  19. package/bin/retailWizard/dtos/responses/ContractPreviewResponse.js +2 -0
  20. package/bin/retailWizard/dtos/responses/DownPaymentResponse.d.ts +14 -0
  21. package/bin/retailWizard/dtos/responses/DownPaymentResponse.js +2 -0
  22. package/bin/retailWizard/dtos/responses/QuoteResponse.d.ts +23 -0
  23. package/bin/retailWizard/dtos/responses/QuoteResponse.js +2 -0
  24. package/bin/retailWizard/dtos/responses/RegisterDeviceResponse.d.ts +14 -0
  25. package/bin/retailWizard/dtos/responses/RegisterDeviceResponse.js +2 -0
  26. package/bin/retailWizard/dtos/responses/ScoreConsultResponse.d.ts +20 -0
  27. package/bin/retailWizard/dtos/responses/ScoreConsultResponse.js +2 -0
  28. package/bin/retailWizard/dtos/responses/ScoreResultResponse.d.ts +14 -0
  29. package/bin/retailWizard/dtos/responses/ScoreResultResponse.js +2 -0
  30. package/bin/retailWizard/dtos/responses/SessionFinanciersResponse.d.ts +26 -0
  31. package/bin/retailWizard/dtos/responses/SessionFinanciersResponse.js +2 -0
  32. package/bin/retailWizard/dtos/responses/SignatureSendOtpResponse.d.ts +10 -0
  33. package/bin/retailWizard/dtos/responses/SignatureSendOtpResponse.js +2 -0
  34. package/bin/retailWizard/dtos/responses/SignatureSignResponse.d.ts +10 -0
  35. package/bin/retailWizard/dtos/responses/SignatureSignResponse.js +2 -0
  36. package/bin/retailWizard/index.d.ts +15 -0
  37. package/bin/retailWizard/index.js +15 -0
  38. package/package.json +1 -1
  39. package/src/retailWizard/dtos/WizardCreditSummary.ts +27 -0
  40. package/src/retailWizard/dtos/WizardLoan.ts +45 -0
  41. package/src/retailWizard/dtos/WizardSession.ts +3 -0
  42. package/src/retailWizard/dtos/requests/DownPaymentRequest.ts +30 -0
  43. package/src/retailWizard/dtos/requests/QuoteRequest.ts +21 -0
  44. package/src/retailWizard/dtos/requests/RegisterDeviceRequest.ts +15 -0
  45. package/src/retailWizard/dtos/requests/SignatureSignRequest.ts +15 -0
  46. package/src/retailWizard/dtos/responses/ContractPreviewResponse.ts +13 -0
  47. package/src/retailWizard/dtos/responses/DownPaymentResponse.ts +15 -0
  48. package/src/retailWizard/dtos/responses/QuoteResponse.ts +25 -0
  49. package/src/retailWizard/dtos/responses/RegisterDeviceResponse.ts +15 -0
  50. package/src/retailWizard/dtos/responses/ScoreConsultResponse.ts +21 -0
  51. package/src/retailWizard/dtos/responses/ScoreResultResponse.ts +15 -0
  52. package/src/retailWizard/dtos/responses/SessionFinanciersResponse.ts +28 -0
  53. package/src/retailWizard/dtos/responses/SignatureSendOtpResponse.ts +10 -0
  54. package/src/retailWizard/dtos/responses/SignatureSignResponse.ts +11 -0
  55. package/src/retailWizard/index.ts +15 -0
  56. package/bin/benefitCenter/enums/BenefitFlowEnum.d.ts +0 -11
  57. package/bin/benefitCenter/enums/BenefitFlowEnum.js +0 -15
  58. package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +0 -11
  59. package/bin/loanConfig/enums/ModifiableByRoleEnum.js +0 -15
  60. package/bin/places/dtos/CashInFeeDto.d.ts +0 -17
  61. package/bin/places/dtos/CashInFeeDto.js +0 -12
  62. package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +0 -22
  63. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +0 -11
@@ -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,28 +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.ResendOtpRequest = 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 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).
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.
21
20
  */
22
- class ResendOtpRequest {
21
+ class RegisterDeviceRequest {
23
22
  }
24
- exports.ResendOtpRequest = ResendOtpRequest;
25
- __decorate([
26
- (0, class_transformer_1.Expose)(),
27
- (0, class_validator_1.IsEmail)(),
28
- (0, class_validator_1.IsNotEmpty)(),
29
- __metadata("design:type", String)
30
- ], ResendOtpRequest.prototype, "email", void 0);
23
+ exports.RegisterDeviceRequest = RegisterDeviceRequest;
31
24
  __decorate([
32
25
  (0, class_transformer_1.Expose)(),
33
26
  (0, class_validator_1.IsString)(),
34
- (0, class_validator_1.IsNotEmpty)(),
27
+ (0, class_validator_1.Matches)(/^\d{15}$/, { message: 'imei debe ser de 15 dígitos' }),
35
28
  __metadata("design:type", String)
36
- ], ResendOtpRequest.prototype, "tenantId", 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,28 +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.ResendSelfRegisterOtpRequest = void 0;
12
+ exports.SignatureSignRequest = 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 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).
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.
21
20
  */
22
- class ResendSelfRegisterOtpRequest {
21
+ class SignatureSignRequest {
23
22
  }
24
- exports.ResendSelfRegisterOtpRequest = ResendSelfRegisterOtpRequest;
23
+ exports.SignatureSignRequest = SignatureSignRequest;
25
24
  __decorate([
26
25
  (0, class_transformer_1.Expose)(),
27
26
  (0, class_validator_1.IsString)(),
28
- (0, class_validator_1.IsNotEmpty)(),
27
+ (0, class_validator_1.Matches)(/^\d{4}$/, { message: 'otpCode debe ser de 4 dígitos' }),
29
28
  __metadata("design:type", String)
30
- ], ResendSelfRegisterOtpRequest.prototype, "tenantId", void 0);
31
- __decorate([
32
- (0, class_transformer_1.Expose)(),
33
- (0, class_validator_1.IsEmail)(),
34
- (0, class_validator_1.IsNotEmpty)(),
35
- __metadata("design:type", String)
36
- ], ResendSelfRegisterOtpRequest.prototype, "email", 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 });
@@ -0,0 +1,26 @@
1
+ import { FinancierTypeEnum } from '../../../loanOfferings/enums/FinancierTypeEnum';
2
+ /**
3
+ * Una opción de financiamiento del paso 04 (pantalla forma de pago): la unión de las financieras
4
+ * ACTIVE del catálogo SOFOM (`loan-offerings GET /private/financiers/active` — display + orden)
5
+ * con la elegibilidad del producto reservado (`eligibleFinanciers` del catálogo retail).
6
+ */
7
+ export interface SessionFinancierOption {
8
+ code: string;
9
+ name: string;
10
+ /** Texto de display de la card (viene del catálogo SOFOM). */
11
+ label: string;
12
+ /** INTERNAL = SureKeep (pista crédito propia); EXTERNAL = derivación (PayJoy, CrediYa…). */
13
+ type: FinancierTypeEnum;
14
+ displayOrder: number;
15
+ /** Solo EXTERNAL: URL de derivación. */
16
+ externalRedirectUrl: string | null;
17
+ /** El producto reservado admite esta financiera (INTERNAL siempre elegible). */
18
+ eligible: boolean;
19
+ }
20
+ /**
21
+ * GET /wizard/sessions/:id/financiers — las opciones de financiamiento del paso 04 para la sesión
22
+ * (según su producto reservado). Ordenadas por `displayOrder`. SureKeep Fase 2 — pista SOFOM.
23
+ */
24
+ export interface SessionFinanciersResponse {
25
+ financiers: SessionFinancierOption[];
26
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * POST /wizard/sessions/:id/signature/send-otp — firma FES tiempo 1 (paso 08): loan-credit
3
+ * congela términos, genera los PDFs y despacha el OTP dedicado de firma (4 dígitos, 5 min) al
4
+ * teléfono del cliente vía messages-business. SureKeep Fase 2 — pista SOFOM.
5
+ */
6
+ export interface SignatureSendOtpResponse {
7
+ otpSent: boolean;
8
+ /** Teléfono destino enmascarado para la pantalla (`****1234`) — nunca el número completo. */
9
+ otpDestinationMasked: string;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { ActivationChecklist } from '../../../loanCredit/dtos/ActivationChecklist';
2
+ /**
3
+ * POST /wizard/sessions/:id/signature/sign — resultado de la firma FES tiempo 2 (paso 08).
4
+ * `signed: true` implica `checklist.contractSigned: true` (condición 2 de activación).
5
+ * SureKeep Fase 2 — pista SOFOM.
6
+ */
7
+ export interface SignatureSignResponse {
8
+ signed: boolean;
9
+ checklist: ActivationChecklist;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });