@fiado/type-kit 3.183.0 → 3.185.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 (99) hide show
  1. package/_test_/unit/retailOrg/dtos/RetailUser.test.ts +30 -0
  2. package/_test_/unit/retailOrg/dtos/Retailer.test.ts +1 -1
  3. package/_test_/unit/retailOrg/dtos/Store.test.ts +2 -2
  4. package/_test_/unit/retailOrg/dtos/requests/retailUserRequests.test.ts +34 -0
  5. package/_test_/unit/retailOrg/dtos/requests/retailerRequests.test.ts +9 -9
  6. package/_test_/unit/retailOrg/dtos/requests/storeRequests.test.ts +2 -2
  7. package/_test_/unit/retailOrg/dtos/responses/RetailerHierarchyResponse.test.ts +1 -1
  8. package/_test_/unit/retailOrg/dtos/validation/validationDtos.test.ts +2 -2
  9. package/_test_/unit/retailOrg/enums/CollectorSeniorityEnum.test.ts +12 -0
  10. package/_test_/unit/retailOrg/enums/RetailerTypeEnum.test.ts +5 -5
  11. package/bin/benefitCenter/enums/BenefitFlowEnum.d.ts +11 -0
  12. package/bin/benefitCenter/enums/BenefitFlowEnum.js +15 -0
  13. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.d.ts +7 -0
  14. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.js +36 -0
  15. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.d.ts +20 -0
  16. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.js +11 -0
  17. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.d.ts +4 -0
  18. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.js +6 -0
  19. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.d.ts +17 -0
  20. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.js +39 -0
  21. package/bin/index.d.ts +1 -0
  22. package/bin/index.js +3 -1
  23. package/bin/loanConfig/dtos/Parameter.d.ts +23 -0
  24. package/bin/loanConfig/dtos/Parameter.js +93 -0
  25. package/bin/loanConfig/dtos/requests/BulkGetParametersRequest.d.ts +9 -0
  26. package/bin/loanConfig/dtos/requests/BulkGetParametersRequest.js +40 -0
  27. package/bin/loanConfig/dtos/requests/BulkUpdateParametersRequest.d.ts +11 -0
  28. package/bin/loanConfig/dtos/requests/BulkUpdateParametersRequest.js +52 -0
  29. package/bin/loanConfig/dtos/requests/UpdateParameterRequest.d.ts +8 -0
  30. package/bin/loanConfig/dtos/requests/UpdateParameterRequest.js +33 -0
  31. package/bin/loanConfig/dtos/responses/ParameterResponse.d.ts +28 -0
  32. package/bin/loanConfig/dtos/responses/ParameterResponse.js +2 -0
  33. package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +11 -0
  34. package/bin/loanConfig/enums/ModifiableByRoleEnum.js +15 -0
  35. package/bin/loanConfig/enums/ParameterTypeEnum.d.ts +20 -0
  36. package/bin/loanConfig/enums/ParameterTypeEnum.js +24 -0
  37. package/bin/loanConfig/enums/ParameterValueTypeEnum.d.ts +11 -0
  38. package/bin/loanConfig/enums/ParameterValueTypeEnum.js +15 -0
  39. package/bin/loanConfig/index.d.ts +8 -0
  40. package/bin/loanConfig/index.js +27 -0
  41. package/bin/places/dtos/CashInFeeDto.d.ts +17 -0
  42. package/bin/places/dtos/CashInFeeDto.js +12 -0
  43. package/bin/rbac/enums/PoolKind.d.ts +16 -0
  44. package/bin/rbac/enums/PoolKind.js +20 -0
  45. package/bin/rbac/index.d.ts +1 -0
  46. package/bin/rbac/index.js +17 -0
  47. package/bin/retailOrg/dtos/RetailUser.d.ts +7 -0
  48. package/bin/retailOrg/dtos/RetailUser.js +20 -0
  49. package/bin/retailOrg/dtos/Store.d.ts +6 -2
  50. package/bin/retailOrg/dtos/Store.js +1 -1
  51. package/bin/retailOrg/dtos/requests/CreateRetailUserRequest.d.ts +7 -0
  52. package/bin/retailOrg/dtos/requests/CreateRetailUserRequest.js +20 -0
  53. package/bin/retailOrg/dtos/requests/CreateStoreRequest.d.ts +6 -2
  54. package/bin/retailOrg/dtos/requests/CreateStoreRequest.js +1 -1
  55. package/bin/retailOrg/dtos/requests/CreateSubdistributorRequest.d.ts +3 -3
  56. package/bin/retailOrg/dtos/requests/CreateSubdistributorRequest.js +3 -3
  57. package/bin/retailOrg/dtos/requests/UpdateRetailUserRequest.d.ts +7 -0
  58. package/bin/retailOrg/dtos/requests/UpdateRetailUserRequest.js +20 -0
  59. package/bin/retailOrg/dtos/requests/UpdateStoreRequest.d.ts +2 -1
  60. package/bin/retailOrg/dtos/requests/UpdateStoreRequest.js +1 -1
  61. package/bin/retailOrg/enums/CollectorSeniorityEnum.d.ts +12 -0
  62. package/bin/retailOrg/enums/CollectorSeniorityEnum.js +16 -0
  63. package/bin/retailOrg/enums/RetailerTypeEnum.d.ts +6 -6
  64. package/bin/retailOrg/enums/RetailerTypeEnum.js +6 -6
  65. package/bin/retailOrg/index.d.ts +1 -0
  66. package/bin/retailOrg/index.js +1 -0
  67. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +5 -0
  68. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +31 -0
  69. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +7 -0
  70. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +6 -0
  71. package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +11 -0
  72. package/bin/walletFunding/dtos/CancelFundingRequest.js +33 -0
  73. package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +14 -0
  74. package/bin/walletFunding/dtos/CancelFundingResponse.js +12 -0
  75. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +3 -0
  76. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +21 -0
  77. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +7 -0
  78. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +6 -0
  79. package/package.json +1 -1
  80. package/src/index.ts +2 -0
  81. package/src/loanConfig/dtos/Parameter.ts +68 -0
  82. package/src/loanConfig/dtos/requests/BulkGetParametersRequest.ts +23 -0
  83. package/src/loanConfig/dtos/requests/BulkUpdateParametersRequest.ts +33 -0
  84. package/src/loanConfig/dtos/requests/UpdateParameterRequest.ts +18 -0
  85. package/src/loanConfig/dtos/responses/ParameterResponse.ts +28 -0
  86. package/src/loanConfig/enums/ModifiableByRoleEnum.ts +11 -0
  87. package/src/loanConfig/enums/ParameterTypeEnum.ts +20 -0
  88. package/src/loanConfig/enums/ParameterValueTypeEnum.ts +11 -0
  89. package/src/loanConfig/index.ts +14 -0
  90. package/src/retailOrg/dtos/RetailUser.ts +21 -1
  91. package/src/retailOrg/dtos/Store.ts +6 -2
  92. package/src/retailOrg/dtos/requests/CreateRetailUserRequest.ts +21 -1
  93. package/src/retailOrg/dtos/requests/CreateStoreRequest.ts +6 -2
  94. package/src/retailOrg/dtos/requests/CreateSubdistributorRequest.ts +4 -4
  95. package/src/retailOrg/dtos/requests/UpdateRetailUserRequest.ts +21 -1
  96. package/src/retailOrg/dtos/requests/UpdateStoreRequest.ts +2 -1
  97. package/src/retailOrg/enums/CollectorSeniorityEnum.ts +12 -0
  98. package/src/retailOrg/enums/RetailerTypeEnum.ts +6 -6
  99. package/src/retailOrg/index.ts +1 -0
@@ -4,6 +4,7 @@ import { validate } from 'class-validator';
4
4
  import { RetailUser } from '../../../../src/retailOrg/dtos/RetailUser';
5
5
  import { EmploymentTypeEnum } from '../../../../src/retailOrg/enums/EmploymentTypeEnum';
6
6
  import { RetailUserStatusEnum } from '../../../../src/retailOrg/enums/RetailUserStatusEnum';
7
+ import { CollectorSeniorityEnum } from '../../../../src/retailOrg/enums/CollectorSeniorityEnum';
7
8
 
8
9
  const valid = {
9
10
  retailUserId: 'ru_001',
@@ -33,6 +34,35 @@ describe('RetailUser', () => {
33
34
  expect(errors).toEqual([]);
34
35
  });
35
36
 
37
+ it('valida sin los campos de cobrador (phone/collectorSeniority/coverageStoreIds ausentes)', async () => {
38
+ const dto = plainToInstance(RetailUser, valid);
39
+ const errors = await validate(dto);
40
+ expect(errors).toEqual([]);
41
+ });
42
+
43
+ it('valida con los campos de cobrador presentes', async () => {
44
+ const dto = plainToInstance(RetailUser, {
45
+ ...valid,
46
+ phone: '+528112345678',
47
+ collectorSeniority: CollectorSeniorityEnum.SENIOR,
48
+ coverageStoreIds: ['store_001', 'store_002'],
49
+ });
50
+ const errors = await validate(dto);
51
+ expect(errors).toEqual([]);
52
+ });
53
+
54
+ it('falla si collectorSeniority está fuera del enum', async () => {
55
+ const dto = plainToInstance(RetailUser, { ...valid, collectorSeniority: 'MASTER' });
56
+ const errors = await validate(dto);
57
+ expect(errors.some(e => e.property === 'collectorSeniority')).toBe(true);
58
+ });
59
+
60
+ it('falla si coverageStoreIds no es un array de strings', async () => {
61
+ const dto = plainToInstance(RetailUser, { ...valid, coverageStoreIds: [1, 2] });
62
+ const errors = await validate(dto);
63
+ expect(errors.some(e => e.property === 'coverageStoreIds')).toBe(true);
64
+ });
65
+
36
66
  it('falla si employmentType está fuera del enum', async () => {
37
67
  const dto = plainToInstance(RetailUser, { ...valid, employmentType: 'INTERN' });
38
68
  const errors = await validate(dto);
@@ -8,7 +8,7 @@ import { RetailerStatusEnum } from '../../../../src/retailOrg/enums/RetailerStat
8
8
  const valid = {
9
9
  retailerId: 'ret_001',
10
10
  parentId: 'ROOT',
11
- type: RetailerTypeEnum.CADENA,
11
+ type: RetailerTypeEnum.CHAIN,
12
12
  name: 'Tiendas del Centro',
13
13
  legalName: 'Tiendas del Centro SA de CV',
14
14
  rfc: 'VEN123456ABC',
@@ -15,7 +15,7 @@ const valid = {
15
15
  phone: '+528112345678',
16
16
  managerRetailUserId: 'ru_010',
17
17
  schedule: 'L-V 9:00-18:00',
18
- dailyAvgSalesCents: 1500000,
18
+ dailyAvgCollectionsCount: 12,
19
19
  status: StoreStatusEnum.ACTIVE,
20
20
  createdAt: '2026-07-14T10:00:00.000Z',
21
21
  updatedAt: '2026-07-14T10:00:00.000Z',
@@ -36,7 +36,7 @@ describe('Store', () => {
36
36
  zoneId: null,
37
37
  managerRetailUserId: null,
38
38
  schedule: null,
39
- dailyAvgSalesCents: null,
39
+ dailyAvgCollectionsCount: null,
40
40
  });
41
41
  const errors = await validate(dto);
42
42
  expect(errors).toEqual([]);
@@ -7,6 +7,7 @@ import { ChangeRetailUserStatusRequest } from '../../../../../src/retailOrg/dtos
7
7
  import { TransferRetailUserRequest } from '../../../../../src/retailOrg/dtos/requests/TransferRetailUserRequest';
8
8
  import { EmploymentTypeEnum } from '../../../../../src/retailOrg/enums/EmploymentTypeEnum';
9
9
  import { RetailUserStatusEnum } from '../../../../../src/retailOrg/enums/RetailUserStatusEnum';
10
+ import { CollectorSeniorityEnum } from '../../../../../src/retailOrg/enums/CollectorSeniorityEnum';
10
11
 
11
12
  const validCreate = {
12
13
  cognitoSub: '5f7c8a90-1234-4abc-9def-0123456789ab',
@@ -29,6 +30,23 @@ describe('CreateRetailUserRequest', () => {
29
30
  expect(errors).toEqual([]);
30
31
  });
31
32
 
33
+ it('valida con los campos de cobrador presentes', async () => {
34
+ const dto = plainToInstance(CreateRetailUserRequest, {
35
+ ...validCreate,
36
+ phone: '+528112345678',
37
+ collectorSeniority: CollectorSeniorityEnum.JUNIOR,
38
+ coverageStoreIds: ['store_001', 'store_002'],
39
+ });
40
+ const errors = await validate(dto);
41
+ expect(errors).toEqual([]);
42
+ });
43
+
44
+ it('falla si collectorSeniority está fuera del enum', async () => {
45
+ const dto = plainToInstance(CreateRetailUserRequest, { ...validCreate, collectorSeniority: 'MASTER' });
46
+ const errors = await validate(dto);
47
+ expect(errors.some(e => e.property === 'collectorSeniority')).toBe(true);
48
+ });
49
+
32
50
  it('falla si employmentType está fuera del enum', async () => {
33
51
  const dto = plainToInstance(CreateRetailUserRequest, { ...validCreate, employmentType: 'INTERN' });
34
52
  const errors = await validate(dto);
@@ -55,6 +73,22 @@ describe('UpdateRetailUserRequest', () => {
55
73
  const errors = await validate(dto);
56
74
  expect(errors.some(e => e.property === 'employmentType')).toBe(true);
57
75
  });
76
+
77
+ it('valida con los campos de cobrador presentes', async () => {
78
+ const dto = plainToInstance(UpdateRetailUserRequest, {
79
+ phone: '+528112345678',
80
+ collectorSeniority: CollectorSeniorityEnum.SENIOR,
81
+ coverageStoreIds: ['store_003'],
82
+ });
83
+ const errors = await validate(dto);
84
+ expect(errors).toEqual([]);
85
+ });
86
+
87
+ it('falla si collectorSeniority enviado está fuera del enum', async () => {
88
+ const dto = plainToInstance(UpdateRetailUserRequest, { collectorSeniority: 'MASTER' });
89
+ const errors = await validate(dto);
90
+ expect(errors.some(e => e.property === 'collectorSeniority')).toBe(true);
91
+ });
58
92
  });
59
93
 
60
94
  describe('ChangeRetailUserStatusRequest', () => {
@@ -18,7 +18,7 @@ const address = {
18
18
  };
19
19
 
20
20
  const validCreate = {
21
- type: RetailerTypeEnum.CADENA,
21
+ type: RetailerTypeEnum.CHAIN,
22
22
  name: 'Tiendas del Centro',
23
23
  legalName: 'Tiendas del Centro SA de CV',
24
24
  rfc: 'VEN123456ABC',
@@ -91,7 +91,7 @@ describe('UpdateRetailerRequest', () => {
91
91
  it('NO permite editar rfc/type/status (no están en el shape)', () => {
92
92
  const dto = plainToInstance(
93
93
  UpdateRetailerRequest,
94
- { rfc: 'X', type: 'CADENA', status: 'ACTIVE' } as object,
94
+ { rfc: 'X', type: 'CHAIN', status: 'ACTIVE' } as object,
95
95
  { excludeExtraneousValues: true },
96
96
  );
97
97
  expect((dto as unknown as Record<string, unknown>).rfc).toBeUndefined();
@@ -115,28 +115,28 @@ describe('ChangeRetailerStatusRequest', () => {
115
115
  });
116
116
 
117
117
  describe('CreateSubdistributorRequest', () => {
118
- it('valida SUBDISTRIBUIDOR', async () => {
118
+ it('valida SUBDISTRIBUTOR', async () => {
119
119
  const dto = plainToInstance(CreateSubdistributorRequest, {
120
120
  ...validCreate,
121
- type: RetailerTypeEnum.SUBDISTRIBUIDOR,
121
+ type: RetailerTypeEnum.SUBDISTRIBUTOR,
122
122
  });
123
123
  const errors = await validate(dto);
124
124
  expect(errors).toEqual([]);
125
125
  });
126
126
 
127
- it('valida FRANQUICIA', async () => {
127
+ it('valida FRANCHISE', async () => {
128
128
  const dto = plainToInstance(CreateSubdistributorRequest, {
129
129
  ...validCreate,
130
- type: RetailerTypeEnum.FRANQUICIA,
130
+ type: RetailerTypeEnum.FRANCHISE,
131
131
  });
132
132
  const errors = await validate(dto);
133
133
  expect(errors).toEqual([]);
134
134
  });
135
135
 
136
- it('falla si type es CADENA (un subdistribuidor no puede ser cadena raíz)', async () => {
136
+ it('falla si type es CHAIN (un subdistribuidor no puede ser cadena raíz)', async () => {
137
137
  const dto = plainToInstance(CreateSubdistributorRequest, {
138
138
  ...validCreate,
139
- type: RetailerTypeEnum.CADENA,
139
+ type: RetailerTypeEnum.CHAIN,
140
140
  });
141
141
  const errors = await validate(dto);
142
142
  expect(errors.some(e => e.property === 'type')).toBe(true);
@@ -145,7 +145,7 @@ describe('CreateSubdistributorRequest', () => {
145
145
  it('NO expone parentId (viene del path param)', () => {
146
146
  const dto = plainToInstance(
147
147
  CreateSubdistributorRequest,
148
- { ...validCreate, type: RetailerTypeEnum.SUBDISTRIBUIDOR, parentId: 'ret_root' } as object,
148
+ { ...validCreate, type: RetailerTypeEnum.SUBDISTRIBUTOR, parentId: 'ret_root' } as object,
149
149
  { excludeExtraneousValues: true },
150
150
  );
151
151
  expect((dto as unknown as Record<string, unknown>).parentId).toBeUndefined();
@@ -24,7 +24,7 @@ const validCreate = {
24
24
  phone: '+528112345678',
25
25
  managerRetailUserId: 'ru_010',
26
26
  schedule: 'L-V 9:00-18:00',
27
- dailyAvgSalesCents: 1500000,
27
+ dailyAvgCollectionsCount: 12,
28
28
  };
29
29
 
30
30
  describe('CreateStoreRequest', () => {
@@ -40,7 +40,7 @@ describe('CreateStoreRequest', () => {
40
40
  zoneId: null,
41
41
  managerRetailUserId: null,
42
42
  schedule: null,
43
- dailyAvgSalesCents: null,
43
+ dailyAvgCollectionsCount: null,
44
44
  });
45
45
  const errors = await validate(dto);
46
46
  expect(errors).toEqual([]);
@@ -7,7 +7,7 @@ function retailer(id: string): Retailer {
7
7
  return {
8
8
  retailerId: id,
9
9
  parentId: 'ROOT',
10
- type: RetailerTypeEnum.CADENA,
10
+ type: RetailerTypeEnum.CHAIN,
11
11
  name: `Retailer ${id}`,
12
12
  legalName: `Retailer ${id} SA de CV`,
13
13
  rfc: 'VEN123456ABC',
@@ -12,12 +12,12 @@ describe('ValidationDtos (shapes mínimos de endpoints privados)', () => {
12
12
  const dto: RetailerValidationDto = {
13
13
  retailerId: 'ret_001',
14
14
  name: 'Tiendas del Centro',
15
- type: RetailerTypeEnum.CADENA,
15
+ type: RetailerTypeEnum.CHAIN,
16
16
  status: RetailerStatusEnum.ACTIVE,
17
17
  parentId: 'ROOT',
18
18
  };
19
19
  expect(dto.retailerId).toBe('ret_001');
20
- expect(dto.type).toBe(RetailerTypeEnum.CADENA);
20
+ expect(dto.type).toBe(RetailerTypeEnum.CHAIN);
21
21
  });
22
22
 
23
23
  it('StoreValidationDto acepta el shape mínimo (zoneId nullable)', () => {
@@ -0,0 +1,12 @@
1
+ import { CollectorSeniorityEnum } from '../../../../src/retailOrg/enums/CollectorSeniorityEnum';
2
+
3
+ describe('CollectorSeniorityEnum', () => {
4
+ it('contiene exactamente los niveles del contrato con value === key', () => {
5
+ expect(CollectorSeniorityEnum.JUNIOR).toBe('JUNIOR');
6
+ expect(CollectorSeniorityEnum.SENIOR).toBe('SENIOR');
7
+ });
8
+
9
+ it('no tiene valores de más', () => {
10
+ expect(Object.values(CollectorSeniorityEnum).sort()).toEqual(['JUNIOR', 'SENIOR']);
11
+ });
12
+ });
@@ -1,15 +1,15 @@
1
1
  import { RetailerTypeEnum } from '../../../../src/retailOrg/enums/RetailerTypeEnum';
2
2
 
3
3
  describe('RetailerTypeEnum', () => {
4
- it('contiene exactamente los tipos del contrato con value === key', () => {
5
- expect(RetailerTypeEnum.CADENA).toBe('CADENA');
6
- expect(RetailerTypeEnum.SUBDISTRIBUIDOR).toBe('SUBDISTRIBUIDOR');
7
- expect(RetailerTypeEnum.FRANQUICIA).toBe('FRANQUICIA');
4
+ it('contiene exactamente los tipos del contrato con value === key (en inglés)', () => {
5
+ expect(RetailerTypeEnum.CHAIN).toBe('CHAIN');
6
+ expect(RetailerTypeEnum.SUBDISTRIBUTOR).toBe('SUBDISTRIBUTOR');
7
+ expect(RetailerTypeEnum.FRANCHISE).toBe('FRANCHISE');
8
8
  });
9
9
 
10
10
  it('no tiene valores de más', () => {
11
11
  expect(Object.values(RetailerTypeEnum).sort()).toEqual(
12
- ['CADENA', 'FRANQUICIA', 'SUBDISTRIBUIDOR'],
12
+ ['CHAIN', 'FRANCHISE', 'SUBDISTRIBUTOR'],
13
13
  );
14
14
  });
15
15
  });
@@ -0,0 +1,11 @@
1
+ export declare enum BenefitFlowEnum {
2
+ TOPUPS = "TOPUPS",
3
+ BILL_PAYMENT = "BILL_PAYMENT",
4
+ CREDIT = "CREDIT",
5
+ INSURANCE = "INSURANCE",
6
+ DONATION = "DONATION",
7
+ PHARMACY = "PHARMACY",
8
+ REMITTANCE = "REMITTANCE",
9
+ /** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
10
+ WALLET_FUNDING = "WALLET_FUNDING"
11
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BenefitFlowEnum = void 0;
4
+ var BenefitFlowEnum;
5
+ (function (BenefitFlowEnum) {
6
+ BenefitFlowEnum["TOPUPS"] = "TOPUPS";
7
+ BenefitFlowEnum["BILL_PAYMENT"] = "BILL_PAYMENT";
8
+ BenefitFlowEnum["CREDIT"] = "CREDIT";
9
+ BenefitFlowEnum["INSURANCE"] = "INSURANCE";
10
+ BenefitFlowEnum["DONATION"] = "DONATION";
11
+ BenefitFlowEnum["PHARMACY"] = "PHARMACY";
12
+ BenefitFlowEnum["REMITTANCE"] = "REMITTANCE";
13
+ /** Fondeo de wallet PCF con efectivo via provider externo (Equality/Passport, OpenPay, …) — spec 13. */
14
+ BenefitFlowEnum["WALLET_FUNDING"] = "WALLET_FUNDING";
15
+ })(BenefitFlowEnum || (exports.BenefitFlowEnum = BenefitFlowEnum = {}));
@@ -0,0 +1,7 @@
1
+ declare const ALLOWED_MFA_TYPES: readonly ["SOFTWARE_TOKEN_MFA"];
2
+ export type AllowedMfaType = (typeof ALLOWED_MFA_TYPES)[number];
3
+ export declare class MfaPoolConfig {
4
+ requireMfa: boolean;
5
+ mfaTypes: AllowedMfaType[];
6
+ }
7
+ export {};
@@ -0,0 +1,36 @@
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.MfaPoolConfig = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const MfaTypesRequiresOne_1 = require("../validators/MfaTypesRequiresOne");
16
+ // EMAIL_OTP removido (3.41.0): el cognito-backoffice-connector no provisiona
17
+ // EmailMfaConfiguration a nivel pool (requiere infra SES que no está montada
18
+ // y la integración con messages-lambda aún no tiene diseño). Ver TD-020 +
19
+ // DEC-001 en cognito-backoffice-connector/docs/. Si se reintroduce, agregar
20
+ // 'EMAIL_OTP' a este array.
21
+ const ALLOWED_MFA_TYPES = ['SOFTWARE_TOKEN_MFA'];
22
+ class MfaPoolConfig {
23
+ }
24
+ exports.MfaPoolConfig = MfaPoolConfig;
25
+ __decorate([
26
+ (0, class_transformer_1.Expose)(),
27
+ (0, class_validator_1.IsBoolean)(),
28
+ __metadata("design:type", Boolean)
29
+ ], MfaPoolConfig.prototype, "requireMfa", void 0);
30
+ __decorate([
31
+ (0, class_transformer_1.Expose)(),
32
+ (0, class_validator_1.IsArray)(),
33
+ (0, class_validator_1.IsIn)(ALLOWED_MFA_TYPES, { each: true }),
34
+ (0, class_validator_1.Validate)(MfaTypesRequiresOne_1.MfaTypesRequiresOne),
35
+ __metadata("design:type", Array)
36
+ ], MfaPoolConfig.prototype, "mfaTypes", void 0);
@@ -0,0 +1,20 @@
1
+ import { PoolKind } from '../../rbac/enums/PoolKind';
2
+ /**
3
+ * Shape del `PoolConfigRow` expuesto al caller (BFF M18 / otros lambdas Fiado).
4
+ * Refleja la configuración de un Cognito User Pool registrado en la tabla
5
+ * `PoolConfigs_GT` del lambda `cognito-backoffice-connector`.
6
+ */
7
+ export declare class PoolConfigResponse {
8
+ userPoolId: string;
9
+ userPoolArn: string;
10
+ region: string;
11
+ poolKind: PoolKind;
12
+ displayName: string;
13
+ appClients: Record<string, {
14
+ clientId: string;
15
+ clientName: string;
16
+ }>;
17
+ status: 'active' | 'deprecated';
18
+ createdAt: number;
19
+ updatedAt: number;
20
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PoolConfigResponse = void 0;
4
+ /**
5
+ * Shape del `PoolConfigRow` expuesto al caller (BFF M18 / otros lambdas Fiado).
6
+ * Refleja la configuración de un Cognito User Pool registrado en la tabla
7
+ * `PoolConfigs_GT` del lambda `cognito-backoffice-connector`.
8
+ */
9
+ class PoolConfigResponse {
10
+ }
11
+ exports.PoolConfigResponse = PoolConfigResponse;
@@ -0,0 +1,4 @@
1
+ import { PoolConfigResponse } from './PoolConfigResponse';
2
+ export declare class PoolsListResponse {
3
+ pools: PoolConfigResponse[];
4
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PoolsListResponse = void 0;
4
+ class PoolsListResponse {
5
+ }
6
+ exports.PoolsListResponse = PoolsListResponse;
@@ -0,0 +1,17 @@
1
+ import { ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
2
+ /**
3
+ * Cross-field validator: si `requireMfa: true`, entonces `mfaTypes` debe tener
4
+ * al menos 1 elemento. Si `requireMfa: false`, `mfaTypes` puede ser vacío.
5
+ *
6
+ * Razón: cuando el pool nace con MFA habilitado, el connector llama
7
+ * `SetUserPoolMfaConfigCommand` con la lista de tipos del DTO. Si el array
8
+ * llega vacío con `requireMfa: true`, el SDK rechaza con InvalidParameterException
9
+ * y el pool queda en estado inconsistente (MfaConfiguration:'ON' sin tipos).
10
+ * Mejor rechazar en validación del DTO antes de tocar AWS.
11
+ *
12
+ * Ver pivote v1.4.1 TD-017 cerrado + spec doc §1 R3.
13
+ */
14
+ export declare class MfaTypesRequiresOne implements ValidatorConstraintInterface {
15
+ validate(mfaTypes: unknown, args: ValidationArguments): boolean;
16
+ defaultMessage(): string;
17
+ }
@@ -0,0 +1,39 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.MfaTypesRequiresOne = void 0;
10
+ const class_validator_1 = require("class-validator");
11
+ /**
12
+ * Cross-field validator: si `requireMfa: true`, entonces `mfaTypes` debe tener
13
+ * al menos 1 elemento. Si `requireMfa: false`, `mfaTypes` puede ser vacío.
14
+ *
15
+ * Razón: cuando el pool nace con MFA habilitado, el connector llama
16
+ * `SetUserPoolMfaConfigCommand` con la lista de tipos del DTO. Si el array
17
+ * llega vacío con `requireMfa: true`, el SDK rechaza con InvalidParameterException
18
+ * y el pool queda en estado inconsistente (MfaConfiguration:'ON' sin tipos).
19
+ * Mejor rechazar en validación del DTO antes de tocar AWS.
20
+ *
21
+ * Ver pivote v1.4.1 TD-017 cerrado + spec doc §1 R3.
22
+ */
23
+ let MfaTypesRequiresOne = class MfaTypesRequiresOne {
24
+ validate(mfaTypes, args) {
25
+ const obj = args.object;
26
+ if (obj.requireMfa === true) {
27
+ return Array.isArray(mfaTypes) && mfaTypes.length >= 1;
28
+ }
29
+ // requireMfa: false → cualquier mfaTypes pasa.
30
+ return true;
31
+ }
32
+ defaultMessage() {
33
+ return 'mfaTypes requiere al menos un tipo cuando requireMfa=true';
34
+ }
35
+ };
36
+ exports.MfaTypesRequiresOne = MfaTypesRequiresOne;
37
+ exports.MfaTypesRequiresOne = MfaTypesRequiresOne = __decorate([
38
+ (0, class_validator_1.ValidatorConstraint)({ name: 'MfaTypesRequiresOneWhenMfaRequired', async: false })
39
+ ], MfaTypesRequiresOne);
package/bin/index.d.ts CHANGED
@@ -89,5 +89,6 @@ export * as Modelias from './modelias';
89
89
  export * as NetworkConnector from './networkConnector';
90
90
  export * as EmailVerification from './emailVerification';
91
91
  export * as RetailOrg from './retailOrg';
92
+ export * as LoanConfig from './loanConfig';
92
93
  export * from './messaging';
93
94
  export * from './complaint';
package/bin/index.js CHANGED
@@ -37,7 +37,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.Device = exports.Observations = exports.IssuanceBusiness = exports.Blacklist = exports.CentralPayments = exports.Helpdesk = exports.FiadoApiResponse = exports.Auth = exports.LegalDocumentsBusiness = exports.Role = exports.STPAccount = exports.RiskProfile = exports.FraudPreventionEngine = exports.BBVARst = exports.Stp = exports.BenefitCenter = exports.BankAccount = exports.P2pContact = exports.CreditContract = exports.Contract = exports.ProductCatalog = exports.ContactInfo = exports.TransactionAnalytics = exports.Transaction = exports.TransactionProcessor = exports.GenericMessage = exports.EventBridgeMessage = exports.SessionActivity = exports.NotificationMessages = exports.ServicePayment = exports.Header = exports.Identity = exports.UserTags = exports.Group = exports.File = exports.ExchangeRate = exports.Directory = exports.Currency = exports.Country = exports.Card = exports.Authentication = exports.AppContent = exports.App = exports.Offices = exports.Places = exports.Address = exports.Beneficiary = exports.Activity = exports.Account = exports.Crypto = void 0;
40
- exports.RetailOrg = exports.EmailVerification = exports.NetworkConnector = exports.Modelias = exports.TotpSecurity = exports.Passport = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = void 0;
40
+ exports.LoanConfig = exports.RetailOrg = exports.EmailVerification = exports.NetworkConnector = exports.Modelias = exports.TotpSecurity = exports.Passport = exports.WalletFunding = exports.Remittance = exports.PlatformRbac = exports.CognitoBackofficeConnector = exports.TwilioConnector = exports.MessagesConnector = exports.Mdm = exports.MilestoneBusiness = exports.CirculoCredito = exports.CreditStatements = exports.Sentry = exports.AiEngine = exports.Funnel = exports.TeamsConnector = exports.PlatformErrorEvents = exports.CustomerFile = exports.CreditBackoffice = exports.CreditDashboard = exports.CreditEngine = exports.Credit = exports.ComissionBusiness = exports.ReferralBusiness = exports.ZendeskMessaging = exports.NotificationWS = exports.Event = exports.PayrollBusiness = exports.Cnbv = exports.DirectorySetting = exports.InvoiceCollector = exports.Collector = exports.Pricelist = exports.Company = exports.Services = exports.AccountIssuanceBusiness = exports.AppSelectionData = void 0;
41
41
  exports.Crypto = __importStar(require("./crypto"));
42
42
  exports.Account = __importStar(require("./account"));
43
43
  exports.Activity = __importStar(require("./activity"));
@@ -143,5 +143,7 @@ exports.EmailVerification = __importStar(require("./emailVerification"));
143
143
  // RetailOrg: DTOs/enums del lambda retail-org-business (SureKeep Fase 1 — pista Retail).
144
144
  // Dominio de retailers → zonas → tiendas → usuarios retail.
145
145
  exports.RetailOrg = __importStar(require("./retailOrg"));
146
+ // LoanConfig: DTOs/enums del lambda loan-config-business (comp 09 — parámetros operativos del SOFOM).
147
+ exports.LoanConfig = __importStar(require("./loanConfig"));
146
148
  __exportStar(require("./messaging"), exports);
147
149
  __exportStar(require("./complaint"), exports);
@@ -0,0 +1,23 @@
1
+ import { ModifiableByRoleEnum } from '../enums/ModifiableByRoleEnum';
2
+ import { ParameterTypeEnum } from '../enums/ParameterTypeEnum';
3
+ import { ParameterValueTypeEnum } from '../enums/ParameterValueTypeEnum';
4
+ /**
5
+ * Parameter — parámetro operativo clave/valor del SOFOM (M6 §8 + §5).
6
+ * Identidad lógica `parameterId = ${paramType}#${key}` (D1). `value` null → aplica `defaultValue`.
7
+ */
8
+ export declare class Parameter {
9
+ parameterId: string;
10
+ paramType: ParameterTypeEnum;
11
+ key: string;
12
+ /** Siempre string; `null` cuando el valor está pendiente de definición por negocio. */
13
+ value: string | null;
14
+ valueType: ParameterValueTypeEnum;
15
+ defaultValue: string;
16
+ description: string;
17
+ modifiableBy: ModifiableByRoleEnum;
18
+ lastModifiedByUserId: string;
19
+ createdBy: string;
20
+ updatedBy: string;
21
+ createdAt: string;
22
+ updatedAt: string;
23
+ }
@@ -0,0 +1,93 @@
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.Parameter = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ const regex_1 = require("../../helpers/constans/regex");
16
+ const ModifiableByRoleEnum_1 = require("../enums/ModifiableByRoleEnum");
17
+ const ParameterTypeEnum_1 = require("../enums/ParameterTypeEnum");
18
+ const ParameterValueTypeEnum_1 = require("../enums/ParameterValueTypeEnum");
19
+ /**
20
+ * Parameter — parámetro operativo clave/valor del SOFOM (M6 §8 + §5).
21
+ * Identidad lógica `parameterId = ${paramType}#${key}` (D1). `value` null → aplica `defaultValue`.
22
+ */
23
+ class Parameter {
24
+ }
25
+ exports.Parameter = Parameter;
26
+ __decorate([
27
+ (0, class_transformer_1.Expose)(),
28
+ (0, class_validator_1.IsString)(),
29
+ __metadata("design:type", String)
30
+ ], Parameter.prototype, "parameterId", void 0);
31
+ __decorate([
32
+ (0, class_transformer_1.Expose)(),
33
+ (0, class_validator_1.IsEnum)(ParameterTypeEnum_1.ParameterTypeEnum),
34
+ __metadata("design:type", String)
35
+ ], Parameter.prototype, "paramType", void 0);
36
+ __decorate([
37
+ (0, class_transformer_1.Expose)(),
38
+ (0, class_validator_1.IsString)(),
39
+ __metadata("design:type", String)
40
+ ], Parameter.prototype, "key", void 0);
41
+ __decorate([
42
+ (0, class_transformer_1.Expose)(),
43
+ (0, class_validator_1.IsOptional)(),
44
+ (0, class_validator_1.IsString)(),
45
+ __metadata("design:type", String)
46
+ ], Parameter.prototype, "value", void 0);
47
+ __decorate([
48
+ (0, class_transformer_1.Expose)(),
49
+ (0, class_validator_1.IsEnum)(ParameterValueTypeEnum_1.ParameterValueTypeEnum),
50
+ __metadata("design:type", String)
51
+ ], Parameter.prototype, "valueType", void 0);
52
+ __decorate([
53
+ (0, class_transformer_1.Expose)(),
54
+ (0, class_validator_1.IsString)(),
55
+ __metadata("design:type", String)
56
+ ], Parameter.prototype, "defaultValue", void 0);
57
+ __decorate([
58
+ (0, class_transformer_1.Expose)(),
59
+ (0, class_validator_1.IsString)(),
60
+ __metadata("design:type", String)
61
+ ], Parameter.prototype, "description", void 0);
62
+ __decorate([
63
+ (0, class_transformer_1.Expose)(),
64
+ (0, class_validator_1.IsEnum)(ModifiableByRoleEnum_1.ModifiableByRoleEnum),
65
+ __metadata("design:type", String)
66
+ ], Parameter.prototype, "modifiableBy", void 0);
67
+ __decorate([
68
+ (0, class_transformer_1.Expose)(),
69
+ (0, class_validator_1.IsString)(),
70
+ __metadata("design:type", String)
71
+ ], Parameter.prototype, "lastModifiedByUserId", void 0);
72
+ __decorate([
73
+ (0, class_transformer_1.Expose)(),
74
+ (0, class_validator_1.IsString)(),
75
+ __metadata("design:type", String)
76
+ ], Parameter.prototype, "createdBy", void 0);
77
+ __decorate([
78
+ (0, class_transformer_1.Expose)(),
79
+ (0, class_validator_1.IsString)(),
80
+ __metadata("design:type", String)
81
+ ], Parameter.prototype, "updatedBy", void 0);
82
+ __decorate([
83
+ (0, class_transformer_1.Expose)(),
84
+ (0, class_validator_1.IsString)(),
85
+ (0, class_validator_1.Matches)(regex_1.regexIso8601, { message: 'createdAt debe ser una fecha ISO 8601' }),
86
+ __metadata("design:type", String)
87
+ ], Parameter.prototype, "createdAt", void 0);
88
+ __decorate([
89
+ (0, class_transformer_1.Expose)(),
90
+ (0, class_validator_1.IsString)(),
91
+ (0, class_validator_1.Matches)(regex_1.regexIso8601, { message: 'updatedAt debe ser una fecha ISO 8601' }),
92
+ __metadata("design:type", String)
93
+ ], Parameter.prototype, "updatedAt", void 0);
@@ -0,0 +1,9 @@
1
+ import { ParameterTypeEnum } from '../../enums/ParameterTypeEnum';
2
+ export declare class ParameterKeyRef {
3
+ paramType: ParameterTypeEnum;
4
+ key: string;
5
+ }
6
+ /** Body de POST /private/parameters/bulk-get — hot path para consumers (cachean 5 min). */
7
+ export declare class BulkGetParametersRequest {
8
+ items: ParameterKeyRef[];
9
+ }