@fiado/type-kit 3.260.0 → 3.262.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 (104) hide show
  1. package/_test_/unit/platformRbac/PasswordPolicyInput.test.ts +58 -0
  2. package/_test_/unit/retailWizard/saleFinancier.test.ts +68 -0
  3. package/bin/benefitCenter/enums/BenefitFlowEnum.d.ts +11 -0
  4. package/bin/benefitCenter/enums/BenefitFlowEnum.js +15 -0
  5. package/bin/identity/dtos/PeopleResponse.d.ts +9 -0
  6. package/bin/identity/enums/SelfieSourceEnum.d.ts +10 -0
  7. package/bin/identity/enums/SelfieSourceEnum.js +14 -0
  8. package/bin/platformRbac/application/Application.d.ts +17 -0
  9. package/bin/platformRbac/dtos/CreateTenantRequest.d.ts +12 -0
  10. package/bin/platformRbac/dtos/CreateTenantRequest.js +8 -0
  11. package/bin/platformRbac/dtos/PasswordPolicyInput.d.ts +30 -0
  12. package/bin/platformRbac/dtos/PasswordPolicyInput.js +72 -0
  13. package/bin/platformRbac/index.d.ts +1 -0
  14. package/bin/platformRbac/index.js +3 -0
  15. package/bin/retailWizard/dtos/SaleException.d.ts +54 -0
  16. package/bin/retailWizard/dtos/SaleException.js +2 -0
  17. package/bin/retailWizard/dtos/SaleExceptionEvent.d.ts +18 -0
  18. package/bin/retailWizard/dtos/SaleExceptionEvent.js +2 -0
  19. package/bin/retailWizard/dtos/SaleExceptionPayload.d.ts +19 -0
  20. package/bin/retailWizard/dtos/SaleExceptionPayload.js +2 -0
  21. package/bin/retailWizard/dtos/SaleLogEntry.d.ts +29 -0
  22. package/bin/retailWizard/dtos/SaleLogEntry.js +2 -0
  23. package/bin/retailWizard/dtos/SalesReportDefinition.d.ts +20 -0
  24. package/bin/retailWizard/dtos/SalesReportDefinition.js +2 -0
  25. package/bin/retailWizard/dtos/SalesReportRun.d.ts +39 -0
  26. package/bin/retailWizard/dtos/SalesReportRun.js +2 -0
  27. package/bin/retailWizard/dtos/requests/BackofficeCancelSaleRequest.d.ts +26 -0
  28. package/bin/retailWizard/dtos/requests/BackofficeCancelSaleRequest.js +48 -0
  29. package/bin/retailWizard/dtos/requests/CreateSaleExceptionRequest.d.ts +28 -0
  30. package/bin/retailWizard/dtos/requests/CreateSaleExceptionRequest.js +96 -0
  31. package/bin/retailWizard/dtos/requests/ResolveSaleExceptionRequest.d.ts +15 -0
  32. package/bin/retailWizard/dtos/requests/ResolveSaleExceptionRequest.js +40 -0
  33. package/bin/retailWizard/dtos/requests/RunSalesReportRequest.d.ts +18 -0
  34. package/bin/retailWizard/dtos/requests/RunSalesReportRequest.js +45 -0
  35. package/bin/retailWizard/dtos/responses/BackofficeReportsResponse.d.ts +14 -0
  36. package/bin/retailWizard/dtos/responses/BackofficeReportsResponse.js +2 -0
  37. package/bin/retailWizard/dtos/responses/BackofficeSalesKpisResponse.d.ts +32 -0
  38. package/bin/retailWizard/dtos/responses/BackofficeSalesKpisResponse.js +2 -0
  39. package/bin/retailWizard/dtos/responses/BackofficeSalesStatsResponse.d.ts +26 -0
  40. package/bin/retailWizard/dtos/responses/BackofficeSalesStatsResponse.js +2 -0
  41. package/bin/retailWizard/enums/ReportFormatEnum.d.ts +5 -0
  42. package/bin/retailWizard/enums/ReportFormatEnum.js +9 -0
  43. package/bin/retailWizard/enums/ReportPeriodicityEnum.d.ts +9 -0
  44. package/bin/retailWizard/enums/ReportPeriodicityEnum.js +13 -0
  45. package/bin/retailWizard/enums/ReportRunStatusEnum.d.ts +18 -0
  46. package/bin/retailWizard/enums/ReportRunStatusEnum.js +22 -0
  47. package/bin/retailWizard/enums/SaleExceptionDecisionEnum.d.ts +10 -0
  48. package/bin/retailWizard/enums/SaleExceptionDecisionEnum.js +14 -0
  49. package/bin/retailWizard/enums/SaleExceptionEventKindEnum.d.ts +17 -0
  50. package/bin/retailWizard/enums/SaleExceptionEventKindEnum.js +21 -0
  51. package/bin/retailWizard/enums/SaleExceptionStatusEnum.d.ts +19 -0
  52. package/bin/retailWizard/enums/SaleExceptionStatusEnum.js +23 -0
  53. package/bin/retailWizard/enums/SaleExceptionTypeEnum.d.ts +19 -0
  54. package/bin/retailWizard/enums/SaleExceptionTypeEnum.js +23 -0
  55. package/bin/retailWizard/enums/SaleFinancierEnum.d.ts +18 -0
  56. package/bin/retailWizard/enums/SaleFinancierEnum.js +22 -0
  57. package/bin/retailWizard/enums/SalesReportIdEnum.d.ts +19 -0
  58. package/bin/retailWizard/enums/SalesReportIdEnum.js +23 -0
  59. package/bin/retailWizard/helpers/saleFinancier.d.ts +21 -0
  60. package/bin/retailWizard/helpers/saleFinancier.js +44 -0
  61. package/bin/retailWizard/index.d.ts +23 -0
  62. package/bin/retailWizard/index.js +29 -0
  63. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +6 -0
  64. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +31 -0
  65. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +7 -0
  66. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +6 -0
  67. package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +11 -0
  68. package/bin/walletFunding/dtos/CancelFundingRequest.js +33 -0
  69. package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +14 -0
  70. package/bin/walletFunding/dtos/CancelFundingResponse.js +12 -0
  71. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +3 -0
  72. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +21 -0
  73. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +7 -0
  74. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +6 -0
  75. package/package.json +1 -1
  76. package/src/identity/dtos/PeopleResponse.ts +9 -0
  77. package/src/platformRbac/application/Application.ts +17 -0
  78. package/src/platformRbac/dtos/CreateTenantRequest.ts +13 -0
  79. package/src/platformRbac/dtos/PasswordPolicyInput.ts +42 -0
  80. package/src/platformRbac/index.ts +3 -0
  81. package/src/retailWizard/dtos/SaleException.ts +55 -0
  82. package/src/retailWizard/dtos/SaleExceptionEvent.ts +19 -0
  83. package/src/retailWizard/dtos/SaleExceptionPayload.ts +19 -0
  84. package/src/retailWizard/dtos/SaleLogEntry.ts +30 -0
  85. package/src/retailWizard/dtos/SalesReportDefinition.ts +21 -0
  86. package/src/retailWizard/dtos/SalesReportRun.ts +40 -0
  87. package/src/retailWizard/dtos/requests/BackofficeCancelSaleRequest.ts +42 -0
  88. package/src/retailWizard/dtos/requests/CreateSaleExceptionRequest.ts +84 -0
  89. package/src/retailWizard/dtos/requests/ResolveSaleExceptionRequest.ts +25 -0
  90. package/src/retailWizard/dtos/requests/RunSalesReportRequest.ts +31 -0
  91. package/src/retailWizard/dtos/responses/BackofficeReportsResponse.ts +15 -0
  92. package/src/retailWizard/dtos/responses/BackofficeSalesKpisResponse.ts +34 -0
  93. package/src/retailWizard/dtos/responses/BackofficeSalesStatsResponse.ts +26 -0
  94. package/src/retailWizard/enums/ReportFormatEnum.ts +5 -0
  95. package/src/retailWizard/enums/ReportPeriodicityEnum.ts +9 -0
  96. package/src/retailWizard/enums/ReportRunStatusEnum.ts +18 -0
  97. package/src/retailWizard/enums/SaleExceptionDecisionEnum.ts +10 -0
  98. package/src/retailWizard/enums/SaleExceptionEventKindEnum.ts +17 -0
  99. package/src/retailWizard/enums/SaleExceptionStatusEnum.ts +19 -0
  100. package/src/retailWizard/enums/SaleExceptionTypeEnum.ts +19 -0
  101. package/src/retailWizard/enums/SaleFinancierEnum.ts +18 -0
  102. package/src/retailWizard/enums/SalesReportIdEnum.ts +19 -0
  103. package/src/retailWizard/helpers/saleFinancier.ts +48 -0
  104. package/src/retailWizard/index.ts +34 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Financiera de la venta, DERIVADA — no es un campo de `RetailSale_GT`. Sale de `type` +
3
+ * `externalProvider` (ver `helpers/saleFinancier`). Existe porque las pantallas del Admin VL agrupan
4
+ * por financiera y el front, este lambda y el motor de comisiones tienen que derivarla IGUAL.
5
+ * SureKeep Fase 3 — pista Retail.
6
+ *
7
+ * NONE - Venta de contado: no hay financiera.
8
+ * SUREKEEP - Crédito propio de la SOFOM.
9
+ * PAYJOY / CREDIYA / LESPAGO / INNOVA - Derivada a un proveedor externo.
10
+ */
11
+ export declare enum SaleFinancierEnum {
12
+ NONE = "NONE",
13
+ SUREKEEP = "SUREKEEP",
14
+ PAYJOY = "PAYJOY",
15
+ CREDIYA = "CREDIYA",
16
+ LESPAGO = "LESPAGO",
17
+ INNOVA = "INNOVA"
18
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SaleFinancierEnum = void 0;
4
+ /**
5
+ * Financiera de la venta, DERIVADA — no es un campo de `RetailSale_GT`. Sale de `type` +
6
+ * `externalProvider` (ver `helpers/saleFinancier`). Existe porque las pantallas del Admin VL agrupan
7
+ * por financiera y el front, este lambda y el motor de comisiones tienen que derivarla IGUAL.
8
+ * SureKeep Fase 3 — pista Retail.
9
+ *
10
+ * NONE - Venta de contado: no hay financiera.
11
+ * SUREKEEP - Crédito propio de la SOFOM.
12
+ * PAYJOY / CREDIYA / LESPAGO / INNOVA - Derivada a un proveedor externo.
13
+ */
14
+ var SaleFinancierEnum;
15
+ (function (SaleFinancierEnum) {
16
+ SaleFinancierEnum["NONE"] = "NONE";
17
+ SaleFinancierEnum["SUREKEEP"] = "SUREKEEP";
18
+ SaleFinancierEnum["PAYJOY"] = "PAYJOY";
19
+ SaleFinancierEnum["CREDIYA"] = "CREDIYA";
20
+ SaleFinancierEnum["LESPAGO"] = "LESPAGO";
21
+ SaleFinancierEnum["INNOVA"] = "INNOVA";
22
+ })(SaleFinancierEnum || (exports.SaleFinancierEnum = SaleFinancierEnum = {}));
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Catálogo de reportes de ventas del Admin VL (M6 §5.1). Los ids son los del mockup — el front los usa
3
+ * como llave de ruta y de traducción. SureKeep Fase 3 — pista Retail.
4
+ *
5
+ * RVL_01 - Ventas por período (diaria).
6
+ * RVL_02 - Ventas por negocio · tienda (semanal).
7
+ * RVL_03 - Ventas por vendedor (semanal).
8
+ * RVL_04 - Ventas por producto (mensual).
9
+ * RVL_05 - Ventas por financiera (mensual).
10
+ *
11
+ * ⚠️ FUERA de F3: `RVL-06` (cross-border, es M5) y `RVL-07` (conciliación, backend de cobranza).
12
+ */
13
+ export declare enum SalesReportIdEnum {
14
+ RVL_01 = "RVL-01",
15
+ RVL_02 = "RVL-02",
16
+ RVL_03 = "RVL-03",
17
+ RVL_04 = "RVL-04",
18
+ RVL_05 = "RVL-05"
19
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SalesReportIdEnum = void 0;
4
+ /**
5
+ * Catálogo de reportes de ventas del Admin VL (M6 §5.1). Los ids son los del mockup — el front los usa
6
+ * como llave de ruta y de traducción. SureKeep Fase 3 — pista Retail.
7
+ *
8
+ * RVL_01 - Ventas por período (diaria).
9
+ * RVL_02 - Ventas por negocio · tienda (semanal).
10
+ * RVL_03 - Ventas por vendedor (semanal).
11
+ * RVL_04 - Ventas por producto (mensual).
12
+ * RVL_05 - Ventas por financiera (mensual).
13
+ *
14
+ * ⚠️ FUERA de F3: `RVL-06` (cross-border, es M5) y `RVL-07` (conciliación, backend de cobranza).
15
+ */
16
+ var SalesReportIdEnum;
17
+ (function (SalesReportIdEnum) {
18
+ SalesReportIdEnum["RVL_01"] = "RVL-01";
19
+ SalesReportIdEnum["RVL_02"] = "RVL-02";
20
+ SalesReportIdEnum["RVL_03"] = "RVL-03";
21
+ SalesReportIdEnum["RVL_04"] = "RVL-04";
22
+ SalesReportIdEnum["RVL_05"] = "RVL-05";
23
+ })(SalesReportIdEnum || (exports.SalesReportIdEnum = SalesReportIdEnum = {}));
@@ -0,0 +1,21 @@
1
+ import { SaleTypeEnum } from '../enums/SaleTypeEnum';
2
+ import { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
3
+ import { SaleFinancierEnum } from '../enums/SaleFinancierEnum';
4
+ /** Lo mínimo de una venta para derivar su financiera. */
5
+ export interface SaleFinancierSource {
6
+ type: SaleTypeEnum;
7
+ externalProvider: ExternalProviderEnum | null;
8
+ }
9
+ /**
10
+ * Deriva la financiera de una venta. Vive acá —y no en el lambda— porque el Admin VL agrupa por
11
+ * financiera en tres pantallas distintas (Ventas, Reportes, Análisis) y el front tiene que llegar al
12
+ * MISMO número que el backend; dos implementaciones paralelas divergen al primer tipo nuevo.
13
+ *
14
+ * `EXTERNAL_REFERRAL` sin `externalProvider` cae en `NONE` en vez de reventar: hay ventas viejas sin
15
+ * el campo y un contador no es lugar para tirar una excepción.
16
+ */
17
+ export declare function financierOfSale(sale: SaleFinancierSource): SaleFinancierEnum;
18
+ /** ¿La financió SureKeep? (pill «SureKeep» de los contadores del Admin VL). */
19
+ export declare function isSureKeepFinanced(sale: SaleFinancierSource): boolean;
20
+ /** ¿La financió un tercero? (pill «Externas»). Contado NO cuenta: no tiene financiera. */
21
+ export declare function isExternallyFinanced(sale: SaleFinancierSource): boolean;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.financierOfSale = financierOfSale;
4
+ exports.isSureKeepFinanced = isSureKeepFinanced;
5
+ exports.isExternallyFinanced = isExternallyFinanced;
6
+ const SaleTypeEnum_1 = require("../enums/SaleTypeEnum");
7
+ const ExternalProviderEnum_1 = require("../enums/ExternalProviderEnum");
8
+ const SaleFinancierEnum_1 = require("../enums/SaleFinancierEnum");
9
+ /**
10
+ * Mapa explícito proveedor → financiera. Es un `Record` COMPLETO a propósito: agregar un proveedor a
11
+ * `ExternalProviderEnum` sin agregarlo acá es error de compilación, que es exactamente el recordatorio
12
+ * que queremos. Un cast desde el enum de proveedor se vería más corto y perdería esa garantía.
13
+ */
14
+ const FINANCIER_BY_PROVIDER = {
15
+ [ExternalProviderEnum_1.ExternalProviderEnum.PAYJOY]: SaleFinancierEnum_1.SaleFinancierEnum.PAYJOY,
16
+ [ExternalProviderEnum_1.ExternalProviderEnum.CREDIYA]: SaleFinancierEnum_1.SaleFinancierEnum.CREDIYA,
17
+ [ExternalProviderEnum_1.ExternalProviderEnum.LESPAGO]: SaleFinancierEnum_1.SaleFinancierEnum.LESPAGO,
18
+ [ExternalProviderEnum_1.ExternalProviderEnum.INNOVA]: SaleFinancierEnum_1.SaleFinancierEnum.INNOVA,
19
+ };
20
+ /**
21
+ * Deriva la financiera de una venta. Vive acá —y no en el lambda— porque el Admin VL agrupa por
22
+ * financiera en tres pantallas distintas (Ventas, Reportes, Análisis) y el front tiene que llegar al
23
+ * MISMO número que el backend; dos implementaciones paralelas divergen al primer tipo nuevo.
24
+ *
25
+ * `EXTERNAL_REFERRAL` sin `externalProvider` cae en `NONE` en vez de reventar: hay ventas viejas sin
26
+ * el campo y un contador no es lugar para tirar una excepción.
27
+ */
28
+ function financierOfSale(sale) {
29
+ if (sale.type === SaleTypeEnum_1.SaleTypeEnum.CREDIT)
30
+ return SaleFinancierEnum_1.SaleFinancierEnum.SUREKEEP;
31
+ if (sale.type === SaleTypeEnum_1.SaleTypeEnum.EXTERNAL_REFERRAL && sale.externalProvider) {
32
+ return FINANCIER_BY_PROVIDER[sale.externalProvider] ?? SaleFinancierEnum_1.SaleFinancierEnum.NONE;
33
+ }
34
+ return SaleFinancierEnum_1.SaleFinancierEnum.NONE;
35
+ }
36
+ /** ¿La financió SureKeep? (pill «SureKeep» de los contadores del Admin VL). */
37
+ function isSureKeepFinanced(sale) {
38
+ return financierOfSale(sale) === SaleFinancierEnum_1.SaleFinancierEnum.SUREKEEP;
39
+ }
40
+ /** ¿La financió un tercero? (pill «Externas»). Contado NO cuenta: no tiene financiera. */
41
+ function isExternallyFinanced(sale) {
42
+ const financier = financierOfSale(sale);
43
+ return financier !== SaleFinancierEnum_1.SaleFinancierEnum.SUREKEEP && financier !== SaleFinancierEnum_1.SaleFinancierEnum.NONE;
44
+ }
@@ -67,6 +67,29 @@ export * from './dtos/responses/ContractPreviewResponse';
67
67
  export * from './dtos/responses/SignatureSendOtpResponse';
68
68
  export * from './dtos/responses/SignatureSignResponse';
69
69
  export * from './dtos/responses/RegisterDeviceResponse';
70
+ export * from './enums/SaleFinancierEnum';
71
+ export * from './enums/SaleExceptionTypeEnum';
72
+ export * from './enums/SaleExceptionStatusEnum';
73
+ export * from './enums/SaleExceptionEventKindEnum';
74
+ export * from './enums/SaleExceptionDecisionEnum';
75
+ export * from './enums/SalesReportIdEnum';
76
+ export * from './enums/ReportPeriodicityEnum';
77
+ export * from './enums/ReportFormatEnum';
78
+ export * from './enums/ReportRunStatusEnum';
79
+ export * from './helpers/saleFinancier';
80
+ export * from './dtos/SaleLogEntry';
81
+ export * from './dtos/SaleExceptionPayload';
82
+ export * from './dtos/SaleExceptionEvent';
83
+ export * from './dtos/SaleException';
84
+ export * from './dtos/SalesReportDefinition';
85
+ export * from './dtos/SalesReportRun';
86
+ export * from './dtos/requests/CreateSaleExceptionRequest';
87
+ export * from './dtos/requests/ResolveSaleExceptionRequest';
88
+ export * from './dtos/requests/RunSalesReportRequest';
89
+ export * from './dtos/requests/BackofficeCancelSaleRequest';
90
+ export * from './dtos/responses/BackofficeSalesStatsResponse';
91
+ export * from './dtos/responses/BackofficeSalesKpisResponse';
92
+ export * from './dtos/responses/BackofficeReportsResponse';
70
93
  export * from './events/SaleCompletedV1';
71
94
  export * from './events/SaleCancelledV1';
72
95
  export * from './events/SessionExpiredV1';
@@ -89,6 +89,35 @@ __exportStar(require("./dtos/responses/ContractPreviewResponse"), exports);
89
89
  __exportStar(require("./dtos/responses/SignatureSendOtpResponse"), exports);
90
90
  __exportStar(require("./dtos/responses/SignatureSignResponse"), exports);
91
91
  __exportStar(require("./dtos/responses/RegisterDeviceResponse"), exports);
92
+ // ── F3 · Backoffice VentasLuga ────────────────────────────────────────────────
93
+ // Enums
94
+ __exportStar(require("./enums/SaleFinancierEnum"), exports);
95
+ __exportStar(require("./enums/SaleExceptionTypeEnum"), exports);
96
+ __exportStar(require("./enums/SaleExceptionStatusEnum"), exports);
97
+ __exportStar(require("./enums/SaleExceptionEventKindEnum"), exports);
98
+ __exportStar(require("./enums/SaleExceptionDecisionEnum"), exports);
99
+ __exportStar(require("./enums/SalesReportIdEnum"), exports);
100
+ __exportStar(require("./enums/ReportPeriodicityEnum"), exports);
101
+ __exportStar(require("./enums/ReportFormatEnum"), exports);
102
+ __exportStar(require("./enums/ReportRunStatusEnum"), exports);
103
+ // Helpers puros (compartidos con el front y el motor de comisiones)
104
+ __exportStar(require("./helpers/saleFinancier"), exports);
105
+ // DTOs
106
+ __exportStar(require("./dtos/SaleLogEntry"), exports);
107
+ __exportStar(require("./dtos/SaleExceptionPayload"), exports);
108
+ __exportStar(require("./dtos/SaleExceptionEvent"), exports);
109
+ __exportStar(require("./dtos/SaleException"), exports);
110
+ __exportStar(require("./dtos/SalesReportDefinition"), exports);
111
+ __exportStar(require("./dtos/SalesReportRun"), exports);
112
+ // Requests
113
+ __exportStar(require("./dtos/requests/CreateSaleExceptionRequest"), exports);
114
+ __exportStar(require("./dtos/requests/ResolveSaleExceptionRequest"), exports);
115
+ __exportStar(require("./dtos/requests/RunSalesReportRequest"), exports);
116
+ __exportStar(require("./dtos/requests/BackofficeCancelSaleRequest"), exports);
117
+ // Responses
118
+ __exportStar(require("./dtos/responses/BackofficeSalesStatsResponse"), exports);
119
+ __exportStar(require("./dtos/responses/BackofficeSalesKpisResponse"), exports);
120
+ __exportStar(require("./dtos/responses/BackofficeReportsResponse"), exports);
92
121
  // Contratos de eventos (PascalCase + sufijo V1)
93
122
  __exportStar(require("./events/SaleCompletedV1"), exports);
94
123
  __exportStar(require("./events/SaleCancelledV1"), exports);
@@ -0,0 +1,6 @@
1
+ export declare class CancelFundingReferenceRequest {
2
+ /** Referencia Passport (PK de EqualityFundingReference_GT). */
3
+ reference: string;
4
+ directoryId: string;
5
+ idempotencyKey: string;
6
+ }
@@ -0,0 +1,31 @@
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.CancelFundingReferenceRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ class CancelFundingReferenceRequest {
15
+ }
16
+ exports.CancelFundingReferenceRequest = CancelFundingReferenceRequest;
17
+ __decorate([
18
+ (0, class_validator_1.IsString)(),
19
+ (0, class_validator_1.MaxLength)(64),
20
+ __metadata("design:type", String)
21
+ ], CancelFundingReferenceRequest.prototype, "reference", void 0);
22
+ __decorate([
23
+ (0, class_validator_1.IsString)(),
24
+ (0, class_validator_1.MaxLength)(64),
25
+ __metadata("design:type", String)
26
+ ], CancelFundingReferenceRequest.prototype, "directoryId", void 0);
27
+ __decorate([
28
+ (0, class_validator_1.IsString)(),
29
+ (0, class_validator_1.MaxLength)(64),
30
+ __metadata("design:type", String)
31
+ ], CancelFundingReferenceRequest.prototype, "idempotencyKey", void 0);
@@ -0,0 +1,7 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
+ export declare class CancelFundingReferenceResponse {
4
+ reference: string;
5
+ status: BenefitPaymentStatusEnum;
6
+ errorCode?: WalletFundingErrorCodeEnum;
7
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CancelFundingReferenceResponse = void 0;
4
+ class CancelFundingReferenceResponse {
5
+ }
6
+ exports.CancelFundingReferenceResponse = CancelFundingReferenceResponse;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Request del cancel via Centro de Beneficios (spec 13 v2.0).
3
+ * `reference` viaja en el path, `directoryId` se resuelve del JWT.
4
+ * `providerModuleName` permite al marketplace rutear al publisher correcto
5
+ * sin tener que persistir el mapping (el wallet-app sabe el moduleName
6
+ * porque vino en la respuesta del authorize).
7
+ */
8
+ export declare class CancelFundingRequest {
9
+ idempotencyKey: string;
10
+ providerModuleName: string;
11
+ }
@@ -0,0 +1,33 @@
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.CancelFundingRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /**
15
+ * Request del cancel via Centro de Beneficios (spec 13 v2.0).
16
+ * `reference` viaja en el path, `directoryId` se resuelve del JWT.
17
+ * `providerModuleName` permite al marketplace rutear al publisher correcto
18
+ * sin tener que persistir el mapping (el wallet-app sabe el moduleName
19
+ * porque vino en la respuesta del authorize).
20
+ */
21
+ class CancelFundingRequest {
22
+ }
23
+ exports.CancelFundingRequest = CancelFundingRequest;
24
+ __decorate([
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_validator_1.MaxLength)(64),
27
+ __metadata("design:type", String)
28
+ ], CancelFundingRequest.prototype, "idempotencyKey", void 0);
29
+ __decorate([
30
+ (0, class_validator_1.IsString)(),
31
+ (0, class_validator_1.MaxLength)(128),
32
+ __metadata("design:type", String)
33
+ ], CancelFundingRequest.prototype, "providerModuleName", void 0);
@@ -0,0 +1,14 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
+ /**
4
+ * Response del cancel via Centro de Beneficios (spec 13 v2.0).
5
+ * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
6
+ * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
7
+ * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
8
+ */
9
+ export declare class CancelFundingResponse {
10
+ reference: string;
11
+ status: BenefitPaymentStatusEnum;
12
+ errorCode?: WalletFundingErrorCodeEnum;
13
+ message?: string;
14
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CancelFundingResponse = void 0;
4
+ /**
5
+ * Response del cancel via Centro de Beneficios (spec 13 v2.0).
6
+ * `status` reusa `BenefitPaymentStatusEnum` (APPROVED = cancel aceptado;
7
+ * REJECTED = no se pudo) para consistencia con `CancelFundingReferenceResponse`
8
+ * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
9
+ */
10
+ class CancelFundingResponse {
11
+ }
12
+ exports.CancelFundingResponse = CancelFundingResponse;
@@ -0,0 +1,3 @@
1
+ export declare class CancelWalletFundingRequest {
2
+ idempotencyKey: string;
3
+ }
@@ -0,0 +1,21 @@
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.CancelWalletFundingRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ class CancelWalletFundingRequest {
15
+ }
16
+ exports.CancelWalletFundingRequest = CancelWalletFundingRequest;
17
+ __decorate([
18
+ (0, class_validator_1.IsString)(),
19
+ (0, class_validator_1.MaxLength)(64),
20
+ __metadata("design:type", String)
21
+ ], CancelWalletFundingRequest.prototype, "idempotencyKey", void 0);
@@ -0,0 +1,7 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
+ export declare class CancelWalletFundingResponse {
4
+ status: BenefitPaymentStatusEnum;
5
+ errorCode?: WalletFundingErrorCodeEnum;
6
+ reference?: string;
7
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CancelWalletFundingResponse = void 0;
4
+ class CancelWalletFundingResponse {
5
+ }
6
+ exports.CancelWalletFundingResponse = CancelWalletFundingResponse;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.260.0",
3
+ "version": "3.262.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -105,7 +105,16 @@ export class PeopleResponse {
105
105
  externalReferenceId:string | null;
106
106
  SSN_ITINRequired:boolean | null;
107
107
  hasSSN_ITIN:boolean | null;
108
+ /**
109
+ * @deprecated Typo histórico (tres `p`). NADIE escribe este campo:
110
+ * fiado-identity-lambda persiste `geoApproved` (una `p`), que es lo que
111
+ * está en DynamoDB. Quien lea este campo obtiene siempre `undefined`.
112
+ * Usar `geoApproved`. Se conserva solo para no romper a los consumidores
113
+ * que todavía lo referencian.
114
+ */
108
115
  geoAppproved?:boolean | null;
116
+ /** Geolocalización aprobada. `null` = no evaluada; solo `false` bloquea. */
117
+ geoApproved?:boolean | null;
109
118
  cnbvManualApproval?: ManualApproval | null;
110
119
  minorManualApproval?: ManualApproval | null;
111
120
 
@@ -55,6 +55,23 @@ export interface ApplicationDefaults {
55
55
  * UsernameAttributes del pool): true ⇒ pool con ['email','phone_number']. Heredado al tenant.
56
56
  */
57
57
  allowSecondary?: boolean;
58
+ /**
59
+ * DEC-RBAC-111: política de contraseña que heredan los tenants creados desde esta aplicación.
60
+ *
61
+ * TOP-LEVEL (hermano de `autoregister`), NO dentro de `securityPolicy`: en la ficha del tenant
62
+ * ese sub-objeto lo reescribe entero el PUT de security-policy, y acá se mantiene la simetría.
63
+ *
64
+ * La herencia ocurre UNA sola vez, en el onboarding: cambiar este default después NO re-escribe
65
+ * la policy de los tenants ya creados, solo aplica a los futuros. Los 5 campos son opcionales;
66
+ * `tempValidityDays` no es per-tenant y por eso no está.
67
+ */
68
+ passwordPolicy?: {
69
+ minLength?: number;
70
+ requireUppercase?: boolean;
71
+ requireLowercase?: boolean;
72
+ requireNumber?: boolean;
73
+ requireSymbol?: boolean;
74
+ };
58
75
  }
59
76
 
60
77
  export interface SeedRole {
@@ -11,6 +11,7 @@ import {
11
11
  ValidateNested,
12
12
  } from 'class-validator';
13
13
  import { TokenValidationMode } from '../enums/TokenValidationMode';
14
+ import { PasswordPolicyInput } from './PasswordPolicyInput';
14
15
 
15
16
  /**
16
17
  * Punto inicial de la política 2FA elegido en el alta del tenant (DEC-RBAC-064). Para el CREATE
@@ -69,4 +70,16 @@ export class CreateTenantRequest {
69
70
  */
70
71
  @Expose() @IsOptional() @ValidateNested() @Type(() => CreateTenantSecurityPolicy)
71
72
  securityPolicy?: CreateTenantSecurityPolicy;
73
+ /**
74
+ * DEC-RBAC-111: política de contraseña del tenant. Opcional: ausente ⇒ hereda
75
+ * `app.defaults.passwordPolicy` y, si tampoco está, la policy global del lambda.
76
+ *
77
+ * TOP-LEVEL a propósito, NO dentro de `securityPolicy`: ese sub-objeto lo reescribe entero el
78
+ * PUT de security-policy desde una lectura cacheada, y se llevaría puesta la passwordPolicy.
79
+ *
80
+ * INMUTABLE después del alta: alimenta la política nativa del user pool de Cognito, y no existe
81
+ * un update de pool (ver TD-RBAC-138 del platform-rbac-business).
82
+ */
83
+ @Expose() @IsOptional() @ValidateNested() @Type(() => PasswordPolicyInput)
84
+ passwordPolicy?: PasswordPolicyInput;
72
85
  }
@@ -0,0 +1,42 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsBoolean, IsInt, IsOptional, Max, Min } from 'class-validator';
3
+
4
+ /**
5
+ * DEC-RBAC-111: política de complejidad de contraseña de un tenant.
6
+ *
7
+ * Los 5 campos son OPCIONALES: un campo ausente cae a la plantilla de la aplicación
8
+ * (`ApplicationDefaults.passwordPolicy`) y, de ahí, a la policy global del lambda.
9
+ *
10
+ * Se usa en dos lugares, siempre TOP-LEVEL (nunca dentro de `securityPolicy`):
11
+ * - `CreateTenantRequest.passwordPolicy` — override al crear el tenant.
12
+ * - `ApplicationDefaults.passwordPolicy` — default de la plantilla que el tenant hereda.
13
+ *
14
+ * `tempValidityDays` NO está acá a propósito: la validez de la contraseña temporal no es per-tenant
15
+ * (es el único campo de la policy que no afecta la fuerza de la contraseña). Sale siempre de la
16
+ * env var global del lambda.
17
+ *
18
+ * El rango 6..99 de `minLength` es el que admite `PasswordPolicy.MinimumLength` de Cognito. Se valida
19
+ * ACÁ para que un valor fuera de rango se rechace en el borde: si llegara a `CreateUserPool`, la
20
+ * `InvalidParameterException` caería con la ficha del tenant ya escrita en estado 'provisioning',
21
+ * o sea dentro de la rama de compensación de la saga de onboarding.
22
+ *
23
+ * OJO: acá NO se valida el PISO (que la policy no sea más débil que la global). Ese piso depende de
24
+ * env vars del lambda; declararlo también en el type-kit sería una segunda fuente de verdad, en otro
25
+ * repo, que driftea en cuanto alguien cambia la env var. Lo decide el lambda.
26
+ */
27
+ export class PasswordPolicyInput {
28
+ @Expose() @IsOptional() @IsInt() @Min(6) @Max(99)
29
+ minLength?: number;
30
+
31
+ @Expose() @IsOptional() @IsBoolean()
32
+ requireUppercase?: boolean;
33
+
34
+ @Expose() @IsOptional() @IsBoolean()
35
+ requireLowercase?: boolean;
36
+
37
+ @Expose() @IsOptional() @IsBoolean()
38
+ requireNumber?: boolean;
39
+
40
+ @Expose() @IsOptional() @IsBoolean()
41
+ requireSymbol?: boolean;
42
+ }
@@ -53,6 +53,9 @@ export * from './dtos/AuthorizeResponse';
53
53
  // decoradores class-validator → export de valor; CreateTenantResponse es interface → type-only.
54
54
  export * from './dtos/CreateTenantRequest';
55
55
  export type { CreateTenantResponse } from './dtos/CreateTenantResponse';
56
+ // DEC-RBAC-111: policy de contraseña per-tenant. Lleva decoradores class-validator → export de valor.
57
+ // La consumen CreateTenantRequest (override del alta) y ApplicationDefaults (default de la plantilla).
58
+ export * from './dtos/PasswordPolicyInput';
56
59
  // DEC-RBAC-058/059 (aditivo) — tenant pending-infra + verify-infra
57
60
  export type { TenantStatus } from './dtos/TenantStatus';
58
61
  export type { VerifyTenantInfraResponse } from './dtos/VerifyTenantInfraResponse';
@@ -0,0 +1,55 @@
1
+ import type { SaleExceptionTypeEnum } from '../enums/SaleExceptionTypeEnum';
2
+ import type { SaleExceptionStatusEnum } from '../enums/SaleExceptionStatusEnum';
3
+ import type { SaleExceptionEvent } from './SaleExceptionEvent';
4
+ import type { SaleExceptionPayload } from './SaleExceptionPayload';
5
+
6
+ /**
7
+ * Excepción de venta (`<T>RetailSaleException_GT`, pk `RETAILER#<retailerId>` ·
8
+ * sk `EXCEPTION#<createdAt>#<exceptionId>`, CERO GSIs). Bandeja del Admin VL, M6 §5.
9
+ * SureKeep Fase 3 — pista Retail.
10
+ *
11
+ * El `status` NO va en el sort key: el sk es inmutable en DynamoDB y el estado recorre
12
+ * `NEW → IN_REVIEW → APPROVED → APPLIED`. Meterlo ahí obligaría a borrar y reescribir el ítem en cada
13
+ * transición, perdiendo atomicidad y estabilidad del `exceptionId`. El filtro por estado se hace en
14
+ * memoria; son eventos raros.
15
+ *
16
+ * 🔴 **Hueco declarado (DEC-034):** `CAPTURE_FIX`, `BACKDATING` y `PRICE_OVERRIDE` mutan la venta
17
+ * después de cerrada, y el motor de comisiones solo escucha `SaleCompleted` / `SaleCancelled`. En el
18
+ * primer corte las excepciones **NO re-liquidan comisión**. Se ataca en F4 con un `SaleAmendedV1`.
19
+ */
20
+ export interface SaleException {
21
+ exceptionId: string;
22
+ retailerId: string;
23
+ storeId: string;
24
+ /** `null` en las excepciones generales, que no cuelgan de una venta puntual. */
25
+ saleId: string | null;
26
+ type: SaleExceptionTypeEnum;
27
+ status: SaleExceptionStatusEnum;
28
+ /** userId de quien la levantó (normalmente el vendedor). */
29
+ requestedBy: string;
30
+ /** Nombre para mostrar, congelado al alta. `null` si no se pudo resolver. */
31
+ requestedByName: string | null;
32
+ /** ISO-8601. */
33
+ requestedAt: string;
34
+ /** OBLIGATORIA. Es lo que hace auditable la excepción. */
35
+ justification: string;
36
+ /**
37
+ * Impacto económico en centavos, con signo: positivo si la excepción suma (devolución al cliente,
38
+ * reemplazo), negativo si resta (descuento autorizado). `null` cuando no aplica.
39
+ */
40
+ impactCents: number | null;
41
+ payload: SaleExceptionPayload;
42
+ /** userId del Admin VL que aprobó o rechazó. `null` mientras esté sin resolver. */
43
+ resolvedBy: string | null;
44
+ resolvedByName: string | null;
45
+ /** ISO-8601. `null` mientras esté sin resolver. */
46
+ resolvedAt: string | null;
47
+ /** Resolución OBLIGATORIA al aprobar o rechazar. `null` mientras esté sin resolver. */
48
+ resolution: string | null;
49
+ /** Hilo de solicitud, notas y resolución, en orden cronológico ascendente. */
50
+ timeline: SaleExceptionEvent[];
51
+ createdBy: string;
52
+ updatedBy: string;
53
+ createdAt: number;
54
+ updatedAt: number;
55
+ }
@@ -0,0 +1,19 @@
1
+ import type { SaleExceptionEventKindEnum } from '../enums/SaleExceptionEventKindEnum';
2
+
3
+ /**
4
+ * Una entrada del timeline de una excepción: el hilo de solicitud, notas y resolución que la pantalla
5
+ * de Excepciones dibuja bajo la ficha. SureKeep Fase 3 — pista Retail.
6
+ *
7
+ * Va EMBEBIDO en el ítem de `RetailSaleException_GT`, no en una tabla aparte: son pocos eventos por
8
+ * excepción, se leen siempre junto con la ficha y nunca se consultan por su cuenta.
9
+ */
10
+ export interface SaleExceptionEvent {
11
+ /** ISO-8601. */
12
+ at: string;
13
+ kind: SaleExceptionEventKindEnum;
14
+ /** userId del autor; `system` si lo escribió un proceso interno. */
15
+ authorId: string;
16
+ /** Nombre para mostrar, congelado al escribir el evento. `null` si no se pudo resolver. */
17
+ authorName: string | null;
18
+ body: string;
19
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Lo que la excepción PIDE cambiar en la venta. Todos los campos son opcionales porque cada tipo usa
3
+ * los suyos: `CAPTURE_FIX` manda `sku`, `PRICE_OVERRIDE` manda `amountCents`, `BACKDATING` manda
4
+ * `soldAt`, `EXTENDED_WARRANTY` manda `imei`. `LATE_CANCEL` no manda ninguno.
5
+ * SureKeep Fase 3 — pista Retail.
6
+ *
7
+ * Es un shape TIPADO y no un objeto libre a propósito: el payload cruza el borde HTTP y un
8
+ * `Record<string, unknown>` ahí deja al front sin contrato y al validador sin nada que validar.
9
+ */
10
+ export interface SaleExceptionPayload {
11
+ /** SKU correcto (CAPTURE_FIX). */
12
+ sku?: string;
13
+ /** Monto correcto en centavos (PRICE_OVERRIDE, CAPTURE_FIX). */
14
+ amountCents?: number;
15
+ /** Fecha real de la venta, ISO-8601 (BACKDATING). */
16
+ soldAt?: string;
17
+ /** IMEI del equipo de reemplazo (EXTENDED_WARRANTY). */
18
+ imei?: string;
19
+ }