@explorins/pers-sdk 1.6.4 → 1.6.9

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 (212) hide show
  1. package/README.md +86 -342
  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-Bd6BZHgt.js +5672 -0
  55. package/dist/chunks/pers-sdk-Bd6BZHgt.js.map +1 -0
  56. package/dist/chunks/pers-sdk-CmyPEhy7.cjs +5705 -0
  57. package/dist/chunks/pers-sdk-CmyPEhy7.cjs.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-D75TcHkh.cjs} +28 -53
  75. package/dist/chunks/web3-chain-service-D75TcHkh.cjs.map +1 -0
  76. package/dist/chunks/{index-CM21r58m.js → web3-chain-service-Dp5Z8p9I.js} +28 -51
  77. package/dist/chunks/web3-chain-service-Dp5Z8p9I.js.map +1 -0
  78. package/dist/core/auth/api/auth-api.d.ts +11 -14
  79. package/dist/core/auth/api/auth-api.d.ts.map +1 -1
  80. package/dist/core/auth/auth-provider.interface.d.ts +36 -68
  81. package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
  82. package/dist/core/auth/default-auth-provider.d.ts +13 -59
  83. package/dist/core/auth/default-auth-provider.d.ts.map +1 -1
  84. package/dist/core/auth/index.d.ts +8 -14
  85. package/dist/core/auth/index.d.ts.map +1 -1
  86. package/dist/core/auth/refresh-manager.d.ts +15 -0
  87. package/dist/core/auth/refresh-manager.d.ts.map +1 -0
  88. package/dist/core/auth/services/auth-service.d.ts +15 -21
  89. package/dist/core/auth/services/auth-service.d.ts.map +1 -1
  90. package/dist/core/auth/token-storage.d.ts +26 -48
  91. package/dist/core/auth/token-storage.d.ts.map +1 -1
  92. package/dist/core/environment.d.ts +2 -4
  93. package/dist/core/environment.d.ts.map +1 -1
  94. package/dist/core/errors/index.d.ts +1 -5
  95. package/dist/core/errors/index.d.ts.map +1 -1
  96. package/dist/core/index.d.ts +4 -3
  97. package/dist/core/index.d.ts.map +1 -1
  98. package/dist/core/pers-api-client.d.ts +14 -156
  99. package/dist/core/pers-api-client.d.ts.map +1 -1
  100. package/dist/core/pers-config.d.ts +13 -12
  101. package/dist/core/pers-config.d.ts.map +1 -1
  102. package/dist/core/utils/jwt.function.d.ts +9 -0
  103. package/dist/core/utils/jwt.function.d.ts.map +1 -1
  104. package/dist/core.cjs +22 -18
  105. package/dist/core.cjs.map +1 -1
  106. package/dist/core.js +13 -14
  107. package/dist/core.js.map +1 -1
  108. package/dist/donation/index.d.ts +0 -15
  109. package/dist/donation/index.d.ts.map +1 -1
  110. package/dist/donation.cjs +5 -75
  111. package/dist/donation.cjs.map +1 -1
  112. package/dist/donation.js +1 -74
  113. package/dist/donation.js.map +1 -1
  114. package/dist/index.cjs +50 -56
  115. package/dist/index.cjs.map +1 -1
  116. package/dist/index.js +15 -15
  117. package/dist/managers/analytics-manager.d.ts +290 -10
  118. package/dist/managers/analytics-manager.d.ts.map +1 -1
  119. package/dist/managers/auth-manager.d.ts +123 -23
  120. package/dist/managers/auth-manager.d.ts.map +1 -1
  121. package/dist/managers/business-manager.d.ts +273 -18
  122. package/dist/managers/business-manager.d.ts.map +1 -1
  123. package/dist/managers/campaign-manager.d.ts +585 -46
  124. package/dist/managers/campaign-manager.d.ts.map +1 -1
  125. package/dist/managers/donation-manager.d.ts +5 -5
  126. package/dist/managers/donation-manager.d.ts.map +1 -1
  127. package/dist/managers/file-manager.d.ts +430 -13
  128. package/dist/managers/file-manager.d.ts.map +1 -1
  129. package/dist/managers/purchase-manager.d.ts +340 -15
  130. package/dist/managers/purchase-manager.d.ts.map +1 -1
  131. package/dist/managers/redemption-manager.d.ts +450 -27
  132. package/dist/managers/redemption-manager.d.ts.map +1 -1
  133. package/dist/managers/tenant-manager.d.ts +5 -5
  134. package/dist/managers/tenant-manager.d.ts.map +1 -1
  135. package/dist/managers/token-manager.d.ts +245 -21
  136. package/dist/managers/token-manager.d.ts.map +1 -1
  137. package/dist/managers/transaction-manager.d.ts +447 -18
  138. package/dist/managers/transaction-manager.d.ts.map +1 -1
  139. package/dist/managers/user-manager.d.ts +216 -14
  140. package/dist/managers/user-manager.d.ts.map +1 -1
  141. package/dist/managers/web3-manager.d.ts +4 -4
  142. package/dist/managers/web3-manager.d.ts.map +1 -1
  143. package/dist/package.json +10 -4
  144. package/dist/payment/index.d.ts +0 -21
  145. package/dist/payment/index.d.ts.map +1 -1
  146. package/dist/payment.cjs +5 -255
  147. package/dist/payment.cjs.map +1 -1
  148. package/dist/payment.js +1 -254
  149. package/dist/payment.js.map +1 -1
  150. package/dist/pers-sdk.d.ts +141 -34
  151. package/dist/pers-sdk.d.ts.map +1 -1
  152. package/dist/redemption/index.d.ts +0 -25
  153. package/dist/redemption/index.d.ts.map +1 -1
  154. package/dist/redemption.cjs +5 -365
  155. package/dist/redemption.cjs.map +1 -1
  156. package/dist/redemption.js +1 -364
  157. package/dist/redemption.js.map +1 -1
  158. package/dist/tenant/index.d.ts +0 -22
  159. package/dist/tenant/index.d.ts.map +1 -1
  160. package/dist/tenant.cjs +5 -203
  161. package/dist/tenant.cjs.map +1 -1
  162. package/dist/tenant.js +1 -202
  163. package/dist/tenant.js.map +1 -1
  164. package/dist/token.cjs +6 -6
  165. package/dist/token.js +2 -2
  166. package/dist/transaction/index.d.ts +0 -22
  167. package/dist/transaction/index.d.ts.map +1 -1
  168. package/dist/transaction.cjs +0 -40
  169. package/dist/transaction.cjs.map +1 -1
  170. package/dist/transaction.js +1 -40
  171. package/dist/transaction.js.map +1 -1
  172. package/dist/user/index.d.ts +0 -25
  173. package/dist/user/index.d.ts.map +1 -1
  174. package/dist/user.cjs +5 -185
  175. package/dist/user.cjs.map +1 -1
  176. package/dist/user.js +1 -184
  177. package/dist/user.js.map +1 -1
  178. package/dist/web3/index.d.ts +0 -11
  179. package/dist/web3/index.d.ts.map +1 -1
  180. package/dist/web3-chain/index.d.ts +0 -9
  181. package/dist/web3-chain/index.d.ts.map +1 -1
  182. package/dist/web3-chain/services/getWeb3FCD.service.d.ts.map +1 -1
  183. package/dist/web3-chain.cjs +5 -6
  184. package/dist/web3-chain.cjs.map +1 -1
  185. package/dist/web3-chain.js +2 -2
  186. package/dist/web3.cjs +6 -10
  187. package/dist/web3.cjs.map +1 -1
  188. package/dist/web3.js +1 -4
  189. package/dist/web3.js.map +1 -1
  190. package/package.json +10 -4
  191. package/dist/chunks/base-token-service-D0KANDgM.js +0 -139
  192. package/dist/chunks/base-token-service-D0KANDgM.js.map +0 -1
  193. package/dist/chunks/base-token-service-zNfPjHRx.cjs +0 -141
  194. package/dist/chunks/base-token-service-zNfPjHRx.cjs.map +0 -1
  195. package/dist/chunks/index-BfOoX87y.cjs.map +0 -1
  196. package/dist/chunks/index-CJ9Jfa4A.js.map +0 -1
  197. package/dist/chunks/index-CM21r58m.js.map +0 -1
  198. package/dist/chunks/index-CzEluQmf.cjs.map +0 -1
  199. package/dist/chunks/pers-sdk-DbPwFKrf.cjs +0 -3378
  200. package/dist/chunks/pers-sdk-DbPwFKrf.cjs.map +0 -1
  201. package/dist/chunks/pers-sdk-Z6MKeFBX.js +0 -3353
  202. package/dist/chunks/pers-sdk-Z6MKeFBX.js.map +0 -1
  203. package/dist/chunks/token-sdk-BW4kkJb3.js.map +0 -1
  204. package/dist/chunks/token-sdk-CiAbOb6c.cjs.map +0 -1
  205. package/dist/core/auth/auth-constants.d.ts +0 -33
  206. package/dist/core/auth/auth-constants.d.ts.map +0 -1
  207. package/dist/core/auth/auth-errors.d.ts +0 -8
  208. package/dist/core/auth/auth-errors.d.ts.map +0 -1
  209. package/dist/core/auth/create-auth-provider.d.ts +0 -27
  210. package/dist/core/auth/create-auth-provider.d.ts.map +0 -1
  211. package/dist/core/auth/token-refresh.d.ts +0 -91
  212. package/dist/core/auth/token-refresh.d.ts.map +0 -1
@@ -0,0 +1,327 @@
1
+ /**
2
+ * Platform-Agnostic Redemption API Client (UPDATED - RESTful Design)
3
+ *
4
+ * Updated to work with the new RESTful controller structure:
5
+ * - /redemptions (main redemption management)
6
+ * - /redemption-types (redemption type management)
7
+ * - /redemption-tokens (token unit management)
8
+ * - /redemption-redeems (redemption execution and history)
9
+ *
10
+ * Handles redemption operations using the PERS backend with intelligent access detection.
11
+ * Uses @explorins/pers-shared DTOs for consistency with backend.
12
+ */
13
+ class RedemptionApi {
14
+ constructor(apiClient) {
15
+ this.apiClient = apiClient;
16
+ this.basePath = '/redemptions';
17
+ this.typesPath = '/redemptions/types';
18
+ }
19
+ // ==========================================
20
+ // PUBLIC OPERATIONS (Project Key)
21
+ // ==========================================
22
+ /**
23
+ * UNIFIED: Get redemptions with intelligent access control
24
+ *
25
+ * Intelligent endpoint that adapts based on authentication:
26
+ * - Public users: Get active redemptions only
27
+ * - Admin users: Get all redemptions with optional filtering
28
+ *
29
+ * @param options.active - Filter by active status (undefined = all for admins/active for public)
30
+ * @param options.adminAccess - Force admin access (requires admin auth)
31
+ */
32
+ async getRedemptions(options) {
33
+ let url = `${this.basePath}`;
34
+ if (options?.active !== undefined) {
35
+ url += `?active=${options.active}`;
36
+ }
37
+ return this.apiClient.get(url);
38
+ }
39
+ /**
40
+ * PUBLIC: Get redemption types
41
+ *
42
+ * Updated: /redemption/type → /redemption-types
43
+ */
44
+ async getRedemptionTypes() {
45
+ return this.apiClient.get(this.typesPath);
46
+ }
47
+ /**
48
+ * PUBLIC: Get redemption by ID
49
+ *
50
+ * Updated: /redemption/:id → /redemptions/:id
51
+ */
52
+ async getRedemptionById(id) {
53
+ return this.apiClient.get(`${this.basePath}/${id}`);
54
+ }
55
+ /**
56
+ * PUBLIC: Get available supply for redemption
57
+ *
58
+ * Updated: /redemption/:id/available-supply → /redemptions/:id/supply
59
+ */
60
+ async getRedemptionAvailableSupply(id) {
61
+ const result = await this.apiClient.get(`${this.basePath}/${id}/supply`);
62
+ return result.available;
63
+ }
64
+ // ==========================================
65
+ // REDEMPTION EXECUTION (UNIFIED ENDPOINT)
66
+ // ==========================================
67
+ /**
68
+ * Execute redemption (unified endpoint)
69
+ *
70
+ * NEW: POST /redemption-redeems - Role-based processing
71
+ * - USER: Direct user redemption processing
72
+ * - ADMIN: Can process redemptions for any account type
73
+ * - BUSINESS: Process redemptions for customers
74
+ */
75
+ async redeemRedemption(redemptionId) {
76
+ const body = {
77
+ redemptionId: redemptionId,
78
+ };
79
+ return this.apiClient.post(this.basePath + '/redeems', body);
80
+ }
81
+ // ==========================================
82
+ // REDEMPTION REDEEMS QUERIES (NEW ENDPOINTS)
83
+ // ==========================================
84
+ /**
85
+ * UNIFIED: Get redemption redeems with filtering and intelligent access
86
+ *
87
+ * Role-based access with unified filtering:
88
+ * - Users: See only their own redeems (userId/businessId filters ignored)
89
+ * - Admins: Can filter by userId, businessId, or redemptionId
90
+ *
91
+ * @param filters.redemptionId - Filter by specific redemption
92
+ * @param filters.userId - Admin only: Filter by user ID
93
+ * @param filters.businessId - Admin only: Filter by business ID
94
+ * @param filters.myRedeems - Force user's own redeems (uses /me endpoint)
95
+ */
96
+ async getRedemptionRedeems(filters) {
97
+ let url = `${this.basePath}/redeems`;
98
+ // Use convenience endpoint for user's own redeems
99
+ if (filters?.myRedeems) {
100
+ url = `${this.basePath}/redeems/me`;
101
+ if (filters.redemptionId) {
102
+ url += `?redemptionId=${filters.redemptionId}`;
103
+ }
104
+ return this.apiClient.get(url);
105
+ }
106
+ // Use admin endpoint with filtering
107
+ const params = new URLSearchParams();
108
+ if (filters?.redemptionId)
109
+ params.append('redemptionId', filters.redemptionId);
110
+ if (filters?.userId)
111
+ params.append('userId', filters.userId);
112
+ if (filters?.businessId)
113
+ params.append('businessId', filters.businessId);
114
+ const queryString = params.toString();
115
+ if (queryString) {
116
+ url += `?${queryString}`;
117
+ }
118
+ return this.apiClient.get(url);
119
+ }
120
+ /**
121
+ * UNIFIED: Get specific redemption redeem by ID
122
+ */
123
+ async getRedemptionRedeemById(id) {
124
+ return this.apiClient.get(`${this.basePath}/redeems/${id}`);
125
+ }
126
+ // ==========================================
127
+ // USER OPERATIONS (JWT + Project Key)
128
+ // ==========================================
129
+ /**
130
+ * UNIFIED: Get user redemption history
131
+ *
132
+ * Uses convenience endpoint /redemption-redeems/me with optional filtering
133
+ * @param redemptionId - Optional filter by specific redemption
134
+ */
135
+ async getUserRedeems(redemptionId) {
136
+ return this.getRedemptionRedeems({ myRedeems: true, redemptionId });
137
+ }
138
+ // ==========================================
139
+ // ADMIN OPERATIONS (Tenant Admin JWT)
140
+ // ==========================================
141
+ /**
142
+ * ADMIN: Get redemptions with filtering (using intelligent endpoint)
143
+ *
144
+ * Updated: /redemption/admin → /redemptions (intelligent access detection)
145
+ * The unified endpoint will detect admin privileges and allow filtering
146
+ */
147
+ async getRedemptionsAsAdmin(active) {
148
+ return this.getRedemptions({ active, adminAccess: true });
149
+ }
150
+ /**
151
+ * ADMIN: Create redemption
152
+ *
153
+ * Updated: /redemption/admin → /redemptions
154
+ */
155
+ async createRedemption(redemption) {
156
+ return this.apiClient.post(`${this.basePath}`, redemption);
157
+ }
158
+ /**
159
+ * ADMIN: Update redemption
160
+ *
161
+ * Updated: /redemption/admin/:id → /redemptions/:id
162
+ */
163
+ async updateRedemption(id, redemptionCreateRequest) {
164
+ return this.apiClient.put(`${this.basePath}/${id}`, redemptionCreateRequest);
165
+ }
166
+ /**
167
+ * UNIFIED: Toggle redemption active status
168
+ *
169
+ * Updated: /redemption/admin/:id/toggle-active → /redemptions/:id/status
170
+ * Following standard /status pattern used across domains
171
+ */
172
+ async toggleRedemptionActive(redemptionId) {
173
+ return this.apiClient.put(`${this.basePath}/${redemptionId}/status`, {});
174
+ }
175
+ /**
176
+ * ADMIN: Delete redemption
177
+ *
178
+ * Updated: /redemption/admin/:id → /redemptions/:id
179
+ */
180
+ async deleteRedemption(id) {
181
+ return this.apiClient.delete(`${this.basePath}/${id}`);
182
+ }
183
+ /**
184
+ * ADMIN: Create redemption type
185
+ *
186
+ * Updated: /redemption/admin/type → /redemption-types
187
+ */
188
+ async createRedemptionType(redemptionType) {
189
+ return this.apiClient.post(this.typesPath, redemptionType);
190
+ }
191
+ // ==========================================
192
+ // TOKEN UNIT MANAGEMENT (Admin)
193
+ // ==========================================
194
+ /**
195
+ * ADMIN: Create redemption token unit
196
+ *
197
+ * Updated: /redemption/admin/:id/token-units → /redemption-tokens/:id/
198
+ */
199
+ async createRedemptionTokenUnit(redemptionId, redemptionTokenUnit) {
200
+ return this.apiClient.post(`${this.basePath}/${redemptionId}/tokens`, redemptionTokenUnit);
201
+ }
202
+ /**
203
+ * ADMIN: Update redemption token unit
204
+ *
205
+ * Updated: /redemption/admin/:id/token-units/:tokenUnitId → /redemption-tokens/:id/:tokenUnitId
206
+ */
207
+ async updateRedemptionTokenUnit(redemptionId, tokenUnitId, redemptionTokenUnit) {
208
+ return this.apiClient.put(`${this.basePath}/${redemptionId}/tokens/${tokenUnitId}`, redemptionTokenUnit);
209
+ }
210
+ /**
211
+ * ADMIN: Delete redemption token unit
212
+ *
213
+ * Updated: /redemption/admin/:id/token-units/:tokenUnitId → /redemption-tokens/:id/:tokenUnitId
214
+ */
215
+ async deleteRedemptionTokenUnit(redemptionId, redemptionTokenUnitId) {
216
+ return this.apiClient.delete(`${this.basePath}/${redemptionId}/tokens/${redemptionTokenUnitId}`);
217
+ }
218
+ // ==========================================
219
+ // CONVENIENCE METHODS (Legacy Support)
220
+ // ==========================================
221
+ /**
222
+ * Convenience: Get active redemptions (public access)
223
+ */
224
+ async getActiveRedemptions() {
225
+ return this.getRedemptions({ active: true });
226
+ }
227
+ }
228
+
229
+ /**
230
+ * Platform-Agnostic Redemption Service
231
+ *
232
+ * Contains redemption business logic and operations that work across platforms.
233
+ * No framework dependencies - pure TypeScript business logic.
234
+ *
235
+ * Focuses only on actual backend capabilities.
236
+ */
237
+ class RedemptionService {
238
+ constructor(redemptionApi) {
239
+ this.redemptionApi = redemptionApi;
240
+ }
241
+ // ==========================================
242
+ // PUBLIC OPERATIONS
243
+ // ==========================================
244
+ /**
245
+ * UNIFIED: Get redemptions with intelligent access control
246
+ * @param options.active - Filter by active status
247
+ * @param options.adminAccess - Force admin access
248
+ */
249
+ async getRedemptions(options) {
250
+ return this.redemptionApi.getRedemptions(options);
251
+ }
252
+ /**
253
+ * Convenience: Get active redemptions (public)
254
+ */
255
+ async getActiveRedemptions() {
256
+ return this.redemptionApi.getActiveRedemptions();
257
+ }
258
+ /**
259
+ * PUBLIC: Get redemption types
260
+ */
261
+ async getRedemptionTypes() {
262
+ return this.redemptionApi.getRedemptionTypes();
263
+ }
264
+ // ==========================================
265
+ // AUTHENTICATED OPERATIONS
266
+ // ==========================================
267
+ /**
268
+ * AUTH: Redeem a redemption
269
+ */
270
+ async redeemRedemption(redemptionId) {
271
+ return this.redemptionApi.redeemRedemption(redemptionId);
272
+ }
273
+ /**
274
+ * UNIFIED: Get redemption redeems with filtering
275
+ */
276
+ async getRedemptionRedeems(filters) {
277
+ return this.redemptionApi.getRedemptionRedeems(filters);
278
+ }
279
+ /**
280
+ * Convenience: Get user redemptions
281
+ */
282
+ async getUserRedeems() {
283
+ return this.redemptionApi.getUserRedeems();
284
+ }
285
+ // ==========================================
286
+ // ADMIN OPERATIONS
287
+ // ==========================================
288
+ /**
289
+ * Convenience: Get redemptions as admin
290
+ */
291
+ async getRedemptionsAsAdmin(active) {
292
+ return this.redemptionApi.getRedemptionsAsAdmin(active);
293
+ }
294
+ /**
295
+ * ADMIN: Create redemption
296
+ */
297
+ async createRedemption(redemption) {
298
+ return this.redemptionApi.createRedemption(redemption);
299
+ }
300
+ /**
301
+ * ADMIN: Update redemption
302
+ */
303
+ async updateRedemption(id, redemptionCreateRequest) {
304
+ return this.redemptionApi.updateRedemption(id, redemptionCreateRequest); // ✅ CORRECTED: Fixed parameter
305
+ }
306
+ /**
307
+ * ADMIN: Toggle redemption active status
308
+ */
309
+ async toggleRedemptionActive(redemptionId) {
310
+ return this.redemptionApi.toggleRedemptionActive(redemptionId);
311
+ }
312
+ /**
313
+ * ADMIN: Create redemption token unit
314
+ */
315
+ async createRedemptionTokenUnit(redemptionId, redemptionTokenUnit) {
316
+ return this.redemptionApi.createRedemptionTokenUnit(redemptionId, redemptionTokenUnit);
317
+ }
318
+ /**
319
+ * ADMIN: Delete redemption token unit
320
+ */
321
+ async deleteRedemptionTokenUnit(redemptionId, redemptionTokenUnitId) {
322
+ return this.redemptionApi.deleteRedemptionTokenUnit(redemptionId, redemptionTokenUnitId);
323
+ }
324
+ }
325
+
326
+ export { RedemptionApi as R, RedemptionService as a };
327
+ //# sourceMappingURL=redemption-service-BT0J5Iy7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redemption-service-BT0J5Iy7.js","sources":["../../src/redemption/api/redemption-api.ts","../../src/redemption/services/redemption-service.ts"],"sourcesContent":[null,null],"names":[],"mappings":"AAWA;;;;;;;;;;;AAWG;MACU,aAAa,CAAA;AACxB,IAAA,WAAA,CAAoB,SAAwB,EAAA;QAAxB,IAAA,CAAA,SAAS,GAAT,SAAS;QAEZ,IAAA,CAAA,QAAQ,GAAG,cAAc;QACzB,IAAA,CAAA,SAAS,GAAG,oBAAoB;IAHF;;;;AAS/C;;;;;;;;;AASG;IACH,MAAM,cAAc,CAAC,OAAqD,EAAA;AACxE,QAAA,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE;AAE5B,QAAA,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE;AACjC,YAAA,GAAG,IAAI,CAAA,QAAA,EAAW,OAAO,CAAC,MAAM,EAAE;QACpC;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAkB,GAAG,CAAC;IACjD;AAEA;;;;AAIG;AACH,IAAA,MAAM,kBAAkB,GAAA;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAsB,IAAI,CAAC,SAAS,CAAC;IAChE;AAEA;;;;AAIG;IACH,MAAM,iBAAiB,CAAC,EAAU,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAgB,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC;IACpE;AAEA;;;;AAIG;IACH,MAAM,4BAA4B,CAAC,EAAU,EAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAwB,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA,OAAA,CAAS,CAAC;QAC/F,OAAO,MAAM,CAAC,SAAS;IACzB;;;;AAMA;;;;;;;AAOG;IACH,MAAM,gBAAgB,CAAC,YAAoB,EAAA;AACzC,QAAA,MAAM,IAAI,GAA+B;AACvC,YAAA,YAAY,EAAE,YAAY;SAC3B;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAqC,IAAI,CAAC,QAAQ,GAAG,UAAU,EAAE,IAAI,CAAC;IAClG;;;;AAMA;;;;;;;;;;;AAWG;IACH,MAAM,oBAAoB,CAAC,OAK1B,EAAA;AAEC,QAAA,IAAI,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,UAAU;;AAEpC,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,QAAQ,aAAa;AACnC,YAAA,IAAI,OAAO,CAAC,YAAY,EAAE;AACxB,gBAAA,GAAG,IAAI,CAAA,cAAA,EAAiB,OAAO,CAAC,YAAY,EAAE;YAChD;YACA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAwB,GAAG,CAAC;QACvD;;AAGA,QAAA,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE;QAEpC,IAAI,OAAO,EAAE,YAAY;YAAE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC;QAC9E,IAAI,OAAO,EAAE,MAAM;YAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;QAC5D,IAAI,OAAO,EAAE,UAAU;YAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC;AAExE,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE;QACrC,IAAI,WAAW,EAAE;AACf,YAAA,GAAG,IAAI,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE;QAC1B;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAwB,GAAG,CAAC;IACvD;AAEA;;AAEG;IACH,MAAM,uBAAuB,CAAC,EAAU,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAsB,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,SAAA,EAAY,EAAE,CAAA,CAAE,CAAC;IAClF;;;;AAMA;;;;;AAKG;IACH,MAAM,cAAc,CAAC,YAAqB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;IACrE;;;;AAMA;;;;;AAKG;IACH,MAAM,qBAAqB,CAAC,MAAgB,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3D;AAEA;;;;AAIG;IACH,MAAM,gBAAgB,CAAC,UAAsC,EAAA;AAC3D,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,CAAE,EAAE,UAAU,CAAC;IAC3E;AAEA;;;;AAIG;AACH,IAAA,MAAM,gBAAgB,CAAC,EAAU,EAAE,uBAAmD,EAAA;AACpF,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAgB,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAA,CAAE,EAAE,uBAAuB,CAAC;IAC7F;AAEA;;;;;AAKG;IACH,MAAM,sBAAsB,CAAC,YAAoB,EAAA;AAC/C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAgB,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAA,OAAA,CAAS,EAAE,EAAE,CAAC;IACzF;AAEA;;;;AAIG;IACH,MAAM,gBAAgB,CAAC,EAAU,EAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAU,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAE,CAAC;IACjE;AAEA;;;;AAIG;IACH,MAAM,oBAAoB,CAAC,cAA8C,EAAA;AACvE,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAoB,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC;IAC/E;;;;AAMA;;;;AAIG;AACH,IAAA,MAAM,yBAAyB,CAAC,YAAoB,EAAE,mBAA8C,EAAA;AAClG,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAA,OAAA,CAAS,EAAE,mBAAmB,CAAC;IAC3G;AAEA;;;;AAIG;AACH,IAAA,MAAM,yBAAyB,CAAC,YAAoB,EAAE,WAAmB,EAAE,mBAA8C,EAAA;AACvH,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAgB,GAAG,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,YAAY,CAAA,QAAA,EAAW,WAAW,EAAE,EAAE,mBAAmB,CAAC;IACzH;AAEA;;;;AAIG;AACH,IAAA,MAAM,yBAAyB,CAAC,YAAoB,EAAE,qBAA6B,EAAA;AACjF,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAgB,CAAA,EAAG,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAA,QAAA,EAAW,qBAAqB,CAAA,CAAE,CAAC;IACjH;;;;AAMA;;AAEG;AACH,IAAA,MAAM,oBAAoB,GAAA;QACxB,OAAO,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC9C;AACD;;ACpQD;;;;;;;AAOG;MACU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAA,CAAA,aAAa,GAAb,aAAa;IAAkB;;;;AAMnD;;;;AAIG;IACH,MAAM,cAAc,CAAC,OAAqD,EAAA;QACxE,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC;IACnD;AAEA;;AAEG;AACH,IAAA,MAAM,oBAAoB,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;IAClD;AAEA;;AAEG;AACH,IAAA,MAAM,kBAAkB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE;IAChD;;;;AAMA;;AAEG;IACH,MAAM,gBAAgB,CAAC,YAAoB,EAAA;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC;IAC1D;AAEA;;AAEG;IACH,MAAM,oBAAoB,CAAC,OAK1B,EAAA;QACC,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC;IACzD;AAEA;;AAEG;AACH,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;IAC5C;;;;AAMA;;AAEG;IACH,MAAM,qBAAqB,CAAC,MAAgB,EAAA;QAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACzD;AAEA;;AAEG;IACH,MAAM,gBAAgB,CAAC,UAAsC,EAAA;QAC3D,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC;IACxD;AAEA;;AAEG;AACH,IAAA,MAAM,gBAAgB,CAAC,EAAU,EAAE,uBAAmD,EAAA;AACpF,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAC1E;AAEA;;AAEG;IACH,MAAM,sBAAsB,CAAC,YAAoB,EAAA;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,YAAY,CAAC;IAChE;AAEA;;AAEG;AACH,IAAA,MAAM,yBAAyB,CAAC,YAAoB,EAAE,mBAA8C,EAAA;QAClG,OAAO,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,YAAY,EAAE,mBAAmB,CAAC;IACxF;AAEA;;AAEG;AACH,IAAA,MAAM,yBAAyB,CAAC,YAAoB,EAAE,qBAA6B,EAAA;QACjF,OAAO,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC1F;AACD;;;;"}
@@ -0,0 +1,171 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Platform-Agnostic Tenant API Client
5
+ *
6
+ * Handles tenant and admin operations using the PERS backend.
7
+ * Updated to match new RESTful tenant controller endpoints.
8
+ *
9
+ * Note: Special header handling (bypass-auth-interceptor) should be handled by PersApiClient internally
10
+ * or through endpoint-specific configuration.
11
+ */
12
+ class TenantApi {
13
+ constructor(apiClient) {
14
+ this.apiClient = apiClient;
15
+ this.basePath = '/tenants';
16
+ this.adminPath = '/admins';
17
+ }
18
+ // ==========================================
19
+ // PUBLIC OPERATIONS
20
+ // ==========================================
21
+ /**
22
+ * API KEY: Get current tenant public information
23
+ * ✅ UPDATED: Uses /tenants/me endpoint with API key authentication
24
+ *
25
+ * Requires: X-API-Key header (handled by PersApiClient)
26
+ * Returns: Enhanced public tenant information for the authenticated project
27
+ */
28
+ async getRemoteTenant() {
29
+ // Remove cache busting - not needed for authenticated endpoint
30
+ const timestamp = Date.now().toString();
31
+ const url = `${this.basePath}/me?date=${timestamp}`;
32
+ return this.apiClient.get(url);
33
+ }
34
+ /**
35
+ * API KEY: Get remote login token
36
+ * ✅ UPDATED: Requires API key authentication
37
+ */
38
+ async getRemoteLoginToken() {
39
+ return this.apiClient.get(`${this.basePath}/login-token`);
40
+ }
41
+ /**
42
+ * API KEY: Get remote client configuration
43
+ * ✅ UPDATED: Requires API key authentication
44
+ */
45
+ async getRemoteClientConfig() {
46
+ return this.apiClient.get(`${this.basePath}/client-config`);
47
+ }
48
+ // ==========================================
49
+ // PUBLIC UNAUTHENTICATED OPERATIONS
50
+ // ==========================================
51
+ /**
52
+ * PUBLIC: Get tenant public information by ID (no auth required)
53
+ * ✅ NEW: For cases where you need public tenant info without API key
54
+ *
55
+ * @param tenantId - The tenant ID to retrieve public information for
56
+ */
57
+ async getPublicTenantById(tenantId) {
58
+ const url = `${this.basePath}/${tenantId}`;
59
+ return this.apiClient.get(url);
60
+ }
61
+ // ==========================================
62
+ // ADMIN OPERATIONS
63
+ // ==========================================
64
+ /**
65
+ * ADMIN: Update tenant information
66
+ * ✅ UPDATED: Uses PUT /tenants (admin endpoint)
67
+ */
68
+ async updateRemoteTenant(tenantData) {
69
+ return this.apiClient.put(`${this.basePath}`, tenantData);
70
+ }
71
+ /**
72
+ * ADMIN: Create new API key
73
+ * ✅ NEW: Create new API key for the tenant
74
+ */
75
+ async createApiKey(keyName) {
76
+ return this.apiClient.post(`${this.basePath}/api-keys`, { keyName });
77
+ }
78
+ /**
79
+ * ADMIN: Create new JWT token
80
+ * ✅ NEW: Create new JWT token for the tenant
81
+ */
82
+ async createJwtToken(isTestnet = false) {
83
+ return this.apiClient.post(`${this.basePath}/jwt-tokens`, { isTestnet });
84
+ }
85
+ /**
86
+ * ADMIN: Get all tenant admins
87
+ */
88
+ async getAdmins() {
89
+ return this.apiClient.get(`${this.adminPath}`);
90
+ }
91
+ /**
92
+ * ADMIN: Create new admin
93
+ */
94
+ async postAdmin(adminData) {
95
+ return this.apiClient.post(`${this.adminPath}`, adminData);
96
+ }
97
+ /**
98
+ * ADMIN: Update admin (toggle tenant association)
99
+ */
100
+ async putAdmin(adminId, adminData) {
101
+ return this.apiClient.put(`${this.adminPath}/${adminId}/tenant`, adminData);
102
+ }
103
+ }
104
+
105
+ /**
106
+ * Platform-Agnostic Tenant Service
107
+ *
108
+ * Contains tenant business logic and operations that work across platforms.
109
+ * No framework dependencies - pure TypeScript business logic.
110
+ * Matches framework TenantApiService capabilities exactly.
111
+ */
112
+ class TenantService {
113
+ constructor(tenantApi) {
114
+ this.tenantApi = tenantApi;
115
+ }
116
+ // ==========================================
117
+ // PUBLIC OPERATIONS
118
+ // ==========================================
119
+ /**
120
+ * PUBLIC: Get tenant public information
121
+ */
122
+ async getRemoteTenant() {
123
+ return this.tenantApi.getRemoteTenant();
124
+ }
125
+ /**
126
+ * PUBLIC: Get remote login token
127
+ */
128
+ async getRemoteLoginToken() {
129
+ return this.tenantApi.getRemoteLoginToken();
130
+ }
131
+ /**
132
+ * PUBLIC: Get remote client configuration
133
+ */
134
+ async getRemoteClientConfig() {
135
+ return this.tenantApi.getRemoteClientConfig();
136
+ }
137
+ // ==========================================
138
+ // ADMIN OPERATIONS
139
+ // ==========================================
140
+ /**
141
+ * ADMIN: Update tenant information
142
+ * ✅ FIXED: Uses TenantPublicDTO directly like framework
143
+ */
144
+ async updateRemoteTenant(tenantData) {
145
+ return this.tenantApi.updateRemoteTenant(tenantData);
146
+ }
147
+ /**
148
+ * ADMIN: Get all tenant admins
149
+ */
150
+ async getAdmins() {
151
+ return this.tenantApi.getAdmins();
152
+ }
153
+ /**
154
+ * ADMIN: Create new admin
155
+ * ✅ FIXED: Renamed to match framework postAdmin method
156
+ */
157
+ async postAdmin(adminData) {
158
+ return this.tenantApi.postAdmin(adminData);
159
+ }
160
+ /**
161
+ * ADMIN: Update admin (toggle tenant association)
162
+ * ✅ FIXED: Renamed to match framework putAdmin method
163
+ */
164
+ async putAdmin(adminId, adminData) {
165
+ return this.tenantApi.putAdmin(adminId, adminData);
166
+ }
167
+ }
168
+
169
+ exports.TenantApi = TenantApi;
170
+ exports.TenantService = TenantService;
171
+ //# sourceMappingURL=tenant-service-Ba7xrWED.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-service-Ba7xrWED.cjs","sources":["../../src/tenant/api/tenant-api.ts","../../src/tenant/services/tenant-service.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Platform-Agnostic Tenant API Client
3
+ *
4
+ * Handles tenant and admin operations using the PERS backend.
5
+ * Updated to match new RESTful tenant controller endpoints.
6
+ *
7
+ * Note: Special header handling (bypass-auth-interceptor) should be handled by PersApiClient internally
8
+ * or through endpoint-specific configuration.
9
+ */
10
+ class TenantApi {
11
+ constructor(apiClient) {
12
+ this.apiClient = apiClient;
13
+ this.basePath = '/tenants';
14
+ this.adminPath = '/admins';
15
+ }
16
+ // ==========================================
17
+ // PUBLIC OPERATIONS
18
+ // ==========================================
19
+ /**
20
+ * API KEY: Get current tenant public information
21
+ * ✅ UPDATED: Uses /tenants/me endpoint with API key authentication
22
+ *
23
+ * Requires: X-API-Key header (handled by PersApiClient)
24
+ * Returns: Enhanced public tenant information for the authenticated project
25
+ */
26
+ async getRemoteTenant() {
27
+ // Remove cache busting - not needed for authenticated endpoint
28
+ const timestamp = Date.now().toString();
29
+ const url = `${this.basePath}/me?date=${timestamp}`;
30
+ return this.apiClient.get(url);
31
+ }
32
+ /**
33
+ * API KEY: Get remote login token
34
+ * ✅ UPDATED: Requires API key authentication
35
+ */
36
+ async getRemoteLoginToken() {
37
+ return this.apiClient.get(`${this.basePath}/login-token`);
38
+ }
39
+ /**
40
+ * API KEY: Get remote client configuration
41
+ * ✅ UPDATED: Requires API key authentication
42
+ */
43
+ async getRemoteClientConfig() {
44
+ return this.apiClient.get(`${this.basePath}/client-config`);
45
+ }
46
+ // ==========================================
47
+ // PUBLIC UNAUTHENTICATED OPERATIONS
48
+ // ==========================================
49
+ /**
50
+ * PUBLIC: Get tenant public information by ID (no auth required)
51
+ * ✅ NEW: For cases where you need public tenant info without API key
52
+ *
53
+ * @param tenantId - The tenant ID to retrieve public information for
54
+ */
55
+ async getPublicTenantById(tenantId) {
56
+ const url = `${this.basePath}/${tenantId}`;
57
+ return this.apiClient.get(url);
58
+ }
59
+ // ==========================================
60
+ // ADMIN OPERATIONS
61
+ // ==========================================
62
+ /**
63
+ * ADMIN: Update tenant information
64
+ * ✅ UPDATED: Uses PUT /tenants (admin endpoint)
65
+ */
66
+ async updateRemoteTenant(tenantData) {
67
+ return this.apiClient.put(`${this.basePath}`, tenantData);
68
+ }
69
+ /**
70
+ * ADMIN: Create new API key
71
+ * ✅ NEW: Create new API key for the tenant
72
+ */
73
+ async createApiKey(keyName) {
74
+ return this.apiClient.post(`${this.basePath}/api-keys`, { keyName });
75
+ }
76
+ /**
77
+ * ADMIN: Create new JWT token
78
+ * ✅ NEW: Create new JWT token for the tenant
79
+ */
80
+ async createJwtToken(isTestnet = false) {
81
+ return this.apiClient.post(`${this.basePath}/jwt-tokens`, { isTestnet });
82
+ }
83
+ /**
84
+ * ADMIN: Get all tenant admins
85
+ */
86
+ async getAdmins() {
87
+ return this.apiClient.get(`${this.adminPath}`);
88
+ }
89
+ /**
90
+ * ADMIN: Create new admin
91
+ */
92
+ async postAdmin(adminData) {
93
+ return this.apiClient.post(`${this.adminPath}`, adminData);
94
+ }
95
+ /**
96
+ * ADMIN: Update admin (toggle tenant association)
97
+ */
98
+ async putAdmin(adminId, adminData) {
99
+ return this.apiClient.put(`${this.adminPath}/${adminId}/tenant`, adminData);
100
+ }
101
+ }
102
+
103
+ /**
104
+ * Platform-Agnostic Tenant Service
105
+ *
106
+ * Contains tenant business logic and operations that work across platforms.
107
+ * No framework dependencies - pure TypeScript business logic.
108
+ * Matches framework TenantApiService capabilities exactly.
109
+ */
110
+ class TenantService {
111
+ constructor(tenantApi) {
112
+ this.tenantApi = tenantApi;
113
+ }
114
+ // ==========================================
115
+ // PUBLIC OPERATIONS
116
+ // ==========================================
117
+ /**
118
+ * PUBLIC: Get tenant public information
119
+ */
120
+ async getRemoteTenant() {
121
+ return this.tenantApi.getRemoteTenant();
122
+ }
123
+ /**
124
+ * PUBLIC: Get remote login token
125
+ */
126
+ async getRemoteLoginToken() {
127
+ return this.tenantApi.getRemoteLoginToken();
128
+ }
129
+ /**
130
+ * PUBLIC: Get remote client configuration
131
+ */
132
+ async getRemoteClientConfig() {
133
+ return this.tenantApi.getRemoteClientConfig();
134
+ }
135
+ // ==========================================
136
+ // ADMIN OPERATIONS
137
+ // ==========================================
138
+ /**
139
+ * ADMIN: Update tenant information
140
+ * ✅ FIXED: Uses TenantPublicDTO directly like framework
141
+ */
142
+ async updateRemoteTenant(tenantData) {
143
+ return this.tenantApi.updateRemoteTenant(tenantData);
144
+ }
145
+ /**
146
+ * ADMIN: Get all tenant admins
147
+ */
148
+ async getAdmins() {
149
+ return this.tenantApi.getAdmins();
150
+ }
151
+ /**
152
+ * ADMIN: Create new admin
153
+ * ✅ FIXED: Renamed to match framework postAdmin method
154
+ */
155
+ async postAdmin(adminData) {
156
+ return this.tenantApi.postAdmin(adminData);
157
+ }
158
+ /**
159
+ * ADMIN: Update admin (toggle tenant association)
160
+ * ✅ FIXED: Renamed to match framework putAdmin method
161
+ */
162
+ async putAdmin(adminId, adminData) {
163
+ return this.tenantApi.putAdmin(adminId, adminData);
164
+ }
165
+ }
166
+
167
+ export { TenantApi as T, TenantService as a };
168
+ //# sourceMappingURL=tenant-service-DELk412y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-service-DELk412y.js","sources":["../../src/tenant/api/tenant-api.ts","../../src/tenant/services/tenant-service.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}