@temboplus/tembo-dashboard 0.6.0 → 0.7.1
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/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/lib/status.d.ts +113 -0
- package/dist/lib/status.d.ts.map +1 -0
- package/dist/modules/collection/collection.api-contract.d.ts +6 -2
- package/dist/modules/collection/collection.api-contract.d.ts.map +1 -1
- package/dist/modules/collection/collection.model.d.ts +34 -24
- package/dist/modules/collection/collection.model.d.ts.map +1 -1
- package/dist/modules/collection/collection.types.d.ts +16 -43
- package/dist/modules/collection/collection.types.d.ts.map +1 -1
- package/dist/modules/payout/payout.api-contract.d.ts +6 -2
- package/dist/modules/payout/payout.api-contract.d.ts.map +1 -1
- package/dist/modules/payout/payout.model.d.ts +33 -10
- package/dist/modules/payout/payout.model.d.ts.map +1 -1
- package/dist/modules/payout/payout.types.d.ts +3 -1
- package/dist/modules/payout/payout.types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized payment outcome, shared by collections and payouts.
|
|
3
|
+
*
|
|
4
|
+
* These are the v2 collection statuses. The backend reports the same
|
|
5
|
+
* vocabulary on records that are not themselves v2 (v1 collections, payouts)
|
|
6
|
+
* through the optional `normalizedStatus` field, so a single set of labels can
|
|
7
|
+
* describe every record.
|
|
8
|
+
*/
|
|
9
|
+
export declare enum NORMALIZED_STATUS {
|
|
10
|
+
/** Recorded before the provider confirms the request. No callback is sent. */
|
|
11
|
+
PENDING = "PENDING",
|
|
12
|
+
PENDING_ACK = "PENDING_ACK",
|
|
13
|
+
PAYMENT_ACCEPTED = "PAYMENT_ACCEPTED",
|
|
14
|
+
PAYMENT_FAILED = "PAYMENT_FAILED",
|
|
15
|
+
PAYMENT_EXPIRED = "PAYMENT_EXPIRED"
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The reason behind a `NORMALIZED_STATUS`. Identical across all channels.
|
|
19
|
+
*
|
|
20
|
+
* New codes may be added over time; any value that is not one of these is
|
|
21
|
+
* normalized to `UNKNOWN` by `toNormalizedStatusCode()`.
|
|
22
|
+
*/
|
|
23
|
+
export declare enum NORMALIZED_STATUS_CODE {
|
|
24
|
+
AWAITING_USER = "AWAITING_USER",
|
|
25
|
+
PROVIDER_UNCERTAIN = "PROVIDER_UNCERTAIN",
|
|
26
|
+
SUCCESS = "SUCCESS",
|
|
27
|
+
USER_TIMEOUT = "USER_TIMEOUT",
|
|
28
|
+
INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
|
|
29
|
+
INVALID_NUMBER = "INVALID_NUMBER",
|
|
30
|
+
INVALID_PIN = "INVALID_PIN",
|
|
31
|
+
ACCOUNT_LOCKED = "ACCOUNT_LOCKED",
|
|
32
|
+
ACCOUNT_RESTRICTED = "ACCOUNT_RESTRICTED",
|
|
33
|
+
USER_CANCELLED = "USER_CANCELLED",
|
|
34
|
+
USER_BUSY = "USER_BUSY",
|
|
35
|
+
USER_UNREACHABLE = "USER_UNREACHABLE",
|
|
36
|
+
LIMIT_EXCEEDED = "LIMIT_EXCEEDED",
|
|
37
|
+
INVALID_AMOUNT = "INVALID_AMOUNT",
|
|
38
|
+
PROVIDER_BUSY = "PROVIDER_BUSY",
|
|
39
|
+
PROVIDER_ERROR = "PROVIDER_ERROR",
|
|
40
|
+
UNKNOWN = "UNKNOWN"
|
|
41
|
+
}
|
|
42
|
+
export interface NormalizedStatusInfo {
|
|
43
|
+
label: string;
|
|
44
|
+
description: string;
|
|
45
|
+
category: "success" | "pending" | "failed";
|
|
46
|
+
color: "success" | "warning" | "error";
|
|
47
|
+
userFriendlyMessage: string;
|
|
48
|
+
}
|
|
49
|
+
export declare const NORMALIZED_STATUS_INFO: Record<NORMALIZED_STATUS, NormalizedStatusInfo>;
|
|
50
|
+
export interface NormalizedStatusCodeInfo {
|
|
51
|
+
label: string;
|
|
52
|
+
description: string;
|
|
53
|
+
/** The status this code is reported under. */
|
|
54
|
+
status: NORMALIZED_STATUS;
|
|
55
|
+
userFriendlyMessage: string;
|
|
56
|
+
}
|
|
57
|
+
export declare const NORMALIZED_STATUS_CODE_INFO: Record<NORMALIZED_STATUS_CODE, NormalizedStatusCodeInfo>;
|
|
58
|
+
/**
|
|
59
|
+
* Strict: the value only when it is a known `NORMALIZED_STATUS`, otherwise
|
|
60
|
+
* `undefined`. Use on fields that may hold something else entirely.
|
|
61
|
+
*/
|
|
62
|
+
export declare function asNormalizedStatus(value: unknown): NORMALIZED_STATUS | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Strict: the value only when it is a known `NORMALIZED_STATUS_CODE`,
|
|
65
|
+
* otherwise `undefined`. Use on fields that may hold something else entirely
|
|
66
|
+
* (e.g. a payout's provider status code).
|
|
67
|
+
*/
|
|
68
|
+
export declare function asNormalizedStatusCode(value: unknown): NORMALIZED_STATUS_CODE | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Presence-preserving: `undefined` when the field is absent (`null`,
|
|
71
|
+
* `undefined` or empty), `UNKNOWN` when it is present but unrecognised.
|
|
72
|
+
*
|
|
73
|
+
* Absence is meaningful — it is what distinguishes a record that carries a
|
|
74
|
+
* status code from one that does not — so it is never collapsed to `UNKNOWN`.
|
|
75
|
+
*/
|
|
76
|
+
export declare function toNormalizedStatusCode(value: unknown): NORMALIZED_STATUS_CODE | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Which tier of the resolution produced a `DisplayStatus`:
|
|
79
|
+
* - `native` — the record's own status and status code (a v2 record).
|
|
80
|
+
* - `normalized` — the backend-supplied `normalizedStatus`.
|
|
81
|
+
* - `legacy` — the record's own status alone; no status code to show.
|
|
82
|
+
*/
|
|
83
|
+
export type DisplayStatusSource = "native" | "normalized" | "legacy";
|
|
84
|
+
/** What the UI should render for a record's status. */
|
|
85
|
+
export interface DisplayStatus<TStatus extends string = string> {
|
|
86
|
+
status: TStatus | NORMALIZED_STATUS;
|
|
87
|
+
statusInfo: NormalizedStatusInfo;
|
|
88
|
+
/** Absent when there is no status code to display. */
|
|
89
|
+
statusCode?: NORMALIZED_STATUS_CODE;
|
|
90
|
+
/** Absent when there is no status code to display. */
|
|
91
|
+
statusCodeInfo?: NormalizedStatusCodeInfo;
|
|
92
|
+
source: DisplayStatusSource;
|
|
93
|
+
}
|
|
94
|
+
export interface DisplayStatusInput<TStatus extends string> {
|
|
95
|
+
/** The record's own status. */
|
|
96
|
+
status: TStatus;
|
|
97
|
+
/** Label and colour for the record's own status. */
|
|
98
|
+
statusInfo: NormalizedStatusInfo;
|
|
99
|
+
/** The record's own status code, only when it carries the normalized vocabulary. */
|
|
100
|
+
statusCode?: NORMALIZED_STATUS_CODE;
|
|
101
|
+
normalizedStatus?: NORMALIZED_STATUS;
|
|
102
|
+
normalizedStatusCode?: NORMALIZED_STATUS_CODE;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolve what to display for a record's status, in three tiers:
|
|
106
|
+
*
|
|
107
|
+
* 1. Its own status and status code are both present — a v2 record. Show both.
|
|
108
|
+
* 2. Otherwise `normalizedStatus` is present. Show it, with
|
|
109
|
+
* `normalizedStatusCode` if that is present too.
|
|
110
|
+
* 3. Otherwise fall back to its own status, and show no status code.
|
|
111
|
+
*/
|
|
112
|
+
export declare function resolveDisplayStatus<TStatus extends string>(input: DisplayStatusInput<TStatus>): DisplayStatus<TStatus>;
|
|
113
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/lib/status.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,oBAAY,iBAAiB;IAC3B,8EAA8E;IAC9E,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;CACpC;AAED;;;;;GAKG;AACH,oBAAY,sBAAsB;IAIhC,aAAa,kBAAkB;IAC/B,kBAAkB,uBAAuB;IAGzC,OAAO,YAAY;IAGnB,YAAY,iBAAiB;IAG7B,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;IACzC,cAAc,mBAAmB;IACjC,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,OAAO,YAAY;CACpB;AAID,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAoClF,CAAC;AAIF,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,MAAM,EAAE,iBAAiB,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAuGhG,CAAC;AAIF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,SAAS,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,SAAS,CAEzF;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,SAAS,CAGzF;AAID;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;AAErE,uDAAuD;AACvD,MAAM,WAAW,aAAa,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM;IAC5D,MAAM,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACpC,UAAU,EAAE,oBAAoB,CAAC;IACjC,sDAAsD;IACtD,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,sDAAsD;IACtD,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,MAAM;IACxD,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,UAAU,EAAE,oBAAoB,CAAC;IACjC,oFAAoF;IACpF,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,oBAAoB,CAAC,EAAE,sBAAsB,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,SAAS,MAAM,EACzD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GACjC,aAAa,CAAC,OAAO,CAAC,CA0BxB"}
|
|
@@ -38,7 +38,9 @@ export declare const collectionContract: {
|
|
|
38
38
|
results: z.ZodArray<z.ZodObject<{
|
|
39
39
|
id: z.ZodString;
|
|
40
40
|
status: z.ZodEnum<typeof import("./collection.types.js").COLLECTION_STATUS>;
|
|
41
|
-
statusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("./collection.types.js").COLLECTION_STATUS_CODE, unknown>>;
|
|
41
|
+
statusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("./collection.types.js").COLLECTION_STATUS_CODE | undefined, unknown>>;
|
|
42
|
+
normalizedStatus: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../../index.js").NORMALIZED_STATUS | undefined, unknown>>;
|
|
43
|
+
normalizedStatusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("./collection.types.js").COLLECTION_STATUS_CODE | undefined, unknown>>;
|
|
42
44
|
statusMessage: z.ZodString;
|
|
43
45
|
accountNo: z.ZodString;
|
|
44
46
|
walletId: z.ZodString;
|
|
@@ -101,7 +103,9 @@ export declare const collectionContract: {
|
|
|
101
103
|
200: z.ZodObject<{
|
|
102
104
|
id: z.ZodString;
|
|
103
105
|
status: z.ZodEnum<typeof import("./collection.types.js").COLLECTION_STATUS>;
|
|
104
|
-
statusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("./collection.types.js").COLLECTION_STATUS_CODE, unknown>>;
|
|
106
|
+
statusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("./collection.types.js").COLLECTION_STATUS_CODE | undefined, unknown>>;
|
|
107
|
+
normalizedStatus: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../../index.js").NORMALIZED_STATUS | undefined, unknown>>;
|
|
108
|
+
normalizedStatusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("./collection.types.js").COLLECTION_STATUS_CODE | undefined, unknown>>;
|
|
105
109
|
statusMessage: z.ZodString;
|
|
106
110
|
accountNo: z.ZodString;
|
|
107
111
|
walletId: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.api-contract.d.ts","sourceRoot":"","sources":["../../../src/modules/collection/collection.api-contract.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"collection.api-contract.d.ts","sourceRoot":"","sources":["../../../src/modules/collection/collection.api-contract.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,OAAO,kBAAkB,CAAC"}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
1
|
import { Amount, type AmountJSON } from "@temboplus/frontend-core";
|
|
2
|
+
import { type DisplayStatus, type NORMALIZED_STATUS, type NORMALIZED_STATUS_CODE, NORMALIZED_STATUS_CODE_INFO, type NormalizedStatusCodeInfo, type NormalizedStatusInfo } from "../../lib/status.js";
|
|
2
3
|
import { type MobileChannelInfo } from "../../lib/types.js";
|
|
3
|
-
import { COLLECTION_CHANNEL, COLLECTION_STATUS
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
description: string;
|
|
7
|
-
category: "success" | "pending" | "failed";
|
|
8
|
-
color: "success" | "warning" | "error";
|
|
9
|
-
userFriendlyMessage: string;
|
|
10
|
-
}
|
|
4
|
+
import { COLLECTION_CHANNEL, COLLECTION_STATUS } from "./collection.types.js";
|
|
5
|
+
/** Collections describe their status with the shared normalized shape. */
|
|
6
|
+
export type CollectionStatusInfo = NormalizedStatusInfo;
|
|
11
7
|
export declare const COLLECTION_STATUS_INFO: Record<COLLECTION_STATUS, CollectionStatusInfo>;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
/** The status this code is reported under. */
|
|
16
|
-
status: COLLECTION_STATUS;
|
|
17
|
-
userFriendlyMessage: string;
|
|
18
|
-
}
|
|
19
|
-
export declare const COLLECTION_STATUS_CODE_INFO: Record<COLLECTION_STATUS_CODE, CollectionStatusCodeInfo>;
|
|
8
|
+
/** Collections describe their status code with the shared normalized shape. */
|
|
9
|
+
export type CollectionStatusCodeInfo = NormalizedStatusCodeInfo;
|
|
10
|
+
export { NORMALIZED_STATUS_CODE_INFO as COLLECTION_STATUS_CODE_INFO };
|
|
20
11
|
/**
|
|
21
12
|
* All statuses (v1 and v2) in the given category.
|
|
22
13
|
*/
|
|
@@ -25,6 +16,8 @@ export interface CollectionData {
|
|
|
25
16
|
id: string;
|
|
26
17
|
status: COLLECTION_STATUS;
|
|
27
18
|
statusCode?: string | null;
|
|
19
|
+
normalizedStatus?: string | null;
|
|
20
|
+
normalizedStatusCode?: string | null;
|
|
28
21
|
statusMessage: string;
|
|
29
22
|
accountNo: string;
|
|
30
23
|
walletId: string;
|
|
@@ -54,6 +47,8 @@ export interface CollectionJson {
|
|
|
54
47
|
id: string;
|
|
55
48
|
status: COLLECTION_STATUS;
|
|
56
49
|
statusCode?: string | null;
|
|
50
|
+
normalizedStatus?: string | null;
|
|
51
|
+
normalizedStatusCode?: string | null;
|
|
57
52
|
statusMessage: string;
|
|
58
53
|
accountNo: string;
|
|
59
54
|
walletId: string;
|
|
@@ -86,11 +81,18 @@ export declare class Collection {
|
|
|
86
81
|
readonly id: string;
|
|
87
82
|
readonly status: COLLECTION_STATUS;
|
|
88
83
|
/**
|
|
89
|
-
* v2 reason code.
|
|
90
|
-
*
|
|
84
|
+
* v2 reason code. `undefined` on collections that carry no code (e.g. v1);
|
|
85
|
+
* a code that is present but unrecognised is `UNKNOWN`. The raw value is
|
|
91
86
|
* available via `getOriginalField("statusCode")`.
|
|
92
87
|
*/
|
|
93
|
-
readonly statusCode
|
|
88
|
+
readonly statusCode?: NORMALIZED_STATUS_CODE;
|
|
89
|
+
/**
|
|
90
|
+
* The v2 outcome the backend mapped this collection onto, when it is not
|
|
91
|
+
* itself a v2 collection. `undefined` when the backend supplied none.
|
|
92
|
+
*/
|
|
93
|
+
readonly normalizedStatus?: NORMALIZED_STATUS;
|
|
94
|
+
/** The reason behind `normalizedStatus`, when the backend supplied one. */
|
|
95
|
+
readonly normalizedStatusCode?: NORMALIZED_STATUS_CODE;
|
|
94
96
|
readonly statusMessage: string;
|
|
95
97
|
readonly accountNo: string;
|
|
96
98
|
readonly walletId: string;
|
|
@@ -159,14 +161,22 @@ export declare class Collection {
|
|
|
159
161
|
*/
|
|
160
162
|
getStatusInfo(): CollectionStatusInfo;
|
|
161
163
|
/**
|
|
162
|
-
* Get the
|
|
163
|
-
|
|
164
|
+
* Get the v2 status code. `undefined` when this collection carries none.
|
|
165
|
+
*/
|
|
166
|
+
getStatusCode(): NORMALIZED_STATUS_CODE | undefined;
|
|
167
|
+
/**
|
|
168
|
+
* Get the label and description for the status code, when there is one.
|
|
164
169
|
*/
|
|
165
|
-
|
|
170
|
+
getStatusCodeInfo(): CollectionStatusCodeInfo | undefined;
|
|
166
171
|
/**
|
|
167
|
-
*
|
|
172
|
+
* What the UI should show for this collection:
|
|
173
|
+
*
|
|
174
|
+
* 1. `status` and `statusCode` are both present — a v2 collection. Show both.
|
|
175
|
+
* 2. Otherwise `normalizedStatus` is present. Show it, with
|
|
176
|
+
* `normalizedStatusCode` if that is present too.
|
|
177
|
+
* 3. Otherwise show `status` alone, and no status code.
|
|
168
178
|
*/
|
|
169
|
-
|
|
179
|
+
getDisplayStatus(): DisplayStatus<COLLECTION_STATUS>;
|
|
170
180
|
/**
|
|
171
181
|
* Get channel information. Returns `undefined` for non-mobile channels
|
|
172
182
|
* (e.g. bank channels such as CRDB or Ecobank).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.model.d.ts","sourceRoot":"","sources":["../../../src/modules/collection/collection.model.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAiB,KAAK,UAAU,EAAsC,MAAM,0BAA0B,CAAC;AACtH,OAAO,
|
|
1
|
+
{"version":3,"file":"collection.model.d.ts","sourceRoot":"","sources":["../../../src/modules/collection/collection.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { NORMALIZED_STATUS_CODE, toNormalizedStatusCode } from "../../lib/status.js";
|
|
2
3
|
/**
|
|
3
4
|
* Collection outcome.
|
|
4
5
|
*
|
|
5
6
|
* v1 encoded the failure reason in the status itself (e.g. `INSUFFICIENT_FUNDS`).
|
|
6
|
-
* v2 reduces the status to the outcome (`
|
|
7
|
-
* `PAYMENT_FAILED`, `PAYMENT_EXPIRED`) and moves the reason
|
|
8
|
-
* Both sets are supported because historical collections keep
|
|
7
|
+
* v2 reduces the status to the outcome (`PENDING`, `PENDING_ACK`,
|
|
8
|
+
* `PAYMENT_ACCEPTED`, `PAYMENT_FAILED`, `PAYMENT_EXPIRED`) and moves the reason
|
|
9
|
+
* to `statusCode`. Both sets are supported because historical collections keep
|
|
10
|
+
* their v1 status.
|
|
9
11
|
*/
|
|
10
12
|
export declare enum COLLECTION_STATUS {
|
|
11
13
|
PAYMENT_ACCEPTED = "PAYMENT_ACCEPTED",
|
|
14
|
+
PENDING = "PENDING",
|
|
12
15
|
PENDING_ACK = "PENDING_ACK",
|
|
13
16
|
PAYMENT_FAILED = "PAYMENT_FAILED",
|
|
14
17
|
PAYMENT_EXPIRED = "PAYMENT_EXPIRED",
|
|
@@ -16,36 +19,9 @@ export declare enum COLLECTION_STATUS {
|
|
|
16
19
|
INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS",
|
|
17
20
|
INVALID_REFERENCE = "INVALID_REFERENCE",
|
|
18
21
|
PAYMENT_REJECTED = "PAYMENT_REJECTED",
|
|
19
|
-
PENDING = "PENDING",
|
|
20
22
|
PROVIDER_FAILED = "PROVIDER_FAILED"
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
* v2 collection status codes: the reason behind a `COLLECTION_STATUS`.
|
|
24
|
-
* Identical across all mobile money channels.
|
|
25
|
-
*
|
|
26
|
-
* New codes may be added over time. Any value that is not one of these
|
|
27
|
-
* (including a missing code on v1 collections) is normalized to `UNKNOWN`
|
|
28
|
-
* by `toCollectionStatusCode()`.
|
|
29
|
-
*/
|
|
30
|
-
export declare enum COLLECTION_STATUS_CODE {
|
|
31
|
-
AWAITING_USER = "AWAITING_USER",
|
|
32
|
-
PROVIDER_UNCERTAIN = "PROVIDER_UNCERTAIN",
|
|
33
|
-
SUCCESS = "SUCCESS",
|
|
34
|
-
USER_TIMEOUT = "USER_TIMEOUT",
|
|
35
|
-
INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
|
|
36
|
-
INVALID_NUMBER = "INVALID_NUMBER",
|
|
37
|
-
INVALID_PIN = "INVALID_PIN",
|
|
38
|
-
ACCOUNT_LOCKED = "ACCOUNT_LOCKED",
|
|
39
|
-
ACCOUNT_RESTRICTED = "ACCOUNT_RESTRICTED",
|
|
40
|
-
USER_CANCELLED = "USER_CANCELLED",
|
|
41
|
-
USER_BUSY = "USER_BUSY",
|
|
42
|
-
USER_UNREACHABLE = "USER_UNREACHABLE",
|
|
43
|
-
LIMIT_EXCEEDED = "LIMIT_EXCEEDED",
|
|
44
|
-
INVALID_AMOUNT = "INVALID_AMOUNT",
|
|
45
|
-
PROVIDER_BUSY = "PROVIDER_BUSY",
|
|
46
|
-
PROVIDER_ERROR = "PROVIDER_ERROR",
|
|
47
|
-
UNKNOWN = "UNKNOWN"
|
|
48
|
-
}
|
|
24
|
+
export { NORMALIZED_STATUS_CODE as COLLECTION_STATUS_CODE };
|
|
49
25
|
export declare enum COLLECTION_CHANNEL {
|
|
50
26
|
AIRTEL = "TZ-AIRTEL-C2B",
|
|
51
27
|
TIGO = "TZ-TIGO-C2B",
|
|
@@ -55,12 +31,7 @@ export declare enum COLLECTION_CHANNEL {
|
|
|
55
31
|
CRDB = "TZ-CRDB",
|
|
56
32
|
ECOBANK = "TZ-ECOBANK"
|
|
57
33
|
}
|
|
58
|
-
|
|
59
|
-
* Normalize a raw status code. Anything that is not a known
|
|
60
|
-
* `COLLECTION_STATUS_CODE` (unrecognised, empty, `null` or `undefined`)
|
|
61
|
-
* becomes `COLLECTION_STATUS_CODE.UNKNOWN`.
|
|
62
|
-
*/
|
|
63
|
-
export declare function toCollectionStatusCode(value: unknown): COLLECTION_STATUS_CODE;
|
|
34
|
+
export { toNormalizedStatusCode as toCollectionStatusCode };
|
|
64
35
|
/**
|
|
65
36
|
* Accepts a single string, a comma-separated string, or an array of strings,
|
|
66
37
|
* and normalizes to a deduplicated, trimmed, non-empty `string[]`.
|
|
@@ -71,7 +42,9 @@ export declare const CollectionDTOSchemas: {
|
|
|
71
42
|
collection: z.ZodObject<{
|
|
72
43
|
id: z.ZodString;
|
|
73
44
|
status: z.ZodEnum<typeof COLLECTION_STATUS>;
|
|
74
|
-
statusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<
|
|
45
|
+
statusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<NORMALIZED_STATUS_CODE | undefined, unknown>>;
|
|
46
|
+
normalizedStatus: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../../lib/status.js").NORMALIZED_STATUS | undefined, unknown>>;
|
|
47
|
+
normalizedStatusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<NORMALIZED_STATUS_CODE | undefined, unknown>>;
|
|
75
48
|
statusMessage: z.ZodString;
|
|
76
49
|
accountNo: z.ZodString;
|
|
77
50
|
walletId: z.ZodString;
|
|
@@ -119,8 +92,8 @@ export declare const CollectionDTOSchemas: {
|
|
|
119
92
|
channelIn: z.ZodOptional<z.ZodArray<z.ZodEnum<typeof COLLECTION_CHANNEL>>>;
|
|
120
93
|
status: z.ZodOptional<z.ZodEnum<typeof COLLECTION_STATUS>>;
|
|
121
94
|
statusIn: z.ZodOptional<z.ZodArray<z.ZodEnum<typeof COLLECTION_STATUS>>>;
|
|
122
|
-
statusCode: z.ZodOptional<z.ZodEnum<typeof
|
|
123
|
-
statusCodeIn: z.ZodOptional<z.ZodArray<z.ZodEnum<typeof
|
|
95
|
+
statusCode: z.ZodOptional<z.ZodEnum<typeof NORMALIZED_STATUS_CODE>>;
|
|
96
|
+
statusCodeIn: z.ZodOptional<z.ZodArray<z.ZodEnum<typeof NORMALIZED_STATUS_CODE>>>;
|
|
124
97
|
minAmount: z.ZodOptional<z.ZodNumber>;
|
|
125
98
|
maxAmount: z.ZodOptional<z.ZodNumber>;
|
|
126
99
|
search: z.ZodOptional<z.ZodString>;
|
|
@@ -147,14 +120,14 @@ export declare const CollectionDTOSchemas: {
|
|
|
147
120
|
channelIn: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>, z.ZodArray<z.ZodEnum<typeof COLLECTION_CHANNEL>>>>;
|
|
148
121
|
status: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<COLLECTION_STATUS, string>>>;
|
|
149
122
|
statusIn: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>, z.ZodArray<z.ZodEnum<typeof COLLECTION_STATUS>>>>;
|
|
150
|
-
statusCode: z.ZodOptional<z.ZodEnum<typeof
|
|
151
|
-
statusCodeIn: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>, z.ZodArray<z.ZodEnum<typeof
|
|
123
|
+
statusCode: z.ZodOptional<z.ZodEnum<typeof NORMALIZED_STATUS_CODE>>;
|
|
124
|
+
statusCodeIn: z.ZodOptional<z.ZodPipe<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>, z.ZodTransform<string[], string | string[]>>, z.ZodArray<z.ZodEnum<typeof NORMALIZED_STATUS_CODE>>>>;
|
|
152
125
|
minAmount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>>;
|
|
153
126
|
maxAmount: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>>;
|
|
154
127
|
search: z.ZodOptional<z.ZodString>;
|
|
155
128
|
}, z.core.$strip>;
|
|
156
129
|
paymentStatus: z.ZodEnum<typeof COLLECTION_STATUS>;
|
|
157
|
-
statusCode: z.ZodEnum<typeof
|
|
130
|
+
statusCode: z.ZodEnum<typeof NORMALIZED_STATUS_CODE>;
|
|
158
131
|
paymentChannel: z.ZodEnum<typeof COLLECTION_CHANNEL>;
|
|
159
132
|
};
|
|
160
133
|
export type CollectionDTO = z.infer<typeof CollectionDTOSchemas.collection>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.types.d.ts","sourceRoot":"","sources":["../../../src/modules/collection/collection.types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"collection.types.d.ts","sourceRoot":"","sources":["../../../src/modules/collection/collection.types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAsB,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEzG;;;;;;;;GAQG;AACH,oBAAY,iBAAiB;IAE3B,gBAAgB,qBAAqB;IACrC,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAG3B,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IAGnC,eAAe,oBAAoB;IACnC,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;CACpC;AAKD,OAAO,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,CAAC;AAE5D,oBAAY,kBAAkB;IAC5B,MAAM,kBAAkB;IACxB,IAAI,gBAAgB;IACpB,OAAO,mBAAmB;IAC1B,SAAS,qBAAqB;IAC9B,OAAO,mBAAmB;IAC1B,IAAI,YAAY;IAChB,OAAO,eAAe;CACvB;AAMD,OAAO,EAAE,sBAAsB,IAAI,sBAAsB,EAAE,CAAC;AAQ5D;;;GAGG;AACH,QAAA,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAAM,EAO7C,CAAC;AAuHF,OAAO,EAAE,aAAa,IAAI,uBAAuB,EAAE,CAAC;AAEpD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhC,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAC5E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACvF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,wBAAwB,CAAC,CAAC"}
|
|
@@ -36,8 +36,10 @@ export declare const payoutContract: {
|
|
|
36
36
|
200: z.ZodObject<{
|
|
37
37
|
results: z.ZodArray<z.ZodObject<{
|
|
38
38
|
id: z.ZodString;
|
|
39
|
-
statusCode: z.ZodString
|
|
39
|
+
statusCode: z.ZodOptional<z.ZodString>;
|
|
40
40
|
statusCodeText: z.ZodEnum<typeof import("./payout.types.js").PAYOUT_STATUS>;
|
|
41
|
+
normalizedStatus: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../../index.js").NORMALIZED_STATUS | undefined, unknown>>;
|
|
42
|
+
normalizedStatusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../collection/collection.types.js").COLLECTION_STATUS_CODE | undefined, unknown>>;
|
|
41
43
|
statusDescription: z.ZodString;
|
|
42
44
|
countryCode: z.ZodString;
|
|
43
45
|
serviceCode: z.ZodUnion<readonly [z.ZodEnum<typeof import("./payout.types.js").MOBILE_PAYOUT_CHANNEL>, z.ZodEnum<typeof import("./payout.types.js").BANK_PAYOUT_CHANNEL>]>;
|
|
@@ -100,8 +102,10 @@ export declare const payoutContract: {
|
|
|
100
102
|
responses: {
|
|
101
103
|
200: z.ZodObject<{
|
|
102
104
|
id: z.ZodString;
|
|
103
|
-
statusCode: z.ZodString
|
|
105
|
+
statusCode: z.ZodOptional<z.ZodString>;
|
|
104
106
|
statusCodeText: z.ZodEnum<typeof import("./payout.types.js").PAYOUT_STATUS>;
|
|
107
|
+
normalizedStatus: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../../index.js").NORMALIZED_STATUS | undefined, unknown>>;
|
|
108
|
+
normalizedStatusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../collection/collection.types.js").COLLECTION_STATUS_CODE | undefined, unknown>>;
|
|
105
109
|
statusDescription: z.ZodString;
|
|
106
110
|
countryCode: z.ZodString;
|
|
107
111
|
serviceCode: z.ZodUnion<readonly [z.ZodEnum<typeof import("./payout.types.js").MOBILE_PAYOUT_CHANNEL>, z.ZodEnum<typeof import("./payout.types.js").BANK_PAYOUT_CHANNEL>]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payout.api-contract.d.ts","sourceRoot":"","sources":["../../../src/modules/payout/payout.api-contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"payout.api-contract.d.ts","sourceRoot":"","sources":["../../../src/modules/payout/payout.api-contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { Amount, type AmountJson, Bank } from "@temboplus/frontend-core";
|
|
2
|
+
import { type DisplayStatus, type NORMALIZED_STATUS, type NORMALIZED_STATUS_CODE, type NormalizedStatusInfo } from "../../lib/status.js";
|
|
2
3
|
import { type MobileChannelInfo } from "../../lib/types.js";
|
|
3
4
|
import { type PAYOUT_CHANNEL, PAYOUT_STATUS } from "./payout.types.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
description: string;
|
|
7
|
-
category: "success" | "pending" | "failed";
|
|
8
|
-
color: "success" | "warning" | "error";
|
|
9
|
-
userFriendlyMessage: string;
|
|
10
|
-
}
|
|
5
|
+
/** Payouts describe their status with the shared normalized shape. */
|
|
6
|
+
export type PayoutStatusInfo = NormalizedStatusInfo;
|
|
11
7
|
export declare const PAYOUT_STATUS_INFO: Record<PAYOUT_STATUS, PayoutStatusInfo>;
|
|
12
8
|
export interface PayoutData {
|
|
13
9
|
id: string;
|
|
@@ -26,7 +22,9 @@ export interface PayoutData {
|
|
|
26
22
|
swiftCode?: string;
|
|
27
23
|
createdAt: string;
|
|
28
24
|
updatedAt?: string;
|
|
29
|
-
statusCode
|
|
25
|
+
statusCode?: string;
|
|
26
|
+
normalizedStatus?: string | null;
|
|
27
|
+
normalizedStatusCode?: string | null;
|
|
30
28
|
countryCode: string;
|
|
31
29
|
postedAmount?: string;
|
|
32
30
|
walletId?: string;
|
|
@@ -57,7 +55,9 @@ export interface PayoutJson {
|
|
|
57
55
|
swiftCode?: string;
|
|
58
56
|
createdAt: string;
|
|
59
57
|
updatedAt?: string;
|
|
60
|
-
statusCode
|
|
58
|
+
statusCode?: string;
|
|
59
|
+
normalizedStatus?: string | null;
|
|
60
|
+
normalizedStatusCode?: string | null;
|
|
61
61
|
countryCode: string;
|
|
62
62
|
postedAmount?: AmountJson;
|
|
63
63
|
walletId?: string;
|
|
@@ -91,7 +91,18 @@ export declare class Payout {
|
|
|
91
91
|
readonly swiftCode?: string;
|
|
92
92
|
readonly createdAt: Date;
|
|
93
93
|
readonly updatedAt?: Date;
|
|
94
|
-
|
|
94
|
+
/**
|
|
95
|
+
* The provider status code. Payouts have no v2 tier, so this normally holds
|
|
96
|
+
* a provider value rather than a `NORMALIZED_STATUS_CODE`.
|
|
97
|
+
*/
|
|
98
|
+
readonly statusCode?: string;
|
|
99
|
+
/**
|
|
100
|
+
* The v2 outcome the backend mapped this payout onto. `undefined` when the
|
|
101
|
+
* backend supplied none.
|
|
102
|
+
*/
|
|
103
|
+
readonly normalizedStatus?: NORMALIZED_STATUS;
|
|
104
|
+
/** The reason behind `normalizedStatus`, when the backend supplied one. */
|
|
105
|
+
readonly normalizedStatusCode?: NORMALIZED_STATUS_CODE;
|
|
95
106
|
readonly countryCode: string;
|
|
96
107
|
readonly postedAmount?: Amount;
|
|
97
108
|
readonly walletId?: string;
|
|
@@ -137,6 +148,18 @@ export declare class Payout {
|
|
|
137
148
|
* Get status color and label
|
|
138
149
|
*/
|
|
139
150
|
getStatusInfo(): PayoutStatusInfo;
|
|
151
|
+
/**
|
|
152
|
+
* What the UI should show for this payout:
|
|
153
|
+
*
|
|
154
|
+
* 1. `statusCodeText` and a normalized `statusCode` are both present. Show
|
|
155
|
+
* both. Payouts have no v2 tier today, so `statusCode` normally holds a
|
|
156
|
+
* provider value and this tier does not apply — it is only reached if
|
|
157
|
+
* the code is one of `NORMALIZED_STATUS_CODE`.
|
|
158
|
+
* 2. Otherwise `normalizedStatus` is present. Show it, with
|
|
159
|
+
* `normalizedStatusCode` if that is present too.
|
|
160
|
+
* 3. Otherwise show `statusCodeText` alone, and no status code.
|
|
161
|
+
*/
|
|
162
|
+
getDisplayStatus(): DisplayStatus<PAYOUT_STATUS>;
|
|
140
163
|
/**
|
|
141
164
|
* Get channel information with bank detection for bank transfers
|
|
142
165
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payout.model.d.ts","sourceRoot":"","sources":["../../../src/modules/payout/payout.model.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EAEN,KAAK,UAAU,EACf,IAAI,EAKL,MAAM,0BAA0B,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"payout.model.d.ts","sourceRoot":"","sources":["../../../src/modules/payout/payout.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,8 +34,10 @@ export { toStringArray as payoutToStringArray };
|
|
|
34
34
|
export declare const PayoutDTOSchemas: {
|
|
35
35
|
payout: z.ZodObject<{
|
|
36
36
|
id: z.ZodString;
|
|
37
|
-
statusCode: z.ZodString
|
|
37
|
+
statusCode: z.ZodOptional<z.ZodString>;
|
|
38
38
|
statusCodeText: z.ZodEnum<typeof PAYOUT_STATUS>;
|
|
39
|
+
normalizedStatus: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../../lib/status.js").NORMALIZED_STATUS | undefined, unknown>>;
|
|
40
|
+
normalizedStatusCode: z.ZodPipe<z.ZodOptional<z.ZodUnknown>, z.ZodTransform<import("../../lib/status.js").NORMALIZED_STATUS_CODE | undefined, unknown>>;
|
|
39
41
|
statusDescription: z.ZodString;
|
|
40
42
|
countryCode: z.ZodString;
|
|
41
43
|
serviceCode: z.ZodUnion<readonly [z.ZodEnum<typeof MOBILE_PAYOUT_CHANNEL>, z.ZodEnum<typeof BANK_PAYOUT_CHANNEL>]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payout.types.d.ts","sourceRoot":"","sources":["../../../src/modules/payout/payout.types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"payout.types.d.ts","sourceRoot":"","sources":["../../../src/modules/payout/payout.types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,oBAAY,aAAa;IACvB,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,gBAAgB,qBAAqB;IACrC,OAAO,YAAY;IACnB,qBAAqB,0BAA0B;IAC/C,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;CACpC;AAED,oBAAY,qBAAqB;IAC/B,MAAM,kBAAkB;IACxB,OAAO,mBAAmB;IAC1B,IAAI,gBAAgB;IACpB,OAAO,mBAAmB;IAC1B,SAAS,qBAAqB;CAC/B;AAED,oBAAY,mBAAmB;IAC7B,IAAI,gBAAgB;CACrB;AAED,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,mBAAmB,CAAC;AASzE;;;GAGG;AACH,QAAA,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAAM,EAO7C,CAAC;AAgIF,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,CAAC;AAEhD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B5B,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,aAAa,CAAC,CAAC;AAC3E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@temboplus/tembo-dashboard",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "A foundational library for Temboplus-Dashboard projects providing type-safe data layer abstraction with API contracts, domain models, and repositories.",
|
|
5
5
|
"author": "Okello Gerald",
|
|
6
6
|
"license": "MIT",
|