@fiado/type-kit 3.305.0 → 3.306.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.
@@ -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 = {}));
@@ -3,6 +3,7 @@ import { OnboardingStepIdEnum } from '../../enums/OnboardingStepIdEnum';
3
3
  import { OnboardingStepStatusEnum } from '../../enums/OnboardingStepStatusEnum';
4
4
  import { OnboardingAccountStatusEnum } from '../../enums/OnboardingAccountStatusEnum';
5
5
  import { OnboardingAccountReasonEnum } from '../../enums/OnboardingAccountReasonEnum';
6
+ import { OnboardingAccountMessageKeyEnum } from '../../enums/OnboardingAccountMessageKeyEnum';
6
7
  /**
7
8
  * Un paso: `id` + `status` y nada más. Sin motivo, sin metadata y sin lado (DEC-012 de
8
9
  * onboarding-business).
@@ -23,6 +24,22 @@ export declare class OnboardingAccountDto {
23
24
  status: OnboardingAccountStatusEnum;
24
25
  /** `null` cuando no hay nada que explicar. */
25
26
  reason: OnboardingAccountReasonEnum | null;
27
+ /**
28
+ * Clave del mensaje de Fido para ESTA cuenta. El consumidor la usa TAL CUAL para buscar el copy en
29
+ * Firebase Remote Config, sin componerla ni interpretar `status`/`reason`.
30
+ *
31
+ * NO es `status` y `reason` concatenados: es el nombre del mensaje del catálogo que ya existe en
32
+ * Remote Config, para que esa configuración no haya que reescribirla. Varias combinaciones caen a
33
+ * propósito en la misma clave — `REJECTED:BLACKLIST` y `REJECTED:DUPLICATE_USER` son las dos
34
+ * `CANNOT_OPEN`, porque a las dos personas se les dice lo mismo.
35
+ *
36
+ * Va **por cuenta** y no como valor global porque el estado es por cuenta: un usuario con las dos
37
+ * cuentas puede tener una rechazada y la otra en curso, y cada una necesita su propio mensaje.
38
+ *
39
+ * OJO con el catálogo viejo: tenía un segundo nivel indexado por país. Ese nivel ya no aplica — el
40
+ * mensaje depende del estado de la cuenta, no del país, y cada cuenta trae su clave.
41
+ */
42
+ key: OnboardingAccountMessageKeyEnum;
26
43
  }
27
44
  /**
28
45
  * Respuesta de `GET /onboarding-business/steps`.
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Clave del mensaje de Fido que el consumidor busca en Firebase Remote Config.
3
+ *
4
+ * NO es `status`/`reason` concatenados: es el nombre del mensaje del catálogo que YA existe en Remote
5
+ * Config, para que el backend pueda mandar la clave sin que haya que reescribir esa configuración.
6
+ * Varias combinaciones de estado caen en el mismo mensaje a propósito — a la persona rechazada por
7
+ * lista negra y a la rechazada por duplicado se les dice lo mismo.
8
+ *
9
+ * El catálogo viejo estaba indexado por `MESSAGE.FIDO` del motor legacy y, en un segundo nivel, por
10
+ * país. El segundo nivel deja de usarse: el mensaje ya no depende del país sino del estado de la
11
+ * cuenta, y cada cuenta trae su propia clave.
12
+ */
13
+ export declare enum OnboardingAccountMessageKeyEnum {
14
+ /** La cuenta ya está abierta. Es el CTA que dispara la firma de contratos. */
15
+ ACCOUNT_CREATED = "ACCOUNT_CREATED",
16
+ /** No se puede abrir la cuenta: lista negra, duplicado o rechazo del proveedor. */
17
+ CANNOT_OPEN = "CANNOT_OPEN",
18
+ /** El documento no sirvió y la persona puede volver a subirlo. */
19
+ UPLOAD_IDENTIFICATION_AGAIN = "UPLOAD_IDENTIFICATION_AGAIN",
20
+ /** Verificación del documento en curso: no hay nada que la persona pueda hacer. */
21
+ INFO_VERIFICATION_IN_PROCESS = "INFO_VERIFICATION_IN_PROCESS",
22
+ /** El proveedor está revisando. Tampoco hay acción del usuario. */
23
+ KEEP_CALM = "KEEP_CALM",
24
+ /**
25
+ * El proveedor espera que la persona conteste las preguntas de validación (OOW).
26
+ *
27
+ * CLAVE NUEVA: el catálogo viejo no tenía un mensaje para este caso. No se reusó `KEEP_CALM`
28
+ * porque diría lo contrario de lo que corresponde — ahí la pelota está del lado del usuario, no
29
+ * del nuestro. **Hay que darle de alta el copy en Remote Config**; hasta entonces el consumidor
30
+ * cae a su texto por defecto.
31
+ */
32
+ ANSWER_VERIFICATION_QUESTIONS = "ANSWER_VERIFICATION_QUESTIONS",
33
+ /** Trámite en curso, esperando que la persona complete sus pasos. */
34
+ COMPLETE_YOUR_INFORMATION = "COMPLETE_YOUR_INFORMATION"
35
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnboardingAccountMessageKeyEnum = void 0;
4
+ /**
5
+ * Clave del mensaje de Fido que el consumidor busca en Firebase Remote Config.
6
+ *
7
+ * NO es `status`/`reason` concatenados: es el nombre del mensaje del catálogo que YA existe en Remote
8
+ * Config, para que el backend pueda mandar la clave sin que haya que reescribir esa configuración.
9
+ * Varias combinaciones de estado caen en el mismo mensaje a propósito — a la persona rechazada por
10
+ * lista negra y a la rechazada por duplicado se les dice lo mismo.
11
+ *
12
+ * El catálogo viejo estaba indexado por `MESSAGE.FIDO` del motor legacy y, en un segundo nivel, por
13
+ * país. El segundo nivel deja de usarse: el mensaje ya no depende del país sino del estado de la
14
+ * cuenta, y cada cuenta trae su propia clave.
15
+ */
16
+ var OnboardingAccountMessageKeyEnum;
17
+ (function (OnboardingAccountMessageKeyEnum) {
18
+ /** La cuenta ya está abierta. Es el CTA que dispara la firma de contratos. */
19
+ OnboardingAccountMessageKeyEnum["ACCOUNT_CREATED"] = "ACCOUNT_CREATED";
20
+ /** No se puede abrir la cuenta: lista negra, duplicado o rechazo del proveedor. */
21
+ OnboardingAccountMessageKeyEnum["CANNOT_OPEN"] = "CANNOT_OPEN";
22
+ /** El documento no sirvió y la persona puede volver a subirlo. */
23
+ OnboardingAccountMessageKeyEnum["UPLOAD_IDENTIFICATION_AGAIN"] = "UPLOAD_IDENTIFICATION_AGAIN";
24
+ /** Verificación del documento en curso: no hay nada que la persona pueda hacer. */
25
+ OnboardingAccountMessageKeyEnum["INFO_VERIFICATION_IN_PROCESS"] = "INFO_VERIFICATION_IN_PROCESS";
26
+ /** El proveedor está revisando. Tampoco hay acción del usuario. */
27
+ OnboardingAccountMessageKeyEnum["KEEP_CALM"] = "KEEP_CALM";
28
+ /**
29
+ * El proveedor espera que la persona conteste las preguntas de validación (OOW).
30
+ *
31
+ * CLAVE NUEVA: el catálogo viejo no tenía un mensaje para este caso. No se reusó `KEEP_CALM`
32
+ * porque diría lo contrario de lo que corresponde — ahí la pelota está del lado del usuario, no
33
+ * del nuestro. **Hay que darle de alta el copy en Remote Config**; hasta entonces el consumidor
34
+ * cae a su texto por defecto.
35
+ */
36
+ OnboardingAccountMessageKeyEnum["ANSWER_VERIFICATION_QUESTIONS"] = "ANSWER_VERIFICATION_QUESTIONS";
37
+ /** Trámite en curso, esperando que la persona complete sus pasos. */
38
+ OnboardingAccountMessageKeyEnum["COMPLETE_YOUR_INFORMATION"] = "COMPLETE_YOUR_INFORMATION";
39
+ })(OnboardingAccountMessageKeyEnum || (exports.OnboardingAccountMessageKeyEnum = OnboardingAccountMessageKeyEnum = {}));
@@ -2,4 +2,5 @@ export * from './enums/OnboardingStepIdEnum';
2
2
  export * from './enums/OnboardingStepStatusEnum';
3
3
  export * from './enums/OnboardingAccountStatusEnum';
4
4
  export * from './enums/OnboardingAccountReasonEnum';
5
+ export * from './enums/OnboardingAccountMessageKeyEnum';
5
6
  export * from './dtos/responses/OnboardingStepsResponse';
@@ -19,5 +19,6 @@ __exportStar(require("./enums/OnboardingStepIdEnum"), exports);
19
19
  __exportStar(require("./enums/OnboardingStepStatusEnum"), exports);
20
20
  __exportStar(require("./enums/OnboardingAccountStatusEnum"), exports);
21
21
  __exportStar(require("./enums/OnboardingAccountReasonEnum"), exports);
22
+ __exportStar(require("./enums/OnboardingAccountMessageKeyEnum"), exports);
22
23
  // Response DTOs
23
24
  __exportStar(require("./dtos/responses/OnboardingStepsResponse"), exports);
@@ -0,0 +1,17 @@
1
+ import { CurrencyId } from '../../currency/enums/CurrencyId';
2
+ /**
3
+ * Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
4
+ * - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
5
+ * - Passport (MX): por red → `fixed` + `percentage`.
6
+ * Response DTO — sin decoradores de validación.
7
+ */
8
+ export declare class CashInFeeDto {
9
+ /** Comisión fija, en la moneda del país. */
10
+ fixed?: number;
11
+ /** Porcentaje del monto depositado (0–100). */
12
+ percentage?: number;
13
+ /** Tope máximo de comisión (GreenDot: el asociado cobra hasta este cap). */
14
+ cap?: number;
15
+ /** Moneda del fee: USD (GreenDot) | MXN (Passport). */
16
+ currency: CurrencyId;
17
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CashInFeeDto = void 0;
4
+ /**
5
+ * Comisión que cobra un punto de cash-in (lo que el lambda MUESTRA, no cobra).
6
+ * - GreenDot (US): representativo por cadena → `fixed` + `cap` (cada tienda cobra hasta el tope).
7
+ * - Passport (MX): por red → `fixed` + `percentage`.
8
+ * Response DTO — sin decoradores de validación.
9
+ */
10
+ class CashInFeeDto {
11
+ }
12
+ exports.CashInFeeDto = CashInFeeDto;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Body del PUT /me/profile/complete (autenticado, gate post-MFA del autoregistro). DEC-RBAC-034.
3
+ * Opera sobre el propio usuario (cognitoSub del token). Valida nombre + los `userFieldDefs` requeridos
4
+ * del tenant (422 MISSING_REQUIRED_FIELDS si faltan) y flipea `profileComplete=true`.
5
+ */
6
+ export declare class CompleteMyProfileRequest {
7
+ displayName: string;
8
+ customFields?: Record<string, string>;
9
+ }
@@ -0,0 +1,34 @@
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.CompleteMyProfileRequest = void 0;
13
+ const class_transformer_1 = require("class-transformer");
14
+ const class_validator_1 = require("class-validator");
15
+ /**
16
+ * Body del PUT /me/profile/complete (autenticado, gate post-MFA del autoregistro). DEC-RBAC-034.
17
+ * Opera sobre el propio usuario (cognitoSub del token). Valida nombre + los `userFieldDefs` requeridos
18
+ * del tenant (422 MISSING_REQUIRED_FIELDS si faltan) y flipea `profileComplete=true`.
19
+ */
20
+ class CompleteMyProfileRequest {
21
+ }
22
+ exports.CompleteMyProfileRequest = CompleteMyProfileRequest;
23
+ __decorate([
24
+ (0, class_transformer_1.Expose)(),
25
+ (0, class_validator_1.IsString)(),
26
+ (0, class_validator_1.IsNotEmpty)(),
27
+ __metadata("design:type", String)
28
+ ], CompleteMyProfileRequest.prototype, "displayName", void 0);
29
+ __decorate([
30
+ (0, class_transformer_1.Expose)(),
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsObject)(),
33
+ __metadata("design:type", Object)
34
+ ], CompleteMyProfileRequest.prototype, "customFields", void 0);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Body para cancelar una referencia de funding ya creada. La referencia/fundingId
3
+ * viaja en la URL (`/funding/{moduleName}/{fundingId}/cancel`); este body aporta
4
+ * el contexto del solicitante + idempotencia.
5
+ *
6
+ * NOTA: shape inferido desde el uso en `@fiado/api-invoker`
7
+ * (benefits-marketplace / equality-connector) — confirmar con el dueño del
8
+ * módulo walletFunding / el lambda equality-connector que implementa el cancel.
9
+ */
10
+ export declare class CancelFundingReferenceRequest {
11
+ directoryId: string;
12
+ reason?: string;
13
+ idempotencyKey: string;
14
+ }
@@ -0,0 +1,41 @@
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
+ /**
15
+ * Body para cancelar una referencia de funding ya creada. La referencia/fundingId
16
+ * viaja en la URL (`/funding/{moduleName}/{fundingId}/cancel`); este body aporta
17
+ * el contexto del solicitante + idempotencia.
18
+ *
19
+ * NOTA: shape inferido desde el uso en `@fiado/api-invoker`
20
+ * (benefits-marketplace / equality-connector) — confirmar con el dueño del
21
+ * módulo walletFunding / el lambda equality-connector que implementa el cancel.
22
+ */
23
+ class CancelFundingReferenceRequest {
24
+ }
25
+ exports.CancelFundingReferenceRequest = CancelFundingReferenceRequest;
26
+ __decorate([
27
+ (0, class_validator_1.IsString)(),
28
+ (0, class_validator_1.MaxLength)(64),
29
+ __metadata("design:type", String)
30
+ ], CancelFundingReferenceRequest.prototype, "directoryId", void 0);
31
+ __decorate([
32
+ (0, class_validator_1.IsOptional)(),
33
+ (0, class_validator_1.IsString)(),
34
+ (0, class_validator_1.MaxLength)(256),
35
+ __metadata("design:type", String)
36
+ ], CancelFundingReferenceRequest.prototype, "reason", void 0);
37
+ __decorate([
38
+ (0, class_validator_1.IsString)(),
39
+ (0, class_validator_1.MaxLength)(64),
40
+ __metadata("design:type", String)
41
+ ], CancelFundingReferenceRequest.prototype, "idempotencyKey", void 0);
@@ -0,0 +1,15 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
+ /**
4
+ * Respuesta de la cancelación de una referencia de funding. Mismo estilo que
5
+ * CreateFundingReferenceResponse.
6
+ *
7
+ * NOTA: shape inferido desde el uso en `@fiado/api-invoker` — confirmar con el
8
+ * dueño del módulo walletFunding / el lambda equality-connector.
9
+ */
10
+ export declare class CancelFundingReferenceResponse {
11
+ /** Referencia cancelada (misma PK que se creó). */
12
+ reference: string;
13
+ status: BenefitPaymentStatusEnum;
14
+ errorCode?: WalletFundingErrorCodeEnum;
15
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CancelFundingReferenceResponse = void 0;
4
+ /**
5
+ * Respuesta de la cancelación de una referencia de funding. Mismo estilo que
6
+ * CreateFundingReferenceResponse.
7
+ *
8
+ * NOTA: shape inferido desde el uso en `@fiado/api-invoker` — confirmar con el
9
+ * dueño del módulo walletFunding / el lambda equality-connector.
10
+ */
11
+ class CancelFundingReferenceResponse {
12
+ }
13
+ exports.CancelFundingReferenceResponse = CancelFundingReferenceResponse;
@@ -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
+ fundingId?: 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.305.0",
3
+ "version": "3.306.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -3,6 +3,7 @@ import { OnboardingStepIdEnum } from '../../enums/OnboardingStepIdEnum';
3
3
  import { OnboardingStepStatusEnum } from '../../enums/OnboardingStepStatusEnum';
4
4
  import { OnboardingAccountStatusEnum } from '../../enums/OnboardingAccountStatusEnum';
5
5
  import { OnboardingAccountReasonEnum } from '../../enums/OnboardingAccountReasonEnum';
6
+ import { OnboardingAccountMessageKeyEnum } from '../../enums/OnboardingAccountMessageKeyEnum';
6
7
 
7
8
  /**
8
9
  * Un paso: `id` + `status` y nada más. Sin motivo, sin metadata y sin lado (DEC-012 de
@@ -25,6 +26,22 @@ export class OnboardingAccountDto {
25
26
  status!: OnboardingAccountStatusEnum;
26
27
  /** `null` cuando no hay nada que explicar. */
27
28
  reason!: OnboardingAccountReasonEnum | null;
29
+ /**
30
+ * Clave del mensaje de Fido para ESTA cuenta. El consumidor la usa TAL CUAL para buscar el copy en
31
+ * Firebase Remote Config, sin componerla ni interpretar `status`/`reason`.
32
+ *
33
+ * NO es `status` y `reason` concatenados: es el nombre del mensaje del catálogo que ya existe en
34
+ * Remote Config, para que esa configuración no haya que reescribirla. Varias combinaciones caen a
35
+ * propósito en la misma clave — `REJECTED:BLACKLIST` y `REJECTED:DUPLICATE_USER` son las dos
36
+ * `CANNOT_OPEN`, porque a las dos personas se les dice lo mismo.
37
+ *
38
+ * Va **por cuenta** y no como valor global porque el estado es por cuenta: un usuario con las dos
39
+ * cuentas puede tener una rechazada y la otra en curso, y cada una necesita su propio mensaje.
40
+ *
41
+ * OJO con el catálogo viejo: tenía un segundo nivel indexado por país. Ese nivel ya no aplica — el
42
+ * mensaje depende del estado de la cuenta, no del país, y cada cuenta trae su clave.
43
+ */
44
+ key!: OnboardingAccountMessageKeyEnum;
28
45
  }
29
46
 
30
47
  /**
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Clave del mensaje de Fido que el consumidor busca en Firebase Remote Config.
3
+ *
4
+ * NO es `status`/`reason` concatenados: es el nombre del mensaje del catálogo que YA existe en Remote
5
+ * Config, para que el backend pueda mandar la clave sin que haya que reescribir esa configuración.
6
+ * Varias combinaciones de estado caen en el mismo mensaje a propósito — a la persona rechazada por
7
+ * lista negra y a la rechazada por duplicado se les dice lo mismo.
8
+ *
9
+ * El catálogo viejo estaba indexado por `MESSAGE.FIDO` del motor legacy y, en un segundo nivel, por
10
+ * país. El segundo nivel deja de usarse: el mensaje ya no depende del país sino del estado de la
11
+ * cuenta, y cada cuenta trae su propia clave.
12
+ */
13
+ export enum OnboardingAccountMessageKeyEnum {
14
+ /** La cuenta ya está abierta. Es el CTA que dispara la firma de contratos. */
15
+ ACCOUNT_CREATED = 'ACCOUNT_CREATED',
16
+ /** No se puede abrir la cuenta: lista negra, duplicado o rechazo del proveedor. */
17
+ CANNOT_OPEN = 'CANNOT_OPEN',
18
+ /** El documento no sirvió y la persona puede volver a subirlo. */
19
+ UPLOAD_IDENTIFICATION_AGAIN = 'UPLOAD_IDENTIFICATION_AGAIN',
20
+ /** Verificación del documento en curso: no hay nada que la persona pueda hacer. */
21
+ INFO_VERIFICATION_IN_PROCESS = 'INFO_VERIFICATION_IN_PROCESS',
22
+ /** El proveedor está revisando. Tampoco hay acción del usuario. */
23
+ KEEP_CALM = 'KEEP_CALM',
24
+ /**
25
+ * El proveedor espera que la persona conteste las preguntas de validación (OOW).
26
+ *
27
+ * CLAVE NUEVA: el catálogo viejo no tenía un mensaje para este caso. No se reusó `KEEP_CALM`
28
+ * porque diría lo contrario de lo que corresponde — ahí la pelota está del lado del usuario, no
29
+ * del nuestro. **Hay que darle de alta el copy en Remote Config**; hasta entonces el consumidor
30
+ * cae a su texto por defecto.
31
+ */
32
+ ANSWER_VERIFICATION_QUESTIONS = 'ANSWER_VERIFICATION_QUESTIONS',
33
+ /** Trámite en curso, esperando que la persona complete sus pasos. */
34
+ COMPLETE_YOUR_INFORMATION = 'COMPLETE_YOUR_INFORMATION'
35
+ }
@@ -3,6 +3,7 @@ export * from './enums/OnboardingStepIdEnum';
3
3
  export * from './enums/OnboardingStepStatusEnum';
4
4
  export * from './enums/OnboardingAccountStatusEnum';
5
5
  export * from './enums/OnboardingAccountReasonEnum';
6
+ export * from './enums/OnboardingAccountMessageKeyEnum';
6
7
 
7
8
  // Response DTOs
8
9
  export * from './dtos/responses/OnboardingStepsResponse';