@explorins/pers-sdk-react-native 2.1.14-beta.0 → 2.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/index.d.ts +3 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useAnalytics.d.ts +1 -1
- package/dist/hooks/useAnalytics.d.ts.map +1 -1
- package/dist/hooks/useAuth.d.ts +3 -3
- package/dist/hooks/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth.js +14 -27
- package/dist/hooks/useBusiness.d.ts +3 -2
- package/dist/hooks/useBusiness.d.ts.map +1 -1
- package/dist/hooks/useBusiness.js +28 -2
- package/dist/hooks/useCampaigns.d.ts +10 -4
- package/dist/hooks/useCampaigns.d.ts.map +1 -1
- package/dist/hooks/useCampaigns.js +36 -8
- package/dist/hooks/useDonations.d.ts +1 -1
- package/dist/hooks/useDonations.d.ts.map +1 -1
- package/dist/hooks/usePurchases.d.ts +2 -2
- package/dist/hooks/usePurchases.d.ts.map +1 -1
- package/dist/hooks/useRedemptions.d.ts +10 -2
- package/dist/hooks/useRedemptions.d.ts.map +1 -1
- package/dist/hooks/useRedemptions.js +32 -4
- package/dist/hooks/useTenants.d.ts +1 -1
- package/dist/hooks/useTenants.d.ts.map +1 -1
- package/dist/hooks/useTokenBalances.d.ts +1 -1
- package/dist/hooks/useTokenBalances.d.ts.map +1 -1
- package/dist/hooks/useTokenBalances.js +1 -1
- package/dist/hooks/useTokens.d.ts +1 -1
- package/dist/hooks/useTokens.d.ts.map +1 -1
- package/dist/hooks/useTransactions.d.ts +1 -1
- package/dist/hooks/useTransactions.d.ts.map +1 -1
- package/dist/hooks/useTriggerSources.d.ts +1 -1
- package/dist/hooks/useTriggerSources.d.ts.map +1 -1
- package/dist/hooks/useUserStatus.d.ts +1 -1
- package/dist/hooks/useUserStatus.d.ts.map +1 -1
- package/dist/hooks/useUsers.d.ts +1 -1
- package/dist/hooks/useUsers.d.ts.map +1 -1
- package/dist/index-CzLxqePZ.js +7717 -0
- package/dist/index-CzLxqePZ.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1731 -284
- package/dist/index.js.map +1 -1
- package/dist/providers/PersSDKProvider.d.ts.map +1 -1
- package/dist/providers/PersSDKProvider.js +26 -37
- package/package.json +182 -182
- package/src/hooks/index.ts +5 -2
- package/src/hooks/useAnalytics.ts +1 -1
- package/src/hooks/useAuth.ts +16 -32
- package/src/hooks/useBusiness.ts +32 -3
- package/src/hooks/useCampaigns.ts +47 -12
- package/src/hooks/useDonations.ts +1 -1
- package/src/hooks/usePurchases.ts +1 -1
- package/src/hooks/useRedemptions.ts +43 -6
- package/src/hooks/useTenants.ts +1 -1
- package/src/hooks/useTokenBalances.ts +1 -1
- package/src/hooks/useTokens.ts +1 -1
- package/src/hooks/useTransactions.ts +1 -1
- package/src/hooks/useTriggerSources.ts +1 -1
- package/src/hooks/useUserStatus.ts +1 -1
- package/src/hooks/useUsers.ts +1 -1
- package/src/index.ts +6 -3
- package/src/providers/PersSDKProvider.tsx +29 -40
package/dist/hooks/index.d.ts
CHANGED
|
@@ -21,8 +21,9 @@ export type { TransactionSignerHook, SubmissionResult, AuthenticatedUser, Transa
|
|
|
21
21
|
export type { AccountOwnedTokensResult, Web3Hook } from './useWeb3';
|
|
22
22
|
export type { EventsHook, PersEvent, EventHandler, EventFilter, Unsubscribe } from './useEvents';
|
|
23
23
|
export type { TokenBalanceWithToken, UseTokenBalancesOptions, UseTokenBalancesResult } from './useTokenBalances';
|
|
24
|
-
export type { CampaignClaimFilters, CampaignHook, GetCampaignsOptions } from './useCampaigns';
|
|
25
|
-
export type { RedemptionRedeemFilters, RedemptionHook } from './useRedemptions';
|
|
24
|
+
export type { CampaignClaimFilters, CampaignFilterOptions, CampaignHook, GetCampaignsOptions } from './useCampaigns';
|
|
25
|
+
export type { RedemptionRedeemFilters, RedemptionFilterOptions, RedemptionHook, GetRedemptionsOptions } from './useRedemptions';
|
|
26
|
+
export type { BusinessFilterOptions, BusinessHook } from './useBusiness';
|
|
26
27
|
export type { TransactionQueryOptions, TransactionHook } from './useTransactions';
|
|
27
28
|
export type { TriggerSourceQueryOptions, TriggerSourceHook } from './useTriggerSources';
|
|
28
29
|
export type { AnalyticsHook } from './useAnalytics';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,IAAI,iBAAiB,EACnC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,IAAI,iBAAiB,EACnC,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrH,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGhI,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGzE,YAAY,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGlF,YAAY,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxF,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TransactionAnalyticsRequestDTO, TransactionAnalyticsResponseDTO, CampaignClaimAnalyticsRequestDTO, CampaignClaimAnalyticsResponseDTO, UserAnalyticsRequestDTO, UserAnalyticsResponseDTO, UserRankingAnalyticsRequestDTO, UserRankingAnalyticsResponseDTO, BusinessRankingAnalyticsRequestDTO, BusinessRankingAnalyticsResponseDTO, RetentionAnalyticsRequestDTO, RetentionAnalyticsResponseDTO } from '@explorins/pers-
|
|
1
|
+
import { TransactionAnalyticsRequestDTO, TransactionAnalyticsResponseDTO, CampaignClaimAnalyticsRequestDTO, CampaignClaimAnalyticsResponseDTO, UserAnalyticsRequestDTO, UserAnalyticsResponseDTO, UserRankingAnalyticsRequestDTO, UserRankingAnalyticsResponseDTO, BusinessRankingAnalyticsRequestDTO, BusinessRankingAnalyticsResponseDTO, RetentionAnalyticsRequestDTO, RetentionAnalyticsResponseDTO } from '@explorins/pers-sdk';
|
|
2
2
|
/**
|
|
3
3
|
* React hook for analytics operations in the PERS SDK
|
|
4
4
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnalytics.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,kCAAkC,EAClC,mCAAmC,EACnC,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,
|
|
1
|
+
{"version":3,"file":"useAnalytics.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnalytics.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,+BAA+B,EAC/B,kCAAkC,EAClC,mCAAmC,EACnC,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,eAAO,MAAM,YAAY;uCAqBZ,8BAA8B,KACtC,QAAQ,+BAA+B,CAAC;yCAoChC,gCAAgC,KACxC,QAAQ,iCAAiC,CAAC;iCA+ClC,uBAAuB,KAC/B,QAAQ,wBAAwB,CAAC;+BAkDzB,8BAA8B,KACtC,QAAQ,+BAA+B,CAAC;mCAuChC,kCAAkC,KAC1C,QAAQ,mCAAmC,CAAC;sCAuCpC,4BAA4B,KACpC,QAAQ,6BAA6B,CAAC;;CAuB1C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/dist/hooks/useAuth.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { RawUserData } from '@explorins/pers-sdk/core';
|
|
2
2
|
import { AccountOwnerType } from '@explorins/pers-sdk/core';
|
|
3
|
-
import type { UserDTO,
|
|
3
|
+
import type { UserDTO, SessionAuthContextResponseDTO } from '@explorins/pers-sdk';
|
|
4
4
|
export type { RawUserData };
|
|
5
5
|
/**
|
|
6
6
|
* React hook for authentication operations in the PERS SDK
|
|
@@ -42,14 +42,14 @@ export type { RawUserData };
|
|
|
42
42
|
export declare const useAuth: () => {
|
|
43
43
|
isInitialized: boolean;
|
|
44
44
|
isAuthenticated: boolean;
|
|
45
|
-
user: UserDTO | AdminDTO | null;
|
|
45
|
+
user: UserDTO | import("@explorins/pers-sdk").AdminDTO | null;
|
|
46
46
|
login: (jwtToken: string, userType?: AccountOwnerType) => Promise<SessionAuthContextResponseDTO>;
|
|
47
47
|
loginWithRawData: (rawUserData: RawUserData) => Promise<void>;
|
|
48
48
|
logout: () => Promise<void>;
|
|
49
49
|
refreshUserData: () => Promise<void>;
|
|
50
50
|
getCurrentUser: () => Promise<UserDTO>;
|
|
51
51
|
checkIsAuthenticated: () => Promise<boolean>;
|
|
52
|
-
refreshTokens: (refreshToken?: string) => Promise<import("@explorins/pers-
|
|
52
|
+
refreshTokens: (refreshToken?: string) => Promise<import("@explorins/pers-sdk").SessionAuthResponseDTO>;
|
|
53
53
|
clearAuth: () => Promise<void>;
|
|
54
54
|
hasValidAuth: () => Promise<boolean>;
|
|
55
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../src/hooks/useAuth.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAGlF,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,OAAO;;;;sBAyByB,MAAM,aAAY,gBAAgB,KAA2B,QAAQ,6BAA6B,CAAC;oCA+BrF,WAAW,KAAG,QAAQ,IAAI,CAAC;kBA+B/C,QAAQ,IAAI,CAAC;;0BA2BL,QAAQ,OAAO,CAAC;gCAmBV,QAAQ,OAAO,CAAC;mCAqBX,MAAM;qBAmBtB,QAAQ,IAAI,CAAC;wBAoBV,QAAQ,OAAO,CAAC;CAwB5D,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC"}
|
package/dist/hooks/useAuth.js
CHANGED
|
@@ -39,7 +39,7 @@ import { AccountOwnerType } from '@explorins/pers-sdk/core';
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
export const useAuth = () => {
|
|
42
|
-
const { sdk, authProvider, isInitialized, isAuthenticated, user,
|
|
42
|
+
const { sdk, authProvider, isInitialized, isAuthenticated, user, refreshUserData } = usePersSDK();
|
|
43
43
|
/**
|
|
44
44
|
* Authenticates a user with a JWT token
|
|
45
45
|
*
|
|
@@ -62,22 +62,15 @@ export const useAuth = () => {
|
|
|
62
62
|
try {
|
|
63
63
|
// Set token in auth provider
|
|
64
64
|
await authProvider.setAccessToken(jwtToken);
|
|
65
|
-
// Perform login
|
|
65
|
+
// Perform login - emits login_success event which Provider handles
|
|
66
66
|
const result = await sdk.auth.loginWithToken(jwtToken, userType);
|
|
67
|
-
|
|
68
|
-
if (userData) {
|
|
69
|
-
setAuthenticationState(userData, true);
|
|
70
|
-
return result;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
throw new Error('No user data returned from login');
|
|
74
|
-
}
|
|
67
|
+
return result;
|
|
75
68
|
}
|
|
76
69
|
catch (error) {
|
|
77
70
|
console.error('Login failed:', error);
|
|
78
71
|
throw error;
|
|
79
72
|
}
|
|
80
|
-
}, [sdk, authProvider
|
|
73
|
+
}, [sdk, authProvider]);
|
|
81
74
|
/**
|
|
82
75
|
* Logs in a user using raw user data (direct authentication bypass)
|
|
83
76
|
*
|
|
@@ -95,25 +88,18 @@ export const useAuth = () => {
|
|
|
95
88
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
96
89
|
}
|
|
97
90
|
try {
|
|
98
|
-
// Use the raw data login
|
|
91
|
+
// Use the raw data login - emits login_success event which Provider handles
|
|
99
92
|
const result = await sdk.auth.loginWithRawData(rawUserData);
|
|
100
93
|
// Set token from result
|
|
101
94
|
if (result.accessToken) {
|
|
102
95
|
await authProvider.setAccessToken(result.accessToken);
|
|
103
96
|
}
|
|
104
|
-
const userData = result.user;
|
|
105
|
-
if (userData) {
|
|
106
|
-
setAuthenticationState(userData, true);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
throw new Error('No user data returned from raw data login');
|
|
110
|
-
}
|
|
111
97
|
}
|
|
112
98
|
catch (error) {
|
|
113
99
|
console.error('Raw data login failed:', error);
|
|
114
100
|
throw error;
|
|
115
101
|
}
|
|
116
|
-
}, [sdk, authProvider
|
|
102
|
+
}, [sdk, authProvider]);
|
|
117
103
|
/**
|
|
118
104
|
* Logs out the current user and clears authentication state
|
|
119
105
|
*
|
|
@@ -127,17 +113,18 @@ export const useAuth = () => {
|
|
|
127
113
|
* ```
|
|
128
114
|
*/
|
|
129
115
|
const logout = useCallback(async () => {
|
|
116
|
+
if (!sdk) {
|
|
117
|
+
throw new Error('SDK not initialized. Call initialize() first.');
|
|
118
|
+
}
|
|
130
119
|
try {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
setAuthenticationState(null, false);
|
|
120
|
+
// clearAuth emits logout_success event which Provider handles
|
|
121
|
+
await sdk.auth.clearAuth();
|
|
135
122
|
}
|
|
136
123
|
catch (error) {
|
|
137
124
|
console.error('Logout failed:', error);
|
|
138
125
|
throw error;
|
|
139
126
|
}
|
|
140
|
-
}, [
|
|
127
|
+
}, [sdk]);
|
|
141
128
|
/**
|
|
142
129
|
* Retrieves the current authenticated user data
|
|
143
130
|
*
|
|
@@ -211,9 +198,9 @@ export const useAuth = () => {
|
|
|
211
198
|
if (!sdk) {
|
|
212
199
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
213
200
|
}
|
|
201
|
+
// clearAuth emits logout_success event which Provider handles
|
|
214
202
|
await sdk.auth.clearAuth();
|
|
215
|
-
|
|
216
|
-
}, [sdk, setAuthenticationState]);
|
|
203
|
+
}, [sdk]);
|
|
217
204
|
/**
|
|
218
205
|
* Checks if the current authentication is valid (non-expired)
|
|
219
206
|
*
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { BusinessDTO, BusinessTypeDTO, BusinessUpdateRequestDTO, BusinessToggleActiveRequestDTO, PaginatedResponseDTO } from '@explorins/pers-
|
|
1
|
+
import type { BusinessDTO, BusinessTypeDTO, BusinessUpdateRequestDTO, BusinessToggleActiveRequestDTO, PaginatedResponseDTO, BusinessFilterOptions } from '@explorins/pers-sdk';
|
|
2
|
+
export type { BusinessFilterOptions } from '@explorins/pers-sdk';
|
|
2
3
|
/**
|
|
3
4
|
* React hook for business operations in the PERS SDK
|
|
4
5
|
*
|
|
@@ -36,7 +37,7 @@ import type { BusinessDTO, BusinessTypeDTO, BusinessUpdateRequestDTO, BusinessTo
|
|
|
36
37
|
export declare const useBusiness: () => {
|
|
37
38
|
getActiveBusinesses: () => Promise<PaginatedResponseDTO<BusinessDTO>>;
|
|
38
39
|
getBusinessTypes: () => Promise<PaginatedResponseDTO<BusinessTypeDTO>>;
|
|
39
|
-
getBusinesses: () => Promise<PaginatedResponseDTO<BusinessDTO>>;
|
|
40
|
+
getBusinesses: (options?: BusinessFilterOptions) => Promise<PaginatedResponseDTO<BusinessDTO>>;
|
|
40
41
|
getBusinessById: (businessId: string) => Promise<BusinessDTO | null>;
|
|
41
42
|
getBusinessByAccount: (accountAddress: string) => Promise<BusinessDTO>;
|
|
42
43
|
getBusinessesByType: (typeId: string) => Promise<PaginatedResponseDTO<BusinessDTO>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBusiness.d.ts","sourceRoot":"","sources":["../../src/hooks/useBusiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useBusiness.d.ts","sourceRoot":"","sources":["../../src/hooks/useBusiness.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG/K,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,WAAW;+BAgB4B,QAAQ,qBAAqB,WAAW,CAAC,CAAC;4BA2B7C,QAAQ,qBAAqB,eAAe,CAAC,CAAC;8BAsD1C,qBAAqB,KAAG,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCAxC9D,MAAM,KAAG,QAAQ,WAAW,GAAG,IAAI,CAAC;2CAsD3B,MAAM,KAAG,QAAQ,WAAW,CAAC;kCActC,MAAM,KAAG,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCA6BnD,MAAM,KAAG,QAAQ,WAAW,CAAC;iCAc9B,MAAM,gBAAgB,wBAAwB,KAAG,QAAQ,WAAW,CAAC;uCAc/D,MAAM,cAAc,8BAA8B,KAAG,QAAQ,WAAW,CAAC;;CA0BtI,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -101,12 +101,38 @@ export const useBusiness = () => {
|
|
|
101
101
|
throw error;
|
|
102
102
|
}
|
|
103
103
|
}, [sdk, isInitialized]);
|
|
104
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Admin: Get all businesses with optional filtering
|
|
106
|
+
*
|
|
107
|
+
* @param options - Filter and pagination options
|
|
108
|
+
* @returns Promise resolving to paginated businesses
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Get all businesses
|
|
113
|
+
* const { data } = await getBusinesses();
|
|
114
|
+
*
|
|
115
|
+
* // Filter by tag
|
|
116
|
+
* const tagged = await getBusinesses({ tag: 'restaurant' });
|
|
117
|
+
*
|
|
118
|
+
* // Multiple tags (OR match)
|
|
119
|
+
* const multiTag = await getBusinesses({ tag: ['restaurant', 'cafe'] });
|
|
120
|
+
*
|
|
121
|
+
* // With search and pagination
|
|
122
|
+
* const filtered = await getBusinesses({
|
|
123
|
+
* search: 'coffee',
|
|
124
|
+
* active: true,
|
|
125
|
+
* page: 1,
|
|
126
|
+
* limit: 20
|
|
127
|
+
* });
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
const getBusinesses = useCallback(async (options) => {
|
|
105
131
|
if (!isInitialized || !sdk) {
|
|
106
132
|
throw new Error('SDK not initialized. Call initialize() first.');
|
|
107
133
|
}
|
|
108
134
|
try {
|
|
109
|
-
const result = await sdk.businesses.getBusinesses();
|
|
135
|
+
const result = await sdk.businesses.getBusinesses(options);
|
|
110
136
|
return result;
|
|
111
137
|
}
|
|
112
138
|
catch (error) {
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import type { CampaignClaimRequestDTO, CampaignDTO, CampaignClaimDTO, CampaignTriggerDTO, PaginatedResponseDTO, CampaignClaimIncludeRelation, CampaignIncludeRelation, SortOrder } from '@explorins/pers-
|
|
1
|
+
import type { CampaignClaimRequestDTO, CampaignDTO, CampaignClaimDTO, CampaignTriggerDTO, PaginatedResponseDTO, CampaignClaimIncludeRelation, CampaignIncludeRelation, SortOrder } from '@explorins/pers-sdk';
|
|
2
2
|
import type { CampaignClaimFilters } from '@explorins/pers-sdk/campaign';
|
|
3
3
|
export type { CampaignClaimFilters } from '@explorins/pers-sdk/campaign';
|
|
4
|
+
export type { CampaignFilterOptions } from '@explorins/pers-sdk';
|
|
4
5
|
/**
|
|
5
6
|
* Options for fetching campaigns
|
|
7
|
+
* @deprecated Use CampaignFilterOptions from '@explorins/pers-sdk/campaign' instead
|
|
6
8
|
*/
|
|
7
9
|
export interface GetCampaignsOptions {
|
|
8
|
-
/** Filter by tag */
|
|
9
|
-
|
|
10
|
+
/** Filter by tag(s) - single tag or array for OR match */
|
|
11
|
+
tags?: string | string[];
|
|
10
12
|
/** Free text search across name and description (case-insensitive) */
|
|
11
13
|
search?: string;
|
|
12
14
|
/** Filter by business ID */
|
|
13
15
|
businessId?: string;
|
|
16
|
+
/** Filter campaigns starting on or after this date */
|
|
17
|
+
startDate?: Date | string;
|
|
18
|
+
/** Filter campaigns ending on or before this date */
|
|
19
|
+
endDate?: Date | string;
|
|
14
20
|
/** Page number (1-indexed) */
|
|
15
21
|
page?: number;
|
|
16
22
|
/** Items per page */
|
|
@@ -19,7 +25,7 @@ export interface GetCampaignsOptions {
|
|
|
19
25
|
sortBy?: 'name' | 'createdAt' | 'startDate';
|
|
20
26
|
/** Sort order */
|
|
21
27
|
sortOrder?: SortOrder;
|
|
22
|
-
/** Relations to include: 'triggerSources', 'businesses' */
|
|
28
|
+
/** Relations to include: 'triggerSources', 'businesses', 'claimCount' */
|
|
23
29
|
include?: CampaignIncludeRelation[];
|
|
24
30
|
}
|
|
25
31
|
export declare const useCampaigns: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCampaigns.d.ts","sourceRoot":"","sources":["../../src/hooks/useCampaigns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,
|
|
1
|
+
{"version":3,"file":"useCampaigns.d.ts","sourceRoot":"","sources":["../../src/hooks/useCampaigns.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,SAAS,EAGV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,qDAAqD;IACrD,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IAC5C,iBAAiB;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,yEAAyE;IACzE,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,YAAY;mCAiCX,mBAAmB,KAC5B,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCAoC/B,MAAM,YACR,uBAAuB,EAAE,KAClC,QAAQ,WAAW,GAAG,IAAI,CAAC;6BAuEoB,uBAAuB,KAAG,QAAQ,gBAAgB,GAAG,IAAI,CAAC;8BAmCzD;QACjD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,4BAA4B,EAAE,CAAC;KAC1C,KAAG,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;+BAkBD,QAAQ,qBAAqB,kBAAkB,CAAC,CAAC;gCA+CvF,mBAAmB,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KACnD,QAAQ,qBAAqB,WAAW,CAAC,CAAC;kCA8CjC,oBAAoB,YACpB,4BAA4B,EAAE,KACvC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;wCAsBxC,MAAM,YACJ,4BAA4B,EAAE,KACvC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;gDAsBpC,MAAM,YACR,4BAA4B,EAAE,KACvC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;sCA4CpC,MAAM,mBACD,MAAM,KACtB,QAAQ,WAAW,CAAC;sCA4BT,MAAM,mBACD,MAAM,KACtB,QAAQ,WAAW,CAAC;;CA+BxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -20,11 +20,15 @@ export const useCampaigns = () => {
|
|
|
20
20
|
* include: ['triggerSources', 'businesses']
|
|
21
21
|
* });
|
|
22
22
|
*
|
|
23
|
-
* // Filter by
|
|
24
|
-
* const { data } = await getActiveCampaigns({
|
|
23
|
+
* // Filter by date range
|
|
24
|
+
* const { data } = await getActiveCampaigns({
|
|
25
|
+
* startDate: '2026-05-01',
|
|
26
|
+
* endDate: '2026-12-31'
|
|
27
|
+
* });
|
|
25
28
|
*
|
|
26
|
-
* //
|
|
27
|
-
* const { data } = await getActiveCampaigns({
|
|
29
|
+
* // Get campaigns with claim count
|
|
30
|
+
* const { data } = await getActiveCampaigns({ include: ['claimCount'] });
|
|
31
|
+
* data.forEach(c => console.log(`${c.name}: ${c.claimCount} claims`));
|
|
28
32
|
* ```
|
|
29
33
|
*/
|
|
30
34
|
const getActiveCampaigns = useCallback(async (options) => {
|
|
@@ -47,7 +51,7 @@ export const useCampaigns = () => {
|
|
|
47
51
|
* Get campaign by ID with optional include relations
|
|
48
52
|
*
|
|
49
53
|
* @param campaignId - The campaign ID
|
|
50
|
-
* @param include - Relations to include: 'triggerSources', 'businesses'
|
|
54
|
+
* @param include - Relations to include: 'triggerSources', 'businesses', 'claimCount'
|
|
51
55
|
* @returns Promise resolving to campaign data
|
|
52
56
|
*
|
|
53
57
|
* @example
|
|
@@ -55,6 +59,10 @@ export const useCampaigns = () => {
|
|
|
55
59
|
* // Get campaign with all related data
|
|
56
60
|
* const campaign = await getCampaignById('campaign-123', ['triggerSources', 'businesses']);
|
|
57
61
|
* console.log('Trigger sources:', campaign.included?.triggerSources);
|
|
62
|
+
*
|
|
63
|
+
* // Get campaign with claim count
|
|
64
|
+
* const campaign = await getCampaignById('campaign-123', ['claimCount']);
|
|
65
|
+
* console.log('Total claims:', campaign.claimCount);
|
|
58
66
|
* ```
|
|
59
67
|
*/
|
|
60
68
|
const getCampaignById = useCallback(async (campaignId, include) => {
|
|
@@ -206,8 +214,13 @@ export const useCampaigns = () => {
|
|
|
206
214
|
* // Get only active campaigns with trigger sources
|
|
207
215
|
* const { data } = await getAllCampaigns({ active: true, include: ['triggerSources'] });
|
|
208
216
|
*
|
|
209
|
-
* //
|
|
210
|
-
* const { data } = await getAllCampaigns({
|
|
217
|
+
* // Filter by date range with claim count
|
|
218
|
+
* const { data } = await getAllCampaigns({
|
|
219
|
+
* startDate: '2026-05-01',
|
|
220
|
+
* endDate: '2026-12-31',
|
|
221
|
+
* include: ['claimCount']
|
|
222
|
+
* });
|
|
223
|
+
* data.forEach(c => console.log(`${c.name}: ${c.claimCount} claims`));
|
|
211
224
|
*
|
|
212
225
|
* // With pagination and sorting
|
|
213
226
|
* const { data } = await getAllCampaigns({
|
|
@@ -234,7 +247,16 @@ export const useCampaigns = () => {
|
|
|
234
247
|
/**
|
|
235
248
|
* Admin: Get campaign claims with optional filters and include relations
|
|
236
249
|
*
|
|
237
|
-
* @param filters - Optional filters for campaign, user,
|
|
250
|
+
* @param filters - Optional filters for campaign, user, business, and date range
|
|
251
|
+
* @param filters.campaignId - Filter by specific campaign ID
|
|
252
|
+
* @param filters.userId - Filter by user ID
|
|
253
|
+
* @param filters.businessId - Filter by business ID
|
|
254
|
+
* @param filters.dateFrom - Filter claims created on or after this date (ISO 8601 format)
|
|
255
|
+
* @param filters.dateTo - Filter claims created on or before this date (ISO 8601 format)
|
|
256
|
+
* @param filters.page - Page number (1-indexed)
|
|
257
|
+
* @param filters.limit - Items per page
|
|
258
|
+
* @param filters.sortBy - Field to sort by
|
|
259
|
+
* @param filters.sortOrder - Sort direction
|
|
238
260
|
* @param include - Relations to include: 'campaign', 'user', 'business'
|
|
239
261
|
* @returns Promise resolving to paginated campaign claims
|
|
240
262
|
*
|
|
@@ -245,6 +267,12 @@ export const useCampaigns = () => {
|
|
|
245
267
|
*
|
|
246
268
|
* // Get claims for a specific campaign
|
|
247
269
|
* const { data } = await getCampaignClaims({ campaignId: 'campaign-123' }, ['user', 'business']);
|
|
270
|
+
*
|
|
271
|
+
* // Filter by date range
|
|
272
|
+
* const { data } = await getCampaignClaims({
|
|
273
|
+
* dateFrom: '2026-01-01',
|
|
274
|
+
* dateTo: '2026-03-31'
|
|
275
|
+
* }, ['campaign']);
|
|
248
276
|
* ```
|
|
249
277
|
*/
|
|
250
278
|
const getCampaignClaims = useCallback(async (filters, include) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDonations.d.ts","sourceRoot":"","sources":["../../src/hooks/useDonations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useDonations.d.ts","sourceRoot":"","sources":["../../src/hooks/useDonations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,YAAY;4BAgBwB,QAAQ,qBAAqB,eAAe,CAAC,CAAC;;CAkB9F,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { PurchaseTokenDTO, PurchaseDTO, PaginatedResponseDTO } from '@explorins/pers-
|
|
1
|
+
import type { PurchaseTokenDTO, PurchaseDTO, PaginatedResponseDTO } from '@explorins/pers-sdk';
|
|
2
2
|
export declare const usePurchases: () => {
|
|
3
|
-
createPaymentIntent: (amount: number, currency: string, receiptEmail: string, description: string) => Promise<import("@explorins/pers-
|
|
3
|
+
createPaymentIntent: (amount: number, currency: string, receiptEmail: string, description: string) => Promise<import("@explorins/pers-sdk").PaymentIntentDTO>;
|
|
4
4
|
getActivePurchaseTokens: () => Promise<PaginatedResponseDTO<PurchaseTokenDTO>>;
|
|
5
5
|
getAllUserPurchases: () => Promise<PaginatedResponseDTO<PurchaseDTO>>;
|
|
6
6
|
isAvailable: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePurchases.d.ts","sourceRoot":"","sources":["../../src/hooks/usePurchases.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"usePurchases.d.ts","sourceRoot":"","sources":["../../src/hooks/usePurchases.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,eAAO,MAAM,YAAY;kCAIb,MAAM,YACJ,MAAM,gBACF,MAAM,eACP,MAAM;mCAeiC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;+BAcnD,QAAQ,qBAAqB,WAAW,CAAC,CAAC;;CAuB7F,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnStatusUpdateFn } from './useTransactionSigner';
|
|
2
|
-
import type { RedemptionCreateRequestDTO, RedemptionDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, RedemptionTypeDTO, PaginatedResponseDTO, RedemptionRedeemIncludeRelation, ProcessRecordStatus, DynamicContext, SortOrder } from '@explorins/pers-
|
|
2
|
+
import type { RedemptionCreateRequestDTO, RedemptionDTO, RedemptionRedeemDTO, RedemptionRedeemRequestResponseDTO, RedemptionTypeDTO, PaginatedResponseDTO, RedemptionRedeemIncludeRelation, RedemptionIncludeRelation, ProcessRecordStatus, DynamicContext, SortOrder } from '@explorins/pers-sdk';
|
|
3
3
|
import type { RedemptionRedeemFilters } from '@explorins/pers-sdk/redemption';
|
|
4
4
|
import type { PaginationOptions } from '@explorins/pers-sdk';
|
|
5
5
|
export type { RedemptionRedeemFilters, RedemptionFilterOptions } from '@explorins/pers-sdk/redemption';
|
|
@@ -11,12 +11,20 @@ export interface GetRedemptionsOptions {
|
|
|
11
11
|
active?: boolean;
|
|
12
12
|
/** Free text search across name, description, tags (case-insensitive) */
|
|
13
13
|
search?: string;
|
|
14
|
+
/** Filter by tag(s) - single tag or array for OR match */
|
|
15
|
+
tags?: string | string[];
|
|
16
|
+
/** Filter redemptions starting on or after this date */
|
|
17
|
+
startDate?: Date | string;
|
|
18
|
+
/** Filter redemptions ending on or before this date */
|
|
19
|
+
endDate?: Date | string;
|
|
20
|
+
/** Relations to include: 'redeemCount' */
|
|
21
|
+
include?: RedemptionIncludeRelation[];
|
|
14
22
|
/** Page number (1-indexed) */
|
|
15
23
|
page?: number;
|
|
16
24
|
/** Results per page */
|
|
17
25
|
limit?: number;
|
|
18
26
|
/** Field to sort by */
|
|
19
|
-
sortBy?: 'name' | 'createdAt';
|
|
27
|
+
sortBy?: 'name' | 'createdAt' | 'startDate';
|
|
20
28
|
/** Sort direction */
|
|
21
29
|
sortOrder?: SortOrder;
|
|
22
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRedemptions.d.ts","sourceRoot":"","sources":["../../src/hooks/useRedemptions.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,+BAA+B,EAC/B,mBAAmB,EACnB,cAAc,EACd,SAAS,EACV,MAAM,
|
|
1
|
+
{"version":3,"file":"useRedemptions.d.ts","sourceRoot":"","sources":["../../src/hooks/useRedemptions.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0C,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,KAAK,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,kCAAkC,EAClC,iBAAiB,EACjB,oBAAoB,EACpB,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,cAAc,EACd,SAAS,EACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAA2B,MAAM,gCAAgC,CAAC;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEvG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,wDAAwD;IACxD,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,uDAAuD;IACvD,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACtC,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;IAC5C,qBAAqB;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,eAAO,MAAM,cAAc;+BAqD2B,qBAAqB,KAAG,QAAQ,qBAAqB,aAAa,CAAC,CAAC;mCAyC5G;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,mBAAmB,CAAA;KAAE,YACvD,iBAAiB,YACjB,+BAA+B,EAAE,KAC1C,QAAQ,qBAAqB,mBAAmB,CAAC,CAAC;2BAkErC,MAAM,YACV;QAAE,OAAO,CAAC,EAAE,cAAc,CAAC;QAAC,cAAc,CAAC,EAAE,gBAAgB,CAAA;KAAE,KACxE,QAAQ,kCAAkC,CAAC;8BAmHG,QAAQ,qBAAqB,iBAAiB,CAAC,CAAC;qCA9BrF,uBAAuB,YACvB,+BAA+B,EAAE,KAC1C,QAAQ,qBAAqB,mBAAmB,CAAC,CAAC;uCAcO,0BAA0B,KAAG,QAAQ,aAAa,CAAC;qCA4BrD,MAAM,kBAAkB,0BAA0B,KAAG,QAAQ,aAAa,CAAC;2CAcrE,MAAM,KAAG,QAAQ,aAAa,CAAC;;;;CA4BhG,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -15,6 +15,9 @@ export const useRedemptions = () => {
|
|
|
15
15
|
* @param options - Filter and pagination options
|
|
16
16
|
* @param options.active - Filter by active status (Admin only)
|
|
17
17
|
* @param options.search - Free text search across name, description, tags
|
|
18
|
+
* @param options.startDate - Filter redemptions starting on or after this date
|
|
19
|
+
* @param options.endDate - Filter redemptions ending on or before this date
|
|
20
|
+
* @param options.include - Relations to include: 'redeemCount'
|
|
18
21
|
* @param options.page - Page number (1-indexed)
|
|
19
22
|
* @param options.limit - Results per page
|
|
20
23
|
* @param options.sortBy - Field to sort by ('name' | 'createdAt')
|
|
@@ -25,12 +28,21 @@ export const useRedemptions = () => {
|
|
|
25
28
|
* const { data: offers } = await getRedemptions();
|
|
26
29
|
* ```
|
|
27
30
|
*
|
|
28
|
-
* @example
|
|
31
|
+
* @example Filter by date range
|
|
29
32
|
* ```typescript
|
|
30
|
-
* const { data:
|
|
33
|
+
* const { data: dateFiltered } = await getRedemptions({
|
|
34
|
+
* startDate: '2026-05-01',
|
|
35
|
+
* endDate: '2026-06-30'
|
|
36
|
+
* });
|
|
31
37
|
* ```
|
|
32
38
|
*
|
|
33
|
-
* @example
|
|
39
|
+
* @example Get redemptions with redeem count
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const { data: offers } = await getRedemptions({ include: ['redeemCount'] });
|
|
42
|
+
* offers.forEach(o => console.log(`${o.name}: ${o.redeemCount} redeems`));
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @example Search with pagination
|
|
34
46
|
* ```typescript
|
|
35
47
|
* const { data, pagination } = await getRedemptions({
|
|
36
48
|
* search: 'discount',
|
|
@@ -195,7 +207,17 @@ export const useRedemptions = () => {
|
|
|
195
207
|
*
|
|
196
208
|
* Retrieves all redemption redeems across the platform with filtering.
|
|
197
209
|
*
|
|
198
|
-
* @param filters - Optional filters for user, redemption, and pagination
|
|
210
|
+
* @param filters - Optional filters for user, redemption, date range, and pagination
|
|
211
|
+
* @param filters.userId - Filter by user ID
|
|
212
|
+
* @param filters.redemptionId - Filter by redemption offer ID
|
|
213
|
+
* @param filters.businessId - Filter by business ID (admin only)
|
|
214
|
+
* @param filters.status - Filter by processing status (PENDING, PROCESSING, COMPLETED, FAILED)
|
|
215
|
+
* @param filters.dateFrom - Filter redeems created on or after this date (ISO 8601 format)
|
|
216
|
+
* @param filters.dateTo - Filter redeems created on or before this date (ISO 8601 format)
|
|
217
|
+
* @param filters.page - Page number (1-indexed)
|
|
218
|
+
* @param filters.limit - Items per page
|
|
219
|
+
* @param filters.sortBy - Field to sort by
|
|
220
|
+
* @param filters.sortOrder - Sort direction
|
|
199
221
|
* @param include - Relations to include: 'redemption', 'user', 'business'
|
|
200
222
|
* @returns Promise resolving to paginated redemption redeems
|
|
201
223
|
*
|
|
@@ -209,6 +231,12 @@ export const useRedemptions = () => {
|
|
|
209
231
|
* { userId: 'user-123' },
|
|
210
232
|
* ['redemption']
|
|
211
233
|
* );
|
|
234
|
+
*
|
|
235
|
+
* // Filter by date range
|
|
236
|
+
* const { data } = await getRedemptionRedeems({
|
|
237
|
+
* dateFrom: '2026-01-01',
|
|
238
|
+
* dateTo: '2026-03-31'
|
|
239
|
+
* }, ['user', 'redemption']);
|
|
212
240
|
* ```
|
|
213
241
|
*/
|
|
214
242
|
const getRedemptionRedeems = useCallback(async (filters, include) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TenantPublicDTO, TenantClientConfigDTO, AdminDTO, PaginatedResponseDTO } from '@explorins/pers-
|
|
1
|
+
import type { TenantPublicDTO, TenantClientConfigDTO, AdminDTO, PaginatedResponseDTO } from '@explorins/pers-sdk';
|
|
2
2
|
export declare const useTenants: () => {
|
|
3
3
|
getTenantInfo: () => Promise<TenantPublicDTO>;
|
|
4
4
|
getClientConfig: () => Promise<TenantClientConfigDTO>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTenants.d.ts","sourceRoot":"","sources":["../../src/hooks/useTenants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useTenants.d.ts","sourceRoot":"","sources":["../../src/hooks/useTenants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAElH,eAAO,MAAM,UAAU;yBAGuB,QAAQ,eAAe,CAAC;2BActB,QAAQ,qBAAqB,CAAC;yBAchC,QAAQ,MAAM,CAAC;qBAcnB,QAAQ,qBAAqB,QAAQ,CAAC,CAAC;;CAqBhF,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokenBalances.d.ts","sourceRoot":"","sources":["../../src/hooks/useTokenBalances.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useTokenBalances.d.ts","sourceRoot":"","sources":["../../src/hooks/useTokenBalances.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAuB,MAAM,0BAA0B,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,8DAA8D;IAC9D,KAAK,EAAE,QAAQ,CAAC;IAChB,8EAA8E;IAC9E,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,eAAe,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0DAA0D;IAC1D,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,uCAAuC;IACvC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,sFAAsF;IACtF,WAAW,EAAE,OAAO,CAAC;IACrB,0CAA0C;IAC1C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8FG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAqLzF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback, useEffect, useState, useRef } from 'react';
|
|
2
2
|
import { usePersSDK } from '../providers/PersSDKProvider';
|
|
3
3
|
import { useWeb3 } from './useWeb3';
|
|
4
|
-
import { NativeTokenTypes } from '@explorins/pers-
|
|
4
|
+
import { NativeTokenTypes } from '@explorins/pers-sdk';
|
|
5
5
|
/**
|
|
6
6
|
* React hook for loading and managing token balances
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTokens.d.ts","sourceRoot":"","sources":["../../src/hooks/useTokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useTokens.d.ts","sourceRoot":"","sources":["../../src/hooks/useTokens.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,SAAS;qBAoBoB,QAAQ,qBAAqB,QAAQ,CAAC,CAAC;gCA2B5B,QAAQ,QAAQ,CAAC;2BA2BtB,QAAQ,qBAAqB,QAAQ,CAAC,CAAC;yBA2BzC,QAAQ,GAAG,CAAC;2BA2BV,QAAQ,qBAAqB,QAAQ,CAAC,CAAC;0CA6BtB,MAAM,oBAAoB,MAAM,GAAG,IAAI,KAAG,QAAQ,QAAQ,CAAC;;CAuB3H,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnStatusUpdateFn } from './useTransactionSigner';
|
|
2
|
-
import type { TransactionRequestDTO, TransactionRequestResponseDTO, TransactionDTO, TransactionPaginationRequestDTO, PaginatedResponseDTO, TransactionIncludeRelation } from '@explorins/pers-
|
|
2
|
+
import type { TransactionRequestDTO, TransactionRequestResponseDTO, TransactionDTO, TransactionPaginationRequestDTO, PaginatedResponseDTO, TransactionIncludeRelation } from '@explorins/pers-sdk';
|
|
3
3
|
import type { TransactionQueryOptions } from '@explorins/pers-sdk/transaction';
|
|
4
4
|
export type { TransactionQueryOptions } from '@explorins/pers-sdk/transaction';
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTransactions.d.ts","sourceRoot":"","sources":["../../src/hooks/useTransactions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,+BAA+B,EAC/B,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"useTransactions.d.ts","sourceRoot":"","sources":["../../src/hooks/useTransactions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,+BAA+B,EAC/B,oBAAoB,EACpB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAG/E,YAAY,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,eAAe;iCAgC4B,qBAAqB,mBAAmB,gBAAgB,KAAG,QAAQ,6BAA6B,CAAC;wCAmEtI,MAAM,YACX,0BAA0B,EAAE,KACrC,QAAQ,cAAc,GAAG,IAAI,CAAC;0CAoDrB,uBAAuB,KAChC,QAAQ,qBAAqB,cAAc,CAAC,CAAC;wCA2CrC,+BAA+B,GAAG;QACzC,OAAO,CAAC,EAAE,0BAA0B,EAAE,CAAC;KACxC,KACA,QAAQ,qBAAqB,cAAc,CAAC,CAAC;iCAcI,QAAQ,IAAI,CAAC;;;;CAyBlE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { TriggerSourceDTO, TriggerSourceCreateRequestDTO, PaginatedResponseDTO } from '@explorins/pers-
|
|
1
|
+
import type { TriggerSourceDTO, TriggerSourceCreateRequestDTO, PaginatedResponseDTO } from '@explorins/pers-sdk';
|
|
2
2
|
import type { TriggerSourceQueryOptions } from '@explorins/pers-sdk/trigger-source';
|
|
3
3
|
export type { TriggerSourceQueryOptions } from '@explorins/pers-sdk/trigger-source';
|
|
4
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTriggerSources.d.ts","sourceRoot":"","sources":["../../src/hooks/useTriggerSources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,
|
|
1
|
+
{"version":3,"file":"useTriggerSources.d.ts","sourceRoot":"","sources":["../../src/hooks/useTriggerSources.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,6BAA6B,EAC7B,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAGpF,YAAY,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,eAAO,MAAM,iBAAiB;uBAiChB,yBAAyB,KAClC,QAAQ,qBAAqB,gBAAgB,CAAC,CAAC;+BAsC/B,MAAM,KACtB,QAAQ,gBAAgB,CAAC;4BA8CX,6BAA6B,KAC3C,QAAQ,gBAAgB,CAAC;8BAwCT,MAAM,iBACR,QAAQ,6BAA6B,CAAC,KACpD,QAAQ,gBAAgB,CAAC;8BAmCT,MAAM,KACtB,QAAQ,OAAO,CAAC;;CAyBpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UserStatusTypeDTO, PaginatedResponseDTO } from '@explorins/pers-
|
|
1
|
+
import type { UserStatusTypeDTO, PaginatedResponseDTO } from '@explorins/pers-sdk';
|
|
2
2
|
export declare const useUserStatus: () => {
|
|
3
3
|
getUserStatusTypes: () => Promise<PaginatedResponseDTO<UserStatusTypeDTO>>;
|
|
4
4
|
getEarnedUserStatus: () => Promise<PaginatedResponseDTO<UserStatusTypeDTO>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUserStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useUserStatus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useUserStatus.d.ts","sourceRoot":"","sources":["../../src/hooks/useUserStatus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,eAAO,MAAM,aAAa;8BAGyB,QAAQ,qBAAqB,iBAAiB,CAAC,CAAC;+BAc/C,QAAQ,qBAAqB,iBAAiB,CAAC,CAAC;2CAkBlC,iBAAiB,KAAG,QAAQ,iBAAiB,CAAC;;CAoB/G,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
package/dist/hooks/useUsers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UserDTO, UserCreateRequestDTO, PaginatedResponseDTO } from '@explorins/pers-
|
|
1
|
+
import type { UserDTO, UserCreateRequestDTO, PaginatedResponseDTO } from '@explorins/pers-sdk';
|
|
2
2
|
import type { UserPublicProfileDTO, UserQueryOptions } from '@explorins/pers-sdk/user';
|
|
3
3
|
export type { UserQueryOptions } from '@explorins/pers-sdk/user';
|
|
4
4
|
export declare const useUsers: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUsers.d.ts","sourceRoot":"","sources":["../../src/hooks/useUsers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useUsers.d.ts","sourceRoot":"","sources":["../../src/hooks/useUsers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGvF,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,eAAO,MAAM,QAAQ;+BAmBiC,gBAAgB,KAAG,QAAQ,OAAO,CAAC;kCAiBhC,oBAAoB,KAAG,QAAQ,OAAO,CAAC;0BAiC/C,MAAM,YAAY,gBAAgB,KAAG,QAAQ,OAAO,CAAC;iCAc9C;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAG,QAAQ,qBAAqB,oBAAoB,CAAC,CAAC;uBAehG,QAAQ,qBAAqB,OAAO,CAAC,CAAC;yBAclC,MAAM,YAAY,oBAAoB,KAAG,QAAQ,OAAO,CAAC;kCAqBhD,MAAM,aAAa,OAAO,KAAG,QAAQ,OAAO,CAAC;;CAwBrG,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC"}
|