@explorins/pers-sdk 1.6.47 → 2.0.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/README.md +159 -23
- package/dist/api-key/api/api-key-api.d.ts +5 -2
- package/dist/api-key/api/api-key-api.d.ts.map +1 -1
- package/dist/business/api/business-api.d.ts +30 -11
- package/dist/business/api/business-api.d.ts.map +1 -1
- package/dist/business/api/business-membership-api.d.ts +24 -5
- package/dist/business/api/business-membership-api.d.ts.map +1 -1
- package/dist/business/services/business-membership-service.d.ts +9 -15
- package/dist/business/services/business-membership-service.d.ts.map +1 -1
- package/dist/business/services/business-service.d.ts +11 -7
- package/dist/business/services/business-service.d.ts.map +1 -1
- package/dist/business.cjs +101 -61
- package/dist/business.cjs.map +1 -1
- package/dist/business.js +101 -61
- package/dist/business.js.map +1 -1
- package/dist/campaign/api/campaign-api.d.ts +50 -13
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign/services/campaign-service.d.ts +13 -12
- package/dist/campaign/services/campaign-service.d.ts.map +1 -1
- package/dist/campaign.cjs +2 -1
- package/dist/campaign.cjs.map +1 -1
- package/dist/campaign.js +2 -1
- package/dist/campaign.js.map +1 -1
- package/dist/chunks/{base-token-service-BSXDwrcq.js → base-token-service-DsD6lSdq.js} +2 -48
- package/dist/chunks/base-token-service-DsD6lSdq.js.map +1 -0
- package/dist/chunks/{base-token-service-CYuqPPs0.cjs → base-token-service-_64IWVES.cjs} +2 -48
- package/dist/chunks/base-token-service-_64IWVES.cjs.map +1 -0
- package/dist/chunks/{campaign-service-D-v9ZlUB.cjs → campaign-service-Ae164xl8.cjs} +74 -46
- package/dist/chunks/campaign-service-Ae164xl8.cjs.map +1 -0
- package/dist/chunks/{campaign-service-CKwkiOLx.js → campaign-service-rlK4WeSY.js} +74 -46
- package/dist/chunks/campaign-service-rlK4WeSY.js.map +1 -0
- package/dist/chunks/{donation-service-D-xFrONi.cjs → donation-service--6cnTvWq.cjs} +9 -5
- package/dist/chunks/donation-service--6cnTvWq.cjs.map +1 -0
- package/dist/chunks/{donation-service-CyJS4DIZ.js → donation-service-xiXZ2Eto.js} +9 -5
- package/dist/chunks/donation-service-xiXZ2Eto.js.map +1 -0
- package/dist/chunks/pagination-utils-9vQ-Npkr.js +166 -0
- package/dist/chunks/pagination-utils-9vQ-Npkr.js.map +1 -0
- package/dist/chunks/pagination-utils-B2jRHMSO.cjs +173 -0
- package/dist/chunks/pagination-utils-B2jRHMSO.cjs.map +1 -0
- package/dist/chunks/{pers-sdk-DULFjOW2.cjs → pers-sdk-B_i-bGwq.cjs} +249 -235
- package/dist/chunks/pers-sdk-B_i-bGwq.cjs.map +1 -0
- package/dist/chunks/{pers-sdk-VmeBqUEP.js → pers-sdk-CyGgL8Dg.js} +243 -229
- package/dist/chunks/pers-sdk-CyGgL8Dg.js.map +1 -0
- package/dist/chunks/{token-service-CpVwC5Eb.js → token-service-Bfj6C0yz.js} +62 -30
- package/dist/chunks/token-service-Bfj6C0yz.js.map +1 -0
- package/dist/chunks/{token-service-BWScn8Qa.cjs → token-service-BlbXrxnS.cjs} +62 -30
- package/dist/chunks/token-service-BlbXrxnS.cjs.map +1 -0
- package/dist/chunks/{transaction-service-CXjTHCFu.cjs → transaction-service-BcJfyCcq.cjs} +68 -31
- package/dist/chunks/transaction-service-BcJfyCcq.cjs.map +1 -0
- package/dist/chunks/{transaction-service-B7h_4Hg3.js → transaction-service-CnOD3scu.js} +68 -31
- package/dist/chunks/transaction-service-CnOD3scu.js.map +1 -0
- package/dist/chunks/{user-service-doT5vsBD.js → user-service-BGP3SZpk.js} +24 -12
- package/dist/chunks/user-service-BGP3SZpk.js.map +1 -0
- package/dist/chunks/{user-service-B89wBOV1.cjs → user-service-gITOx4qj.cjs} +24 -12
- package/dist/chunks/user-service-gITOx4qj.cjs.map +1 -0
- package/dist/core.cjs +10 -9
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +10 -9
- package/dist/core.js.map +1 -1
- package/dist/donation/api/donation-api.d.ts +3 -1
- package/dist/donation/api/donation-api.d.ts.map +1 -1
- package/dist/donation/services/donation-service.d.ts +3 -1
- package/dist/donation/services/donation-service.d.ts.map +1 -1
- package/dist/donation.cjs +2 -1
- package/dist/donation.cjs.map +1 -1
- package/dist/donation.js +2 -1
- package/dist/donation.js.map +1 -1
- package/dist/index.cjs +23 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -10
- package/dist/index.js.map +1 -1
- package/dist/managers/analytics-manager.d.ts +9 -9
- package/dist/managers/api-key-manager.d.ts +8 -6
- package/dist/managers/api-key-manager.d.ts.map +1 -1
- package/dist/managers/business-manager.d.ts +9 -7
- package/dist/managers/business-manager.d.ts.map +1 -1
- package/dist/managers/campaign-manager.d.ts +21 -20
- package/dist/managers/campaign-manager.d.ts.map +1 -1
- package/dist/managers/donation-manager.d.ts +4 -2
- package/dist/managers/donation-manager.d.ts.map +1 -1
- package/dist/managers/file-manager.d.ts +2 -2
- package/dist/managers/purchase-manager.d.ts +26 -24
- package/dist/managers/purchase-manager.d.ts.map +1 -1
- package/dist/managers/redemption-manager.d.ts +103 -91
- package/dist/managers/redemption-manager.d.ts.map +1 -1
- package/dist/managers/tenant-manager.d.ts +5 -2
- package/dist/managers/tenant-manager.d.ts.map +1 -1
- package/dist/managers/token-manager.d.ts +6 -4
- package/dist/managers/token-manager.d.ts.map +1 -1
- package/dist/managers/transaction-manager.d.ts +18 -17
- package/dist/managers/transaction-manager.d.ts.map +1 -1
- package/dist/managers/user-manager.d.ts +4 -2
- package/dist/managers/user-manager.d.ts.map +1 -1
- package/dist/managers/user-status-manager.d.ts +6 -4
- package/dist/managers/user-status-manager.d.ts.map +1 -1
- package/dist/managers/web3-manager.d.ts.map +1 -1
- package/dist/package.json +1 -1
- package/dist/payment/api/payment-api.d.ts +15 -18
- package/dist/payment/api/payment-api.d.ts.map +1 -1
- package/dist/payment/services/payment-service.d.ts +6 -4
- package/dist/payment/services/payment-service.d.ts.map +1 -1
- package/dist/payment.cjs +219 -15
- package/dist/payment.cjs.map +1 -1
- package/dist/payment.js +209 -1
- package/dist/payment.js.map +1 -1
- package/dist/redemption/api/redemption-api.d.ts +22 -11
- package/dist/redemption/api/redemption-api.d.ts.map +1 -1
- package/dist/redemption/services/redemption-service.d.ts +11 -9
- package/dist/redemption/services/redemption-service.d.ts.map +1 -1
- package/dist/redemption.cjs +347 -15
- package/dist/redemption.cjs.map +1 -1
- package/dist/redemption.js +337 -1
- package/dist/redemption.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/utils/pagination-utils.d.ts +184 -0
- package/dist/shared/utils/pagination-utils.d.ts.map +1 -0
- package/dist/tenant/api/tenant-api.d.ts +6 -1
- package/dist/tenant/api/tenant-api.d.ts.map +1 -1
- package/dist/tenant/services/tenant-service.d.ts +5 -2
- package/dist/tenant/services/tenant-service.d.ts.map +1 -1
- package/dist/tenant.cjs +171 -15
- package/dist/tenant.cjs.map +1 -1
- package/dist/tenant.js +161 -1
- package/dist/tenant.js.map +1 -1
- package/dist/token/api/token-api.d.ts +24 -7
- package/dist/token/api/token-api.d.ts.map +1 -1
- package/dist/token/base/base-token-service.d.ts +5 -4
- package/dist/token/base/base-token-service.d.ts.map +1 -1
- package/dist/token/services/token-service.d.ts +10 -8
- package/dist/token/services/token-service.d.ts.map +1 -1
- package/dist/token/token-sdk.d.ts +5 -34
- package/dist/token/token-sdk.d.ts.map +1 -1
- package/dist/token.cjs +3 -2
- package/dist/token.cjs.map +1 -1
- package/dist/token.js +3 -2
- package/dist/token.js.map +1 -1
- package/dist/transaction/api/transaction-api.d.ts +48 -6
- package/dist/transaction/api/transaction-api.d.ts.map +1 -1
- package/dist/transaction/services/transaction-service.d.ts +12 -4
- package/dist/transaction/services/transaction-service.d.ts.map +1 -1
- package/dist/transaction.cjs +2 -1
- package/dist/transaction.cjs.map +1 -1
- package/dist/transaction.js +2 -1
- package/dist/transaction.js.map +1 -1
- package/dist/user/api/user-api.d.ts +4 -2
- package/dist/user/api/user-api.d.ts.map +1 -1
- package/dist/user/services/user-service.d.ts +4 -2
- package/dist/user/services/user-service.d.ts.map +1 -1
- package/dist/user-status/api/user-status-api.d.ts +6 -4
- package/dist/user-status/api/user-status-api.d.ts.map +1 -1
- package/dist/user-status/index.d.ts +4 -2
- package/dist/user-status/index.d.ts.map +1 -1
- package/dist/user-status/services/user-status-service.d.ts +4 -2
- package/dist/user-status/services/user-status-service.d.ts.map +1 -1
- package/dist/user-status.cjs +22 -14
- package/dist/user-status.cjs.map +1 -1
- package/dist/user-status.js +22 -14
- package/dist/user-status.js.map +1 -1
- package/dist/user.cjs +2 -1
- package/dist/user.cjs.map +1 -1
- package/dist/user.js +2 -1
- package/dist/user.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/base-token-service-BSXDwrcq.js.map +0 -1
- package/dist/chunks/base-token-service-CYuqPPs0.cjs.map +0 -1
- package/dist/chunks/campaign-service-CKwkiOLx.js.map +0 -1
- package/dist/chunks/campaign-service-D-v9ZlUB.cjs.map +0 -1
- package/dist/chunks/donation-service-CyJS4DIZ.js.map +0 -1
- package/dist/chunks/donation-service-D-xFrONi.cjs.map +0 -1
- package/dist/chunks/payment-service-B4qx0qiE.cjs +0 -220
- package/dist/chunks/payment-service-B4qx0qiE.cjs.map +0 -1
- package/dist/chunks/payment-service-DfCBFosx.js +0 -217
- package/dist/chunks/payment-service-DfCBFosx.js.map +0 -1
- package/dist/chunks/pers-sdk-DULFjOW2.cjs.map +0 -1
- package/dist/chunks/pers-sdk-VmeBqUEP.js.map +0 -1
- package/dist/chunks/redemption-service-7qbeQxEM.cjs +0 -330
- package/dist/chunks/redemption-service-7qbeQxEM.cjs.map +0 -1
- package/dist/chunks/redemption-service-BT0J5Iy7.js +0 -327
- package/dist/chunks/redemption-service-BT0J5Iy7.js.map +0 -1
- package/dist/chunks/tenant-service-DME24vr1.cjs +0 -157
- package/dist/chunks/tenant-service-DME24vr1.cjs.map +0 -1
- package/dist/chunks/tenant-service-DxtHAlaa.js +0 -154
- package/dist/chunks/tenant-service-DxtHAlaa.js.map +0 -1
- package/dist/chunks/token-service-BWScn8Qa.cjs.map +0 -1
- package/dist/chunks/token-service-CpVwC5Eb.js.map +0 -1
- package/dist/chunks/transaction-service-B7h_4Hg3.js.map +0 -1
- package/dist/chunks/transaction-service-CXjTHCFu.cjs.map +0 -1
- package/dist/chunks/user-service-B89wBOV1.cjs.map +0 -1
- package/dist/chunks/user-service-doT5vsBD.js.map +0 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { PaginatedResponseDTO } from '@explorins/pers-shared';
|
|
1
2
|
import { PersApiClient } from '../core/pers-api-client';
|
|
2
3
|
import { PersEventEmitter } from '../core/events';
|
|
3
4
|
import { RedemptionService } from '../redemption';
|
|
5
|
+
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
4
6
|
import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, TokenUnitCreateRequestDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
5
7
|
/**
|
|
6
8
|
* Redemption Manager - Clean, high-level interface for redemption operations
|
|
@@ -16,7 +18,7 @@ import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, Rede
|
|
|
16
18
|
* @example Basic Redemption Operations
|
|
17
19
|
* ```typescript
|
|
18
20
|
* // Browse available redemption offers
|
|
19
|
-
* const offers = await sdk.redemptions.
|
|
21
|
+
* const { data: offers } = await sdk.redemptions.getRedemptions();
|
|
20
22
|
* console.log(`${offers.length} redemption offers available`);
|
|
21
23
|
*
|
|
22
24
|
* // Redeem a specific offer
|
|
@@ -24,7 +26,7 @@ import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, Rede
|
|
|
24
26
|
* console.log('Redemption successful:', redemptionResult.success);
|
|
25
27
|
*
|
|
26
28
|
* // Check redemption history
|
|
27
|
-
* const history = await sdk.redemptions.getUserRedemptions();
|
|
29
|
+
* const { data: history } = await sdk.redemptions.getUserRedemptions();
|
|
28
30
|
* console.log(`You have redeemed ${history.length} offers`);
|
|
29
31
|
* ```
|
|
30
32
|
*
|
|
@@ -69,46 +71,102 @@ export declare class RedemptionManager {
|
|
|
69
71
|
private redemptionService;
|
|
70
72
|
constructor(apiClient: PersApiClient, events?: PersEventEmitter | undefined);
|
|
71
73
|
/**
|
|
72
|
-
* Get
|
|
74
|
+
* Get redemption offers
|
|
73
75
|
*
|
|
74
|
-
* Retrieves
|
|
75
|
-
*
|
|
76
|
-
* services that can be purchased using loyalty tokens.
|
|
76
|
+
* Retrieves redemption offers based on user permissions and optional filters.
|
|
77
|
+
* The results returned depend on the authenticated user's role:
|
|
77
78
|
*
|
|
78
|
-
*
|
|
79
|
+
* **Regular Users:** See only active redemption offers available for purchase
|
|
80
|
+
* **Administrators:** Can see all redemptions and filter by active/inactive status
|
|
79
81
|
*
|
|
80
|
-
*
|
|
82
|
+
* Active redemptions include discounts, vouchers, products, and services that
|
|
83
|
+
* can be purchased using loyalty tokens. The backend automatically enforces
|
|
84
|
+
* permission-based filtering.
|
|
85
|
+
*
|
|
86
|
+
* @param options - Optional filters and pagination:
|
|
87
|
+
* - `active`: Filter by active status (true/false). Admins only - regular users always see active offers
|
|
88
|
+
* - Pagination options: `page`, `limit`, `sortBy`, `sortOrder`
|
|
89
|
+
* @returns Promise resolving to paginated redemption offers
|
|
90
|
+
*
|
|
91
|
+
* @example Regular User - Browse Active Offers
|
|
81
92
|
* ```typescript
|
|
82
|
-
*
|
|
93
|
+
* // Regular users automatically see only active offers
|
|
94
|
+
* const { data: offers, pagination } = await sdk.redemptions.getRedemptions();
|
|
83
95
|
*
|
|
84
|
-
* console.log('
|
|
85
|
-
*
|
|
96
|
+
* console.log('Available Redemption Offers:');
|
|
97
|
+
* console.log(`Showing ${offers.length} of ${pagination.total} offers`);
|
|
98
|
+
*
|
|
99
|
+
* offers.forEach(offer => {
|
|
86
100
|
* console.log(`\n${offer.title}`);
|
|
87
|
-
* console.log(
|
|
88
|
-
* console.log(
|
|
101
|
+
* console.log(`${offer.description}`);
|
|
102
|
+
* console.log(`Type: ${offer.redemptionType?.name || 'General'}`);
|
|
89
103
|
*
|
|
90
104
|
* if (offer.tokenUnits?.length) {
|
|
91
|
-
* console.log('
|
|
105
|
+
* console.log('Cost:');
|
|
92
106
|
* offer.tokenUnits.forEach(unit => {
|
|
93
107
|
* console.log(` ${unit.amount} ${unit.token.symbol}`);
|
|
94
108
|
* });
|
|
95
109
|
* }
|
|
96
110
|
*
|
|
97
111
|
* if (offer.availableQuantity !== undefined) {
|
|
98
|
-
* console.log(
|
|
112
|
+
* console.log(`Available: ${offer.availableQuantity}`);
|
|
99
113
|
* }
|
|
100
114
|
* });
|
|
101
115
|
*
|
|
102
116
|
* // Filter offers by affordability
|
|
103
|
-
* const userBalance = 1000;
|
|
104
|
-
* const affordableOffers =
|
|
117
|
+
* const userBalance = 1000;
|
|
118
|
+
* const affordableOffers = offers.filter(offer =>
|
|
105
119
|
* offer.tokenUnits?.every(unit => unit.amount <= userBalance)
|
|
106
120
|
* );
|
|
107
121
|
*
|
|
108
|
-
* console.log(`\n
|
|
122
|
+
* console.log(`\n${affordableOffers.length} offers within your budget`);
|
|
123
|
+
* ```
|
|
124
|
+
*
|
|
125
|
+
* @example Admin - Manage All Redemptions
|
|
126
|
+
* ```typescript
|
|
127
|
+
* // Admins can see all redemptions and filter by status
|
|
128
|
+
* const { data: allRedemptions } = await sdk.redemptions.getRedemptions();
|
|
129
|
+
* const { data: activeOnly } = await sdk.redemptions.getRedemptions({ active: true });
|
|
130
|
+
* const { data: inactiveOnly } = await sdk.redemptions.getRedemptions({ active: false });
|
|
131
|
+
*
|
|
132
|
+
* console.log('Redemption Inventory:');
|
|
133
|
+
* console.log(`Total offers: ${allRedemptions.length}`);
|
|
134
|
+
* console.log(`Active offers: ${activeOnly.length}`);
|
|
135
|
+
* console.log(`Inactive offers: ${inactiveOnly.length}`);
|
|
136
|
+
*
|
|
137
|
+
* // Analyze by type
|
|
138
|
+
* const offersByType = allRedemptions.reduce((acc, offer) => {
|
|
139
|
+
* const type = offer.redemptionType?.name || 'Unspecified';
|
|
140
|
+
* acc[type] = (acc[type] || 0) + 1;
|
|
141
|
+
* return acc;
|
|
142
|
+
* }, {});
|
|
143
|
+
*
|
|
144
|
+
* console.log('\nBy type:', offersByType);
|
|
145
|
+
* ```
|
|
146
|
+
*
|
|
147
|
+
* @example Pagination
|
|
148
|
+
* ```typescript
|
|
149
|
+
* // Load first page
|
|
150
|
+
* const { data: firstPage, pagination } = await sdk.redemptions.getRedemptions({
|
|
151
|
+
* page: 1,
|
|
152
|
+
* limit: 10
|
|
153
|
+
* });
|
|
154
|
+
*
|
|
155
|
+
* console.log(`Page ${pagination.page} of ${pagination.totalPages}`);
|
|
156
|
+
* console.log(`${firstPage.length} offers on this page`);
|
|
157
|
+
*
|
|
158
|
+
* // Load next page if available
|
|
159
|
+
* if (pagination.hasNextPage) {
|
|
160
|
+
* const { data: nextPage } = await sdk.redemptions.getRedemptions({
|
|
161
|
+
* page: pagination.page + 1,
|
|
162
|
+
* limit: 10
|
|
163
|
+
* });
|
|
164
|
+
* }
|
|
109
165
|
* ```
|
|
110
166
|
*/
|
|
111
|
-
|
|
167
|
+
getRedemptions(options?: {
|
|
168
|
+
active?: boolean;
|
|
169
|
+
} & PaginationOptions): Promise<PaginatedResponseDTO<RedemptionDTO>>;
|
|
112
170
|
/**
|
|
113
171
|
* Get available redemption types
|
|
114
172
|
*
|
|
@@ -116,13 +174,13 @@ export declare class RedemptionManager {
|
|
|
116
174
|
* rewards and offers. Types help users navigate and filter redemption options
|
|
117
175
|
* based on their preferences and needs.
|
|
118
176
|
*
|
|
119
|
-
* @returns Promise resolving to
|
|
177
|
+
* @returns Promise resolving to paginated redemption type definitions
|
|
120
178
|
*
|
|
121
179
|
* @example
|
|
122
180
|
* ```typescript
|
|
123
|
-
* const redemptionTypes = await sdk.redemptions.getRedemptionTypes();
|
|
181
|
+
* const { data: redemptionTypes } = await sdk.redemptions.getRedemptionTypes();
|
|
124
182
|
*
|
|
125
|
-
* console.log('
|
|
183
|
+
* console.log('Redemption Categories:');
|
|
126
184
|
* redemptionTypes.forEach(type => {
|
|
127
185
|
* console.log(`- ${type.name}: ${type.description}`);
|
|
128
186
|
* });
|
|
@@ -143,7 +201,7 @@ export declare class RedemptionManager {
|
|
|
143
201
|
* );
|
|
144
202
|
* ```
|
|
145
203
|
*/
|
|
146
|
-
getRedemptionTypes(): Promise<RedemptionTypeDTO
|
|
204
|
+
getRedemptionTypes(options?: PaginationOptions): Promise<PaginatedResponseDTO<RedemptionTypeDTO>>;
|
|
147
205
|
/**
|
|
148
206
|
* Redeem a redemption offer
|
|
149
207
|
*
|
|
@@ -162,30 +220,30 @@ export declare class RedemptionManager {
|
|
|
162
220
|
* const result = await sdk.redemptions.redeem('coffee-voucher-123');
|
|
163
221
|
*
|
|
164
222
|
* if (result.success) {
|
|
165
|
-
* console.log('
|
|
223
|
+
* console.log('Redemption Successful!');
|
|
166
224
|
* console.log('Confirmation ID:', result.id);
|
|
167
225
|
* console.log('Redeemed at:', result.redeemedAt);
|
|
168
226
|
*
|
|
169
227
|
* // Display redemption details
|
|
170
228
|
* if (result.voucherCode) {
|
|
171
|
-
* console.log('
|
|
229
|
+
* console.log('Voucher Code:', result.voucherCode);
|
|
172
230
|
* console.log('Present this code to redeem your reward');
|
|
173
231
|
* }
|
|
174
232
|
*
|
|
175
233
|
* if (result.instructions) {
|
|
176
|
-
* console.log('
|
|
234
|
+
* console.log('Instructions:', result.instructions);
|
|
177
235
|
* }
|
|
178
236
|
*
|
|
179
237
|
* // Show tokens deducted
|
|
180
238
|
* if (result.tokensUsed?.length) {
|
|
181
|
-
* console.log('\
|
|
239
|
+
* console.log('\nTokens Used:');
|
|
182
240
|
* result.tokensUsed.forEach(token => {
|
|
183
241
|
* console.log(`- ${token.amount} ${token.symbol}`);
|
|
184
242
|
* });
|
|
185
243
|
* }
|
|
186
244
|
*
|
|
187
245
|
* } else {
|
|
188
|
-
* console.log('
|
|
246
|
+
* console.log('Redemption failed:', result.error);
|
|
189
247
|
* }
|
|
190
248
|
*
|
|
191
249
|
* } catch (error) {
|
|
@@ -193,9 +251,9 @@ export declare class RedemptionManager {
|
|
|
193
251
|
*
|
|
194
252
|
* // Handle specific error cases
|
|
195
253
|
* if (error.message.includes('insufficient')) {
|
|
196
|
-
* console.log('
|
|
254
|
+
* console.log('You need more loyalty points for this redemption');
|
|
197
255
|
* } else if (error.message.includes('unavailable')) {
|
|
198
|
-
* console.log('
|
|
256
|
+
* console.log('This offer is no longer available');
|
|
199
257
|
* }
|
|
200
258
|
* }
|
|
201
259
|
* ```
|
|
@@ -203,7 +261,7 @@ export declare class RedemptionManager {
|
|
|
203
261
|
* @example Redemption with Pre-Validation
|
|
204
262
|
* ```typescript
|
|
205
263
|
* // Get offer details first
|
|
206
|
-
* const offers = await sdk.redemptions.
|
|
264
|
+
* const { data: offers } = await sdk.redemptions.getRedemptions();
|
|
207
265
|
* const targetOffer = offers.find(o => o.id === 'premium-discount');
|
|
208
266
|
*
|
|
209
267
|
* if (targetOffer) {
|
|
@@ -231,25 +289,25 @@ export declare class RedemptionManager {
|
|
|
231
289
|
* completed. Includes redemption details, timestamps, voucher codes, and
|
|
232
290
|
* token usage. Useful for user account history and support purposes.
|
|
233
291
|
*
|
|
234
|
-
* @returns Promise resolving to
|
|
292
|
+
* @returns Promise resolving to paginated user redemption records
|
|
235
293
|
*
|
|
236
294
|
* @example
|
|
237
295
|
* ```typescript
|
|
238
|
-
* const userRedemptions = await sdk.redemptions.getUserRedemptions();
|
|
296
|
+
* const { data: userRedemptions, pagination } = await sdk.redemptions.getUserRedemptions();
|
|
239
297
|
*
|
|
240
|
-
* console.log(
|
|
298
|
+
* console.log(`Redemption History (${userRedemptions.length} of ${pagination.total} items):`);
|
|
241
299
|
*
|
|
242
300
|
* userRedemptions.forEach((redemption, index) => {
|
|
243
301
|
* console.log(`\n${index + 1}. ${redemption.redemption.title}`);
|
|
244
|
-
* console.log(`
|
|
245
|
-
* console.log(`
|
|
302
|
+
* console.log(` Date: ${new Date(redemption.redeemedAt).toLocaleDateString()}`);
|
|
303
|
+
* console.log(` Type: ${redemption.redemption.redemptionType?.name || 'General'}`);
|
|
246
304
|
*
|
|
247
305
|
* if (redemption.voucherCode) {
|
|
248
|
-
* console.log(`
|
|
306
|
+
* console.log(` Voucher: ${redemption.voucherCode}`);
|
|
249
307
|
* }
|
|
250
308
|
*
|
|
251
309
|
* if (redemption.tokensUsed?.length) {
|
|
252
|
-
* console.log(`
|
|
310
|
+
* console.log(` Cost:`);
|
|
253
311
|
* redemption.tokensUsed.forEach(token => {
|
|
254
312
|
* console.log(` ${token.amount} ${token.symbol}`);
|
|
255
313
|
* });
|
|
@@ -257,7 +315,7 @@ export declare class RedemptionManager {
|
|
|
257
315
|
*
|
|
258
316
|
* // Show status if available
|
|
259
317
|
* if (redemption.status) {
|
|
260
|
-
* console.log(`
|
|
318
|
+
* console.log(` Status: ${redemption.status}`);
|
|
261
319
|
* }
|
|
262
320
|
* });
|
|
263
321
|
*
|
|
@@ -267,7 +325,7 @@ export declare class RedemptionManager {
|
|
|
267
325
|
* new Date(r.redeemedAt) > new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)
|
|
268
326
|
* ).length;
|
|
269
327
|
*
|
|
270
|
-
* console.log(`\
|
|
328
|
+
* console.log(`\nStatistics:`);
|
|
271
329
|
* console.log(`Total redemptions: ${totalRedemptions}`);
|
|
272
330
|
* console.log(`This month: ${recentRedemptions}`);
|
|
273
331
|
*
|
|
@@ -278,59 +336,13 @@ export declare class RedemptionManager {
|
|
|
278
336
|
* return acc;
|
|
279
337
|
* }, {});
|
|
280
338
|
*
|
|
281
|
-
* console.log(`\
|
|
339
|
+
* console.log(`\nBy category:`);
|
|
282
340
|
* Object.entries(byType).forEach(([type, count]) => {
|
|
283
341
|
* console.log(`${type}: ${count} redemptions`);
|
|
284
342
|
* });
|
|
285
343
|
* ```
|
|
286
344
|
*/
|
|
287
|
-
getUserRedemptions(): Promise<RedemptionRedeemDTO
|
|
288
|
-
/**
|
|
289
|
-
* Admin: Get all redemptions
|
|
290
|
-
*
|
|
291
|
-
* Retrieves all redemption offers in the system regardless of status. This
|
|
292
|
-
* operation requires administrator privileges and is used for comprehensive
|
|
293
|
-
* redemption management, reporting, and lifecycle operations.
|
|
294
|
-
*
|
|
295
|
-
* @param active - Optional filter to show only active or inactive redemptions
|
|
296
|
-
* @returns Promise resolving to array of all redemptions
|
|
297
|
-
* @throws {PersApiError} When not authenticated as administrator
|
|
298
|
-
*
|
|
299
|
-
* @example
|
|
300
|
-
* ```typescript
|
|
301
|
-
* // Admin operation - get redemption overview
|
|
302
|
-
* const allRedemptions = await sdk.redemptions.getAllRedemptions();
|
|
303
|
-
* const activeRedemptions = await sdk.redemptions.getAllRedemptions(true);
|
|
304
|
-
* const inactiveRedemptions = await sdk.redemptions.getAllRedemptions(false);
|
|
305
|
-
*
|
|
306
|
-
* console.log('📊 Redemption Inventory:');
|
|
307
|
-
* console.log(`Total offers: ${allRedemptions.length}`);
|
|
308
|
-
* console.log(`Active offers: ${activeRedemptions.length}`);
|
|
309
|
-
* console.log(`Inactive offers: ${inactiveRedemptions.length}`);
|
|
310
|
-
*
|
|
311
|
-
* // Analyze offers by type
|
|
312
|
-
* const offersByType = allRedemptions.reduce((acc, offer) => {
|
|
313
|
-
* const type = offer.redemptionType?.name || 'Unspecified';
|
|
314
|
-
* acc[type] = (acc[type] || 0) + 1;
|
|
315
|
-
* return acc;
|
|
316
|
-
* }, {});
|
|
317
|
-
*
|
|
318
|
-
* console.log('\n🏷️ Offers by type:');
|
|
319
|
-
* Object.entries(offersByType).forEach(([type, count]) => {
|
|
320
|
-
* console.log(`${type}: ${count} offers`);
|
|
321
|
-
* });
|
|
322
|
-
*
|
|
323
|
-
* // Find offers needing attention
|
|
324
|
-
* const lowStock = allRedemptions.filter(offer =>
|
|
325
|
-
* offer.availableQuantity && offer.availableQuantity < 10
|
|
326
|
-
* );
|
|
327
|
-
*
|
|
328
|
-
* if (lowStock.length > 0) {
|
|
329
|
-
* console.log(`\n⚠️ ${lowStock.length} offers running low on stock`);
|
|
330
|
-
* }
|
|
331
|
-
* ```
|
|
332
|
-
*/
|
|
333
|
-
getAllRedemptions(active?: boolean): Promise<RedemptionDTO[]>;
|
|
345
|
+
getUserRedemptions(options?: PaginationOptions): Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
|
|
334
346
|
/**
|
|
335
347
|
* Admin: Create new redemption offer
|
|
336
348
|
*
|
|
@@ -355,7 +367,7 @@ export declare class RedemptionManager {
|
|
|
355
367
|
* validUntil: '2024-08-31T23:59:59Z'
|
|
356
368
|
* });
|
|
357
369
|
*
|
|
358
|
-
* console.log('
|
|
370
|
+
* console.log('New redemption created:', newRedemption.title);
|
|
359
371
|
* console.log('Redemption ID:', newRedemption.id);
|
|
360
372
|
*
|
|
361
373
|
* // Set redemption cost
|
|
@@ -365,7 +377,7 @@ export declare class RedemptionManager {
|
|
|
365
377
|
* type: 'COST'
|
|
366
378
|
* });
|
|
367
379
|
*
|
|
368
|
-
* console.log('
|
|
380
|
+
* console.log('Cost set: 750 loyalty points');
|
|
369
381
|
* ```
|
|
370
382
|
*/
|
|
371
383
|
createRedemption(redemptionData: RedemptionCreateRequestDTO): Promise<RedemptionDTO>;
|
|
@@ -413,7 +425,7 @@ export declare class RedemptionManager {
|
|
|
413
425
|
* const updated = await sdk.redemptions.toggleRedemptionStatus('seasonal-offer');
|
|
414
426
|
*
|
|
415
427
|
* console.log(`Redemption ${updated.isActive ? 'activated' : 'deactivated'}`);
|
|
416
|
-
* console.log('Status:', updated.isActive ? '
|
|
428
|
+
* console.log('Status:', updated.isActive ? 'Available' : 'Unavailable');
|
|
417
429
|
*
|
|
418
430
|
* // Reactivate when ready
|
|
419
431
|
* if (!updated.isActive) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redemption-manager.d.ts","sourceRoot":"","sources":["../../src/managers/redemption-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAiB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EACV,aAAa,EACb,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,kCAAkC,EAClC,yBAAyB,EAC1B,MAAM,iDAAiD,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC;IAJjB,OAAO,CAAC,iBAAiB,CAAoB;gBAGnC,SAAS,EAAE,aAAa,EACxB,MAAM,CAAC,8BAAkB;IAMnC
|
|
1
|
+
{"version":3,"file":"redemption-manager.d.ts","sourceRoot":"","sources":["../../src/managers/redemption-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAiB,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,aAAa,EACb,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,kCAAkC,EAClC,yBAAyB,EAC1B,MAAM,iDAAiD,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC;IAJjB,OAAO,CAAC,iBAAiB,CAAoB;gBAGnC,SAAS,EAAE,aAAa,EACxB,MAAM,CAAC,8BAAkB;IAMnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6FG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAItH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,kBAAkB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAIvG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8EG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAa/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACG,kBAAkB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAIzG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACG,gBAAgB,CAAC,cAAc,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1F;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAIhH;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAInH;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlG;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,oBAAoB,IAAI,iBAAiB;CAG1C"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { PaginatedResponseDTO } from '@explorins/pers-shared';
|
|
1
2
|
import { PersApiClient } from '../core/pers-api-client';
|
|
2
3
|
import { TenantService } from '../tenant';
|
|
4
|
+
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
3
5
|
import type { TenantPublicDTO, TenantClientConfigDTO, AdminDTO, AdminCreateRequestDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
4
6
|
/**
|
|
5
7
|
* Tenant Manager - Clean, high-level interface for tenant operations
|
|
@@ -39,9 +41,10 @@ export declare class TenantManager {
|
|
|
39
41
|
/**
|
|
40
42
|
* Admin: Get all admins
|
|
41
43
|
*
|
|
42
|
-
* @
|
|
44
|
+
* @param options - Pagination options
|
|
45
|
+
* @returns Promise resolving to paginated admins
|
|
43
46
|
*/
|
|
44
|
-
getAdmins(): Promise<AdminDTO
|
|
47
|
+
getAdmins(options?: PaginationOptions): Promise<PaginatedResponseDTO<AdminDTO>>;
|
|
45
48
|
/**
|
|
46
49
|
* Admin: Create new admin
|
|
47
50
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-manager.d.ts","sourceRoot":"","sources":["../../src/managers/tenant-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAa,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAEV,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,qBAAqB,EACtB,MAAM,iDAAiD,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,aAAa;IAGZ,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,aAAa,CAAgB;gBAEjB,SAAS,EAAE,aAAa;IAK5C;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC;IAI/C;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAIvD;;;;;OAKG;IACG,YAAY,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAIzE
|
|
1
|
+
{"version":3,"file":"tenant-manager.d.ts","sourceRoot":"","sources":["../../src/managers/tenant-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAa,aAAa,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EAEV,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACR,qBAAqB,EACtB,MAAM,iDAAiD,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,aAAa;IAGZ,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,aAAa,CAAgB;gBAEjB,SAAS,EAAE,aAAa;IAK5C;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC;IAI/C;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAItC;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAIvD;;;;;OAKG;IACG,YAAY,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAIzE;;;;;OAKG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAIrF;;;;;OAKG;IACG,WAAW,CAAC,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAItE;;;;;;OAMG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvF;;;;OAIG;IACH,gBAAgB,IAAI,aAAa;CAGlC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { PaginatedResponseDTO } from '@explorins/pers-shared';
|
|
1
2
|
import { PersApiClient } from '../core/pers-api-client';
|
|
2
3
|
import { TokenService } from '../token';
|
|
3
4
|
import type { TokenDTO } from '../token/models';
|
|
5
|
+
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
4
6
|
/**
|
|
5
7
|
* Domain Token Manager - Clean, high-level interface for business token operations
|
|
6
8
|
*
|
|
@@ -77,7 +79,7 @@ export declare class TokenManager {
|
|
|
77
79
|
* });
|
|
78
80
|
* ```
|
|
79
81
|
*/
|
|
80
|
-
getTokens(): Promise<TokenDTO
|
|
82
|
+
getTokens(options?: PaginationOptions): Promise<PaginatedResponseDTO<TokenDTO>>;
|
|
81
83
|
/**
|
|
82
84
|
* Get all token types
|
|
83
85
|
*
|
|
@@ -95,7 +97,7 @@ export declare class TokenManager {
|
|
|
95
97
|
* const isValidType = types.some(type => type.name === 'REWARD');
|
|
96
98
|
* ```
|
|
97
99
|
*/
|
|
98
|
-
getTokenTypes(): Promise<import("
|
|
100
|
+
getTokenTypes(options?: PaginationOptions): Promise<PaginatedResponseDTO<import("@explorins/pers-shared").TokenTypeDTO>>;
|
|
99
101
|
/**
|
|
100
102
|
* Get active credit token
|
|
101
103
|
*
|
|
@@ -139,7 +141,7 @@ export declare class TokenManager {
|
|
|
139
141
|
* const discountToken = rewardTokens.find(t => t.name.includes('Discount'));
|
|
140
142
|
* ```
|
|
141
143
|
*/
|
|
142
|
-
getRewardTokens(): Promise<TokenDTO
|
|
144
|
+
getRewardTokens(options?: PaginationOptions): Promise<PaginatedResponseDTO<TokenDTO>>;
|
|
143
145
|
/**
|
|
144
146
|
* Get status tokens
|
|
145
147
|
*
|
|
@@ -161,7 +163,7 @@ export declare class TokenManager {
|
|
|
161
163
|
* const vipToken = statusTokens.find(t => t.name === 'VIP Status');
|
|
162
164
|
* ```
|
|
163
165
|
*/
|
|
164
|
-
getStatusTokens(): Promise<TokenDTO
|
|
166
|
+
getStatusTokens(options?: PaginationOptions): Promise<PaginatedResponseDTO<TokenDTO>>;
|
|
165
167
|
/**
|
|
166
168
|
* Get token by contract address
|
|
167
169
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/managers/token-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAY,YAAY,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"token-manager.d.ts","sourceRoot":"","sources":["../../src/managers/token-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAY,YAAY,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,YAAY,CAAe;gBAEf,SAAS,EAAE,aAAa;IAK5C;;;;;;;;;;;;;;;;;;;OAmBG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAIrF;;;;;;;;;;;;;;;;OAgBG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAI/C;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC;IAI/C;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,eAAe,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAI3F;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,eAAe,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAI3F;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACG,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI3G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,WAAW,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIpD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIrE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI3D;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,eAAe,IAAI,YAAY;CAIhC"}
|
|
@@ -3,6 +3,7 @@ import { PersEventEmitter } from '../core/events';
|
|
|
3
3
|
import { TransactionService } from '../transaction';
|
|
4
4
|
import { PaginatedResponseDTO, TransactionAnalyticsRequestDTO, TransactionAnalyticsResponseDTO, TransactionPaginationRequestDTO, TransactionRequestResponseDTO, TransactionRole } from '@explorins/pers-shared';
|
|
5
5
|
import { AccountSelectorDTO, TransactionDTO, TransactionRequestDTO, TransactionSubmissionRequestDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
6
|
+
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
6
7
|
/**
|
|
7
8
|
* Transaction Manager - Clean, high-level interface for transaction operations
|
|
8
9
|
*
|
|
@@ -79,7 +80,7 @@ export declare class TransactionManager {
|
|
|
79
80
|
* try {
|
|
80
81
|
* const transaction = await sdk.transactions.getTransactionById('txn-abc123');
|
|
81
82
|
*
|
|
82
|
-
* console.log('
|
|
83
|
+
* console.log('Transaction Details:');
|
|
83
84
|
* console.log('ID:', transaction.id);
|
|
84
85
|
* console.log('Type:', transaction.type);
|
|
85
86
|
* console.log('Status:', transaction.status);
|
|
@@ -96,7 +97,7 @@ export declare class TransactionManager {
|
|
|
96
97
|
*
|
|
97
98
|
* // Show token movements
|
|
98
99
|
* if (transaction.tokenTransfers?.length) {
|
|
99
|
-
* console.log('\
|
|
100
|
+
* console.log('\nToken Transfers:');
|
|
100
101
|
* transaction.tokenTransfers.forEach(transfer => {
|
|
101
102
|
* console.log(`${transfer.amount} ${transfer.token.symbol} ${transfer.direction}`);
|
|
102
103
|
* });
|
|
@@ -104,7 +105,7 @@ export declare class TransactionManager {
|
|
|
104
105
|
*
|
|
105
106
|
* // Show blockchain confirmation
|
|
106
107
|
* if (transaction.blockchainHash) {
|
|
107
|
-
* console.log('
|
|
108
|
+
* console.log('Blockchain:', transaction.blockchainHash);
|
|
108
109
|
* }
|
|
109
110
|
*
|
|
110
111
|
* } catch (error) {
|
|
@@ -139,12 +140,12 @@ export declare class TransactionManager {
|
|
|
139
140
|
* }
|
|
140
141
|
* });
|
|
141
142
|
*
|
|
142
|
-
* console.log('
|
|
143
|
+
* console.log('Purchase completed!');
|
|
143
144
|
* console.log('Transaction ID:', purchase.id);
|
|
144
145
|
* console.log('Status:', purchase.status);
|
|
145
146
|
*
|
|
146
147
|
* if (purchase.tokensEarned?.length) {
|
|
147
|
-
* console.log('\
|
|
148
|
+
* console.log('\nLoyalty rewards earned:');
|
|
148
149
|
* purchase.tokensEarned.forEach(reward => {
|
|
149
150
|
* console.log(`${reward.amount} ${reward.token.symbol}`);
|
|
150
151
|
* });
|
|
@@ -246,7 +247,7 @@ export declare class TransactionManager {
|
|
|
246
247
|
* }
|
|
247
248
|
* });
|
|
248
249
|
*
|
|
249
|
-
* console.log('
|
|
250
|
+
* console.log('Purchase Summary:');
|
|
250
251
|
* console.log(`Total purchases: ${purchases.length}`);
|
|
251
252
|
* console.log(`Total spent: $${totalSpent.toFixed(2)}`);
|
|
252
253
|
* console.log(`Total rewards earned: ${totalRewards} points`);
|
|
@@ -262,7 +263,7 @@ export declare class TransactionManager {
|
|
|
262
263
|
* new Date(t.createdAt) > thirtyDaysAgo
|
|
263
264
|
* );
|
|
264
265
|
*
|
|
265
|
-
* console.log(
|
|
266
|
+
* console.log(`Recent Activity (${recentActivity.length} transactions in last 30 days):`);
|
|
266
267
|
*
|
|
267
268
|
* // Group by type
|
|
268
269
|
* const activityByType = recentActivity.reduce((acc, t) => {
|
|
@@ -275,7 +276,7 @@ export declare class TransactionManager {
|
|
|
275
276
|
* });
|
|
276
277
|
* ```
|
|
277
278
|
*/
|
|
278
|
-
getUserTransactionHistory(role?: TransactionRole,
|
|
279
|
+
getUserTransactionHistory(role?: TransactionRole, options?: PaginationOptions): Promise<PaginatedResponseDTO<TransactionDTO>>;
|
|
279
280
|
/**
|
|
280
281
|
* Admin: Get all tenant transactions
|
|
281
282
|
*
|
|
@@ -292,7 +293,7 @@ export declare class TransactionManager {
|
|
|
292
293
|
* // Admin operation - comprehensive transaction analysis
|
|
293
294
|
* const allTransactions = await sdk.transactions.getTenantTransactions();
|
|
294
295
|
*
|
|
295
|
-
* console.log(
|
|
296
|
+
* console.log(`Tenant Transaction Overview:`);
|
|
296
297
|
* console.log(`Total transactions: ${allTransactions.length}`);
|
|
297
298
|
*
|
|
298
299
|
* // Analyze by status
|
|
@@ -301,7 +302,7 @@ export declare class TransactionManager {
|
|
|
301
302
|
* return acc;
|
|
302
303
|
* }, {});
|
|
303
304
|
*
|
|
304
|
-
* console.log('\
|
|
305
|
+
* console.log('\nBy status:');
|
|
305
306
|
* Object.entries(statusCounts).forEach(([status, count]) => {
|
|
306
307
|
* console.log(`${status}: ${count} transactions`);
|
|
307
308
|
* });
|
|
@@ -312,7 +313,7 @@ export declare class TransactionManager {
|
|
|
312
313
|
* return acc;
|
|
313
314
|
* }, {});
|
|
314
315
|
*
|
|
315
|
-
* console.log('\
|
|
316
|
+
* console.log('\nBy type:');
|
|
316
317
|
* Object.entries(typeCounts).forEach(([type, count]) => {
|
|
317
318
|
* console.log(`${type}: ${count} transactions`);
|
|
318
319
|
* });
|
|
@@ -324,7 +325,7 @@ export declare class TransactionManager {
|
|
|
324
325
|
*
|
|
325
326
|
* const avgTransactionSize = totalVolume / allTransactions.length;
|
|
326
327
|
*
|
|
327
|
-
* console.log('\
|
|
328
|
+
* console.log('\nVolume metrics:');
|
|
328
329
|
* console.log(`Total volume: $${totalVolume.toFixed(2)}`);
|
|
329
330
|
* console.log(`Average transaction: $${avgTransactionSize.toFixed(2)}`);
|
|
330
331
|
*
|
|
@@ -336,7 +337,7 @@ export declare class TransactionManager {
|
|
|
336
337
|
* console.log(`\n⏰ Last 24 hours: ${last24Hours.length} transactions`);
|
|
337
338
|
* ```
|
|
338
339
|
*/
|
|
339
|
-
getTenantTransactions(
|
|
340
|
+
getTenantTransactions(options?: PaginationOptions): Promise<PaginatedResponseDTO<TransactionDTO>>;
|
|
340
341
|
/**
|
|
341
342
|
* Admin: Get paginated transactions
|
|
342
343
|
*
|
|
@@ -358,7 +359,7 @@ export declare class TransactionManager {
|
|
|
358
359
|
* sortOrder: 'DESC'
|
|
359
360
|
* });
|
|
360
361
|
*
|
|
361
|
-
* console.log(
|
|
362
|
+
* console.log(`� Page ${result.page} of ${result.totalPages}`);
|
|
362
363
|
* console.log(`Showing ${result.data.length} of ${result.total} transactions`);
|
|
363
364
|
*
|
|
364
365
|
* result.data.forEach((transaction, index) => {
|
|
@@ -392,7 +393,7 @@ export declare class TransactionManager {
|
|
|
392
393
|
* sortOrder: 'DESC'
|
|
393
394
|
* });
|
|
394
395
|
*
|
|
395
|
-
* console.log('
|
|
396
|
+
* console.log('Filtered Results:');
|
|
396
397
|
* console.log(`Found ${filteredResult.total} matching transactions`);
|
|
397
398
|
*
|
|
398
399
|
* filteredResult.data.forEach(transaction => {
|
|
@@ -431,10 +432,10 @@ export declare class TransactionManager {
|
|
|
431
432
|
* // Clean up object URL
|
|
432
433
|
* URL.revokeObjectURL(downloadUrl);
|
|
433
434
|
*
|
|
434
|
-
* console.log('
|
|
435
|
+
* console.log('Transaction export downloaded successfully');
|
|
435
436
|
*
|
|
436
437
|
* } catch (error) {
|
|
437
|
-
* console.log('
|
|
438
|
+
* console.log('Export failed:', error.message);
|
|
438
439
|
* }
|
|
439
440
|
* ```
|
|
440
441
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../src/managers/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAkB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChN,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../src/managers/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAkB,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,+BAA+B,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChN,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,iDAAiD,CAAC;AAC7J,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM,CAAC;IAJjB,OAAO,CAAC,kBAAkB,CAAqB;gBAGrC,SAAS,EAAE,aAAa,EACxB,MAAM,CAAC,8BAAkB;IAMnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACG,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAIxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8EG;IACG,iBAAiB,CAAC,eAAe,EAAE,qBAAqB;IAa9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiFG;IACG,yBAAyB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAInI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACG,qBAAqB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAIvG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8DG;IACG,wBAAwB,CAAC,MAAM,EAAE,+BAA+B,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAItH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;;;;;OAQG;IACG,0BAA0B,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAI/F;;;;;;;;OAQG;IACG,8BAA8B,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAI5G;;;;;;;OAOG;IACG,uBAAuB,CAAC,YAAY,EAAE,+BAA+B,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAapH;;;;;;;OAOG;IACG,yBAAyB,CAAC,eAAe,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAInH;;;;;;;OAOG;IACG,4BAA4B,CAAC,eAAe,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAItH;;;;;;;;OAQG;IACG,uBAAuB,CAAC,gBAAgB,EAAE,8BAA8B,GAAG,OAAO,CAAC,+BAA+B,CAAC;IAIzH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACH,qBAAqB,IAAI,kBAAkB;CAG5C"}
|
|
@@ -3,6 +3,8 @@ import { PersEventEmitter } from '../core/events';
|
|
|
3
3
|
import { UserService } from '../user';
|
|
4
4
|
import { UserPublicProfileDTO } from '../user/models';
|
|
5
5
|
import type { UserDTO, UserCreateRequestDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
6
|
+
import { PaginatedResponseDTO } from '@explorins/pers-shared';
|
|
7
|
+
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
6
8
|
/**
|
|
7
9
|
* User Manager - Clean, high-level interface for user operations
|
|
8
10
|
*
|
|
@@ -174,7 +176,7 @@ export declare class UserManager {
|
|
|
174
176
|
getAllUsersPublic(filter?: {
|
|
175
177
|
key: string;
|
|
176
178
|
value: string;
|
|
177
|
-
}): Promise<UserPublicProfileDTO
|
|
179
|
+
}, options?: PaginationOptions): Promise<PaginatedResponseDTO<UserPublicProfileDTO>>;
|
|
178
180
|
/**
|
|
179
181
|
* Admin: Get all users
|
|
180
182
|
*
|
|
@@ -200,7 +202,7 @@ export declare class UserManager {
|
|
|
200
202
|
* }
|
|
201
203
|
* ```
|
|
202
204
|
*/
|
|
203
|
-
getAllUsers(): Promise<UserDTO
|
|
205
|
+
getAllUsers(options?: PaginationOptions): Promise<PaginatedResponseDTO<UserDTO>>;
|
|
204
206
|
/**
|
|
205
207
|
* Business/Admin: Create or update a user
|
|
206
208
|
*
|