@fiado/type-kit 3.76.0 → 3.78.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 (106) hide show
  1. package/bin/complaint/dtos/ComplaintResponse.d.ts +23 -0
  2. package/bin/complaint/dtos/ComplaintResponse.js +77 -0
  3. package/bin/complaint/dtos/CreateComplaintRequest.d.ts +16 -0
  4. package/bin/complaint/dtos/CreateComplaintRequest.js +56 -0
  5. package/bin/complaint/index.d.ts +2 -0
  6. package/bin/complaint/index.js +18 -0
  7. package/bin/index.d.ts +1 -0
  8. package/bin/index.js +1 -0
  9. package/bin/platformRbac/dtos/TenantSecurityPolicyResponse.d.ts +10 -0
  10. package/bin/platformRbac/dtos/UpdateTenantSecurityPolicyRequest.d.ts +3 -0
  11. package/bin/{benefitCenter/dtos/InputSchemaOverrideRequest.js → platformRbac/dtos/UpdateTenantSecurityPolicyRequest.js} +10 -14
  12. package/bin/platformRbac/index.d.ts +3 -0
  13. package/bin/platformRbac/index.js +5 -0
  14. package/bin/platformRbac/mfa/MfaOptionsResponse.d.ts +6 -0
  15. package/bin/{credit/dtos/internal/CreditReversalRequest.js → platformRbac/mfa/MfaOptionsResponse.js} +13 -14
  16. package/package.json +1 -1
  17. package/src/complaint/dtos/ComplaintResponse.ts +26 -0
  18. package/src/complaint/dtos/CreateComplaintRequest.ts +43 -0
  19. package/src/complaint/index.ts +2 -0
  20. package/src/index.ts +1 -0
  21. package/src/platformRbac/dtos/TenantSecurityPolicyResponse.ts +10 -0
  22. package/src/platformRbac/dtos/UpdateTenantSecurityPolicyRequest.ts +11 -0
  23. package/src/platformRbac/index.ts +7 -0
  24. package/src/platformRbac/mfa/MfaOptionsResponse.ts +14 -0
  25. package/bin/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.d.ts +0 -22
  26. package/bin/benefitCenter/dtos/BackofficeLeafOverrideUpsertRequest.js +0 -91
  27. package/bin/benefitCenter/dtos/FieldOverrideRequest.d.ts +0 -19
  28. package/bin/benefitCenter/dtos/FieldOverrideRequest.js +0 -80
  29. package/bin/benefitCenter/dtos/InputSchemaOverrideRequest.d.ts +0 -9
  30. package/bin/benefitCenter/enums/LeafOverrideStatusEnum.d.ts +0 -10
  31. package/bin/benefitCenter/enums/LeafOverrideStatusEnum.js +0 -14
  32. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.d.ts +0 -7
  33. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.js +0 -36
  34. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.d.ts +0 -17
  35. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.js +0 -39
  36. package/bin/cognitoConnector/dtos/SignUpBackofficeRequest.d.ts +0 -13
  37. package/bin/cognitoConnector/dtos/SignUpBackofficeRequest.js +0 -71
  38. package/bin/comission-business/dtos/GenerateReportRequest.d.ts +0 -10
  39. package/bin/comission-business/dtos/GenerateReportResponse.d.ts +0 -6
  40. package/bin/comission-business/dtos/GenerateReportResponse.js +0 -2
  41. package/bin/comission-business/enums/PaymentStatusEnum.d.ts +0 -5
  42. package/bin/comission-business/enums/PaymentStatusEnum.js +0 -9
  43. package/bin/credit/dtos/CreditBannerStateResponse.d.ts +0 -10
  44. package/bin/credit/dtos/CreditBannerStateResponse.js +0 -6
  45. package/bin/credit/dtos/CreditDetailResponse.d.ts +0 -23
  46. package/bin/credit/dtos/CreditDetailResponse.js +0 -6
  47. package/bin/credit/dtos/CreditEligibilityResponse.d.ts +0 -9
  48. package/bin/credit/dtos/CreditEligibilityResponse.js +0 -6
  49. package/bin/credit/dtos/CreditMovementResponse.d.ts +0 -20
  50. package/bin/credit/dtos/CreditMovementResponse.js +0 -9
  51. package/bin/credit/dtos/CreditRequestCreate.d.ts +0 -4
  52. package/bin/credit/dtos/CreditRequestCreate.js +0 -26
  53. package/bin/credit/dtos/CreditRequestResponse.d.ts +0 -7
  54. package/bin/credit/dtos/CreditRequestResponse.js +0 -6
  55. package/bin/credit/dtos/CreditScheduleResponse.d.ts +0 -18
  56. package/bin/credit/dtos/CreditScheduleResponse.js +0 -9
  57. package/bin/credit/dtos/CreditStatementResponse.d.ts +0 -11
  58. package/bin/credit/dtos/CreditStatementResponse.js +0 -9
  59. package/bin/credit/dtos/EarlyPaymentRequest.d.ts +0 -7
  60. package/bin/credit/dtos/EarlyPaymentRequest.js +0 -37
  61. package/bin/credit/dtos/EarlyPaymentResponse.d.ts +0 -11
  62. package/bin/credit/dtos/EarlyPaymentResponse.js +0 -6
  63. package/bin/credit/dtos/internal/CreditBalanceRequest.d.ts +0 -3
  64. package/bin/credit/dtos/internal/CreditBalanceRequest.js +0 -21
  65. package/bin/credit/dtos/internal/CreditCollectionRequest.d.ts +0 -11
  66. package/bin/credit/dtos/internal/CreditCollectionRequest.js +0 -59
  67. package/bin/credit/dtos/internal/CreditCollectionResponse.d.ts +0 -12
  68. package/bin/credit/dtos/internal/CreditCollectionResponse.js +0 -6
  69. package/bin/credit/dtos/internal/CreditDisbursementRequest.d.ts +0 -7
  70. package/bin/credit/dtos/internal/CreditDisbursementRequest.js +0 -43
  71. package/bin/credit/dtos/internal/CreditDisbursementResponse.d.ts +0 -8
  72. package/bin/credit/dtos/internal/CreditDisbursementResponse.js +0 -6
  73. package/bin/credit/dtos/internal/CreditProfileRequest.d.ts +0 -3
  74. package/bin/credit/dtos/internal/CreditProfileRequest.js +0 -23
  75. package/bin/credit/dtos/internal/CreditReversalRequest.d.ts +0 -5
  76. package/bin/credit/dtos/internal/CreditReversalResponse.d.ts +0 -7
  77. package/bin/credit/dtos/internal/CreditReversalResponse.js +0 -6
  78. package/bin/credit/dtos/internal/CreditTransferLoancoRequest.d.ts +0 -8
  79. package/bin/credit/dtos/internal/CreditTransferLoancoRequest.js +0 -46
  80. package/bin/credit/dtos/internal/CreditTransferLoancoResponse.d.ts +0 -8
  81. package/bin/credit/dtos/internal/CreditTransferLoancoResponse.js +0 -6
  82. package/bin/credit/dtos/internal/DocumentSignRequest.d.ts +0 -3
  83. package/bin/credit/dtos/internal/DocumentSignRequest.js +0 -21
  84. package/bin/credit/dtos/internal/LienApplyRequest.d.ts +0 -7
  85. package/bin/credit/dtos/internal/LienApplyRequest.js +0 -45
  86. package/bin/credit/enums/CollectionFrequencyEnum.d.ts +0 -5
  87. package/bin/credit/enums/CollectionFrequencyEnum.js +0 -9
  88. package/bin/credit/enums/CreditOperationEnum.d.ts +0 -11
  89. package/bin/credit/enums/CreditOperationEnum.js +0 -15
  90. package/bin/credit/enums/CreditStatusEnum.d.ts +0 -12
  91. package/bin/credit/enums/CreditStatusEnum.js +0 -16
  92. package/bin/credit/enums/DelinquencyLevelEnum.d.ts +0 -9
  93. package/bin/credit/enums/DelinquencyLevelEnum.js +0 -13
  94. package/bin/credit/enums/DocumentTypeEnum.d.ts +0 -8
  95. package/bin/credit/enums/DocumentTypeEnum.js +0 -12
  96. package/bin/credit/enums/OfferStatusEnum.d.ts +0 -8
  97. package/bin/credit/enums/OfferStatusEnum.js +0 -12
  98. package/bin/credit/enums/PaymentTypeEnum.d.ts +0 -9
  99. package/bin/credit/enums/PaymentTypeEnum.js +0 -13
  100. package/bin/credit/enums/ReconciliationStatusEnum.d.ts +0 -6
  101. package/bin/credit/enums/ReconciliationStatusEnum.js +0 -10
  102. package/bin/credit/enums/TransferStatusEnum.d.ts +0 -8
  103. package/bin/credit/enums/TransferStatusEnum.js +0 -12
  104. package/docs/superpowers/plans/2026-05-22-http-client-inversify-v8.md +0 -243
  105. package/docs/superpowers/specs/2026-05-22-inversify-v8-migration-design.md +0 -191
  106. /package/bin/{comission-business/dtos/GenerateReportRequest.js → platformRbac/dtos/TenantSecurityPolicyResponse.js} +0 -0
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Respuesta de lectura de una denuncia (`GET /complaints/{complaintId}`).
3
+ * NO incluye `createdBy` (email real) — solo `createdByHash`. El Dashboard
4
+ * nunca conoce la identidad del denunciante.
5
+ */
6
+ export declare class ComplaintResponse {
7
+ id: string;
8
+ category: string;
9
+ title: string;
10
+ message: string;
11
+ status: string;
12
+ alertId?: string;
13
+ createdByHash?: string;
14
+ deadlineAt: string;
15
+ dictamenAt?: string | null;
16
+ dictamenBy?: string | null;
17
+ createdAt?: string;
18
+ }
19
+ /** Respuesta del create — ids para enlazar denuncia ↔ alerta. */
20
+ export declare class CreateComplaintResponse {
21
+ complaintId: string;
22
+ alertId: string;
23
+ }
@@ -0,0 +1,77 @@
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.CreateComplaintResponse = exports.ComplaintResponse = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ /**
15
+ * Respuesta de lectura de una denuncia (`GET /complaints/{complaintId}`).
16
+ * NO incluye `createdBy` (email real) — solo `createdByHash`. El Dashboard
17
+ * nunca conoce la identidad del denunciante.
18
+ */
19
+ class ComplaintResponse {
20
+ }
21
+ exports.ComplaintResponse = ComplaintResponse;
22
+ __decorate([
23
+ (0, class_transformer_1.Expose)(),
24
+ __metadata("design:type", String)
25
+ ], ComplaintResponse.prototype, "id", void 0);
26
+ __decorate([
27
+ (0, class_transformer_1.Expose)(),
28
+ __metadata("design:type", String)
29
+ ], ComplaintResponse.prototype, "category", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ __metadata("design:type", String)
33
+ ], ComplaintResponse.prototype, "title", void 0);
34
+ __decorate([
35
+ (0, class_transformer_1.Expose)(),
36
+ __metadata("design:type", String)
37
+ ], ComplaintResponse.prototype, "message", void 0);
38
+ __decorate([
39
+ (0, class_transformer_1.Expose)(),
40
+ __metadata("design:type", String)
41
+ ], ComplaintResponse.prototype, "status", void 0);
42
+ __decorate([
43
+ (0, class_transformer_1.Expose)(),
44
+ __metadata("design:type", String)
45
+ ], ComplaintResponse.prototype, "alertId", void 0);
46
+ __decorate([
47
+ (0, class_transformer_1.Expose)(),
48
+ __metadata("design:type", String)
49
+ ], ComplaintResponse.prototype, "createdByHash", void 0);
50
+ __decorate([
51
+ (0, class_transformer_1.Expose)(),
52
+ __metadata("design:type", String)
53
+ ], ComplaintResponse.prototype, "deadlineAt", void 0);
54
+ __decorate([
55
+ (0, class_transformer_1.Expose)(),
56
+ __metadata("design:type", String)
57
+ ], ComplaintResponse.prototype, "dictamenAt", void 0);
58
+ __decorate([
59
+ (0, class_transformer_1.Expose)(),
60
+ __metadata("design:type", String)
61
+ ], ComplaintResponse.prototype, "dictamenBy", void 0);
62
+ __decorate([
63
+ (0, class_transformer_1.Expose)(),
64
+ __metadata("design:type", String)
65
+ ], ComplaintResponse.prototype, "createdAt", void 0);
66
+ /** Respuesta del create — ids para enlazar denuncia ↔ alerta. */
67
+ class CreateComplaintResponse {
68
+ }
69
+ exports.CreateComplaintResponse = CreateComplaintResponse;
70
+ __decorate([
71
+ (0, class_transformer_1.Expose)(),
72
+ __metadata("design:type", String)
73
+ ], CreateComplaintResponse.prototype, "complaintId", void 0);
74
+ __decorate([
75
+ (0, class_transformer_1.Expose)(),
76
+ __metadata("design:type", String)
77
+ ], CreateComplaintResponse.prototype, "alertId", void 0);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Catálogo de categorías del buzón anónimo de denuncias (BO-19, Manual cap. 20.3).
3
+ */
4
+ export declare const COMPLAINT_CATEGORIES: readonly ["Sospecha sobre un cliente", "Sospecha sobre un empleado", "Conflicto de interés", "Incumplimiento del Manual", "Otro"];
5
+ export type ComplaintCategory = (typeof COMPLAINT_CATEGORIES)[number];
6
+ /**
7
+ * Request para crear una denuncia en el buzón anónimo (`complaint-mailbox-business`).
8
+ * El `userEmail` se persiste interno como `createdBy` y se hashea (`createdByHash`);
9
+ * el Dashboard nunca conoce la identidad real del denunciante.
10
+ */
11
+ export declare class CreateComplaintRequest {
12
+ category: string;
13
+ title: string;
14
+ message: string;
15
+ userEmail: string;
16
+ }
@@ -0,0 +1,56 @@
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.CreateComplaintRequest = exports.COMPLAINT_CATEGORIES = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /**
16
+ * Catálogo de categorías del buzón anónimo de denuncias (BO-19, Manual cap. 20.3).
17
+ */
18
+ exports.COMPLAINT_CATEGORIES = [
19
+ "Sospecha sobre un cliente",
20
+ "Sospecha sobre un empleado",
21
+ "Conflicto de interés",
22
+ "Incumplimiento del Manual",
23
+ "Otro",
24
+ ];
25
+ /**
26
+ * Request para crear una denuncia en el buzón anónimo (`complaint-mailbox-business`).
27
+ * El `userEmail` se persiste interno como `createdBy` y se hashea (`createdByHash`);
28
+ * el Dashboard nunca conoce la identidad real del denunciante.
29
+ */
30
+ class CreateComplaintRequest {
31
+ }
32
+ exports.CreateComplaintRequest = CreateComplaintRequest;
33
+ __decorate([
34
+ (0, class_transformer_1.Expose)(),
35
+ (0, class_validator_1.IsString)(),
36
+ (0, class_validator_1.IsIn)(exports.COMPLAINT_CATEGORIES, { message: "category inválida" }),
37
+ __metadata("design:type", String)
38
+ ], CreateComplaintRequest.prototype, "category", void 0);
39
+ __decorate([
40
+ (0, class_transformer_1.Expose)(),
41
+ (0, class_validator_1.IsString)(),
42
+ (0, class_validator_1.IsNotEmpty)(),
43
+ (0, class_validator_1.MaxLength)(200),
44
+ __metadata("design:type", String)
45
+ ], CreateComplaintRequest.prototype, "title", void 0);
46
+ __decorate([
47
+ (0, class_transformer_1.Expose)(),
48
+ (0, class_validator_1.IsString)(),
49
+ (0, class_validator_1.IsNotEmpty)(),
50
+ __metadata("design:type", String)
51
+ ], CreateComplaintRequest.prototype, "message", void 0);
52
+ __decorate([
53
+ (0, class_transformer_1.Expose)(),
54
+ (0, class_validator_1.IsEmail)({}, { message: "userEmail debe ser un correo válido" }),
55
+ __metadata("design:type", String)
56
+ ], CreateComplaintRequest.prototype, "userEmail", void 0);
@@ -0,0 +1,2 @@
1
+ export * from './dtos/CreateComplaintRequest';
2
+ export * from './dtos/ComplaintResponse';
@@ -0,0 +1,18 @@
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
+ __exportStar(require("./dtos/CreateComplaintRequest"), exports);
18
+ __exportStar(require("./dtos/ComplaintResponse"), exports);
package/bin/index.d.ts CHANGED
@@ -81,3 +81,4 @@ export * as Remittance from './remittance';
81
81
  export * as WalletFunding from './walletFunding';
82
82
  export * as TotpSecurity from './totpSecurity';
83
83
  export * from './messaging';
84
+ export * from './complaint';
package/bin/index.js CHANGED
@@ -126,3 +126,4 @@ exports.Remittance = __importStar(require("./remittance"));
126
126
  exports.WalletFunding = __importStar(require("./walletFunding"));
127
127
  exports.TotpSecurity = __importStar(require("./totpSecurity"));
128
128
  __exportStar(require("./messaging"), exports);
129
+ __exportStar(require("./complaint"), exports);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Output de la consulta/actualización de la security policy del tenant. Response plain sin
3
+ * validators (no validamos lo que mandamos al cliente — fiado-validation-and-dtos § 7).
4
+ *
5
+ * TD-RBAC-071: methodsAllowed usa el value-set 'EMAIL'|'TOTP' (string), distinto de
6
+ * MfaMethodEnum ('EMAIL_OTP'|'TOTP') a propósito. Ver TECH_DEBT.md del platform-rbac-business.
7
+ */
8
+ export interface TenantSecurityPolicyResponse {
9
+ methodsAllowed: ('EMAIL' | 'TOTP')[];
10
+ }
@@ -0,0 +1,3 @@
1
+ export declare class UpdateTenantSecurityPolicyRequest {
2
+ methodsAllowed: ('EMAIL' | 'TOTP')[];
3
+ }
@@ -9,21 +9,17 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.InputSchemaOverrideRequest = void 0;
13
- const class_validator_1 = require("class-validator");
12
+ exports.UpdateTenantSecurityPolicyRequest = void 0;
14
13
  const class_transformer_1 = require("class-transformer");
15
- const FieldOverrideRequest_1 = require("./FieldOverrideRequest");
16
- /**
17
- * Override del inputSchema completo. El array `fieldOverrides[]` lista overrides
18
- * parciales por `key`. La validación cruzada de que cada `key` exista en el
19
- * inputSchema del conector la hace el manager (no se puede expresar con class-validator).
20
- */
21
- class InputSchemaOverrideRequest {
14
+ const class_validator_1 = require("class-validator");
15
+ // TD-RBAC-071: methodsAllowed usa el value-set 'EMAIL'|'TOTP' (string), distinto de MfaMethodEnum
16
+ // ('EMAIL_OTP'|'TOTP') a propósito. Ver TECH_DEBT.md del platform-rbac-business.
17
+ class UpdateTenantSecurityPolicyRequest {
22
18
  }
23
- exports.InputSchemaOverrideRequest = InputSchemaOverrideRequest;
19
+ exports.UpdateTenantSecurityPolicyRequest = UpdateTenantSecurityPolicyRequest;
24
20
  __decorate([
25
- (0, class_validator_1.IsArray)(),
26
- (0, class_validator_1.ValidateNested)({ each: true }),
27
- (0, class_transformer_1.Type)(() => FieldOverrideRequest_1.FieldOverrideRequest),
21
+ (0, class_transformer_1.Expose)(),
22
+ (0, class_validator_1.ArrayNotEmpty)(),
23
+ (0, class_validator_1.IsIn)(['EMAIL', 'TOTP'], { each: true }),
28
24
  __metadata("design:type", Array)
29
- ], InputSchemaOverrideRequest.prototype, "fieldOverrides", void 0);
25
+ ], UpdateTenantSecurityPolicyRequest.prototype, "methodsAllowed", void 0);
@@ -20,9 +20,12 @@ export * from './mfa/EnrollTotpResponse';
20
20
  export * from './mfa/VerifyTotpEnrollmentRequest';
21
21
  export * from './mfa/ChangeMfaMethodRequest';
22
22
  export * from './mfa/MfaStatusResponse';
23
+ export * from './mfa/MfaOptionsResponse';
23
24
  export { AuthorizeDenyReason } from './enums/AuthorizeDenyReason';
24
25
  export * from './dtos/AuthorizeRequest';
25
26
  export * from './dtos/AuthorizeResponse';
26
27
  export * from './dtos/CreateTenantRequest';
27
28
  export type { CreateTenantResponse } from './dtos/CreateTenantResponse';
29
+ export * from './dtos/UpdateTenantSecurityPolicyRequest';
30
+ export type { TenantSecurityPolicyResponse } from './dtos/TenantSecurityPolicyResponse';
28
31
  export { TenantType, TENANT_TYPES, levelsOf, tableSuffixForLevel, scopeRankOrder } from './tenantTypes';
@@ -51,6 +51,7 @@ __exportStar(require("./mfa/EnrollTotpResponse"), exports);
51
51
  __exportStar(require("./mfa/VerifyTotpEnrollmentRequest"), exports);
52
52
  __exportStar(require("./mfa/ChangeMfaMethodRequest"), exports);
53
53
  __exportStar(require("./mfa/MfaStatusResponse"), exports);
54
+ __exportStar(require("./mfa/MfaOptionsResponse"), exports);
54
55
  // RBAC enforcement (capa de protección) — DTOs del POST /internal/authorize.
55
56
  var AuthorizeDenyReason_1 = require("./enums/AuthorizeDenyReason");
56
57
  Object.defineProperty(exports, "AuthorizeDenyReason", { enumerable: true, get: function () { return AuthorizeDenyReason_1.AuthorizeDenyReason; } });
@@ -59,6 +60,10 @@ __exportStar(require("./dtos/AuthorizeResponse"), exports);
59
60
  // F-11 — onboarding de tenant (POST backoffice createTenant). CreateTenantRequest lleva
60
61
  // decoradores class-validator → export de valor; CreateTenantResponse es interface → type-only.
61
62
  __exportStar(require("./dtos/CreateTenantRequest"), exports);
63
+ // MFA por tenant — methodsAllowed (value-set 'EMAIL'|'TOTP', TD-RBAC-071, DEC-095).
64
+ // UpdateTenantSecurityPolicyRequest lleva decoradores class-validator → export de valor;
65
+ // TenantSecurityPolicyResponse es interface plain → type-only.
66
+ __exportStar(require("./dtos/UpdateTenantSecurityPolicyRequest"), exports);
62
67
  // A1 — registro data-driven de tenant-types (niveles debajo de TENANT, por tipo).
63
68
  // Consumido por ScopeValidationService._rank vía scopeRankOrder() y por los seeds.
64
69
  // Accesible bajo el namespace PlatformRbac (el index raíz hace export * as PlatformRbac).
@@ -0,0 +1,6 @@
1
+ import { MfaMethodEnum } from '../enums/MfaMethodEnum';
2
+ export declare class MfaOptionsResponse {
3
+ allowedMethods: MfaMethodEnum[];
4
+ currentMethod: MfaMethodEnum;
5
+ mfaConfigured: boolean;
6
+ }
@@ -9,23 +9,22 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.CreditReversalRequest = void 0;
12
+ exports.MfaOptionsResponse = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
- class CreditReversalRequest {
14
+ const MfaMethodEnum_1 = require("../enums/MfaMethodEnum");
15
+ class MfaOptionsResponse {
15
16
  }
16
- exports.CreditReversalRequest = CreditReversalRequest;
17
+ exports.MfaOptionsResponse = MfaOptionsResponse;
17
18
  __decorate([
18
- (0, class_validator_1.IsString)(),
19
- (0, class_validator_1.IsNotEmpty)(),
20
- __metadata("design:type", String)
21
- ], CreditReversalRequest.prototype, "originalTransactionId", void 0);
19
+ (0, class_validator_1.IsArray)(),
20
+ (0, class_validator_1.IsEnum)(MfaMethodEnum_1.MfaMethodEnum, { each: true }),
21
+ __metadata("design:type", Array)
22
+ ], MfaOptionsResponse.prototype, "allowedMethods", void 0);
22
23
  __decorate([
23
- (0, class_validator_1.IsString)(),
24
- (0, class_validator_1.IsNotEmpty)(),
24
+ (0, class_validator_1.IsEnum)(MfaMethodEnum_1.MfaMethodEnum),
25
25
  __metadata("design:type", String)
26
- ], CreditReversalRequest.prototype, "creditId", void 0);
26
+ ], MfaOptionsResponse.prototype, "currentMethod", void 0);
27
27
  __decorate([
28
- (0, class_validator_1.IsString)(),
29
- (0, class_validator_1.IsNotEmpty)(),
30
- __metadata("design:type", String)
31
- ], CreditReversalRequest.prototype, "reason", void 0);
28
+ (0, class_validator_1.IsBoolean)(),
29
+ __metadata("design:type", Boolean)
30
+ ], MfaOptionsResponse.prototype, "mfaConfigured", void 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.76.0",
3
+ "version": "3.78.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,26 @@
1
+ import { Expose } from "class-transformer";
2
+
3
+ /**
4
+ * Respuesta de lectura de una denuncia (`GET /complaints/{complaintId}`).
5
+ * NO incluye `createdBy` (email real) — solo `createdByHash`. El Dashboard
6
+ * nunca conoce la identidad del denunciante.
7
+ */
8
+ export class ComplaintResponse {
9
+ @Expose() id!: string;
10
+ @Expose() category!: string;
11
+ @Expose() title!: string;
12
+ @Expose() message!: string;
13
+ @Expose() status!: string; // OPEN | CLOSE_JUSTIFIED | CLOSE_RULED
14
+ @Expose() alertId?: string;
15
+ @Expose() createdByHash?: string;
16
+ @Expose() deadlineAt!: string;
17
+ @Expose() dictamenAt?: string | null;
18
+ @Expose() dictamenBy?: string | null;
19
+ @Expose() createdAt?: string;
20
+ }
21
+
22
+ /** Respuesta del create — ids para enlazar denuncia ↔ alerta. */
23
+ export class CreateComplaintResponse {
24
+ @Expose() complaintId!: string;
25
+ @Expose() alertId!: string;
26
+ }
@@ -0,0 +1,43 @@
1
+ import { Expose } from "class-transformer";
2
+ import { IsEmail, IsIn, IsNotEmpty, IsString, MaxLength } from "class-validator";
3
+
4
+ /**
5
+ * Catálogo de categorías del buzón anónimo de denuncias (BO-19, Manual cap. 20.3).
6
+ */
7
+ export const COMPLAINT_CATEGORIES = [
8
+ "Sospecha sobre un cliente",
9
+ "Sospecha sobre un empleado",
10
+ "Conflicto de interés",
11
+ "Incumplimiento del Manual",
12
+ "Otro",
13
+ ] as const;
14
+
15
+ export type ComplaintCategory = (typeof COMPLAINT_CATEGORIES)[number];
16
+
17
+ /**
18
+ * Request para crear una denuncia en el buzón anónimo (`complaint-mailbox-business`).
19
+ * El `userEmail` se persiste interno como `createdBy` y se hashea (`createdByHash`);
20
+ * el Dashboard nunca conoce la identidad real del denunciante.
21
+ */
22
+ export class CreateComplaintRequest {
23
+
24
+ @Expose()
25
+ @IsString()
26
+ @IsIn(COMPLAINT_CATEGORIES as unknown as string[], { message: "category inválida" })
27
+ category!: string;
28
+
29
+ @Expose()
30
+ @IsString()
31
+ @IsNotEmpty()
32
+ @MaxLength(200)
33
+ title!: string;
34
+
35
+ @Expose()
36
+ @IsString()
37
+ @IsNotEmpty()
38
+ message!: string; // HTML del editor
39
+
40
+ @Expose()
41
+ @IsEmail({}, { message: "userEmail debe ser un correo válido" })
42
+ userEmail!: string;
43
+ }
@@ -0,0 +1,2 @@
1
+ export * from './dtos/CreateComplaintRequest';
2
+ export * from './dtos/ComplaintResponse';
package/src/index.ts CHANGED
@@ -86,3 +86,4 @@ export * as Remittance from './remittance';
86
86
  export * as WalletFunding from './walletFunding';
87
87
  export * as TotpSecurity from './totpSecurity';
88
88
  export * from './messaging';
89
+ export * from './complaint';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Output de la consulta/actualización de la security policy del tenant. Response plain sin
3
+ * validators (no validamos lo que mandamos al cliente — fiado-validation-and-dtos § 7).
4
+ *
5
+ * TD-RBAC-071: methodsAllowed usa el value-set 'EMAIL'|'TOTP' (string), distinto de
6
+ * MfaMethodEnum ('EMAIL_OTP'|'TOTP') a propósito. Ver TECH_DEBT.md del platform-rbac-business.
7
+ */
8
+ export interface TenantSecurityPolicyResponse {
9
+ methodsAllowed: ('EMAIL' | 'TOTP')[];
10
+ }
@@ -0,0 +1,11 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { ArrayNotEmpty, IsIn } from 'class-validator';
3
+
4
+ // TD-RBAC-071: methodsAllowed usa el value-set 'EMAIL'|'TOTP' (string), distinto de MfaMethodEnum
5
+ // ('EMAIL_OTP'|'TOTP') a propósito. Ver TECH_DEBT.md del platform-rbac-business.
6
+ export class UpdateTenantSecurityPolicyRequest {
7
+ @Expose()
8
+ @ArrayNotEmpty()
9
+ @IsIn(['EMAIL', 'TOTP'], { each: true })
10
+ methodsAllowed!: ('EMAIL' | 'TOTP')[];
11
+ }
@@ -40,6 +40,7 @@ export * from './mfa/EnrollTotpResponse';
40
40
  export * from './mfa/VerifyTotpEnrollmentRequest';
41
41
  export * from './mfa/ChangeMfaMethodRequest';
42
42
  export * from './mfa/MfaStatusResponse';
43
+ export * from './mfa/MfaOptionsResponse';
43
44
 
44
45
  // RBAC enforcement (capa de protección) — DTOs del POST /internal/authorize.
45
46
  export { AuthorizeDenyReason } from './enums/AuthorizeDenyReason';
@@ -51,6 +52,12 @@ export * from './dtos/AuthorizeResponse';
51
52
  export * from './dtos/CreateTenantRequest';
52
53
  export type { CreateTenantResponse } from './dtos/CreateTenantResponse';
53
54
 
55
+ // MFA por tenant — methodsAllowed (value-set 'EMAIL'|'TOTP', TD-RBAC-071, DEC-095).
56
+ // UpdateTenantSecurityPolicyRequest lleva decoradores class-validator → export de valor;
57
+ // TenantSecurityPolicyResponse es interface plain → type-only.
58
+ export * from './dtos/UpdateTenantSecurityPolicyRequest';
59
+ export type { TenantSecurityPolicyResponse } from './dtos/TenantSecurityPolicyResponse';
60
+
54
61
  // A1 — registro data-driven de tenant-types (niveles debajo de TENANT, por tipo).
55
62
  // Consumido por ScopeValidationService._rank vía scopeRankOrder() y por los seeds.
56
63
  // Accesible bajo el namespace PlatformRbac (el index raíz hace export * as PlatformRbac).
@@ -0,0 +1,14 @@
1
+ import { IsArray, IsBoolean, IsEnum } from 'class-validator';
2
+ import { MfaMethodEnum } from '../enums/MfaMethodEnum';
3
+
4
+ export class MfaOptionsResponse {
5
+ @IsArray()
6
+ @IsEnum(MfaMethodEnum, { each: true })
7
+ allowedMethods!: MfaMethodEnum[];
8
+
9
+ @IsEnum(MfaMethodEnum)
10
+ currentMethod!: MfaMethodEnum;
11
+
12
+ @IsBoolean()
13
+ mfaConfigured!: boolean;
14
+ }
@@ -1,22 +0,0 @@
1
- import { InputSchemaOverrideRequest } from "./InputSchemaOverrideRequest";
2
- /**
3
- * Body de PUT /backoffice/leaves/{leafId}. Upsert parcial:
4
- * - undefined → no se toca
5
- * - string/number/boolean seteado → pisa el valor previo del override
6
- * - null NO se acepta (para borrar un campo, usar DELETE /fields/{fieldName})
7
- *
8
- * Si todos los campos llegan undefined → 400 INVALID_PATCH_PAYLOAD.
9
- */
10
- export declare class BackofficeLeafOverrideUpsertRequest {
11
- serviceName?: string;
12
- logo?: string;
13
- description?: string;
14
- helpText?: string;
15
- serviceOrder?: number;
16
- subcategoryOrder?: number;
17
- enabled?: boolean;
18
- category?: string;
19
- subcategory?: string;
20
- requiresReferenceVerification?: boolean;
21
- inputSchema?: InputSchemaOverrideRequest;
22
- }
@@ -1,91 +0,0 @@
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.BackofficeLeafOverrideUpsertRequest = void 0;
13
- const class_validator_1 = require("class-validator");
14
- const class_transformer_1 = require("class-transformer");
15
- const InputSchemaOverrideRequest_1 = require("./InputSchemaOverrideRequest");
16
- /**
17
- * Body de PUT /backoffice/leaves/{leafId}. Upsert parcial:
18
- * - undefined → no se toca
19
- * - string/number/boolean seteado → pisa el valor previo del override
20
- * - null NO se acepta (para borrar un campo, usar DELETE /fields/{fieldName})
21
- *
22
- * Si todos los campos llegan undefined → 400 INVALID_PATCH_PAYLOAD.
23
- */
24
- class BackofficeLeafOverrideUpsertRequest {
25
- }
26
- exports.BackofficeLeafOverrideUpsertRequest = BackofficeLeafOverrideUpsertRequest;
27
- __decorate([
28
- (0, class_validator_1.IsOptional)(),
29
- (0, class_validator_1.IsString)(),
30
- (0, class_validator_1.MaxLength)(120),
31
- __metadata("design:type", String)
32
- ], BackofficeLeafOverrideUpsertRequest.prototype, "serviceName", void 0);
33
- __decorate([
34
- (0, class_validator_1.IsOptional)(),
35
- (0, class_validator_1.IsUrl)({ protocols: ["https"], require_protocol: true }),
36
- (0, class_validator_1.MaxLength)(500),
37
- __metadata("design:type", String)
38
- ], BackofficeLeafOverrideUpsertRequest.prototype, "logo", void 0);
39
- __decorate([
40
- (0, class_validator_1.IsOptional)(),
41
- (0, class_validator_1.IsString)(),
42
- (0, class_validator_1.MaxLength)(2000),
43
- __metadata("design:type", String)
44
- ], BackofficeLeafOverrideUpsertRequest.prototype, "description", void 0);
45
- __decorate([
46
- (0, class_validator_1.IsOptional)(),
47
- (0, class_validator_1.IsString)(),
48
- (0, class_validator_1.MaxLength)(1000),
49
- __metadata("design:type", String)
50
- ], BackofficeLeafOverrideUpsertRequest.prototype, "helpText", void 0);
51
- __decorate([
52
- (0, class_validator_1.IsOptional)(),
53
- (0, class_validator_1.IsInt)(),
54
- (0, class_validator_1.Min)(0),
55
- __metadata("design:type", Number)
56
- ], BackofficeLeafOverrideUpsertRequest.prototype, "serviceOrder", void 0);
57
- __decorate([
58
- (0, class_validator_1.IsOptional)(),
59
- (0, class_validator_1.IsInt)(),
60
- (0, class_validator_1.Min)(0),
61
- __metadata("design:type", Number)
62
- ], BackofficeLeafOverrideUpsertRequest.prototype, "subcategoryOrder", void 0);
63
- __decorate([
64
- (0, class_validator_1.IsOptional)(),
65
- (0, class_validator_1.IsBoolean)(),
66
- __metadata("design:type", Boolean)
67
- ], BackofficeLeafOverrideUpsertRequest.prototype, "enabled", void 0);
68
- __decorate([
69
- (0, class_validator_1.IsOptional)(),
70
- (0, class_validator_1.IsString)(),
71
- (0, class_validator_1.MaxLength)(60),
72
- (0, class_validator_1.Matches)(/^[A-Z][A-Z0-9_ ]*$/, { message: "category must be uppercase with underscores or spaces" }),
73
- __metadata("design:type", String)
74
- ], BackofficeLeafOverrideUpsertRequest.prototype, "category", void 0);
75
- __decorate([
76
- (0, class_validator_1.IsOptional)(),
77
- (0, class_validator_1.IsString)(),
78
- (0, class_validator_1.MaxLength)(60),
79
- __metadata("design:type", String)
80
- ], BackofficeLeafOverrideUpsertRequest.prototype, "subcategory", void 0);
81
- __decorate([
82
- (0, class_validator_1.IsOptional)(),
83
- (0, class_validator_1.IsBoolean)(),
84
- __metadata("design:type", Boolean)
85
- ], BackofficeLeafOverrideUpsertRequest.prototype, "requiresReferenceVerification", void 0);
86
- __decorate([
87
- (0, class_validator_1.IsOptional)(),
88
- (0, class_validator_1.ValidateNested)(),
89
- (0, class_transformer_1.Type)(() => InputSchemaOverrideRequest_1.InputSchemaOverrideRequest),
90
- __metadata("design:type", InputSchemaOverrideRequest_1.InputSchemaOverrideRequest)
91
- ], BackofficeLeafOverrideUpsertRequest.prototype, "inputSchema", void 0);
@@ -1,19 +0,0 @@
1
- import { InputFieldTypeEnum } from "../enums/InputFieldTypeEnum";
2
- import { InputValidation } from "./InputValidation";
3
- import { SelectOption } from "./SelectOption";
4
- /**
5
- * Override parcial de un field individual del `inputSchema` por `key`.
6
- * El admin no puede agregar ni quitar fields — solo editar los existentes.
7
- */
8
- export declare class FieldOverrideRequest {
9
- key: string;
10
- type?: InputFieldTypeEnum;
11
- label?: string;
12
- placeholder?: string;
13
- required?: boolean;
14
- helpImage?: string;
15
- showHelp?: boolean;
16
- options?: SelectOption[];
17
- dependsOn?: string;
18
- validation?: InputValidation;
19
- }