@explorins/pers-sdk 1.6.45 → 2.0.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/README.md +288 -0
- package/dist/analytics.cjs +12 -0
- package/dist/analytics.cjs.map +1 -1
- package/dist/analytics.js +1 -1
- 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 +205 -0
- package/dist/business/api/business-membership-api.d.ts.map +1 -0
- package/dist/business/index.d.ts +2 -0
- package/dist/business/index.d.ts.map +1 -1
- package/dist/business/services/business-membership-service.d.ts +180 -0
- package/dist/business/services/business-membership-service.d.ts.map +1 -0
- 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 +767 -9
- package/dist/business.cjs.map +1 -1
- package/dist/business.js +751 -2
- package/dist/business.js.map +1 -1
- package/dist/campaign/api/campaign-api.d.ts +56 -22
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign/services/campaign-service.d.ts +28 -16
- package/dist/campaign/services/campaign-service.d.ts.map +1 -1
- package/dist/campaign.cjs +14 -1
- package/dist/campaign.cjs.map +1 -1
- package/dist/campaign.js +3 -2
- 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-B1tQMNqA.cjs → campaign-service-Ae164xl8.cjs} +102 -84
- package/dist/chunks/campaign-service-Ae164xl8.cjs.map +1 -0
- package/dist/chunks/{campaign-service-CJPXgFBe.js → campaign-service-rlK4WeSY.js} +102 -84
- 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-DzS7mkm7.cjs → pers-sdk-CrffRkya.cjs} +1096 -323
- package/dist/chunks/pers-sdk-CrffRkya.cjs.map +1 -0
- package/dist/chunks/{pers-sdk-VGEG59g3.js → pers-sdk-omI-Fl0m.js} +1086 -317
- package/dist/chunks/pers-sdk-omI-Fl0m.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-request.builder-DltmruUC.js +296 -0
- package/dist/chunks/transaction-request.builder-DltmruUC.js.map +1 -0
- package/dist/chunks/transaction-request.builder-DrqTWcyC.cjs +303 -0
- package/dist/chunks/transaction-request.builder-DrqTWcyC.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-D6mTa_WZ.js → user-service-BGP3SZpk.js} +82 -20
- package/dist/chunks/user-service-BGP3SZpk.js.map +1 -0
- package/dist/chunks/{user-service-D1Rn4U8u.cjs → user-service-gITOx4qj.cjs} +82 -20
- package/dist/chunks/user-service-gITOx4qj.cjs.map +1 -0
- package/dist/chunks/{web3-chain-service-BLFxB5TA.cjs → web3-chain-service-6vsVHPjl.cjs} +116 -16
- package/dist/chunks/web3-chain-service-6vsVHPjl.cjs.map +1 -0
- package/dist/chunks/{web3-chain-service-JRSwxr-s.js → web3-chain-service-BcUeeujC.js} +111 -17
- package/dist/chunks/web3-chain-service-BcUeeujC.js.map +1 -0
- package/dist/core/auth/api/auth-api.d.ts +35 -0
- package/dist/core/auth/api/auth-api.d.ts.map +1 -1
- package/dist/core/auth/auth-provider.interface.d.ts +7 -1
- package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
- package/dist/core/auth/services/auth-service.d.ts +26 -1
- package/dist/core/auth/services/auth-service.d.ts.map +1 -1
- package/dist/core/auth/token-storage.d.ts +3 -2
- package/dist/core/auth/token-storage.d.ts.map +1 -1
- package/dist/core/errors/index.d.ts +75 -6
- package/dist/core/errors/index.d.ts.map +1 -1
- package/dist/core/events/event-emitter.d.ts +106 -0
- package/dist/core/events/event-emitter.d.ts.map +1 -0
- package/dist/core/events/event-types.d.ts +127 -0
- package/dist/core/events/event-types.d.ts.map +1 -0
- package/dist/core/events/index.d.ts +22 -0
- package/dist/core/events/index.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/pers-api-client.d.ts +12 -0
- package/dist/core/pers-api-client.d.ts.map +1 -1
- package/dist/core/version.d.ts +15 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core.cjs +26 -12
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +13 -12
- 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 +14 -1
- package/dist/donation.cjs.map +1 -1
- package/dist/donation.js +3 -2
- package/dist/donation.js.map +1 -1
- package/dist/index.cjs +63 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +15 -13
- 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/auth-manager.d.ts +77 -4
- package/dist/managers/auth-manager.d.ts.map +1 -1
- package/dist/managers/business-manager.d.ts +198 -8
- package/dist/managers/business-manager.d.ts.map +1 -1
- package/dist/managers/campaign-manager.d.ts +67 -83
- 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 +106 -92
- 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 +22 -19
- package/dist/managers/transaction-manager.d.ts.map +1 -1
- package/dist/managers/user-manager.d.ts +61 -3
- 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 +2 -2
- 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 +225 -9
- package/dist/payment.cjs.map +1 -1
- package/dist/payment.js +210 -2
- package/dist/payment.js.map +1 -1
- package/dist/pers-sdk.d.ts +49 -0
- package/dist/pers-sdk.d.ts.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 +353 -9
- package/dist/redemption.cjs.map +1 -1
- package/dist/redemption.js +338 -2
- 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/interfaces/pers-shared-lib.interfaces.d.ts +2 -1
- package/dist/shared/interfaces/pers-shared-lib.interfaces.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 +177 -9
- package/dist/tenant.cjs.map +1 -1
- package/dist/tenant.js +162 -2
- 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 +15 -2
- package/dist/token.cjs.map +1 -1
- package/dist/token.js +4 -3
- 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/models/index.d.ts +2 -0
- package/dist/transaction/models/index.d.ts.map +1 -1
- package/dist/transaction/models/transaction-request.builder.d.ts +256 -0
- package/dist/transaction/models/transaction-request.builder.d.ts.map +1 -0
- 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 +9 -1
- package/dist/transaction.cjs.map +1 -1
- package/dist/transaction.js +3 -1
- package/dist/transaction.js.map +1 -1
- package/dist/user/api/user-api.d.ts +32 -9
- package/dist/user/api/user-api.d.ts.map +1 -1
- package/dist/user/services/user-service.d.ts +25 -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 +34 -14
- package/dist/user-status.cjs.map +1 -1
- package/dist/user-status.js +23 -15
- package/dist/user-status.js.map +1 -1
- package/dist/user.cjs +14 -1
- package/dist/user.cjs.map +1 -1
- package/dist/user.js +3 -2
- package/dist/user.js.map +1 -1
- package/dist/web3-chain.cjs +13 -1
- package/dist/web3-chain.cjs.map +1 -1
- package/dist/web3-chain.js +2 -2
- package/package.json +2 -2
- 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/business-service-8Xd3d5oY.js +0 -238
- package/dist/chunks/business-service-8Xd3d5oY.js.map +0 -1
- package/dist/chunks/business-service-P9o4cwQL.cjs +0 -241
- package/dist/chunks/business-service-P9o4cwQL.cjs.map +0 -1
- package/dist/chunks/campaign-service-B1tQMNqA.cjs.map +0 -1
- package/dist/chunks/campaign-service-CJPXgFBe.js.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-DzS7mkm7.cjs.map +0 -1
- package/dist/chunks/pers-sdk-VGEG59g3.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-D1Rn4U8u.cjs.map +0 -1
- package/dist/chunks/user-service-D6mTa_WZ.js.map +0 -1
- package/dist/chunks/web3-chain-service-BLFxB5TA.cjs.map +0 -1
- package/dist/chunks/web3-chain-service-JRSwxr-s.js.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { PaginatedResponseDTO } from '@explorins/pers-shared';
|
|
1
2
|
import { PersApiClient } from '../core/pers-api-client';
|
|
2
3
|
import { PaymentService } from '../payment';
|
|
4
|
+
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
3
5
|
import type { PaymentIntentDTO, PurchaseDTO, PurchaseTokenDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
4
6
|
/**
|
|
5
7
|
* Purchase Manager - Clean, high-level interface for purchase operations
|
|
@@ -37,7 +39,7 @@ import type { PaymentIntentDTO, PurchaseDTO, PurchaseTokenDTO } from '../shared/
|
|
|
37
39
|
* // Browse available token packages
|
|
38
40
|
* const availableTokens = await sdk.purchases.getActivePurchaseTokens(true);
|
|
39
41
|
*
|
|
40
|
-
* console.log('
|
|
42
|
+
* console.log('Available Token Packages:');
|
|
41
43
|
* availableTokens.forEach(token => {
|
|
42
44
|
* console.log(`\n${token.name}`);
|
|
43
45
|
* console.log(`Price: $${token.price} ${token.currency}`);
|
|
@@ -90,7 +92,7 @@ export declare class PurchaseManager {
|
|
|
90
92
|
* '1000 Loyalty Points Package'
|
|
91
93
|
* );
|
|
92
94
|
*
|
|
93
|
-
* console.log('
|
|
95
|
+
* console.log('Payment Intent Created:');
|
|
94
96
|
* console.log('ID:', paymentIntent.id);
|
|
95
97
|
* console.log('Amount:', paymentIntent.amount / 100, paymentIntent.currency);
|
|
96
98
|
* console.log('Status:', paymentIntent.status);
|
|
@@ -165,23 +167,23 @@ export declare class PurchaseManager {
|
|
|
165
167
|
* const allPackages = await sdk.purchases.getActivePurchaseTokens();
|
|
166
168
|
* const activeOnly = await sdk.purchases.getActivePurchaseTokens(true);
|
|
167
169
|
*
|
|
168
|
-
* console.log('
|
|
170
|
+
* console.log('Token Package Catalog:');
|
|
169
171
|
*
|
|
170
172
|
* activeOnly.forEach(package => {
|
|
171
|
-
* console.log(`\n
|
|
172
|
-
* console.log(
|
|
173
|
+
* console.log(`\n${package.name}`);
|
|
174
|
+
* console.log(`Price: $${package.price} ${package.currency}`);
|
|
173
175
|
* console.log(`🪙 Tokens: ${package.tokenAmount} ${package.tokenSymbol}`);
|
|
174
|
-
* console.log(
|
|
176
|
+
* console.log(`${package.description}`);
|
|
175
177
|
*
|
|
176
178
|
* // Calculate value per token
|
|
177
179
|
* const costPerToken = package.price / package.tokenAmount;
|
|
178
|
-
* console.log(
|
|
180
|
+
* console.log(`Value: $${costPerToken.toFixed(4)} per token`);
|
|
179
181
|
*
|
|
180
182
|
* if (package.bonusTokens && package.bonusTokens > 0) {
|
|
181
|
-
* console.log(
|
|
183
|
+
* console.log(`Bonus: +${package.bonusTokens} extra tokens`);
|
|
182
184
|
* const totalTokens = package.tokenAmount + package.bonusTokens;
|
|
183
185
|
* const actualCostPerToken = package.price / totalTokens;
|
|
184
|
-
* console.log(
|
|
186
|
+
* console.log(`With bonus: $${actualCostPerToken.toFixed(4)} per token`);
|
|
185
187
|
* }
|
|
186
188
|
*
|
|
187
189
|
* if (package.validUntil) {
|
|
@@ -196,7 +198,7 @@ export declare class PurchaseManager {
|
|
|
196
198
|
* return currentValue < bestValue ? current : best;
|
|
197
199
|
* });
|
|
198
200
|
*
|
|
199
|
-
* console.log(`\n
|
|
201
|
+
* console.log(`\n� Best Value: ${bestValue.name}`);
|
|
200
202
|
* ```
|
|
201
203
|
*
|
|
202
204
|
* @example Filter by Currency and Price
|
|
@@ -222,14 +224,14 @@ export declare class PurchaseManager {
|
|
|
222
224
|
* (b.tokenAmount + (b.bonusTokens || 0)) - (a.tokenAmount + (a.bonusTokens || 0))
|
|
223
225
|
* );
|
|
224
226
|
*
|
|
225
|
-
* console.log('\
|
|
227
|
+
* console.log('\nTop 3 by token amount:');
|
|
226
228
|
* sortedByTokens.slice(0, 3).forEach((pkg, index) => {
|
|
227
229
|
* const totalTokens = pkg.tokenAmount + (pkg.bonusTokens || 0);
|
|
228
230
|
* console.log(`${index + 1}. ${pkg.name}: ${totalTokens} tokens`);
|
|
229
231
|
* });
|
|
230
232
|
* ```
|
|
231
233
|
*/
|
|
232
|
-
getActivePurchaseTokens(active?: boolean): Promise<PurchaseTokenDTO
|
|
234
|
+
getActivePurchaseTokens(active?: boolean, options?: PaginationOptions): Promise<PaginatedResponseDTO<PurchaseTokenDTO>>;
|
|
233
235
|
/**
|
|
234
236
|
* Get all user purchases
|
|
235
237
|
*
|
|
@@ -243,16 +245,16 @@ export declare class PurchaseManager {
|
|
|
243
245
|
* ```typescript
|
|
244
246
|
* const userPurchases = await sdk.purchases.getAllUserPurchases();
|
|
245
247
|
*
|
|
246
|
-
* console.log(
|
|
248
|
+
* console.log(`Purchase History (${userPurchases.length} purchases):`);
|
|
247
249
|
*
|
|
248
250
|
* userPurchases.forEach((purchase, index) => {
|
|
249
251
|
* console.log(`\n${index + 1}. Purchase #${purchase.id}`);
|
|
250
|
-
* console.log(
|
|
251
|
-
* console.log(
|
|
252
|
-
* console.log(
|
|
252
|
+
* console.log(`Date: ${new Date(purchase.createdAt).toLocaleDateString()}`);
|
|
253
|
+
* console.log(`Amount: $${purchase.amount} ${purchase.currency}`);
|
|
254
|
+
* console.log(`Status: ${purchase.status}`);
|
|
253
255
|
*
|
|
254
256
|
* if (purchase.description) {
|
|
255
|
-
* console.log(
|
|
257
|
+
* console.log(`Description: ${purchase.description}`);
|
|
256
258
|
* }
|
|
257
259
|
*
|
|
258
260
|
* if (purchase.tokensReceived) {
|
|
@@ -260,11 +262,11 @@ export declare class PurchaseManager {
|
|
|
260
262
|
* }
|
|
261
263
|
*
|
|
262
264
|
* if (purchase.paymentMethod) {
|
|
263
|
-
* console.log(
|
|
265
|
+
* console.log(`Payment method: ${purchase.paymentMethod}`);
|
|
264
266
|
* }
|
|
265
267
|
*
|
|
266
268
|
* if (purchase.receiptEmail) {
|
|
267
|
-
* console.log(
|
|
269
|
+
* console.log(`� Receipt sent to: ${purchase.receiptEmail}`);
|
|
268
270
|
* }
|
|
269
271
|
* });
|
|
270
272
|
*
|
|
@@ -273,7 +275,7 @@ export declare class PurchaseManager {
|
|
|
273
275
|
* const totalSpent = successfulPurchases.reduce((sum, p) => sum + p.amount, 0);
|
|
274
276
|
* const totalTokens = successfulPurchases.reduce((sum, p) => sum + (p.tokensReceived || 0), 0);
|
|
275
277
|
*
|
|
276
|
-
* console.log('\
|
|
278
|
+
* console.log('\nPurchase Statistics:');
|
|
277
279
|
* console.log(`Total purchases: ${userPurchases.length}`);
|
|
278
280
|
* console.log(`Successful purchases: ${successfulPurchases.length}`);
|
|
279
281
|
* console.log(`Total spent: $${totalSpent.toFixed(2)}`);
|
|
@@ -298,7 +300,7 @@ export declare class PurchaseManager {
|
|
|
298
300
|
* new Date(p.createdAt) > new Date(Date.now() - 180 * 24 * 60 * 60 * 1000)
|
|
299
301
|
* );
|
|
300
302
|
*
|
|
301
|
-
* console.log('
|
|
303
|
+
* console.log('Purchase Timeline:');
|
|
302
304
|
* console.log(`Last 30 days: ${last30Days.length} purchases`);
|
|
303
305
|
* console.log(`Last 6 months: ${last6Months.length} purchases`);
|
|
304
306
|
*
|
|
@@ -308,7 +310,7 @@ export declare class PurchaseManager {
|
|
|
308
310
|
* return acc;
|
|
309
311
|
* }, {});
|
|
310
312
|
*
|
|
311
|
-
* console.log('\
|
|
313
|
+
* console.log('\nBy status:');
|
|
312
314
|
* Object.entries(statusCounts).forEach(([status, count]) => {
|
|
313
315
|
* console.log(`${status}: ${count} purchases`);
|
|
314
316
|
* });
|
|
@@ -323,7 +325,7 @@ export declare class PurchaseManager {
|
|
|
323
325
|
* );
|
|
324
326
|
*
|
|
325
327
|
* if (largestPurchase) {
|
|
326
|
-
* console.log(`\
|
|
328
|
+
* console.log(`\nLargest purchase: $${largestPurchase.amount} on ${new Date(largestPurchase.createdAt).toLocaleDateString()}`);
|
|
327
329
|
* }
|
|
328
330
|
*
|
|
329
331
|
* if (mostRecent) {
|
|
@@ -331,7 +333,7 @@ export declare class PurchaseManager {
|
|
|
331
333
|
* }
|
|
332
334
|
* ```
|
|
333
335
|
*/
|
|
334
|
-
getAllUserPurchases(): Promise<PurchaseDTO
|
|
336
|
+
getAllUserPurchases(options?: PaginationOptions): Promise<PaginatedResponseDTO<PurchaseDTO>>;
|
|
335
337
|
/**
|
|
336
338
|
* Get the full purchase service for advanced operations
|
|
337
339
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"purchase-manager.d.ts","sourceRoot":"","sources":["../../src/managers/purchase-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EACV,gBAAgB,EAEhB,WAAW,EAIX,gBAAgB,EACjB,MAAM,iDAAiD,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,cAAc,CAAiB;gBAEnB,SAAS,EAAE,aAAa;IAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmFG;IACG,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAI5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8EG;IACG,uBAAuB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"purchase-manager.d.ts","sourceRoot":"","sources":["../../src/managers/purchase-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,KAAK,EACV,gBAAgB,EAEhB,WAAW,EAIX,gBAAgB,EACjB,MAAM,iDAAiD,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,qBAAa,eAAe;IAGd,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,cAAc,CAAiB;gBAEnB,SAAS,EAAE,aAAa;IAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmFG;IACG,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAI5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8EG;IACG,uBAAuB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IAI7H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoGG;IACG,mBAAmB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAIlG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,kBAAkB,IAAI,cAAc;CAGrC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { PaginatedResponseDTO } from '@explorins/pers-shared';
|
|
1
2
|
import { PersApiClient } from '../core/pers-api-client';
|
|
3
|
+
import { PersEventEmitter } from '../core/events';
|
|
2
4
|
import { RedemptionService } from '../redemption';
|
|
5
|
+
import { PaginationOptions } from '../shared/utils/pagination-utils';
|
|
3
6
|
import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, TokenUnitCreateRequestDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
|
|
4
7
|
/**
|
|
5
8
|
* Redemption Manager - Clean, high-level interface for redemption operations
|
|
@@ -15,7 +18,7 @@ import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, Rede
|
|
|
15
18
|
* @example Basic Redemption Operations
|
|
16
19
|
* ```typescript
|
|
17
20
|
* // Browse available redemption offers
|
|
18
|
-
* const offers = await sdk.redemptions.
|
|
21
|
+
* const { data: offers } = await sdk.redemptions.getRedemptions();
|
|
19
22
|
* console.log(`${offers.length} redemption offers available`);
|
|
20
23
|
*
|
|
21
24
|
* // Redeem a specific offer
|
|
@@ -23,7 +26,7 @@ import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, Rede
|
|
|
23
26
|
* console.log('Redemption successful:', redemptionResult.success);
|
|
24
27
|
*
|
|
25
28
|
* // Check redemption history
|
|
26
|
-
* const history = await sdk.redemptions.getUserRedemptions();
|
|
29
|
+
* const { data: history } = await sdk.redemptions.getUserRedemptions();
|
|
27
30
|
* console.log(`You have redeemed ${history.length} offers`);
|
|
28
31
|
* ```
|
|
29
32
|
*
|
|
@@ -64,49 +67,106 @@ import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, Rede
|
|
|
64
67
|
*/
|
|
65
68
|
export declare class RedemptionManager {
|
|
66
69
|
private apiClient;
|
|
70
|
+
private events?;
|
|
67
71
|
private redemptionService;
|
|
68
|
-
constructor(apiClient: PersApiClient);
|
|
72
|
+
constructor(apiClient: PersApiClient, events?: PersEventEmitter | undefined);
|
|
69
73
|
/**
|
|
70
|
-
* Get
|
|
74
|
+
* Get redemption offers
|
|
71
75
|
*
|
|
72
|
-
* Retrieves
|
|
73
|
-
*
|
|
74
|
-
* 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:
|
|
75
78
|
*
|
|
76
|
-
*
|
|
79
|
+
* **Regular Users:** See only active redemption offers available for purchase
|
|
80
|
+
* **Administrators:** Can see all redemptions and filter by active/inactive status
|
|
77
81
|
*
|
|
78
|
-
*
|
|
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
|
|
79
92
|
* ```typescript
|
|
80
|
-
*
|
|
93
|
+
* // Regular users automatically see only active offers
|
|
94
|
+
* const { data: offers, pagination } = await sdk.redemptions.getRedemptions();
|
|
81
95
|
*
|
|
82
|
-
* console.log('
|
|
83
|
-
*
|
|
96
|
+
* console.log('Available Redemption Offers:');
|
|
97
|
+
* console.log(`Showing ${offers.length} of ${pagination.total} offers`);
|
|
98
|
+
*
|
|
99
|
+
* offers.forEach(offer => {
|
|
84
100
|
* console.log(`\n${offer.title}`);
|
|
85
|
-
* console.log(
|
|
86
|
-
* console.log(
|
|
101
|
+
* console.log(`${offer.description}`);
|
|
102
|
+
* console.log(`Type: ${offer.redemptionType?.name || 'General'}`);
|
|
87
103
|
*
|
|
88
104
|
* if (offer.tokenUnits?.length) {
|
|
89
|
-
* console.log('
|
|
105
|
+
* console.log('Cost:');
|
|
90
106
|
* offer.tokenUnits.forEach(unit => {
|
|
91
107
|
* console.log(` ${unit.amount} ${unit.token.symbol}`);
|
|
92
108
|
* });
|
|
93
109
|
* }
|
|
94
110
|
*
|
|
95
111
|
* if (offer.availableQuantity !== undefined) {
|
|
96
|
-
* console.log(
|
|
112
|
+
* console.log(`Available: ${offer.availableQuantity}`);
|
|
97
113
|
* }
|
|
98
114
|
* });
|
|
99
115
|
*
|
|
100
116
|
* // Filter offers by affordability
|
|
101
|
-
* const userBalance = 1000;
|
|
102
|
-
* const affordableOffers =
|
|
117
|
+
* const userBalance = 1000;
|
|
118
|
+
* const affordableOffers = offers.filter(offer =>
|
|
103
119
|
* offer.tokenUnits?.every(unit => unit.amount <= userBalance)
|
|
104
120
|
* );
|
|
105
121
|
*
|
|
106
|
-
* 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
|
+
* }
|
|
107
165
|
* ```
|
|
108
166
|
*/
|
|
109
|
-
|
|
167
|
+
getRedemptions(options?: {
|
|
168
|
+
active?: boolean;
|
|
169
|
+
} & PaginationOptions): Promise<PaginatedResponseDTO<RedemptionDTO>>;
|
|
110
170
|
/**
|
|
111
171
|
* Get available redemption types
|
|
112
172
|
*
|
|
@@ -114,13 +174,13 @@ export declare class RedemptionManager {
|
|
|
114
174
|
* rewards and offers. Types help users navigate and filter redemption options
|
|
115
175
|
* based on their preferences and needs.
|
|
116
176
|
*
|
|
117
|
-
* @returns Promise resolving to
|
|
177
|
+
* @returns Promise resolving to paginated redemption type definitions
|
|
118
178
|
*
|
|
119
179
|
* @example
|
|
120
180
|
* ```typescript
|
|
121
|
-
* const redemptionTypes = await sdk.redemptions.getRedemptionTypes();
|
|
181
|
+
* const { data: redemptionTypes } = await sdk.redemptions.getRedemptionTypes();
|
|
122
182
|
*
|
|
123
|
-
* console.log('
|
|
183
|
+
* console.log('Redemption Categories:');
|
|
124
184
|
* redemptionTypes.forEach(type => {
|
|
125
185
|
* console.log(`- ${type.name}: ${type.description}`);
|
|
126
186
|
* });
|
|
@@ -141,7 +201,7 @@ export declare class RedemptionManager {
|
|
|
141
201
|
* );
|
|
142
202
|
* ```
|
|
143
203
|
*/
|
|
144
|
-
getRedemptionTypes(): Promise<RedemptionTypeDTO
|
|
204
|
+
getRedemptionTypes(options?: PaginationOptions): Promise<PaginatedResponseDTO<RedemptionTypeDTO>>;
|
|
145
205
|
/**
|
|
146
206
|
* Redeem a redemption offer
|
|
147
207
|
*
|
|
@@ -160,30 +220,30 @@ export declare class RedemptionManager {
|
|
|
160
220
|
* const result = await sdk.redemptions.redeem('coffee-voucher-123');
|
|
161
221
|
*
|
|
162
222
|
* if (result.success) {
|
|
163
|
-
* console.log('
|
|
223
|
+
* console.log('Redemption Successful!');
|
|
164
224
|
* console.log('Confirmation ID:', result.id);
|
|
165
225
|
* console.log('Redeemed at:', result.redeemedAt);
|
|
166
226
|
*
|
|
167
227
|
* // Display redemption details
|
|
168
228
|
* if (result.voucherCode) {
|
|
169
|
-
* console.log('
|
|
229
|
+
* console.log('Voucher Code:', result.voucherCode);
|
|
170
230
|
* console.log('Present this code to redeem your reward');
|
|
171
231
|
* }
|
|
172
232
|
*
|
|
173
233
|
* if (result.instructions) {
|
|
174
|
-
* console.log('
|
|
234
|
+
* console.log('Instructions:', result.instructions);
|
|
175
235
|
* }
|
|
176
236
|
*
|
|
177
237
|
* // Show tokens deducted
|
|
178
238
|
* if (result.tokensUsed?.length) {
|
|
179
|
-
* console.log('\
|
|
239
|
+
* console.log('\nTokens Used:');
|
|
180
240
|
* result.tokensUsed.forEach(token => {
|
|
181
241
|
* console.log(`- ${token.amount} ${token.symbol}`);
|
|
182
242
|
* });
|
|
183
243
|
* }
|
|
184
244
|
*
|
|
185
245
|
* } else {
|
|
186
|
-
* console.log('
|
|
246
|
+
* console.log('Redemption failed:', result.error);
|
|
187
247
|
* }
|
|
188
248
|
*
|
|
189
249
|
* } catch (error) {
|
|
@@ -191,9 +251,9 @@ export declare class RedemptionManager {
|
|
|
191
251
|
*
|
|
192
252
|
* // Handle specific error cases
|
|
193
253
|
* if (error.message.includes('insufficient')) {
|
|
194
|
-
* console.log('
|
|
254
|
+
* console.log('You need more loyalty points for this redemption');
|
|
195
255
|
* } else if (error.message.includes('unavailable')) {
|
|
196
|
-
* console.log('
|
|
256
|
+
* console.log('This offer is no longer available');
|
|
197
257
|
* }
|
|
198
258
|
* }
|
|
199
259
|
* ```
|
|
@@ -201,7 +261,7 @@ export declare class RedemptionManager {
|
|
|
201
261
|
* @example Redemption with Pre-Validation
|
|
202
262
|
* ```typescript
|
|
203
263
|
* // Get offer details first
|
|
204
|
-
* const offers = await sdk.redemptions.
|
|
264
|
+
* const { data: offers } = await sdk.redemptions.getRedemptions();
|
|
205
265
|
* const targetOffer = offers.find(o => o.id === 'premium-discount');
|
|
206
266
|
*
|
|
207
267
|
* if (targetOffer) {
|
|
@@ -229,25 +289,25 @@ export declare class RedemptionManager {
|
|
|
229
289
|
* completed. Includes redemption details, timestamps, voucher codes, and
|
|
230
290
|
* token usage. Useful for user account history and support purposes.
|
|
231
291
|
*
|
|
232
|
-
* @returns Promise resolving to
|
|
292
|
+
* @returns Promise resolving to paginated user redemption records
|
|
233
293
|
*
|
|
234
294
|
* @example
|
|
235
295
|
* ```typescript
|
|
236
|
-
* const userRedemptions = await sdk.redemptions.getUserRedemptions();
|
|
296
|
+
* const { data: userRedemptions, pagination } = await sdk.redemptions.getUserRedemptions();
|
|
237
297
|
*
|
|
238
|
-
* console.log(
|
|
298
|
+
* console.log(`Redemption History (${userRedemptions.length} of ${pagination.total} items):`);
|
|
239
299
|
*
|
|
240
300
|
* userRedemptions.forEach((redemption, index) => {
|
|
241
301
|
* console.log(`\n${index + 1}. ${redemption.redemption.title}`);
|
|
242
|
-
* console.log(`
|
|
243
|
-
* console.log(`
|
|
302
|
+
* console.log(` Date: ${new Date(redemption.redeemedAt).toLocaleDateString()}`);
|
|
303
|
+
* console.log(` Type: ${redemption.redemption.redemptionType?.name || 'General'}`);
|
|
244
304
|
*
|
|
245
305
|
* if (redemption.voucherCode) {
|
|
246
|
-
* console.log(`
|
|
306
|
+
* console.log(` Voucher: ${redemption.voucherCode}`);
|
|
247
307
|
* }
|
|
248
308
|
*
|
|
249
309
|
* if (redemption.tokensUsed?.length) {
|
|
250
|
-
* console.log(`
|
|
310
|
+
* console.log(` Cost:`);
|
|
251
311
|
* redemption.tokensUsed.forEach(token => {
|
|
252
312
|
* console.log(` ${token.amount} ${token.symbol}`);
|
|
253
313
|
* });
|
|
@@ -255,7 +315,7 @@ export declare class RedemptionManager {
|
|
|
255
315
|
*
|
|
256
316
|
* // Show status if available
|
|
257
317
|
* if (redemption.status) {
|
|
258
|
-
* console.log(`
|
|
318
|
+
* console.log(` Status: ${redemption.status}`);
|
|
259
319
|
* }
|
|
260
320
|
* });
|
|
261
321
|
*
|
|
@@ -265,7 +325,7 @@ export declare class RedemptionManager {
|
|
|
265
325
|
* new Date(r.redeemedAt) > new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)
|
|
266
326
|
* ).length;
|
|
267
327
|
*
|
|
268
|
-
* console.log(`\
|
|
328
|
+
* console.log(`\nStatistics:`);
|
|
269
329
|
* console.log(`Total redemptions: ${totalRedemptions}`);
|
|
270
330
|
* console.log(`This month: ${recentRedemptions}`);
|
|
271
331
|
*
|
|
@@ -276,59 +336,13 @@ export declare class RedemptionManager {
|
|
|
276
336
|
* return acc;
|
|
277
337
|
* }, {});
|
|
278
338
|
*
|
|
279
|
-
* console.log(`\
|
|
339
|
+
* console.log(`\nBy category:`);
|
|
280
340
|
* Object.entries(byType).forEach(([type, count]) => {
|
|
281
341
|
* console.log(`${type}: ${count} redemptions`);
|
|
282
342
|
* });
|
|
283
343
|
* ```
|
|
284
344
|
*/
|
|
285
|
-
getUserRedemptions(): Promise<RedemptionRedeemDTO
|
|
286
|
-
/**
|
|
287
|
-
* Admin: Get all redemptions
|
|
288
|
-
*
|
|
289
|
-
* Retrieves all redemption offers in the system regardless of status. This
|
|
290
|
-
* operation requires administrator privileges and is used for comprehensive
|
|
291
|
-
* redemption management, reporting, and lifecycle operations.
|
|
292
|
-
*
|
|
293
|
-
* @param active - Optional filter to show only active or inactive redemptions
|
|
294
|
-
* @returns Promise resolving to array of all redemptions
|
|
295
|
-
* @throws {PersApiError} When not authenticated as administrator
|
|
296
|
-
*
|
|
297
|
-
* @example
|
|
298
|
-
* ```typescript
|
|
299
|
-
* // Admin operation - get redemption overview
|
|
300
|
-
* const allRedemptions = await sdk.redemptions.getAllRedemptions();
|
|
301
|
-
* const activeRedemptions = await sdk.redemptions.getAllRedemptions(true);
|
|
302
|
-
* const inactiveRedemptions = await sdk.redemptions.getAllRedemptions(false);
|
|
303
|
-
*
|
|
304
|
-
* console.log('📊 Redemption Inventory:');
|
|
305
|
-
* console.log(`Total offers: ${allRedemptions.length}`);
|
|
306
|
-
* console.log(`Active offers: ${activeRedemptions.length}`);
|
|
307
|
-
* console.log(`Inactive offers: ${inactiveRedemptions.length}`);
|
|
308
|
-
*
|
|
309
|
-
* // Analyze offers by type
|
|
310
|
-
* const offersByType = allRedemptions.reduce((acc, offer) => {
|
|
311
|
-
* const type = offer.redemptionType?.name || 'Unspecified';
|
|
312
|
-
* acc[type] = (acc[type] || 0) + 1;
|
|
313
|
-
* return acc;
|
|
314
|
-
* }, {});
|
|
315
|
-
*
|
|
316
|
-
* console.log('\n🏷️ Offers by type:');
|
|
317
|
-
* Object.entries(offersByType).forEach(([type, count]) => {
|
|
318
|
-
* console.log(`${type}: ${count} offers`);
|
|
319
|
-
* });
|
|
320
|
-
*
|
|
321
|
-
* // Find offers needing attention
|
|
322
|
-
* const lowStock = allRedemptions.filter(offer =>
|
|
323
|
-
* offer.availableQuantity && offer.availableQuantity < 10
|
|
324
|
-
* );
|
|
325
|
-
*
|
|
326
|
-
* if (lowStock.length > 0) {
|
|
327
|
-
* console.log(`\n⚠️ ${lowStock.length} offers running low on stock`);
|
|
328
|
-
* }
|
|
329
|
-
* ```
|
|
330
|
-
*/
|
|
331
|
-
getAllRedemptions(active?: boolean): Promise<RedemptionDTO[]>;
|
|
345
|
+
getUserRedemptions(options?: PaginationOptions): Promise<PaginatedResponseDTO<RedemptionRedeemDTO>>;
|
|
332
346
|
/**
|
|
333
347
|
* Admin: Create new redemption offer
|
|
334
348
|
*
|
|
@@ -353,7 +367,7 @@ export declare class RedemptionManager {
|
|
|
353
367
|
* validUntil: '2024-08-31T23:59:59Z'
|
|
354
368
|
* });
|
|
355
369
|
*
|
|
356
|
-
* console.log('
|
|
370
|
+
* console.log('New redemption created:', newRedemption.title);
|
|
357
371
|
* console.log('Redemption ID:', newRedemption.id);
|
|
358
372
|
*
|
|
359
373
|
* // Set redemption cost
|
|
@@ -363,7 +377,7 @@ export declare class RedemptionManager {
|
|
|
363
377
|
* type: 'COST'
|
|
364
378
|
* });
|
|
365
379
|
*
|
|
366
|
-
* console.log('
|
|
380
|
+
* console.log('Cost set: 750 loyalty points');
|
|
367
381
|
* ```
|
|
368
382
|
*/
|
|
369
383
|
createRedemption(redemptionData: RedemptionCreateRequestDTO): Promise<RedemptionDTO>;
|
|
@@ -411,7 +425,7 @@ export declare class RedemptionManager {
|
|
|
411
425
|
* const updated = await sdk.redemptions.toggleRedemptionStatus('seasonal-offer');
|
|
412
426
|
*
|
|
413
427
|
* console.log(`Redemption ${updated.isActive ? 'activated' : 'deactivated'}`);
|
|
414
|
-
* console.log('Status:', updated.isActive ? '
|
|
428
|
+
* console.log('Status:', updated.isActive ? 'Available' : 'Unavailable');
|
|
415
429
|
*
|
|
416
430
|
* // Reactivate when ready
|
|
417
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,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;
|
|
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"}
|