@fiado/type-kit 3.376.0 → 3.378.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.
@@ -1,5 +1,5 @@
1
1
  export declare class CollectRequest {
2
- ownerRef: string;
2
+ directoryId: string;
3
3
  tenantId: string;
4
4
  domain: string;
5
5
  productId: string;
@@ -17,7 +17,7 @@ exports.CollectRequest = CollectRequest;
17
17
  __decorate([
18
18
  (0, class_validator_1.IsString)(),
19
19
  __metadata("design:type", String)
20
- ], CollectRequest.prototype, "ownerRef", void 0);
20
+ ], CollectRequest.prototype, "directoryId", void 0);
21
21
  __decorate([
22
22
  (0, class_validator_1.IsString)(),
23
23
  __metadata("design:type", String)
@@ -3,7 +3,7 @@ import { SagaStep } from '../enums/SagaStep';
3
3
  /** Fila de listado de intents para el backoffice de monitoreo del motor de cobro. */
4
4
  export declare class CollectionIntentSummaryDto {
5
5
  intentId: string;
6
- ownerRef: string;
6
+ directoryId: string;
7
7
  tenantId: string;
8
8
  domain: string;
9
9
  chargeId: string;
@@ -24,7 +24,7 @@ __decorate([
24
24
  __decorate([
25
25
  (0, class_validator_1.IsString)(),
26
26
  __metadata("design:type", String)
27
- ], CollectionIntentSummaryDto.prototype, "ownerRef", void 0);
27
+ ], CollectionIntentSummaryDto.prototype, "directoryId", void 0);
28
28
  __decorate([
29
29
  (0, class_validator_1.IsString)(),
30
30
  __metadata("design:type", String)
@@ -10,7 +10,7 @@
10
10
  */
11
11
  export declare class MoneyInEvent {
12
12
  /** Titular que recibió el dinero. */
13
- ownerRef: string;
13
+ directoryId: string;
14
14
  /**
15
15
  * Tenant a quien le interesa el ingreso, cuando quien publica lo sabe. Casi nunca lo sabe: la
16
16
  * wallet es de la persona, no de un tenant, y varios pueden estar esperando el mismo saldo. El
@@ -27,7 +27,7 @@ exports.MoneyInEvent = MoneyInEvent;
27
27
  __decorate([
28
28
  (0, class_validator_1.IsString)(),
29
29
  __metadata("design:type", String)
30
- ], MoneyInEvent.prototype, "ownerRef", void 0);
30
+ ], MoneyInEvent.prototype, "directoryId", void 0);
31
31
  __decorate([
32
32
  (0, class_validator_1.IsOptional)(),
33
33
  (0, class_validator_1.IsString)(),
@@ -1,7 +1,7 @@
1
1
  import { CurrencyId } from '../../currency/enums/CurrencyId';
2
2
  export declare class PendingChargeDto {
3
3
  chargeId: string;
4
- ownerRef: string;
4
+ directoryId: string;
5
5
  tenantId: string;
6
6
  domain: string;
7
7
  parentDebtId: string;
@@ -22,7 +22,7 @@ __decorate([
22
22
  __decorate([
23
23
  (0, class_validator_1.IsString)(),
24
24
  __metadata("design:type", String)
25
- ], PendingChargeDto.prototype, "ownerRef", void 0);
25
+ ], PendingChargeDto.prototype, "directoryId", void 0);
26
26
  __decorate([
27
27
  (0, class_validator_1.IsString)(),
28
28
  __metadata("design:type", String)
@@ -1,7 +1,26 @@
1
+ /**
2
+ * Alta de un cargo cobrable: el dominio avisa de que hay algo que cobrar y el motor se encarga de
3
+ * perseguirlo — lo intenta, espera fondos si no hay saldo, y reintenta en cuanto entra dinero.
4
+ *
5
+ * No lleva importe a propósito. Cuánto se debe se le pregunta al dominio al ir a cobrar, porque
6
+ * entre el alta y el cobro puede correr mora o el cliente puede haber pagado por otra vía.
7
+ */
1
8
  export declare class RegisterCollectibleRequest {
2
- ownerRef: string;
9
+ /** Titular de la deuda. */
10
+ directoryId: string;
11
+ /** La SOFOM dueña de la cartera. Junto con `productId` resuelve la configuración de cobro. */
3
12
  tenantId: string;
13
+ /** Quién es el dueño de la deuda (`surekeep-retail`). Rutea las consultas de vuelta al dominio. */
4
14
  domain: string;
15
+ /** Configuración de cobro a aplicar: de qué cuentas se cobra, en qué orden y con qué mecanismo. */
5
16
  productId: string;
17
+ /**
18
+ * La llave del cargo, la que use el dominio. El motor no la interpreta: la trata como opaca y la
19
+ * concatena con `domain` para identificar el cobro.
20
+ *
21
+ * Tiene que ser ÚNICA por cargo cobrable y ESTABLE — el mismo valor al darlo de alta, al responder
22
+ * qué se debe y al darlo de baja. Dos cargos que compartan esta llave son, para el motor, el mismo
23
+ * cobro. Si un cargo se puede cobrar más de una vez, el ciclo va codificado aquí dentro.
24
+ */
6
25
  chargeId: string;
7
26
  }
@@ -11,13 +11,20 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.RegisterCollectibleRequest = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
+ /**
15
+ * Alta de un cargo cobrable: el dominio avisa de que hay algo que cobrar y el motor se encarga de
16
+ * perseguirlo — lo intenta, espera fondos si no hay saldo, y reintenta en cuanto entra dinero.
17
+ *
18
+ * No lleva importe a propósito. Cuánto se debe se le pregunta al dominio al ir a cobrar, porque
19
+ * entre el alta y el cobro puede correr mora o el cliente puede haber pagado por otra vía.
20
+ */
14
21
  class RegisterCollectibleRequest {
15
22
  }
16
23
  exports.RegisterCollectibleRequest = RegisterCollectibleRequest;
17
24
  __decorate([
18
25
  (0, class_validator_1.IsString)(),
19
26
  __metadata("design:type", String)
20
- ], RegisterCollectibleRequest.prototype, "ownerRef", void 0);
27
+ ], RegisterCollectibleRequest.prototype, "directoryId", void 0);
21
28
  __decorate([
22
29
  (0, class_validator_1.IsString)(),
23
30
  __metadata("design:type", String)
@@ -7,6 +7,6 @@
7
7
  */
8
8
  export declare class ResolvePendingChargesRequest {
9
9
  domain: string;
10
- ownerRef: string;
10
+ directoryId: string;
11
11
  tenantId: string;
12
12
  }
@@ -28,7 +28,7 @@ __decorate([
28
28
  __decorate([
29
29
  (0, class_validator_1.IsString)(),
30
30
  __metadata("design:type", String)
31
- ], ResolvePendingChargesRequest.prototype, "ownerRef", void 0);
31
+ ], ResolvePendingChargesRequest.prototype, "directoryId", void 0);
32
32
  __decorate([
33
33
  (0, class_validator_1.IsString)(),
34
34
  __metadata("design:type", String)
@@ -27,6 +27,21 @@ export interface AppliedPromotionResponse {
27
27
  /** Palancas del plan que la promoción pisó. */
28
28
  appliedEffects: PromotionEffectKindEnum[];
29
29
  }
30
+ /**
31
+ * Cotas con las que se cotizó de verdad, ya pisadas por la promoción y las políticas. NO son las
32
+ * del plan: una promoción puede bajar el enganche mínimo o subir el techo de monto.
33
+ *
34
+ * El wizard dibuja el control del enganche con estas, no con las del plan. Sin ellas el vendedor
35
+ * ve un mínimo que el motor ya no exige, y la palanca de enganche queda inalcanzable.
36
+ */
37
+ export interface EffectiveTermsResponse {
38
+ /** Enganche mínimo exigible, en decimal sobre 1 (`0.10` = 10%). */
39
+ minDownPaymentPct: number;
40
+ /** Tope de enganche, o `null` si el plan no lo acota. */
41
+ maxDownPaymentPct: number | null;
42
+ /** Techo de capital financiable. */
43
+ maxFinancedAmountCents: number;
44
+ }
30
45
  /**
31
46
  * Resultado del simulador de cuota (POST /private/credit-plans/:planId/simulate,
32
47
  * GET /credit-plans/:planId/simulator). Amortización francesa + IVA 16% + comisión de apertura + CAT.
@@ -65,4 +80,8 @@ export interface SimulationResultResponse {
65
80
  * alcanzó la venta, y ausente si el lambda todavía no lo emite.
66
81
  */
67
82
  provenance?: PlanTermProvenance;
83
+ /**
84
+ * Las cotas efectivas de ESTA cotización. Ausente si el lambda todavía no las emite.
85
+ */
86
+ effectiveTerms?: EffectiveTermsResponse;
68
87
  }
@@ -6,6 +6,9 @@ export type PlanTermLayer = 'PLAN' | 'EASING' | 'PROMOTION' | 'HARDENING';
6
6
  /**
7
7
  * Cadena de capas que tocaron cada término, no una capa única: una palanca puede registrarse como
8
8
  * aplicada y quedar pisada después. Va vacío (`{}`) si ninguna política alcanzó la venta.
9
+ *
10
+ * NO es la auditoría completa del cálculo: con una promoción aplicada y cero políticas va vacío
11
+ * igual. Una promoción se audita por `appliedPromotion`, que es su canal propio.
9
12
  */
10
13
  export type PlanTermProvenance = Record<string, PlanTermLayer[]>;
11
14
  /** Palancas que ENDURECEN. Se pliegan con `max` sobre pisos y `min` sobre techos. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.376.0",
3
+ "version": "3.378.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -1,7 +1,7 @@
1
1
  import { IsString, IsInt } from 'class-validator';
2
2
 
3
3
  export class CollectRequest {
4
- @IsString() ownerRef!: string;
4
+ @IsString() directoryId!: string;
5
5
  @IsString() tenantId!: string;
6
6
  @IsString() domain!: string;
7
7
  @IsString() productId!: string;
@@ -5,7 +5,7 @@ import { SagaStep } from '../enums/SagaStep';
5
5
  /** Fila de listado de intents para el backoffice de monitoreo del motor de cobro. */
6
6
  export class CollectionIntentSummaryDto {
7
7
  @IsString() intentId!: string;
8
- @IsString() ownerRef!: string;
8
+ @IsString() directoryId!: string;
9
9
  @IsString() tenantId!: string;
10
10
  @IsString() domain!: string;
11
11
  @IsString() chargeId!: string;
@@ -12,7 +12,7 @@ import { IsNumber, IsOptional, IsString } from 'class-validator';
12
12
  */
13
13
  export class MoneyInEvent {
14
14
  /** Titular que recibió el dinero. */
15
- @IsString() ownerRef!: string;
15
+ @IsString() directoryId!: string;
16
16
 
17
17
  /**
18
18
  * Tenant a quien le interesa el ingreso, cuando quien publica lo sabe. Casi nunca lo sabe: la
@@ -3,7 +3,7 @@ import { CurrencyId } from '../../currency/enums/CurrencyId';
3
3
 
4
4
  export class PendingChargeDto {
5
5
  @IsString() chargeId!: string; // record_id / INSTALLMENT#n
6
- @IsString() ownerRef!: string; // directoryId
6
+ @IsString() directoryId!: string;
7
7
  @IsString() tenantId!: string; // FIADO | surekeep
8
8
  @IsString() domain!: string; // une-credit | surekeep-retail
9
9
  @IsString() parentDebtId!: string; // credit_id / CREDIT#id
@@ -1,9 +1,32 @@
1
1
  import { IsString } from 'class-validator';
2
2
 
3
+ /**
4
+ * Alta de un cargo cobrable: el dominio avisa de que hay algo que cobrar y el motor se encarga de
5
+ * perseguirlo — lo intenta, espera fondos si no hay saldo, y reintenta en cuanto entra dinero.
6
+ *
7
+ * No lleva importe a propósito. Cuánto se debe se le pregunta al dominio al ir a cobrar, porque
8
+ * entre el alta y el cobro puede correr mora o el cliente puede haber pagado por otra vía.
9
+ */
3
10
  export class RegisterCollectibleRequest {
4
- @IsString() ownerRef!: string;
11
+ /** Titular de la deuda. */
12
+ @IsString() directoryId!: string;
13
+
14
+ /** La SOFOM dueña de la cartera. Junto con `productId` resuelve la configuración de cobro. */
5
15
  @IsString() tenantId!: string;
16
+
17
+ /** Quién es el dueño de la deuda (`surekeep-retail`). Rutea las consultas de vuelta al dominio. */
6
18
  @IsString() domain!: string;
19
+
20
+ /** Configuración de cobro a aplicar: de qué cuentas se cobra, en qué orden y con qué mecanismo. */
7
21
  @IsString() productId!: string;
22
+
23
+ /**
24
+ * La llave del cargo, la que use el dominio. El motor no la interpreta: la trata como opaca y la
25
+ * concatena con `domain` para identificar el cobro.
26
+ *
27
+ * Tiene que ser ÚNICA por cargo cobrable y ESTABLE — el mismo valor al darlo de alta, al responder
28
+ * qué se debe y al darlo de baja. Dos cargos que compartan esta llave son, para el motor, el mismo
29
+ * cobro. Si un cargo se puede cobrar más de una vez, el ciclo va codificado aquí dentro.
30
+ */
8
31
  @IsString() chargeId!: string;
9
32
  }
@@ -9,6 +9,6 @@ import { IsString } from 'class-validator';
9
9
  */
10
10
  export class ResolvePendingChargesRequest {
11
11
  @IsString() domain!: string;
12
- @IsString() ownerRef!: string;
12
+ @IsString() directoryId!: string;
13
13
  @IsString() tenantId!: string;
14
14
  }
@@ -30,6 +30,22 @@ export interface AppliedPromotionResponse {
30
30
  appliedEffects: PromotionEffectKindEnum[];
31
31
  }
32
32
 
33
+ /**
34
+ * Cotas con las que se cotizó de verdad, ya pisadas por la promoción y las políticas. NO son las
35
+ * del plan: una promoción puede bajar el enganche mínimo o subir el techo de monto.
36
+ *
37
+ * El wizard dibuja el control del enganche con estas, no con las del plan. Sin ellas el vendedor
38
+ * ve un mínimo que el motor ya no exige, y la palanca de enganche queda inalcanzable.
39
+ */
40
+ export interface EffectiveTermsResponse {
41
+ /** Enganche mínimo exigible, en decimal sobre 1 (`0.10` = 10%). */
42
+ minDownPaymentPct: number;
43
+ /** Tope de enganche, o `null` si el plan no lo acota. */
44
+ maxDownPaymentPct: number | null;
45
+ /** Techo de capital financiable. */
46
+ maxFinancedAmountCents: number;
47
+ }
48
+
33
49
  /**
34
50
  * Resultado del simulador de cuota (POST /private/credit-plans/:planId/simulate,
35
51
  * GET /credit-plans/:planId/simulator). Amortización francesa + IVA 16% + comisión de apertura + CAT.
@@ -68,4 +84,8 @@ export interface SimulationResultResponse {
68
84
  * alcanzó la venta, y ausente si el lambda todavía no lo emite.
69
85
  */
70
86
  provenance?: PlanTermProvenance;
87
+ /**
88
+ * Las cotas efectivas de ESTA cotización. Ausente si el lambda todavía no las emite.
89
+ */
90
+ effectiveTerms?: EffectiveTermsResponse;
71
91
  }
@@ -8,6 +8,9 @@ export type PlanTermLayer = 'PLAN' | 'EASING' | 'PROMOTION' | 'HARDENING';
8
8
  /**
9
9
  * Cadena de capas que tocaron cada término, no una capa única: una palanca puede registrarse como
10
10
  * aplicada y quedar pisada después. Va vacío (`{}`) si ninguna política alcanzó la venta.
11
+ *
12
+ * NO es la auditoría completa del cálculo: con una promoción aplicada y cero políticas va vacío
13
+ * igual. Una promoción se audita por `appliedPromotion`, que es su canal propio.
11
14
  */
12
15
  export type PlanTermProvenance = Record<string, PlanTermLayer[]>;
13
16