@fiado/type-kit 3.194.0 → 3.195.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 (229) hide show
  1. package/bin/helpers/constans/regex.d.ts +3 -0
  2. package/bin/helpers/constans/regex.js +12 -1
  3. package/bin/index.d.ts +2 -0
  4. package/bin/index.js +7 -1
  5. package/bin/retailCustomer/dtos/KycReview.d.ts +19 -0
  6. package/bin/retailCustomer/dtos/KycReview.js +56 -0
  7. package/bin/retailCustomer/dtos/RetailCustomer.d.ts +37 -0
  8. package/bin/retailCustomer/dtos/RetailCustomer.js +160 -0
  9. package/bin/retailCustomer/dtos/requests/AccountResultRequest.d.ts +13 -0
  10. package/bin/retailCustomer/dtos/requests/AccountResultRequest.js +48 -0
  11. package/bin/retailCustomer/dtos/requests/CreateCustomerRequest.d.ts +10 -0
  12. package/bin/retailCustomer/dtos/requests/CreateCustomerRequest.js +45 -0
  13. package/bin/retailCustomer/dtos/requests/KycReviewRequest.d.ts +10 -0
  14. package/bin/retailCustomer/dtos/requests/KycReviewRequest.js +33 -0
  15. package/bin/retailCustomer/dtos/requests/UpdateCustomerRequest.d.ts +10 -0
  16. package/bin/retailCustomer/dtos/requests/UpdateCustomerRequest.js +47 -0
  17. package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.d.ts +22 -0
  18. package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.js +97 -0
  19. package/bin/retailCustomer/dtos/responses/Customer360Response.d.ts +33 -0
  20. package/bin/retailCustomer/dtos/responses/Customer360Response.js +2 -0
  21. package/bin/retailCustomer/dtos/responses/CustomerResponse.d.ts +30 -0
  22. package/bin/retailCustomer/dtos/responses/CustomerResponse.js +2 -0
  23. package/bin/retailCustomer/enums/AccountStatusEnum.d.ts +9 -0
  24. package/bin/retailCustomer/enums/AccountStatusEnum.js +13 -0
  25. package/bin/retailCustomer/enums/KycModalityEnum.d.ts +9 -0
  26. package/bin/retailCustomer/enums/KycModalityEnum.js +13 -0
  27. package/bin/retailCustomer/enums/KycReviewResultEnum.d.ts +8 -0
  28. package/bin/retailCustomer/enums/KycReviewResultEnum.js +12 -0
  29. package/bin/retailCustomer/enums/RetailKycStatusEnum.d.ts +13 -0
  30. package/bin/retailCustomer/enums/RetailKycStatusEnum.js +17 -0
  31. package/bin/retailCustomer/events/CustomerCreatedV1.d.ts +7 -0
  32. package/bin/retailCustomer/events/CustomerCreatedV1.js +2 -0
  33. package/bin/retailCustomer/events/CustomerKycVerifiedV1.d.ts +27 -0
  34. package/bin/retailCustomer/events/CustomerKycVerifiedV1.js +2 -0
  35. package/bin/retailCustomer/events/CustomerUpdatedV1.d.ts +9 -0
  36. package/bin/retailCustomer/events/CustomerUpdatedV1.js +2 -0
  37. package/bin/retailCustomer/events/KycApprovedByComplianceV1.d.ts +12 -0
  38. package/bin/retailCustomer/events/KycApprovedByComplianceV1.js +2 -0
  39. package/bin/retailCustomer/events/KycRejectedByComplianceV1.d.ts +12 -0
  40. package/bin/retailCustomer/events/KycRejectedByComplianceV1.js +2 -0
  41. package/bin/retailCustomer/index.d.ts +18 -0
  42. package/bin/retailCustomer/index.js +39 -0
  43. package/bin/retailWizard/dtos/OtpVerification.d.ts +24 -0
  44. package/bin/retailWizard/dtos/OtpVerification.js +2 -0
  45. package/bin/retailWizard/dtos/PaginatedResult.d.ts +6 -0
  46. package/bin/retailWizard/dtos/PaginatedResult.js +2 -0
  47. package/bin/retailWizard/dtos/Prospect.d.ts +32 -0
  48. package/bin/retailWizard/dtos/Prospect.js +2 -0
  49. package/bin/retailWizard/dtos/ProspectNewCustomer.d.ts +5 -0
  50. package/bin/retailWizard/dtos/ProspectNewCustomer.js +28 -0
  51. package/bin/retailWizard/dtos/Sale.d.ts +42 -0
  52. package/bin/retailWizard/dtos/Sale.js +2 -0
  53. package/bin/retailWizard/dtos/SalePaymentDetail.d.ts +11 -0
  54. package/bin/retailWizard/dtos/SalePaymentDetail.js +51 -0
  55. package/bin/retailWizard/dtos/WizardBeneficiary.d.ts +13 -0
  56. package/bin/retailWizard/dtos/WizardBeneficiary.js +47 -0
  57. package/bin/retailWizard/dtos/WizardConsents.d.ts +8 -0
  58. package/bin/retailWizard/dtos/WizardConsents.js +47 -0
  59. package/bin/retailWizard/dtos/WizardPayment.d.ts +8 -0
  60. package/bin/retailWizard/dtos/WizardPayment.js +43 -0
  61. package/bin/retailWizard/dtos/WizardSession.d.ts +65 -0
  62. package/bin/retailWizard/dtos/WizardSession.js +2 -0
  63. package/bin/retailWizard/dtos/WizardWelcome.d.ts +9 -0
  64. package/bin/retailWizard/dtos/WizardWelcome.js +50 -0
  65. package/bin/retailWizard/dtos/requests/AddProductRequest.d.ts +10 -0
  66. package/bin/retailWizard/dtos/requests/AddProductRequest.js +38 -0
  67. package/bin/retailWizard/dtos/requests/AppInstallLinkRequest.d.ts +4 -0
  68. package/bin/retailWizard/dtos/requests/AppInstallLinkRequest.js +24 -0
  69. package/bin/retailWizard/dtos/requests/CancelSaleRequest.d.ts +8 -0
  70. package/bin/retailWizard/dtos/requests/CancelSaleRequest.js +28 -0
  71. package/bin/retailWizard/dtos/requests/CancelSessionRequest.d.ts +4 -0
  72. package/bin/retailWizard/dtos/requests/CancelSessionRequest.js +24 -0
  73. package/bin/retailWizard/dtos/requests/CompleteSaleRequest.d.ts +9 -0
  74. package/bin/retailWizard/dtos/requests/CompleteSaleRequest.js +29 -0
  75. package/bin/retailWizard/dtos/requests/ConfirmAddressRequest.d.ts +9 -0
  76. package/bin/retailWizard/dtos/requests/ConfirmAddressRequest.js +34 -0
  77. package/bin/retailWizard/dtos/requests/ConsentsRequest.d.ts +11 -0
  78. package/bin/retailWizard/dtos/requests/ConsentsRequest.js +35 -0
  79. package/bin/retailWizard/dtos/requests/CreateProspectRequest.d.ts +15 -0
  80. package/bin/retailWizard/dtos/requests/CreateProspectRequest.js +67 -0
  81. package/bin/retailWizard/dtos/requests/DeleteProductRequest.d.ts +4 -0
  82. package/bin/retailWizard/dtos/requests/DeleteProductRequest.js +23 -0
  83. package/bin/retailWizard/dtos/requests/ExternalReferralRequest.d.ts +8 -0
  84. package/bin/retailWizard/dtos/requests/ExternalReferralRequest.js +27 -0
  85. package/bin/retailWizard/dtos/requests/KycConfirmRequest.d.ts +10 -0
  86. package/bin/retailWizard/dtos/requests/KycConfirmRequest.js +35 -0
  87. package/bin/retailWizard/dtos/requests/KycManualRequest.d.ts +8 -0
  88. package/bin/retailWizard/dtos/requests/KycManualRequest.js +28 -0
  89. package/bin/retailWizard/dtos/requests/KycPrepareRequest.d.ts +10 -0
  90. package/bin/retailWizard/dtos/requests/KycPrepareRequest.js +27 -0
  91. package/bin/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.d.ts +4 -0
  92. package/bin/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.js +23 -0
  93. package/bin/retailWizard/dtos/requests/MarkProspectLostRequest.d.ts +4 -0
  94. package/bin/retailWizard/dtos/requests/MarkProspectLostRequest.js +24 -0
  95. package/bin/retailWizard/dtos/requests/OccupationRequest.d.ts +10 -0
  96. package/bin/retailWizard/dtos/requests/OccupationRequest.js +35 -0
  97. package/bin/retailWizard/dtos/requests/RegisterPaymentRequest.d.ts +12 -0
  98. package/bin/retailWizard/dtos/requests/RegisterPaymentRequest.js +42 -0
  99. package/bin/retailWizard/dtos/requests/ResendOtpRequest.d.ts +8 -0
  100. package/bin/retailWizard/dtos/requests/ResendOtpRequest.js +28 -0
  101. package/bin/retailWizard/dtos/requests/SaveBeneficiaryRequest.d.ts +5 -0
  102. package/bin/retailWizard/dtos/requests/SaveBeneficiaryRequest.js +25 -0
  103. package/bin/retailWizard/dtos/requests/SetPaymentMethodRequest.d.ts +5 -0
  104. package/bin/retailWizard/dtos/requests/SetPaymentMethodRequest.js +24 -0
  105. package/bin/retailWizard/dtos/requests/SignBeneficiaryAnnexRequest.d.ts +4 -0
  106. package/bin/retailWizard/dtos/requests/SignBeneficiaryAnnexRequest.js +23 -0
  107. package/bin/retailWizard/dtos/requests/SkipOtpRequest.d.ts +4 -0
  108. package/bin/retailWizard/dtos/requests/SkipOtpRequest.js +24 -0
  109. package/bin/retailWizard/dtos/requests/StartSessionRequest.d.ts +10 -0
  110. package/bin/retailWizard/dtos/requests/StartSessionRequest.js +35 -0
  111. package/bin/retailWizard/dtos/requests/UpdateProspectRequest.d.ts +8 -0
  112. package/bin/retailWizard/dtos/requests/UpdateProspectRequest.js +45 -0
  113. package/bin/retailWizard/dtos/requests/VerifyOtpRequest.d.ts +4 -0
  114. package/bin/retailWizard/dtos/requests/VerifyOtpRequest.js +24 -0
  115. package/bin/retailWizard/dtos/requests/WelcomeTopupRequest.d.ts +7 -0
  116. package/bin/retailWizard/dtos/requests/WelcomeTopupRequest.js +27 -0
  117. package/bin/retailWizard/enums/BeneficiaryRelationEnum.d.ts +18 -0
  118. package/bin/retailWizard/enums/BeneficiaryRelationEnum.js +22 -0
  119. package/bin/retailWizard/enums/CentralSyncStatusEnum.d.ts +14 -0
  120. package/bin/retailWizard/enums/CentralSyncStatusEnum.js +18 -0
  121. package/bin/retailWizard/enums/ExternalProviderEnum.d.ts +7 -0
  122. package/bin/retailWizard/enums/ExternalProviderEnum.js +11 -0
  123. package/bin/retailWizard/enums/FiadoPhoneStatusEnum.d.ts +15 -0
  124. package/bin/retailWizard/enums/FiadoPhoneStatusEnum.js +19 -0
  125. package/bin/retailWizard/enums/OccupationEnum.d.ts +13 -0
  126. package/bin/retailWizard/enums/OccupationEnum.js +17 -0
  127. package/bin/retailWizard/enums/OtpPurposeEnum.d.ts +10 -0
  128. package/bin/retailWizard/enums/OtpPurposeEnum.js +14 -0
  129. package/bin/retailWizard/enums/PaymentMethodEnum.d.ts +12 -0
  130. package/bin/retailWizard/enums/PaymentMethodEnum.js +16 -0
  131. package/bin/retailWizard/enums/PendingReasonEnum.d.ts +21 -0
  132. package/bin/retailWizard/enums/PendingReasonEnum.js +25 -0
  133. package/bin/retailWizard/enums/ProspectStatusEnum.d.ts +16 -0
  134. package/bin/retailWizard/enums/ProspectStatusEnum.js +20 -0
  135. package/bin/retailWizard/enums/SalePaymentMethodEnum.d.ts +6 -0
  136. package/bin/retailWizard/enums/SalePaymentMethodEnum.js +10 -0
  137. package/bin/retailWizard/enums/SaleStatusEnum.d.ts +10 -0
  138. package/bin/retailWizard/enums/SaleStatusEnum.js +14 -0
  139. package/bin/retailWizard/enums/SaleTypeEnum.d.ts +13 -0
  140. package/bin/retailWizard/enums/SaleTypeEnum.js +17 -0
  141. package/bin/retailWizard/enums/WizardStateEnum.d.ts +18 -0
  142. package/bin/retailWizard/enums/WizardStateEnum.js +22 -0
  143. package/bin/retailWizard/enums/WizardStepEnum.d.ts +13 -0
  144. package/bin/retailWizard/enums/WizardStepEnum.js +17 -0
  145. package/bin/retailWizard/events/SaleCancelledV1.d.ts +13 -0
  146. package/bin/retailWizard/events/SaleCancelledV1.js +2 -0
  147. package/bin/retailWizard/events/SaleCompletedV1.d.ts +17 -0
  148. package/bin/retailWizard/events/SaleCompletedV1.js +2 -0
  149. package/bin/retailWizard/events/SessionExpiredV1.d.ts +10 -0
  150. package/bin/retailWizard/events/SessionExpiredV1.js +2 -0
  151. package/bin/retailWizard/index.d.ts +54 -0
  152. package/bin/retailWizard/index.js +76 -0
  153. package/package.json +1 -1
  154. package/src/helpers/constans/regex.ts +16 -0
  155. package/src/index.ts +6 -0
  156. package/src/retailCustomer/dtos/KycReview.ts +41 -0
  157. package/src/retailCustomer/dtos/RetailCustomer.ts +132 -0
  158. package/src/retailCustomer/dtos/requests/AccountResultRequest.ts +34 -0
  159. package/src/retailCustomer/dtos/requests/CreateCustomerRequest.ts +28 -0
  160. package/src/retailCustomer/dtos/requests/KycReviewRequest.ts +18 -0
  161. package/src/retailCustomer/dtos/requests/UpdateCustomerRequest.ts +30 -0
  162. package/src/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.ts +79 -0
  163. package/src/retailCustomer/dtos/responses/Customer360Response.ts +37 -0
  164. package/src/retailCustomer/dtos/responses/CustomerResponse.ts +31 -0
  165. package/src/retailCustomer/enums/AccountStatusEnum.ts +9 -0
  166. package/src/retailCustomer/enums/KycModalityEnum.ts +9 -0
  167. package/src/retailCustomer/enums/KycReviewResultEnum.ts +8 -0
  168. package/src/retailCustomer/enums/RetailKycStatusEnum.ts +13 -0
  169. package/src/retailCustomer/events/CustomerCreatedV1.ts +7 -0
  170. package/src/retailCustomer/events/CustomerKycVerifiedV1.ts +28 -0
  171. package/src/retailCustomer/events/CustomerUpdatedV1.ts +9 -0
  172. package/src/retailCustomer/events/KycApprovedByComplianceV1.ts +12 -0
  173. package/src/retailCustomer/events/KycRejectedByComplianceV1.ts +12 -0
  174. package/src/retailCustomer/index.ts +27 -0
  175. package/src/retailWizard/dtos/OtpVerification.ts +25 -0
  176. package/src/retailWizard/dtos/PaginatedResult.ts +6 -0
  177. package/src/retailWizard/dtos/Prospect.ts +33 -0
  178. package/src/retailWizard/dtos/ProspectNewCustomer.ts +13 -0
  179. package/src/retailWizard/dtos/Sale.ts +43 -0
  180. package/src/retailWizard/dtos/SalePaymentDetail.ts +33 -0
  181. package/src/retailWizard/dtos/WizardBeneficiary.ts +31 -0
  182. package/src/retailWizard/dtos/WizardConsents.ts +29 -0
  183. package/src/retailWizard/dtos/WizardPayment.ts +26 -0
  184. package/src/retailWizard/dtos/WizardSession.ts +68 -0
  185. package/src/retailWizard/dtos/WizardWelcome.ts +31 -0
  186. package/src/retailWizard/dtos/requests/AddProductRequest.ts +22 -0
  187. package/src/retailWizard/dtos/requests/AppInstallLinkRequest.ts +10 -0
  188. package/src/retailWizard/dtos/requests/CancelSaleRequest.ts +14 -0
  189. package/src/retailWizard/dtos/requests/CancelSessionRequest.ts +10 -0
  190. package/src/retailWizard/dtos/requests/CompleteSaleRequest.ts +15 -0
  191. package/src/retailWizard/dtos/requests/ConfirmAddressRequest.ts +22 -0
  192. package/src/retailWizard/dtos/requests/ConsentsRequest.ts +21 -0
  193. package/src/retailWizard/dtos/requests/CreateProspectRequest.ts +47 -0
  194. package/src/retailWizard/dtos/requests/DeleteProductRequest.ts +9 -0
  195. package/src/retailWizard/dtos/requests/ExternalReferralRequest.ts +13 -0
  196. package/src/retailWizard/dtos/requests/KycConfirmRequest.ts +23 -0
  197. package/src/retailWizard/dtos/requests/KycManualRequest.ts +17 -0
  198. package/src/retailWizard/dtos/requests/KycPrepareRequest.ts +16 -0
  199. package/src/retailWizard/dtos/requests/MarkPcfCardDeliveredRequest.ts +9 -0
  200. package/src/retailWizard/dtos/requests/MarkProspectLostRequest.ts +10 -0
  201. package/src/retailWizard/dtos/requests/OccupationRequest.ts +20 -0
  202. package/src/retailWizard/dtos/requests/RegisterPaymentRequest.ts +26 -0
  203. package/src/retailWizard/dtos/requests/ResendOtpRequest.ts +14 -0
  204. package/src/retailWizard/dtos/requests/SaveBeneficiaryRequest.ts +11 -0
  205. package/src/retailWizard/dtos/requests/SetPaymentMethodRequest.ts +10 -0
  206. package/src/retailWizard/dtos/requests/SignBeneficiaryAnnexRequest.ts +9 -0
  207. package/src/retailWizard/dtos/requests/SkipOtpRequest.ts +10 -0
  208. package/src/retailWizard/dtos/requests/StartSessionRequest.ts +21 -0
  209. package/src/retailWizard/dtos/requests/UpdateProspectRequest.ts +28 -0
  210. package/src/retailWizard/dtos/requests/VerifyOtpRequest.ts +10 -0
  211. package/src/retailWizard/dtos/requests/WelcomeTopupRequest.ts +13 -0
  212. package/src/retailWizard/enums/BeneficiaryRelationEnum.ts +18 -0
  213. package/src/retailWizard/enums/CentralSyncStatusEnum.ts +14 -0
  214. package/src/retailWizard/enums/ExternalProviderEnum.ts +7 -0
  215. package/src/retailWizard/enums/FiadoPhoneStatusEnum.ts +15 -0
  216. package/src/retailWizard/enums/OccupationEnum.ts +13 -0
  217. package/src/retailWizard/enums/OtpPurposeEnum.ts +10 -0
  218. package/src/retailWizard/enums/PaymentMethodEnum.ts +12 -0
  219. package/src/retailWizard/enums/PendingReasonEnum.ts +21 -0
  220. package/src/retailWizard/enums/ProspectStatusEnum.ts +16 -0
  221. package/src/retailWizard/enums/SalePaymentMethodEnum.ts +6 -0
  222. package/src/retailWizard/enums/SaleStatusEnum.ts +10 -0
  223. package/src/retailWizard/enums/SaleTypeEnum.ts +13 -0
  224. package/src/retailWizard/enums/WizardStateEnum.ts +18 -0
  225. package/src/retailWizard/enums/WizardStepEnum.ts +13 -0
  226. package/src/retailWizard/events/SaleCancelledV1.ts +13 -0
  227. package/src/retailWizard/events/SaleCompletedV1.ts +17 -0
  228. package/src/retailWizard/events/SessionExpiredV1.ts +10 -0
  229. package/src/retailWizard/index.ts +65 -0
@@ -0,0 +1,31 @@
1
+ import { AddressBase } from '../../../address/dtos/AddressBase';
2
+ import { AccountStatusEnum } from '../../enums/AccountStatusEnum';
3
+ import { KycModalityEnum } from '../../enums/KycModalityEnum';
4
+ import { RetailKycStatusEnum } from '../../enums/RetailKycStatusEnum';
5
+
6
+ /**
7
+ * Vista de un cliente retail hacia el consumidor (BO / api-invoker). SureKeep Fase 2 — pista Retail.
8
+ * `address` reusa el `AddressBase` canónico de Fiado (ver TD en RetailCustomer.address).
9
+ */
10
+ export interface CustomerResponse {
11
+ retailCustomerId: string;
12
+ retailerId: string;
13
+ name: string;
14
+ phone: string;
15
+ curp: string;
16
+ birthDate: string | null;
17
+ fiadoDirectoryId: string | null;
18
+ fiadoPeopleId: string | null;
19
+ pcfAccountId: string | null;
20
+ pcfClabe: string | null;
21
+ pcfAccountLevel: 1 | 2 | null;
22
+ accountStatus: AccountStatusEnum | null;
23
+ failReason: string | null;
24
+ welcomeAccredited: boolean;
25
+ address: AddressBase | null;
26
+ addressConfirmed: boolean;
27
+ kycStatus: RetailKycStatusEnum;
28
+ kycModality: KycModalityEnum | null;
29
+ createdAt: string;
30
+ updatedAt: string;
31
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Estado de la apertura async de la cuenta PagoConFiado (PCF) del cliente retail (D35).
3
+ * SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum AccountStatusEnum {
6
+ OPENING = 'OPENING',
7
+ OPEN = 'OPEN',
8
+ FAILED = 'FAILED',
9
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Modalidad con la que el cliente ejecuta el KYC en el wizard (M1 §213-329).
3
+ * SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum KycModalityEnum {
6
+ CUSTOMER_LINK = 'CUSTOMER_LINK',
7
+ STORE_DEVICE = 'STORE_DEVICE',
8
+ MANUAL = 'MANUAL',
9
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Resultado de la revisión manual del oficial de Cumplimiento (D21).
3
+ * SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum KycReviewResultEnum {
6
+ APPROVED = 'APPROVED',
7
+ REJECTED = 'REJECTED',
8
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Estado del KYC del cliente retail (vocabulario retail; espejo operativo del KYC de Fiado).
3
+ * PENDING (sin resultado) · VERIFIED (Metamap OK) · FAILED (incluye PLD) · MANUAL (captura manual,
4
+ * cae en cola de Cumplimiento) · REVIEW (esperando resolución de Cumplimiento).
5
+ * SureKeep Fase 2 — pista Retail.
6
+ */
7
+ export enum RetailKycStatusEnum {
8
+ PENDING = 'PENDING',
9
+ VERIFIED = 'VERIFIED',
10
+ FAILED = 'FAILED',
11
+ MANUAL = 'MANUAL',
12
+ REVIEW = 'REVIEW',
13
+ }
@@ -0,0 +1,7 @@
1
+ /** Emitido cuando se da de alta un cliente retail (→ cola Central). SureKeep Fase 2 — pista Retail. */
2
+ export interface CustomerCreatedV1 {
3
+ retailCustomerId: string;
4
+ retailerId: string;
5
+ phone: string;
6
+ occurredAt: string;
7
+ }
@@ -0,0 +1,28 @@
1
+ import { KycModalityEnum } from '../enums/KycModalityEnum';
2
+ import { RetailKycStatusEnum } from '../enums/RetailKycStatusEnum';
3
+
4
+ /**
5
+ * Puente retail↔sofom (D24/D35) — emitido en la MISMA TX del `upsert-from-kyc` con el payload OCR
6
+ * completo. Lo consume `loan-credit-business` (idempotente, hidrata `LoanBorrower_GT`) y dispara la
7
+ * apertura de cuenta async. También alimenta CDC→Iceberg (atomicidad efectiva por outbox).
8
+ * SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export interface CustomerKycVerifiedV1 {
11
+ retailCustomerId: string;
12
+ retailerId: string;
13
+ fiadoDirectoryId: string;
14
+ fiadoPeopleId: string;
15
+ phone: string;
16
+ curp: string;
17
+ firstName: string;
18
+ paternalLastName: string;
19
+ maternalLastName: string | null;
20
+ birthDate: string;
21
+ sex: string | null;
22
+ nationality: string | null;
23
+ documentValidUntil: string | null;
24
+ addressRaw: string | null;
25
+ kycStatus: RetailKycStatusEnum;
26
+ kycModality: KycModalityEnum;
27
+ occurredAt: string;
28
+ }
@@ -0,0 +1,9 @@
1
+ /** Emitido cuando se editan datos de contacto/PII de un cliente retail. SureKeep Fase 2 — pista Retail. */
2
+ export interface CustomerUpdatedV1 {
3
+ retailCustomerId: string;
4
+ retailerId: string;
5
+ /** Nombres de los campos modificados (sin sus valores — PII zero-tolerance). */
6
+ updatedFields: string[];
7
+ updatedBy: string;
8
+ occurredAt: string;
9
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Emitido cuando el oficial de Cumplimiento APRUEBA un KYC en revisión manual (D21). Dispara post-pasos
3
+ * idempotentes fuera de la TX (espejo a Fiado + apertura PCF N1 diferida). SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export interface KycApprovedByComplianceV1 {
6
+ retailCustomerId: string;
7
+ retailerId: string;
8
+ reviewedBy: string;
9
+ justification: string;
10
+ metamapVerificationId: string;
11
+ occurredAt: string;
12
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Emitido cuando el oficial de Cumplimiento RECHAZA un KYC en revisión manual (D21).
3
+ * SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export interface KycRejectedByComplianceV1 {
6
+ retailCustomerId: string;
7
+ retailerId: string;
8
+ reviewedBy: string;
9
+ justification: string;
10
+ metamapVerificationId: string;
11
+ occurredAt: string;
12
+ }
@@ -0,0 +1,27 @@
1
+ // Enums
2
+ export * from './enums/AccountStatusEnum';
3
+ export * from './enums/RetailKycStatusEnum';
4
+ export * from './enums/KycModalityEnum';
5
+ export * from './enums/KycReviewResultEnum';
6
+
7
+ // Entidades (planas, con class-validator + @Expose)
8
+ export * from './dtos/KycReview';
9
+ export * from './dtos/RetailCustomer';
10
+
11
+ // Request DTOs (input validado por endpoint)
12
+ export * from './dtos/requests/CreateCustomerRequest';
13
+ export * from './dtos/requests/UpsertCustomerFromKycRequest';
14
+ export * from './dtos/requests/UpdateCustomerRequest';
15
+ export * from './dtos/requests/AccountResultRequest';
16
+ export * from './dtos/requests/KycReviewRequest';
17
+
18
+ // Response DTOs
19
+ export * from './dtos/responses/CustomerResponse';
20
+ export * from './dtos/responses/Customer360Response';
21
+
22
+ // Contratos de eventos (PascalCase + sufijo V1)
23
+ export * from './events/CustomerCreatedV1';
24
+ export * from './events/CustomerUpdatedV1';
25
+ export * from './events/CustomerKycVerifiedV1';
26
+ export * from './events/KycApprovedByComplianceV1';
27
+ export * from './events/KycRejectedByComplianceV1';
@@ -0,0 +1,25 @@
1
+ import type { OtpPurposeEnum } from '../enums/OtpPurposeEnum';
2
+
3
+ /**
4
+ * Verificación OTP (modelo-datos §2). NO es tabla aparte: vive como ítem en
5
+ * `<T>RetailWizardSession_GT` (pk `SESSION#<sessionId>` · sk `OTP#<ulid>`) — misma partición de la
6
+ * sesión → 1 Query trae sesión + OTPs. El código lo genera/valida `messages-business` (D5); aquí
7
+ * solo trackeamos el `messagesLogId`, nunca el código. SureKeep Fase 2 — pista Retail.
8
+ */
9
+ export interface OtpVerification {
10
+ otpId: string;
11
+ sessionId: string;
12
+ purpose: OtpPurposeEnum;
13
+ /** Sustituye al `code_hash` de v0.1 (D5): tracking del envío en messages-business. */
14
+ messagesLogId: string;
15
+ channelsDispatched: string[];
16
+ /** Máx 3 → 423 OTP_MAX_TRIES. */
17
+ attempts: number;
18
+ /** 5 min. */
19
+ expiresAt: string;
20
+ verifiedAt: string | null;
21
+ createdBy: string;
22
+ updatedBy: string;
23
+ createdAt: number;
24
+ updatedAt: number;
25
+ }
@@ -0,0 +1,6 @@
1
+ /** Resultado paginado genérico (cursor opaco `nextToken`). SureKeep Fase 2 — pista Retail. */
2
+ export interface PaginatedResult<T> {
3
+ items: T[];
4
+ count: number;
5
+ nextToken?: string;
6
+ }
@@ -0,0 +1,33 @@
1
+ import type { ProspectStatusEnum } from '../enums/ProspectStatusEnum';
2
+ import type { PendingReasonEnum } from '../enums/PendingReasonEnum';
3
+ import type { ProspectNewCustomer } from './ProspectNewCustomer';
4
+
5
+ /**
6
+ * Prospecto (modelo-datos §4). pk `PROSPECT#<prospectId>` · sk `META` · GSIs
7
+ * `storeId-nextContactAt-index`, `seller-nextContactAt-index`. La reanudación lee la WizardSession
8
+ * real (no se duplica el snapshot del wizard). SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export interface Prospect {
11
+ prospectId: string;
12
+ retailerId: string;
13
+ storeId: string;
14
+ sellerRetailUserId: string;
15
+ /** Identificado vs captura manual (uno de los dos). */
16
+ retailCustomerId: string | null;
17
+ newCustomer: ProspectNewCustomer | null;
18
+ productSku: string | null;
19
+ pendingReason: PendingReasonEnum;
20
+ /** Obligatorio si `pendingReason=OTHER`; ≤200. */
21
+ freeReason: string | null;
22
+ /** Agenda (default mañana); urgencia derivada OVERDUE/TODAY/UPCOMING. */
23
+ nextContactAt: string;
24
+ notes: string | null;
25
+ status: ProspectStatusEnum;
26
+ wizardSessionId: string | null;
27
+ saleId: string | null;
28
+ lastContactAt: string | null;
29
+ createdBy: string;
30
+ updatedBy: string;
31
+ createdAt: number;
32
+ updatedAt: number;
33
+ }
@@ -0,0 +1,13 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString } from 'class-validator';
3
+
4
+ /** Captura manual de un cliente no identificado en un prospecto (`Prospect.newCustomer`). SureKeep Fase 2 — pista Retail. */
5
+ export class ProspectNewCustomer {
6
+ @Expose()
7
+ @IsString()
8
+ name!: string;
9
+
10
+ @Expose()
11
+ @IsString()
12
+ phone!: string;
13
+ }
@@ -0,0 +1,43 @@
1
+ import type { SaleTypeEnum } from '../enums/SaleTypeEnum';
2
+ import type { SaleStatusEnum } from '../enums/SaleStatusEnum';
3
+ import type { SalePaymentMethodEnum } from '../enums/SalePaymentMethodEnum';
4
+ import type { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
5
+ import type { CentralSyncStatusEnum } from '../enums/CentralSyncStatusEnum';
6
+ import type { SalePaymentDetail } from './SalePaymentDetail';
7
+
8
+ /**
9
+ * Venta (modelo-datos §3). pk `SALE#<saleId>` · sk `META` · 4 GSIs (`retailerId-soldAt-index`,
10
+ * `storeId-soldAt-index`, `seller-soldAt-index`, `customerId-soldAt-index`). Unicidad de folio vía
11
+ * `UNIQ#FOLIO#<folio>` en la MISMA TransactWriteItems del cierre. SureKeep Fase 2 — pista Retail.
12
+ */
13
+ export interface Sale {
14
+ saleId: string;
15
+ retailerId: string;
16
+ storeId: string;
17
+ sellerRetailUserId: string;
18
+ retailCustomerId: string;
19
+ wizardSessionId: string;
20
+ type: SaleTypeEnum;
21
+ externalProvider: ExternalProviderEnum | null;
22
+ sku: string;
23
+ /** IMEI consumido del silo también en contado (local-first); null en EXTERNAL_REFERRAL (D15). */
24
+ imei: string | null;
25
+ /** 0 en EXTERNAL_REFERRAL. */
26
+ amountCents: number;
27
+ paymentMethod: SalePaymentMethodEnum | null;
28
+ /** `LG-T{storeCode}-VTA-{5hex}-{YYYY}W{ww}` (D11) — único vía `UNIQ#FOLIO`. */
29
+ folio: string;
30
+ paymentDetail: SalePaymentDetail | null;
31
+ soldAt: string;
32
+ cardNumberDelivered: string | null;
33
+ centralSyncStatus: CentralSyncStatusEnum;
34
+ centralTag: string | null;
35
+ status: SaleStatusEnum;
36
+ cancelledAt: string | null;
37
+ /** Reason OBLIGATORIO en cancelación (AuditTrail) — flujo C. */
38
+ cancelReason: string | null;
39
+ createdBy: string;
40
+ updatedBy: string;
41
+ createdAt: number;
42
+ updatedAt: number;
43
+ }
@@ -0,0 +1,33 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsBoolean, IsOptional, IsString } from 'class-validator';
3
+
4
+ /**
5
+ * Detalle del pago según el medio (`Sale.paymentDetail`): efectivo `{cashConfirmedInRegister}` ·
6
+ * tarjeta `{cardLast4, authCode}` · SPEI `{speiTrackingKey, senderClabe?}`. SureKeep Fase 2 — pista Retail.
7
+ */
8
+ export class SalePaymentDetail {
9
+ @Expose()
10
+ @IsOptional()
11
+ @IsBoolean()
12
+ cashConfirmedInRegister?: boolean;
13
+
14
+ @Expose()
15
+ @IsOptional()
16
+ @IsString()
17
+ cardLast4?: string;
18
+
19
+ @Expose()
20
+ @IsOptional()
21
+ @IsString()
22
+ authCode?: string;
23
+
24
+ @Expose()
25
+ @IsOptional()
26
+ @IsString()
27
+ speiTrackingKey?: string;
28
+
29
+ @Expose()
30
+ @IsOptional()
31
+ @IsString()
32
+ senderClabe?: string;
33
+ }
@@ -0,0 +1,31 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsInt, IsOptional, IsString, Max, Min } from 'class-validator';
3
+ import { BeneficiaryRelationEnum } from '../enums/BeneficiaryRelationEnum';
4
+
5
+ /**
6
+ * Beneficiario capturado en el paso 10 (bienvenida N2). Se envía a `IAccountBeneficiaryApi.create`
7
+ * (expediente wallet Fiado). El cliente puede NO dar beneficiario (opcional en régimen simplificado N1).
8
+ * SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export class WizardBeneficiary {
11
+ @Expose()
12
+ @IsString()
13
+ fullName!: string;
14
+
15
+ @Expose()
16
+ @IsEnum(BeneficiaryRelationEnum)
17
+ relation!: BeneficiaryRelationEnum;
18
+
19
+ /** Porcentaje de asignación (1-100). Si hay un solo beneficiario, típicamente 100. */
20
+ @Expose()
21
+ @IsOptional()
22
+ @IsInt()
23
+ @Min(1)
24
+ @Max(100)
25
+ percentage?: number;
26
+
27
+ @Expose()
28
+ @IsOptional()
29
+ @IsString()
30
+ freeRelation?: string;
31
+ }
@@ -0,0 +1,29 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsOptional, IsString, Matches } from 'class-validator';
3
+ import { regexIso8601 } from '../../helpers/constans/regex';
4
+
5
+ /** Consentimientos aceptados en el wizard (VL + contrato PCF). SureKeep Fase 2 — pista Retail. */
6
+ export class WizardConsents {
7
+ @Expose()
8
+ @IsString()
9
+ vlTermsVersion!: string;
10
+
11
+ @Expose()
12
+ @IsString()
13
+ pcfContractVersion!: string;
14
+
15
+ @Expose()
16
+ @IsString()
17
+ @Matches(regexIso8601, { message: 'acceptedAt debe ser una fecha ISO 8601' })
18
+ acceptedAt!: string;
19
+
20
+ @Expose()
21
+ @IsOptional()
22
+ @IsString()
23
+ ip?: string;
24
+
25
+ @Expose()
26
+ @IsOptional()
27
+ @IsString()
28
+ deviceFingerprint?: string;
29
+ }
@@ -0,0 +1,26 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsInt, IsOptional, IsString, Matches, Min } from 'class-validator';
3
+ import { regexIso8601 } from '../../helpers/constans/regex';
4
+ import { SalePaymentMethodEnum } from '../enums/SalePaymentMethodEnum';
5
+
6
+ /** Registro del pago de contado dentro de la sesión (`WizardSession.payment`). SureKeep Fase 2 — pista Retail. */
7
+ export class WizardPayment {
8
+ @Expose()
9
+ @IsEnum(SalePaymentMethodEnum)
10
+ method!: SalePaymentMethodEnum;
11
+
12
+ @Expose()
13
+ @IsInt()
14
+ @Min(0)
15
+ amountCents!: number;
16
+
17
+ @Expose()
18
+ @IsOptional()
19
+ @IsString()
20
+ detail?: string;
21
+
22
+ @Expose()
23
+ @IsString()
24
+ @Matches(regexIso8601, { message: 'paidAt debe ser una fecha ISO 8601' })
25
+ paidAt!: string;
26
+ }
@@ -0,0 +1,68 @@
1
+ import type { WizardStateEnum } from '../enums/WizardStateEnum';
2
+ import type { WizardStepEnum } from '../enums/WizardStepEnum';
3
+ import type { FiadoPhoneStatusEnum } from '../enums/FiadoPhoneStatusEnum';
4
+ import type { PaymentMethodEnum } from '../enums/PaymentMethodEnum';
5
+ import type { ExternalProviderEnum } from '../enums/ExternalProviderEnum';
6
+ import type { OccupationEnum } from '../enums/OccupationEnum';
7
+ import type { WizardConsents } from './WizardConsents';
8
+ import type { WizardPayment } from './WizardPayment';
9
+ import type { WizardWelcome } from './WizardWelcome';
10
+
11
+ /** Modalidad de captura del KYC (M1 §213-329). */
12
+ export type KycModality = 'CUSTOMER_LINK' | 'STORE_DEVICE' | 'MANUAL';
13
+
14
+ /** Estado de la apertura de cuenta async (D35) — espejo de `RetailCustomer.accountStatus`. */
15
+ export type AccountStatus = 'OPENING' | 'OPEN' | 'FAILED';
16
+
17
+ /**
18
+ * Estado de la SAGA del wizard (modelo-datos §1). ES la tabla de estado: cada paso persiste su
19
+ * avance; reanudable. pk `SESSION#<sessionId>` · sk `META` · GSIs `phone-state-index`,
20
+ * `customerId-pk-index`. Los ítems `OTP#` viven en la MISMA partición (ver OtpVerification).
21
+ * SureKeep Fase 2 — pista Retail.
22
+ */
23
+ export interface WizardSession {
24
+ sessionId: string;
25
+ retailerId: string;
26
+ storeId: string;
27
+ sellerRetailUserId: string;
28
+ /** Llave de la sesión; 1 ACTIVE por teléfono vía `UNIQ#ACTIVE-PHONE#<phone>`. */
29
+ phone: string;
30
+ retailCustomerId: string | null;
31
+ currentStep: WizardStepEnum;
32
+ state: WizardStateEnum;
33
+ otpVerified: boolean;
34
+ otpSkipped: boolean;
35
+ consents: WizardConsents | null;
36
+ /** Espejo del estado KYC (fuente = customer). */
37
+ kycStatus: string | null;
38
+ kycModality: KycModality | null;
39
+ metamapIdentityId: string | null;
40
+ occupation: OccupationEnum | null;
41
+ occupationOther: string | null;
42
+ /** Del gate `signInPhoneNumber` del 01a (D27). */
43
+ fiadoPhoneStatus: FiadoPhoneStatusEnum | null;
44
+ fiadoDirectoryId: string | null;
45
+ fiadoPeopleId: string | null;
46
+ pcfProvisioned: boolean;
47
+ accountOpened: boolean;
48
+ accountStatus: AccountStatus | null;
49
+ reservedSku: string | null;
50
+ reservedImei: string | null;
51
+ reservationExpiresAt: string | null;
52
+ paymentMethod: PaymentMethodEnum | null;
53
+ externalProvider: ExternalProviderEnum | null;
54
+ /** Folio de cobro server-side (D11), idempotente, sobrevive al volver atrás. */
55
+ folio: string | null;
56
+ payment: WizardPayment | null;
57
+ welcome: WizardWelcome | null;
58
+ saleId: string | null;
59
+ /** Prospecto vinculado (si la sesión se reanudó desde un prospecto): se cierra al cerrar la venta (D-prospecto). */
60
+ prospectId: string | null;
61
+ cancelReason: string | null;
62
+ /** TTL DDB ~24h de inactividad (D14). */
63
+ ttlEpoch: number;
64
+ createdBy: string;
65
+ updatedBy: string;
66
+ createdAt: number;
67
+ updatedAt: number;
68
+ }
@@ -0,0 +1,31 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsBoolean, IsIn, IsOptional, IsString } from 'class-validator';
3
+
4
+ /** Estado del paso 10 (bienvenida N2) dentro de la sesión (`WizardSession.welcome`). SureKeep Fase 2 — pista Retail. */
5
+ export class WizardWelcome {
6
+ @Expose()
7
+ @IsBoolean()
8
+ addressConfirmed!: boolean;
9
+
10
+ @Expose()
11
+ @IsBoolean()
12
+ benefCaptured!: boolean;
13
+
14
+ @Expose()
15
+ @IsBoolean()
16
+ annexSigned!: boolean;
17
+
18
+ @Expose()
19
+ @IsOptional()
20
+ @IsString()
21
+ annexVersion?: string;
22
+
23
+ @Expose()
24
+ @IsBoolean()
25
+ topupApplied!: boolean;
26
+
27
+ @Expose()
28
+ @IsOptional()
29
+ @IsIn([1, 2])
30
+ accountLevel?: 1 | 2;
31
+ }
@@ -0,0 +1,22 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsInt, IsString, Min } from 'class-validator';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/product — reserva un equipo del catálogo (paso 03). Reserva 30 min en
6
+ * RetailInventory F1 (condición atómica H2). El `cashPriceCents` de la reserva ancla el cobro
7
+ * (regla dura: `amountCents == cashPrice`). SureKeep Fase 2 — pista Retail.
8
+ */
9
+ export class AddProductRequest {
10
+ @Expose()
11
+ @IsString()
12
+ sku!: string;
13
+
14
+ @Expose()
15
+ @IsString()
16
+ imei!: string;
17
+
18
+ @Expose()
19
+ @IsInt()
20
+ @Min(0)
21
+ cashPriceCents!: number;
22
+ }
@@ -0,0 +1,10 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsOptional, IsString } from 'class-validator';
3
+
4
+ /** POST /wizard/sessions/:id/app/install-link — genera el shortlink de instalación de la app (QR, D9). SureKeep Fase 2 — pista Retail. */
5
+ export class AppInstallLinkRequest {
6
+ @Expose()
7
+ @IsOptional()
8
+ @IsString()
9
+ channel?: string;
10
+ }
@@ -0,0 +1,14 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, MaxLength } from 'class-validator';
3
+
4
+ /**
5
+ * POST /sales/:saleId/cancel — cancela una venta (flujo C, solo BO dentro de ventana param). `reason`
6
+ * OBLIGATORIO (AuditTrail). Retorna el IMEI al silo (`SOLD → AVAILABLE`) y emite `SaleCancelledV1`.
7
+ * SureKeep Fase 2 — pista Retail.
8
+ */
9
+ export class CancelSaleRequest {
10
+ @Expose()
11
+ @IsString()
12
+ @MaxLength(200)
13
+ reason!: string;
14
+ }
@@ -0,0 +1,10 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, MaxLength } from 'class-validator';
3
+
4
+ /** POST /wizard/sessions/:id/cancel — cancela la sesión (libera reserva + UNIQ#ACTIVE-PHONE). SureKeep Fase 2 — pista Retail. */
5
+ export class CancelSessionRequest {
6
+ @Expose()
7
+ @IsString()
8
+ @MaxLength(200)
9
+ reason!: string;
10
+ }
@@ -0,0 +1,15 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsOptional, IsString } from 'class-validator';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/complete-sale — cierra la venta (saga de 2 pasos, flujo 09). Exige
6
+ * payment registrado (regla dura). Consume el IMEI del silo (SOLD), asigna la tarjeta PCF, persiste
7
+ * la Sale con `UNIQ#FOLIO` y emite el outbox `SaleCompletedV1` en la MISMA tx. Cierra el prospecto
8
+ * vinculado si lo hay. `cardNumber` = tarjeta física entregada en tienda (S7). SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export class CompleteSaleRequest {
11
+ @Expose()
12
+ @IsOptional()
13
+ @IsString()
14
+ cardNumber?: string;
15
+ }
@@ -0,0 +1,22 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsBoolean, IsOptional, ValidateNested } from 'class-validator';
3
+ import { AddressBase } from '../../../address/dtos/AddressBase';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/address/confirm — el cliente ratifica/edita el domicilio en el paso 10
7
+ * (el `address` ya existía desde el 02e). Setea `addressConfirmed`. SureKeep Fase 2 — pista Retail.
8
+ */
9
+ export class ConfirmAddressRequest {
10
+ // TD-ADDRESSBASE-OCR: reusa el `AddressBase` canónico por decisión de Andrés (apego al spec + modelo-datos).
11
+ // La dirección OCR/editada puede NO llenar los ~12 campos requeridos de AddressBase → posible rechazo en
12
+ // runtime con @ValidateNested. Ajustar después (ver RetailCustomer.address).
13
+ @Expose()
14
+ @IsOptional()
15
+ @Type(() => AddressBase)
16
+ @ValidateNested()
17
+ address?: AddressBase;
18
+
19
+ @Expose()
20
+ @IsBoolean()
21
+ confirmed!: boolean;
22
+ }
@@ -0,0 +1,21 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsOptional, IsString, ValidateNested } from 'class-validator';
3
+ import { WizardConsents } from '../WizardConsents';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/consents — registra los consentimientos VL + contrato PCF. Dispara la
7
+ * tríada Fiado idempotente (D26): lookup directory por phone → reusa o crea onboarding+people+directory.
8
+ * Puede incluir el nombre del cliente (para el signUpProspect si no existe todavía). SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export class ConsentsRequest {
11
+ @Expose()
12
+ @Type(() => WizardConsents)
13
+ @ValidateNested()
14
+ consents!: WizardConsents;
15
+
16
+ /** Nombre del cliente (para la creación de identidad Fiado si aún no existe). */
17
+ @Expose()
18
+ @IsOptional()
19
+ @IsString()
20
+ customerName?: string;
21
+ }