@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,47 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsEnum, IsOptional, IsString, MaxLength, ValidateNested } from 'class-validator';
3
+ import { PendingReasonEnum } from '../../enums/PendingReasonEnum';
4
+ import { ProspectNewCustomer } from '../ProspectNewCustomer';
5
+
6
+ /**
7
+ * POST /prospects — crea un prospecto (seguimiento comercial). Identificado (`retailCustomerId`) vs
8
+ * captura manual (`newCustomer`). `freeReason` obligatorio si `pendingReason=OTHER`. SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export class CreateProspectRequest {
11
+ @Expose()
12
+ @IsOptional()
13
+ @IsString()
14
+ retailCustomerId?: string;
15
+
16
+ @Expose()
17
+ @IsOptional()
18
+ @Type(() => ProspectNewCustomer)
19
+ @ValidateNested()
20
+ newCustomer?: ProspectNewCustomer;
21
+
22
+ @Expose()
23
+ @IsOptional()
24
+ @IsString()
25
+ productSku?: string;
26
+
27
+ @Expose()
28
+ @IsEnum(PendingReasonEnum)
29
+ pendingReason!: PendingReasonEnum;
30
+
31
+ @Expose()
32
+ @IsOptional()
33
+ @IsString()
34
+ @MaxLength(200)
35
+ freeReason?: string;
36
+
37
+ @Expose()
38
+ @IsOptional()
39
+ @IsString()
40
+ nextContactAt?: string;
41
+
42
+ @Expose()
43
+ @IsOptional()
44
+ @IsString()
45
+ @MaxLength(200)
46
+ notes?: string;
47
+ }
@@ -0,0 +1,9 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString } from 'class-validator';
3
+
4
+ /** DELETE /wizard/sessions/:id/product — libera la reserva del equipo (vuelve al catálogo). SureKeep Fase 2 — pista Retail. */
5
+ export class DeleteProductRequest {
6
+ @Expose()
7
+ @IsString()
8
+ imei!: string;
9
+ }
@@ -0,0 +1,13 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum } from 'class-validator';
3
+ import { ExternalProviderEnum } from '../../enums/ExternalProviderEnum';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/external-referral — deriva a proveedor externo (pausa la sesión en
7
+ * PAUSED_EXTERNAL_REFERRAL). No consume IMEI del silo (D15). SureKeep Fase 2 — pista Retail.
8
+ */
9
+ export class ExternalReferralRequest {
10
+ @Expose()
11
+ @IsEnum(ExternalProviderEnum)
12
+ provider!: ExternalProviderEnum;
13
+ }
@@ -0,0 +1,23 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsOptional, IsString, ValidateNested } from 'class-validator';
3
+ import { AddressBase } from '../../../address/dtos/AddressBase';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/kyc/confirm — confirma el resultado KYC (server-side, idempotente por
7
+ * directoryId). Lo llama el consumer `kyc-inbound` (primario, D28) y opcionalmente el front (puente D25).
8
+ * Dispara el upsert customer (accountStatus=OPENING) + la apertura async (02f). SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export class KycConfirmRequest {
11
+ @Expose()
12
+ @IsString()
13
+ metamapIdentityId!: string;
14
+
15
+ // TD-ADDRESSBASE-OCR: reusa el `AddressBase` canónico por decisión de Andrés (apego al spec). Si el
16
+ // documento trae la dirección, el OCR puede NO llenar los ~12 campos requeridos de AddressBase →
17
+ // posible rechazo en runtime con @ValidateNested. Ajustar después (ver RetailCustomer.address).
18
+ @Expose()
19
+ @IsOptional()
20
+ @Type(() => AddressBase)
21
+ @ValidateNested()
22
+ address?: AddressBase;
23
+ }
@@ -0,0 +1,17 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { ValidateNested } from 'class-validator';
3
+ import { AddressBase } from '../../../address/dtos/AddressBase';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/kyc/manual — captura manual del domicilio cuando el documento no lo trae
7
+ * (MANUAL degrada wallet pero NO bloquea la venta de contado — regla dura). SureKeep Fase 2 — pista Retail.
8
+ */
9
+ export class KycManualRequest {
10
+ // TD-ADDRESSBASE-OCR: reusa el `AddressBase` canónico por decisión de Andrés (apego al spec). La
11
+ // captura manual puede NO llenar los ~12 campos requeridos de AddressBase → posible rechazo en runtime
12
+ // con @ValidateNested. Ajustar después (ver RetailCustomer.address).
13
+ @Expose()
14
+ @Type(() => AddressBase)
15
+ @ValidateNested()
16
+ address!: AddressBase;
17
+ }
@@ -0,0 +1,16 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsIn } from 'class-validator';
3
+
4
+ /** Modalidad de captura KYC solicitada. */
5
+ export type KycModalityInput = 'CUSTOMER_LINK' | 'STORE_DEVICE';
6
+
7
+ /**
8
+ * POST /wizard/sessions/:id/kyc/prepare — prepara el flujo KYC (getFlows) y devuelve el identityId
9
+ * de Metamap para que el SDK front lo arranque. `modality` = link al cliente o captura en tablet.
10
+ * SureKeep Fase 2 — pista Retail.
11
+ */
12
+ export class KycPrepareRequest {
13
+ @Expose()
14
+ @IsIn(['CUSTOMER_LINK', 'STORE_DEVICE'])
15
+ modality!: KycModalityInput;
16
+ }
@@ -0,0 +1,9 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString } from 'class-validator';
3
+
4
+ /** POST /wizard/sessions/:id/pcf-card/mark-delivered — marca la tarjeta física PCF como entregada (S7). SureKeep Fase 2 — pista Retail. */
5
+ export class MarkPcfCardDeliveredRequest {
6
+ @Expose()
7
+ @IsString()
8
+ cardNumber!: string;
9
+ }
@@ -0,0 +1,10 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, MaxLength } from 'class-validator';
3
+
4
+ /** POST /prospects/:id/mark-lost — marca el prospecto como LOST con motivo. SureKeep Fase 2 — pista Retail. */
5
+ export class MarkProspectLostRequest {
6
+ @Expose()
7
+ @IsString()
8
+ @MaxLength(200)
9
+ reason!: string;
10
+ }
@@ -0,0 +1,20 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsOptional, IsString, MaxLength } from 'class-validator';
3
+ import { OccupationEnum } from '../../enums/OccupationEnum';
4
+
5
+ /**
6
+ * POST /wizard/sessions/:id/occupation — registra la ocupación (dato del expediente PCF, vive en
7
+ * People de Fiado — D17). Sin ocupación NO se abre la cuenta (Manual v1.4 §8.13). `OTHER` abre texto ≤60.
8
+ * SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export class OccupationRequest {
11
+ @Expose()
12
+ @IsEnum(OccupationEnum)
13
+ occupation!: OccupationEnum;
14
+
15
+ @Expose()
16
+ @IsOptional()
17
+ @IsString()
18
+ @MaxLength(60)
19
+ occupationOther?: string;
20
+ }
@@ -0,0 +1,26 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { IsEnum, IsInt, IsOptional, ValidateNested, Min } from 'class-validator';
3
+ import { SalePaymentMethodEnum } from '../../enums/SalePaymentMethodEnum';
4
+ import { SalePaymentDetail } from '../SalePaymentDetail';
5
+
6
+ /**
7
+ * POST /wizard/sessions/:id/payment — registra el cobro de contado (idempotente por sesión). Regla
8
+ * dura: `amountCents == cashPrice` de la reserva. `POST /payment/folio` genera el folio server-side
9
+ * (D11) ANTES del registro; el folio no viaja en el body (lo posee el server). SureKeep Fase 2 — pista Retail.
10
+ */
11
+ export class RegisterPaymentRequest {
12
+ @Expose()
13
+ @IsEnum(SalePaymentMethodEnum)
14
+ method!: SalePaymentMethodEnum;
15
+
16
+ @Expose()
17
+ @IsInt()
18
+ @Min(0)
19
+ amountCents!: number;
20
+
21
+ @Expose()
22
+ @IsOptional()
23
+ @Type(() => SalePaymentDetail)
24
+ @ValidateNested()
25
+ detail?: SalePaymentDetail;
26
+ }
@@ -0,0 +1,14 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsOptional, IsString } from 'class-validator';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/otp/resend — reenvía OTP (resend 60s de cooldown). Body vacío: el destino
6
+ * es el teléfono de la sesión. Clase declarada para el contrato/validación (sin campos requeridos).
7
+ * SureKeep Fase 2 — pista Retail.
8
+ */
9
+ export class ResendOtpRequest {
10
+ @Expose()
11
+ @IsOptional()
12
+ @IsString()
13
+ channel?: string;
14
+ }
@@ -0,0 +1,11 @@
1
+ import { Expose, Type } from 'class-transformer';
2
+ import { ValidateNested } from 'class-validator';
3
+ import { WizardBeneficiary } from '../WizardBeneficiary';
4
+
5
+ /** POST /wizard/sessions/:id/beneficiary — captura el beneficiario (opcional en N1 simplificado). SureKeep Fase 2 — pista Retail. */
6
+ export class SaveBeneficiaryRequest {
7
+ @Expose()
8
+ @Type(() => WizardBeneficiary)
9
+ @ValidateNested()
10
+ beneficiary!: WizardBeneficiary;
11
+ }
@@ -0,0 +1,10 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum } from 'class-validator';
3
+ import { PaymentMethodEnum } from '../../enums/PaymentMethodEnum';
4
+
5
+ /** POST /wizard/sessions/:id/payment-method — router del paso 04 (contado / crédito / externo). SureKeep Fase 2 — pista Retail. */
6
+ export class SetPaymentMethodRequest {
7
+ @Expose()
8
+ @IsEnum(PaymentMethodEnum)
9
+ paymentMethod!: PaymentMethodEnum;
10
+ }
@@ -0,0 +1,9 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString } from 'class-validator';
3
+
4
+ /** POST /wizard/sessions/:id/beneficiary-annex/sign — firma el anexo de beneficiario (versión + OTP F3). SureKeep Fase 2 — pista Retail. */
5
+ export class SignBeneficiaryAnnexRequest {
6
+ @Expose()
7
+ @IsString()
8
+ annexVersion!: string;
9
+ }
@@ -0,0 +1,10 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, MaxLength } from 'class-validator';
3
+
4
+ /** POST /wizard/sessions/:id/otp/skip — salta el OTP (M1 §184 `otp_no_verificado`; genera AuditTrail). SureKeep Fase 2 — pista Retail. */
5
+ export class SkipOtpRequest {
6
+ @Expose()
7
+ @IsString()
8
+ @MaxLength(200)
9
+ reason!: string;
10
+ }
@@ -0,0 +1,21 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsOptional, IsString, Matches } from 'class-validator';
3
+ import { regexPhoneMx } from '../../../helpers/constans/regex';
4
+
5
+ /**
6
+ * POST /wizard/sessions — arranca (o reanuda) la saga del wizard para un teléfono.
7
+ * `retailerId`/`storeId`/`sellerRetailUserId` NO viajan en el body: se derivan del JWT del vendedor.
8
+ * Regla dura: 1 sesión ACTIVE por teléfono (409 SESSION_ACTIVE vía UNIQ#ACTIVE-PHONE). SureKeep Fase 2 — pista Retail.
9
+ */
10
+ export class StartSessionRequest {
11
+ @Expose()
12
+ @IsString()
13
+ @Matches(regexPhoneMx, { message: 'phone debe ser un teléfono MX de 10 dígitos' })
14
+ phone!: string;
15
+
16
+ /** Prospecto a reanudar (opcional): si viene, la sesión se vincula al prospecto. */
17
+ @Expose()
18
+ @IsOptional()
19
+ @IsString()
20
+ prospectId?: string;
21
+ }
@@ -0,0 +1,28 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsEnum, IsOptional, IsString, MaxLength } from 'class-validator';
3
+ import { PendingReasonEnum } from '../../enums/PendingReasonEnum';
4
+
5
+ /** PUT /prospects/:id — edita agenda / notas / motivo de un prospecto. SureKeep Fase 2 — pista Retail. */
6
+ export class UpdateProspectRequest {
7
+ @Expose()
8
+ @IsOptional()
9
+ @IsEnum(PendingReasonEnum)
10
+ pendingReason?: PendingReasonEnum;
11
+
12
+ @Expose()
13
+ @IsOptional()
14
+ @IsString()
15
+ @MaxLength(200)
16
+ freeReason?: string;
17
+
18
+ @Expose()
19
+ @IsOptional()
20
+ @IsString()
21
+ nextContactAt?: string;
22
+
23
+ @Expose()
24
+ @IsOptional()
25
+ @IsString()
26
+ @MaxLength(200)
27
+ notes?: string;
28
+ }
@@ -0,0 +1,10 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsString, Length } from 'class-validator';
3
+
4
+ /** POST /wizard/sessions/:id/otp/verify — verifica el código OTP (código validado en messages-business). SureKeep Fase 2 — pista Retail. */
5
+ export class VerifyOtpRequest {
6
+ @Expose()
7
+ @IsString()
8
+ @Length(4, 8)
9
+ code!: string;
10
+ }
@@ -0,0 +1,13 @@
1
+ import { Expose } from 'class-transformer';
2
+ import { IsBoolean, IsOptional } from 'class-validator';
3
+
4
+ /**
5
+ * POST /wizard/sessions/:id/welcome-topup — acreditación de bienvenida (D33): una sola vez por cliente
6
+ * (idempotencia permanente por `welcomeAccredited`). Ni una segunda venta re-acredita. SureKeep Fase 2 — pista Retail.
7
+ */
8
+ export class WelcomeTopupRequest {
9
+ @Expose()
10
+ @IsOptional()
11
+ @IsBoolean()
12
+ skip?: boolean;
13
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Parentesco del beneficiario (catálogo de 9 valores Fiado; dropdown del paso 10).
3
+ * SureKeep Fase 2 — pista Retail.
4
+ *
5
+ * SPOUSE - Cónyuge · CHILD - Hijo(a) · PARENT - Padre/Madre · SIBLING - Hermano(a) ·
6
+ * GRANDPARENT - Abuelo(a) · GRANDCHILD - Nieto(a) · PARTNER - Concubino(a) · FRIEND - Amigo(a) · OTHER - Otro.
7
+ */
8
+ export enum BeneficiaryRelationEnum {
9
+ SPOUSE = 'SPOUSE',
10
+ CHILD = 'CHILD',
11
+ PARENT = 'PARENT',
12
+ SIBLING = 'SIBLING',
13
+ GRANDPARENT = 'GRANDPARENT',
14
+ GRANDCHILD = 'GRANDCHILD',
15
+ PARTNER = 'PARTNER',
16
+ FRIEND = 'FRIEND',
17
+ OTHER = 'OTHER',
18
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Estado de sincronización de la venta con Central (local-first; badge en BO). SureKeep Fase 2 — pista Retail.
3
+ *
4
+ * PENDING - Aún no sincronizada.
5
+ * SENT - Enviada a Central.
6
+ * FAILED - Falló la sincronización.
7
+ * N_A - No aplica (p. ej. derivación externa).
8
+ */
9
+ export enum CentralSyncStatusEnum {
10
+ PENDING = 'PENDING',
11
+ SENT = 'SENT',
12
+ FAILED = 'FAILED',
13
+ N_A = 'N_A',
14
+ }
@@ -0,0 +1,7 @@
1
+ /** Proveedor externo de financiamiento al que se deriva la venta. SureKeep Fase 2 — pista Retail. */
2
+ export enum ExternalProviderEnum {
3
+ PAYJOY = 'PAYJOY',
4
+ CREDIYA = 'CREDIYA',
5
+ LESPAGO = 'LESPAGO',
6
+ INNOVA = 'INNOVA',
7
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Estado del teléfono en el gate `signInPhoneNumber` del paso 01a (D27) — decide si el 01d crea o
3
+ * vincula la identidad Fiado y habilita el UX "Cliente reconocido". SureKeep Fase 2 — pista Retail.
4
+ *
5
+ * SIGN_UP - Teléfono nuevo (onboarding recién creado por el gate).
6
+ * PENDING_PASSWORD_CREATION - Cliente existente sin contraseña aún.
7
+ * ACTIVE - Cliente Fiado activo.
8
+ * USER_TEMP_BLOCKED - Bloqueo temporal.
9
+ */
10
+ export enum FiadoPhoneStatusEnum {
11
+ SIGN_UP = 'SIGN_UP',
12
+ PENDING_PASSWORD_CREATION = 'PENDING_PASSWORD_CREATION',
13
+ ACTIVE = 'ACTIVE',
14
+ USER_TEMP_BLOCKED = 'USER_TEMP_BLOCKED',
15
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Ocupación del cliente (micro-paso del 02; dropdown de 7 valores + OTHER abre texto libre ≤60).
3
+ * Sin ocupación NO se abre la cuenta (Manual v1.4 §8.13). SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum OccupationEnum {
6
+ EMPLOYED = 'EMPLOYED',
7
+ SELF_EMPLOYED = 'SELF_EMPLOYED',
8
+ STUDENT = 'STUDENT',
9
+ HOMEMAKER = 'HOMEMAKER',
10
+ RETIRED = 'RETIRED',
11
+ UNEMPLOYED = 'UNEMPLOYED',
12
+ OTHER = 'OTHER',
13
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Propósito de un OTP dentro del wizard (v0.1 `otp_purpose`). SureKeep Fase 2 — pista Retail.
3
+ *
4
+ * IDENTITY - OTP de verificación de identidad (teléfono).
5
+ * SIGNATURE - OTP de firma (F3).
6
+ */
7
+ export enum OtpPurposeEnum {
8
+ IDENTITY = 'IDENTITY',
9
+ SIGNATURE = 'SIGNATURE',
10
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Router del paso 04 — método de pago elegido en el wizard. SureKeep Fase 2 — pista Retail.
3
+ *
4
+ * SUREKEEP - Crédito SureKeep (pista SOFOM, F2).
5
+ * CASH_SALE - Venta de contado.
6
+ * EXTERNAL - Derivación a proveedor externo.
7
+ */
8
+ export enum PaymentMethodEnum {
9
+ SUREKEEP = 'SUREKEEP',
10
+ CASH_SALE = 'CASH_SALE',
11
+ EXTERNAL = 'EXTERNAL',
12
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Motivo por el que un cliente quedó como prospecto (15 valores, filtrados por paso).
3
+ * SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export enum PendingReasonEnum {
6
+ OTP_FAILED = 'OTP_FAILED',
7
+ NO_INE = 'NO_INE',
8
+ NO_OCCUPATION = 'NO_OCCUPATION',
9
+ DISLIKES_CATALOG = 'DISLIKES_CATALOG',
10
+ PRICE_HIGH = 'PRICE_HIGH',
11
+ EVALUATING_CONDITIONS = 'EVALUATING_CONDITIONS',
12
+ REJECTED_RETRY = 'REJECTED_RETRY',
13
+ INSTALLMENT_HIGH = 'INSTALLMENT_HIGH',
14
+ EVALUATING_DOWNPAYMENT = 'EVALUATING_DOWNPAYMENT',
15
+ EVALUATING_TERM = 'EVALUATING_TERM',
16
+ NO_MONEY_TODAY = 'NO_MONEY_TODAY',
17
+ CONTRACT_DOUBTS = 'CONTRACT_DOUBTS',
18
+ DEVICE_ISSUE = 'DEVICE_ISSUE',
19
+ CLIENT_THINKING = 'CLIENT_THINKING',
20
+ OTHER = 'OTHER',
21
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Estado de un prospecto (seguimiento comercial). SureKeep Fase 2 — pista Retail.
3
+ *
4
+ * NEW - Recién creado.
5
+ * FOLLOW_UP - En seguimiento.
6
+ * CONTACTED - Ya contactado.
7
+ * CLOSED - Cerrado (automático al producirse la venta vinculada).
8
+ * LOST - Perdido.
9
+ */
10
+ export enum ProspectStatusEnum {
11
+ NEW = 'NEW',
12
+ FOLLOW_UP = 'FOLLOW_UP',
13
+ CONTACTED = 'CONTACTED',
14
+ CLOSED = 'CLOSED',
15
+ LOST = 'LOST',
16
+ }
@@ -0,0 +1,6 @@
1
+ /** Medio de pago con el que se cobró la venta de contado. SureKeep Fase 2 — pista Retail. */
2
+ export enum SalePaymentMethodEnum {
3
+ CASH = 'CASH',
4
+ CARD = 'CARD',
5
+ WIRE = 'WIRE',
6
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Estado de una venta. SureKeep Fase 2 — pista Retail.
3
+ *
4
+ * COMPLETED - Venta cerrada.
5
+ * CANCELLED - Venta cancelada (flujo C; `cancelReason` obligatorio).
6
+ */
7
+ export enum SaleStatusEnum {
8
+ COMPLETED = 'COMPLETED',
9
+ CANCELLED = 'CANCELLED',
10
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Tipo de venta (v0.1 `sale_type`; las 4 externas colapsan en EXTERNAL_REFERRAL + provider).
3
+ * SureKeep Fase 2 — pista Retail.
4
+ *
5
+ * CASH - Venta de contado.
6
+ * EXTERNAL_REFERRAL - Derivación a proveedor externo.
7
+ * CREDIT - Crédito SureKeep (F3).
8
+ */
9
+ export enum SaleTypeEnum {
10
+ CASH = 'CASH',
11
+ EXTERNAL_REFERRAL = 'EXTERNAL_REFERRAL',
12
+ CREDIT = 'CREDIT',
13
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Estado de la SAGA del wizard de venta de contado. SureKeep Fase 2 — pista Retail.
3
+ *
4
+ * ACTIVE - Sesión en curso.
5
+ * PAUSED_EXTERNAL_REFERRAL - Pausada por derivación a proveedor externo.
6
+ * PAUSED_NO_TOPUP - El cliente salió sin recarga de bienvenida (M1 §1087).
7
+ * COMPLETED - Venta cerrada.
8
+ * EXPIRED - Expiró por inactividad (TTL DDB ~24h).
9
+ * CANCELLED - Cancelada (incluye KYC PLD).
10
+ */
11
+ export enum WizardStateEnum {
12
+ ACTIVE = 'ACTIVE',
13
+ PAUSED_EXTERNAL_REFERRAL = 'PAUSED_EXTERNAL_REFERRAL',
14
+ PAUSED_NO_TOPUP = 'PAUSED_NO_TOPUP',
15
+ COMPLETED = 'COMPLETED',
16
+ EXPIRED = 'EXPIRED',
17
+ CANCELLED = 'CANCELLED',
18
+ }
@@ -0,0 +1,13 @@
1
+ /** Paso fino del wizard (v0.1 `phase` 1-3 → paso fino S01..S10). SureKeep Fase 2 — pista Retail. */
2
+ export enum WizardStepEnum {
3
+ S01 = 'S01',
4
+ S02 = 'S02',
5
+ S03 = 'S03',
6
+ S04 = 'S04',
7
+ S05 = 'S05',
8
+ S06 = 'S06',
9
+ S07 = 'S07',
10
+ S08 = 'S08',
11
+ S09 = 'S09',
12
+ S10 = 'S10',
13
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Emitido al cancelar una venta (flujo C). Se escribe al outbox transaccional; drena a la cola Central.
3
+ * SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export interface SaleCancelledV1 {
6
+ saleId: string;
7
+ folio: string;
8
+ retailCustomerId: string;
9
+ imei: string | null;
10
+ cancelReason: string;
11
+ cancelledAt: string;
12
+ occurredAt: string;
13
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Emitido al cerrar una venta (flujo 09). Se escribe al outbox transaccional en la MISMA
3
+ * `TransactWriteItems` del cierre; drena a la cola Central + datalake. Solo identificadores
4
+ * operacionales (nunca PII). SureKeep Fase 2 — pista Retail.
5
+ */
6
+ export interface SaleCompletedV1 {
7
+ saleId: string;
8
+ folio: string;
9
+ retailerId: string;
10
+ storeId: string;
11
+ retailCustomerId: string;
12
+ sku: string;
13
+ imei: string | null;
14
+ amountCents: number;
15
+ soldAt: string;
16
+ occurredAt: string;
17
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Emitido cuando una sesión del wizard expira por inactividad (barrido del scheduler, TTL DDB ~24h).
3
+ * Libera la reserva del silo si la hubiera. SureKeep Fase 2 — pista Retail.
4
+ */
5
+ export interface SessionExpiredV1 {
6
+ sessionId: string;
7
+ phone: string;
8
+ reservedImei: string | null;
9
+ occurredAt: string;
10
+ }