@fiado/type-kit 3.425.0 → 3.426.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.
@@ -19,15 +19,18 @@ export declare class RemittanceCountryConfigItem {
19
19
  sortOrder: number;
20
20
  enabled: boolean;
21
21
  configured: boolean;
22
+ /** Mínimo de envío en USD (piso de UniTeller: 25). Los tramos de precio arrancan aquí. */
23
+ minAmountUSD: number;
22
24
  }
23
25
  /** Response de GET /backoffice/config/countries (config chica, sin paginación). */
24
26
  export declare class RemittanceCountryConfigListResponse {
25
27
  items: RemittanceCountryConfigItem[];
26
28
  }
27
- /** Body de PUT /backoffice/config/countries/{countryISO}. Ambos opcionales (merge con lo existente). */
29
+ /** Body de PUT /backoffice/config/countries/{countryISO}. Todos opcionales (merge con lo existente). */
28
30
  export declare class RemittanceCountryUpdateRequest {
29
31
  enabled?: boolean;
30
32
  name?: string;
33
+ minAmountUSD?: number;
31
34
  }
32
35
  /** Un país + su orden final. */
33
36
  export declare class RemittanceCountryOrderItem {
@@ -30,7 +30,7 @@ exports.RemittanceCountryConfigItem = RemittanceCountryConfigItem;
30
30
  class RemittanceCountryConfigListResponse {
31
31
  }
32
32
  exports.RemittanceCountryConfigListResponse = RemittanceCountryConfigListResponse;
33
- /** Body de PUT /backoffice/config/countries/{countryISO}. Ambos opcionales (merge con lo existente). */
33
+ /** Body de PUT /backoffice/config/countries/{countryISO}. Todos opcionales (merge con lo existente). */
34
34
  class RemittanceCountryUpdateRequest {
35
35
  }
36
36
  exports.RemittanceCountryUpdateRequest = RemittanceCountryUpdateRequest;
@@ -45,6 +45,12 @@ __decorate([
45
45
  (0, class_validator_1.Length)(1, 60),
46
46
  __metadata("design:type", String)
47
47
  ], RemittanceCountryUpdateRequest.prototype, "name", void 0);
48
+ __decorate([
49
+ (0, class_validator_1.IsOptional)(),
50
+ (0, class_validator_1.IsNumber)(),
51
+ (0, class_validator_1.Min)(1),
52
+ __metadata("design:type", Number)
53
+ ], RemittanceCountryUpdateRequest.prototype, "minAmountUSD", void 0);
48
54
  /** Un país + su orden final. */
49
55
  class RemittanceCountryOrderItem {
50
56
  }
@@ -9,12 +9,14 @@ import { RemittanceCorridor } from "../enums/RemittanceCorridor";
9
9
  * Promociones. retail = wholesale × (1 − markupBps/10000), SIN clampear
10
10
  * (el tope ≤ base de UNIR es transitorio).
11
11
  */
12
- /** Tramo de service fee. Matching = MAYOR amountMin ≤ monto (amountMax es SOLO display). */
12
+ /** Tramo de service fee (+ markup opcional). Matching = MAYOR amountMin ≤ monto (amountMax es SOLO display). */
13
13
  export declare class PricingTier {
14
14
  amountMin: number;
15
15
  /** Display ("$1–$49"); null/ausente = sin tope (último tramo). El matching NO lo usa. */
16
16
  amountMax?: number | null;
17
17
  serviceFee: number;
18
+ /** Override del markup de la combinación para este tramo (bps CON SIGNO). Ausente = hereda. */
19
+ markupBps?: number;
18
20
  /** ISO date (YYYY-MM-DD) "FEE DESDE" — informativo. */
19
21
  effectiveFrom: string;
20
22
  }
@@ -74,6 +76,8 @@ export declare class SimulatePricingRequest {
74
76
  export declare class SimulatePricingResponse {
75
77
  /** ExternalQuickQuotes (vivo). */
76
78
  wholesale: number;
79
+ /** Markup aplicado: el del tramo matcheado o, si no tiene override, el de la combinación. */
80
+ markupBps: number;
77
81
  /** round4(wholesale × (1 − markupBps/10000)) — SIN clampear (markup negativo ⇒ retail > wholesale). */
78
82
  retail: number;
79
83
  /** Del tramo matcheado (mayor amountMin ≤ amountUSD). */
@@ -23,7 +23,7 @@ const RemittanceCorridor_1 = require("../enums/RemittanceCorridor");
23
23
  * Promociones. retail = wholesale × (1 − markupBps/10000), SIN clampear
24
24
  * (el tope ≤ base de UNIR es transitorio).
25
25
  */
26
- /** Tramo de service fee. Matching = MAYOR amountMin ≤ monto (amountMax es SOLO display). */
26
+ /** Tramo de service fee (+ markup opcional). Matching = MAYOR amountMin ≤ monto (amountMax es SOLO display). */
27
27
  class PricingTier {
28
28
  }
29
29
  exports.PricingTier = PricingTier;
@@ -43,6 +43,13 @@ __decorate([
43
43
  (0, class_validator_1.Max)(100),
44
44
  __metadata("design:type", Number)
45
45
  ], PricingTier.prototype, "serviceFee", void 0);
46
+ __decorate([
47
+ (0, class_validator_1.IsOptional)(),
48
+ (0, class_validator_1.IsInt)(),
49
+ (0, class_validator_1.Min)(-500),
50
+ (0, class_validator_1.Max)(500),
51
+ __metadata("design:type", Number)
52
+ ], PricingTier.prototype, "markupBps", void 0);
46
53
  __decorate([
47
54
  (0, class_validator_1.IsString)(),
48
55
  (0, class_validator_1.Length)(10, 10),
@@ -29,5 +29,7 @@ export declare class PricingResolveResponse {
29
29
  appliedRuleIds: string[];
30
30
  /** true si no había combinación (se usó Estándar del corridor o markup 0 + fee 0). */
31
31
  fallback: boolean;
32
+ /** Mínimo de envío del país destino (RemittanceCountryConfig_GT). El connector rechaza montos menores. */
33
+ minAmountUSD: number;
32
34
  blocked?: PricingResolveBlocked;
33
35
  }
@@ -15,6 +15,8 @@ export declare class PricingScheduleTier {
15
15
  /** Display; null/ausente = último tramo (sin tope). El matching usa amountMin. */
16
16
  amountMax?: number | null;
17
17
  serviceFee: number;
18
+ /** Markup efectivo del tramo (bps CON SIGNO, tras promo). Ausente = aplica el markupBps de la respuesta. */
19
+ markupBps?: number;
18
20
  }
19
21
  /** Promoción AUTOMATIC vigente aplicada al schedule (ausente = no hay). */
20
22
  export declare class PricingScheduleAppliedPromo {
@@ -49,6 +49,11 @@ __decorate([
49
49
  (0, class_validator_1.Min)(0),
50
50
  __metadata("design:type", Number)
51
51
  ], PricingScheduleTier.prototype, "serviceFee", void 0);
52
+ __decorate([
53
+ (0, class_validator_1.IsOptional)(),
54
+ (0, class_validator_1.IsInt)(),
55
+ __metadata("design:type", Number)
56
+ ], PricingScheduleTier.prototype, "markupBps", void 0);
52
57
  /** Promoción AUTOMATIC vigente aplicada al schedule (ausente = no hay). */
53
58
  class PricingScheduleAppliedPromo {
54
59
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.425.0",
3
+ "version": "3.426.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -1,4 +1,4 @@
1
- import { IsArray, IsBoolean, IsInt, IsOptional, IsString, Length, Min, ValidateNested } from "class-validator";
1
+ import { IsArray, IsBoolean, IsInt, IsNumber, IsOptional, IsString, Length, Min, ValidateNested } from "class-validator";
2
2
  import { Type } from "class-transformer";
3
3
 
4
4
  /**
@@ -24,6 +24,8 @@ export class RemittanceCountryConfigItem {
24
24
  sortOrder!: number;
25
25
  enabled!: boolean;
26
26
  configured!: boolean;
27
+ /** Mínimo de envío en USD (piso de UniTeller: 25). Los tramos de precio arrancan aquí. */
28
+ minAmountUSD!: number;
27
29
  }
28
30
 
29
31
  /** Response de GET /backoffice/config/countries (config chica, sin paginación). */
@@ -31,7 +33,7 @@ export class RemittanceCountryConfigListResponse {
31
33
  items!: RemittanceCountryConfigItem[];
32
34
  }
33
35
 
34
- /** Body de PUT /backoffice/config/countries/{countryISO}. Ambos opcionales (merge con lo existente). */
36
+ /** Body de PUT /backoffice/config/countries/{countryISO}. Todos opcionales (merge con lo existente). */
35
37
  export class RemittanceCountryUpdateRequest {
36
38
  @IsOptional()
37
39
  @IsBoolean()
@@ -41,6 +43,11 @@ export class RemittanceCountryUpdateRequest {
41
43
  @IsString()
42
44
  @Length(1, 60)
43
45
  name?: string;
46
+
47
+ @IsOptional()
48
+ @IsNumber()
49
+ @Min(1)
50
+ minAmountUSD?: number;
44
51
  }
45
52
 
46
53
  /** Un país + su orden final. */
@@ -27,7 +27,7 @@ import { RemittanceCorridor } from "../enums/RemittanceCorridor";
27
27
  * (el tope ≤ base de UNIR es transitorio).
28
28
  */
29
29
 
30
- /** Tramo de service fee. Matching = MAYOR amountMin ≤ monto (amountMax es SOLO display). */
30
+ /** Tramo de service fee (+ markup opcional). Matching = MAYOR amountMin ≤ monto (amountMax es SOLO display). */
31
31
  export class PricingTier {
32
32
  @IsNumber()
33
33
  @Min(1)
@@ -43,6 +43,13 @@ export class PricingTier {
43
43
  @Max(100)
44
44
  serviceFee!: number;
45
45
 
46
+ /** Override del markup de la combinación para este tramo (bps CON SIGNO). Ausente = hereda. */
47
+ @IsOptional()
48
+ @IsInt()
49
+ @Min(-500)
50
+ @Max(500)
51
+ markupBps?: number;
52
+
46
53
  /** ISO date (YYYY-MM-DD) "FEE DESDE" — informativo. */
47
54
  @IsString()
48
55
  @Length(10, 10)
@@ -164,6 +171,8 @@ export class SimulatePricingRequest {
164
171
  export class SimulatePricingResponse {
165
172
  /** ExternalQuickQuotes (vivo). */
166
173
  wholesale!: number;
174
+ /** Markup aplicado: el del tramo matcheado o, si no tiene override, el de la combinación. */
175
+ markupBps!: number;
167
176
  /** round4(wholesale × (1 − markupBps/10000)) — SIN clampear (markup negativo ⇒ retail > wholesale). */
168
177
  retail!: number;
169
178
  /** Del tramo matcheado (mayor amountMin ≤ amountUSD). */
@@ -43,5 +43,7 @@ export class PricingResolveResponse {
43
43
  appliedRuleIds!: string[];
44
44
  /** true si no había combinación (se usó Estándar del corridor o markup 0 + fee 0). */
45
45
  fallback!: boolean;
46
+ /** Mínimo de envío del país destino (RemittanceCountryConfig_GT). El connector rechaza montos menores. */
47
+ minAmountUSD!: number;
46
48
  blocked?: PricingResolveBlocked;
47
49
  }
@@ -40,6 +40,11 @@ export class PricingScheduleTier {
40
40
  @IsNumber()
41
41
  @Min(0)
42
42
  serviceFee!: number;
43
+
44
+ /** Markup efectivo del tramo (bps CON SIGNO, tras promo). Ausente = aplica el markupBps de la respuesta. */
45
+ @IsOptional()
46
+ @IsInt()
47
+ markupBps?: number;
43
48
  }
44
49
 
45
50
  /** Promoción AUTOMATIC vigente aplicada al schedule (ausente = no hay). */