@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
@@ -18,6 +18,8 @@ export * from './dtos/WizardWelcome';
18
18
  export * from './dtos/SalePaymentDetail';
19
19
  export * from './dtos/ProspectNewCustomer';
20
20
  export * from './dtos/WizardBeneficiary';
21
+ export * from './dtos/WizardLoan';
22
+ export * from './dtos/WizardCreditSummary';
21
23
  export * from './dtos/WizardSession';
22
24
  export * from './dtos/OtpVerification';
23
25
  export * from './dtos/Sale';
@@ -49,7 +51,20 @@ export * from './dtos/requests/CreateProspectRequest';
49
51
  export * from './dtos/requests/UpdateProspectRequest';
50
52
  export * from './dtos/requests/MarkProspectLostRequest';
51
53
  export * from './dtos/requests/CancelSaleRequest';
54
+ export * from './dtos/requests/QuoteRequest';
55
+ export * from './dtos/requests/DownPaymentRequest';
56
+ export * from './dtos/requests/SignatureSignRequest';
57
+ export * from './dtos/requests/RegisterDeviceRequest';
52
58
  export * from './dtos/responses/KycPrepareResponse';
59
+ export * from './dtos/responses/SessionFinanciersResponse';
60
+ export * from './dtos/responses/ScoreConsultResponse';
61
+ export * from './dtos/responses/ScoreResultResponse';
62
+ export * from './dtos/responses/QuoteResponse';
63
+ export * from './dtos/responses/DownPaymentResponse';
64
+ export * from './dtos/responses/ContractPreviewResponse';
65
+ export * from './dtos/responses/SignatureSendOtpResponse';
66
+ export * from './dtos/responses/SignatureSignResponse';
67
+ export * from './dtos/responses/RegisterDeviceResponse';
53
68
  export * from './events/SaleCompletedV1';
54
69
  export * from './events/SaleCancelledV1';
55
70
  export * from './events/SessionExpiredV1';
@@ -36,6 +36,8 @@ __exportStar(require("./dtos/WizardWelcome"), exports);
36
36
  __exportStar(require("./dtos/SalePaymentDetail"), exports);
37
37
  __exportStar(require("./dtos/ProspectNewCustomer"), exports);
38
38
  __exportStar(require("./dtos/WizardBeneficiary"), exports);
39
+ __exportStar(require("./dtos/WizardLoan"), exports);
40
+ __exportStar(require("./dtos/WizardCreditSummary"), exports);
39
41
  // Entidades principales (shapes de estado/persistencia — planas)
40
42
  __exportStar(require("./dtos/WizardSession"), exports);
41
43
  __exportStar(require("./dtos/OtpVerification"), exports);
@@ -70,8 +72,21 @@ __exportStar(require("./dtos/requests/CreateProspectRequest"), exports);
70
72
  __exportStar(require("./dtos/requests/UpdateProspectRequest"), exports);
71
73
  __exportStar(require("./dtos/requests/MarkProspectLostRequest"), exports);
72
74
  __exportStar(require("./dtos/requests/CancelSaleRequest"), exports);
75
+ __exportStar(require("./dtos/requests/QuoteRequest"), exports);
76
+ __exportStar(require("./dtos/requests/DownPaymentRequest"), exports);
77
+ __exportStar(require("./dtos/requests/SignatureSignRequest"), exports);
78
+ __exportStar(require("./dtos/requests/RegisterDeviceRequest"), exports);
73
79
  // Response DTOs (output tipado por endpoint)
74
80
  __exportStar(require("./dtos/responses/KycPrepareResponse"), exports);
81
+ __exportStar(require("./dtos/responses/SessionFinanciersResponse"), exports);
82
+ __exportStar(require("./dtos/responses/ScoreConsultResponse"), exports);
83
+ __exportStar(require("./dtos/responses/ScoreResultResponse"), exports);
84
+ __exportStar(require("./dtos/responses/QuoteResponse"), exports);
85
+ __exportStar(require("./dtos/responses/DownPaymentResponse"), exports);
86
+ __exportStar(require("./dtos/responses/ContractPreviewResponse"), exports);
87
+ __exportStar(require("./dtos/responses/SignatureSendOtpResponse"), exports);
88
+ __exportStar(require("./dtos/responses/SignatureSignResponse"), exports);
89
+ __exportStar(require("./dtos/responses/RegisterDeviceResponse"), exports);
75
90
  // Contratos de eventos (PascalCase + sufijo V1)
76
91
  __exportStar(require("./events/SaleCompletedV1"), exports);
77
92
  __exportStar(require("./events/SaleCancelledV1"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.213.0",
3
+ "version": "3.214.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,27 @@
1
+ import { ClientLevelEnum } from '../../loanScoring/enums/ClientLevelEnum';
2
+ import { LoanCreditStatusEnum } from '../../loanCredit/enums/LoanCreditStatusEnum';
3
+
4
+ /**
5
+ * Resumen financiero TRANSITORIO del crédito para las pantallas del wizard (06 cotización /
6
+ * 08 firma). Se arma en cada response desde `loan-credit GET|originate|quote` — NO se persiste
7
+ * en la sesión (regla punteros-no-datos del sub-objeto `loan`). Montos en cents; TNA decimal.
8
+ * SureKeep Fase 2 — pista SOFOM.
9
+ */
10
+ export interface WizardCreditSummary {
11
+ creditId: string;
12
+ status: LoanCreditStatusEnum;
13
+ planId: string;
14
+ termWeeks: number;
15
+ equipmentPriceCents: number;
16
+ downPaymentCents: number;
17
+ financedCapitalCents: number;
18
+ tnaAnnual: number;
19
+ /** Cuota semanal sin IVA (amortización francesa, constante). */
20
+ weeklyPaymentCents: number;
21
+ /** Cuota semanal con IVA — el número que ve el cliente. */
22
+ weeklyPaymentWithIvaCents: number;
23
+ totalInterestCents: number;
24
+ totalIvaCents: number;
25
+ totalToPayCents: number;
26
+ clientLevelAtOrigination?: ClientLevelEnum;
27
+ }
@@ -0,0 +1,45 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsOptional, IsString } from 'class-validator';
3
+ import { ClientLevelEnum } from '../../loanScoring/enums/ClientLevelEnum';
4
+
5
+ /**
6
+ * Contexto de crédito de la sesión (`WizardSession.loan`) — pista SOFOM, pasos 04-09 del wizard.
7
+ *
8
+ * Guarda SOLO PUNTEROS al dominio loan-*: el detalle financiero (montos, cuota, checklist,
9
+ * estado) se lee de `loan-credit GET /private/credits/{creditId}`; la oferta/decisión del score
10
+ * de `loan-scoring GET /private/scoring/evaluations/{sciEvaluationId}`. Nunca denormalizar datos
11
+ * financieros acá (única excepción: `level`, para el chip de nivel sin refetch).
12
+ *
13
+ * `null` en ventas de contado/externa; se hidrata paso a paso solo en la venta a crédito.
14
+ * SureKeep Fase 2 — pista SOFOM.
15
+ */
16
+ export class WizardLoan {
17
+ /** Paso 04 — acreditado creado on-demand al elegir SureKeep (`POST /private/borrowers`). */
18
+ @Expose()
19
+ @IsString()
20
+ borrowerId!: string;
21
+
22
+ /** Paso 05 — snapshot inmutable de la evaluación SCI (`POST /private/scoring/evaluate`). */
23
+ @Expose()
24
+ @IsOptional()
25
+ @IsString()
26
+ sciEvaluationId?: string;
27
+
28
+ /** Paso 05 — nivel denormalizado (display del chip de nivel; el snapshot es la fuente). */
29
+ @Expose()
30
+ @IsOptional()
31
+ @IsEnum(ClientLevelEnum)
32
+ level?: ClientLevelEnum;
33
+
34
+ /** Paso 06 — plan del catálogo SOFOM resuelto por nivel (loan-offerings). */
35
+ @Expose()
36
+ @IsOptional()
37
+ @IsString()
38
+ planId?: string;
39
+
40
+ /** Paso 06 — crédito originado en `PENDING_ACTIVATION` (`POST /private/credits/originate`). */
41
+ @Expose()
42
+ @IsOptional()
43
+ @IsString()
44
+ creditId?: string;
45
+ }
@@ -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
 
@@ -55,6 +56,8 @@ export interface WizardSession {
55
56
  folio: string | null;
56
57
  payment: WizardPayment | null;
57
58
  welcome: WizardWelcome | null;
59
+ /** Contexto de crédito (pista SOFOM, pasos 04-09): PUNTEROS al dominio loan-*. Null en contado/externa. */
60
+ loan: WizardLoan | null;
58
61
  saleId: string | null;
59
62
  /** Prospecto vinculado (si la sesión se reanudó desde un prospecto): se cierra al cerrar la venta (D-prospecto). */
60
63
  prospectId: string | null;
@@ -0,0 +1,30 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsEnum, IsInt, IsOptional, Min, ValidateNested } from 'class-validator';
3
+ import { SalePaymentMethodEnum } from '../../enums/SalePaymentMethodEnum';
4
+ import { SalePaymentDetail } from '../SalePaymentDetail';
5
+
6
+ /**
7
+ * POST /wizard/sessions/:id/down-payment — cobro del ENGANCHE de la venta a crédito (paso 07,
8
+ * pista SOFOM). Endpoint propio, separado del cobro de contado (`/payment`): acá la regla dura es
9
+ * `amountCents == downPaymentCents` del crédito (`loan-credit GET /credits/{id}`), NO el precio
10
+ * full. Idempotente por sesión. El folio `SK-…-ENG-…` lo genera el server (no viaja en el body).
11
+ * Al confirmar, el wizard marca la condición 1 del checklist (`activate-check { downPayment }`).
12
+ * SPEI: el vendedor captura el comprobante (`speiTrackingKey`+`senderClabe`) y avanza.
13
+ * SureKeep Fase 2 — pista SOFOM.
14
+ */
15
+ export class DownPaymentRequest {
16
+ @Expose()
17
+ @IsEnum(SalePaymentMethodEnum)
18
+ method!: SalePaymentMethodEnum;
19
+
20
+ @Expose()
21
+ @IsInt()
22
+ @Min(0)
23
+ amountCents!: number;
24
+
25
+ @Expose()
26
+ @IsOptional()
27
+ @Type(() => SalePaymentDetail)
28
+ @ValidateNested()
29
+ detail?: SalePaymentDetail;
30
+ }
@@ -0,0 +1,21 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsInt, Min } from 'class-validator';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/quote — términos elegidos en el cotizador del paso 06 (slider de
6
+ * enganche + botones de plazo). El wizard valida contra los bounds del PLAN resuelto por nivel
7
+ * (`minDownPaymentPct`/`maxDownPaymentPct`/`termWeeksOptions`) y origina (o re-cotiza) el crédito
8
+ * en loan-credit. El precio del equipo NO viaja: es el ancla `reservedCashPriceCents` de la sesión.
9
+ * SureKeep Fase 2 — pista SOFOM.
10
+ */
11
+ export class QuoteRequest {
12
+ @Expose()
13
+ @IsInt()
14
+ @Min(0)
15
+ downPaymentCents!: number;
16
+
17
+ @Expose()
18
+ @IsInt()
19
+ @Min(1)
20
+ termWeeks!: number;
21
+ }
@@ -0,0 +1,15 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, Matches } from 'class-validator';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/device — registro del IMEI del equipo entregado (paso 09, variante
6
+ * crédito). El wizard valida el formato (15 dígitos); el Luhn y la unicidad (`IMEI_IN_USE`) los
7
+ * valida loan-credit en el `activate-check`, que además dispara el enrolamiento MDM (condiciones
8
+ * 3-4 del checklist). SureKeep Fase 2 — pista SOFOM.
9
+ */
10
+ export class RegisterDeviceRequest {
11
+ @Expose()
12
+ @IsString()
13
+ @Matches(/^\d{15}$/, { message: 'imei debe ser de 15 dígitos' })
14
+ imei!: string;
15
+ }
@@ -0,0 +1,15 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, Matches } from 'class-validator';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/signature/sign — firma FES tiempo 2 (paso 08): verifica el OTP de
6
+ * firma (4 dígitos — M2 §4.4) y firma los contratos en loan-credit (sha256 + `signedAt` +
7
+ * condición 2 del checklist). Errores: `OTP_INVALID` · `OTP_EXPIRED` · `OTP_MAX_ATTEMPTS`.
8
+ * SureKeep Fase 2 — pista SOFOM.
9
+ */
10
+ export class SignatureSignRequest {
11
+ @Expose()
12
+ @IsString()
13
+ @Matches(/^\d{4}$/, { message: 'otpCode debe ser de 4 dígitos' })
14
+ otpCode!: string;
15
+ }
@@ -0,0 +1,13 @@
1
+ import { WizardCreditSummary } from '../WizardCreditSummary';
2
+
3
+ /**
4
+ * GET /wizard/sessions/:id/contract/preview — resumen previo a la firma FES (paso 08): el estado
5
+ * financiero del crédito (fuente: loan-credit) + las variables del template del contrato que el
6
+ * wizard armará para el sign tiempo-1 (`contractData`: nombre, CURP, domicilio… — PII TRANSITORIA,
7
+ * viaja solo en esta response, NO se persiste ni loggea). El PDF real lo genera el sign tiempo-1
8
+ * en loan-credit; este preview no llama a document-generator. SureKeep Fase 2 — pista SOFOM.
9
+ */
10
+ export interface ContractPreviewResponse {
11
+ credit: WizardCreditSummary;
12
+ contractData: Record<string, string>;
13
+ }
@@ -0,0 +1,15 @@
1
+ import { ActivationChecklist } from '../../../loanCredit/dtos/ActivationChecklist';
2
+
3
+ /**
4
+ * POST /wizard/sessions/:id/down-payment — confirmación del cobro del enganche (paso 07).
5
+ * `paymentId` = el folio de enganche `SK-…-ENG-…` (identificador natural del cobro en caja;
6
+ * concilia contra el depósito semanal del retailer). `checklist` refleja el estado post
7
+ * `activate-check { downPayment: true }` en loan-credit. SureKeep Fase 2 — pista SOFOM.
8
+ */
9
+ export interface DownPaymentResponse {
10
+ paymentId: string;
11
+ folio: string;
12
+ /** ISO 8601 del registro del cobro en la sesión. */
13
+ registeredAt: string;
14
+ checklist: ActivationChecklist;
15
+ }
@@ -0,0 +1,25 @@
1
+ import { WizardCreditSummary } from '../WizardCreditSummary';
2
+
3
+ /** Bounds y parámetros del plan que gobiernan el cotizador (slider + plazos) del paso 06. */
4
+ export interface QuotePlanBounds {
5
+ planId: string;
6
+ code: string;
7
+ /** Enganche mínimo como decimal sobre 1 (`0.40` = 40%). */
8
+ minDownPaymentPct: number;
9
+ /** Techo de enganche (decimal sobre 1); `null` = sin techo definido. */
10
+ maxDownPaymentPct: number | null;
11
+ termWeeksOptions: number[];
12
+ /** TNA decimal (`2.60` = 260%) — la tasa que manda es la del PLAN. */
13
+ tnaAnnual: number;
14
+ openingCommissionPct: number;
15
+ }
16
+
17
+ /**
18
+ * POST /wizard/sessions/:id/quote — respuesta del cotizador del paso 06: el plan resuelto por
19
+ * nivel + el snapshot financiero del crédito originado/re-cotizado (transitorio, NO se persiste
20
+ * en la sesión — la fuente es loan-credit). SureKeep Fase 2 — pista SOFOM.
21
+ */
22
+ export interface QuoteResponse {
23
+ plan: QuotePlanBounds;
24
+ credit: WizardCreditSummary;
25
+ }
@@ -0,0 +1,15 @@
1
+ import { LoanCreditStatusEnum } from '../../../loanCredit/enums/LoanCreditStatusEnum';
2
+ import { ActivationChecklist } from '../../../loanCredit/dtos/ActivationChecklist';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/device — resultado del registro de IMEI + candado (paso 09).
6
+ * `active: true` cuando el checklist quedó 4/4 y el crédito pasó a `ACTIVE` (el front bloquea
7
+ * "Continuar a Bienvenida" hasta entonces; `missingItems` lista lo que falta).
8
+ * SureKeep Fase 2 — pista SOFOM.
9
+ */
10
+ export interface RegisterDeviceResponse {
11
+ creditStatus: LoanCreditStatusEnum;
12
+ checklist: ActivationChecklist;
13
+ missingItems: string[];
14
+ active: boolean;
15
+ }
@@ -0,0 +1,21 @@
1
+ import { ClientLevelEnum } from '../../../loanScoring/enums/ClientLevelEnum';
2
+ import { ScoringDecisionEnum } from '../../../loanScoring/enums/ScoringDecisionEnum';
3
+ import { ScoringOffer } from '../../../loanScoring/dtos/ScoringOffer';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/score/consult — resultado de la evaluación SCI del paso 05.
7
+ *
8
+ * El wizard es idempotente por sesión: si la sesión ya tiene `loan.sciEvaluationId`, devuelve el
9
+ * snapshot existente (no re-evalúa — cada evaluate del motor genera un snapshot NUEVO).
10
+ * `REJECTED`/`NO_ELIGIBLE` no matan la venta: el front ofrece financiera externa o contado.
11
+ * SureKeep Fase 2 — pista SOFOM.
12
+ */
13
+ export interface ScoreConsultResponse {
14
+ /** Decisión normalizada del motor de scoring. */
15
+ status: ScoringDecisionEnum;
16
+ level: ClientLevelEnum;
17
+ /** Puntero al snapshot inmutable en loan-scoring (se persiste en `WizardSession.loan`). */
18
+ sciEvaluationId: string;
19
+ /** Oferta del proveedor (display del paso 05; la cotización del 06 usa el PLAN, no esto). */
20
+ offer: ScoringOffer | null;
21
+ }
@@ -0,0 +1,15 @@
1
+ import { ClientLevelEnum } from '../../../loanScoring/enums/ClientLevelEnum';
2
+ import { ScoringDecisionEnum } from '../../../loanScoring/enums/ScoringDecisionEnum';
3
+ import { ScoringOffer } from '../../../loanScoring/dtos/ScoringOffer';
4
+
5
+ /**
6
+ * GET /wizard/sessions/:id/score/result — lectura del resultado del score del paso 05 (la tablet
7
+ * lee el snapshot ya persistido vía `loan.sciEvaluationId`; no dispara evaluación).
8
+ * SureKeep Fase 2 — pista SOFOM.
9
+ */
10
+ export interface ScoreResultResponse {
11
+ status: ScoringDecisionEnum;
12
+ level: ClientLevelEnum;
13
+ sciEvaluationId: string;
14
+ offer: ScoringOffer | null;
15
+ }
@@ -0,0 +1,28 @@
1
+ import { FinancierTypeEnum } from '../../../loanOfferings/enums/FinancierTypeEnum';
2
+
3
+ /**
4
+ * Una opción de financiamiento del paso 04 (pantalla forma de pago): la unión de las financieras
5
+ * ACTIVE del catálogo SOFOM (`loan-offerings GET /private/financiers/active` — display + orden)
6
+ * con la elegibilidad del producto reservado (`eligibleFinanciers` del catálogo retail).
7
+ */
8
+ export interface SessionFinancierOption {
9
+ code: string;
10
+ name: string;
11
+ /** Texto de display de la card (viene del catálogo SOFOM). */
12
+ label: string;
13
+ /** INTERNAL = SureKeep (pista crédito propia); EXTERNAL = derivación (PayJoy, CrediYa…). */
14
+ type: FinancierTypeEnum;
15
+ displayOrder: number;
16
+ /** Solo EXTERNAL: URL de derivación. */
17
+ externalRedirectUrl: string | null;
18
+ /** El producto reservado admite esta financiera (INTERNAL siempre elegible). */
19
+ eligible: boolean;
20
+ }
21
+
22
+ /**
23
+ * GET /wizard/sessions/:id/financiers — las opciones de financiamiento del paso 04 para la sesión
24
+ * (según su producto reservado). Ordenadas por `displayOrder`. SureKeep Fase 2 — pista SOFOM.
25
+ */
26
+ export interface SessionFinanciersResponse {
27
+ financiers: SessionFinancierOption[];
28
+ }
@@ -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,11 @@
1
+ import { ActivationChecklist } from '../../../loanCredit/dtos/ActivationChecklist';
2
+
3
+ /**
4
+ * POST /wizard/sessions/:id/signature/sign — resultado de la firma FES tiempo 2 (paso 08).
5
+ * `signed: true` implica `checklist.contractSigned: true` (condición 2 de activación).
6
+ * SureKeep Fase 2 — pista SOFOM.
7
+ */
8
+ export interface SignatureSignResponse {
9
+ signed: boolean;
10
+ checklist: ActivationChecklist;
11
+ }
@@ -21,6 +21,8 @@ export * from './dtos/WizardWelcome';
21
21
  export * from './dtos/SalePaymentDetail';
22
22
  export * from './dtos/ProspectNewCustomer';
23
23
  export * from './dtos/WizardBeneficiary';
24
+ export * from './dtos/WizardLoan';
25
+ export * from './dtos/WizardCreditSummary';
24
26
 
25
27
  // Entidades principales (shapes de estado/persistencia — planas)
26
28
  export * from './dtos/WizardSession';
@@ -58,9 +60,22 @@ export * from './dtos/requests/CreateProspectRequest';
58
60
  export * from './dtos/requests/UpdateProspectRequest';
59
61
  export * from './dtos/requests/MarkProspectLostRequest';
60
62
  export * from './dtos/requests/CancelSaleRequest';
63
+ export * from './dtos/requests/QuoteRequest';
64
+ export * from './dtos/requests/DownPaymentRequest';
65
+ export * from './dtos/requests/SignatureSignRequest';
66
+ export * from './dtos/requests/RegisterDeviceRequest';
61
67
 
62
68
  // Response DTOs (output tipado por endpoint)
63
69
  export * from './dtos/responses/KycPrepareResponse';
70
+ export * from './dtos/responses/SessionFinanciersResponse';
71
+ export * from './dtos/responses/ScoreConsultResponse';
72
+ export * from './dtos/responses/ScoreResultResponse';
73
+ export * from './dtos/responses/QuoteResponse';
74
+ export * from './dtos/responses/DownPaymentResponse';
75
+ export * from './dtos/responses/ContractPreviewResponse';
76
+ export * from './dtos/responses/SignatureSendOtpResponse';
77
+ export * from './dtos/responses/SignatureSignResponse';
78
+ export * from './dtos/responses/RegisterDeviceResponse';
64
79
 
65
80
  // Contratos de eventos (PascalCase + sufijo V1)
66
81
  export * from './events/SaleCompletedV1';
@@ -1,11 +0,0 @@
1
- export declare enum BenefitFlowEnum {
2
- TOPUPS = "TOPUPS",
3
- BILL_PAYMENT = "BILL_PAYMENT",
4
- CREDIT = "CREDIT",
5
- INSURANCE = "INSURANCE",
6
- DONATION = "DONATION",
7
- PHARMACY = "PHARMACY",
8
- REMITTANCE = "REMITTANCE",
9
- /** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
10
- WALLET_FUNDING = "WALLET_FUNDING"
11
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BenefitFlowEnum = void 0;
4
- var BenefitFlowEnum;
5
- (function (BenefitFlowEnum) {
6
- BenefitFlowEnum["TOPUPS"] = "TOPUPS";
7
- BenefitFlowEnum["BILL_PAYMENT"] = "BILL_PAYMENT";
8
- BenefitFlowEnum["CREDIT"] = "CREDIT";
9
- BenefitFlowEnum["INSURANCE"] = "INSURANCE";
10
- BenefitFlowEnum["DONATION"] = "DONATION";
11
- BenefitFlowEnum["PHARMACY"] = "PHARMACY";
12
- BenefitFlowEnum["REMITTANCE"] = "REMITTANCE";
13
- /** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
14
- BenefitFlowEnum["WALLET_FUNDING"] = "WALLET_FUNDING";
15
- })(BenefitFlowEnum || (exports.BenefitFlowEnum = BenefitFlowEnum = {}));
@@ -1,11 +0,0 @@
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
- }
@@ -1,15 +0,0 @@
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 = {}));
@@ -1,17 +0,0 @@
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
- }
@@ -1,12 +0,0 @@
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;
@@ -1,22 +0,0 @@
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
- }
@@ -1,11 +0,0 @@
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
- }