@fiado/type-kit 3.243.0 → 3.246.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 (42) hide show
  1. package/bin/index.d.ts +1 -0
  2. package/bin/index.js +5 -1
  3. package/bin/kyc/events/KycVerificationChangedV1.d.ts +11 -0
  4. package/bin/kyc/events/KycVerificationChangedV1.js +6 -0
  5. package/bin/onboarding/dtos/responses/OnboardingStepsResponse.d.ts +57 -0
  6. package/bin/onboarding/dtos/responses/OnboardingStepsResponse.js +31 -0
  7. package/bin/onboarding/enums/OnboardingAccountReasonEnum.d.ts +26 -0
  8. package/bin/onboarding/enums/OnboardingAccountReasonEnum.js +30 -0
  9. package/bin/onboarding/enums/OnboardingAccountStatusEnum.d.ts +22 -0
  10. package/bin/onboarding/enums/OnboardingAccountStatusEnum.js +26 -0
  11. package/bin/onboarding/enums/OnboardingStepIdEnum.d.ts +21 -0
  12. package/bin/onboarding/enums/OnboardingStepIdEnum.js +25 -0
  13. package/bin/onboarding/enums/OnboardingStepStatusEnum.d.ts +12 -0
  14. package/bin/onboarding/enums/OnboardingStepStatusEnum.js +16 -0
  15. package/bin/onboarding/index.d.ts +5 -0
  16. package/bin/onboarding/index.js +23 -0
  17. package/bin/platformRbac/dtos/CompleteMyProfileRequest.d.ts +9 -0
  18. package/bin/platformRbac/dtos/{ResendOtpRequest.js → CompleteMyProfileRequest.js} +12 -14
  19. package/bin/riskProfile/dtos/TransactionAlarmQueueMessage.d.ts +30 -0
  20. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +14 -0
  21. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +41 -0
  22. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +15 -0
  23. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.js +13 -0
  24. package/bin/walletFunding/dtos/CancelWalletFundingRequest.d.ts +3 -0
  25. package/bin/walletFunding/dtos/CancelWalletFundingRequest.js +21 -0
  26. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +7 -0
  27. package/bin/walletFunding/dtos/CancelWalletFundingResponse.js +6 -0
  28. package/package.json +1 -1
  29. package/src/index.ts +4 -0
  30. package/src/kyc/events/KycVerificationChangedV1.ts +14 -1
  31. package/src/onboarding/dtos/responses/OnboardingStepsResponse.ts +61 -0
  32. package/src/onboarding/enums/OnboardingAccountReasonEnum.ts +26 -0
  33. package/src/onboarding/enums/OnboardingAccountStatusEnum.ts +22 -0
  34. package/src/onboarding/enums/OnboardingStepIdEnum.ts +21 -0
  35. package/src/onboarding/enums/OnboardingStepStatusEnum.ts +12 -0
  36. package/src/onboarding/index.ts +8 -0
  37. package/src/riskProfile/dtos/TransactionAlarmQueueMessage.ts +30 -0
  38. package/bin/loanConfig/enums/ModifiableByRoleEnum.d.ts +0 -11
  39. package/bin/loanConfig/enums/ModifiableByRoleEnum.js +0 -15
  40. package/bin/platformRbac/dtos/ResendOtpRequest.d.ts +0 -22
  41. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.d.ts +0 -11
  42. package/bin/platformRbac/dtos/ResendSelfRegisterOtpRequest.js +0 -36
package/bin/index.d.ts CHANGED
@@ -101,6 +101,7 @@ export * as LoanCollectorAssignment from './loanCollectorAssignment';
101
101
  export * as LoanCredit from './loanCredit';
102
102
  export * as LoanScoring from './loanScoring';
103
103
  export * as Kyc from './kyc';
104
+ export * as Onboarding from './onboarding';
104
105
  export * from './messaging';
105
106
  export * from './complaint';
106
107
  export * as PhoneSales from './phoneSales';
package/bin/index.js CHANGED
@@ -38,7 +38,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  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.MetamapConnector = exports.Account = exports.Crypto = void 0;
40
40
  exports.LoanCollectorAssignment = exports.LoanOfferings = exports.Shortlink = exports.LoanConfig = exports.RetailWizard = exports.RetailCustomer = exports.RetailCards = exports.RetailCatalog = 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 = exports.Device = void 0;
41
- exports.Shipping = exports.PhoneSales = exports.Kyc = exports.LoanScoring = exports.LoanCredit = void 0;
41
+ exports.Shipping = exports.PhoneSales = exports.Onboarding = exports.Kyc = exports.LoanScoring = exports.LoanCredit = void 0;
42
42
  exports.Crypto = __importStar(require("./crypto"));
43
43
  exports.Account = __importStar(require("./account"));
44
44
  exports.MetamapConnector = __importStar(require("./metamapConnector"));
@@ -180,6 +180,10 @@ exports.LoanScoring = __importStar(require("./loanScoring"));
180
180
  // consolidado + estados crudos + datos de persona. El consolidado reusa RetailKycStatusEnum
181
181
  // (no hay enum consolidado propio — DEC-KYC-014). SureKeep Fase 2.
182
182
  exports.Kyc = __importStar(require("./kyc"));
183
+ // Onboarding: contrato de los pasos del onboarding resueltos por SCOPE y no por país
184
+ // (onboarding-business, DEC-009 a DEC-021). Dos bloques: `steps` (qué le falta hacer al usuario) y
185
+ // `accounts` (cómo va el trámite de cada cuenta, por lado).
186
+ exports.Onboarding = __importStar(require("./onboarding"));
183
187
  __exportStar(require("./messaging"), exports);
184
188
  __exportStar(require("./complaint"), exports);
185
189
  // PhoneSales: DTOs del lambda cell-phone-sales-business — variantes de dispositivo (modelo/color/
@@ -60,4 +60,15 @@ export declare class KycVerificationChangedV1 {
60
60
  * ⚠️ PII: nunca loguear.
61
61
  */
62
62
  address?: KycAddress;
63
+ /**
64
+ * ¿El webhook YA persistió este domicilio en `fiado-address-lambda`? Solo es `true` cuando el
65
+ * documento es mexicano (único caso en que el webhook escribe) y el POST aterrizó.
66
+ *
67
+ * El consumidor lo necesita para NO volver a escribirlo: el address-lambda APILA — un segundo
68
+ * create sobre el mismo domicilio deja una fila duplicada en el expediente.
69
+ *
70
+ * OPCIONAL y aditivo: ausente o `false` significan "nadie lo guardó todavía", que es la
71
+ * degradación segura (el consumidor lo pide y lo guarda él).
72
+ */
73
+ addressPushedToFiado?: boolean;
63
74
  }
@@ -98,3 +98,9 @@ __decorate([
98
98
  (0, class_transformer_1.Type)(() => KycAddress_1.KycAddress),
99
99
  __metadata("design:type", KycAddress_1.KycAddress)
100
100
  ], KycVerificationChangedV1.prototype, "address", void 0);
101
+ __decorate([
102
+ (0, class_transformer_1.Expose)(),
103
+ (0, class_validator_1.IsOptional)(),
104
+ (0, class_validator_1.IsBoolean)(),
105
+ __metadata("design:type", Boolean)
106
+ ], KycVerificationChangedV1.prototype, "addressPushedToFiado", void 0);
@@ -0,0 +1,57 @@
1
+ import { Scope } from '../../../directory/enums/Scope';
2
+ import { OnboardingStepIdEnum } from '../../enums/OnboardingStepIdEnum';
3
+ import { OnboardingStepStatusEnum } from '../../enums/OnboardingStepStatusEnum';
4
+ import { OnboardingAccountStatusEnum } from '../../enums/OnboardingAccountStatusEnum';
5
+ import { OnboardingAccountReasonEnum } from '../../enums/OnboardingAccountReasonEnum';
6
+ /**
7
+ * Un paso: `id` + `status` y nada más. Sin motivo, sin metadata y sin lado (DEC-012 de
8
+ * onboarding-business).
9
+ *
10
+ * Para saber QUÉ documento pedir en `KYC_IDENTIFICATION`, el consumidor le pregunta a
11
+ * kyc-verifications-business, que es quien decide el workflow de Metamap (DEC-017).
12
+ */
13
+ export declare class OnboardingStepDto {
14
+ id: OnboardingStepIdEnum;
15
+ status: OnboardingStepStatusEnum;
16
+ }
17
+ /**
18
+ * El trámite de una cuenta, por lado. Es el único bloque que lleva motivo.
19
+ */
20
+ export declare class OnboardingAccountDto {
21
+ /** Scope de onboarding al que corresponde la cuenta: `fiado.on_us` o `fiado.on_mx`. */
22
+ scope: Scope;
23
+ status: OnboardingAccountStatusEnum;
24
+ /** `null` cuando no hay nada que explicar. */
25
+ reason: OnboardingAccountReasonEnum | null;
26
+ }
27
+ /**
28
+ * Respuesta de `GET /onboarding-business/steps`.
29
+ *
30
+ * Dos bloques que contestan preguntas DISTINTAS, y por eso no pueden contradecirse:
31
+ * - `steps` → qué le falta HACER al usuario.
32
+ * - `accounts` → cómo va el trámite de cada cuenta.
33
+ *
34
+ * No recibe `countryId`: los pasos salen de los scopes del usuario y el sujeto sale del token.
35
+ */
36
+ export declare class OnboardingStepsResponse {
37
+ /**
38
+ * Solo los pasos aplicables al scope del usuario, **EN ORDEN DE PINTADO**. El consumidor pinta el
39
+ * array tal como llega: no reordena ni conoce las reglas de scope.
40
+ *
41
+ * El largo PUEDE CAMBIAR entre dos llamadas. Ejemplo real: en cuanto el usuario guarda una
42
+ * dirección, `MX_PROOF_OF_ADDRESS` deja de aplicar y sale de la lista.
43
+ *
44
+ * Vacío si la persona no tiene ningún scope de onboarding — eso NO es un error, significa que no
45
+ * tiene onboarding pendiente. Pasa justo después de firmar, cuando el scope pasa de `fiado.on_mx`
46
+ * a `fiado.mx`.
47
+ */
48
+ steps: OnboardingStepDto[];
49
+ /**
50
+ * Un item por scope de onboarding que tenga el usuario. Vacío si no tiene ninguno.
51
+ *
52
+ * Cuando una cuenta viene en `REJECTED`, el consumidor tiene que darle PRIORIDAD sobre los pasos de
53
+ * esa cuenta: por diseño cinco de los siete pasos nunca se bloquean, así que un usuario rechazado
54
+ * igual va a recibir pasos abiertos.
55
+ */
56
+ accounts: OnboardingAccountDto[];
57
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnboardingStepsResponse = exports.OnboardingAccountDto = exports.OnboardingStepDto = void 0;
4
+ /**
5
+ * Un paso: `id` + `status` y nada más. Sin motivo, sin metadata y sin lado (DEC-012 de
6
+ * onboarding-business).
7
+ *
8
+ * Para saber QUÉ documento pedir en `KYC_IDENTIFICATION`, el consumidor le pregunta a
9
+ * kyc-verifications-business, que es quien decide el workflow de Metamap (DEC-017).
10
+ */
11
+ class OnboardingStepDto {
12
+ }
13
+ exports.OnboardingStepDto = OnboardingStepDto;
14
+ /**
15
+ * El trámite de una cuenta, por lado. Es el único bloque que lleva motivo.
16
+ */
17
+ class OnboardingAccountDto {
18
+ }
19
+ exports.OnboardingAccountDto = OnboardingAccountDto;
20
+ /**
21
+ * Respuesta de `GET /onboarding-business/steps`.
22
+ *
23
+ * Dos bloques que contestan preguntas DISTINTAS, y por eso no pueden contradecirse:
24
+ * - `steps` → qué le falta HACER al usuario.
25
+ * - `accounts` → cómo va el trámite de cada cuenta.
26
+ *
27
+ * No recibe `countryId`: los pasos salen de los scopes del usuario y el sujeto sale del token.
28
+ */
29
+ class OnboardingStepsResponse {
30
+ }
31
+ exports.OnboardingStepsResponse = OnboardingStepsResponse;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Motivo del estado de una cuenta. Solo viaja cuando hay algo que explicar (DEC-021 de
3
+ * onboarding-business).
4
+ *
5
+ * Las claves de texto de estos valores tienen que existir en Firebase Remote Config antes de que el
6
+ * backend empiece a mandarlos: el copy de la app vive ahí, así que un motivo sin clave deja la pantalla
7
+ * sin texto.
8
+ *
9
+ * `PROVIDER_DENIED` y `PROVIDER_REVIEW` aplican SOLO al lado USA, que es donde existe `CP_Status`. El
10
+ * lado mexicano no tiene señal propia de rechazo más allá de las banderas de verificación del
11
+ * documento: `authorizationNeededMXN` está en `NOT_REQUIRED` en el 100% de los registros de producción.
12
+ */
13
+ export declare enum OnboardingAccountReasonEnum {
14
+ /** Lista negra (`fiadoListApproved === false`). Afecta los dos lados. */
15
+ BLACKLIST = "BLACKLIST",
16
+ /** Detección de duplicados (`duplicateUserDetection === true`). Afecta los dos lados. */
17
+ DUPLICATE_USER = "DUPLICATE_USER",
18
+ /** Alguna verificación del documento de ese lado en `false`. */
19
+ DOCUMENT_INVALID = "DOCUMENT_INVALID",
20
+ /** Documento subido y verificaciones todavía sin resolver. */
21
+ DOCUMENT_VERIFICATION = "DOCUMENT_VERIFICATION",
22
+ /** Solo lado USA: el proveedor rechazó. */
23
+ PROVIDER_DENIED = "PROVIDER_DENIED",
24
+ /** Solo lado USA: el proveedor está revisando o pidiendo documento. */
25
+ PROVIDER_REVIEW = "PROVIDER_REVIEW"
26
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnboardingAccountReasonEnum = void 0;
4
+ /**
5
+ * Motivo del estado de una cuenta. Solo viaja cuando hay algo que explicar (DEC-021 de
6
+ * onboarding-business).
7
+ *
8
+ * Las claves de texto de estos valores tienen que existir en Firebase Remote Config antes de que el
9
+ * backend empiece a mandarlos: el copy de la app vive ahí, así que un motivo sin clave deja la pantalla
10
+ * sin texto.
11
+ *
12
+ * `PROVIDER_DENIED` y `PROVIDER_REVIEW` aplican SOLO al lado USA, que es donde existe `CP_Status`. El
13
+ * lado mexicano no tiene señal propia de rechazo más allá de las banderas de verificación del
14
+ * documento: `authorizationNeededMXN` está en `NOT_REQUIRED` en el 100% de los registros de producción.
15
+ */
16
+ var OnboardingAccountReasonEnum;
17
+ (function (OnboardingAccountReasonEnum) {
18
+ /** Lista negra (`fiadoListApproved === false`). Afecta los dos lados. */
19
+ OnboardingAccountReasonEnum["BLACKLIST"] = "BLACKLIST";
20
+ /** Detección de duplicados (`duplicateUserDetection === true`). Afecta los dos lados. */
21
+ OnboardingAccountReasonEnum["DUPLICATE_USER"] = "DUPLICATE_USER";
22
+ /** Alguna verificación del documento de ese lado en `false`. */
23
+ OnboardingAccountReasonEnum["DOCUMENT_INVALID"] = "DOCUMENT_INVALID";
24
+ /** Documento subido y verificaciones todavía sin resolver. */
25
+ OnboardingAccountReasonEnum["DOCUMENT_VERIFICATION"] = "DOCUMENT_VERIFICATION";
26
+ /** Solo lado USA: el proveedor rechazó. */
27
+ OnboardingAccountReasonEnum["PROVIDER_DENIED"] = "PROVIDER_DENIED";
28
+ /** Solo lado USA: el proveedor está revisando o pidiendo documento. */
29
+ OnboardingAccountReasonEnum["PROVIDER_REVIEW"] = "PROVIDER_REVIEW";
30
+ })(OnboardingAccountReasonEnum || (exports.OnboardingAccountReasonEnum = OnboardingAccountReasonEnum = {}));
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Estado del trámite de UNA cuenta (DEC-021 de onboarding-business).
3
+ *
4
+ * Es un eje distinto del de los pasos: `steps` dice qué le falta HACER al usuario, `accounts` dice cómo
5
+ * va el trámite. Un paso en `DONE` junto a una cuenta en `UNDER_REVIEW` no es contradicción — la
6
+ * persona ya hizo su parte.
7
+ *
8
+ * Va por lado y no como valor global porque en producción hay 230 personas con problema solo del lado
9
+ * USA y 28 solo del mexicano: para esas 258 un valor único mentiría, diciéndoles que no se les puede
10
+ * abrir cuenta cuando una de las dos sí.
11
+ *
12
+ * `OPEN` se deriva de la bandera de la cuenta (`MEX_DebitAccount` / `USA_DebitAccount`) y NUNCA del
13
+ * scope: cuando el backend crea la cuenta el scope sigue siendo el de onboarding, y recién cambia
14
+ * cuando el usuario firma los documentos legales. Derivarlo del scope produce una circularidad que
15
+ * deja al usuario con la cuenta creada y el contrato sin firmar de forma permanente.
16
+ */
17
+ export declare enum OnboardingAccountStatusEnum {
18
+ IN_PROGRESS = "IN_PROGRESS",
19
+ UNDER_REVIEW = "UNDER_REVIEW",
20
+ REJECTED = "REJECTED",
21
+ OPEN = "OPEN"
22
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnboardingAccountStatusEnum = void 0;
4
+ /**
5
+ * Estado del trámite de UNA cuenta (DEC-021 de onboarding-business).
6
+ *
7
+ * Es un eje distinto del de los pasos: `steps` dice qué le falta HACER al usuario, `accounts` dice cómo
8
+ * va el trámite. Un paso en `DONE` junto a una cuenta en `UNDER_REVIEW` no es contradicción — la
9
+ * persona ya hizo su parte.
10
+ *
11
+ * Va por lado y no como valor global porque en producción hay 230 personas con problema solo del lado
12
+ * USA y 28 solo del mexicano: para esas 258 un valor único mentiría, diciéndoles que no se les puede
13
+ * abrir cuenta cuando una de las dos sí.
14
+ *
15
+ * `OPEN` se deriva de la bandera de la cuenta (`MEX_DebitAccount` / `USA_DebitAccount`) y NUNCA del
16
+ * scope: cuando el backend crea la cuenta el scope sigue siendo el de onboarding, y recién cambia
17
+ * cuando el usuario firma los documentos legales. Derivarlo del scope produce una circularidad que
18
+ * deja al usuario con la cuenta creada y el contrato sin firmar de forma permanente.
19
+ */
20
+ var OnboardingAccountStatusEnum;
21
+ (function (OnboardingAccountStatusEnum) {
22
+ OnboardingAccountStatusEnum["IN_PROGRESS"] = "IN_PROGRESS";
23
+ OnboardingAccountStatusEnum["UNDER_REVIEW"] = "UNDER_REVIEW";
24
+ OnboardingAccountStatusEnum["REJECTED"] = "REJECTED";
25
+ OnboardingAccountStatusEnum["OPEN"] = "OPEN";
26
+ })(OnboardingAccountStatusEnum || (exports.OnboardingAccountStatusEnum = OnboardingAccountStatusEnum = {}));
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Los 7 pasos del onboarding, resueltos por los scopes del usuario y NO por país (DEC-009, DEC-010 de
3
+ * onboarding-business).
4
+ *
5
+ * El orden de este enum no define el orden de pintado: la respuesta trae los pasos ya ordenados y la
6
+ * app pinta el array tal como llega.
7
+ *
8
+ * Los ids con prefijo de lado (`US_` / `MX_`) lo llevan porque **son** de un lado: lo que el rediseño
9
+ * elimina es el `countryId` de la entrada, no la realidad de que el comprobante de domicilio es un
10
+ * requisito mexicano. `DATA_CONFIRMATION` es el paso de "revisá y confirmá tus datos"; se llama así y
11
+ * no `INFO_SELF_VERIFY` para no confundirlo con la verificación de Metamap de `KYC_IDENTIFICATION`.
12
+ */
13
+ export declare enum OnboardingStepIdEnum {
14
+ KYC_IDENTIFICATION = "KYC_IDENTIFICATION",
15
+ INCOME_INFORMATION = "INCOME_INFORMATION",
16
+ US_ADDRESS = "US_ADDRESS",
17
+ MX_PROOF_OF_ADDRESS = "MX_PROOF_OF_ADDRESS",
18
+ MX_REGULATORY_QUESTIONS = "MX_REGULATORY_QUESTIONS",
19
+ MX_BENEFICIARIES = "MX_BENEFICIARIES",
20
+ DATA_CONFIRMATION = "DATA_CONFIRMATION"
21
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnboardingStepIdEnum = void 0;
4
+ /**
5
+ * Los 7 pasos del onboarding, resueltos por los scopes del usuario y NO por país (DEC-009, DEC-010 de
6
+ * onboarding-business).
7
+ *
8
+ * El orden de este enum no define el orden de pintado: la respuesta trae los pasos ya ordenados y la
9
+ * app pinta el array tal como llega.
10
+ *
11
+ * Los ids con prefijo de lado (`US_` / `MX_`) lo llevan porque **son** de un lado: lo que el rediseño
12
+ * elimina es el `countryId` de la entrada, no la realidad de que el comprobante de domicilio es un
13
+ * requisito mexicano. `DATA_CONFIRMATION` es el paso de "revisá y confirmá tus datos"; se llama así y
14
+ * no `INFO_SELF_VERIFY` para no confundirlo con la verificación de Metamap de `KYC_IDENTIFICATION`.
15
+ */
16
+ var OnboardingStepIdEnum;
17
+ (function (OnboardingStepIdEnum) {
18
+ OnboardingStepIdEnum["KYC_IDENTIFICATION"] = "KYC_IDENTIFICATION";
19
+ OnboardingStepIdEnum["INCOME_INFORMATION"] = "INCOME_INFORMATION";
20
+ OnboardingStepIdEnum["US_ADDRESS"] = "US_ADDRESS";
21
+ OnboardingStepIdEnum["MX_PROOF_OF_ADDRESS"] = "MX_PROOF_OF_ADDRESS";
22
+ OnboardingStepIdEnum["MX_REGULATORY_QUESTIONS"] = "MX_REGULATORY_QUESTIONS";
23
+ OnboardingStepIdEnum["MX_BENEFICIARIES"] = "MX_BENEFICIARIES";
24
+ OnboardingStepIdEnum["DATA_CONFIRMATION"] = "DATA_CONFIRMATION";
25
+ })(OnboardingStepIdEnum || (exports.OnboardingStepIdEnum = OnboardingStepIdEnum = {}));
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Estado de un paso. Mapea 1:1 a lo que pinta la app: caja cerrada / caja abierta / verde.
3
+ *
4
+ * Solo `KYC_IDENTIFICATION` (por veto o verificación en curso) y `DATA_CONFIRMATION` (porque agrega
5
+ * sobre los demás) pueden venir en `LOCKED`. Los otros cinco pasos son `UNLOCKED` o `DONE` — no existe
6
+ * insumo que los pueda bloquear (DEC-011 de onboarding-business).
7
+ */
8
+ export declare enum OnboardingStepStatusEnum {
9
+ LOCKED = "LOCKED",
10
+ UNLOCKED = "UNLOCKED",
11
+ DONE = "DONE"
12
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnboardingStepStatusEnum = void 0;
4
+ /**
5
+ * Estado de un paso. Mapea 1:1 a lo que pinta la app: caja cerrada / caja abierta / verde.
6
+ *
7
+ * Solo `KYC_IDENTIFICATION` (por veto o verificación en curso) y `DATA_CONFIRMATION` (porque agrega
8
+ * sobre los demás) pueden venir en `LOCKED`. Los otros cinco pasos son `UNLOCKED` o `DONE` — no existe
9
+ * insumo que los pueda bloquear (DEC-011 de onboarding-business).
10
+ */
11
+ var OnboardingStepStatusEnum;
12
+ (function (OnboardingStepStatusEnum) {
13
+ OnboardingStepStatusEnum["LOCKED"] = "LOCKED";
14
+ OnboardingStepStatusEnum["UNLOCKED"] = "UNLOCKED";
15
+ OnboardingStepStatusEnum["DONE"] = "DONE";
16
+ })(OnboardingStepStatusEnum || (exports.OnboardingStepStatusEnum = OnboardingStepStatusEnum = {}));
@@ -0,0 +1,5 @@
1
+ export * from './enums/OnboardingStepIdEnum';
2
+ export * from './enums/OnboardingStepStatusEnum';
3
+ export * from './enums/OnboardingAccountStatusEnum';
4
+ export * from './enums/OnboardingAccountReasonEnum';
5
+ export * from './dtos/responses/OnboardingStepsResponse';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Enums
18
+ __exportStar(require("./enums/OnboardingStepIdEnum"), exports);
19
+ __exportStar(require("./enums/OnboardingStepStatusEnum"), exports);
20
+ __exportStar(require("./enums/OnboardingAccountStatusEnum"), exports);
21
+ __exportStar(require("./enums/OnboardingAccountReasonEnum"), exports);
22
+ // Response DTOs
23
+ __exportStar(require("./dtos/responses/OnboardingStepsResponse"), exports);
@@ -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
+ }
@@ -9,28 +9,26 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ResendOtpRequest = void 0;
12
+ exports.CompleteMyProfileRequest = void 0;
13
13
  const class_transformer_1 = require("class-transformer");
14
14
  const class_validator_1 = require("class-validator");
15
15
  /**
16
- * Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
17
- * Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
18
- * identidad SIN password. `tenantId` obligatorio (DEC-064 el picker ya lo resolvió, NO "solo email").
19
- * El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
20
- * siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
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`.
21
19
  */
22
- class ResendOtpRequest {
20
+ class CompleteMyProfileRequest {
23
21
  }
24
- exports.ResendOtpRequest = ResendOtpRequest;
22
+ exports.CompleteMyProfileRequest = CompleteMyProfileRequest;
25
23
  __decorate([
26
24
  (0, class_transformer_1.Expose)(),
27
- (0, class_validator_1.IsEmail)(),
25
+ (0, class_validator_1.IsString)(),
28
26
  (0, class_validator_1.IsNotEmpty)(),
29
27
  __metadata("design:type", String)
30
- ], ResendOtpRequest.prototype, "email", void 0);
28
+ ], CompleteMyProfileRequest.prototype, "displayName", void 0);
31
29
  __decorate([
32
30
  (0, class_transformer_1.Expose)(),
33
- (0, class_validator_1.IsString)(),
34
- (0, class_validator_1.IsNotEmpty)(),
35
- __metadata("design:type", String)
36
- ], ResendOtpRequest.prototype, "tenantId", void 0);
31
+ (0, class_validator_1.IsOptional)(),
32
+ (0, class_validator_1.IsObject)(),
33
+ __metadata("design:type", Object)
34
+ ], CompleteMyProfileRequest.prototype, "customFields", void 0);
@@ -5,7 +5,37 @@ export declare class TransactionAlarmQueueMessage {
5
5
  peopleId: string;
6
6
  transactionNumber: string;
7
7
  amount: number;
8
+ /**
9
+ * @deprecated NO usar como nombre del cliente titular.
10
+ *
11
+ * Este campo lo pobla `transaction-business/TransactionAlertMapper`
12
+ * con `product.details.targetName` — es decir, el nombre del
13
+ * beneficiario/contraparte del transfer que registró el sistema
14
+ * originador, no el nombre del titular de la cuenta sobre la cual
15
+ * se genera la alerta.
16
+ *
17
+ * Fuente autoritativa del nombre del titular:
18
+ * identityApi.getPeopleByIds([peopleId])[0].indexName
19
+ *
20
+ * Ver risk-profile-business/AlarmEvaluationManager.evaluateAlarms
21
+ * (post-fix 2026-07-29) para el pattern de resolución correcto.
22
+ * Bug histórico: TransactionAlert_GT.indexName mostraba
23
+ * "NO INGRESADO" u otro placeholder cuando este campo llegaba vacío.
24
+ */
8
25
  indexName: string;
26
+ /**
27
+ * @deprecated NO usar como teléfono del cliente titular.
28
+ *
29
+ * Este campo lo pobla `transaction-business/TransactionAlertMapper`
30
+ * con `product.details.targetNumber` — es decir, el teléfono del
31
+ * beneficiario/contraparte del transfer, no del titular de la cuenta.
32
+ *
33
+ * Fuente autoritativa del teléfono del titular:
34
+ * directoryService.getById(directoryId).phoneNumber
35
+ *
36
+ * Ver risk-profile-business/AlarmEvaluationManager.evaluateAlarms
37
+ * (post-fix 2026-07-29).
38
+ */
9
39
  phoneNumber: string;
10
40
  transactionDate: string;
11
41
  transactionType: string;
@@ -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.243.0",
3
+ "version": "3.246.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
package/src/index.ts CHANGED
@@ -139,6 +139,10 @@ export * as LoanScoring from './loanScoring';
139
139
  // consolidado + estados crudos + datos de persona. El consolidado reusa RetailKycStatusEnum
140
140
  // (no hay enum consolidado propio — DEC-KYC-014). SureKeep Fase 2.
141
141
  export * as Kyc from './kyc';
142
+ // Onboarding: contrato de los pasos del onboarding resueltos por SCOPE y no por país
143
+ // (onboarding-business, DEC-009 a DEC-021). Dos bloques: `steps` (qué le falta hacer al usuario) y
144
+ // `accounts` (cómo va el trámite de cada cuenta, por lado).
145
+ export * as Onboarding from './onboarding';
142
146
  export * from './messaging';
143
147
  export * from './complaint';
144
148
  // PhoneSales: DTOs del lambda cell-phone-sales-business — variantes de dispositivo (modelo/color/
@@ -1,5 +1,5 @@
1
1
  import { Expose, Type } from 'class-transformer';
2
- import { IsEnum, IsISO8601, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator';
2
+ import { IsBoolean, IsEnum, IsISO8601, IsNotEmpty, IsOptional, IsString, ValidateNested } from 'class-validator';
3
3
  import { IdentificationDocumentStatus } from '../../identity/enums/IdentificationDocumentStatus';
4
4
  import { KycVerificationStatusEnum } from '../enums/KycVerificationStatusEnum';
5
5
  import { KycSubChecks } from '../dtos/KycSubChecks';
@@ -82,4 +82,17 @@ export class KycVerificationChangedV1 {
82
82
  */
83
83
  @Expose() @IsOptional() @ValidateNested() @Type(() => KycAddress)
84
84
  address?: KycAddress;
85
+
86
+ /**
87
+ * ¿El webhook YA persistió este domicilio en `fiado-address-lambda`? Solo es `true` cuando el
88
+ * documento es mexicano (único caso en que el webhook escribe) y el POST aterrizó.
89
+ *
90
+ * El consumidor lo necesita para NO volver a escribirlo: el address-lambda APILA — un segundo
91
+ * create sobre el mismo domicilio deja una fila duplicada en el expediente.
92
+ *
93
+ * OPCIONAL y aditivo: ausente o `false` significan "nadie lo guardó todavía", que es la
94
+ * degradación segura (el consumidor lo pide y lo guarda él).
95
+ */
96
+ @Expose() @IsOptional() @IsBoolean()
97
+ addressPushedToFiado?: boolean;
85
98
  }
@@ -0,0 +1,61 @@
1
+ import { Scope } from '../../../directory/enums/Scope';
2
+ import { OnboardingStepIdEnum } from '../../enums/OnboardingStepIdEnum';
3
+ import { OnboardingStepStatusEnum } from '../../enums/OnboardingStepStatusEnum';
4
+ import { OnboardingAccountStatusEnum } from '../../enums/OnboardingAccountStatusEnum';
5
+ import { OnboardingAccountReasonEnum } from '../../enums/OnboardingAccountReasonEnum';
6
+
7
+ /**
8
+ * Un paso: `id` + `status` y nada más. Sin motivo, sin metadata y sin lado (DEC-012 de
9
+ * onboarding-business).
10
+ *
11
+ * Para saber QUÉ documento pedir en `KYC_IDENTIFICATION`, el consumidor le pregunta a
12
+ * kyc-verifications-business, que es quien decide el workflow de Metamap (DEC-017).
13
+ */
14
+ export class OnboardingStepDto {
15
+ id!: OnboardingStepIdEnum;
16
+ status!: OnboardingStepStatusEnum;
17
+ }
18
+
19
+ /**
20
+ * El trámite de una cuenta, por lado. Es el único bloque que lleva motivo.
21
+ */
22
+ export class OnboardingAccountDto {
23
+ /** Scope de onboarding al que corresponde la cuenta: `fiado.on_us` o `fiado.on_mx`. */
24
+ scope!: Scope;
25
+ status!: OnboardingAccountStatusEnum;
26
+ /** `null` cuando no hay nada que explicar. */
27
+ reason!: OnboardingAccountReasonEnum | null;
28
+ }
29
+
30
+ /**
31
+ * Respuesta de `GET /onboarding-business/steps`.
32
+ *
33
+ * Dos bloques que contestan preguntas DISTINTAS, y por eso no pueden contradecirse:
34
+ * - `steps` → qué le falta HACER al usuario.
35
+ * - `accounts` → cómo va el trámite de cada cuenta.
36
+ *
37
+ * No recibe `countryId`: los pasos salen de los scopes del usuario y el sujeto sale del token.
38
+ */
39
+ export class OnboardingStepsResponse {
40
+ /**
41
+ * Solo los pasos aplicables al scope del usuario, **EN ORDEN DE PINTADO**. El consumidor pinta el
42
+ * array tal como llega: no reordena ni conoce las reglas de scope.
43
+ *
44
+ * El largo PUEDE CAMBIAR entre dos llamadas. Ejemplo real: en cuanto el usuario guarda una
45
+ * dirección, `MX_PROOF_OF_ADDRESS` deja de aplicar y sale de la lista.
46
+ *
47
+ * Vacío si la persona no tiene ningún scope de onboarding — eso NO es un error, significa que no
48
+ * tiene onboarding pendiente. Pasa justo después de firmar, cuando el scope pasa de `fiado.on_mx`
49
+ * a `fiado.mx`.
50
+ */
51
+ steps!: OnboardingStepDto[];
52
+
53
+ /**
54
+ * Un item por scope de onboarding que tenga el usuario. Vacío si no tiene ninguno.
55
+ *
56
+ * Cuando una cuenta viene en `REJECTED`, el consumidor tiene que darle PRIORIDAD sobre los pasos de
57
+ * esa cuenta: por diseño cinco de los siete pasos nunca se bloquean, así que un usuario rechazado
58
+ * igual va a recibir pasos abiertos.
59
+ */
60
+ accounts!: OnboardingAccountDto[];
61
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Motivo del estado de una cuenta. Solo viaja cuando hay algo que explicar (DEC-021 de
3
+ * onboarding-business).
4
+ *
5
+ * Las claves de texto de estos valores tienen que existir en Firebase Remote Config antes de que el
6
+ * backend empiece a mandarlos: el copy de la app vive ahí, así que un motivo sin clave deja la pantalla
7
+ * sin texto.
8
+ *
9
+ * `PROVIDER_DENIED` y `PROVIDER_REVIEW` aplican SOLO al lado USA, que es donde existe `CP_Status`. El
10
+ * lado mexicano no tiene señal propia de rechazo más allá de las banderas de verificación del
11
+ * documento: `authorizationNeededMXN` está en `NOT_REQUIRED` en el 100% de los registros de producción.
12
+ */
13
+ export enum OnboardingAccountReasonEnum {
14
+ /** Lista negra (`fiadoListApproved === false`). Afecta los dos lados. */
15
+ BLACKLIST = 'BLACKLIST',
16
+ /** Detección de duplicados (`duplicateUserDetection === true`). Afecta los dos lados. */
17
+ DUPLICATE_USER = 'DUPLICATE_USER',
18
+ /** Alguna verificación del documento de ese lado en `false`. */
19
+ DOCUMENT_INVALID = 'DOCUMENT_INVALID',
20
+ /** Documento subido y verificaciones todavía sin resolver. */
21
+ DOCUMENT_VERIFICATION = 'DOCUMENT_VERIFICATION',
22
+ /** Solo lado USA: el proveedor rechazó. */
23
+ PROVIDER_DENIED = 'PROVIDER_DENIED',
24
+ /** Solo lado USA: el proveedor está revisando o pidiendo documento. */
25
+ PROVIDER_REVIEW = 'PROVIDER_REVIEW',
26
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Estado del trámite de UNA cuenta (DEC-021 de onboarding-business).
3
+ *
4
+ * Es un eje distinto del de los pasos: `steps` dice qué le falta HACER al usuario, `accounts` dice cómo
5
+ * va el trámite. Un paso en `DONE` junto a una cuenta en `UNDER_REVIEW` no es contradicción — la
6
+ * persona ya hizo su parte.
7
+ *
8
+ * Va por lado y no como valor global porque en producción hay 230 personas con problema solo del lado
9
+ * USA y 28 solo del mexicano: para esas 258 un valor único mentiría, diciéndoles que no se les puede
10
+ * abrir cuenta cuando una de las dos sí.
11
+ *
12
+ * `OPEN` se deriva de la bandera de la cuenta (`MEX_DebitAccount` / `USA_DebitAccount`) y NUNCA del
13
+ * scope: cuando el backend crea la cuenta el scope sigue siendo el de onboarding, y recién cambia
14
+ * cuando el usuario firma los documentos legales. Derivarlo del scope produce una circularidad que
15
+ * deja al usuario con la cuenta creada y el contrato sin firmar de forma permanente.
16
+ */
17
+ export enum OnboardingAccountStatusEnum {
18
+ IN_PROGRESS = 'IN_PROGRESS',
19
+ UNDER_REVIEW = 'UNDER_REVIEW',
20
+ REJECTED = 'REJECTED',
21
+ OPEN = 'OPEN',
22
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Los 7 pasos del onboarding, resueltos por los scopes del usuario y NO por país (DEC-009, DEC-010 de
3
+ * onboarding-business).
4
+ *
5
+ * El orden de este enum no define el orden de pintado: la respuesta trae los pasos ya ordenados y la
6
+ * app pinta el array tal como llega.
7
+ *
8
+ * Los ids con prefijo de lado (`US_` / `MX_`) lo llevan porque **son** de un lado: lo que el rediseño
9
+ * elimina es el `countryId` de la entrada, no la realidad de que el comprobante de domicilio es un
10
+ * requisito mexicano. `DATA_CONFIRMATION` es el paso de "revisá y confirmá tus datos"; se llama así y
11
+ * no `INFO_SELF_VERIFY` para no confundirlo con la verificación de Metamap de `KYC_IDENTIFICATION`.
12
+ */
13
+ export enum OnboardingStepIdEnum {
14
+ KYC_IDENTIFICATION = 'KYC_IDENTIFICATION',
15
+ INCOME_INFORMATION = 'INCOME_INFORMATION',
16
+ US_ADDRESS = 'US_ADDRESS',
17
+ MX_PROOF_OF_ADDRESS = 'MX_PROOF_OF_ADDRESS',
18
+ MX_REGULATORY_QUESTIONS = 'MX_REGULATORY_QUESTIONS',
19
+ MX_BENEFICIARIES = 'MX_BENEFICIARIES',
20
+ DATA_CONFIRMATION = 'DATA_CONFIRMATION',
21
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Estado de un paso. Mapea 1:1 a lo que pinta la app: caja cerrada / caja abierta / verde.
3
+ *
4
+ * Solo `KYC_IDENTIFICATION` (por veto o verificación en curso) y `DATA_CONFIRMATION` (porque agrega
5
+ * sobre los demás) pueden venir en `LOCKED`. Los otros cinco pasos son `UNLOCKED` o `DONE` — no existe
6
+ * insumo que los pueda bloquear (DEC-011 de onboarding-business).
7
+ */
8
+ export enum OnboardingStepStatusEnum {
9
+ LOCKED = 'LOCKED',
10
+ UNLOCKED = 'UNLOCKED',
11
+ DONE = 'DONE',
12
+ }
@@ -0,0 +1,8 @@
1
+ // Enums
2
+ export * from './enums/OnboardingStepIdEnum';
3
+ export * from './enums/OnboardingStepStatusEnum';
4
+ export * from './enums/OnboardingAccountStatusEnum';
5
+ export * from './enums/OnboardingAccountReasonEnum';
6
+
7
+ // Response DTOs
8
+ export * from './dtos/responses/OnboardingStepsResponse';
@@ -22,10 +22,40 @@ export class TransactionAlarmQueueMessage {
22
22
  @IsNotEmpty()
23
23
  amount: number
24
24
 
25
+ /**
26
+ * @deprecated NO usar como nombre del cliente titular.
27
+ *
28
+ * Este campo lo pobla `transaction-business/TransactionAlertMapper`
29
+ * con `product.details.targetName` — es decir, el nombre del
30
+ * beneficiario/contraparte del transfer que registró el sistema
31
+ * originador, no el nombre del titular de la cuenta sobre la cual
32
+ * se genera la alerta.
33
+ *
34
+ * Fuente autoritativa del nombre del titular:
35
+ * identityApi.getPeopleByIds([peopleId])[0].indexName
36
+ *
37
+ * Ver risk-profile-business/AlarmEvaluationManager.evaluateAlarms
38
+ * (post-fix 2026-07-29) para el pattern de resolución correcto.
39
+ * Bug histórico: TransactionAlert_GT.indexName mostraba
40
+ * "NO INGRESADO" u otro placeholder cuando este campo llegaba vacío.
41
+ */
25
42
  @IsString()
26
43
  @IsNotEmpty()
27
44
  indexName: string
28
45
 
46
+ /**
47
+ * @deprecated NO usar como teléfono del cliente titular.
48
+ *
49
+ * Este campo lo pobla `transaction-business/TransactionAlertMapper`
50
+ * con `product.details.targetNumber` — es decir, el teléfono del
51
+ * beneficiario/contraparte del transfer, no del titular de la cuenta.
52
+ *
53
+ * Fuente autoritativa del teléfono del titular:
54
+ * directoryService.getById(directoryId).phoneNumber
55
+ *
56
+ * Ver risk-profile-business/AlarmEvaluationManager.evaluateAlarms
57
+ * (post-fix 2026-07-29).
58
+ */
29
59
  @IsString()
30
60
  @IsNotEmpty()
31
61
  phoneNumber: string
@@ -1,11 +0,0 @@
1
- /**
2
- * Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
3
- * `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
4
- * TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
5
- * @enum {string}
6
- */
7
- export declare enum ModifiableByRoleEnum {
8
- SUPER_ADMIN = "super_admin",
9
- SOFOM_ADMIN = "sofom_admin",
10
- RETAILER_ADMIN = "retailer_admin"
11
- }
@@ -1,15 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModifiableByRoleEnum = void 0;
4
- /**
5
- * Rol RBAC mínimo que puede modificar un parámetro (RBAC a nivel de parámetro, modelo-datos §8).
6
- * `retailer_admin` = "Admin VentasLuga" de M6 §8. Valores = identificadores de rol de RBAC F0.
7
- * TD-004: confirmar mapeo super_admin ↔ platform_super_admin con el naming real de F0.
8
- * @enum {string}
9
- */
10
- var ModifiableByRoleEnum;
11
- (function (ModifiableByRoleEnum) {
12
- ModifiableByRoleEnum["SUPER_ADMIN"] = "super_admin";
13
- ModifiableByRoleEnum["SOFOM_ADMIN"] = "sofom_admin";
14
- ModifiableByRoleEnum["RETAILER_ADMIN"] = "retailer_admin";
15
- })(ModifiableByRoleEnum || (exports.ModifiableByRoleEnum = ModifiableByRoleEnum = {}));
@@ -1,22 +0,0 @@
1
- import { MfaMethodEnum } from '../enums/MfaMethodEnum';
2
- /**
3
- * Body del POST /auth/resend-otp (público, anónimo). DEC-RBAC-054.
4
- * Reenvía el OTP del login re-disparando el challenge real CUSTOM_AUTH (EMAIL_OTP) para la
5
- * identidad SIN password. `tenantId` obligatorio (DEC-064 — el picker ya lo resolvió, NO "solo email").
6
- * El email se normaliza lowercase server-side. Postura anti-enumeración: respuesta 200 genérica
7
- * siempre, sin filtrar existencia (ver AuthLoginManager.resendChallengeOtp).
8
- */
9
- export declare class ResendOtpRequest {
10
- email: string;
11
- tenantId: string;
12
- }
13
- /**
14
- * Respuesta del resend-otp. `session`/`mfaMethod` frescos del nuevo challenge CUSTOM_AUTH.
15
- * Plain sin validators (no validamos lo que mandamos al cliente — fiado-validation-and-dtos § 7).
16
- * Ambos opcionales: en los caminos de rechazo silencioso (anti-enumeración) o ramas sin CUSTOM_AUTH
17
- * el server responde 200 genérico sin session ni método.
18
- */
19
- export interface ResendOtpResponse {
20
- session?: string;
21
- mfaMethod?: MfaMethodEnum;
22
- }
@@ -1,11 +0,0 @@
1
- /**
2
- * Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
3
- * Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
4
- * `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
5
- * server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
6
- * scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
7
- */
8
- export declare class ResendSelfRegisterOtpRequest {
9
- tenantId: string;
10
- email: string;
11
- }
@@ -1,36 +0,0 @@
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.ResendSelfRegisterOtpRequest = void 0;
13
- const class_transformer_1 = require("class-transformer");
14
- const class_validator_1 = require("class-validator");
15
- /**
16
- * Body del POST /self-register/resend-otp (público, anónimo). DEC-RBAC-054.
17
- * Re-envía el OTP del autoregistro (mecanismo messages-business, NO Cognito) tras validar un
18
- * `pending` existente. Misma postura anti-enumeración del start. El email se normaliza lowercase
19
- * server-side. DTO propio por endpoint (NO reusa SelfRegisterStartRequest, que exige roleId/scope/
20
- * scopeRef, ni SelfRegisterVerifyOtpRequest, que exige otp).
21
- */
22
- class ResendSelfRegisterOtpRequest {
23
- }
24
- exports.ResendSelfRegisterOtpRequest = ResendSelfRegisterOtpRequest;
25
- __decorate([
26
- (0, class_transformer_1.Expose)(),
27
- (0, class_validator_1.IsString)(),
28
- (0, class_validator_1.IsNotEmpty)(),
29
- __metadata("design:type", String)
30
- ], ResendSelfRegisterOtpRequest.prototype, "tenantId", void 0);
31
- __decorate([
32
- (0, class_transformer_1.Expose)(),
33
- (0, class_validator_1.IsEmail)(),
34
- (0, class_validator_1.IsNotEmpty)(),
35
- __metadata("design:type", String)
36
- ], ResendSelfRegisterOtpRequest.prototype, "email", void 0);