@fiado/type-kit 3.544.0 → 3.546.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 (70) hide show
  1. package/_test_/unit/loanCredit/devicePostureBackfillDtos.test.ts +39 -0
  2. package/_test_/unit/loanCredit/reconcileModeDtos.test.ts +48 -0
  3. package/_test_/unit/loanRetailAudit/loanRetailAuditContracts.test.ts +139 -0
  4. package/_test_/unit/mdm/dtos/deviceStatusLockSchedule.test.ts +46 -0
  5. package/bin/index.d.ts +1 -0
  6. package/bin/index.js +4 -1
  7. package/bin/loanCredit/dtos/requests/RunDevicePostureBackfillRequest.d.ts +9 -0
  8. package/bin/loanCredit/dtos/requests/RunDevicePostureBackfillRequest.js +42 -0
  9. package/bin/loanCredit/dtos/requests/UpdateReconcileModeRequest.d.ts +9 -0
  10. package/bin/loanCredit/dtos/requests/UpdateReconcileModeRequest.js +42 -0
  11. package/bin/loanCredit/dtos/responses/DevicePostureBackfillResult.d.ts +12 -0
  12. package/bin/loanCredit/dtos/responses/DevicePostureBackfillResult.js +2 -0
  13. package/bin/loanCredit/dtos/responses/ReconcileModeView.d.ts +11 -0
  14. package/bin/loanCredit/dtos/responses/ReconcileModeView.js +2 -0
  15. package/bin/loanCredit/enums/ReconcileModeEnum.d.ts +5 -0
  16. package/bin/loanCredit/enums/ReconcileModeEnum.js +9 -0
  17. package/bin/loanCredit/index.d.ts +5 -0
  18. package/bin/loanCredit/index.js +6 -0
  19. package/bin/loanRetailAudit/constants/auditTrailEntityTypes.d.ts +6 -0
  20. package/bin/loanRetailAudit/constants/auditTrailEntityTypes.js +10 -0
  21. package/bin/loanRetailAudit/dtos/AuditTrailChange.d.ts +8 -0
  22. package/bin/loanRetailAudit/dtos/AuditTrailChange.js +36 -0
  23. package/bin/loanRetailAudit/dtos/AuditTrailContextEntry.d.ts +5 -0
  24. package/bin/loanRetailAudit/dtos/AuditTrailContextEntry.js +29 -0
  25. package/bin/loanRetailAudit/dtos/requests/CreatePiiAccessLogRequest.d.ts +19 -0
  26. package/bin/loanRetailAudit/dtos/requests/CreatePiiAccessLogRequest.js +85 -0
  27. package/bin/loanRetailAudit/dtos/requests/ListAuditTrailQuery.d.ts +11 -0
  28. package/bin/loanRetailAudit/dtos/requests/ListAuditTrailQuery.js +52 -0
  29. package/bin/loanRetailAudit/dtos/responses/CreatePiiAccessLogResponse.d.ts +4 -0
  30. package/bin/loanRetailAudit/dtos/responses/CreatePiiAccessLogResponse.js +2 -0
  31. package/bin/loanRetailAudit/dtos/responses/ListAuditTrailResponse.d.ts +31 -0
  32. package/bin/loanRetailAudit/dtos/responses/ListAuditTrailResponse.js +2 -0
  33. package/bin/loanRetailAudit/enums/AuditTrailActionEnum.d.ts +39 -0
  34. package/bin/loanRetailAudit/enums/AuditTrailActionEnum.js +43 -0
  35. package/bin/loanRetailAudit/enums/LoanAuditEntityTypeEnum.d.ts +12 -0
  36. package/bin/loanRetailAudit/enums/LoanAuditEntityTypeEnum.js +16 -0
  37. package/bin/loanRetailAudit/enums/PiiAccessActionEnum.d.ts +5 -0
  38. package/bin/loanRetailAudit/enums/PiiAccessActionEnum.js +9 -0
  39. package/bin/loanRetailAudit/enums/PiiResourceTypeEnum.d.ts +9 -0
  40. package/bin/loanRetailAudit/enums/PiiResourceTypeEnum.js +13 -0
  41. package/bin/loanRetailAudit/enums/RetailAuditEntityTypeEnum.d.ts +17 -0
  42. package/bin/loanRetailAudit/enums/RetailAuditEntityTypeEnum.js +21 -0
  43. package/bin/loanRetailAudit/events/AuditTrailRecordedV1.d.ts +20 -0
  44. package/bin/loanRetailAudit/events/AuditTrailRecordedV1.js +94 -0
  45. package/bin/loanRetailAudit/index.d.ts +13 -0
  46. package/bin/loanRetailAudit/index.js +33 -0
  47. package/bin/mdm/dtos/DeviceStatusResponse.d.ts +4 -0
  48. package/package.json +1 -1
  49. package/src/index.ts +4 -0
  50. package/src/loanCredit/dtos/requests/RunDevicePostureBackfillRequest.ts +27 -0
  51. package/src/loanCredit/dtos/requests/UpdateReconcileModeRequest.ts +26 -0
  52. package/src/loanCredit/dtos/responses/DevicePostureBackfillResult.ts +12 -0
  53. package/src/loanCredit/dtos/responses/ReconcileModeView.ts +12 -0
  54. package/src/loanCredit/enums/ReconcileModeEnum.ts +5 -0
  55. package/src/loanCredit/index.ts +7 -0
  56. package/src/loanRetailAudit/constants/auditTrailEntityTypes.ts +12 -0
  57. package/src/loanRetailAudit/dtos/AuditTrailChange.ts +22 -0
  58. package/src/loanRetailAudit/dtos/AuditTrailContextEntry.ts +14 -0
  59. package/src/loanRetailAudit/dtos/requests/CreatePiiAccessLogRequest.ts +64 -0
  60. package/src/loanRetailAudit/dtos/requests/ListAuditTrailQuery.ts +35 -0
  61. package/src/loanRetailAudit/dtos/responses/CreatePiiAccessLogResponse.ts +4 -0
  62. package/src/loanRetailAudit/dtos/responses/ListAuditTrailResponse.ts +31 -0
  63. package/src/loanRetailAudit/enums/AuditTrailActionEnum.ts +39 -0
  64. package/src/loanRetailAudit/enums/LoanAuditEntityTypeEnum.ts +12 -0
  65. package/src/loanRetailAudit/enums/PiiAccessActionEnum.ts +5 -0
  66. package/src/loanRetailAudit/enums/PiiResourceTypeEnum.ts +9 -0
  67. package/src/loanRetailAudit/enums/RetailAuditEntityTypeEnum.ts +17 -0
  68. package/src/loanRetailAudit/events/AuditTrailRecordedV1.ts +70 -0
  69. package/src/loanRetailAudit/index.ts +20 -0
  70. package/src/mdm/dtos/DeviceStatusResponse.ts +4 -0
@@ -0,0 +1,12 @@
1
+ /** Resultado de una página del backfill. Sin `nextCursor`, la flota ya se recorrió completa. */
2
+ export interface DevicePostureBackfillResult {
3
+ dryRun: boolean;
4
+ devicesScanned: number;
5
+ /** Intenciones manuales y prórrogas que faltan en el expediente. */
6
+ wouldWrite: number;
7
+ /** Siempre 0 en dry-run. */
8
+ written: number;
9
+ /** Escrituras que perdieron la condición (ya existía el campo o cambió la versión). */
10
+ skippedByCondition: number;
11
+ nextCursor?: string;
12
+ }
@@ -0,0 +1,12 @@
1
+ import { MdmProviderEnum } from '../../../mdm/enums/MdmProviderEnum';
2
+ import { ReconcileModeEnum } from '../../enums/ReconcileModeEnum';
3
+
4
+ /** Modo vigente del conciliador para un proveedor. Sin fila guardada: OBSERVE con versión 0. */
5
+ export interface ReconcileModeView {
6
+ provider: MdmProviderEnum;
7
+ mode: ReconcileModeEnum;
8
+ version: number;
9
+ updatedBy?: string;
10
+ updatedAt?: string;
11
+ reason?: string;
12
+ }
@@ -0,0 +1,5 @@
1
+ /** Modo del conciliador del corte, por proveedor: sólo calcula (OBSERVE) o también decide (ACT). */
2
+ export enum ReconcileModeEnum {
3
+ OBSERVE = 'OBSERVE',
4
+ ACT = 'ACT',
5
+ }
@@ -188,3 +188,10 @@ export * from './dtos/responses/SellerPaymentOptions';
188
188
  export * from './dtos/responses/SellerCreditLookupResult';
189
189
  export * from './dtos/responses/InStorePaymentListItem';
190
190
  export * from './dtos/responses/CreditCustomerListItem';
191
+
192
+ // Conciliador del corte MDM: modo por proveedor y backfill
193
+ export * from './enums/ReconcileModeEnum';
194
+ export * from './dtos/requests/UpdateReconcileModeRequest';
195
+ export * from './dtos/responses/ReconcileModeView';
196
+ export * from './dtos/requests/RunDevicePostureBackfillRequest';
197
+ export * from './dtos/responses/DevicePostureBackfillResult';
@@ -0,0 +1,12 @@
1
+ import { LoanAuditEntityTypeEnum } from '../enums/LoanAuditEntityTypeEnum';
2
+ import { RetailAuditEntityTypeEnum } from '../enums/RetailAuditEntityTypeEnum';
3
+
4
+ /** Cualquier `entityType` que acepta el central, de Loan o de Retail. */
5
+ export type AuditTrailEntityType = LoanAuditEntityTypeEnum | RetailAuditEntityTypeEnum;
6
+
7
+ export const AUDIT_TRAIL_ENTITY_TYPES: readonly AuditTrailEntityType[] = [
8
+ ...Object.values(LoanAuditEntityTypeEnum),
9
+ ...Object.values(RetailAuditEntityTypeEnum),
10
+ ];
11
+
12
+ export const AUDIT_TRAIL_MAX_PAGE_SIZE = 100;
@@ -0,0 +1,22 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsNotEmpty, IsOptional, IsString } from 'class-validator';
3
+
4
+ /** Un campo que cambió; los valores van serializados a string y nunca llevan PII. */
5
+ export class AuditTrailChange {
6
+ @Expose()
7
+ @IsString()
8
+ @IsNotEmpty()
9
+ field!: string;
10
+
11
+ /** Ausente en un alta. */
12
+ @Expose()
13
+ @IsOptional()
14
+ @IsString()
15
+ oldValue?: string;
16
+
17
+ /** Ausente en una baja. */
18
+ @Expose()
19
+ @IsOptional()
20
+ @IsString()
21
+ newValue?: string;
22
+ }
@@ -0,0 +1,14 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsNotEmpty, IsString } from 'class-validator';
3
+
4
+ /** Dato que la acción no cambió y se guarda para leer la entrada sin abrir otra pantalla. */
5
+ export class AuditTrailContextEntry {
6
+ @Expose()
7
+ @IsString()
8
+ @IsNotEmpty()
9
+ key!: string;
10
+
11
+ @Expose()
12
+ @IsString()
13
+ value!: string;
14
+ }
@@ -0,0 +1,64 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { ArrayNotEmpty, IsArray, IsEnum, IsISO8601, IsNotEmpty, IsOptional, IsString } from 'class-validator';
3
+ import { PiiAccessActionEnum } from '../../enums/PiiAccessActionEnum';
4
+ import { PiiResourceTypeEnum } from '../../enums/PiiResourceTypeEnum';
5
+
6
+ /** Body de `POST /private/pii-access-logs` (privateCreatePiiAccessLog); el tenant va en `?tenantId=`. */
7
+ export class CreatePiiAccessLogRequest {
8
+ /** ULID generado por quien llama; con `occurredAt` forma el sk, así un reintento no duplica. */
9
+ @Expose()
10
+ @IsString()
11
+ @IsNotEmpty()
12
+ accessId!: string;
13
+
14
+ @Expose()
15
+ @IsISO8601()
16
+ occurredAt!: string;
17
+
18
+ @Expose()
19
+ @IsString()
20
+ @IsNotEmpty()
21
+ correlationId!: string;
22
+
23
+ @Expose()
24
+ @IsString()
25
+ @IsNotEmpty()
26
+ actorId!: string;
27
+
28
+ @Expose()
29
+ @IsString()
30
+ @IsNotEmpty()
31
+ sourceLambda!: string;
32
+
33
+ @Expose()
34
+ @IsString()
35
+ @IsNotEmpty()
36
+ operationName!: string;
37
+
38
+ @Expose()
39
+ @IsEnum(PiiAccessActionEnum)
40
+ action!: PiiAccessActionEnum;
41
+
42
+ @Expose()
43
+ @IsEnum(PiiResourceTypeEnum)
44
+ resourceType!: PiiResourceTypeEnum;
45
+
46
+ /** Id del recurso, o `(list)` en un listado con los ids en `resourceIds`. */
47
+ @Expose()
48
+ @IsString()
49
+ @IsNotEmpty()
50
+ resourceId!: string;
51
+
52
+ /** Nombres de los campos PII que viajaron; nunca sus valores. */
53
+ @Expose()
54
+ @IsArray()
55
+ @ArrayNotEmpty()
56
+ @IsString({ each: true })
57
+ fields!: string[];
58
+
59
+ @Expose()
60
+ @IsOptional()
61
+ @IsArray()
62
+ @IsString({ each: true })
63
+ resourceIds?: string[];
64
+ }
@@ -0,0 +1,35 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsEnum, IsIn, IsInt, IsNotEmpty, IsOptional, IsString, Max, Min } from 'class-validator';
3
+ import { SortDirEnum } from '../../../passport/enums/SortDirEnum';
4
+ import { AUDIT_TRAIL_ENTITY_TYPES, AUDIT_TRAIL_MAX_PAGE_SIZE, AuditTrailEntityType } from '../../constants/auditTrailEntityTypes';
5
+
6
+ /** Query de `GET /private/audit-trail` (privateListAuditTrail): bitácora de una entidad, paginada por sk. */
7
+ export class ListAuditTrailQuery {
8
+ @Expose()
9
+ @IsIn(AUDIT_TRAIL_ENTITY_TYPES)
10
+ entityType!: AuditTrailEntityType;
11
+
12
+ @Expose()
13
+ @IsString()
14
+ @IsNotEmpty()
15
+ entityId!: string;
16
+
17
+ /** Por default `desc`, lo más reciente primero. */
18
+ @Expose()
19
+ @IsOptional()
20
+ @IsEnum(SortDirEnum)
21
+ order?: SortDirEnum;
22
+
23
+ @Expose()
24
+ @IsOptional()
25
+ @Type(() => Number)
26
+ @IsInt()
27
+ @Min(1)
28
+ @Max(AUDIT_TRAIL_MAX_PAGE_SIZE)
29
+ limit?: number;
30
+
31
+ @Expose()
32
+ @IsOptional()
33
+ @IsString()
34
+ nextToken?: string;
35
+ }
@@ -0,0 +1,4 @@
1
+ /** Respuesta 201 de privateCreatePiiAccessLog; el mismo `accessId` en un reintento no duplica la fila. */
2
+ export interface CreatePiiAccessLogResponse {
3
+ accessId: string;
4
+ }
@@ -0,0 +1,31 @@
1
+ import { AuditTrailEntityType } from '../../constants/auditTrailEntityTypes';
2
+ import { AuditTrailActionEnum } from '../../enums/AuditTrailActionEnum';
3
+
4
+ /** Un campo que cambió, como lo devuelve la lectura. */
5
+ export interface AuditTrailChangeView {
6
+ field: string;
7
+ oldValue: string | null;
8
+ newValue: string | null;
9
+ }
10
+
11
+ /** Una entrada de la bitácora; `eventId` y `sourceLambda` son `null` en filas Loan de forma vieja. */
12
+ export interface AuditTrailEntry {
13
+ eventId: string | null;
14
+ sourceLambda: string | null;
15
+ entityType: AuditTrailEntityType;
16
+ entityId: string;
17
+ tenantId: string | null;
18
+ action: AuditTrailActionEnum;
19
+ performedBy: string;
20
+ reason: string | null;
21
+ ip: string | null;
22
+ changes: AuditTrailChangeView[];
23
+ context: { key: string; value: string }[];
24
+ occurredAt: string;
25
+ }
26
+
27
+ /** Página de privateListAuditTrail; `nextToken` es `null` en la última. */
28
+ export interface ListAuditTrailResponse {
29
+ items: AuditTrailEntry[];
30
+ nextToken: string | null;
31
+ }
@@ -0,0 +1,39 @@
1
+ /** Acción auditada en `SharedAuditTrail`; une las de Loan y Retail. */
2
+ export enum AuditTrailActionEnum {
3
+ CREATE = 'CREATE',
4
+ UPDATE = 'UPDATE',
5
+ DELETE = 'DELETE',
6
+ UPSERT = 'UPSERT',
7
+ STATUS_CHANGE = 'STATUS_CHANGE',
8
+ TRANSFER = 'TRANSFER',
9
+ KYC_VERIFIED = 'KYC_VERIFIED',
10
+ KYC_REVIEW = 'KYC_REVIEW',
11
+ ACCOUNT_RESULT = 'ACCOUNT_RESULT',
12
+ WELCOME_ACCREDITED = 'WELCOME_ACCREDITED',
13
+ WELCOME_ACCREDITATION_RESULT = 'WELCOME_ACCREDITATION_RESULT',
14
+ WELCOME_ACCREDITATION_RECONCILED = 'WELCOME_ACCREDITATION_RECONCILED',
15
+ SESSION_CREATE = 'SESSION_CREATE',
16
+ STEP_ADVANCE = 'STEP_ADVANCE',
17
+ OTP_SKIP = 'OTP_SKIP',
18
+ SESSION_RESUME = 'SESSION_RESUME',
19
+ SESSION_CANCEL = 'SESSION_CANCEL',
20
+ SESSION_CREDIT_ENABLED = 'SESSION_CREDIT_ENABLED',
21
+ PAYMENT_REGISTERED = 'PAYMENT_REGISTERED',
22
+ SALE_COMPLETE = 'SALE_COMPLETE',
23
+ SALE_CANCEL = 'SALE_CANCEL',
24
+ SALE_CARD_DELIVERED = 'SALE_CARD_DELIVERED',
25
+ KYC_CONFIRM = 'KYC_CONFIRM',
26
+ COMPLIANCE_VERDICT = 'COMPLIANCE_VERDICT',
27
+ EXCEPTION_CREATE = 'EXCEPTION_CREATE',
28
+ EXCEPTION_REVIEW = 'EXCEPTION_REVIEW',
29
+ EXCEPTION_RESOLVE = 'EXCEPTION_RESOLVE',
30
+ EXCEPTION_APPLY = 'EXCEPTION_APPLY',
31
+ EXCEPTION_NOTE = 'EXCEPTION_NOTE',
32
+ REPORT_RUN_REQUEST = 'REPORT_RUN_REQUEST',
33
+ PUBLISH = 'PUBLISH',
34
+ CLOSE = 'CLOSE',
35
+ ADJUST = 'ADJUST',
36
+ PAUSE = 'PAUSE',
37
+ RESUME = 'RESUME',
38
+ EXPIRE = 'EXPIRE',
39
+ }
@@ -0,0 +1,12 @@
1
+ /** `entityType` de bitácora que escriben los lambdas Loan; los valores son los que ya están en la pk. */
2
+ export enum LoanAuditEntityTypeEnum {
3
+ CREDIT = 'CREDIT',
4
+ INSTALLMENT = 'INSTALLMENT',
5
+ RESTRUCTURE = 'RESTRUCTURE',
6
+ CREDIT_PLAN = 'CREDIT_PLAN',
7
+ STORE_POLICY = 'STORE_POLICY',
8
+ SEGMENT = 'SEGMENT',
9
+ LOAN_PARAMETER = 'LoanParameter',
10
+ LOAN_ASSIGNMENT_RULE = 'LoanAssignmentRule',
11
+ LOAN_COLLECTOR_ASSIGNMENT = 'LoanCollectorAssignment',
12
+ }
@@ -0,0 +1,5 @@
1
+ /** Qué se hizo con la PII: verla o cambiarla. */
2
+ export enum PiiAccessActionEnum {
3
+ READ = 'READ',
4
+ WRITE = 'WRITE',
5
+ }
@@ -0,0 +1,9 @@
1
+ /** Tipo de recurso con PII; arma la pk `RESOURCE#<tipo>#<id>` de `SharedPiiAccessLog`. */
2
+ export enum PiiResourceTypeEnum {
3
+ RETAIL_CUSTOMER = 'RETAIL_CUSTOMER',
4
+ RETAIL_USER = 'RETAIL_USER',
5
+ RETAILER = 'RETAILER',
6
+ SALE = 'SALE',
7
+ PROSPECT = 'PROSPECT',
8
+ LOAN_PAYMENT = 'LOAN_PAYMENT',
9
+ }
@@ -0,0 +1,17 @@
1
+ /** `entityType` de bitácora que escriben los lambdas Retail (customer, org, wizard, commission). */
2
+ export enum RetailAuditEntityTypeEnum {
3
+ CUSTOMER = 'CUSTOMER',
4
+ RETAILER = 'RETAILER',
5
+ STORE = 'STORE',
6
+ RETAIL_USER = 'RETAIL_USER',
7
+ GOAL = 'GOAL',
8
+ WIZARD_SESSION = 'WIZARD_SESSION',
9
+ SALE = 'SALE',
10
+ SALE_EXCEPTION = 'SALE_EXCEPTION',
11
+ REPORT_RUN = 'REPORT_RUN',
12
+ COMMISSION_PLAN = 'COMMISSION_PLAN',
13
+ COMMISSION_PAYOUT = 'COMMISSION_PAYOUT',
14
+ COMMISSION_ADJUSTMENT = 'COMMISSION_ADJUSTMENT',
15
+ COMMISSION_RULE = 'COMMISSION_RULE',
16
+ COMMISSION_POLICY = 'COMMISSION_POLICY',
17
+ }
@@ -0,0 +1,70 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsArray, IsIn, IsEnum, IsISO8601, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator';
3
+ import { AUDIT_TRAIL_ENTITY_TYPES, AuditTrailEntityType } from '../constants/auditTrailEntityTypes';
4
+ import { AuditTrailChange } from '../dtos/AuditTrailChange';
5
+ import { AuditTrailContextEntry } from '../dtos/AuditTrailContextEntry';
6
+ import { AuditTrailActionEnum } from '../enums/AuditTrailActionEnum';
7
+
8
+ /** Mensaje de la cola `LoanRetailAuditQueue`; el central lo guarda una sola vez por `eventId`. */
9
+ export class AuditTrailRecordedV1 {
10
+ @Expose()
11
+ @IsString()
12
+ @IsNotEmpty()
13
+ eventId!: string;
14
+
15
+ @Expose()
16
+ @IsIn(AUDIT_TRAIL_ENTITY_TYPES)
17
+ entityType!: AuditTrailEntityType;
18
+
19
+ @Expose()
20
+ @IsString()
21
+ @IsNotEmpty()
22
+ entityId!: string;
23
+
24
+ @Expose()
25
+ @IsEnum(AuditTrailActionEnum)
26
+ action!: AuditTrailActionEnum;
27
+
28
+ @Expose()
29
+ @IsArray()
30
+ @ValidateNested({ each: true })
31
+ @Type(() => AuditTrailChange)
32
+ changes!: AuditTrailChange[];
33
+
34
+ @Expose()
35
+ @IsArray()
36
+ @ValidateNested({ each: true })
37
+ @Type(() => AuditTrailContextEntry)
38
+ context!: AuditTrailContextEntry[];
39
+
40
+ /** userId del actor, o `system` si lo disparó un proceso interno. */
41
+ @Expose()
42
+ @IsString()
43
+ @IsNotEmpty()
44
+ performedBy!: string;
45
+
46
+ @Expose()
47
+ @IsString()
48
+ @IsNotEmpty()
49
+ sourceLambda!: string;
50
+
51
+ @Expose()
52
+ @IsISO8601()
53
+ occurredAt!: string;
54
+
55
+ @Expose()
56
+ @IsOptional()
57
+ @IsString()
58
+ @IsNotEmpty()
59
+ tenantId?: string;
60
+
61
+ @Expose()
62
+ @IsOptional()
63
+ @IsString()
64
+ reason?: string;
65
+
66
+ @Expose()
67
+ @IsOptional()
68
+ @IsString()
69
+ ip?: string;
70
+ }
@@ -0,0 +1,20 @@
1
+ // Enums
2
+ export * from './enums/LoanAuditEntityTypeEnum';
3
+ export * from './enums/RetailAuditEntityTypeEnum';
4
+ export * from './enums/AuditTrailActionEnum';
5
+ export * from './enums/PiiResourceTypeEnum';
6
+ export * from './enums/PiiAccessActionEnum';
7
+
8
+ // Constantes
9
+ export * from './constants/auditTrailEntityTypes';
10
+
11
+ // DTOs
12
+ export * from './dtos/AuditTrailChange';
13
+ export * from './dtos/AuditTrailContextEntry';
14
+ export * from './dtos/requests/CreatePiiAccessLogRequest';
15
+ export * from './dtos/requests/ListAuditTrailQuery';
16
+ export * from './dtos/responses/CreatePiiAccessLogResponse';
17
+ export * from './dtos/responses/ListAuditTrailResponse';
18
+
19
+ // Contratos de eventos
20
+ export * from './events/AuditTrailRecordedV1';
@@ -12,5 +12,9 @@ export class DeviceStatusResponse {
12
12
  lastSeenAt?: string;
13
13
  lastTransition?: string;
14
14
  enrolledAt?: string;
15
+ /** Corte que el proveedor tiene armado (ISO-8601). `null`: el proveedor dice que no hay corte. */
16
+ lockScheduledFor?: string | null;
17
+ /** No se pudo leer el corte; el `error` del ítem sigue hablando sólo del estado del equipo. */
18
+ lockScheduleReadError?: MdmError;
15
19
  error?: MdmError;
16
20
  }