@fiado/type-kit 3.121.0 → 3.123.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 (55) hide show
  1. package/bin/transactionProcessor/dtos/PublishFiadoTxRequest.d.ts +30 -0
  2. package/bin/transactionProcessor/dtos/PublishFiadoTxRequest.js +45 -0
  3. package/bin/transactionProcessor/dtos/PublishFiadoTxResponse.d.ts +14 -0
  4. package/bin/transactionProcessor/dtos/PublishFiadoTxResponse.js +2 -0
  5. package/bin/transactionProcessor/index.d.ts +2 -0
  6. package/bin/transactionProcessor/index.js +2 -0
  7. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.d.ts +2 -1
  8. package/bin/walletFunding/dtos/CancelFundingReferenceRequest.js +1 -1
  9. package/bin/walletFunding/dtos/CancelFundingReferenceResponse.d.ts +1 -1
  10. package/bin/walletFunding/dtos/CancelFundingRequest.d.ts +1 -1
  11. package/bin/walletFunding/dtos/CancelFundingRequest.js +1 -1
  12. package/bin/walletFunding/dtos/CancelFundingResponse.d.ts +1 -1
  13. package/bin/walletFunding/dtos/CancelWalletFundingResponse.d.ts +1 -1
  14. package/bin/walletFunding/dtos/SettleWalletFundingRequest.d.ts +43 -0
  15. package/bin/walletFunding/dtos/SettleWalletFundingRequest.js +76 -0
  16. package/bin/walletFunding/dtos/SettleWalletFundingResponse.d.ts +36 -0
  17. package/bin/walletFunding/dtos/SettleWalletFundingResponse.js +2 -0
  18. package/bin/walletFunding/dtos/index.d.ts +2 -0
  19. package/bin/walletFunding/dtos/index.js +2 -0
  20. package/bin/walletFunding/enums/SettlementErrorCodeEnum.d.ts +25 -0
  21. package/bin/walletFunding/enums/SettlementErrorCodeEnum.js +29 -0
  22. package/bin/walletFunding/enums/index.d.ts +1 -0
  23. package/bin/walletFunding/enums/index.js +1 -0
  24. package/bin/walletFunding/index.d.ts +1 -0
  25. package/bin/walletFunding/index.js +1 -0
  26. package/bin/walletFunding/schemas/AccountPagoConfiadoSchema.d.ts +37 -0
  27. package/bin/walletFunding/schemas/AccountPagoConfiadoSchema.js +41 -0
  28. package/bin/walletFunding/schemas/EqualityFundingPaymentSchema.d.ts +42 -0
  29. package/bin/walletFunding/schemas/EqualityFundingPaymentSchema.js +44 -0
  30. package/bin/walletFunding/schemas/index.d.ts +2 -0
  31. package/bin/{rbac → walletFunding/schemas}/index.js +2 -1
  32. package/package.json +1 -1
  33. package/src/transactionProcessor/dtos/PublishFiadoTxRequest.ts +34 -0
  34. package/src/transactionProcessor/dtos/PublishFiadoTxResponse.ts +14 -0
  35. package/src/transactionProcessor/index.ts +2 -0
  36. package/src/walletFunding/dtos/SettleWalletFundingRequest.ts +53 -0
  37. package/src/walletFunding/dtos/SettleWalletFundingResponse.ts +37 -0
  38. package/src/walletFunding/dtos/index.ts +2 -0
  39. package/src/walletFunding/enums/SettlementErrorCodeEnum.ts +25 -0
  40. package/src/walletFunding/enums/index.ts +1 -0
  41. package/src/walletFunding/index.ts +1 -0
  42. package/src/walletFunding/schemas/AccountPagoConfiadoSchema.ts +41 -0
  43. package/src/walletFunding/schemas/EqualityFundingPaymentSchema.ts +44 -0
  44. package/src/walletFunding/schemas/index.ts +2 -0
  45. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.d.ts +0 -7
  46. package/bin/cognitoBackofficeConnector/dtos/MfaPoolConfig.js +0 -36
  47. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.d.ts +0 -20
  48. package/bin/cognitoBackofficeConnector/dtos/PoolConfigResponse.js +0 -11
  49. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.d.ts +0 -4
  50. package/bin/cognitoBackofficeConnector/dtos/PoolsListResponse.js +0 -6
  51. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.d.ts +0 -17
  52. package/bin/cognitoBackofficeConnector/validators/MfaTypesRequiresOne.js +0 -39
  53. package/bin/rbac/enums/PoolKind.d.ts +0 -16
  54. package/bin/rbac/enums/PoolKind.js +0 -20
  55. package/bin/rbac/index.d.ts +0 -1
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Request del endpoint `POST /wallet-funding/publish` del processor.
3
+ *
4
+ * Publica el evento de FiadoTx (tupla EQ_CASH_SA / CASH_IN del wallet-funding
5
+ * cash-in) al SQS `TRANSACTION_QUEUE` para que `transaction-business` lo
6
+ * consuma y persista en `FiadoTx_GT`.
7
+ *
8
+ * Best-effort: el caller (equality-connector post-settlement, o el cron de
9
+ * gap-reconciliation del mismo connector) debe tratar el error como
10
+ * recuperable — el reconciler T+0 rescata gaps que queden.
11
+ *
12
+ * Ver spec 15 §6.2 (processor mantiene ownership del SQS publish) + §5.1
13
+ * (reconciler en el connector).
14
+ */
15
+ export declare class PublishFiadoTxRequest {
16
+ /** Identificador idempotente del evento. Sugerido: `${providerName}:${providerTxId}`. */
17
+ idempotencyKey: string;
18
+ /**
19
+ * Spec completo de la tupla FiadoTx a persistir. Shape generado por el
20
+ * processor en `walletFundingValidate()` (campo `fiadoTxSpec` de la response).
21
+ * El caller lo recibe del processor y lo reenvía sin modificar.
22
+ *
23
+ * Es `unknown` aquí (no tipado fuerte) porque el shape interno del processor
24
+ * puede cambiar sin breaking change para los callers — el processor es dueño
25
+ * del shape y de su serialización al SQS.
26
+ */
27
+ fiadoTxSpec: Record<string, unknown>;
28
+ /** Contexto opcional para logs/auditoría (ej. "post-settlement" | "reconciler-gap"). */
29
+ origin?: string;
30
+ }
@@ -0,0 +1,45 @@
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.PublishFiadoTxRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /**
15
+ * Request del endpoint `POST /wallet-funding/publish` del processor.
16
+ *
17
+ * Publica el evento de FiadoTx (tupla EQ_CASH_SA / CASH_IN del wallet-funding
18
+ * cash-in) al SQS `TRANSACTION_QUEUE` para que `transaction-business` lo
19
+ * consuma y persista en `FiadoTx_GT`.
20
+ *
21
+ * Best-effort: el caller (equality-connector post-settlement, o el cron de
22
+ * gap-reconciliation del mismo connector) debe tratar el error como
23
+ * recuperable — el reconciler T+0 rescata gaps que queden.
24
+ *
25
+ * Ver spec 15 §6.2 (processor mantiene ownership del SQS publish) + §5.1
26
+ * (reconciler en el connector).
27
+ */
28
+ class PublishFiadoTxRequest {
29
+ }
30
+ exports.PublishFiadoTxRequest = PublishFiadoTxRequest;
31
+ __decorate([
32
+ (0, class_validator_1.IsString)(),
33
+ (0, class_validator_1.MaxLength)(128),
34
+ __metadata("design:type", String)
35
+ ], PublishFiadoTxRequest.prototype, "idempotencyKey", void 0);
36
+ __decorate([
37
+ (0, class_validator_1.IsObject)(),
38
+ __metadata("design:type", Object)
39
+ ], PublishFiadoTxRequest.prototype, "fiadoTxSpec", void 0);
40
+ __decorate([
41
+ (0, class_validator_1.IsOptional)(),
42
+ (0, class_validator_1.IsString)(),
43
+ (0, class_validator_1.MaxLength)(64),
44
+ __metadata("design:type", String)
45
+ ], PublishFiadoTxRequest.prototype, "origin", void 0);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Response del endpoint `POST /wallet-funding/publish` del processor.
3
+ *
4
+ * Best-effort: status="FAILED" indica que el publish al SQS no se ejecutó
5
+ * (sqs.sendMessage falló). El caller debe loggear y continuar — el
6
+ * reconciler T+0 del connector eventualmente recuperará el gap.
7
+ *
8
+ * Ver spec 15 §6.2.
9
+ */
10
+ export interface PublishFiadoTxResponse {
11
+ status: "OK" | "FAILED";
12
+ /** Mensaje breve para logs. Vacío en happy path. */
13
+ message?: string;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -39,6 +39,8 @@ export * from './dtos/ProviderProcessServicePaymentTransactionRequest';
39
39
  export * from './dtos/ProviderProcessServicePaymentTransactionResponse';
40
40
  export * from './dtos/AuthorizeRenewalPreAuthRequest';
41
41
  export * from './dtos/AuthorizeRenewalPreAuthResponse';
42
+ export * from './dtos/PublishFiadoTxRequest';
43
+ export * from './dtos/PublishFiadoTxResponse';
42
44
  export * from './enums/TransactionProcessorCodesEnum';
43
45
  export * from './enums/AsyncTxStatusEnum';
44
46
  export * from './enums/AppEnum';
@@ -55,6 +55,8 @@ __exportStar(require("./dtos/ProviderProcessServicePaymentTransactionRequest"),
55
55
  __exportStar(require("./dtos/ProviderProcessServicePaymentTransactionResponse"), exports);
56
56
  __exportStar(require("./dtos/AuthorizeRenewalPreAuthRequest"), exports);
57
57
  __exportStar(require("./dtos/AuthorizeRenewalPreAuthResponse"), exports);
58
+ __exportStar(require("./dtos/PublishFiadoTxRequest"), exports);
59
+ __exportStar(require("./dtos/PublishFiadoTxResponse"), exports);
58
60
  __exportStar(require("./enums/TransactionProcessorCodesEnum"), exports);
59
61
  __exportStar(require("./enums/AsyncTxStatusEnum"), exports);
60
62
  __exportStar(require("./enums/AppEnum"), exports);
@@ -1,5 +1,6 @@
1
1
  export declare class CancelFundingReferenceRequest {
2
- fundingId: string;
2
+ /** Referencia Passport (PK de EqualityFundingReference_GT). */
3
+ reference: string;
3
4
  directoryId: string;
4
5
  idempotencyKey: string;
5
6
  }
@@ -18,7 +18,7 @@ __decorate([
18
18
  (0, class_validator_1.IsString)(),
19
19
  (0, class_validator_1.MaxLength)(64),
20
20
  __metadata("design:type", String)
21
- ], CancelFundingReferenceRequest.prototype, "fundingId", void 0);
21
+ ], CancelFundingReferenceRequest.prototype, "reference", void 0);
22
22
  __decorate([
23
23
  (0, class_validator_1.IsString)(),
24
24
  (0, class_validator_1.MaxLength)(64),
@@ -1,7 +1,7 @@
1
1
  import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
2
  import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum";
3
3
  export declare class CancelFundingReferenceResponse {
4
- fundingId: string;
4
+ reference: string;
5
5
  status: BenefitPaymentStatusEnum;
6
6
  errorCode?: WalletFundingErrorCodeEnum;
7
7
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Request del cancel via Centro de Beneficios (spec 13 v2.0).
3
- * `fundingId` viaja en el path, `directoryId` se resuelve del JWT.
3
+ * `reference` viaja en el path, `directoryId` se resuelve del JWT.
4
4
  * `providerModuleName` permite al marketplace rutear al publisher correcto
5
5
  * sin tener que persistir el mapping (el wallet-app sabe el moduleName
6
6
  * porque vino en la respuesta del authorize).
@@ -13,7 +13,7 @@ exports.CancelFundingRequest = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
14
  /**
15
15
  * Request del cancel via Centro de Beneficios (spec 13 v2.0).
16
- * `fundingId` viaja en el path, `directoryId` se resuelve del JWT.
16
+ * `reference` viaja en el path, `directoryId` se resuelve del JWT.
17
17
  * `providerModuleName` permite al marketplace rutear al publisher correcto
18
18
  * sin tener que persistir el mapping (el wallet-app sabe el moduleName
19
19
  * porque vino en la respuesta del authorize).
@@ -7,7 +7,7 @@ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum"
7
7
  * (marketplace ↔ connector). Idempotente: re-cancelar devuelve APPROVED.
8
8
  */
9
9
  export declare class CancelFundingResponse {
10
- fundingId: string;
10
+ reference: string;
11
11
  status: BenefitPaymentStatusEnum;
12
12
  errorCode?: WalletFundingErrorCodeEnum;
13
13
  message?: string;
@@ -3,5 +3,5 @@ import { WalletFundingErrorCodeEnum } from "../enums/WalletFundingErrorCodeEnum"
3
3
  export declare class CancelWalletFundingResponse {
4
4
  status: BenefitPaymentStatusEnum;
5
5
  errorCode?: WalletFundingErrorCodeEnum;
6
- fundingId?: string;
6
+ reference?: string;
7
7
  }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Request del endpoint `POST /settlements` del lambda `wallet-funding-settlement`.
3
+ *
4
+ * Ejecuta el WRITE atómico (TransactWriteItems 2 items) que acredita el
5
+ * balance del wallet Y marca el payment del provider como APPLIED, todo
6
+ * en una única transacción ACID DDB single-region.
7
+ *
8
+ * Idempotente por `ConditionExpression: status = CONSULTED` sobre el
9
+ * payment row del provider. Si el reintento llega y el row ya está en
10
+ * APPLIED, el settlement devuelve `alreadySettled=true` con el folio
11
+ * cacheado sin re-creditar.
12
+ *
13
+ * Caller canónico: `equality-connector.WebhookPaymentManager` post
14
+ * `processor.walletFundingValidate()`. Ver spec 15.
15
+ */
16
+ export declare class SettleWalletFundingRequest {
17
+ /** Nombre canónico del provider cash-in. V1: "equality". Futuros: "openpay", etc. */
18
+ providerName: string;
19
+ /**
20
+ * Identificador de la transacción en el provider. Para Equality es
21
+ * `equalityTransactionNumber` (PK de `EqualityFundingPayment_GT`).
22
+ */
23
+ providerTxId: string;
24
+ /** Referencia del payment row (ej. la `reference` de Equality). */
25
+ providerReference: string;
26
+ directoryId: string;
27
+ /** PK de la cuenta PCF (AccountPagoConfiado_GT.id) destino del crédito. */
28
+ accountId: string;
29
+ amount: number;
30
+ currencyCode: string;
31
+ /**
32
+ * Folio del processor (campo Alfanumérico según doc Passport). Pre-generado
33
+ * por `processor.walletFundingValidate()` y reenviado al settlement para
34
+ * persistirlo en el payment row como `processorTransactionNumber`.
35
+ */
36
+ processorTransactionNumber: string;
37
+ /**
38
+ * Snapshot del webhook recibido del provider. Opcional — se persiste en
39
+ * `webhookResponseRaw` del payment row para auditoría. NO load-bearing
40
+ * para la idempotencia ni el flow.
41
+ */
42
+ webhookEcho?: Record<string, unknown>;
43
+ }
@@ -0,0 +1,76 @@
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.SettleWalletFundingRequest = void 0;
13
+ const class_validator_1 = require("class-validator");
14
+ /**
15
+ * Request del endpoint `POST /settlements` del lambda `wallet-funding-settlement`.
16
+ *
17
+ * Ejecuta el WRITE atómico (TransactWriteItems 2 items) que acredita el
18
+ * balance del wallet Y marca el payment del provider como APPLIED, todo
19
+ * en una única transacción ACID DDB single-region.
20
+ *
21
+ * Idempotente por `ConditionExpression: status = CONSULTED` sobre el
22
+ * payment row del provider. Si el reintento llega y el row ya está en
23
+ * APPLIED, el settlement devuelve `alreadySettled=true` con el folio
24
+ * cacheado sin re-creditar.
25
+ *
26
+ * Caller canónico: `equality-connector.WebhookPaymentManager` post
27
+ * `processor.walletFundingValidate()`. Ver spec 15.
28
+ */
29
+ class SettleWalletFundingRequest {
30
+ }
31
+ exports.SettleWalletFundingRequest = SettleWalletFundingRequest;
32
+ __decorate([
33
+ (0, class_validator_1.IsString)(),
34
+ (0, class_validator_1.MaxLength)(32),
35
+ __metadata("design:type", String)
36
+ ], SettleWalletFundingRequest.prototype, "providerName", void 0);
37
+ __decorate([
38
+ (0, class_validator_1.IsString)(),
39
+ (0, class_validator_1.MaxLength)(64),
40
+ __metadata("design:type", String)
41
+ ], SettleWalletFundingRequest.prototype, "providerTxId", void 0);
42
+ __decorate([
43
+ (0, class_validator_1.IsString)(),
44
+ (0, class_validator_1.MaxLength)(128),
45
+ __metadata("design:type", String)
46
+ ], SettleWalletFundingRequest.prototype, "providerReference", void 0);
47
+ __decorate([
48
+ (0, class_validator_1.IsString)(),
49
+ (0, class_validator_1.MaxLength)(64),
50
+ __metadata("design:type", String)
51
+ ], SettleWalletFundingRequest.prototype, "directoryId", void 0);
52
+ __decorate([
53
+ (0, class_validator_1.IsString)(),
54
+ (0, class_validator_1.MaxLength)(64),
55
+ __metadata("design:type", String)
56
+ ], SettleWalletFundingRequest.prototype, "accountId", void 0);
57
+ __decorate([
58
+ (0, class_validator_1.IsNumber)(),
59
+ (0, class_validator_1.IsPositive)(),
60
+ __metadata("design:type", Number)
61
+ ], SettleWalletFundingRequest.prototype, "amount", void 0);
62
+ __decorate([
63
+ (0, class_validator_1.IsString)(),
64
+ (0, class_validator_1.Length)(3, 3),
65
+ __metadata("design:type", String)
66
+ ], SettleWalletFundingRequest.prototype, "currencyCode", void 0);
67
+ __decorate([
68
+ (0, class_validator_1.IsString)(),
69
+ (0, class_validator_1.MaxLength)(64),
70
+ __metadata("design:type", String)
71
+ ], SettleWalletFundingRequest.prototype, "processorTransactionNumber", void 0);
72
+ __decorate([
73
+ (0, class_validator_1.IsOptional)(),
74
+ (0, class_validator_1.IsObject)(),
75
+ __metadata("design:type", Object)
76
+ ], SettleWalletFundingRequest.prototype, "webhookEcho", void 0);
@@ -0,0 +1,36 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { SettlementErrorCodeEnum } from "../enums/SettlementErrorCodeEnum";
3
+ /**
4
+ * Response del endpoint `POST /settlements`. Indica si el settlement se
5
+ * ejecutó exitosamente (APPROVED) o fue rechazado (REJECTED) con un
6
+ * `errorCode` específico.
7
+ *
8
+ * Estado APPROVED:
9
+ * - El TransactWriteItems se commiteó atómicamente.
10
+ * - Balance acreditado + status del payment en APPLIED.
11
+ * - `alreadySettled=false` (primera ejecución) o `alreadySettled=true`
12
+ * (reintento idempotent — el row ya estaba en APPLIED).
13
+ *
14
+ * Estado REJECTED:
15
+ * - El TransactWriteItems NO se ejecutó (pre-check falló) o falló
16
+ * irrecuperablemente. Caller debe responder REJECTED al provider y
17
+ * marcar el payment en `QUEUED_FOR_REFUND` para gestión manual.
18
+ *
19
+ * Ver spec 15.
20
+ */
21
+ export interface SettleWalletFundingResponse {
22
+ status: BenefitPaymentStatusEnum;
23
+ /**
24
+ * `true` si el TransactWriteItems no se ejecutó porque el row ya estaba
25
+ * en APPLIED (idempotent fast path). `false` si fue la primera ejecución
26
+ * que efectivamente movió saldo.
27
+ */
28
+ alreadySettled: boolean;
29
+ /**
30
+ * Folio del processor devuelto al caller. En idempotent hit es el folio
31
+ * cacheado del row APPLIED previo (NO el del request actual).
32
+ */
33
+ processorTransactionNumber: string;
34
+ errorCode?: SettlementErrorCodeEnum;
35
+ message?: string;
36
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -19,3 +19,5 @@ export * from "./ReverseWalletFundingRequest";
19
19
  export * from "./ReverseWalletFundingResponse";
20
20
  export * from "./AuthorizeFundingRequest";
21
21
  export * from "./AuthorizeFundingResponse";
22
+ export * from "./SettleWalletFundingRequest";
23
+ export * from "./SettleWalletFundingResponse";
@@ -35,3 +35,5 @@ __exportStar(require("./ReverseWalletFundingRequest"), exports);
35
35
  __exportStar(require("./ReverseWalletFundingResponse"), exports);
36
36
  __exportStar(require("./AuthorizeFundingRequest"), exports);
37
37
  __exportStar(require("./AuthorizeFundingResponse"), exports);
38
+ __exportStar(require("./SettleWalletFundingRequest"), exports);
39
+ __exportStar(require("./SettleWalletFundingResponse"), exports);
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Códigos de error del lambda `wallet-funding-settlement`.
3
+ *
4
+ * Distintos a `WalletFundingErrorCodeEnum` — esos son del flow del processor
5
+ * (validaciones PCF, AML, caps). Estos son específicos del settlement:
6
+ * estado del payment row + integridad del TransactWriteItems.
7
+ *
8
+ * Ver spec 15 §4.5 (flujo interno) + §8 (edge cases).
9
+ */
10
+ export declare enum SettlementErrorCodeEnum {
11
+ /** El payment row no existe en la tabla del provider. Bug del caller (debió crear CONSULTED antes). */
12
+ PAYMENT_NOT_FOUND = "PAYMENT_NOT_FOUND",
13
+ /** El payment row está en estado terminal (FAILED, QUEUED_FOR_REFUND, REJECTED). No procede acreditar. */
14
+ PAYMENT_IN_TERMINAL_STATE = "PAYMENT_IN_TERMINAL_STATE",
15
+ /** La cuenta PCF no existe o no está accesible. */
16
+ ACCOUNT_NOT_FOUND = "ACCOUNT_NOT_FOUND",
17
+ /** El TransactWriteItems falló por razón no recuperable (no ConditionalCheckFailed esperado). */
18
+ TRANSACT_WRITE_FAILED = "TRANSACT_WRITE_FAILED",
19
+ /** El providerName del request no está registrado en el ProviderRegistry del settlement. */
20
+ PROVIDER_NOT_SUPPORTED = "PROVIDER_NOT_SUPPORTED",
21
+ /** El amount del request difiere del paymentAmount persistido en el row CONSULTED. Posible tampering. */
22
+ AMOUNT_MISMATCH = "AMOUNT_MISMATCH",
23
+ /** Error interno no clasificado. Caller debe loggear + alarmar. */
24
+ INTERNAL_ERROR = "INTERNAL_ERROR"
25
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SettlementErrorCodeEnum = void 0;
4
+ /**
5
+ * Códigos de error del lambda `wallet-funding-settlement`.
6
+ *
7
+ * Distintos a `WalletFundingErrorCodeEnum` — esos son del flow del processor
8
+ * (validaciones PCF, AML, caps). Estos son específicos del settlement:
9
+ * estado del payment row + integridad del TransactWriteItems.
10
+ *
11
+ * Ver spec 15 §4.5 (flujo interno) + §8 (edge cases).
12
+ */
13
+ var SettlementErrorCodeEnum;
14
+ (function (SettlementErrorCodeEnum) {
15
+ /** El payment row no existe en la tabla del provider. Bug del caller (debió crear CONSULTED antes). */
16
+ SettlementErrorCodeEnum["PAYMENT_NOT_FOUND"] = "PAYMENT_NOT_FOUND";
17
+ /** El payment row está en estado terminal (FAILED, QUEUED_FOR_REFUND, REJECTED). No procede acreditar. */
18
+ SettlementErrorCodeEnum["PAYMENT_IN_TERMINAL_STATE"] = "PAYMENT_IN_TERMINAL_STATE";
19
+ /** La cuenta PCF no existe o no está accesible. */
20
+ SettlementErrorCodeEnum["ACCOUNT_NOT_FOUND"] = "ACCOUNT_NOT_FOUND";
21
+ /** El TransactWriteItems falló por razón no recuperable (no ConditionalCheckFailed esperado). */
22
+ SettlementErrorCodeEnum["TRANSACT_WRITE_FAILED"] = "TRANSACT_WRITE_FAILED";
23
+ /** El providerName del request no está registrado en el ProviderRegistry del settlement. */
24
+ SettlementErrorCodeEnum["PROVIDER_NOT_SUPPORTED"] = "PROVIDER_NOT_SUPPORTED";
25
+ /** El amount del request difiere del paymentAmount persistido en el row CONSULTED. Posible tampering. */
26
+ SettlementErrorCodeEnum["AMOUNT_MISMATCH"] = "AMOUNT_MISMATCH";
27
+ /** Error interno no clasificado. Caller debe loggear + alarmar. */
28
+ SettlementErrorCodeEnum["INTERNAL_ERROR"] = "INTERNAL_ERROR";
29
+ })(SettlementErrorCodeEnum || (exports.SettlementErrorCodeEnum = SettlementErrorCodeEnum = {}));
@@ -6,3 +6,4 @@ export * from "./WalletFundingErrorCodeEnum";
6
6
  export * from "./WalletFundingRefundReasonEnum";
7
7
  export * from "./PaymentCodeTypeEnum";
8
8
  export * from "./FundingWebhookTypeEnum";
9
+ export * from "./SettlementErrorCodeEnum";
@@ -22,3 +22,4 @@ __exportStar(require("./WalletFundingErrorCodeEnum"), exports);
22
22
  __exportStar(require("./WalletFundingRefundReasonEnum"), exports);
23
23
  __exportStar(require("./PaymentCodeTypeEnum"), exports);
24
24
  __exportStar(require("./FundingWebhookTypeEnum"), exports);
25
+ __exportStar(require("./SettlementErrorCodeEnum"), exports);
@@ -1,2 +1,3 @@
1
1
  export * from "./enums";
2
2
  export * from "./dtos";
3
+ export * from "./schemas";
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./enums"), exports);
18
18
  __exportStar(require("./dtos"), exports);
19
+ __exportStar(require("./schemas"), exports);
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Schema literal de la tabla DDB `AccountPagoConfiado_GT`.
3
+ *
4
+ * Owner declarado: `account-pago-confiado`. Write-shared con
5
+ * `wallet-funding-settlement` SOLO en el path money (campos de balance) bajo
6
+ * excepción documentada (spec 15 §3 + spec 10 §7 pendiente).
7
+ *
8
+ * El settlement escribe ÚNICAMENTE estos campos vía TransactWriteItems:
9
+ * - `availableBalance` (ADD :amt)
10
+ * - `currentBalance` (ADD :amt)
11
+ * - `updatedAt` (SET :now)
12
+ *
13
+ * El resto del shape (status, level, KYC, settings) sigue siendo write-exclusivo
14
+ * del owner. Cualquier campo nuevo de balance que el settlement deba escribir
15
+ * requiere actualizar este schema + el TransactWriteBuilder del settlement.
16
+ */
17
+ export declare const AccountPagoConfiadoTable: {
18
+ readonly name: "AccountPagoConfiado_GT";
19
+ readonly pk: "id";
20
+ readonly attributes: {
21
+ readonly id: "id";
22
+ readonly directoryId: "directoryId";
23
+ readonly availableBalance: "availableBalance";
24
+ readonly currentBalance: "currentBalance";
25
+ readonly lockedBalance: "lockedBalance";
26
+ readonly unsettledBalance: "unsettledBalance";
27
+ readonly unpaidBalance: "unpaidBalance";
28
+ readonly unallowedBalance: "unallowedBalance";
29
+ readonly updatedAt: "updatedAt";
30
+ readonly status: "status";
31
+ readonly accountLevel: "accountLevel";
32
+ readonly currency: "currency";
33
+ readonly countryId: "countryId";
34
+ readonly createdAt: "createdAt";
35
+ };
36
+ };
37
+ export type AccountPagoConfiadoAttribute = typeof AccountPagoConfiadoTable.attributes[keyof typeof AccountPagoConfiadoTable.attributes];
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountPagoConfiadoTable = void 0;
4
+ /**
5
+ * Schema literal de la tabla DDB `AccountPagoConfiado_GT`.
6
+ *
7
+ * Owner declarado: `account-pago-confiado`. Write-shared con
8
+ * `wallet-funding-settlement` SOLO en el path money (campos de balance) bajo
9
+ * excepción documentada (spec 15 §3 + spec 10 §7 pendiente).
10
+ *
11
+ * El settlement escribe ÚNICAMENTE estos campos vía TransactWriteItems:
12
+ * - `availableBalance` (ADD :amt)
13
+ * - `currentBalance` (ADD :amt)
14
+ * - `updatedAt` (SET :now)
15
+ *
16
+ * El resto del shape (status, level, KYC, settings) sigue siendo write-exclusivo
17
+ * del owner. Cualquier campo nuevo de balance que el settlement deba escribir
18
+ * requiere actualizar este schema + el TransactWriteBuilder del settlement.
19
+ */
20
+ exports.AccountPagoConfiadoTable = {
21
+ name: "AccountPagoConfiado_GT",
22
+ pk: "id",
23
+ attributes: {
24
+ id: "id",
25
+ directoryId: "directoryId",
26
+ // Campos write-shared con wallet-funding-settlement (money path):
27
+ availableBalance: "availableBalance",
28
+ currentBalance: "currentBalance",
29
+ lockedBalance: "lockedBalance",
30
+ unsettledBalance: "unsettledBalance",
31
+ unpaidBalance: "unpaidBalance",
32
+ unallowedBalance: "unallowedBalance",
33
+ updatedAt: "updatedAt",
34
+ // Campos write-exclusive del owner (account-pago-confiado):
35
+ status: "status",
36
+ accountLevel: "accountLevel",
37
+ currency: "currency",
38
+ countryId: "countryId",
39
+ createdAt: "createdAt",
40
+ },
41
+ };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Schema literal de la tabla DDB `EqualityFundingPayment_GT`.
3
+ *
4
+ * Define los nombres exactos de tabla, atributos e índices que el
5
+ * `equality-connector` (owner declarado) y el `wallet-funding-settlement`
6
+ * (write-shared bajo excepción money path, spec 15 §3) consumen.
7
+ *
8
+ * NO es un model de Dynamoose — son solo constantes type-safe. El
9
+ * settlement usa DDB SDK v3 raw para `TransactWriteItems`; el connector
10
+ * sigue usando Dynamoose en su repositorio (su propio model interno).
11
+ *
12
+ * Cuando el schema cambia (nuevo campo, índice nuevo), bump del type-kit
13
+ * fuerza recompile de TODOS los consumers → drift imposible en silence.
14
+ */
15
+ export declare const EqualityFundingPaymentTable: {
16
+ readonly name: "EqualityFundingPayment_GT";
17
+ readonly pk: "equalityTransactionNumber";
18
+ readonly attributes: {
19
+ readonly equalityTransactionNumber: "equalityTransactionNumber";
20
+ readonly directoryId: "directoryId";
21
+ readonly reference: "reference";
22
+ readonly paymentAmount: "paymentAmount";
23
+ readonly paymentDate: "paymentDate";
24
+ readonly center: "center";
25
+ readonly centerId: "centerId";
26
+ readonly status: "status";
27
+ readonly webhookType: "webhookType";
28
+ readonly webhookRequestRaw: "webhookRequestRaw";
29
+ readonly webhookResponseRaw: "webhookResponseRaw";
30
+ readonly processorTransactionNumber: "processorTransactionNumber";
31
+ readonly rejectionCode: "rejectionCode";
32
+ readonly rejectionReason: "rejectionReason";
33
+ readonly refundReason: "refundReason";
34
+ readonly createdAt: "createdAt";
35
+ readonly updatedAt: "updatedAt";
36
+ };
37
+ readonly indexes: {
38
+ /** GSI por status + createdAt — usado por crons de reconciliation/refund. */
39
+ readonly statusCreatedAt: "status-createdAt-index";
40
+ };
41
+ };
42
+ export type EqualityFundingPaymentAttribute = typeof EqualityFundingPaymentTable.attributes[keyof typeof EqualityFundingPaymentTable.attributes];
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EqualityFundingPaymentTable = void 0;
4
+ /**
5
+ * Schema literal de la tabla DDB `EqualityFundingPayment_GT`.
6
+ *
7
+ * Define los nombres exactos de tabla, atributos e índices que el
8
+ * `equality-connector` (owner declarado) y el `wallet-funding-settlement`
9
+ * (write-shared bajo excepción money path, spec 15 §3) consumen.
10
+ *
11
+ * NO es un model de Dynamoose — son solo constantes type-safe. El
12
+ * settlement usa DDB SDK v3 raw para `TransactWriteItems`; el connector
13
+ * sigue usando Dynamoose en su repositorio (su propio model interno).
14
+ *
15
+ * Cuando el schema cambia (nuevo campo, índice nuevo), bump del type-kit
16
+ * fuerza recompile de TODOS los consumers → drift imposible en silence.
17
+ */
18
+ exports.EqualityFundingPaymentTable = {
19
+ name: "EqualityFundingPayment_GT",
20
+ pk: "equalityTransactionNumber",
21
+ attributes: {
22
+ equalityTransactionNumber: "equalityTransactionNumber",
23
+ directoryId: "directoryId",
24
+ reference: "reference",
25
+ paymentAmount: "paymentAmount",
26
+ paymentDate: "paymentDate",
27
+ center: "center",
28
+ centerId: "centerId",
29
+ status: "status",
30
+ webhookType: "webhookType",
31
+ webhookRequestRaw: "webhookRequestRaw",
32
+ webhookResponseRaw: "webhookResponseRaw",
33
+ processorTransactionNumber: "processorTransactionNumber",
34
+ rejectionCode: "rejectionCode",
35
+ rejectionReason: "rejectionReason",
36
+ refundReason: "refundReason",
37
+ createdAt: "createdAt",
38
+ updatedAt: "updatedAt",
39
+ },
40
+ indexes: {
41
+ /** GSI por status + createdAt — usado por crons de reconciliation/refund. */
42
+ statusCreatedAt: "status-createdAt-index",
43
+ },
44
+ };
@@ -0,0 +1,2 @@
1
+ export * from "./EqualityFundingPaymentSchema";
2
+ export * from "./AccountPagoConfiadoSchema";
@@ -14,4 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./enums/PoolKind"), exports);
17
+ __exportStar(require("./EqualityFundingPaymentSchema"), exports);
18
+ __exportStar(require("./AccountPagoConfiadoSchema"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.121.0",
3
+ "version": "3.123.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,34 @@
1
+ import { IsObject, IsOptional, IsString, MaxLength } from "class-validator";
2
+
3
+ /**
4
+ * Request del endpoint `POST /wallet-funding/publish` del processor.
5
+ *
6
+ * Publica el evento de FiadoTx (tupla EQ_CASH_SA / CASH_IN del wallet-funding
7
+ * cash-in) al SQS `TRANSACTION_QUEUE` para que `transaction-business` lo
8
+ * consuma y persista en `FiadoTx_GT`.
9
+ *
10
+ * Best-effort: el caller (equality-connector post-settlement, o el cron de
11
+ * gap-reconciliation del mismo connector) debe tratar el error como
12
+ * recuperable — el reconciler T+0 rescata gaps que queden.
13
+ *
14
+ * Ver spec 15 §6.2 (processor mantiene ownership del SQS publish) + §5.1
15
+ * (reconciler en el connector).
16
+ */
17
+ export class PublishFiadoTxRequest {
18
+ /** Identificador idempotente del evento. Sugerido: `${providerName}:${providerTxId}`. */
19
+ @IsString() @MaxLength(128) idempotencyKey!: string;
20
+
21
+ /**
22
+ * Spec completo de la tupla FiadoTx a persistir. Shape generado por el
23
+ * processor en `walletFundingValidate()` (campo `fiadoTxSpec` de la response).
24
+ * El caller lo recibe del processor y lo reenvía sin modificar.
25
+ *
26
+ * Es `unknown` aquí (no tipado fuerte) porque el shape interno del processor
27
+ * puede cambiar sin breaking change para los callers — el processor es dueño
28
+ * del shape y de su serialización al SQS.
29
+ */
30
+ @IsObject() fiadoTxSpec!: Record<string, unknown>;
31
+
32
+ /** Contexto opcional para logs/auditoría (ej. "post-settlement" | "reconciler-gap"). */
33
+ @IsOptional() @IsString() @MaxLength(64) origin?: string;
34
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Response del endpoint `POST /wallet-funding/publish` del processor.
3
+ *
4
+ * Best-effort: status="FAILED" indica que el publish al SQS no se ejecutó
5
+ * (sqs.sendMessage falló). El caller debe loggear y continuar — el
6
+ * reconciler T+0 del connector eventualmente recuperará el gap.
7
+ *
8
+ * Ver spec 15 §6.2.
9
+ */
10
+ export interface PublishFiadoTxResponse {
11
+ status: "OK" | "FAILED";
12
+ /** Mensaje breve para logs. Vacío en happy path. */
13
+ message?: string;
14
+ }
@@ -39,6 +39,8 @@ export * from './dtos/ProviderProcessServicePaymentTransactionRequest';
39
39
  export * from './dtos/ProviderProcessServicePaymentTransactionResponse';
40
40
  export * from './dtos/AuthorizeRenewalPreAuthRequest';
41
41
  export * from './dtos/AuthorizeRenewalPreAuthResponse';
42
+ export * from './dtos/PublishFiadoTxRequest';
43
+ export * from './dtos/PublishFiadoTxResponse';
42
44
 
43
45
  export * from './enums/TransactionProcessorCodesEnum';
44
46
  export * from './enums/AsyncTxStatusEnum';
@@ -0,0 +1,53 @@
1
+ import { IsNumber, IsObject, IsOptional, IsPositive, IsString, Length, MaxLength } from "class-validator";
2
+
3
+ /**
4
+ * Request del endpoint `POST /settlements` del lambda `wallet-funding-settlement`.
5
+ *
6
+ * Ejecuta el WRITE atómico (TransactWriteItems 2 items) que acredita el
7
+ * balance del wallet Y marca el payment del provider como APPLIED, todo
8
+ * en una única transacción ACID DDB single-region.
9
+ *
10
+ * Idempotente por `ConditionExpression: status = CONSULTED` sobre el
11
+ * payment row del provider. Si el reintento llega y el row ya está en
12
+ * APPLIED, el settlement devuelve `alreadySettled=true` con el folio
13
+ * cacheado sin re-creditar.
14
+ *
15
+ * Caller canónico: `equality-connector.WebhookPaymentManager` post
16
+ * `processor.walletFundingValidate()`. Ver spec 15.
17
+ */
18
+ export class SettleWalletFundingRequest {
19
+ /** Nombre canónico del provider cash-in. V1: "equality". Futuros: "openpay", etc. */
20
+ @IsString() @MaxLength(32) providerName!: string;
21
+
22
+ /**
23
+ * Identificador de la transacción en el provider. Para Equality es
24
+ * `equalityTransactionNumber` (PK de `EqualityFundingPayment_GT`).
25
+ */
26
+ @IsString() @MaxLength(64) providerTxId!: string;
27
+
28
+ /** Referencia del payment row (ej. la `reference` de Equality). */
29
+ @IsString() @MaxLength(128) providerReference!: string;
30
+
31
+ @IsString() @MaxLength(64) directoryId!: string;
32
+
33
+ /** PK de la cuenta PCF (AccountPagoConfiado_GT.id) destino del crédito. */
34
+ @IsString() @MaxLength(64) accountId!: string;
35
+
36
+ @IsNumber() @IsPositive() amount!: number;
37
+
38
+ @IsString() @Length(3, 3) currencyCode!: string;
39
+
40
+ /**
41
+ * Folio del processor (campo Alfanumérico según doc Passport). Pre-generado
42
+ * por `processor.walletFundingValidate()` y reenviado al settlement para
43
+ * persistirlo en el payment row como `processorTransactionNumber`.
44
+ */
45
+ @IsString() @MaxLength(64) processorTransactionNumber!: string;
46
+
47
+ /**
48
+ * Snapshot del webhook recibido del provider. Opcional — se persiste en
49
+ * `webhookResponseRaw` del payment row para auditoría. NO load-bearing
50
+ * para la idempotencia ni el flow.
51
+ */
52
+ @IsOptional() @IsObject() webhookEcho?: Record<string, unknown>;
53
+ }
@@ -0,0 +1,37 @@
1
+ import { BenefitPaymentStatusEnum } from "../../benefitCenter/enums/BenefitPaymentStatusEnum";
2
+ import { SettlementErrorCodeEnum } from "../enums/SettlementErrorCodeEnum";
3
+
4
+ /**
5
+ * Response del endpoint `POST /settlements`. Indica si el settlement se
6
+ * ejecutó exitosamente (APPROVED) o fue rechazado (REJECTED) con un
7
+ * `errorCode` específico.
8
+ *
9
+ * Estado APPROVED:
10
+ * - El TransactWriteItems se commiteó atómicamente.
11
+ * - Balance acreditado + status del payment en APPLIED.
12
+ * - `alreadySettled=false` (primera ejecución) o `alreadySettled=true`
13
+ * (reintento idempotent — el row ya estaba en APPLIED).
14
+ *
15
+ * Estado REJECTED:
16
+ * - El TransactWriteItems NO se ejecutó (pre-check falló) o falló
17
+ * irrecuperablemente. Caller debe responder REJECTED al provider y
18
+ * marcar el payment en `QUEUED_FOR_REFUND` para gestión manual.
19
+ *
20
+ * Ver spec 15.
21
+ */
22
+ export interface SettleWalletFundingResponse {
23
+ status: BenefitPaymentStatusEnum;
24
+ /**
25
+ * `true` si el TransactWriteItems no se ejecutó porque el row ya estaba
26
+ * en APPLIED (idempotent fast path). `false` si fue la primera ejecución
27
+ * que efectivamente movió saldo.
28
+ */
29
+ alreadySettled: boolean;
30
+ /**
31
+ * Folio del processor devuelto al caller. En idempotent hit es el folio
32
+ * cacheado del row APPLIED previo (NO el del request actual).
33
+ */
34
+ processorTransactionNumber: string;
35
+ errorCode?: SettlementErrorCodeEnum;
36
+ message?: string;
37
+ }
@@ -19,3 +19,5 @@ export * from "./ReverseWalletFundingRequest";
19
19
  export * from "./ReverseWalletFundingResponse";
20
20
  export * from "./AuthorizeFundingRequest";
21
21
  export * from "./AuthorizeFundingResponse";
22
+ export * from "./SettleWalletFundingRequest";
23
+ export * from "./SettleWalletFundingResponse";
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Códigos de error del lambda `wallet-funding-settlement`.
3
+ *
4
+ * Distintos a `WalletFundingErrorCodeEnum` — esos son del flow del processor
5
+ * (validaciones PCF, AML, caps). Estos son específicos del settlement:
6
+ * estado del payment row + integridad del TransactWriteItems.
7
+ *
8
+ * Ver spec 15 §4.5 (flujo interno) + §8 (edge cases).
9
+ */
10
+ export enum SettlementErrorCodeEnum {
11
+ /** El payment row no existe en la tabla del provider. Bug del caller (debió crear CONSULTED antes). */
12
+ PAYMENT_NOT_FOUND = "PAYMENT_NOT_FOUND",
13
+ /** El payment row está en estado terminal (FAILED, QUEUED_FOR_REFUND, REJECTED). No procede acreditar. */
14
+ PAYMENT_IN_TERMINAL_STATE = "PAYMENT_IN_TERMINAL_STATE",
15
+ /** La cuenta PCF no existe o no está accesible. */
16
+ ACCOUNT_NOT_FOUND = "ACCOUNT_NOT_FOUND",
17
+ /** El TransactWriteItems falló por razón no recuperable (no ConditionalCheckFailed esperado). */
18
+ TRANSACT_WRITE_FAILED = "TRANSACT_WRITE_FAILED",
19
+ /** El providerName del request no está registrado en el ProviderRegistry del settlement. */
20
+ PROVIDER_NOT_SUPPORTED = "PROVIDER_NOT_SUPPORTED",
21
+ /** El amount del request difiere del paymentAmount persistido en el row CONSULTED. Posible tampering. */
22
+ AMOUNT_MISMATCH = "AMOUNT_MISMATCH",
23
+ /** Error interno no clasificado. Caller debe loggear + alarmar. */
24
+ INTERNAL_ERROR = "INTERNAL_ERROR",
25
+ }
@@ -6,3 +6,4 @@ export * from "./WalletFundingErrorCodeEnum";
6
6
  export * from "./WalletFundingRefundReasonEnum";
7
7
  export * from "./PaymentCodeTypeEnum";
8
8
  export * from "./FundingWebhookTypeEnum";
9
+ export * from "./SettlementErrorCodeEnum";
@@ -1,2 +1,3 @@
1
1
  export * from "./enums";
2
2
  export * from "./dtos";
3
+ export * from "./schemas";
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Schema literal de la tabla DDB `AccountPagoConfiado_GT`.
3
+ *
4
+ * Owner declarado: `account-pago-confiado`. Write-shared con
5
+ * `wallet-funding-settlement` SOLO en el path money (campos de balance) bajo
6
+ * excepción documentada (spec 15 §3 + spec 10 §7 pendiente).
7
+ *
8
+ * El settlement escribe ÚNICAMENTE estos campos vía TransactWriteItems:
9
+ * - `availableBalance` (ADD :amt)
10
+ * - `currentBalance` (ADD :amt)
11
+ * - `updatedAt` (SET :now)
12
+ *
13
+ * El resto del shape (status, level, KYC, settings) sigue siendo write-exclusivo
14
+ * del owner. Cualquier campo nuevo de balance que el settlement deba escribir
15
+ * requiere actualizar este schema + el TransactWriteBuilder del settlement.
16
+ */
17
+ export const AccountPagoConfiadoTable = {
18
+ name: "AccountPagoConfiado_GT",
19
+ pk: "id",
20
+ attributes: {
21
+ id: "id",
22
+ directoryId: "directoryId",
23
+ // Campos write-shared con wallet-funding-settlement (money path):
24
+ availableBalance: "availableBalance",
25
+ currentBalance: "currentBalance",
26
+ lockedBalance: "lockedBalance",
27
+ unsettledBalance: "unsettledBalance",
28
+ unpaidBalance: "unpaidBalance",
29
+ unallowedBalance: "unallowedBalance",
30
+ updatedAt: "updatedAt",
31
+ // Campos write-exclusive del owner (account-pago-confiado):
32
+ status: "status",
33
+ accountLevel: "accountLevel",
34
+ currency: "currency",
35
+ countryId: "countryId",
36
+ createdAt: "createdAt",
37
+ },
38
+ } as const;
39
+
40
+ export type AccountPagoConfiadoAttribute =
41
+ typeof AccountPagoConfiadoTable.attributes[keyof typeof AccountPagoConfiadoTable.attributes];
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Schema literal de la tabla DDB `EqualityFundingPayment_GT`.
3
+ *
4
+ * Define los nombres exactos de tabla, atributos e índices que el
5
+ * `equality-connector` (owner declarado) y el `wallet-funding-settlement`
6
+ * (write-shared bajo excepción money path, spec 15 §3) consumen.
7
+ *
8
+ * NO es un model de Dynamoose — son solo constantes type-safe. El
9
+ * settlement usa DDB SDK v3 raw para `TransactWriteItems`; el connector
10
+ * sigue usando Dynamoose en su repositorio (su propio model interno).
11
+ *
12
+ * Cuando el schema cambia (nuevo campo, índice nuevo), bump del type-kit
13
+ * fuerza recompile de TODOS los consumers → drift imposible en silence.
14
+ */
15
+ export const EqualityFundingPaymentTable = {
16
+ name: "EqualityFundingPayment_GT",
17
+ pk: "equalityTransactionNumber",
18
+ attributes: {
19
+ equalityTransactionNumber: "equalityTransactionNumber",
20
+ directoryId: "directoryId",
21
+ reference: "reference",
22
+ paymentAmount: "paymentAmount",
23
+ paymentDate: "paymentDate",
24
+ center: "center",
25
+ centerId: "centerId",
26
+ status: "status",
27
+ webhookType: "webhookType",
28
+ webhookRequestRaw: "webhookRequestRaw",
29
+ webhookResponseRaw: "webhookResponseRaw",
30
+ processorTransactionNumber: "processorTransactionNumber",
31
+ rejectionCode: "rejectionCode",
32
+ rejectionReason: "rejectionReason",
33
+ refundReason: "refundReason",
34
+ createdAt: "createdAt",
35
+ updatedAt: "updatedAt",
36
+ },
37
+ indexes: {
38
+ /** GSI por status + createdAt — usado por crons de reconciliation/refund. */
39
+ statusCreatedAt: "status-createdAt-index",
40
+ },
41
+ } as const;
42
+
43
+ export type EqualityFundingPaymentAttribute =
44
+ typeof EqualityFundingPaymentTable.attributes[keyof typeof EqualityFundingPaymentTable.attributes];
@@ -0,0 +1,2 @@
1
+ export * from "./EqualityFundingPaymentSchema";
2
+ export * from "./AccountPagoConfiadoSchema";
@@ -1,7 +0,0 @@
1
- declare const ALLOWED_MFA_TYPES: readonly ["SOFTWARE_TOKEN_MFA"];
2
- export type AllowedMfaType = (typeof ALLOWED_MFA_TYPES)[number];
3
- export declare class MfaPoolConfig {
4
- requireMfa: boolean;
5
- mfaTypes: AllowedMfaType[];
6
- }
7
- export {};
@@ -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.MfaPoolConfig = void 0;
13
- const class_transformer_1 = require("class-transformer");
14
- const class_validator_1 = require("class-validator");
15
- const MfaTypesRequiresOne_1 = require("../validators/MfaTypesRequiresOne");
16
- // EMAIL_OTP removido (3.41.0): el cognito-backoffice-connector no provisiona
17
- // EmailMfaConfiguration a nivel pool (requiere infra SES que no está montada
18
- // y la integración con messages-lambda aún no tiene diseño). Ver TD-020 +
19
- // DEC-001 en cognito-backoffice-connector/docs/. Si se reintroduce, agregar
20
- // 'EMAIL_OTP' a este array.
21
- const ALLOWED_MFA_TYPES = ['SOFTWARE_TOKEN_MFA'];
22
- class MfaPoolConfig {
23
- }
24
- exports.MfaPoolConfig = MfaPoolConfig;
25
- __decorate([
26
- (0, class_transformer_1.Expose)(),
27
- (0, class_validator_1.IsBoolean)(),
28
- __metadata("design:type", Boolean)
29
- ], MfaPoolConfig.prototype, "requireMfa", void 0);
30
- __decorate([
31
- (0, class_transformer_1.Expose)(),
32
- (0, class_validator_1.IsArray)(),
33
- (0, class_validator_1.IsIn)(ALLOWED_MFA_TYPES, { each: true }),
34
- (0, class_validator_1.Validate)(MfaTypesRequiresOne_1.MfaTypesRequiresOne),
35
- __metadata("design:type", Array)
36
- ], MfaPoolConfig.prototype, "mfaTypes", void 0);
@@ -1,20 +0,0 @@
1
- import { PoolKind } from '../../rbac/enums/PoolKind';
2
- /**
3
- * Shape del `PoolConfigRow` expuesto al caller (BFF M18 / otros lambdas Fiado).
4
- * Refleja la configuración de un Cognito User Pool registrado en la tabla
5
- * `PoolConfigs_GT` del lambda `cognito-backoffice-connector`.
6
- */
7
- export declare class PoolConfigResponse {
8
- userPoolId: string;
9
- userPoolArn: string;
10
- region: string;
11
- poolKind: PoolKind;
12
- displayName: string;
13
- appClients: Record<string, {
14
- clientId: string;
15
- clientName: string;
16
- }>;
17
- status: 'active' | 'deprecated';
18
- createdAt: number;
19
- updatedAt: number;
20
- }
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PoolConfigResponse = void 0;
4
- /**
5
- * Shape del `PoolConfigRow` expuesto al caller (BFF M18 / otros lambdas Fiado).
6
- * Refleja la configuración de un Cognito User Pool registrado en la tabla
7
- * `PoolConfigs_GT` del lambda `cognito-backoffice-connector`.
8
- */
9
- class PoolConfigResponse {
10
- }
11
- exports.PoolConfigResponse = PoolConfigResponse;
@@ -1,4 +0,0 @@
1
- import { PoolConfigResponse } from './PoolConfigResponse';
2
- export declare class PoolsListResponse {
3
- pools: PoolConfigResponse[];
4
- }
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PoolsListResponse = void 0;
4
- class PoolsListResponse {
5
- }
6
- exports.PoolsListResponse = PoolsListResponse;
@@ -1,17 +0,0 @@
1
- import { ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
2
- /**
3
- * Cross-field validator: si `requireMfa: true`, entonces `mfaTypes` debe tener
4
- * al menos 1 elemento. Si `requireMfa: false`, `mfaTypes` puede ser vacío.
5
- *
6
- * Razón: cuando el pool nace con MFA habilitado, el connector llama
7
- * `SetUserPoolMfaConfigCommand` con la lista de tipos del DTO. Si el array
8
- * llega vacío con `requireMfa: true`, el SDK rechaza con InvalidParameterException
9
- * y el pool queda en estado inconsistente (MfaConfiguration:'ON' sin tipos).
10
- * Mejor rechazar en validación del DTO antes de tocar AWS.
11
- *
12
- * Ver pivote v1.4.1 TD-017 cerrado + spec doc §1 R3.
13
- */
14
- export declare class MfaTypesRequiresOne implements ValidatorConstraintInterface {
15
- validate(mfaTypes: unknown, args: ValidationArguments): boolean;
16
- defaultMessage(): string;
17
- }
@@ -1,39 +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
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.MfaTypesRequiresOne = void 0;
10
- const class_validator_1 = require("class-validator");
11
- /**
12
- * Cross-field validator: si `requireMfa: true`, entonces `mfaTypes` debe tener
13
- * al menos 1 elemento. Si `requireMfa: false`, `mfaTypes` puede ser vacío.
14
- *
15
- * Razón: cuando el pool nace con MFA habilitado, el connector llama
16
- * `SetUserPoolMfaConfigCommand` con la lista de tipos del DTO. Si el array
17
- * llega vacío con `requireMfa: true`, el SDK rechaza con InvalidParameterException
18
- * y el pool queda en estado inconsistente (MfaConfiguration:'ON' sin tipos).
19
- * Mejor rechazar en validación del DTO antes de tocar AWS.
20
- *
21
- * Ver pivote v1.4.1 TD-017 cerrado + spec doc §1 R3.
22
- */
23
- let MfaTypesRequiresOne = class MfaTypesRequiresOne {
24
- validate(mfaTypes, args) {
25
- const obj = args.object;
26
- if (obj.requireMfa === true) {
27
- return Array.isArray(mfaTypes) && mfaTypes.length >= 1;
28
- }
29
- // requireMfa: false → cualquier mfaTypes pasa.
30
- return true;
31
- }
32
- defaultMessage() {
33
- return 'mfaTypes requiere al menos un tipo cuando requireMfa=true';
34
- }
35
- };
36
- exports.MfaTypesRequiresOne = MfaTypesRequiresOne;
37
- exports.MfaTypesRequiresOne = MfaTypesRequiresOne = __decorate([
38
- (0, class_validator_1.ValidatorConstraint)({ name: 'MfaTypesRequiresOneWhenMfaRequired', async: false })
39
- ], MfaTypesRequiresOne);
@@ -1,16 +0,0 @@
1
- /**
2
- * Tipo de User Pool de Cognito desde la perspectiva del modelo RBAC Fiado.
3
- *
4
- * Origen: spec del proyecto `cognito-backoffice-connector` (Fase 0, componente 01
5
- * documento `docs/superpowers/specs/2026-05-26-cognito-connector-decisiones-pendientes-design.md`).
6
- *
7
- * Decisión (TD-003): el proyecto converge en estos 2 valores. El documento componente 03
8
- * lista 3 valores (incluyendo una variante adicional) pero queda como outlier — la
9
- * decisión vigente en los 6 docs restantes y en el plan de implementación es 2 valores:
10
- * - BACKOFFICE_PLATFORM — pool del backoffice de plataforma (cross-tenant)
11
- * - BACKOFFICE_TENANT — pool por tenant (multi-tenant isolation)
12
- */
13
- export declare enum PoolKind {
14
- BACKOFFICE_PLATFORM = "BACKOFFICE_PLATFORM",
15
- BACKOFFICE_TENANT = "BACKOFFICE_TENANT"
16
- }
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PoolKind = void 0;
4
- /**
5
- * Tipo de User Pool de Cognito desde la perspectiva del modelo RBAC Fiado.
6
- *
7
- * Origen: spec del proyecto `cognito-backoffice-connector` (Fase 0, componente 01
8
- * documento `docs/superpowers/specs/2026-05-26-cognito-connector-decisiones-pendientes-design.md`).
9
- *
10
- * Decisión (TD-003): el proyecto converge en estos 2 valores. El documento componente 03
11
- * lista 3 valores (incluyendo una variante adicional) pero queda como outlier — la
12
- * decisión vigente en los 6 docs restantes y en el plan de implementación es 2 valores:
13
- * - BACKOFFICE_PLATFORM — pool del backoffice de plataforma (cross-tenant)
14
- * - BACKOFFICE_TENANT — pool por tenant (multi-tenant isolation)
15
- */
16
- var PoolKind;
17
- (function (PoolKind) {
18
- PoolKind["BACKOFFICE_PLATFORM"] = "BACKOFFICE_PLATFORM";
19
- PoolKind["BACKOFFICE_TENANT"] = "BACKOFFICE_TENANT";
20
- })(PoolKind || (exports.PoolKind = PoolKind = {}));
@@ -1 +0,0 @@
1
- export * from './enums/PoolKind';