@fiado/type-kit 3.25.0 → 3.27.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 (148) hide show
  1. package/bin/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.d.ts +22 -0
  2. package/bin/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.js +91 -0
  3. package/bin/benefitCenter/dtos/FieldOverrideRequest.d.ts +19 -0
  4. package/bin/benefitCenter/dtos/FieldOverrideRequest.js +80 -0
  5. package/bin/benefitCenter/dtos/InputSchemaOverrideRequest.d.ts +9 -0
  6. package/bin/benefitCenter/dtos/InputSchemaOverrideRequest.js +29 -0
  7. package/bin/benefitCenter/enums/LeafOverrideStatusEnum.d.ts +10 -0
  8. package/bin/benefitCenter/enums/LeafOverrideStatusEnum.js +14 -0
  9. package/bin/cognitoConnector/dtos/SignUpBackofficeRequest.d.ts +13 -0
  10. package/bin/cognitoConnector/dtos/SignUpBackofficeRequest.js +71 -0
  11. package/bin/comission-business/dtos/GenerateReportRequest.d.ts +10 -0
  12. package/bin/comission-business/dtos/GenerateReportRequest.js +2 -0
  13. package/bin/comission-business/dtos/GenerateReportResponse.d.ts +6 -0
  14. package/bin/comission-business/dtos/GenerateReportResponse.js +2 -0
  15. package/bin/comission-business/enums/PaymentStatusEnum.d.ts +5 -0
  16. package/bin/comission-business/enums/PaymentStatusEnum.js +9 -0
  17. package/bin/credit/dtos/CreditBannerStateResponse.d.ts +10 -0
  18. package/bin/credit/dtos/CreditBannerStateResponse.js +6 -0
  19. package/bin/credit/dtos/CreditDetailResponse.d.ts +23 -0
  20. package/bin/credit/dtos/CreditDetailResponse.js +6 -0
  21. package/bin/credit/dtos/CreditEligibilityResponse.d.ts +9 -0
  22. package/bin/credit/dtos/CreditEligibilityResponse.js +6 -0
  23. package/bin/credit/dtos/CreditMovementResponse.d.ts +20 -0
  24. package/bin/credit/dtos/CreditMovementResponse.js +9 -0
  25. package/bin/credit/dtos/CreditRequestCreate.d.ts +4 -0
  26. package/bin/credit/dtos/CreditRequestCreate.js +26 -0
  27. package/bin/credit/dtos/CreditRequestResponse.d.ts +7 -0
  28. package/bin/credit/dtos/CreditRequestResponse.js +6 -0
  29. package/bin/credit/dtos/CreditScheduleResponse.d.ts +18 -0
  30. package/bin/credit/dtos/CreditScheduleResponse.js +9 -0
  31. package/bin/credit/dtos/CreditStatementResponse.d.ts +11 -0
  32. package/bin/credit/dtos/CreditStatementResponse.js +9 -0
  33. package/bin/credit/dtos/EarlyPaymentRequest.d.ts +7 -0
  34. package/bin/credit/dtos/EarlyPaymentRequest.js +37 -0
  35. package/bin/credit/dtos/EarlyPaymentResponse.d.ts +11 -0
  36. package/bin/credit/dtos/EarlyPaymentResponse.js +6 -0
  37. package/bin/credit/dtos/internal/CreditBalanceRequest.d.ts +3 -0
  38. package/bin/credit/dtos/internal/CreditBalanceRequest.js +21 -0
  39. package/bin/credit/dtos/internal/CreditCollectionRequest.d.ts +11 -0
  40. package/bin/credit/dtos/internal/CreditCollectionRequest.js +59 -0
  41. package/bin/credit/dtos/internal/CreditCollectionResponse.d.ts +12 -0
  42. package/bin/credit/dtos/internal/CreditCollectionResponse.js +6 -0
  43. package/bin/credit/dtos/internal/CreditDisbursementRequest.d.ts +7 -0
  44. package/bin/credit/dtos/internal/CreditDisbursementRequest.js +43 -0
  45. package/bin/credit/dtos/internal/CreditDisbursementResponse.d.ts +8 -0
  46. package/bin/credit/dtos/internal/CreditDisbursementResponse.js +6 -0
  47. package/bin/credit/dtos/internal/CreditProfileRequest.d.ts +3 -0
  48. package/bin/credit/dtos/internal/CreditProfileRequest.js +23 -0
  49. package/bin/credit/dtos/internal/CreditReversalRequest.d.ts +5 -0
  50. package/bin/credit/dtos/internal/CreditReversalRequest.js +31 -0
  51. package/bin/credit/dtos/internal/CreditReversalResponse.d.ts +7 -0
  52. package/bin/credit/dtos/internal/CreditReversalResponse.js +6 -0
  53. package/bin/credit/dtos/internal/CreditTransferLoancoRequest.d.ts +8 -0
  54. package/bin/credit/dtos/internal/CreditTransferLoancoRequest.js +46 -0
  55. package/bin/credit/dtos/internal/CreditTransferLoancoResponse.d.ts +8 -0
  56. package/bin/credit/dtos/internal/CreditTransferLoancoResponse.js +6 -0
  57. package/bin/credit/dtos/internal/DocumentSignRequest.d.ts +3 -0
  58. package/bin/credit/dtos/internal/DocumentSignRequest.js +21 -0
  59. package/bin/credit/dtos/internal/LienApplyRequest.d.ts +7 -0
  60. package/bin/credit/dtos/internal/LienApplyRequest.js +45 -0
  61. package/bin/credit/enums/CollectionFrequencyEnum.d.ts +5 -0
  62. package/bin/credit/enums/CollectionFrequencyEnum.js +9 -0
  63. package/bin/credit/enums/CreditOperationEnum.d.ts +11 -0
  64. package/bin/credit/enums/CreditOperationEnum.js +15 -0
  65. package/bin/credit/enums/CreditStatusEnum.d.ts +12 -0
  66. package/bin/credit/enums/CreditStatusEnum.js +16 -0
  67. package/bin/credit/enums/DelinquencyLevelEnum.d.ts +9 -0
  68. package/bin/credit/enums/DelinquencyLevelEnum.js +13 -0
  69. package/bin/credit/enums/DocumentTypeEnum.d.ts +8 -0
  70. package/bin/credit/enums/DocumentTypeEnum.js +12 -0
  71. package/bin/credit/enums/OfferStatusEnum.d.ts +8 -0
  72. package/bin/credit/enums/OfferStatusEnum.js +12 -0
  73. package/bin/credit/enums/PaymentTypeEnum.d.ts +9 -0
  74. package/bin/credit/enums/PaymentTypeEnum.js +13 -0
  75. package/bin/credit/enums/ReconciliationStatusEnum.d.ts +6 -0
  76. package/bin/credit/enums/ReconciliationStatusEnum.js +10 -0
  77. package/bin/credit/enums/TransferStatusEnum.d.ts +8 -0
  78. package/bin/credit/enums/TransferStatusEnum.js +12 -0
  79. package/bin/remittance/dtos/RemittanceQuoteRequest.d.ts +17 -0
  80. package/bin/remittance/dtos/RemittanceQuoteRequest.js +51 -0
  81. package/bin/remittance/dtos/RemittanceQuoteResponse.d.ts +11 -0
  82. package/bin/remittance/dtos/RemittanceQuoteResponse.js +6 -0
  83. package/bin/remittance/dtos/RemittanceSendPreviewRequest.d.ts +9 -0
  84. package/bin/remittance/dtos/RemittanceSendPreviewRequest.js +34 -0
  85. package/bin/remittance/dtos/RemittanceSendPreviewResponse.d.ts +18 -0
  86. package/bin/remittance/dtos/RemittanceSendPreviewResponse.js +6 -0
  87. package/bin/remittance/dtos/index.d.ts +4 -0
  88. package/bin/remittance/dtos/index.js +4 -0
  89. package/bin/riskProfile/dtos/private/AppendAlertNoteRequest.d.ts +16 -0
  90. package/bin/riskProfile/dtos/private/AppendAlertNoteRequest.js +45 -0
  91. package/bin/riskProfile/dtos/private/AppendAlertNoteResponse.d.ts +10 -0
  92. package/bin/riskProfile/dtos/private/AppendAlertNoteResponse.js +36 -0
  93. package/bin/riskProfile/dtos/private/CreateBlockedListAlertRequest.d.ts +19 -0
  94. package/bin/riskProfile/dtos/private/CreateBlockedListAlertRequest.js +64 -0
  95. package/bin/riskProfile/dtos/private/CreateBlockedListAlertResponse.d.ts +8 -0
  96. package/bin/riskProfile/dtos/private/CreateBlockedListAlertResponse.js +31 -0
  97. package/bin/riskProfile/dtos/private/DictaminateAlertRequest.d.ts +17 -0
  98. package/bin/riskProfile/dtos/private/DictaminateAlertRequest.js +46 -0
  99. package/bin/riskProfile/dtos/private/DictaminateAlertResponse.d.ts +14 -0
  100. package/bin/riskProfile/dtos/private/DictaminateAlertResponse.js +46 -0
  101. package/bin/riskProfile/dtos/private/MarkAlertReportedRequest.d.ts +18 -0
  102. package/bin/riskProfile/dtos/private/MarkAlertReportedRequest.js +52 -0
  103. package/bin/riskProfile/dtos/private/MarkAlertReportedResponse.d.ts +9 -0
  104. package/bin/riskProfile/dtos/private/MarkAlertReportedResponse.js +35 -0
  105. package/bin/riskProfile/dtos/private/SetCustomAlarmRequest.d.ts +17 -0
  106. package/bin/riskProfile/dtos/private/SetCustomAlarmRequest.js +52 -0
  107. package/bin/riskProfile/dtos/private/SetCustomAlarmResponse.d.ts +13 -0
  108. package/bin/riskProfile/dtos/private/SetCustomAlarmResponse.js +48 -0
  109. package/bin/riskProfile/dtos/private/SetDeclaredIncomeRequest.d.ts +14 -0
  110. package/bin/riskProfile/dtos/private/SetDeclaredIncomeRequest.js +44 -0
  111. package/bin/riskProfile/dtos/private/SetDeclaredIncomeResponse.d.ts +20 -0
  112. package/bin/riskProfile/dtos/private/SetDeclaredIncomeResponse.js +49 -0
  113. package/bin/riskProfile/dtos/private/SetManualRiskLevelRequest.d.ts +24 -0
  114. package/bin/riskProfile/dtos/private/SetManualRiskLevelRequest.js +55 -0
  115. package/bin/riskProfile/dtos/private/SetManualRiskLevelResponse.d.ts +20 -0
  116. package/bin/riskProfile/dtos/private/SetManualRiskLevelResponse.js +54 -0
  117. package/bin/riskProfile/enums/CustomAlarmName.d.ts +9 -0
  118. package/bin/riskProfile/enums/CustomAlarmName.js +13 -0
  119. package/bin/riskProfile/enums/DictamenStatus.d.ts +9 -0
  120. package/bin/riskProfile/enums/DictamenStatus.js +13 -0
  121. package/bin/riskProfile/enums/NotesMode.d.ts +9 -0
  122. package/bin/riskProfile/enums/NotesMode.js +13 -0
  123. package/bin/riskProfile/index.d.ts +17 -0
  124. package/bin/riskProfile/index.js +19 -0
  125. package/package.json +3 -2
  126. package/src/remittance/dtos/RemittanceQuoteRequest.ts +33 -0
  127. package/src/remittance/dtos/RemittanceQuoteResponse.ts +11 -0
  128. package/src/remittance/dtos/RemittanceSendPreviewRequest.ts +18 -0
  129. package/src/remittance/dtos/RemittanceSendPreviewResponse.ts +19 -0
  130. package/src/remittance/dtos/index.ts +4 -0
  131. package/src/riskProfile/dtos/private/AppendAlertNoteRequest.ts +29 -0
  132. package/src/riskProfile/dtos/private/AppendAlertNoteResponse.ts +12 -0
  133. package/src/riskProfile/dtos/private/CreateBlockedListAlertRequest.ts +22 -0
  134. package/src/riskProfile/dtos/private/CreateBlockedListAlertResponse.ts +10 -0
  135. package/src/riskProfile/dtos/private/DictaminateAlertRequest.ts +30 -0
  136. package/src/riskProfile/dtos/private/DictaminateAlertResponse.ts +16 -0
  137. package/src/riskProfile/dtos/private/MarkAlertReportedRequest.ts +21 -0
  138. package/src/riskProfile/dtos/private/MarkAlertReportedResponse.ts +11 -0
  139. package/src/riskProfile/dtos/private/SetCustomAlarmRequest.ts +31 -0
  140. package/src/riskProfile/dtos/private/SetCustomAlarmResponse.ts +15 -0
  141. package/src/riskProfile/dtos/private/SetDeclaredIncomeRequest.ts +26 -0
  142. package/src/riskProfile/dtos/private/SetDeclaredIncomeResponse.ts +22 -0
  143. package/src/riskProfile/dtos/private/SetManualRiskLevelRequest.ts +37 -0
  144. package/src/riskProfile/dtos/private/SetManualRiskLevelResponse.ts +22 -0
  145. package/src/riskProfile/enums/CustomAlarmName.ts +9 -0
  146. package/src/riskProfile/enums/DictamenStatus.ts +9 -0
  147. package/src/riskProfile/enums/NotesMode.ts +9 -0
  148. package/src/riskProfile/index.ts +21 -0
@@ -36,3 +36,22 @@ __exportStar(require("./enums/AlarmName"), exports);
36
36
  __exportStar(require("./enums/UserQuestionnaireStatusEnum"), exports);
37
37
  __exportStar(require("./enums/UserQuestionnaireQuestionAnswerEnum"), exports);
38
38
  __exportStar(require("./enums/UserQuestionnaireQuestionStatusEnum"), exports);
39
+ // Enums PLD privados
40
+ __exportStar(require("./enums/CustomAlarmName"), exports);
41
+ __exportStar(require("./enums/DictamenStatus"), exports);
42
+ __exportStar(require("./enums/NotesMode"), exports);
43
+ // DTOs PLD privados — endpoints del PrivateController para Dashboard regulatorio
44
+ __exportStar(require("./dtos/private/DictaminateAlertRequest"), exports);
45
+ __exportStar(require("./dtos/private/DictaminateAlertResponse"), exports);
46
+ __exportStar(require("./dtos/private/AppendAlertNoteRequest"), exports);
47
+ __exportStar(require("./dtos/private/AppendAlertNoteResponse"), exports);
48
+ __exportStar(require("./dtos/private/CreateBlockedListAlertRequest"), exports);
49
+ __exportStar(require("./dtos/private/CreateBlockedListAlertResponse"), exports);
50
+ __exportStar(require("./dtos/private/MarkAlertReportedRequest"), exports);
51
+ __exportStar(require("./dtos/private/MarkAlertReportedResponse"), exports);
52
+ __exportStar(require("./dtos/private/SetManualRiskLevelRequest"), exports);
53
+ __exportStar(require("./dtos/private/SetManualRiskLevelResponse"), exports);
54
+ __exportStar(require("./dtos/private/SetCustomAlarmRequest"), exports);
55
+ __exportStar(require("./dtos/private/SetCustomAlarmResponse"), exports);
56
+ __exportStar(require("./dtos/private/SetDeclaredIncomeRequest"), exports);
57
+ __exportStar(require("./dtos/private/SetDeclaredIncomeResponse"), exports);
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.25.0",
3
+ "version": "3.27.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
7
7
  "scripts": {
8
8
  "test": "jest",
9
- "build": "tsc"
9
+ "build": "tsc",
10
+ "prepublishOnly": "npm run build"
10
11
  },
11
12
  "keywords": [],
12
13
  "author": "Fiado Inc",
@@ -0,0 +1,33 @@
1
+ import { IsEnum, IsIn, IsNotEmpty, IsNumber, IsString, Min } from "class-validator";
2
+ import { ReceptionMethod } from "../enums/ReceptionMethod";
3
+ import { RemittanceCountryISO } from "../enums/RemittanceCountryISO";
4
+
5
+ /**
6
+ * Quote en tiempo real (debounce mientras el usuario escribe).
7
+ * Bajo modelo API Lite (D23-D26) NO incluye fundingMethodType — la fuente es
8
+ * siempre el wallet USD del usuario; el connector mapea a sendingMethodName="Wlp Wallet"
9
+ * internamente.
10
+ */
11
+ export class RemittanceQuoteRequest {
12
+ @IsEnum(RemittanceCountryISO)
13
+ destCountry!: RemittanceCountryISO;
14
+
15
+ @IsString()
16
+ @IsNotEmpty()
17
+ destCurrencyISO!: string;
18
+
19
+ @IsString()
20
+ @IsNotEmpty()
21
+ payerCode!: string;
22
+
23
+ @IsEnum(ReceptionMethod)
24
+ receptionMethod!: ReceptionMethod;
25
+
26
+ @IsNumber({ maxDecimalPlaces: 2 })
27
+ @Min(1)
28
+ amount!: number;
29
+
30
+ /** "USD" si amount está en origen; ISO destino si está en moneda destino. */
31
+ @IsIn(["USD", "GTQ", "HNL", "MXN", "NIO"])
32
+ amountCurrency!: string;
33
+ }
@@ -0,0 +1,11 @@
1
+ export class RemittanceQuoteResponse {
2
+ exchangeRate!: number;
3
+ serviceFee!: number;
4
+ stateFee!: number;
5
+ receivedAmount!: number;
6
+ totalAmount!: number;
7
+ /** UUID interno (no de UNIR). Solo para tracking en logs, no se reusa en Preview. */
8
+ quoteId!: string;
9
+ /** Epoch ms. Sugerencia: re-cotizar tras `expiresAt`. */
10
+ expiresAt!: number;
11
+ }
@@ -0,0 +1,18 @@
1
+ import { IsIn, IsNotEmpty, IsNumber, IsString, Min } from "class-validator";
2
+
3
+ /**
4
+ * Preview formal antes del confirm. Bajo API Lite no incluye fundingMethod —
5
+ * el connector usa unirWlpWalletId de RemittanceUsers_GT (capturado en F2).
6
+ */
7
+ export class RemittanceSendPreviewRequest {
8
+ @IsString()
9
+ @IsNotEmpty()
10
+ beneficiaryId!: string;
11
+
12
+ @IsNumber({ maxDecimalPlaces: 2 })
13
+ @Min(1)
14
+ amount!: number;
15
+
16
+ @IsIn(["USD", "GTQ", "HNL", "MXN", "NIO"])
17
+ amountCurrency!: string;
18
+ }
@@ -0,0 +1,19 @@
1
+ export interface RemittanceBeneficiaryDisplay {
2
+ name: string;
3
+ bank?: string;
4
+ lastFour?: string;
5
+ }
6
+
7
+ export class RemittanceSendPreviewResponse {
8
+ /** transactionInternalReference de UNIR — requerido para el confirm en F6. */
9
+ previewRef!: string;
10
+ exchangeRate!: number;
11
+ serviceFee!: number;
12
+ stateFee!: number;
13
+ totalAmount!: number;
14
+ receivedAmount!: number;
15
+ receivedCurrency!: string;
16
+ beneficiaryDisplay!: RemittanceBeneficiaryDisplay;
17
+ /** Epoch ms. Cache 10 min en RemittanceCache_GT (D-F5.4). */
18
+ expiresAt!: number;
19
+ }
@@ -6,6 +6,10 @@ export * from "./RemittanceBeneficiary";
6
6
  export * from "./RemittanceAddBeneficiaryRequest";
7
7
  export * from "./RemittanceUpdateBeneficiaryRequest";
8
8
  export * from "./RemittanceListBeneficiariesResponse";
9
+ export * from "./RemittanceQuoteRequest";
10
+ export * from "./RemittanceQuoteResponse";
11
+ export * from "./RemittanceSendPreviewRequest";
12
+ export * from "./RemittanceSendPreviewResponse";
9
13
  export * from "./RemittanceTransaction";
10
14
  export * from "./RemittanceLimitsInfo";
11
15
  export * from "./RemittanceHomeResponse";
@@ -0,0 +1,29 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsEnum, IsNotEmpty, IsString, MinLength } from "class-validator";
3
+ import { NotesMode } from "../../enums/NotesMode";
4
+
5
+ /**
6
+ * Solicitud para agregar nota a una alerta sin dictaminar.
7
+ *
8
+ * Permite al OC agregar contexto a una alerta en estado NEW o PENDING sin cerrarla.
9
+ * El modo `APPEND` concatena al final; `REPLACE` sobrescribe.
10
+ *
11
+ * Reglas de negocio:
12
+ * - `notes` mínimo 10 caracteres.
13
+ * - El append no es atómico ante escritura concurrente — el último gana.
14
+ */
15
+ export class AppendAlertNoteRequest {
16
+ @Expose()
17
+ @IsString()
18
+ @IsNotEmpty()
19
+ @MinLength(10, { message: 'notes debe tener al menos 10 caracteres' })
20
+ notes!: string;
21
+
22
+ @Expose()
23
+ @IsEnum(NotesMode)
24
+ mode!: NotesMode;
25
+
26
+ @Expose()
27
+ @IsEmail({}, { message: 'email debe ser un correo válido' })
28
+ email!: string;
29
+ }
@@ -0,0 +1,12 @@
1
+ import { Expose } from "class-transformer";
2
+
3
+ /**
4
+ * Respuesta de agregar nota a una alerta.
5
+ * `notesUpdated` indica si efectivamente hubo cambio (false si el texto resultante fue idéntico).
6
+ */
7
+ export class AppendAlertNoteResponse {
8
+ @Expose() alertId!: string;
9
+ @Expose() notesUpdated!: boolean;
10
+ @Expose() observationId?: string;
11
+ @Expose() snapshotKey!: string;
12
+ }
@@ -0,0 +1,22 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsNotEmpty, IsString, MinLength } from "class-validator";
3
+
4
+ /**
5
+ * Solicitud para crear una alerta BLOCKED_LIST manualmente.
6
+ *
7
+ * Se invoca cuando el caller ha identificado un match contra la lista LPB.
8
+ * El BO no consulta `blacklist-business` ni la lista negra interna de Fiado;
9
+ * confía en el caller y solo registra la alerta.
10
+ *
11
+ * Reglas de negocio:
12
+ * - Si ya existe alerta BLOCKED_LIST abierta (NEW/PENDING) para el mismo directoryId, devuelve 409.
13
+ * - `reason` mínimo 10 caracteres (descripción del match LPB).
14
+ */
15
+ export class CreateBlockedListAlertRequest {
16
+ @Expose() @IsString() @IsNotEmpty() directoryId!: string;
17
+ @Expose() @IsString() @IsNotEmpty() peopleId!: string;
18
+ @Expose() @IsString() @IsNotEmpty() indexName!: string;
19
+ @Expose() @IsString() @IsNotEmpty() phoneNumber!: string;
20
+ @Expose() @IsEmail({}, { message: 'email debe ser un correo válido' }) email!: string;
21
+ @Expose() @IsString() @IsNotEmpty() @MinLength(10, { message: 'reason debe tener al menos 10 caracteres' }) reason!: string;
22
+ }
@@ -0,0 +1,10 @@
1
+ import { Expose } from "class-transformer";
2
+
3
+ /**
4
+ * Respuesta de creación de alerta BLOCKED_LIST.
5
+ */
6
+ export class CreateBlockedListAlertResponse {
7
+ @Expose() alertId!: string;
8
+ @Expose() observationId?: string;
9
+ @Expose() snapshotKey!: string;
10
+ }
@@ -0,0 +1,30 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsEnum, IsNotEmpty, IsString, MinLength } from "class-validator";
3
+ import { DictamenStatus } from "../../enums/DictamenStatus";
4
+
5
+ /**
6
+ * Solicitud para dictaminar una alerta de PLD.
7
+ *
8
+ * Cierra una alerta en estado NEW o PENDING transicionándola a uno de los estados terminales.
9
+ * Genera audit trail completo (Observation + snapshot S3) y queda inmutable.
10
+ *
11
+ * Reglas de negocio:
12
+ * - `newStatus` debe ser uno de los estados de cierre permitidos.
13
+ * - `newNotes` queda como justificación regulatoria del dictamen (mínimo 10 caracteres).
14
+ * - `email` es el correo del Oficial de Cumplimiento que ejecuta la operación.
15
+ */
16
+ export class DictaminateAlertRequest {
17
+ @Expose()
18
+ @IsEnum(DictamenStatus)
19
+ newStatus!: DictamenStatus;
20
+
21
+ @Expose()
22
+ @IsString()
23
+ @IsNotEmpty()
24
+ @MinLength(10, { message: 'newNotes debe tener al menos 10 caracteres' })
25
+ newNotes!: string;
26
+
27
+ @Expose()
28
+ @IsEmail({}, { message: 'email debe ser un correo válido' })
29
+ email!: string;
30
+ }
@@ -0,0 +1,16 @@
1
+ import { Expose } from "class-transformer";
2
+
3
+ /**
4
+ * Respuesta de la operación de dictamen de alerta.
5
+ *
6
+ * Incluye el hash SHA-256 del snapshot inmutable guardado en S3.
7
+ * El `snapshotKey` puede usarse para recuperar el snapshot completo desde el bucket de audit.
8
+ */
9
+ export class DictaminateAlertResponse {
10
+ @Expose() alertId!: string;
11
+ @Expose() previousStatus!: string;
12
+ @Expose() newStatus!: string;
13
+ @Expose() snapshotKey!: string;
14
+ @Expose() snapshotHash!: string;
15
+ @Expose() observationId?: string;
16
+ }
@@ -0,0 +1,21 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsNotEmpty, IsString } from "class-validator";
3
+
4
+ /**
5
+ * Solicitud para marcar una alerta como reportada a SITI (ROI enviado).
6
+ *
7
+ * Se invoca después de que el OC envíe el reporte regulatorio; este endpoint
8
+ * NO envía el reporte a SITI, solo registra el acuse y datos de trazabilidad.
9
+ *
10
+ * Precondiciones:
11
+ * - Alerta debe estar en estado CLOSE_RULED.
12
+ * - Alerta no debe haber sido reportada previamente (`reported === 0`).
13
+ *
14
+ * Si no cumple precondiciones → 409 ALERT_NOT_ELIGIBLE.
15
+ */
16
+ export class MarkAlertReportedRequest {
17
+ @Expose() @IsString() @IsNotEmpty() reportSupTechId!: string;
18
+ @Expose() @IsString() @IsNotEmpty() reportName!: string;
19
+ @Expose() @IsString() @IsNotEmpty() fileNumber!: string;
20
+ @Expose() @IsEmail({}, { message: 'email debe ser un correo válido' }) email!: string;
21
+ }
@@ -0,0 +1,11 @@
1
+ import { Expose } from "class-transformer";
2
+
3
+ /**
4
+ * Respuesta de marcar alerta como reportada.
5
+ */
6
+ export class MarkAlertReportedResponse {
7
+ @Expose() alertId!: string;
8
+ @Expose() reported!: 1 | 0;
9
+ @Expose() observationId?: string;
10
+ @Expose() snapshotKey!: string;
11
+ }
@@ -0,0 +1,31 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsEnum, IsNotEmpty, IsNumber, IsString, Min, MinLength, ValidateIf } from "class-validator";
3
+ import { CustomAlarmName } from "../../enums/CustomAlarmName";
4
+
5
+ /**
6
+ * Solicitud para cambiar un umbral de alarma custom.
7
+ *
8
+ * Solo afecta alarmas custom (customHighAmount, customMonthlyIncrease).
9
+ * Las 3 alarmas base no se recalculan al modificar custom.
10
+ *
11
+ * Si `newValue` es `null`, se interpreta como "quitar override" (limpiar la custom).
12
+ *
13
+ * Idempotencia: si previousValue === newValue, devuelve 200 con noop=true.
14
+ */
15
+ export class SetCustomAlarmRequest {
16
+ @Expose() @IsEnum(CustomAlarmName) alarmName!: CustomAlarmName;
17
+
18
+ @Expose()
19
+ @ValidateIf(o => o.newValue !== null)
20
+ @IsNumber({}, { message: 'newValue debe ser un número o null' })
21
+ @Min(0, { message: 'newValue debe ser ≥ 0' })
22
+ newValue!: number | null;
23
+
24
+ @Expose() @IsEmail({}, { message: 'email debe ser un correo válido' }) email!: string;
25
+
26
+ @Expose()
27
+ @IsString()
28
+ @IsNotEmpty()
29
+ @MinLength(10, { message: 'notes debe tener al menos 10 caracteres' })
30
+ notes!: string;
31
+ }
@@ -0,0 +1,15 @@
1
+ import { Expose } from "class-transformer";
2
+ import { CustomAlarmName } from "../../enums/CustomAlarmName";
3
+
4
+ /**
5
+ * Respuesta de actualización de alarma custom.
6
+ */
7
+ export class SetCustomAlarmResponse {
8
+ @Expose() directoryId!: string;
9
+ @Expose() noop?: boolean;
10
+ @Expose() alarmName?: CustomAlarmName;
11
+ @Expose() previousValue?: number | null;
12
+ @Expose() newValue?: number | null;
13
+ @Expose() observationId?: string;
14
+ @Expose() snapshotKey?: string;
15
+ }
@@ -0,0 +1,26 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsInt, IsNotEmpty, IsString, Min, MinLength } from "class-validator";
3
+
4
+ /**
5
+ * Solicitud para cambiar `declaredMonthlyIncome` del perfil.
6
+ *
7
+ * Side effects (atómicos):
8
+ * - Recalcula las 5 alarmas base (highAmount, monthlyIncrease, monthlyLimit y derivadas).
9
+ * - Las alarmas custom NO se recalculan.
10
+ *
11
+ * Idempotencia: si previousIncome === newValue, devuelve 200 con noop=true.
12
+ */
13
+ export class SetDeclaredIncomeRequest {
14
+ @Expose()
15
+ @IsInt({ message: 'newValue debe ser entero (centavos MXN)' })
16
+ @Min(0, { message: 'newValue debe ser ≥ 0' })
17
+ newValue!: number;
18
+
19
+ @Expose() @IsEmail({}, { message: 'email debe ser un correo válido' }) email!: string;
20
+
21
+ @Expose()
22
+ @IsString()
23
+ @IsNotEmpty()
24
+ @MinLength(10, { message: 'notes debe tener al menos 10 caracteres' })
25
+ notes!: string;
26
+ }
@@ -0,0 +1,22 @@
1
+ import { Expose } from "class-transformer";
2
+
3
+ /**
4
+ * Respuesta de actualización de declaredMonthlyIncome.
5
+ *
6
+ * `alarmas` incluye las 5 alarmas recalculadas más los valores custom (que no cambian).
7
+ */
8
+ export class SetDeclaredIncomeResponse {
9
+ @Expose() directoryId!: string;
10
+ @Expose() noop?: boolean;
11
+ @Expose() previousIncome?: number;
12
+ @Expose() newIncome?: number;
13
+ @Expose() alarmas?: {
14
+ highAmount: number;
15
+ monthlyIncrease: number;
16
+ monthlyLimit: number;
17
+ customHighAmount: number | null;
18
+ customMonthlyIncrease: number | null;
19
+ };
20
+ @Expose() observationId?: string;
21
+ @Expose() snapshotKey?: string;
22
+ }
@@ -0,0 +1,37 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsInt, IsNotEmpty, IsString, Max, Min, MinLength } from "class-validator";
3
+
4
+ /**
5
+ * Solicitud para cambiar el manualRiskLevel del perfil de riesgo.
6
+ *
7
+ * Aplica override manual del nivel de riesgo calculado automáticamente.
8
+ *
9
+ * Side effects (atómicos respecto al cambio principal):
10
+ * - Recalcula las 3 alarmas base (highAmount, monthlyIncrease, monthlyLimit) usando
11
+ * `effectiveLevel = newLevel > 0 ? newLevel : profile.riskLevel`.
12
+ * - Si `newLevel > previousLevel AND newLevel > 0`: crea alerta MANUAL_RISK_INCREASE
13
+ * con AlarmType.UNUSUAL.
14
+ *
15
+ * Mapeo de `newLevel`:
16
+ * - 0 = sin override (usa el riskLevel calculado)
17
+ * - 1 = Bajo
18
+ * - 2 = Medio
19
+ * - 3 = Alto
20
+ *
21
+ * Idempotencia: si `previousLevel === newLevel`, devuelve 200 con noop=true.
22
+ */
23
+ export class SetManualRiskLevelRequest {
24
+ @Expose()
25
+ @IsInt()
26
+ @Min(0, { message: 'newLevel debe ser 0, 1, 2 o 3' })
27
+ @Max(3, { message: 'newLevel debe ser 0, 1, 2 o 3' })
28
+ newLevel!: number;
29
+
30
+ @Expose() @IsEmail({}, { message: 'email debe ser un correo válido' }) email!: string;
31
+
32
+ @Expose()
33
+ @IsString()
34
+ @IsNotEmpty()
35
+ @MinLength(10, { message: 'notes debe tener al menos 10 caracteres' })
36
+ notes!: string;
37
+ }
@@ -0,0 +1,22 @@
1
+ import { Expose } from "class-transformer";
2
+
3
+ /**
4
+ * Respuesta del cambio de manualRiskLevel.
5
+ *
6
+ * Si fue noop (mismo valor previo), `noop: true` y el resto de campos no aplican.
7
+ * En caso de éxito real, incluye las alarmas recalculadas y el id de alerta auto-creada si subió el nivel.
8
+ */
9
+ export class SetManualRiskLevelResponse {
10
+ @Expose() directoryId!: string;
11
+ @Expose() noop?: boolean;
12
+ @Expose() previousLevel?: number;
13
+ @Expose() newLevel?: number;
14
+ @Expose() alarmasRecalculadas?: {
15
+ highAmount: number;
16
+ monthlyIncrease: number;
17
+ monthlyLimit: number;
18
+ };
19
+ @Expose() alertaCreada?: string;
20
+ @Expose() observationId?: string;
21
+ @Expose() snapshotKey?: string;
22
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Nombres válidos de alarmas custom configurables manualmente por el OC.
3
+ * Solo estas dos alarmas aceptan override de umbral; las 3 alarmas base
4
+ * (highAmount, monthlyIncrease, monthlyLimit) se recalculan automáticamente.
5
+ */
6
+ export enum CustomAlarmName {
7
+ CUSTOM_HIGH_AMOUNT = 'customHighAmount',
8
+ CUSTOM_MONTHLY_INCREASE = 'customMonthlyIncrease',
9
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Estados terminales válidos al dictaminar una alerta.
3
+ * Una alerta solo puede transicionar a estos estados desde NEW o PENDING.
4
+ */
5
+ export enum DictamenStatus {
6
+ CLOSE_JUSTIFIED = 'CLOSE_JUSTIFIED',
7
+ CLOSE_RULED = 'CLOSE_RULED',
8
+ CLOSED = 'CLOSED',
9
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Modo de modificación de notas al agregar texto a una alerta sin dictaminar.
3
+ * - REPLACE: sobrescribe el contenido de notes.
4
+ * - APPEND: concatena al final con un salto de línea.
5
+ */
6
+ export enum NotesMode {
7
+ REPLACE = 'replace',
8
+ APPEND = 'append',
9
+ }
@@ -22,3 +22,24 @@ export * from './enums/UserQuestionnaireStatusEnum';
22
22
  export * from './enums/UserQuestionnaireQuestionAnswerEnum';
23
23
  export * from './enums/UserQuestionnaireQuestionStatusEnum';
24
24
 
25
+ // Enums PLD privados
26
+ export * from './enums/CustomAlarmName';
27
+ export * from './enums/DictamenStatus';
28
+ export * from './enums/NotesMode';
29
+
30
+ // DTOs PLD privados — endpoints del PrivateController para Dashboard regulatorio
31
+ export * from './dtos/private/DictaminateAlertRequest';
32
+ export * from './dtos/private/DictaminateAlertResponse';
33
+ export * from './dtos/private/AppendAlertNoteRequest';
34
+ export * from './dtos/private/AppendAlertNoteResponse';
35
+ export * from './dtos/private/CreateBlockedListAlertRequest';
36
+ export * from './dtos/private/CreateBlockedListAlertResponse';
37
+ export * from './dtos/private/MarkAlertReportedRequest';
38
+ export * from './dtos/private/MarkAlertReportedResponse';
39
+ export * from './dtos/private/SetManualRiskLevelRequest';
40
+ export * from './dtos/private/SetManualRiskLevelResponse';
41
+ export * from './dtos/private/SetCustomAlarmRequest';
42
+ export * from './dtos/private/SetCustomAlarmResponse';
43
+ export * from './dtos/private/SetDeclaredIncomeRequest';
44
+ export * from './dtos/private/SetDeclaredIncomeResponse';
45
+