@fiado/type-kit 3.485.0 → 3.487.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.
- package/_test_/unit/collection/disburseRequest.test.ts +92 -0
- package/_test_/unit/collection/disbursementType.test.ts +19 -0
- package/bin/collection/dtos/DisburseRequest.d.ts +20 -0
- package/bin/collection/dtos/DisburseRequest.js +64 -0
- package/bin/collection/dtos/DisburseResponse.d.ts +4 -0
- package/bin/collection/dtos/DisburseResponse.js +22 -0
- package/bin/collection/enums/DisbursementType.d.ts +7 -0
- package/bin/collection/enums/DisbursementType.js +11 -0
- package/bin/collection/index.d.ts +3 -0
- package/bin/collection/index.js +3 -0
- package/bin/retailCards/dtos/responses/CardBalanceResponse.d.ts +5 -0
- package/bin/retailCards/dtos/responses/CardBalanceResponse.js +2 -0
- package/bin/retailCards/index.d.ts +1 -0
- package/bin/retailCards/index.js +1 -0
- package/bin/retailWizard/dtos/responses/AppOnboardingResponse.d.ts +2 -0
- package/package.json +1 -1
- package/src/collection/dtos/DisburseRequest.ts +30 -0
- package/src/collection/dtos/DisburseResponse.ts +6 -0
- package/src/collection/enums/DisbursementType.ts +7 -0
- package/src/collection/index.ts +3 -0
- package/src/retailCards/dtos/responses/CardBalanceResponse.ts +5 -0
- package/src/retailCards/index.ts +1 -0
- package/src/retailWizard/dtos/responses/AppOnboardingResponse.ts +2 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validate } from 'class-validator';
|
|
4
|
+
import { Collection } from '../../../src/index';
|
|
5
|
+
import { DisburseRequest, DisburseResponse } from '../../../src/collection/index';
|
|
6
|
+
|
|
7
|
+
const VALID = {
|
|
8
|
+
tenantId: 'surekeep',
|
|
9
|
+
domain: 'retail-wizard-business',
|
|
10
|
+
directoryId: 'dir-1',
|
|
11
|
+
disbursementType: 'MEX_BONUS',
|
|
12
|
+
amount: 25.5,
|
|
13
|
+
currencyId: 'MXN',
|
|
14
|
+
idempotencyKey: '01M0JT2KQCN9QGA7PE3C34Q37E',
|
|
15
|
+
concept: 'Bono de bienvenida SureKeep',
|
|
16
|
+
reference: '01M0JT2KQCN9QGA7PE3C34Q37E',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
async function invalidProperties(body: Record<string, unknown>): Promise<string[]> {
|
|
20
|
+
const dto = plainToInstance(DisburseRequest, body);
|
|
21
|
+
return (await validate(dto as object)).map((e) => e.property);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
describe('DisburseRequest', () => {
|
|
25
|
+
it('acepta una dispersión válida', async () => {
|
|
26
|
+
expect(await invalidProperties(VALID)).toEqual([]);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('reference es opcional', async () => {
|
|
30
|
+
const { reference: _omit, ...withoutReference } = VALID;
|
|
31
|
+
expect(await invalidProperties(withoutReference)).toEqual([]);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it.each(['tenantId', 'domain', 'directoryId', 'idempotencyKey', 'concept'])(
|
|
35
|
+
'rechaza %s vacío',
|
|
36
|
+
async (field) => {
|
|
37
|
+
expect(await invalidProperties({ ...VALID, [field]: '' })).toContain(field);
|
|
38
|
+
},
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
it.each(['tenantId', 'domain', 'directoryId', 'disbursementType', 'amount', 'currencyId', 'idempotencyKey', 'concept'])(
|
|
42
|
+
'rechaza si falta %s',
|
|
43
|
+
async (field) => {
|
|
44
|
+
const body: Record<string, unknown> = { ...VALID };
|
|
45
|
+
delete body[field];
|
|
46
|
+
expect(await invalidProperties(body)).toContain(field);
|
|
47
|
+
},
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
it('rechaza un tipo de dispersión desconocido', async () => {
|
|
51
|
+
expect(await invalidProperties({ ...VALID, disbursementType: 'USD_BONUS' })).toContain('disbursementType');
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it('rechaza cualquier moneda distinta de MXN', async () => {
|
|
55
|
+
expect(await invalidProperties({ ...VALID, currencyId: 'USD' })).toContain('currencyId');
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it.each([0, -1, 10.005, '25'])('rechaza el monto %p', async (amount) => {
|
|
59
|
+
expect(await invalidProperties({ ...VALID, amount })).toContain('amount');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it('acepta pesos con dos decimales', async () => {
|
|
63
|
+
expect(await invalidProperties({ ...VALID, amount: 19.99 })).toEqual([]);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('rechaza una llave con #, que chocaría con los executionId del motor', async () => {
|
|
67
|
+
expect(await invalidProperties({ ...VALID, idempotencyKey: 'SALE#42' })).toContain('idempotencyKey');
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('rechaza un concepto de más de 120 caracteres, el tope del processor', async () => {
|
|
71
|
+
expect(await invalidProperties({ ...VALID, concept: 'x'.repeat(121) })).toContain('concept');
|
|
72
|
+
expect(await invalidProperties({ ...VALID, concept: 'x'.repeat(120) })).toEqual([]);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('rechaza strings que no son string', async () => {
|
|
76
|
+
expect(await invalidProperties({ ...VALID, directoryId: 42, reference: 7 })).toEqual(
|
|
77
|
+
expect.arrayContaining(['directoryId', 'reference']),
|
|
78
|
+
);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('sale por el index raíz', () => {
|
|
82
|
+
expect(new Collection.DisburseRequest()).toBeInstanceOf(DisburseRequest);
|
|
83
|
+
expect(new Collection.DisburseResponse()).toBeInstanceOf(DisburseResponse);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
describe('DisburseResponse', () => {
|
|
88
|
+
it('acepta un folio o null', async () => {
|
|
89
|
+
expect(await validate(plainToInstance(DisburseResponse, { transactionId: 'TX-1' }) as object)).toHaveLength(0);
|
|
90
|
+
expect(await validate(plainToInstance(DisburseResponse, { transactionId: null }) as object)).toHaveLength(0);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { Collection } from '../../../src/index';
|
|
3
|
+
import { DisbursementType } from '../../../src/collection/index';
|
|
4
|
+
|
|
5
|
+
describe('DisbursementType', () => {
|
|
6
|
+
it('v1 solo trae el riel MEX_BONUS', () => {
|
|
7
|
+
expect(Object.values(DisbursementType)).toEqual(['MEX_BONUS']);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
it('cada clave es igual a su valor', () => {
|
|
11
|
+
for (const [key, value] of Object.entries(DisbursementType)) {
|
|
12
|
+
expect(key).toBe(value);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('sale por el index raíz', () => {
|
|
17
|
+
expect(Collection.DisbursementType.MEX_BONUS).toBe('MEX_BONUS');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CurrencyId } from '../../currency/enums/CurrencyId';
|
|
2
|
+
import { DisbursementType } from '../enums/DisbursementType';
|
|
3
|
+
/** Dispersión síncrona: el motor deposita `amount` pesos al titular por el riel de `disbursementType`. */
|
|
4
|
+
export declare class DisburseRequest {
|
|
5
|
+
tenantId: string;
|
|
6
|
+
/** Quién llama. Solo viaja a los logs; no es control de acceso. */
|
|
7
|
+
domain: string;
|
|
8
|
+
/** Titular que recibe el depósito. */
|
|
9
|
+
directoryId: string;
|
|
10
|
+
disbursementType: DisbursementType;
|
|
11
|
+
/** Pesos con hasta dos decimales, no centavos. */
|
|
12
|
+
amount: number;
|
|
13
|
+
currencyId: CurrencyId;
|
|
14
|
+
/** Única entre todas las operaciones del processor; el motor la reenvía intacta. Sin `#`. */
|
|
15
|
+
idempotencyKey: string;
|
|
16
|
+
/** Texto que ve el titular en su movimiento. 120 es el tope del processor. */
|
|
17
|
+
concept: string;
|
|
18
|
+
/** Id del llamador para rastreo: asiento, crédito. */
|
|
19
|
+
reference?: string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
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.DisburseRequest = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const CurrencyId_1 = require("../../currency/enums/CurrencyId");
|
|
15
|
+
const DisbursementType_1 = require("../enums/DisbursementType");
|
|
16
|
+
/** Dispersión síncrona: el motor deposita `amount` pesos al titular por el riel de `disbursementType`. */
|
|
17
|
+
class DisburseRequest {
|
|
18
|
+
}
|
|
19
|
+
exports.DisburseRequest = DisburseRequest;
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, class_validator_1.IsString)(),
|
|
22
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], DisburseRequest.prototype, "tenantId", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, class_validator_1.IsString)(),
|
|
27
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], DisburseRequest.prototype, "domain", void 0);
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, class_validator_1.IsString)(),
|
|
32
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], DisburseRequest.prototype, "directoryId", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, class_validator_1.IsEnum)(DisbursementType_1.DisbursementType),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], DisburseRequest.prototype, "disbursementType", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, class_validator_1.IsNumber)({ maxDecimalPlaces: 2 }),
|
|
41
|
+
(0, class_validator_1.IsPositive)(),
|
|
42
|
+
__metadata("design:type", Number)
|
|
43
|
+
], DisburseRequest.prototype, "amount", void 0);
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, class_validator_1.IsIn)([CurrencyId_1.CurrencyId.MXN]),
|
|
46
|
+
__metadata("design:type", String)
|
|
47
|
+
], DisburseRequest.prototype, "currencyId", void 0);
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, class_validator_1.IsString)(),
|
|
50
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
51
|
+
(0, class_validator_1.Matches)(/^[^#]+$/),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], DisburseRequest.prototype, "idempotencyKey", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, class_validator_1.IsString)(),
|
|
56
|
+
(0, class_validator_1.IsNotEmpty)(),
|
|
57
|
+
(0, class_validator_1.MaxLength)(120),
|
|
58
|
+
__metadata("design:type", String)
|
|
59
|
+
], DisburseRequest.prototype, "concept", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, class_validator_1.IsOptional)(),
|
|
62
|
+
(0, class_validator_1.IsString)(),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], DisburseRequest.prototype, "reference", void 0);
|
|
@@ -0,0 +1,22 @@
|
|
|
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.DisburseResponse = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
/** Folio del processor; `null` cuando aprobó sin devolverlo y el llamador decide cómo cerrar. */
|
|
15
|
+
class DisburseResponse {
|
|
16
|
+
}
|
|
17
|
+
exports.DisburseResponse = DisburseResponse;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, class_validator_1.IsOptional)(),
|
|
20
|
+
(0, class_validator_1.IsString)(),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], DisburseResponse.prototype, "transactionId", void 0);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DisbursementType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Riel por el que el motor de cobro deposita una dispersión. Nombra el movimiento, no el propósito:
|
|
6
|
+
* el propósito lo manda el llamador en `concept`.
|
|
7
|
+
*/
|
|
8
|
+
var DisbursementType;
|
|
9
|
+
(function (DisbursementType) {
|
|
10
|
+
DisbursementType["MEX_BONUS"] = "MEX_BONUS";
|
|
11
|
+
})(DisbursementType || (exports.DisbursementType = DisbursementType = {}));
|
|
@@ -10,6 +10,7 @@ export * from './enums/CollectionFeeMode';
|
|
|
10
10
|
export * from './enums/RetryIntentStatus';
|
|
11
11
|
export * from './enums/AckIntentStatus';
|
|
12
12
|
export * from './enums/RedriveOutboxStatus';
|
|
13
|
+
export * from './enums/DisbursementType';
|
|
13
14
|
export * from './dtos/PendingChargeDto';
|
|
14
15
|
export * from './dtos/CollectRequest';
|
|
15
16
|
export * from './dtos/CollectResponse';
|
|
@@ -27,6 +28,8 @@ export * from './dtos/RegisterCollectibleResponse';
|
|
|
27
28
|
export * from './dtos/CollectionPricingDto';
|
|
28
29
|
export * from './dtos/ResolvePendingChargesRequest';
|
|
29
30
|
export * from './dtos/MoneyInEvent';
|
|
31
|
+
export * from './dtos/DisburseRequest';
|
|
32
|
+
export * from './dtos/DisburseResponse';
|
|
30
33
|
export * from './dtos/CollectionIntentSummaryDto';
|
|
31
34
|
export * from './dtos/CollectionAttemptDto';
|
|
32
35
|
export * from './dtos/CollectionOutboxEventDto';
|
package/bin/collection/index.js
CHANGED
|
@@ -27,6 +27,7 @@ __exportStar(require("./enums/CollectionFeeMode"), exports);
|
|
|
27
27
|
__exportStar(require("./enums/RetryIntentStatus"), exports);
|
|
28
28
|
__exportStar(require("./enums/AckIntentStatus"), exports);
|
|
29
29
|
__exportStar(require("./enums/RedriveOutboxStatus"), exports);
|
|
30
|
+
__exportStar(require("./enums/DisbursementType"), exports);
|
|
30
31
|
// DTOs
|
|
31
32
|
__exportStar(require("./dtos/PendingChargeDto"), exports);
|
|
32
33
|
__exportStar(require("./dtos/CollectRequest"), exports);
|
|
@@ -45,6 +46,8 @@ __exportStar(require("./dtos/RegisterCollectibleResponse"), exports);
|
|
|
45
46
|
__exportStar(require("./dtos/CollectionPricingDto"), exports);
|
|
46
47
|
__exportStar(require("./dtos/ResolvePendingChargesRequest"), exports);
|
|
47
48
|
__exportStar(require("./dtos/MoneyInEvent"), exports);
|
|
49
|
+
__exportStar(require("./dtos/DisburseRequest"), exports);
|
|
50
|
+
__exportStar(require("./dtos/DisburseResponse"), exports);
|
|
48
51
|
// DTOs — backoffice de monitoreo
|
|
49
52
|
__exportStar(require("./dtos/CollectionIntentSummaryDto"), exports);
|
|
50
53
|
__exportStar(require("./dtos/CollectionAttemptDto"), exports);
|
|
@@ -5,6 +5,7 @@ export * from './dtos/requests/RegisterCardDeliveryRequest';
|
|
|
5
5
|
export * from './dtos/requests/WriteOffCardStockRequest';
|
|
6
6
|
export * from './dtos/requests/ReverseCardMovementRequest';
|
|
7
7
|
export * from './dtos/responses/CardBatchResponse';
|
|
8
|
+
export * from './dtos/responses/CardBalanceResponse';
|
|
8
9
|
export * from './dtos/responses/CardDeliveryResponse';
|
|
9
10
|
export * from './dtos/responses/CardStockBalanceResponse';
|
|
10
11
|
export * from './dtos/responses/CardStockMovementResponse';
|
package/bin/retailCards/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __exportStar(require("./dtos/requests/WriteOffCardStockRequest"), exports);
|
|
|
23
23
|
__exportStar(require("./dtos/requests/ReverseCardMovementRequest"), exports);
|
|
24
24
|
// Response DTOs
|
|
25
25
|
__exportStar(require("./dtos/responses/CardBatchResponse"), exports);
|
|
26
|
+
__exportStar(require("./dtos/responses/CardBalanceResponse"), exports);
|
|
26
27
|
__exportStar(require("./dtos/responses/CardDeliveryResponse"), exports);
|
|
27
28
|
__exportStar(require("./dtos/responses/CardStockBalanceResponse"), exports);
|
|
28
29
|
__exportStar(require("./dtos/responses/CardStockMovementResponse"), exports);
|
|
@@ -11,4 +11,6 @@ export interface AppOnboardingResponse {
|
|
|
11
11
|
steps: AppOnboardingStep[];
|
|
12
12
|
/** Ninguna quedó en `PENDING`. Una `UNVERIFIABLE` NO bloquea: cuenta como saldada. */
|
|
13
13
|
allSettled: boolean;
|
|
14
|
+
/** Hay tarjetas en la tienda. Ausente: no se pudo consultar retail-cards. Con `false` la tarjeta física no bloquea. */
|
|
15
|
+
cardStockAvailable?: boolean;
|
|
14
16
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IsEnum, IsIn, IsNotEmpty, IsNumber, IsOptional, IsPositive, IsString, Matches, MaxLength } from 'class-validator';
|
|
2
|
+
import { CurrencyId } from '../../currency/enums/CurrencyId';
|
|
3
|
+
import { DisbursementType } from '../enums/DisbursementType';
|
|
4
|
+
|
|
5
|
+
/** Dispersión síncrona: el motor deposita `amount` pesos al titular por el riel de `disbursementType`. */
|
|
6
|
+
export class DisburseRequest {
|
|
7
|
+
@IsString() @IsNotEmpty() tenantId!: string;
|
|
8
|
+
|
|
9
|
+
/** Quién llama. Solo viaja a los logs; no es control de acceso. */
|
|
10
|
+
@IsString() @IsNotEmpty() domain!: string;
|
|
11
|
+
|
|
12
|
+
/** Titular que recibe el depósito. */
|
|
13
|
+
@IsString() @IsNotEmpty() directoryId!: string;
|
|
14
|
+
|
|
15
|
+
@IsEnum(DisbursementType) disbursementType!: DisbursementType;
|
|
16
|
+
|
|
17
|
+
/** Pesos con hasta dos decimales, no centavos. */
|
|
18
|
+
@IsNumber({ maxDecimalPlaces: 2 }) @IsPositive() amount!: number;
|
|
19
|
+
|
|
20
|
+
@IsIn([CurrencyId.MXN]) currencyId!: CurrencyId;
|
|
21
|
+
|
|
22
|
+
/** Única entre todas las operaciones del processor; el motor la reenvía intacta. Sin `#`. */
|
|
23
|
+
@IsString() @IsNotEmpty() @Matches(/^[^#]+$/) idempotencyKey!: string;
|
|
24
|
+
|
|
25
|
+
/** Texto que ve el titular en su movimiento. 120 es el tope del processor. */
|
|
26
|
+
@IsString() @IsNotEmpty() @MaxLength(120) concept!: string;
|
|
27
|
+
|
|
28
|
+
/** Id del llamador para rastreo: asiento, crédito. */
|
|
29
|
+
@IsOptional() @IsString() reference?: string;
|
|
30
|
+
}
|
package/src/collection/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ export * from './enums/CollectionFeeMode';
|
|
|
11
11
|
export * from './enums/RetryIntentStatus';
|
|
12
12
|
export * from './enums/AckIntentStatus';
|
|
13
13
|
export * from './enums/RedriveOutboxStatus';
|
|
14
|
+
export * from './enums/DisbursementType';
|
|
14
15
|
|
|
15
16
|
// DTOs
|
|
16
17
|
export * from './dtos/PendingChargeDto';
|
|
@@ -30,6 +31,8 @@ export * from './dtos/RegisterCollectibleResponse';
|
|
|
30
31
|
export * from './dtos/CollectionPricingDto';
|
|
31
32
|
export * from './dtos/ResolvePendingChargesRequest';
|
|
32
33
|
export * from './dtos/MoneyInEvent';
|
|
34
|
+
export * from './dtos/DisburseRequest';
|
|
35
|
+
export * from './dtos/DisburseResponse';
|
|
33
36
|
|
|
34
37
|
// DTOs — backoffice de monitoreo
|
|
35
38
|
export * from './dtos/CollectionIntentSummaryDto';
|
package/src/retailCards/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ export * from './dtos/requests/ReverseCardMovementRequest';
|
|
|
9
9
|
|
|
10
10
|
// Response DTOs
|
|
11
11
|
export * from './dtos/responses/CardBatchResponse';
|
|
12
|
+
export * from './dtos/responses/CardBalanceResponse';
|
|
12
13
|
export * from './dtos/responses/CardDeliveryResponse';
|
|
13
14
|
export * from './dtos/responses/CardStockBalanceResponse';
|
|
14
15
|
export * from './dtos/responses/CardStockMovementResponse';
|
|
@@ -12,4 +12,6 @@ export interface AppOnboardingResponse {
|
|
|
12
12
|
steps: AppOnboardingStep[];
|
|
13
13
|
/** Ninguna quedó en `PENDING`. Una `UNVERIFIABLE` NO bloquea: cuenta como saldada. */
|
|
14
14
|
allSettled: boolean;
|
|
15
|
+
/** Hay tarjetas en la tienda. Ausente: no se pudo consultar retail-cards. Con `false` la tarjeta física no bloquea. */
|
|
16
|
+
cardStockAvailable?: boolean;
|
|
15
17
|
}
|