@explorins/pers-sdk 1.6.4 → 1.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +63 -37
  2. package/dist/analytics/index.d.ts +0 -16
  3. package/dist/analytics/index.d.ts.map +1 -1
  4. package/dist/analytics.cjs +5 -73
  5. package/dist/analytics.cjs.map +1 -1
  6. package/dist/analytics.js +1 -72
  7. package/dist/analytics.js.map +1 -1
  8. package/dist/business/index.d.ts +0 -24
  9. package/dist/business/index.d.ts.map +1 -1
  10. package/dist/business.cjs +5 -273
  11. package/dist/business.cjs.map +1 -1
  12. package/dist/business.js +1 -272
  13. package/dist/business.js.map +1 -1
  14. package/dist/campaign/api/campaign-api.d.ts +3 -3
  15. package/dist/campaign/api/campaign-api.d.ts.map +1 -1
  16. package/dist/campaign/index.d.ts +0 -34
  17. package/dist/campaign/index.d.ts.map +1 -1
  18. package/dist/campaign.cjs +5 -447
  19. package/dist/campaign.cjs.map +1 -1
  20. package/dist/campaign.js +1 -446
  21. package/dist/campaign.js.map +1 -1
  22. package/dist/chunks/analytics-service-CitlimKJ.cjs +49 -0
  23. package/dist/chunks/analytics-service-CitlimKJ.cjs.map +1 -0
  24. package/dist/chunks/analytics-service-CxyrOwel.js +46 -0
  25. package/dist/chunks/analytics-service-CxyrOwel.js.map +1 -0
  26. package/dist/chunks/{token-sdk-BW4kkJb3.js → base-token-service-BSXDwrcq.js} +138 -204
  27. package/dist/chunks/base-token-service-BSXDwrcq.js.map +1 -0
  28. package/dist/chunks/{token-sdk-CiAbOb6c.cjs → base-token-service-CYuqPPs0.cjs} +140 -207
  29. package/dist/chunks/base-token-service-CYuqPPs0.cjs.map +1 -0
  30. package/dist/chunks/business-service-Cq3-oksM.cjs +241 -0
  31. package/dist/chunks/business-service-Cq3-oksM.cjs.map +1 -0
  32. package/dist/chunks/business-service-DrC-TNGa.js +238 -0
  33. package/dist/chunks/business-service-DrC-TNGa.js.map +1 -0
  34. package/dist/chunks/campaign-service-CWK9I388.cjs +403 -0
  35. package/dist/chunks/campaign-service-CWK9I388.cjs.map +1 -0
  36. package/dist/chunks/campaign-service-Dd7gMjC9.js +400 -0
  37. package/dist/chunks/campaign-service-Dd7gMjC9.js.map +1 -0
  38. package/dist/chunks/donation-service-CyJS4DIZ.js +47 -0
  39. package/dist/chunks/donation-service-CyJS4DIZ.js.map +1 -0
  40. package/dist/chunks/donation-service-D-xFrONi.cjs +50 -0
  41. package/dist/chunks/donation-service-D-xFrONi.cjs.map +1 -0
  42. package/dist/chunks/{index-CJ9Jfa4A.js → explorer.utils-Ckll15ja.js} +108 -172
  43. package/dist/chunks/explorer.utils-Ckll15ja.js.map +1 -0
  44. package/dist/chunks/{index-CzEluQmf.cjs → explorer.utils-GpskbLl1.cjs} +106 -174
  45. package/dist/chunks/explorer.utils-GpskbLl1.cjs.map +1 -0
  46. package/dist/chunks/index-BtDNXaFq.js +13 -0
  47. package/dist/chunks/index-BtDNXaFq.js.map +1 -0
  48. package/dist/chunks/index-CMk3Aqkk.cjs +15 -0
  49. package/dist/chunks/index-CMk3Aqkk.cjs.map +1 -0
  50. package/dist/chunks/payment-service-B4qx0qiE.cjs +220 -0
  51. package/dist/chunks/payment-service-B4qx0qiE.cjs.map +1 -0
  52. package/dist/chunks/payment-service-DfCBFosx.js +217 -0
  53. package/dist/chunks/payment-service-DfCBFosx.js.map +1 -0
  54. package/dist/chunks/pers-sdk-CajYwGkL.cjs +5850 -0
  55. package/dist/chunks/pers-sdk-CajYwGkL.cjs.map +1 -0
  56. package/dist/chunks/pers-sdk-eO4XUi8w.js +5817 -0
  57. package/dist/chunks/pers-sdk-eO4XUi8w.js.map +1 -0
  58. package/dist/chunks/redemption-service-7qbeQxEM.cjs +330 -0
  59. package/dist/chunks/redemption-service-7qbeQxEM.cjs.map +1 -0
  60. package/dist/chunks/redemption-service-BT0J5Iy7.js +327 -0
  61. package/dist/chunks/redemption-service-BT0J5Iy7.js.map +1 -0
  62. package/dist/chunks/tenant-service-Ba7xrWED.cjs +171 -0
  63. package/dist/chunks/tenant-service-Ba7xrWED.cjs.map +1 -0
  64. package/dist/chunks/tenant-service-DELk412y.js +168 -0
  65. package/dist/chunks/tenant-service-DELk412y.js.map +1 -0
  66. package/dist/chunks/token-service-BWScn8Qa.cjs +208 -0
  67. package/dist/chunks/token-service-BWScn8Qa.cjs.map +1 -0
  68. package/dist/chunks/token-service-CpVwC5Eb.js +205 -0
  69. package/dist/chunks/token-service-CpVwC5Eb.js.map +1 -0
  70. package/dist/chunks/user-service-D1Rn4U8u.cjs +153 -0
  71. package/dist/chunks/user-service-D1Rn4U8u.cjs.map +1 -0
  72. package/dist/chunks/user-service-D6mTa_WZ.js +150 -0
  73. package/dist/chunks/user-service-D6mTa_WZ.js.map +1 -0
  74. package/dist/chunks/{index-BfOoX87y.cjs → web3-chain-service-BYkj61DN.cjs} +1 -33
  75. package/dist/chunks/web3-chain-service-BYkj61DN.cjs.map +1 -0
  76. package/dist/chunks/{index-CM21r58m.js → web3-chain-service-DN6tJmvK.js} +2 -31
  77. package/dist/chunks/web3-chain-service-DN6tJmvK.js.map +1 -0
  78. package/dist/core/auth/auth-provider.interface.d.ts +32 -69
  79. package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
  80. package/dist/core/auth/default-auth-provider.d.ts +15 -58
  81. package/dist/core/auth/default-auth-provider.d.ts.map +1 -1
  82. package/dist/core/auth/index.d.ts +10 -12
  83. package/dist/core/auth/index.d.ts.map +1 -1
  84. package/dist/core/auth/refresh-manager.d.ts +18 -0
  85. package/dist/core/auth/refresh-manager.d.ts.map +1 -0
  86. package/dist/core/auth/services/auth-service.d.ts +11 -6
  87. package/dist/core/auth/services/auth-service.d.ts.map +1 -1
  88. package/dist/core/auth/token-storage.d.ts +27 -47
  89. package/dist/core/auth/token-storage.d.ts.map +1 -1
  90. package/dist/core/errors/index.d.ts +1 -5
  91. package/dist/core/errors/index.d.ts.map +1 -1
  92. package/dist/core/index.d.ts +4 -1
  93. package/dist/core/index.d.ts.map +1 -1
  94. package/dist/core/pers-api-client.d.ts +10 -126
  95. package/dist/core/pers-api-client.d.ts.map +1 -1
  96. package/dist/core/pers-config.d.ts +8 -3
  97. package/dist/core/pers-config.d.ts.map +1 -1
  98. package/dist/core/utils/jwt.function.d.ts.map +1 -1
  99. package/dist/core.cjs +22 -17
  100. package/dist/core.cjs.map +1 -1
  101. package/dist/core.js +13 -13
  102. package/dist/donation/index.d.ts +0 -15
  103. package/dist/donation/index.d.ts.map +1 -1
  104. package/dist/donation.cjs +5 -75
  105. package/dist/donation.cjs.map +1 -1
  106. package/dist/donation.js +1 -74
  107. package/dist/donation.js.map +1 -1
  108. package/dist/index.cjs +51 -56
  109. package/dist/index.cjs.map +1 -1
  110. package/dist/index.js +16 -15
  111. package/dist/index.js.map +1 -1
  112. package/dist/managers/analytics-manager.d.ts +290 -10
  113. package/dist/managers/analytics-manager.d.ts.map +1 -1
  114. package/dist/managers/auth-manager.d.ts +123 -23
  115. package/dist/managers/auth-manager.d.ts.map +1 -1
  116. package/dist/managers/business-manager.d.ts +273 -18
  117. package/dist/managers/business-manager.d.ts.map +1 -1
  118. package/dist/managers/campaign-manager.d.ts +585 -46
  119. package/dist/managers/campaign-manager.d.ts.map +1 -1
  120. package/dist/managers/donation-manager.d.ts +5 -5
  121. package/dist/managers/donation-manager.d.ts.map +1 -1
  122. package/dist/managers/file-manager.d.ts +430 -13
  123. package/dist/managers/file-manager.d.ts.map +1 -1
  124. package/dist/managers/purchase-manager.d.ts +340 -15
  125. package/dist/managers/purchase-manager.d.ts.map +1 -1
  126. package/dist/managers/redemption-manager.d.ts +450 -27
  127. package/dist/managers/redemption-manager.d.ts.map +1 -1
  128. package/dist/managers/tenant-manager.d.ts +5 -5
  129. package/dist/managers/tenant-manager.d.ts.map +1 -1
  130. package/dist/managers/token-manager.d.ts +245 -21
  131. package/dist/managers/token-manager.d.ts.map +1 -1
  132. package/dist/managers/transaction-manager.d.ts +447 -18
  133. package/dist/managers/transaction-manager.d.ts.map +1 -1
  134. package/dist/managers/user-manager.d.ts +216 -14
  135. package/dist/managers/user-manager.d.ts.map +1 -1
  136. package/dist/managers/web3-manager.d.ts +4 -4
  137. package/dist/managers/web3-manager.d.ts.map +1 -1
  138. package/dist/package.json +9 -2
  139. package/dist/payment/index.d.ts +0 -21
  140. package/dist/payment/index.d.ts.map +1 -1
  141. package/dist/payment.cjs +5 -255
  142. package/dist/payment.cjs.map +1 -1
  143. package/dist/payment.js +1 -254
  144. package/dist/payment.js.map +1 -1
  145. package/dist/pers-sdk.d.ts +141 -34
  146. package/dist/pers-sdk.d.ts.map +1 -1
  147. package/dist/redemption/index.d.ts +0 -25
  148. package/dist/redemption/index.d.ts.map +1 -1
  149. package/dist/redemption.cjs +5 -365
  150. package/dist/redemption.cjs.map +1 -1
  151. package/dist/redemption.js +1 -364
  152. package/dist/redemption.js.map +1 -1
  153. package/dist/tenant/index.d.ts +0 -22
  154. package/dist/tenant/index.d.ts.map +1 -1
  155. package/dist/tenant.cjs +5 -203
  156. package/dist/tenant.cjs.map +1 -1
  157. package/dist/tenant.js +1 -202
  158. package/dist/tenant.js.map +1 -1
  159. package/dist/token.cjs +6 -6
  160. package/dist/token.js +2 -2
  161. package/dist/transaction/index.d.ts +0 -22
  162. package/dist/transaction/index.d.ts.map +1 -1
  163. package/dist/transaction.cjs +0 -40
  164. package/dist/transaction.cjs.map +1 -1
  165. package/dist/transaction.js +1 -40
  166. package/dist/transaction.js.map +1 -1
  167. package/dist/user/index.d.ts +0 -25
  168. package/dist/user/index.d.ts.map +1 -1
  169. package/dist/user.cjs +5 -185
  170. package/dist/user.cjs.map +1 -1
  171. package/dist/user.js +1 -184
  172. package/dist/user.js.map +1 -1
  173. package/dist/web3/index.d.ts +0 -11
  174. package/dist/web3/index.d.ts.map +1 -1
  175. package/dist/web3-chain/index.d.ts +0 -9
  176. package/dist/web3-chain/index.d.ts.map +1 -1
  177. package/dist/web3-chain/services/getWeb3FCD.service.d.ts.map +1 -1
  178. package/dist/web3-chain.cjs +5 -5
  179. package/dist/web3-chain.js +2 -1
  180. package/dist/web3-chain.js.map +1 -1
  181. package/dist/web3.cjs +6 -10
  182. package/dist/web3.cjs.map +1 -1
  183. package/dist/web3.js +1 -4
  184. package/dist/web3.js.map +1 -1
  185. package/package.json +9 -2
  186. package/dist/chunks/base-token-service-D0KANDgM.js +0 -139
  187. package/dist/chunks/base-token-service-D0KANDgM.js.map +0 -1
  188. package/dist/chunks/base-token-service-zNfPjHRx.cjs +0 -141
  189. package/dist/chunks/base-token-service-zNfPjHRx.cjs.map +0 -1
  190. package/dist/chunks/index-BfOoX87y.cjs.map +0 -1
  191. package/dist/chunks/index-CJ9Jfa4A.js.map +0 -1
  192. package/dist/chunks/index-CM21r58m.js.map +0 -1
  193. package/dist/chunks/index-CzEluQmf.cjs.map +0 -1
  194. package/dist/chunks/pers-sdk-DbPwFKrf.cjs +0 -3378
  195. package/dist/chunks/pers-sdk-DbPwFKrf.cjs.map +0 -1
  196. package/dist/chunks/pers-sdk-Z6MKeFBX.js +0 -3353
  197. package/dist/chunks/pers-sdk-Z6MKeFBX.js.map +0 -1
  198. package/dist/chunks/token-sdk-BW4kkJb3.js.map +0 -1
  199. package/dist/chunks/token-sdk-CiAbOb6c.cjs.map +0 -1
  200. package/dist/core/auth/auth-constants.d.ts +0 -33
  201. package/dist/core/auth/auth-constants.d.ts.map +0 -1
  202. package/dist/core/auth/auth-errors.d.ts +0 -8
  203. package/dist/core/auth/auth-errors.d.ts.map +0 -1
  204. package/dist/core/auth/create-auth-provider.d.ts +0 -27
  205. package/dist/core/auth/create-auth-provider.d.ts.map +0 -1
  206. package/dist/core/auth/token-refresh.d.ts +0 -91
  207. package/dist/core/auth/token-refresh.d.ts.map +0 -1
@@ -1,91 +1,514 @@
1
1
  import { PersApiClient } from '../core/pers-api-client';
2
- import { RedemptionSDK } from '../redemption';
2
+ import { RedemptionService } from '../redemption';
3
3
  import type { RedemptionDTO, RedemptionCreateRequestDTO, RedemptionTypeDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, TokenUnitCreateRequestDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
4
4
  /**
5
5
  * Redemption Manager - Clean, high-level interface for redemption operations
6
6
  *
7
- * Provides a simplified API for common redemption management tasks while maintaining
8
- * access to the full redemption SDK for advanced use cases.
7
+ * Provides a comprehensive API for loyalty redemption management including discovering
8
+ * available rewards, redeeming offers, tracking redemption history, and administrative
9
+ * redemption lifecycle operations. Redemptions convert loyalty tokens into valuable
10
+ * rewards, discounts, and benefits for users in the loyalty ecosystem.
11
+ *
12
+ * @group Managers
13
+ * @category Redemption Management
14
+ *
15
+ * @example Basic Redemption Operations
16
+ * ```typescript
17
+ * // Browse available redemption offers
18
+ * const offers = await sdk.redemptions.getActiveRedemptions();
19
+ * console.log(`${offers.length} redemption offers available`);
20
+ *
21
+ * // Redeem a specific offer
22
+ * const redemptionResult = await sdk.redemptions.redeemOffer('discount-10-percent');
23
+ * console.log('Redemption successful:', redemptionResult.success);
24
+ *
25
+ * // Check redemption history
26
+ * const history = await sdk.redemptions.getUserRedemptions();
27
+ * console.log(`You have redeemed ${history.length} offers`);
28
+ * ```
29
+ *
30
+ * @example Redemption Discovery
31
+ * ```typescript
32
+ * // Get available redemption types/categories
33
+ * const types = await sdk.redemptions.getRedemptionTypes();
34
+ *
35
+ * // Browse offers by category
36
+ * const discounts = offers.filter(offer =>
37
+ * offer.redemptionType?.name?.includes('Discount')
38
+ * );
39
+ *
40
+ * const products = offers.filter(offer =>
41
+ * offer.redemptionType?.name?.includes('Product')
42
+ * );
43
+ *
44
+ * console.log(`${discounts.length} discounts, ${products.length} products available`);
45
+ * ```
46
+ *
47
+ * @example Administrative Operations
48
+ * ```typescript
49
+ * // Admin: Create new redemption offer
50
+ * const newOffer = await sdk.redemptions.createRedemption({
51
+ * title: 'Free Coffee Voucher',
52
+ * description: 'Redeem for one free coffee at partner cafes',
53
+ * redemptionTypeId: 'voucher-type-id',
54
+ * isActive: true
55
+ * });
56
+ *
57
+ * // Admin: Set redemption cost
58
+ * await sdk.redemptions.createRedemptionTokenUnit(newOffer.id, {
59
+ * tokenId: 'loyalty-points',
60
+ * amount: 250,
61
+ * type: 'COST'
62
+ * });
63
+ * ```
9
64
  */
10
65
  export declare class RedemptionManager {
11
66
  private apiClient;
12
- private redemptionSDK;
67
+ private redemptionService;
13
68
  constructor(apiClient: PersApiClient);
14
69
  /**
15
70
  * Get all active redemption offers
16
71
  *
17
- * @returns Promise resolving to array of active redemptions
72
+ * Retrieves all currently available redemption offers that users can discover
73
+ * and redeem. Active redemptions include discounts, vouchers, products, and
74
+ * services that can be purchased using loyalty tokens.
75
+ *
76
+ * @returns Promise resolving to array of active redemption offers
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const activeOffers = await sdk.redemptions.getActiveRedemptions();
81
+ *
82
+ * console.log('🎁 Available Redemption Offers:');
83
+ * activeOffers.forEach(offer => {
84
+ * console.log(`\n${offer.title}`);
85
+ * console.log(`📝 ${offer.description}`);
86
+ * console.log(`🏷️ Type: ${offer.redemptionType?.name || 'General'}`);
87
+ *
88
+ * if (offer.tokenUnits?.length) {
89
+ * console.log('💰 Cost:');
90
+ * offer.tokenUnits.forEach(unit => {
91
+ * console.log(` ${unit.amount} ${unit.token.symbol}`);
92
+ * });
93
+ * }
94
+ *
95
+ * if (offer.availableQuantity !== undefined) {
96
+ * console.log(`📦 Available: ${offer.availableQuantity}`);
97
+ * }
98
+ * });
99
+ *
100
+ * // Filter offers by affordability
101
+ * const userBalance = 1000; // User's loyalty points
102
+ * const affordableOffers = activeOffers.filter(offer =>
103
+ * offer.tokenUnits?.every(unit => unit.amount <= userBalance)
104
+ * );
105
+ *
106
+ * console.log(`\n💡 ${affordableOffers.length} offers within your budget`);
107
+ * ```
18
108
  */
19
109
  getActiveRedemptions(): Promise<RedemptionDTO[]>;
20
110
  /**
21
111
  * Get available redemption types
22
112
  *
23
- * @returns Promise resolving to array of redemption types
113
+ * Retrieves all redemption type categories that classify different kinds of
114
+ * rewards and offers. Types help users navigate and filter redemption options
115
+ * based on their preferences and needs.
116
+ *
117
+ * @returns Promise resolving to array of redemption type definitions
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * const redemptionTypes = await sdk.redemptions.getRedemptionTypes();
122
+ *
123
+ * console.log('🏷️ Redemption Categories:');
124
+ * redemptionTypes.forEach(type => {
125
+ * console.log(`- ${type.name}: ${type.description}`);
126
+ * });
127
+ *
128
+ * // Use for filtering UI
129
+ * const typeFilter = redemptionTypes.map(type => ({
130
+ * id: type.id,
131
+ * label: type.name,
132
+ * description: type.description
133
+ * }));
134
+ *
135
+ * // Find specific redemption types
136
+ * const discountType = redemptionTypes.find(t =>
137
+ * t.name.toLowerCase().includes('discount')
138
+ * );
139
+ * const voucherType = redemptionTypes.find(t =>
140
+ * t.name.toLowerCase().includes('voucher')
141
+ * );
142
+ * ```
24
143
  */
25
144
  getRedemptionTypes(): Promise<RedemptionTypeDTO[]>;
26
145
  /**
27
146
  * Redeem a redemption offer
28
147
  *
29
- * @param redemptionId - ID of the redemption to redeem
30
- * @returns Promise resolving to redemption result
148
+ * Executes the redemption of a specific offer for the authenticated user.
149
+ * This action validates eligibility, deducts required tokens, and provides
150
+ * redemption confirmation details. Creates a permanent redemption record
151
+ * and may generate voucher codes or instructions.
152
+ *
153
+ * @param redemptionId - ID of the redemption offer to redeem
154
+ * @returns Promise resolving to redemption result with confirmation details
155
+ * @throws {PersApiError} When redemption is not available or user lacks required tokens
156
+ *
157
+ * @example Basic Redemption
158
+ * ```typescript
159
+ * try {
160
+ * const result = await sdk.redemptions.redeemOffer('coffee-voucher-123');
161
+ *
162
+ * if (result.success) {
163
+ * console.log('✅ Redemption Successful!');
164
+ * console.log('Confirmation ID:', result.id);
165
+ * console.log('Redeemed at:', result.redeemedAt);
166
+ *
167
+ * // Display redemption details
168
+ * if (result.voucherCode) {
169
+ * console.log('🎫 Voucher Code:', result.voucherCode);
170
+ * console.log('Present this code to redeem your reward');
171
+ * }
172
+ *
173
+ * if (result.instructions) {
174
+ * console.log('📋 Instructions:', result.instructions);
175
+ * }
176
+ *
177
+ * // Show tokens deducted
178
+ * if (result.tokensUsed?.length) {
179
+ * console.log('\n💸 Tokens Used:');
180
+ * result.tokensUsed.forEach(token => {
181
+ * console.log(`- ${token.amount} ${token.symbol}`);
182
+ * });
183
+ * }
184
+ *
185
+ * } else {
186
+ * console.log('❌ Redemption failed:', result.error);
187
+ * }
188
+ *
189
+ * } catch (error) {
190
+ * console.log('Redemption error:', error.message);
191
+ *
192
+ * // Handle specific error cases
193
+ * if (error.message.includes('insufficient')) {
194
+ * console.log('💰 You need more loyalty points for this redemption');
195
+ * } else if (error.message.includes('unavailable')) {
196
+ * console.log('😔 This offer is no longer available');
197
+ * }
198
+ * }
199
+ * ```
200
+ *
201
+ * @example Redemption with Pre-Validation
202
+ * ```typescript
203
+ * // Get offer details first
204
+ * const offers = await sdk.redemptions.getActiveRedemptions();
205
+ * const targetOffer = offers.find(o => o.id === 'premium-discount');
206
+ *
207
+ * if (targetOffer) {
208
+ * // Check if user can afford the redemption
209
+ * const userTokens = await sdk.users.getUserTokenBalances();
210
+ * const canAfford = targetOffer.tokenUnits?.every(unit => {
211
+ * const userBalance = userTokens.find(t => t.tokenId === unit.tokenId);
212
+ * return userBalance && userBalance.amount >= unit.amount;
213
+ * });
214
+ *
215
+ * if (canAfford) {
216
+ * const result = await sdk.redemptions.redeemOffer(targetOffer.id);
217
+ * console.log('Redemption processed:', result.success);
218
+ * } else {
219
+ * console.log('Insufficient tokens for this redemption');
220
+ * }
221
+ * }
222
+ * ```
31
223
  */
32
224
  redeemOffer(redemptionId: string): Promise<RedemptionRedeemRequestResponseDTO>;
33
225
  /**
34
226
  * Get user's redemption history
35
227
  *
36
- * @returns Promise resolving to array of user's redemptions
228
+ * Retrieves all redemptions that the authenticated user has successfully
229
+ * completed. Includes redemption details, timestamps, voucher codes, and
230
+ * token usage. Useful for user account history and support purposes.
231
+ *
232
+ * @returns Promise resolving to array of user's redemption records
233
+ *
234
+ * @example
235
+ * ```typescript
236
+ * const userRedemptions = await sdk.redemptions.getUserRedemptions();
237
+ *
238
+ * console.log(`📜 Redemption History (${userRedemptions.length} items):`);
239
+ *
240
+ * userRedemptions.forEach((redemption, index) => {
241
+ * console.log(`\n${index + 1}. ${redemption.redemption.title}`);
242
+ * console.log(` 📅 Date: ${new Date(redemption.redeemedAt).toLocaleDateString()}`);
243
+ * console.log(` 🏷️ Type: ${redemption.redemption.redemptionType?.name || 'General'}`);
244
+ *
245
+ * if (redemption.voucherCode) {
246
+ * console.log(` 🎫 Voucher: ${redemption.voucherCode}`);
247
+ * }
248
+ *
249
+ * if (redemption.tokensUsed?.length) {
250
+ * console.log(` 💸 Cost:`);
251
+ * redemption.tokensUsed.forEach(token => {
252
+ * console.log(` ${token.amount} ${token.symbol}`);
253
+ * });
254
+ * }
255
+ *
256
+ * // Show status if available
257
+ * if (redemption.status) {
258
+ * console.log(` 📊 Status: ${redemption.status}`);
259
+ * }
260
+ * });
261
+ *
262
+ * // Calculate redemption statistics
263
+ * const totalRedemptions = userRedemptions.length;
264
+ * const recentRedemptions = userRedemptions.filter(r =>
265
+ * new Date(r.redeemedAt) > new Date(Date.now() - 30 * 24 * 60 * 60 * 1000)
266
+ * ).length;
267
+ *
268
+ * console.log(`\n📊 Statistics:`);
269
+ * console.log(`Total redemptions: ${totalRedemptions}`);
270
+ * console.log(`This month: ${recentRedemptions}`);
271
+ *
272
+ * // Group by redemption type
273
+ * const byType = userRedemptions.reduce((acc, r) => {
274
+ * const type = r.redemption.redemptionType?.name || 'Other';
275
+ * acc[type] = (acc[type] || 0) + 1;
276
+ * return acc;
277
+ * }, {});
278
+ *
279
+ * console.log(`\n📈 By category:`);
280
+ * Object.entries(byType).forEach(([type, count]) => {
281
+ * console.log(`${type}: ${count} redemptions`);
282
+ * });
283
+ * ```
37
284
  */
38
285
  getUserRedemptions(): Promise<RedemptionRedeemDTO[]>;
39
286
  /**
40
287
  * Admin: Get all redemptions
41
288
  *
42
- * @param active - Filter by active status
43
- * @returns Promise resolving to array of redemptions
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
+ * ```
44
330
  */
45
331
  getAllRedemptions(active?: boolean): Promise<RedemptionDTO[]>;
46
332
  /**
47
333
  * Admin: Create new redemption offer
48
334
  *
49
- * @param redemptionData - Redemption data
50
- * @returns Promise resolving to created redemption
335
+ * Creates a new redemption offer in the loyalty system. This operation requires
336
+ * administrator privileges and establishes a new reward option that users can
337
+ * purchase with their loyalty tokens.
338
+ *
339
+ * @param redemptionData - Redemption configuration including title, description, and settings
340
+ * @returns Promise resolving to created redemption offer
341
+ * @throws {PersApiError} When not authenticated as admin or validation fails
342
+ *
343
+ * @example
344
+ * ```typescript
345
+ * // Admin operation - create discount redemption
346
+ * const newRedemption = await sdk.redemptions.createRedemption({
347
+ * title: '20% Off Weekend Stay',
348
+ * description: 'Get 20% off your next weekend booking at partner hotels',
349
+ * redemptionTypeId: 'discount-type-id',
350
+ * isActive: true,
351
+ * availableQuantity: 100,
352
+ * validFrom: '2024-06-01T00:00:00Z',
353
+ * validUntil: '2024-08-31T23:59:59Z'
354
+ * });
355
+ *
356
+ * console.log('✅ New redemption created:', newRedemption.title);
357
+ * console.log('Redemption ID:', newRedemption.id);
358
+ *
359
+ * // Set redemption cost
360
+ * await sdk.redemptions.createRedemptionTokenUnit(newRedemption.id, {
361
+ * tokenId: 'loyalty-points',
362
+ * amount: 750,
363
+ * type: 'COST'
364
+ * });
365
+ *
366
+ * console.log('💰 Cost set: 750 loyalty points');
367
+ * ```
51
368
  */
52
369
  createRedemption(redemptionData: RedemptionCreateRequestDTO): Promise<RedemptionDTO>;
53
370
  /**
54
371
  * Admin: Update redemption
55
372
  *
56
- * @param redemptionId - ID of redemption to update
57
- * @param redemptionData - Updated redemption data
58
- * @returns Promise resolving to updated redemption
373
+ * Updates an existing redemption offer's configuration, availability, or
374
+ * description. This operation requires administrator privileges and can modify
375
+ * most redemption properties while preserving existing redemption history.
376
+ *
377
+ * @param redemptionId - ID of the redemption to update
378
+ * @param redemptionData - Updated redemption configuration
379
+ * @returns Promise resolving to updated redemption offer
380
+ * @throws {PersApiError} When not authenticated as admin or redemption not found
381
+ *
382
+ * @example
383
+ * ```typescript
384
+ * // Admin operation - update redemption details
385
+ * const updated = await sdk.redemptions.updateRedemption('weekend-discount', {
386
+ * title: '25% Off Weekend Stay - Extended!',
387
+ * description: 'Enhanced discount - now 25% off weekend bookings',
388
+ * availableQuantity: 150, // Increased availability
389
+ * validUntil: '2024-09-30T23:59:59Z' // Extended validity
390
+ * });
391
+ *
392
+ * console.log('Redemption updated:', updated.title);
393
+ * console.log('New quantity available:', updated.availableQuantity);
394
+ * ```
59
395
  */
60
396
  updateRedemption(redemptionId: string, redemptionData: RedemptionCreateRequestDTO): Promise<RedemptionDTO>;
61
397
  /**
62
398
  * Admin: Toggle redemption active status
63
399
  *
64
- * @param redemptionId - ID of redemption to toggle
65
- * @returns Promise resolving to updated redemption
400
+ * Toggles the active/inactive status of a redemption offer. Inactive redemptions
401
+ * are not available for new purchases but existing redemptions remain valid.
402
+ * Requires administrator privileges.
403
+ *
404
+ * @param redemptionId - ID of the redemption to toggle
405
+ * @returns Promise resolving to updated redemption offer
406
+ * @throws {PersApiError} When not authenticated as admin or redemption not found
407
+ *
408
+ * @example
409
+ * ```typescript
410
+ * // Admin operation - temporarily disable redemption
411
+ * const updated = await sdk.redemptions.toggleRedemptionStatus('seasonal-offer');
412
+ *
413
+ * console.log(`Redemption ${updated.isActive ? 'activated' : 'deactivated'}`);
414
+ * console.log('Status:', updated.isActive ? '✅ Available' : '❌ Unavailable');
415
+ *
416
+ * // Reactivate when ready
417
+ * if (!updated.isActive) {
418
+ * console.log('Use the same method to reactivate when ready');
419
+ * }
420
+ * ```
66
421
  */
67
422
  toggleRedemptionStatus(redemptionId: string): Promise<RedemptionDTO>;
68
423
  /**
69
424
  * Admin: Create redemption token unit
70
425
  *
71
- * @param redemptionId - ID of redemption
72
- * @param tokenUnit - Token unit data
73
- * @returns Promise resolving to updated redemption
426
+ * Adds a token cost requirement to a redemption offer, specifying the type
427
+ * and amount of loyalty tokens needed to redeem the offer. Multiple token
428
+ * units can be added to create complex pricing structures. Requires
429
+ * administrator privileges.
430
+ *
431
+ * @param redemptionId - ID of the redemption
432
+ * @param tokenUnit - Token unit configuration including token type and amount
433
+ * @returns Promise resolving to updated redemption offer
434
+ * @throws {PersApiError} When not authenticated as admin or validation fails
435
+ *
436
+ * @example
437
+ * ```typescript
438
+ * // Admin operation - set redemption cost
439
+ * const updated = await sdk.redemptions.createRedemptionTokenUnit('premium-voucher', {
440
+ * tokenId: 'loyalty-points',
441
+ * amount: 1500,
442
+ * type: 'COST'
443
+ * });
444
+ *
445
+ * console.log('Token cost added to redemption');
446
+ * console.log('Cost: 1500 loyalty points');
447
+ * console.log('Total cost units:', updated.tokenUnits?.length);
448
+ *
449
+ * // Add additional cost type (e.g., premium currency)
450
+ * await sdk.redemptions.createRedemptionTokenUnit('premium-voucher', {
451
+ * tokenId: 'premium-credits',
452
+ * amount: 50,
453
+ * type: 'ADDITIONAL_COST'
454
+ * });
455
+ * ```
74
456
  */
75
457
  createRedemptionTokenUnit(redemptionId: string, tokenUnit: TokenUnitCreateRequestDTO): Promise<RedemptionDTO>;
76
458
  /**
77
459
  * Admin: Delete redemption token unit
78
460
  *
79
- * @param redemptionId - ID of redemption
80
- * @param tokenUnitId - ID of token unit to delete
81
- * @returns Promise resolving to updated redemption
461
+ * Removes a token cost requirement from a redemption offer. This affects
462
+ * the pricing of future redemptions but does not impact already completed
463
+ * redemptions. Requires administrator privileges.
464
+ *
465
+ * @param redemptionId - ID of the redemption
466
+ * @param tokenUnitId - ID of the token unit to remove
467
+ * @returns Promise resolving to updated redemption offer
468
+ * @throws {PersApiError} When not authenticated as admin or entities not found
469
+ *
470
+ * @example
471
+ * ```typescript
472
+ * // Admin operation - remove token cost from redemption
473
+ * const updated = await sdk.redemptions.deleteRedemptionTokenUnit(
474
+ * 'special-offer',
475
+ * 'token-unit-123'
476
+ * );
477
+ *
478
+ * console.log('Token cost removed from redemption');
479
+ * console.log('Remaining cost units:', updated.tokenUnits?.length);
480
+ * ```
82
481
  */
83
482
  deleteRedemptionTokenUnit(redemptionId: string, tokenUnitId: string): Promise<RedemptionDTO>;
84
483
  /**
85
- * Get the full redemption SDK for advanced operations
484
+ * Get the full redemption service for advanced operations
485
+ *
486
+ * Provides access to the complete RedemptionService instance for advanced
487
+ * redemption operations, custom validation, analytics, and operations not
488
+ * covered by the high-level manager methods.
489
+ *
490
+ * @returns RedemptionService instance with full API access
491
+ *
492
+ * @example Advanced Operations
493
+ * ```typescript
494
+ * const redemptionService = sdk.redemptions.getRedemptionService();
495
+ *
496
+ * // Access advanced redemption analytics
497
+ * const analytics = await redemptionService.getRedemptionAnalytics();
498
+ *
499
+ * // Access custom validation rules
500
+ * const eligibility = await redemptionService.validateRedemptionEligibility(
501
+ * 'user-123',
502
+ * 'redemption-456'
503
+ * );
504
+ *
505
+ * // Access redemption API directly
506
+ * const redemptionApi = redemptionService.api;
86
507
  *
87
- * @returns RedemptionSDK instance
508
+ * // Use advanced inventory management
509
+ * const inventory = await redemptionService.getInventoryStatus();
510
+ * ```
88
511
  */
89
- getRedemptionSDK(): RedemptionSDK;
512
+ getRedemptionService(): RedemptionService;
90
513
  }
91
514
  //# sourceMappingURL=redemption-manager.d.ts.map
@@ -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,EAAuB,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,kCAAkC,EAClC,yBAAyB,EAC1B,MAAM,iDAAiD,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,aAAa,CAAgB;gBAEjB,SAAS,EAAE,aAAa;IAI5C;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAItD;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIxD;;;;;OAKG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAIpF;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAI1D;;;;;OAKG;IACG,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInE;;;;;OAKG;IACG,gBAAgB,CAAC,cAAc,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1F;;;;;;OAMG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAIhH;;;;;OAKG;IACG,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI1E;;;;;;OAMG;IACG,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,yBAAyB,GAAG,OAAO,CAAC,aAAa,CAAC;IAInH;;;;;;OAMG;IACG,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAIlG;;;;OAIG;IACH,gBAAgB,IAAI,aAAa;CAGlC"}
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;IAGhB,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,iBAAiB,CAAoB;gBAEzB,SAAS,EAAE,aAAa;IAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACG,oBAAoB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAItD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8EG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;IAIpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACG,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAI1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACG,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAInE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,5 @@
1
1
  import { PersApiClient } from '../core/pers-api-client';
2
- import { TenantSDK } from '../tenant';
2
+ import { TenantService } from '../tenant';
3
3
  import type { TenantPublicDTO, TenantClientConfigDTO, AdminDTO } from '../shared/interfaces/pers-shared-lib.interfaces';
4
4
  import type { AdminCreateRequestDTO } from '../tenant/models';
5
5
  /**
@@ -10,7 +10,7 @@ import type { AdminCreateRequestDTO } from '../tenant/models';
10
10
  */
11
11
  export declare class TenantManager {
12
12
  private apiClient;
13
- private tenantSDK;
13
+ private tenantService;
14
14
  constructor(apiClient: PersApiClient);
15
15
  /**
16
16
  * Get current tenant information
@@ -59,10 +59,10 @@ export declare class TenantManager {
59
59
  */
60
60
  updateAdmin(adminId: string, adminData: AdminCreateRequestDTO): Promise<AdminDTO>;
61
61
  /**
62
- * Get the full tenant SDK for advanced operations
62
+ * Get the tenant service for advanced operations
63
63
  *
64
- * @returns TenantSDK instance
64
+ * @returns TenantService instance
65
65
  */
66
- getTenantSDK(): TenantSDK;
66
+ getTenantService(): TenantService;
67
67
  }
68
68
  //# sourceMappingURL=tenant-manager.d.ts.map
@@ -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,EAAmB,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,KAAK,EAEV,eAAe,EACf,qBAAqB,EACrB,QAAQ,EACT,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;;;;GAKG;AACH,qBAAa,aAAa;IAGZ,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,SAAS,CAAY;gBAET,SAAS,EAAE,aAAa;IAI5C;;;;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;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAItC;;;;;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,YAAY,IAAI,SAAS;CAG1B"}
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,EACT,MAAM,iDAAiD,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;;;;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;;;;OAIG;IACG,SAAS,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAItC;;;;;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"}