@fiado/type-kit 3.196.0 → 3.199.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 (130) hide show
  1. package/bin/creditEngine/dtos/AnticipatedPaymentQuote.d.ts +47 -0
  2. package/bin/creditEngine/dtos/AnticipatedPaymentQuote.js +22 -0
  3. package/bin/creditEngine/index.d.ts +1 -0
  4. package/bin/creditEngine/index.js +1 -0
  5. package/bin/index.d.ts +2 -0
  6. package/bin/index.js +8 -1
  7. package/bin/loanCredit/dtos/ActivationChecklist.d.ts +11 -0
  8. package/bin/loanCredit/dtos/ActivationChecklist.js +42 -0
  9. package/bin/loanCredit/dtos/LoanBeneficiary.d.ts +8 -0
  10. package/bin/{platformRbac/dtos/ResendOtpRequest.js → loanCredit/dtos/LoanBeneficiary.js} +14 -12
  11. package/bin/loanCredit/dtos/LoanBorrower.d.ts +22 -0
  12. package/bin/loanCredit/dtos/LoanBorrower.js +82 -0
  13. package/bin/loanCredit/dtos/LoanContract.d.ts +27 -0
  14. package/bin/loanCredit/dtos/LoanContract.js +91 -0
  15. package/bin/loanCredit/dtos/LoanCredit.d.ts +54 -0
  16. package/bin/loanCredit/dtos/LoanCredit.js +187 -0
  17. package/bin/loanCredit/dtos/LoanInstallment.d.ts +27 -0
  18. package/bin/loanCredit/dtos/LoanInstallment.js +97 -0
  19. package/bin/loanCredit/dtos/requests/ActivationCheckRequest.d.ts +21 -0
  20. package/bin/loanCredit/dtos/requests/ActivationCheckRequest.js +52 -0
  21. package/bin/loanCredit/dtos/requests/ChangeLoanCreditStatusRequest.d.ts +12 -0
  22. package/bin/{platformRbac/dtos/ResendSelfRegisterOtpRequest.js → loanCredit/dtos/requests/ChangeLoanCreditStatusRequest.js} +13 -13
  23. package/bin/loanCredit/dtos/requests/OriginateLoanCreditRequest.d.ts +25 -0
  24. package/bin/loanCredit/dtos/requests/OriginateLoanCreditRequest.js +85 -0
  25. package/bin/loanCredit/dtos/requests/QuoteLoanCreditRequest.d.ts +11 -0
  26. package/bin/loanCredit/dtos/requests/QuoteLoanCreditRequest.js +39 -0
  27. package/bin/loanCredit/dtos/requests/SignLoanCreditRequest.d.ts +17 -0
  28. package/bin/loanCredit/dtos/requests/SignLoanCreditRequest.js +37 -0
  29. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.d.ts +11 -0
  30. package/bin/loanCredit/dtos/requests/UpdateActivationChecklistRequest.js +46 -0
  31. package/bin/loanCredit/dtos/requests/UpsertLoanBorrowerRequest.d.ts +14 -0
  32. package/bin/loanCredit/dtos/requests/UpsertLoanBorrowerRequest.js +57 -0
  33. package/bin/loanCredit/dtos/responses/ActivationCheckResponse.d.ts +10 -0
  34. package/bin/loanCredit/dtos/responses/ActivationCheckResponse.js +2 -0
  35. package/bin/loanCredit/dtos/responses/LoanBorrowerResponse.d.ts +21 -0
  36. package/bin/loanCredit/dtos/responses/LoanBorrowerResponse.js +2 -0
  37. package/bin/loanCredit/dtos/responses/LoanContractResponse.d.ts +16 -0
  38. package/bin/loanCredit/dtos/responses/LoanContractResponse.js +2 -0
  39. package/bin/loanCredit/dtos/responses/LoanCreditResponse.d.ts +38 -0
  40. package/bin/loanCredit/dtos/responses/LoanCreditResponse.js +2 -0
  41. package/bin/loanCredit/dtos/responses/LoanInstallmentResponse.d.ts +17 -0
  42. package/bin/loanCredit/dtos/responses/LoanInstallmentResponse.js +2 -0
  43. package/bin/loanCredit/dtos/responses/OriginateLoanCreditResponse.d.ts +13 -0
  44. package/bin/loanCredit/dtos/responses/OriginateLoanCreditResponse.js +2 -0
  45. package/bin/loanCredit/dtos/responses/QuoteLoanCreditResponse.d.ts +10 -0
  46. package/bin/loanCredit/dtos/responses/QuoteLoanCreditResponse.js +2 -0
  47. package/bin/loanCredit/dtos/responses/SignLoanCreditResponse.d.ts +20 -0
  48. package/bin/loanCredit/dtos/responses/SignLoanCreditResponse.js +2 -0
  49. package/bin/loanCredit/enums/ClientLevelEnum.d.ts +11 -0
  50. package/bin/loanCredit/enums/ClientLevelEnum.js +15 -0
  51. package/bin/loanCredit/enums/ContractTypeEnum.d.ts +12 -0
  52. package/bin/loanCredit/enums/ContractTypeEnum.js +16 -0
  53. package/bin/loanCredit/enums/LoanCreditStatusEnum.d.ts +21 -0
  54. package/bin/loanCredit/enums/LoanCreditStatusEnum.js +25 -0
  55. package/bin/loanCredit/enums/LoanInstallmentStatusEnum.d.ts +14 -0
  56. package/bin/loanCredit/enums/LoanInstallmentStatusEnum.js +18 -0
  57. package/bin/loanCredit/index.d.ts +24 -0
  58. package/bin/loanCredit/index.js +47 -0
  59. package/bin/loanScoring/dtos/SciBreakdown.d.ts +29 -0
  60. package/bin/loanScoring/dtos/SciBreakdown.js +2 -0
  61. package/bin/loanScoring/dtos/ScoringDecision.d.ts +29 -0
  62. package/bin/loanScoring/dtos/ScoringDecision.js +2 -0
  63. package/bin/loanScoring/dtos/ScoringOffer.d.ts +18 -0
  64. package/bin/loanScoring/dtos/ScoringOffer.js +2 -0
  65. package/bin/loanScoring/dtos/requests/EvaluateSciRequest.d.ts +23 -0
  66. package/bin/loanScoring/dtos/requests/EvaluateSciRequest.js +54 -0
  67. package/bin/loanScoring/dtos/requests/SciInternalHistoryInput.d.ts +19 -0
  68. package/bin/loanScoring/dtos/requests/SciInternalHistoryInput.js +51 -0
  69. package/bin/loanScoring/dtos/responses/EvaluateSciResponse.d.ts +24 -0
  70. package/bin/loanScoring/dtos/responses/EvaluateSciResponse.js +2 -0
  71. package/bin/loanScoring/dtos/responses/SciEvaluationResponse.d.ts +28 -0
  72. package/bin/loanScoring/dtos/responses/SciEvaluationResponse.js +2 -0
  73. package/bin/loanScoring/enums/ClientLevelEnum.d.ts +13 -0
  74. package/bin/loanScoring/enums/ClientLevelEnum.js +17 -0
  75. package/bin/loanScoring/enums/SciLayer2SourceEnum.d.ts +11 -0
  76. package/bin/loanScoring/enums/SciLayer2SourceEnum.js +15 -0
  77. package/bin/loanScoring/enums/ScoringDecisionEnum.d.ts +14 -0
  78. package/bin/loanScoring/enums/ScoringDecisionEnum.js +18 -0
  79. package/bin/loanScoring/enums/ScoringProviderEnum.d.ts +12 -0
  80. package/bin/loanScoring/enums/ScoringProviderEnum.js +16 -0
  81. package/bin/loanScoring/index.d.ts +11 -0
  82. package/bin/loanScoring/index.js +31 -0
  83. package/package.json +1 -1
  84. package/src/creditEngine/dtos/AnticipatedPaymentQuote.ts +56 -0
  85. package/src/creditEngine/index.ts +1 -0
  86. package/src/index.ts +7 -0
  87. package/src/loanCredit/dtos/ActivationChecklist.ts +25 -0
  88. package/src/loanCredit/dtos/LoanBeneficiary.ts +22 -0
  89. package/src/loanCredit/dtos/LoanBorrower.ts +71 -0
  90. package/src/loanCredit/dtos/LoanContract.ts +70 -0
  91. package/src/loanCredit/dtos/LoanCredit.ts +169 -0
  92. package/src/loanCredit/dtos/LoanInstallment.ts +75 -0
  93. package/src/loanCredit/dtos/requests/ActivationCheckRequest.ts +39 -0
  94. package/src/loanCredit/dtos/requests/ChangeLoanCreditStatusRequest.ts +22 -0
  95. package/src/loanCredit/dtos/requests/OriginateLoanCreditRequest.ts +74 -0
  96. package/src/loanCredit/dtos/requests/QuoteLoanCreditRequest.ts +24 -0
  97. package/src/loanCredit/dtos/requests/SignLoanCreditRequest.ts +24 -0
  98. package/src/loanCredit/dtos/requests/UpsertLoanBorrowerRequest.ts +48 -0
  99. package/src/loanCredit/dtos/responses/ActivationCheckResponse.ts +11 -0
  100. package/src/loanCredit/dtos/responses/LoanBorrowerResponse.ts +22 -0
  101. package/src/loanCredit/dtos/responses/LoanContractResponse.ts +17 -0
  102. package/src/loanCredit/dtos/responses/LoanCreditResponse.ts +39 -0
  103. package/src/loanCredit/dtos/responses/LoanInstallmentResponse.ts +18 -0
  104. package/src/loanCredit/dtos/responses/OriginateLoanCreditResponse.ts +14 -0
  105. package/src/loanCredit/dtos/responses/QuoteLoanCreditResponse.ts +11 -0
  106. package/src/loanCredit/dtos/responses/SignLoanCreditResponse.ts +21 -0
  107. package/src/loanCredit/enums/ContractTypeEnum.ts +12 -0
  108. package/src/loanCredit/enums/LoanCreditStatusEnum.ts +21 -0
  109. package/src/loanCredit/enums/LoanInstallmentStatusEnum.ts +14 -0
  110. package/src/loanCredit/index.ts +32 -0
  111. package/src/loanScoring/dtos/SciBreakdown.ts +33 -0
  112. package/src/loanScoring/dtos/ScoringDecision.ts +30 -0
  113. package/src/loanScoring/dtos/ScoringOffer.ts +18 -0
  114. package/src/loanScoring/dtos/requests/EvaluateSciRequest.ts +43 -0
  115. package/src/loanScoring/dtos/requests/SciInternalHistoryInput.ts +38 -0
  116. package/src/loanScoring/dtos/responses/EvaluateSciResponse.ts +25 -0
  117. package/src/loanScoring/dtos/responses/SciEvaluationResponse.ts +29 -0
  118. package/src/loanScoring/enums/ClientLevelEnum.ts +13 -0
  119. package/src/loanScoring/enums/SciLayer2SourceEnum.ts +11 -0
  120. package/src/loanScoring/enums/ScoringDecisionEnum.ts +14 -0
  121. package/src/loanScoring/enums/ScoringProviderEnum.ts +12 -0
  122. package/src/loanScoring/index.ts +18 -0
  123. package/bin/benefitCenter/enums/BenefitFlowEnum.d.ts +0 -11
  124. package/bin/benefitCenter/enums/BenefitFlowEnum.js +0 -15
  125. package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +0 -11
  126. package/bin/loanConfig/enums/ModifiableByRoleEnum.js +0 -15
  127. package/bin/places/dtos/CashInFeeDto.d.ts +0 -17
  128. package/bin/places/dtos/CashInFeeDto.js +0 -12
  129. package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +0 -22
  130. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +0 -11
@@ -0,0 +1,29 @@
1
+ import { ClientLevelEnum } from '../enums/ClientLevelEnum';
2
+ import { ScoringDecisionEnum } from '../enums/ScoringDecisionEnum';
3
+ import { ScoringProviderEnum } from '../enums/ScoringProviderEnum';
4
+ import { SciBreakdown } from './SciBreakdown';
5
+ import { ScoringOffer } from './ScoringOffer';
6
+ /**
7
+ * Contrato AGNÓSTICO de salida del scoring (diagramas F2 §credito · patrón spec 12): todos los
8
+ * proveedores (Modelias decisión-directa, Círculo insumos+SCI M7, futuros) normalizan a esta forma.
9
+ * El consumidor (wizard paso 05, motor de crédito) NO sabe qué proveedor la produjo; el proveedor
10
+ * usado queda snapshoteado en la evaluación (`LoanSciEvaluation_GT`).
11
+ */
12
+ export interface ScoringDecision {
13
+ provider: ScoringProviderEnum;
14
+ /** Score en la escala canónica SCI 0-100 (C2 resuelta: la escala es 0-100). */
15
+ sciTotal: number;
16
+ level: ClientLevelEnum;
17
+ decision: ScoringDecisionEnum;
18
+ /** Oferta pre-aprobada si el proveedor la entrega (Modelias); null en el camino Círculo+SCI. */
19
+ offer: ScoringOffer | null;
20
+ /**
21
+ * Thin-file (M7 §3 / INT4): el proveedor CONFIRMÓ que la persona no tiene historial en buró.
22
+ * Es un dato de negocio válido (capa 2 neutra o FIS) — NUNCA se confunde con un error del
23
+ * connector (ese camino lanza DomainError; antipatrón API_ADAPTER_SWALLOW).
24
+ */
25
+ thinFile: boolean;
26
+ breakdown: SciBreakdown;
27
+ /** Marcas/flags del proveedor (`marcas` de Modelias). Vacío si no aplica. */
28
+ flags: string[];
29
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Oferta pre-aprobada que acompaña una decisión de scoring (cuando el proveedor la entrega —
3
+ * Modelias la devuelve completa; el camino Círculo+SCI no produce oferta, el plan lo resuelve
4
+ * loan-offerings por nivel).
5
+ *
6
+ * ⚠️ Los valores numéricos se transportan TAL CUAL los entrega el proveedor (el contrato Modelias
7
+ * no confirma unidades de `linea_credito`/`enganche` — ver TD del módulo modelias). NO asumir cents.
8
+ */
9
+ export interface ScoringOffer {
10
+ /** Línea de crédito aprobada (unidad según proveedor). */
11
+ creditLine: number | null;
12
+ /** Enganche requerido (unidad/base según proveedor). */
13
+ downPayment: number | null;
14
+ /** Plazos ofrecidos, en semanas. */
15
+ termsWeeks: number[];
16
+ /** Tasas por plazo (clave = plazo, valor = tasa decimal). */
17
+ rates: Record<string, number>;
18
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ import { SciInternalHistoryInput } from './SciInternalHistoryInput';
2
+ /**
3
+ * Body de `POST /private/scoring/evaluations` de loan-scoring-business (wizard paso 05 / motor de
4
+ * crédito, vía api-invoker). El proveedor NO se elige acá: lo resuelve el `ScoringProviderRouter`
5
+ * por configuración del tenant (spec 12). El tenant viaja por query `?tenantId=` (convención de
6
+ * los privados Fiado), no en este body.
7
+ */
8
+ export declare class EvaluateSciRequest {
9
+ /** Acreditado a evaluar (`LoanBorrower`). La evaluación queda ligada a él en el historial. */
10
+ borrowerId: string;
11
+ /** CURP del solicitante (requerido por los proveedores de scoring). */
12
+ curp: string;
13
+ /** Celular del solicitante (requerido por Modelias). */
14
+ cellphone: string;
15
+ email?: string;
16
+ /**
17
+ * Resultado del gate anti-fraude (M7 §2 — KYC/Metamap, se ejecuta UNA vez en el paso 01/02
18
+ * del wizard). El caller lo declara: `false` → decisión REJECTED sin consultar proveedor.
19
+ */
20
+ antiFraudPassed: boolean;
21
+ /** Historial interno del acreditado (capa 3). Ausente = cliente nuevo (capa 2 pesa 100%). */
22
+ internalHistory?: SciInternalHistoryInput;
23
+ }
@@ -0,0 +1,54 @@
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.EvaluateSciRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const SciInternalHistoryInput_1 = require("./SciInternalHistoryInput");
16
+ /**
17
+ * Body de `POST /private/scoring/evaluations` de loan-scoring-business (wizard paso 05 / motor de
18
+ * crédito, vía api-invoker). El proveedor NO se elige acá: lo resuelve el `ScoringProviderRouter`
19
+ * por configuración del tenant (spec 12). El tenant viaja por query `?tenantId=` (convención de
20
+ * los privados Fiado), no en este body.
21
+ */
22
+ class EvaluateSciRequest {
23
+ }
24
+ exports.EvaluateSciRequest = EvaluateSciRequest;
25
+ __decorate([
26
+ (0, class_validator_1.IsString)(),
27
+ (0, class_validator_1.IsNotEmpty)(),
28
+ __metadata("design:type", String)
29
+ ], EvaluateSciRequest.prototype, "borrowerId", void 0);
30
+ __decorate([
31
+ (0, class_validator_1.IsString)(),
32
+ (0, class_validator_1.IsNotEmpty)(),
33
+ __metadata("design:type", String)
34
+ ], EvaluateSciRequest.prototype, "curp", void 0);
35
+ __decorate([
36
+ (0, class_validator_1.IsString)(),
37
+ (0, class_validator_1.IsNotEmpty)(),
38
+ __metadata("design:type", String)
39
+ ], EvaluateSciRequest.prototype, "cellphone", void 0);
40
+ __decorate([
41
+ (0, class_validator_1.IsOptional)(),
42
+ (0, class_validator_1.IsEmail)(),
43
+ __metadata("design:type", String)
44
+ ], EvaluateSciRequest.prototype, "email", void 0);
45
+ __decorate([
46
+ (0, class_validator_1.IsBoolean)(),
47
+ __metadata("design:type", Boolean)
48
+ ], EvaluateSciRequest.prototype, "antiFraudPassed", void 0);
49
+ __decorate([
50
+ (0, class_validator_1.IsOptional)(),
51
+ (0, class_validator_1.ValidateNested)(),
52
+ (0, class_transformer_1.Type)(() => SciInternalHistoryInput_1.SciInternalHistoryInput),
53
+ __metadata("design:type", SciInternalHistoryInput_1.SciInternalHistoryInput)
54
+ ], EvaluateSciRequest.prototype, "internalHistory", void 0);
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Resumen del historial interno SureKeep del acreditado (M7 §4 — capa 3 del SCI). Lo aporta el
3
+ * caller (loan-credit-business es el dueño de cuotas/moras); ausente = cliente sin historial
4
+ * interno (la capa 2 pesa 100% — M7 §5).
5
+ */
6
+ export declare class SciInternalHistoryInput {
7
+ /** % de cuotas pagadas a tiempo, 0-100 (peso 30%). */
8
+ pctOnTimeInstallments: number;
9
+ /** Días promedio de atraso (peso 20%). */
10
+ avgDelinquencyDays: number;
11
+ /** Episodios de mora (peso 20%). */
12
+ delinquencyEpisodes: number;
13
+ /** Reestructuras (peso 15%; máx 1 por crédito — M2). */
14
+ restructures: number;
15
+ /** Créditos completados sin mora (peso 10%). */
16
+ completedCredits: number;
17
+ /** Baja contable previa (peso 5% — penaliza fuerte). */
18
+ previousWriteOff: boolean;
19
+ }
@@ -0,0 +1,51 @@
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.SciInternalHistoryInput = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /**
15
+ * Resumen del historial interno SureKeep del acreditado (M7 §4 — capa 3 del SCI). Lo aporta el
16
+ * caller (loan-credit-business es el dueño de cuotas/moras); ausente = cliente sin historial
17
+ * interno (la capa 2 pesa 100% — M7 §5).
18
+ */
19
+ class SciInternalHistoryInput {
20
+ }
21
+ exports.SciInternalHistoryInput = SciInternalHistoryInput;
22
+ __decorate([
23
+ (0, class_validator_1.IsNumber)(),
24
+ (0, class_validator_1.Min)(0),
25
+ (0, class_validator_1.Max)(100),
26
+ __metadata("design:type", Number)
27
+ ], SciInternalHistoryInput.prototype, "pctOnTimeInstallments", void 0);
28
+ __decorate([
29
+ (0, class_validator_1.IsNumber)(),
30
+ (0, class_validator_1.Min)(0),
31
+ __metadata("design:type", Number)
32
+ ], SciInternalHistoryInput.prototype, "avgDelinquencyDays", void 0);
33
+ __decorate([
34
+ (0, class_validator_1.IsInt)(),
35
+ (0, class_validator_1.Min)(0),
36
+ __metadata("design:type", Number)
37
+ ], SciInternalHistoryInput.prototype, "delinquencyEpisodes", void 0);
38
+ __decorate([
39
+ (0, class_validator_1.IsInt)(),
40
+ (0, class_validator_1.Min)(0),
41
+ __metadata("design:type", Number)
42
+ ], SciInternalHistoryInput.prototype, "restructures", void 0);
43
+ __decorate([
44
+ (0, class_validator_1.IsInt)(),
45
+ (0, class_validator_1.Min)(0),
46
+ __metadata("design:type", Number)
47
+ ], SciInternalHistoryInput.prototype, "completedCredits", void 0);
48
+ __decorate([
49
+ (0, class_validator_1.IsBoolean)(),
50
+ __metadata("design:type", Boolean)
51
+ ], SciInternalHistoryInput.prototype, "previousWriteOff", void 0);
@@ -0,0 +1,24 @@
1
+ import { ClientLevelEnum } from '../../enums/ClientLevelEnum';
2
+ import { ScoringDecisionEnum } from '../../enums/ScoringDecisionEnum';
3
+ import { ScoringProviderEnum } from '../../enums/ScoringProviderEnum';
4
+ import { SciBreakdown } from '../SciBreakdown';
5
+ import { ScoringOffer } from '../ScoringOffer';
6
+ /**
7
+ * Response de `POST /private/scoring/evaluations`: la `ScoringDecision` normalizada + la identidad
8
+ * del snapshot persistido en `LoanSciEvaluation_GT` (el motor de crédito guarda `evaluationId`
9
+ * como `sciAtOrigination`).
10
+ */
11
+ export interface EvaluateSciResponse {
12
+ evaluationId: string;
13
+ borrowerId: string;
14
+ provider: ScoringProviderEnum;
15
+ /** Escala canónica SCI 0-100. */
16
+ sciTotal: number;
17
+ level: ClientLevelEnum;
18
+ decision: ScoringDecisionEnum;
19
+ offer: ScoringOffer | null;
20
+ thinFile: boolean;
21
+ breakdown: SciBreakdown;
22
+ flags: string[];
23
+ createdAt: string;
24
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,28 @@
1
+ import { ClientLevelEnum } from '../../enums/ClientLevelEnum';
2
+ import { ScoringDecisionEnum } from '../../enums/ScoringDecisionEnum';
3
+ import { ScoringProviderEnum } from '../../enums/ScoringProviderEnum';
4
+ import { SciBreakdown } from '../SciBreakdown';
5
+ import { ScoringOffer } from '../ScoringOffer';
6
+ /**
7
+ * Detalle de una evaluación SCI snapshoteada en `LoanSciEvaluation_GT` (lecturas: detalle e
8
+ * historial por acreditado del backoffice, y GET privado del motor de crédito). Incluye la
9
+ * metadata de auditoría del snapshot.
10
+ */
11
+ export interface SciEvaluationResponse {
12
+ evaluationId: string;
13
+ borrowerId: string;
14
+ provider: ScoringProviderEnum;
15
+ /** Escala canónica SCI 0-100. */
16
+ sciTotal: number;
17
+ level: ClientLevelEnum;
18
+ decision: ScoringDecisionEnum;
19
+ offer: ScoringOffer | null;
20
+ thinFile: boolean;
21
+ breakdown: SciBreakdown;
22
+ flags: string[];
23
+ version: number;
24
+ createdBy: string;
25
+ updatedBy: string;
26
+ createdAt: string;
27
+ updatedAt: string;
28
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Nivel del cliente derivado del SCI (M7 §5: 0-20 no elegible · 21-60 bronce · 61-80 plata ·
3
+ * 81-100 oro). Valores en inglés alineados con `CreditPlanLevelEnum` de loanOfferings
4
+ * (BRONZE/SILVER/GOLD) — el plan de crédito se resuelve cruzando este nivel con el catálogo.
5
+ * `NOT_ELIGIBLE` no existe en el catálogo de planes: significa "no se ofrece crédito".
6
+ * @enum {string}
7
+ */
8
+ export declare enum ClientLevelEnum {
9
+ NOT_ELIGIBLE = "NOT_ELIGIBLE",
10
+ BRONZE = "BRONZE",
11
+ SILVER = "SILVER",
12
+ GOLD = "GOLD"
13
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClientLevelEnum = void 0;
4
+ /**
5
+ * Nivel del cliente derivado del SCI (M7 §5: 0-20 no elegible · 21-60 bronce · 61-80 plata ·
6
+ * 81-100 oro). Valores en inglés alineados con `CreditPlanLevelEnum` de loanOfferings
7
+ * (BRONZE/SILVER/GOLD) — el plan de crédito se resuelve cruzando este nivel con el catálogo.
8
+ * `NOT_ELIGIBLE` no existe en el catálogo de planes: significa "no se ofrece crédito".
9
+ * @enum {string}
10
+ */
11
+ var ClientLevelEnum;
12
+ (function (ClientLevelEnum) {
13
+ ClientLevelEnum["NOT_ELIGIBLE"] = "NOT_ELIGIBLE";
14
+ ClientLevelEnum["BRONZE"] = "BRONZE";
15
+ ClientLevelEnum["SILVER"] = "SILVER";
16
+ ClientLevelEnum["GOLD"] = "GOLD";
17
+ })(ClientLevelEnum || (exports.ClientLevelEnum = ClientLevelEnum = {}));
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Fuente de la capa 2 (buró) del SCI — M7 §3 + INT4 v2.0 (thin-file):
3
+ * `FICO` = historial pleno en Círculo · `FIS` = thin-file con Financial Inclusion Score
4
+ * (INT4 v2.0 supersede el "50 neutro" de M7 §3) · `NEUTRAL` = sin dato de buró (SCI base 50).
5
+ * @enum {string}
6
+ */
7
+ export declare enum SciLayer2SourceEnum {
8
+ FICO = "FICO",
9
+ FIS = "FIS",
10
+ NEUTRAL = "NEUTRAL"
11
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SciLayer2SourceEnum = void 0;
4
+ /**
5
+ * Fuente de la capa 2 (buró) del SCI — M7 §3 + INT4 v2.0 (thin-file):
6
+ * `FICO` = historial pleno en Círculo · `FIS` = thin-file con Financial Inclusion Score
7
+ * (INT4 v2.0 supersede el "50 neutro" de M7 §3) · `NEUTRAL` = sin dato de buró (SCI base 50).
8
+ * @enum {string}
9
+ */
10
+ var SciLayer2SourceEnum;
11
+ (function (SciLayer2SourceEnum) {
12
+ SciLayer2SourceEnum["FICO"] = "FICO";
13
+ SciLayer2SourceEnum["FIS"] = "FIS";
14
+ SciLayer2SourceEnum["NEUTRAL"] = "NEUTRAL";
15
+ })(SciLayer2SourceEnum || (exports.SciLayer2SourceEnum = SciLayer2SourceEnum = {}));
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Decisión agnóstica del scoring (contrato `ScoringDecision`): el motor de crédito NO sabe qué
3
+ * proveedor la produjo (regla spec 12).
4
+ * - `APPROVED`: SCI dentro de un nivel elegible (o ACEPTADO directo de Modelias).
5
+ * - `REJECTED`: gate anti-fraude no pasó (M7 §2) o RECHAZADO directo del proveedor.
6
+ * - `NO_ELIGIBLE`: pasó el gate pero el SCI quedó bajo el piso (`SCORING/sci_min_eligible`,
7
+ * rango 0-20 de M7 §5) — no se ofrece crédito SureKeep (se puede derivar a financiera externa).
8
+ * @enum {string}
9
+ */
10
+ export declare enum ScoringDecisionEnum {
11
+ APPROVED = "APPROVED",
12
+ REJECTED = "REJECTED",
13
+ NO_ELIGIBLE = "NO_ELIGIBLE"
14
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScoringDecisionEnum = void 0;
4
+ /**
5
+ * Decisión agnóstica del scoring (contrato `ScoringDecision`): el motor de crédito NO sabe qué
6
+ * proveedor la produjo (regla spec 12).
7
+ * - `APPROVED`: SCI dentro de un nivel elegible (o ACEPTADO directo de Modelias).
8
+ * - `REJECTED`: gate anti-fraude no pasó (M7 §2) o RECHAZADO directo del proveedor.
9
+ * - `NO_ELIGIBLE`: pasó el gate pero el SCI quedó bajo el piso (`SCORING/sci_min_eligible`,
10
+ * rango 0-20 de M7 §5) — no se ofrece crédito SureKeep (se puede derivar a financiera externa).
11
+ * @enum {string}
12
+ */
13
+ var ScoringDecisionEnum;
14
+ (function (ScoringDecisionEnum) {
15
+ ScoringDecisionEnum["APPROVED"] = "APPROVED";
16
+ ScoringDecisionEnum["REJECTED"] = "REJECTED";
17
+ ScoringDecisionEnum["NO_ELIGIBLE"] = "NO_ELIGIBLE";
18
+ })(ScoringDecisionEnum || (exports.ScoringDecisionEnum = ScoringDecisionEnum = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Proveedor de scoring soportado por el `ScoringProviderRouter` de loan-scoring-business
3
+ * (diagramas F2 §credito · patrón spec 12): la selección es configurable per-tenant y SOLO el
4
+ * router conoce el proveedor. Extensible: un proveedor nuevo = un valor nuevo + su adapter.
5
+ * @enum {string}
6
+ */
7
+ export declare enum ScoringProviderEnum {
8
+ /** modelias-connector — devuelve la decisión COMPLETA (score, decisión, línea, enganche, plazos, tasas). */
9
+ MODELIAS = "MODELIAS",
10
+ /** Connector de CONSULTA a Círculo de Crédito — devuelve insumos crudos; el SCI (M7) se calcula local. */
11
+ CIRCULO = "CIRCULO"
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScoringProviderEnum = void 0;
4
+ /**
5
+ * Proveedor de scoring soportado por el `ScoringProviderRouter` de loan-scoring-business
6
+ * (diagramas F2 §credito · patrón spec 12): la selección es configurable per-tenant y SOLO el
7
+ * router conoce el proveedor. Extensible: un proveedor nuevo = un valor nuevo + su adapter.
8
+ * @enum {string}
9
+ */
10
+ var ScoringProviderEnum;
11
+ (function (ScoringProviderEnum) {
12
+ /** modelias-connector — devuelve la decisión COMPLETA (score, decisión, línea, enganche, plazos, tasas). */
13
+ ScoringProviderEnum["MODELIAS"] = "MODELIAS";
14
+ /** Connector de CONSULTA a Círculo de Crédito — devuelve insumos crudos; el SCI (M7) se calcula local. */
15
+ ScoringProviderEnum["CIRCULO"] = "CIRCULO";
16
+ })(ScoringProviderEnum || (exports.ScoringProviderEnum = ScoringProviderEnum = {}));
@@ -0,0 +1,11 @@
1
+ export * from './enums/ScoringProviderEnum';
2
+ export * from './enums/ClientLevelEnum';
3
+ export * from './enums/ScoringDecisionEnum';
4
+ export * from './enums/SciLayer2SourceEnum';
5
+ export * from './dtos/ScoringDecision';
6
+ export * from './dtos/ScoringOffer';
7
+ export * from './dtos/SciBreakdown';
8
+ export * from './dtos/requests/EvaluateSciRequest';
9
+ export * from './dtos/requests/SciInternalHistoryInput';
10
+ export * from './dtos/responses/EvaluateSciResponse';
11
+ export * from './dtos/responses/SciEvaluationResponse';
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Enums
18
+ __exportStar(require("./enums/ScoringProviderEnum"), exports);
19
+ __exportStar(require("./enums/ClientLevelEnum"), exports);
20
+ __exportStar(require("./enums/ScoringDecisionEnum"), exports);
21
+ __exportStar(require("./enums/SciLayer2SourceEnum"), exports);
22
+ // Contrato agnóstico + shapes compartidos
23
+ __exportStar(require("./dtos/ScoringDecision"), exports);
24
+ __exportStar(require("./dtos/ScoringOffer"), exports);
25
+ __exportStar(require("./dtos/SciBreakdown"), exports);
26
+ // Request DTOs
27
+ __exportStar(require("./dtos/requests/EvaluateSciRequest"), exports);
28
+ __exportStar(require("./dtos/requests/SciInternalHistoryInput"), exports);
29
+ // Response DTOs
30
+ __exportStar(require("./dtos/responses/EvaluateSciResponse"), exports);
31
+ __exportStar(require("./dtos/responses/SciEvaluationResponse"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.196.0",
3
+ "version": "3.199.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,56 @@
1
+ import { PaymentScheduleItemResponse } from "./PaymentScheduleItemResponse";
2
+
3
+ /**
4
+ * Preview / cotizacion de un abono a capital (ANTICIPATED) antes de ejecutarlo.
5
+ *
6
+ * Reusa el mismo motor de recalculo que la ejecucion real
7
+ * (ScheduleRecalculationService.redistributeCapital) — no persiste nada.
8
+ *
9
+ * Regla de negocio: el abono acorta la cuota semanal, NO el plazo. El numero
10
+ * de cupones se mantiene igual; los PENDING se re-amortizan sobre el nuevo
11
+ * saldo, los PARTIAL se escalan proporcionalmente y los PAID quedan intactos.
12
+ */
13
+ export class AnticipatedPaymentQuote {
14
+ creditId!: string;
15
+
16
+ /** Monto que el usuario propuso, capeado al outstanding real del credito. */
17
+ amountMxn!: number;
18
+
19
+ /** Estado actual (as-is) del credito, antes de aplicar el abono. */
20
+ current!: AnticipatedPaymentSummary;
21
+
22
+ /** Estado proyectado (as-if) despues de aplicar el abono. */
23
+ after!: AnticipatedPaymentSummary;
24
+
25
+ /** Diferencia entre `current` y `after` — cuanto ahorra el usuario. */
26
+ savings!: AnticipatedPaymentSavings;
27
+
28
+ /**
29
+ * Calendario completo proyectado (todos los cupones: PAID historicos,
30
+ * PARTIAL escalados, PENDING re-amortizados). Mismo shape que
31
+ * `GET /credit/{creditId}/schedule` para que el frontend renderice con
32
+ * el mismo componente.
33
+ */
34
+ newSchedule!: PaymentScheduleItemResponse[];
35
+
36
+ /** ISO timestamp de la cotizacion. */
37
+ quoteDate!: string;
38
+ }
39
+
40
+ export class AnticipatedPaymentSummary {
41
+ /** Cuota semanal vigente. */
42
+ weeklyPaymentMxn!: number;
43
+ /** Saldo insoluto (capital pendiente). */
44
+ outstandingMxn!: number;
45
+ /** Cupones que aun no estan PAID (incluye PARTIAL). */
46
+ remainingCoupons!: number;
47
+ /** Total pendiente a pagar (capital + interes + IVA de cupones no PAID). */
48
+ totalToPayMxn!: number;
49
+ }
50
+
51
+ export class AnticipatedPaymentSavings {
52
+ /** Reduccion en la cuota semanal (current - after). */
53
+ weeklyMxn!: number;
54
+ /** Reduccion total en intereses + IVA a pagar (current - after). */
55
+ totalInterestMxn!: number;
56
+ }
@@ -18,3 +18,4 @@ export * from './dtos/CreditSignatureResult';
18
18
  export * from './dtos/EarlyPaymentResult';
19
19
  export * from './dtos/OfferResult';
20
20
  export * from './dtos/SettlementQuote';
21
+ export * from './dtos/AnticipatedPaymentQuote';
package/src/index.ts CHANGED
@@ -123,5 +123,12 @@ export * as LoanOfferings from './loanOfferings';
123
123
  // LoanCollectorAssignment: DTOs/enums del lambda loan-collector-assignment-business (comp 08 — reglas de
124
124
  // asignación de cartera de cobranza + asignaciones crédito↔cobrador; SureKeep Fase 1 — pista Loan).
125
125
  export * as LoanCollectorAssignment from './loanCollectorAssignment';
126
+ // LoanCredit: DTOs/enums del lambda loan-credit-business (comp 09 F2/F3 — motor de crédito SOFOM:
127
+ // acreditado, crédito, plan de cuotas con amortización francesa + IVA 16%; SureKeep — pista Loan).
128
+ export * as LoanCredit from './loanCredit';
129
+ // LoanScoring: DTOs/enums del lambda loan-scoring-business (comp 08 F2 — SCI M7 de 3 capas +
130
+ // ScoringProviderRouter configurable Modelias|Círculo con contrato agnóstico ScoringDecision;
131
+ // SureKeep Fase 2 — pista Loan/SOFOM).
132
+ export * as LoanScoring from './loanScoring';
126
133
  export * from './messaging';
127
134
  export * from './complaint';
@@ -0,0 +1,25 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsBoolean } from 'class-validator';
3
+
4
+ /**
5
+ * Las 4 condiciones de activación del crédito (M2 §5 / 05_MOTOR §7). El crédito solo puede pasar a
6
+ * `ACTIVE` cuando las 4 son `true`. `downPayment`/`contractSigned` las marca la firma del contrato;
7
+ * `imeiEnrolled`/`lockVerified` las marca el enrolamiento MDM.
8
+ */
9
+ export class ActivationChecklist {
10
+ @Expose()
11
+ @IsBoolean()
12
+ downPayment!: boolean;
13
+
14
+ @Expose()
15
+ @IsBoolean()
16
+ contractSigned!: boolean;
17
+
18
+ @Expose()
19
+ @IsBoolean()
20
+ imeiEnrolled!: boolean;
21
+
22
+ @Expose()
23
+ @IsBoolean()
24
+ lockVerified!: boolean;
25
+ }
@@ -0,0 +1,22 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsNotEmpty, IsOptional, IsString } from 'class-validator';
3
+
4
+ /**
5
+ * Beneficiario declarado por el acreditado (modelo-datos §5b `LoanBorrower.beneficiary`).
6
+ */
7
+ export class LoanBeneficiary {
8
+ @Expose()
9
+ @IsString()
10
+ @IsNotEmpty()
11
+ fullName!: string;
12
+
13
+ @Expose()
14
+ @IsOptional()
15
+ @IsString()
16
+ relationship?: string;
17
+
18
+ @Expose()
19
+ @IsOptional()
20
+ @IsString()
21
+ phone?: string;
22
+ }
@@ -0,0 +1,71 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import {
3
+ IsInt,
4
+ IsEnum,
5
+ IsOptional,
6
+ IsString,
7
+ Matches,
8
+ Max,
9
+ Min,
10
+ ValidateNested,
11
+ } from 'class-validator';
12
+ import { regexIso8601 } from '../../helpers/constans/regex';
13
+ import { ClientLevelEnum } from '../../loanScoring/enums/ClientLevelEnum';
14
+ import { LoanBeneficiary } from './LoanBeneficiary';
15
+
16
+ /**
17
+ * LoanBorrower — el acreditado de la SOFOM (modelo-datos §5b · owner `loan-credit-business`).
18
+ * Se hidrata desde el evento `CustomerKycVerifiedV1` de retail-customer (idempotente por
19
+ * `retailCustomerId`). `sciScore`/`clientLevel` los actualiza loan-scoring tras cada evaluación.
20
+ */
21
+ export class LoanBorrower {
22
+ @Expose()
23
+ @IsString()
24
+ borrowerId!: string;
25
+
26
+ /** FK al comprador de retail (`RetailCustomer` — owner retail-customer-business). */
27
+ @Expose()
28
+ @IsString()
29
+ retailCustomerId!: string;
30
+
31
+ /** SCI vigente 0-100 (M7). Ausente hasta la primera evaluación. */
32
+ @Expose()
33
+ @IsOptional()
34
+ @IsInt()
35
+ @Min(0)
36
+ @Max(100)
37
+ sciScore?: number;
38
+
39
+ @Expose()
40
+ @IsOptional()
41
+ @IsEnum(ClientLevelEnum)
42
+ clientLevel?: ClientLevelEnum;
43
+
44
+ /** Score FICO/FIS del buró en la última consulta (Círculo de Crédito). */
45
+ @Expose()
46
+ @IsOptional()
47
+ @IsInt()
48
+ bureauScore?: number;
49
+
50
+ @Expose()
51
+ @IsOptional()
52
+ @ValidateNested()
53
+ @Type(() => LoanBeneficiary)
54
+ beneficiary?: LoanBeneficiary;
55
+
56
+ @Expose()
57
+ @IsString()
58
+ createdBy!: string;
59
+
60
+ @Expose()
61
+ @IsString()
62
+ updatedBy!: string;
63
+
64
+ @Expose()
65
+ @Matches(regexIso8601)
66
+ createdAt!: string;
67
+
68
+ @Expose()
69
+ @Matches(regexIso8601)
70
+ updatedAt!: string;
71
+ }