@spotsdev/sdk 1.4.0 → 1.5.2

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 (67) hide show
  1. package/dist/index.cjs +2166 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +1656 -0
  4. package/dist/index.d.ts +1655 -36
  5. package/dist/index.js +2021 -64
  6. package/dist/index.js.map +1 -0
  7. package/package.json +22 -6
  8. package/src/api/entities.ts +171 -170
  9. package/src/api/mutations/products.ts +18 -2
  10. package/src/api/queries/index.ts +4 -0
  11. package/src/api/queries/payments.ts +67 -0
  12. package/dist/api/client.d.ts +0 -12
  13. package/dist/api/client.js +0 -72
  14. package/dist/api/entities.d.ts +0 -305
  15. package/dist/api/entities.js +0 -13
  16. package/dist/api/mutations/clubs.d.ts +0 -47
  17. package/dist/api/mutations/clubs.js +0 -97
  18. package/dist/api/mutations/conversations.d.ts +0 -45
  19. package/dist/api/mutations/conversations.js +0 -114
  20. package/dist/api/mutations/index.d.ts +0 -14
  21. package/dist/api/mutations/index.js +0 -40
  22. package/dist/api/mutations/notifications.d.ts +0 -38
  23. package/dist/api/mutations/notifications.js +0 -64
  24. package/dist/api/mutations/orders.d.ts +0 -73
  25. package/dist/api/mutations/orders.js +0 -114
  26. package/dist/api/mutations/posts.d.ts +0 -123
  27. package/dist/api/mutations/posts.js +0 -242
  28. package/dist/api/mutations/products.d.ts +0 -81
  29. package/dist/api/mutations/products.js +0 -98
  30. package/dist/api/mutations/redemptions.d.ts +0 -33
  31. package/dist/api/mutations/redemptions.js +0 -63
  32. package/dist/api/mutations/spots.d.ts +0 -93
  33. package/dist/api/mutations/spots.js +0 -167
  34. package/dist/api/mutations/users.d.ts +0 -73
  35. package/dist/api/mutations/users.js +0 -175
  36. package/dist/api/queries/auth.d.ts +0 -37
  37. package/dist/api/queries/auth.js +0 -61
  38. package/dist/api/queries/clubs.d.ts +0 -52
  39. package/dist/api/queries/clubs.js +0 -116
  40. package/dist/api/queries/conversations.d.ts +0 -52
  41. package/dist/api/queries/conversations.js +0 -83
  42. package/dist/api/queries/index.d.ts +0 -28
  43. package/dist/api/queries/index.js +0 -69
  44. package/dist/api/queries/misc.d.ts +0 -30
  45. package/dist/api/queries/misc.js +0 -91
  46. package/dist/api/queries/notifications.d.ts +0 -34
  47. package/dist/api/queries/notifications.js +0 -62
  48. package/dist/api/queries/orders.d.ts +0 -45
  49. package/dist/api/queries/orders.js +0 -93
  50. package/dist/api/queries/posts.d.ts +0 -92
  51. package/dist/api/queries/posts.js +0 -233
  52. package/dist/api/queries/products.d.ts +0 -48
  53. package/dist/api/queries/products.js +0 -87
  54. package/dist/api/queries/spots.d.ts +0 -93
  55. package/dist/api/queries/spots.js +0 -250
  56. package/dist/api/queries/templates.d.ts +0 -39
  57. package/dist/api/queries/templates.js +0 -81
  58. package/dist/api/queries/users.d.ts +0 -104
  59. package/dist/api/queries/users.js +0 -235
  60. package/dist/api/queries/wallet.d.ts +0 -109
  61. package/dist/api/queries/wallet.js +0 -136
  62. package/dist/api/services/index.d.ts +0 -2
  63. package/dist/api/services/index.js +0 -8
  64. package/dist/api/services/marketplace.d.ts +0 -129
  65. package/dist/api/services/marketplace.js +0 -168
  66. package/dist/api/types.d.ts +0 -57
  67. package/dist/api/types.js +0 -33
@@ -1,104 +0,0 @@
1
- /**
2
- * Users Query Hooks
3
- *
4
- * TanStack Query hooks for user-related operations.
5
- */
6
- import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
7
- import { type Club, type FavoriteSpot, type Post, type Spot, type SpotsSummaryResponse, type SpotSubscription, type User } from '../types';
8
- export declare const userKeys: {
9
- all: readonly ["users"];
10
- me: () => readonly ["users", "me"];
11
- stats: () => readonly ["users", "me", "stats"];
12
- spotsSummary: () => readonly ["users", "me", "spots-summary"];
13
- activity: (limit?: number) => readonly ["users", "me", "activity", number | undefined];
14
- posts: (params?: {
15
- page?: number;
16
- limit?: number;
17
- }) => readonly ["users", "me", "posts", {
18
- page?: number;
19
- limit?: number;
20
- } | undefined];
21
- clubs: () => readonly ["users", "me", "clubs"];
22
- subscriptions: () => readonly ["users", "me", "subscriptions"];
23
- blocked: () => readonly ["users", "me", "blocked"];
24
- ownedSpots: () => readonly ["users", "me", "owned-spots"];
25
- favorites: () => readonly ["users", "me", "favorites"];
26
- };
27
- /**
28
- * Get current user's profile
29
- *
30
- * @endpoint GET /users/me
31
- */
32
- export declare function useCurrentUser(options?: Omit<UseQueryOptions<User>, 'queryKey' | 'queryFn'>): UseQueryResult<User>;
33
- /**
34
- * Get current user's stats
35
- *
36
- * @endpoint GET /users/me/stats
37
- * @deprecated This endpoint doesn't exist in the API. Use useUserSpotsSummary instead.
38
- */
39
- export declare function useUserStats(options?: Omit<UseQueryOptions<{
40
- posts: number;
41
- responses: number;
42
- upvotes: number;
43
- }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
44
- posts: number;
45
- responses: number;
46
- upvotes: number;
47
- }>;
48
- /**
49
- * Get current user's spots summary with activity indicators
50
- *
51
- * Returns list of spots where user has posted, with:
52
- * - Post count per spot
53
- * - Unread messages count
54
- * - Pending responses count
55
- * - Last activity timestamp
56
- *
57
- * @endpoint GET /users/me/spots-summary
58
- */
59
- export declare function useUserSpotsSummary(options?: Omit<UseQueryOptions<SpotsSummaryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotsSummaryResponse>;
60
- /**
61
- * Get current user's activity
62
- *
63
- * @endpoint GET /users/me/activity
64
- */
65
- export declare function useUserActivity(limit?: number, options?: Omit<UseQueryOptions<unknown[]>, 'queryKey' | 'queryFn'>): UseQueryResult<unknown[]>;
66
- /**
67
- * Get current user's posts
68
- *
69
- * @endpoint GET /user/me/posts
70
- */
71
- export declare function useUserPosts(params?: {
72
- page?: number;
73
- limit?: number;
74
- }, options?: Omit<UseQueryOptions<Post[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Post[]>;
75
- /**
76
- * Get current user's clubs
77
- *
78
- * @endpoint GET /user/me/clubs
79
- */
80
- export declare function useUserClubs(options?: Omit<UseQueryOptions<Club[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Club[]>;
81
- /**
82
- * Get current user's spot subscriptions
83
- *
84
- * @endpoint GET /user/me/subscriptions
85
- */
86
- export declare function useUserSubscriptions(options?: Omit<UseQueryOptions<SpotSubscription[]>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotSubscription[]>;
87
- /**
88
- * Get blocked users list
89
- *
90
- * @endpoint GET /user/me/blocked
91
- */
92
- export declare function useBlockedUsers(options?: Omit<UseQueryOptions<User[]>, 'queryKey' | 'queryFn'>): UseQueryResult<User[]>;
93
- /**
94
- * Get current user's owned spots (for business owners)
95
- *
96
- * @endpoint GET /users/me/owned-spots
97
- */
98
- export declare function useOwnedSpots(options?: Omit<UseQueryOptions<Spot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot[]>;
99
- /**
100
- * Get current user's favorite spots
101
- *
102
- * @endpoint GET /users/me/favorites
103
- */
104
- export declare function useUserFavorites(options?: Omit<UseQueryOptions<FavoriteSpot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<FavoriteSpot[]>;
@@ -1,235 +0,0 @@
1
- "use strict";
2
- /**
3
- * Users Query Hooks
4
- *
5
- * TanStack Query hooks for user-related operations.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.userKeys = void 0;
9
- exports.useCurrentUser = useCurrentUser;
10
- exports.useUserStats = useUserStats;
11
- exports.useUserSpotsSummary = useUserSpotsSummary;
12
- exports.useUserActivity = useUserActivity;
13
- exports.useUserPosts = useUserPosts;
14
- exports.useUserClubs = useUserClubs;
15
- exports.useUserSubscriptions = useUserSubscriptions;
16
- exports.useBlockedUsers = useBlockedUsers;
17
- exports.useOwnedSpots = useOwnedSpots;
18
- exports.useUserFavorites = useUserFavorites;
19
- const react_query_1 = require("@tanstack/react-query");
20
- const client_1 = require("../client");
21
- // Helper to extract array data from API response
22
- // API can return either { data: T[] } or { data: { data: T[], meta?: {...} } }
23
- function extractArrayData(data) {
24
- if (Array.isArray(data)) {
25
- return data;
26
- }
27
- if (data && typeof data === 'object' && 'data' in data) {
28
- const nested = data.data;
29
- if (Array.isArray(nested)) {
30
- return nested;
31
- }
32
- }
33
- return [];
34
- }
35
- // ============================================================================
36
- // QUERY KEYS
37
- // ============================================================================
38
- exports.userKeys = {
39
- all: ['users'],
40
- me: () => [...exports.userKeys.all, 'me'],
41
- stats: () => [...exports.userKeys.me(), 'stats'],
42
- spotsSummary: () => [...exports.userKeys.me(), 'spots-summary'],
43
- activity: (limit) => [...exports.userKeys.me(), 'activity', limit],
44
- posts: (params) => [...exports.userKeys.me(), 'posts', params],
45
- clubs: () => [...exports.userKeys.me(), 'clubs'],
46
- subscriptions: () => [...exports.userKeys.me(), 'subscriptions'],
47
- blocked: () => [...exports.userKeys.me(), 'blocked'],
48
- ownedSpots: () => [...exports.userKeys.me(), 'owned-spots'],
49
- favorites: () => [...exports.userKeys.me(), 'favorites'],
50
- };
51
- // ============================================================================
52
- // QUERY HOOKS
53
- // ============================================================================
54
- /**
55
- * Get current user's profile
56
- *
57
- * @endpoint GET /users/me
58
- */
59
- function useCurrentUser(options) {
60
- return (0, react_query_1.useQuery)({
61
- queryKey: exports.userKeys.me(),
62
- queryFn: async () => {
63
- console.log('[SDK-USERS] Fetching /users/me...');
64
- const client = (0, client_1.getApiClient)();
65
- try {
66
- const response = await client.get('/users/me');
67
- console.log('[SDK-USERS] Success:', response.status);
68
- return response.data.data;
69
- }
70
- catch (error) {
71
- const axiosError = error;
72
- console.log('[SDK-USERS] Error:', axiosError.response?.status, 'URL:', axiosError.config?.baseURL, axiosError.config?.url);
73
- throw error;
74
- }
75
- },
76
- ...options,
77
- });
78
- }
79
- /**
80
- * Get current user's stats
81
- *
82
- * @endpoint GET /users/me/stats
83
- * @deprecated This endpoint doesn't exist in the API. Use useUserSpotsSummary instead.
84
- */
85
- function useUserStats(options) {
86
- return (0, react_query_1.useQuery)({
87
- queryKey: exports.userKeys.stats(),
88
- queryFn: async () => {
89
- const client = (0, client_1.getApiClient)();
90
- const response = await client.get('/users/me/stats');
91
- return response.data.data;
92
- },
93
- ...options,
94
- });
95
- }
96
- /**
97
- * Get current user's spots summary with activity indicators
98
- *
99
- * Returns list of spots where user has posted, with:
100
- * - Post count per spot
101
- * - Unread messages count
102
- * - Pending responses count
103
- * - Last activity timestamp
104
- *
105
- * @endpoint GET /users/me/spots-summary
106
- */
107
- function useUserSpotsSummary(options) {
108
- return (0, react_query_1.useQuery)({
109
- queryKey: exports.userKeys.spotsSummary(),
110
- queryFn: async () => {
111
- const client = (0, client_1.getApiClient)();
112
- const response = await client.get('/users/me/spots-summary');
113
- return response.data.data;
114
- },
115
- ...options,
116
- });
117
- }
118
- /**
119
- * Get current user's activity
120
- *
121
- * @endpoint GET /users/me/activity
122
- */
123
- function useUserActivity(limit = 10, options) {
124
- return (0, react_query_1.useQuery)({
125
- queryKey: exports.userKeys.activity(limit),
126
- queryFn: async () => {
127
- const client = (0, client_1.getApiClient)();
128
- const response = await client.get(`/users/me/activity?limit=${limit}`);
129
- return extractArrayData(response.data.data);
130
- },
131
- ...options,
132
- });
133
- }
134
- /**
135
- * Get current user's posts
136
- *
137
- * @endpoint GET /user/me/posts
138
- */
139
- function useUserPosts(params, options) {
140
- return (0, react_query_1.useQuery)({
141
- queryKey: exports.userKeys.posts(params),
142
- queryFn: async () => {
143
- const client = (0, client_1.getApiClient)();
144
- const queryParams = new URLSearchParams();
145
- if (params?.page)
146
- queryParams.set('page', String(params.page));
147
- if (params?.limit)
148
- queryParams.set('limit', String(params.limit));
149
- const response = await client.get(`/user/me/posts?${queryParams}`);
150
- return extractArrayData(response.data.data);
151
- },
152
- ...options,
153
- });
154
- }
155
- /**
156
- * Get current user's clubs
157
- *
158
- * @endpoint GET /user/me/clubs
159
- */
160
- function useUserClubs(options) {
161
- return (0, react_query_1.useQuery)({
162
- queryKey: exports.userKeys.clubs(),
163
- queryFn: async () => {
164
- const client = (0, client_1.getApiClient)();
165
- const response = await client.get('/user/me/clubs');
166
- return extractArrayData(response.data.data);
167
- },
168
- ...options,
169
- });
170
- }
171
- /**
172
- * Get current user's spot subscriptions
173
- *
174
- * @endpoint GET /user/me/subscriptions
175
- */
176
- function useUserSubscriptions(options) {
177
- return (0, react_query_1.useQuery)({
178
- queryKey: exports.userKeys.subscriptions(),
179
- queryFn: async () => {
180
- const client = (0, client_1.getApiClient)();
181
- const response = await client.get('/user/me/subscriptions');
182
- return extractArrayData(response.data.data);
183
- },
184
- ...options,
185
- });
186
- }
187
- /**
188
- * Get blocked users list
189
- *
190
- * @endpoint GET /user/me/blocked
191
- */
192
- function useBlockedUsers(options) {
193
- return (0, react_query_1.useQuery)({
194
- queryKey: exports.userKeys.blocked(),
195
- queryFn: async () => {
196
- const client = (0, client_1.getApiClient)();
197
- const response = await client.get('/user/me/blocked');
198
- return extractArrayData(response.data.data);
199
- },
200
- ...options,
201
- });
202
- }
203
- /**
204
- * Get current user's owned spots (for business owners)
205
- *
206
- * @endpoint GET /users/me/owned-spots
207
- */
208
- function useOwnedSpots(options) {
209
- return (0, react_query_1.useQuery)({
210
- queryKey: exports.userKeys.ownedSpots(),
211
- queryFn: async () => {
212
- const client = (0, client_1.getApiClient)();
213
- const response = await client.get('/users/me/owned-spots');
214
- return extractArrayData(response.data.data);
215
- },
216
- ...options,
217
- });
218
- }
219
- /**
220
- * Get current user's favorite spots
221
- *
222
- * @endpoint GET /users/me/favorites
223
- */
224
- function useUserFavorites(options) {
225
- return (0, react_query_1.useQuery)({
226
- queryKey: exports.userKeys.favorites(),
227
- queryFn: async () => {
228
- const client = (0, client_1.getApiClient)();
229
- const response = await client.get('/users/me/favorites');
230
- return extractArrayData(response.data.data);
231
- },
232
- ...options,
233
- });
234
- }
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvdXNlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQStESCx3Q0E2QkM7QUFRRCxvQ0FrQkM7QUFhRCxrREFjQztBQU9ELDBDQWVDO0FBT0Qsb0NBa0JDO0FBT0Qsb0NBWUM7QUFPRCxvREFjQztBQU9ELDBDQWFDO0FBT0Qsc0NBY0M7QUFPRCw0Q0FjQztBQXBTRCx1REFJOEI7QUFFOUIsc0NBQXNDO0FBWXRDLGlEQUFpRDtBQUNqRCwrRUFBK0U7QUFDL0UsU0FBUyxnQkFBZ0IsQ0FBSSxJQUFhO0lBQ3hDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUNELElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQUksSUFBd0IsQ0FBQyxJQUFJLENBQUE7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxhQUFhO0FBQ2IsK0VBQStFO0FBRWxFLFFBQUEsUUFBUSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBVTtJQUN2QixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBVTtJQUMxQyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFVO0lBQ2pELFlBQVksRUFBRSxHQUFH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Z0JBQWdCLENBQzlCLE9BQXVFO0lBRXZFLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLGdCQUFRLENBQUMsU0FBUyxFQUFFO1FBQzlCLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtZQUNsQixNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQTtZQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQy9CLHFCQUFxQixDQUN0QixDQUFBO1lBQ0QsT0FBTyxnQkFBZ0IsQ0FBZSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNELENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2VycyBRdWVyeSBIb29rc1xuICpcbiAqIFRhblN0YWNrIFF1ZXJ5IGhvb2tzIGZvciB1c2VyLXJlbGF0ZWQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICB1c2VRdWVyeSxcbiAgdHlwZSBVc2VRdWVyeU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlSZXN1bHQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuaW1wb3J0IHtnZXRBcGlDbGllbnR9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7XG4gIHR5cGUgQXBpUmVzcG9uc2UsXG4gIHR5cGUgQ2x1YixcbiAgdHlwZSBGYXZvcml0ZVNwb3QsXG4gIHR5cGUgUG9zdCxcbiAgdHlwZSBTcG90LFxuICB0eXBlIFNwb3RzU3VtbWFyeVJlc3BvbnNlLFxuICB0eXBlIFNwb3RTdWJzY3JpcHRpb24sXG4gIHR5cGUgVXNlcixcbn0gZnJvbSAnLi4vdHlwZXMnXG5cbi8vIEhlbHBlciB0byBleHRyYWN0IGFycmF5IGRhdGEgZnJvbSBBUEkgcmVzcG9uc2Vcbi8vIEFQSSBjYW4gcmV0dXJuIGVpdGhlciB7IGRhdGE6IFRbXSB9IG9yIHsgZGF0YTogeyBkYXRhOiBUW10sIG1ldGE/OiB7Li4ufSB9IH1cbmZ1bmN0aW9uIGV4dHJhY3RBcnJheURhdGE8VD4oZGF0YTogdW5rbm93bik6IFRbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgcmV0dXJuIGRhdGFcbiAgfVxuICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGluIGRhdGEpIHtcbiAgICBjb25zdCBuZXN0ZWQgPSAoZGF0YSBhcyB7ZGF0YTogdW5rbm93bn0pLmRhdGFcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXN0ZWQpKSB7XG4gICAgICByZXR1cm4gbmVzdGVkXG4gICAgfVxuICB9XG4gIHJldHVybiBbXVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBLRVlTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCB1c2VyS2V5cyA9IHtcbiAgYWxsOiBbJ3VzZXJzJ10gYXMgY29uc3QsXG4gIG1lOiAoKSA9PiBbLi4udXNlcktleXMuYWxsLCAnbWUnXSBhcyBjb25zdCxcbiAgc3RhdHM6ICgpID0+IFsuLi51c2VyS2V5cy5tZSgpLCAnc3RhdHMnXSBhcyBjb25zdCxcbiAgc3BvdHNTdW1tYXJ5OiAoKSA9PiBbLi4udXNlcktleXMubWUoKSwgJ3Nwb3RzLXN1bW1hcnknXSBhcyBjb25zdCxcbiAgYWN0aXZpdHk6IChsaW1pdD86IG51bWJlcikgPT4gWy4uLnVzZXJLZXlzLm1lKCksICdhY3Rpdml0eScsIGxpbWl0XSBhcyBjb25zdCxcbiAgcG9zdHM6IChwYXJhbXM/OiB7cGFnZT86IG51bWJlcjsgbGltaXQ/OiBudW1iZXJ9KSA9PlxuICAgIFsuLi51c2VyS2V5cy5tZSgpLCAncG9zdHMnLCBwYXJhbXNdIGFzIGNvbnN0LFxuICBjbHViczogKCkgPT4gWy4uLnVzZXJLZXlzLm1lKCksICdjbHVicyddIGFzIGNvbnN0LFxuICBzdWJzY3JpcHRpb25zOiAoKSA9PiBbLi4udXNlcktleXMubWUoKSwgJ3N1YnNjcmlwdGlvbnMnXSBhcyBjb25zdCxcbiAgYmxvY2tlZDogKCkgPT4gWy4uLnVzZXJLZXlzLm1lKCksICdibG9ja2VkJ10gYXMgY29uc3QsXG4gIG93bmVkU3BvdHM6ICgpID0+IFsuLi51c2VyS2V5cy5tZSgpLCAnb3duZWQtc3BvdHMnXSBhcyBjb25zdCxcbiAgZmF2b3JpdGVzOiAoKSA9PiBbLi4udXNlcktleXMubWUoKSwgJ2Zhdm9yaXRlcyddIGFzIGNvbnN0LFxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBwcm9maWxlXG4gKlxuICogQGVuZHBvaW50IEdFVCAvdXNlcnMvbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUN1cnJlbnRVc2VyKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8VXNlcj4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8VXNlcj4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB1c2VyS2V5cy5tZSgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFVzZXI+ID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdbU0RLLVVTRVJTXSBGZXRjaGluZyAvdXNlcnMvbWUuLi4nKVxuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxVc2VyPj4oJy91c2Vycy9tZScpXG4gICAgICAgIGNvbnNvbGUubG9nKCdbU0RLLVVTRVJTXSBTdWNjZXNzOicsIHJlc3BvbnNlLnN0YXR1cylcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgY29uc3QgYXhpb3NFcnJvciA9IGVycm9yIGFzIHtcbiAgICAgICAgICByZXNwb25zZT86IHtzdGF0dXM6IG51bWJlcn1cbiAgICAgICAgICBjb25maWc/OiB7dXJsOiBzdHJpbmc7IGJhc2VVUkw/OiBzdHJpbmd9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgJ1tTREstVVNFUlNdIEVycm9yOicsXG4gICAgICAgICAgYXhpb3NFcnJvci5yZXNwb25zZT8uc3RhdHVzLFxuICAgICAgICAgICdVUkw6JyxcbiAgICAgICAgICBheGlvc0Vycm9yLmNvbmZpZz8uYmFzZVVSTCxcbiAgICAgICAgICBheGlvc0Vycm9yLmNvbmZpZz8udXJsLFxuICAgICAgICApXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgICB9XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBzdGF0c1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXJzL21lL3N0YXRzXG4gKiBAZGVwcmVjYXRlZCBUaGlzIGVuZHBvaW50IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIEFQSS4gVXNlIHVzZVVzZXJTcG90c1N1bW1hcnkgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVzZXJTdGF0cyhcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlUXVlcnlPcHRpb25zPHtwb3N0czogbnVtYmVyOyByZXNwb25zZXM6IG51bWJlcjsgdXB2b3RlczogbnVtYmVyfT4sXG4gICAgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJ1xuICA+LFxuKTogVXNlUXVlcnlSZXN1bHQ8e3Bvc3RzOiBudW1iZXI7IHJlc3BvbnNlczogbnVtYmVyOyB1cHZvdGVzOiBudW1iZXJ9PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLnN0YXRzKCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID1cbiAgICAgICAgYXdhaXQgY2xpZW50LmdldDxcbiAgICAgICAgICBBcGlSZXNwb25zZTx7cG9zdHM6IG51bWJlcjsgcmVzcG9uc2VzOiBudW1iZXI7IHVwdm90ZXM6IG51bWJlcn0+XG4gICAgICAgID4oJy91c2Vycy9tZS9zdGF0cycpXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBzcG90cyBzdW1tYXJ5IHdpdGggYWN0aXZpdHkgaW5kaWNhdG9yc1xuICpcbiAqIFJldHVybnMgbGlzdCBvZiBzcG90cyB3aGVyZSB1c2VyIGhhcyBwb3N0ZWQsIHdpdGg6XG4gKiAtIFBvc3QgY291bnQgcGVyIHNwb3RcbiAqIC0gVW5yZWFkIG1lc3NhZ2VzIGNvdW50XG4gKiAtIFBlbmRpbmcgcmVzcG9uc2VzIGNvdW50XG4gKiAtIExhc3QgYWN0aXZpdHkgdGltZXN0YW1wXG4gKlxuICogQGVuZHBvaW50IEdFVCAvdXNlcnMvbWUvc3BvdHMtc3VtbWFyeVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXNlclNwb3RzU3VtbWFyeShcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFNwb3RzU3VtbWFyeVJlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90c1N1bW1hcnlSZXNwb25zZT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB1c2VyS2V5cy5zcG90c1N1bW1hcnkoKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFNwb3RzU3VtbWFyeVJlc3BvbnNlPj4oXG4gICAgICAgICcvdXNlcnMvbWUvc3BvdHMtc3VtbWFyeScsXG4gICAgICApXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBhY3Rpdml0eVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXJzL21lL2FjdGl2aXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVc2VyQWN0aXZpdHkoXG4gIGxpbWl0OiBudW1iZXIgPSAxMCxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPHVua25vd25bXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8dW5rbm93bltdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLmFjdGl2aXR5KGxpbWl0KSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPHVua25vd24+PihcbiAgICAgICAgYC91c2Vycy9tZS9hY3Rpdml0eT9saW1pdD0ke2xpbWl0fWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTx1bmtub3duPihyZXNwb25zZS5kYXRhLmRhdGEpXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBwb3N0c1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvcG9zdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVzZXJQb3N0cyhcbiAgcGFyYW1zPzoge3BhZ2U/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBvc3RbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLnBvc3RzKHBhcmFtcyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICBpZiAocGFyYW1zPy5wYWdlKSBxdWVyeVBhcmFtcy5zZXQoJ3BhZ2UnLCBTdHJpbmcocGFyYW1zLnBhZ2UpKVxuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgIGAvdXNlci9tZS9wb3N0cz8ke3F1ZXJ5UGFyYW1zfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTxQb3N0PihyZXNwb25zZS5kYXRhLmRhdGEpXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IHVzZXIncyBjbHVic1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvY2x1YnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVzZXJDbHVicyhcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPENsdWJbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8Q2x1YltdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLmNsdWJzKCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oJy91c2VyL21lL2NsdWJzJylcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPENsdWI+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIHNwb3Qgc3Vic2NyaXB0aW9uc1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvc3Vic2NyaXB0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXNlclN1YnNjcmlwdGlvbnMoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxTcG90U3Vic2NyaXB0aW9uW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFNwb3RTdWJzY3JpcHRpb25bXT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB1c2VyS2V5cy5zdWJzY3JpcHRpb25zKCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgICcvdXNlci9tZS9zdWJzY3JpcHRpb25zJyxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFNwb3RTdWJzY3JpcHRpb24+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGJsb2NrZWQgdXNlcnMgbGlzdFxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXIvbWUvYmxvY2tlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQmxvY2tlZFVzZXJzKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8VXNlcltdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxVc2VyW10+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogdXNlcktleXMuYmxvY2tlZCgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9XG4gICAgICAgIGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KCcvdXNlci9tZS9ibG9ja2VkJylcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFVzZXI+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIG93bmVkIHNwb3RzIChmb3IgYnVzaW5lc3Mgb3duZXJzKVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3VzZXJzL21lL293bmVkLXNwb3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VPd25lZFNwb3RzKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8U3BvdFtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90W10+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogdXNlcktleXMub3duZWRTcG90cygpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KFxuICAgICAgICAnL3VzZXJzL21lL293bmVkLXNwb3RzJyxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFNwb3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIGZhdm9yaXRlIHNwb3RzXG4gKlxuICogQGVuZHBvaW50IEdFVCAvdXNlcnMvbWUvZmF2b3JpdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVc2VyRmF2b3JpdGVzKFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8RmF2b3JpdGVTcG90W10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PEZhdm9yaXRlU3BvdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHVzZXJLZXlzLmZhdm9yaXRlcygpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KFxuICAgICAgICAnL3VzZXJzL21lL2Zhdm9yaXRlcycsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTxGYXZvcml0ZVNwb3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG4iXX0=
@@ -1,109 +0,0 @@
1
- /**
2
- * Wallet Query Hooks
3
- *
4
- * TanStack Query hooks for wallet and redemption operations.
5
- */
6
- import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
7
- export type RedemptionStatus = 'PENDING' | 'REDEEMED' | 'EXPIRED' | 'CANCELLED' | 'VOID';
8
- export interface WalletProduct {
9
- id: string;
10
- name: string;
11
- type: string;
12
- imageUrl: string | null;
13
- }
14
- export interface WalletOrderItem {
15
- product: WalletProduct;
16
- quantity: number;
17
- unitPrice: number;
18
- }
19
- export interface WalletOrder {
20
- id: string;
21
- orderNumber: string;
22
- spotId: string;
23
- createdAt: string;
24
- spot: {
25
- id: string;
26
- name: string;
27
- slug: string;
28
- address: string | null;
29
- };
30
- }
31
- export interface WalletRedemption {
32
- id: string;
33
- qrCode: string;
34
- qrCodeUrl: string | null;
35
- status: RedemptionStatus;
36
- validFrom: string;
37
- validUntil: string;
38
- redeemedAt: string | null;
39
- createdAt: string;
40
- orderItem: WalletOrderItem & {
41
- order: WalletOrder;
42
- };
43
- }
44
- export interface RedemptionLookup extends WalletRedemption {
45
- redeemedBy: {
46
- id: string;
47
- name: string;
48
- } | null;
49
- spot: {
50
- id: string;
51
- name: string;
52
- } | null;
53
- orderItem: WalletOrderItem & {
54
- order: WalletOrder & {
55
- user: {
56
- id: string;
57
- name: string | null;
58
- avatarUrl: string | null;
59
- };
60
- };
61
- };
62
- }
63
- export interface WalletHistoryResponse {
64
- data: WalletRedemption[];
65
- meta: {
66
- total: number;
67
- page: number;
68
- limit: number;
69
- totalPages: number;
70
- };
71
- }
72
- export declare const walletKeys: {
73
- all: readonly ["wallet"];
74
- active: () => readonly ["wallet", "active"];
75
- history: (page?: number) => readonly ["wallet", "history", number | undefined];
76
- redemptions: () => readonly ["redemptions"];
77
- lookup: (qrCode: string) => readonly ["redemptions", "lookup", string];
78
- spotRedemptions: (spotId: string, page?: number) => readonly ["redemptions", "spot", string, number | undefined];
79
- };
80
- /**
81
- * Get user's active wallet items (pending redemptions)
82
- *
83
- * @endpoint GET /wallet
84
- */
85
- export declare function useWallet(options?: Omit<UseQueryOptions<WalletRedemption[]>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletRedemption[]>;
86
- /**
87
- * Get user's wallet history (all redemptions)
88
- *
89
- * @endpoint GET /wallet/history
90
- */
91
- export declare function useWalletHistory(params?: {
92
- page?: number;
93
- limit?: number;
94
- }, options?: Omit<UseQueryOptions<WalletHistoryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletHistoryResponse>;
95
- /**
96
- * Lookup redemption by QR code (for scanner)
97
- *
98
- * @endpoint GET /redemptions/lookup/:qrCode
99
- */
100
- export declare function useRedemptionLookup(qrCode: string, options?: Omit<UseQueryOptions<RedemptionLookup>, 'queryKey' | 'queryFn'>): UseQueryResult<RedemptionLookup>;
101
- /**
102
- * Get spot's redemption history (for spot owner)
103
- *
104
- * @endpoint GET /spots/:spotId/redemptions
105
- */
106
- export declare function useSpotRedemptions(spotId: string, params?: {
107
- page?: number;
108
- limit?: number;
109
- }, options?: Omit<UseQueryOptions<WalletHistoryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletHistoryResponse>;
@@ -1,136 +0,0 @@
1
- "use strict";
2
- /**
3
- * Wallet Query Hooks
4
- *
5
- * TanStack Query hooks for wallet and redemption operations.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.walletKeys = void 0;
9
- exports.useWallet = useWallet;
10
- exports.useWalletHistory = useWalletHistory;
11
- exports.useRedemptionLookup = useRedemptionLookup;
12
- exports.useSpotRedemptions = useSpotRedemptions;
13
- const react_query_1 = require("@tanstack/react-query");
14
- const client_1 = require("../client");
15
- // ============================================================================
16
- // HELPER FUNCTIONS
17
- // ============================================================================
18
- function extractArrayData(data) {
19
- if (Array.isArray(data)) {
20
- return data;
21
- }
22
- if (data && typeof data === 'object' && 'data' in data) {
23
- const nested = data.data;
24
- if (Array.isArray(nested)) {
25
- return nested;
26
- }
27
- }
28
- return [];
29
- }
30
- function extractObjectData(data) {
31
- if (data &&
32
- typeof data === 'object' &&
33
- 'data' in data &&
34
- !Array.isArray(data)) {
35
- const nested = data.data;
36
- if (nested &&
37
- typeof nested === 'object' &&
38
- 'data' in nested &&
39
- !Array.isArray(nested)) {
40
- return nested.data;
41
- }
42
- return nested;
43
- }
44
- return data;
45
- }
46
- // ============================================================================
47
- // QUERY KEYS
48
- // ============================================================================
49
- exports.walletKeys = {
50
- all: ['wallet'],
51
- active: () => [...exports.walletKeys.all, 'active'],
52
- history: (page) => [...exports.walletKeys.all, 'history', page],
53
- redemptions: () => ['redemptions'],
54
- lookup: (qrCode) => [...exports.walletKeys.redemptions(), 'lookup', qrCode],
55
- spotRedemptions: (spotId, page) => [...exports.walletKeys.redemptions(), 'spot', spotId, page],
56
- };
57
- // ============================================================================
58
- // QUERY HOOKS
59
- // ============================================================================
60
- /**
61
- * Get user's active wallet items (pending redemptions)
62
- *
63
- * @endpoint GET /wallet
64
- */
65
- function useWallet(options) {
66
- return (0, react_query_1.useQuery)({
67
- queryKey: exports.walletKeys.active(),
68
- queryFn: async () => {
69
- const client = (0, client_1.getApiClient)();
70
- const response = await client.get('/wallet');
71
- return extractArrayData(response.data.data);
72
- },
73
- ...options,
74
- });
75
- }
76
- /**
77
- * Get user's wallet history (all redemptions)
78
- *
79
- * @endpoint GET /wallet/history
80
- */
81
- function useWalletHistory(params, options) {
82
- return (0, react_query_1.useQuery)({
83
- queryKey: exports.walletKeys.history(params?.page),
84
- queryFn: async () => {
85
- const client = (0, client_1.getApiClient)();
86
- const queryParams = new URLSearchParams();
87
- if (params?.page)
88
- queryParams.set('page', String(params.page));
89
- if (params?.limit)
90
- queryParams.set('limit', String(params.limit));
91
- const response = await client.get(`/wallet/history?${queryParams}`);
92
- return extractObjectData(response.data.data);
93
- },
94
- ...options,
95
- });
96
- }
97
- /**
98
- * Lookup redemption by QR code (for scanner)
99
- *
100
- * @endpoint GET /redemptions/lookup/:qrCode
101
- */
102
- function useRedemptionLookup(qrCode, options) {
103
- return (0, react_query_1.useQuery)({
104
- queryKey: exports.walletKeys.lookup(qrCode),
105
- queryFn: async () => {
106
- const client = (0, client_1.getApiClient)();
107
- const response = await client.get(`/redemptions/lookup/${qrCode}`);
108
- return extractObjectData(response.data.data);
109
- },
110
- enabled: !!qrCode && qrCode.length > 0,
111
- ...options,
112
- });
113
- }
114
- /**
115
- * Get spot's redemption history (for spot owner)
116
- *
117
- * @endpoint GET /spots/:spotId/redemptions
118
- */
119
- function useSpotRedemptions(spotId, params, options) {
120
- return (0, react_query_1.useQuery)({
121
- queryKey: exports.walletKeys.spotRedemptions(spotId, params?.page),
122
- queryFn: async () => {
123
- const client = (0, client_1.getApiClient)();
124
- const queryParams = new URLSearchParams();
125
- if (params?.page)
126
- queryParams.set('page', String(params.page));
127
- if (params?.limit)
128
- queryParams.set('limit', String(params.limit));
129
- const response = await client.get(`/spots/${spotId}/redemptions?${queryParams}`);
130
- return extractObjectData(response.data.data);
131
- },
132
- enabled: !!spotId,
133
- ...options,
134
- });
135
- }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9xdWVyaWVzL3dhbGxldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBb0pILDhCQVlDO0FBT0QsNENBa0JDO0FBT0Qsa0RBZ0JDO0FBT0QsZ0RBb0JDO0FBek9ELHVEQUk4QjtBQUU5QixzQ0FBc0M7QUErRXRDLCtFQUErRTtBQUMvRSxtQkFBbUI7QUFDbkIsK0VBQStFO0FBRS9FLFNBQVMsZ0JBQWdCLENBQUksSUFBYTtJQUN4QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZELE1BQU0sTUFBTSxHQUFJLElBQXdCLENBQUMsSUFBSSxDQUFBO1FBQzdDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFJLElBQWE7SUFDekMsSUFDRSxJQUFJO1FBQ0osT0FBTyxJQUFJLEtBQUssUUFBUTtRQUN4QixNQUFNLElBQUksSUFBSTtRQUNkLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDcEIsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFJLElBQXdCLENBQUMsSUFBSSxDQUFBO1FBQzdDLElBQ0UsTUFBTTtZQUNOLE9BQU8sTUFBTSxLQUFLLFFBQVE7WUFDMUIsTUFBTSxJQUFJLE1BQU07WUFDaEIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUN0QixDQUFDO1lBQ0QsT0FBUSxN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QUMsQ0FBQTtRQUNyRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2pCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdhbGxldCBRdWVyeSBIb29rc1xuICpcbiAqIFRhblN0YWNrIFF1ZXJ5IGhvb2tzIGZvciB3YWxsZXQgYW5kIHJlZGVtcHRpb24gb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICB1c2VRdWVyeSxcbiAgdHlwZSBVc2VRdWVyeU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlSZXN1bHQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuaW1wb3J0IHtnZXRBcGlDbGllbnR9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7dHlwZSBBcGlSZXNwb25zZX0gZnJvbSAnLi4vdHlwZXMnXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIFJlZGVtcHRpb25TdGF0dXMgPSAnUEVORElORycgfCAnUkVERUVNRUQnIHwgJ0VYUElSRUQnIHwgJ0NBTkNFTExFRCcgfCAnVk9JRCdcblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRQcm9kdWN0IHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogc3RyaW5nXG4gIGltYWdlVXJsOiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0T3JkZXJJdGVtIHtcbiAgcHJvZHVjdDogV2FsbGV0UHJvZHVjdFxuICBxdWFudGl0eTogbnVtYmVyXG4gIHVuaXRQcmljZTogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0T3JkZXIge1xuICBpZDogc3RyaW5nXG4gIG9yZGVyTnVtYmVyOiBzdHJpbmdcbiAgc3BvdElkOiBzdHJpbmdcbiAgY3JlYXRlZEF0OiBzdHJpbmdcbiAgc3BvdDoge1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBzbHVnOiBzdHJpbmdcbiAgICBhZGRyZXNzOiBzdHJpbmcgfCBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRSZWRlbXB0aW9uIHtcbiAgaWQ6IHN0cmluZ1xuICBxckNvZGU6IHN0cmluZ1xuICBxckNvZGVVcmw6IHN0cmluZyB8IG51bGxcbiAgc3RhdHVzOiBSZWRlbXB0aW9uU3RhdHVzXG4gIHZhbGlkRnJvbTogc3RyaW5nXG4gIHZhbGlkVW50aWw6IHN0cmluZ1xuICByZWRlZW1lZEF0OiBzdHJpbmcgfCBudWxsXG4gIGNyZWF0ZWRBdDogc3RyaW5nXG4gIG9yZGVySXRlbTogV2FsbGV0T3JkZXJJdGVtICYge1xuICAgIG9yZGVyOiBXYWxsZXRPcmRlclxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVkZW1wdGlvbkxvb2t1cCBleHRlbmRzIFdhbGxldFJlZGVtcHRpb24ge1xuICByZWRlZW1lZEJ5OiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9IHwgbnVsbFxuICBzcG90OiB7XG4gICAgaWQ6IHN0cmluZ1xuICAgIG5hbWU6IHN0cmluZ1xuICB9IHwgbnVsbFxuICBvcmRlckl0ZW06IFdhbGxldE9yZGVySXRlbSAmIHtcbiAgICBvcmRlcjogV2FsbGV0T3JkZXIgJiB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIGlkOiBzdHJpbmdcbiAgICAgICAgbmFtZTogc3RyaW5nIHwgbnVsbFxuICAgICAgICBhdmF0YXJVcmw6IHN0cmluZyB8IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRIaXN0b3J5UmVzcG9uc2Uge1xuICBkYXRhOiBXYWxsZXRSZWRlbXB0aW9uW11cbiAgbWV0YToge1xuICAgIHRvdGFsOiBudW1iZXJcbiAgICBwYWdlOiBudW1iZXJcbiAgICBsaW1pdDogbnVtYmVyXG4gICAgdG90YWxQYWdlczogbnVtYmVyXG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBleHRyYWN0QXJyYXlEYXRhPFQ+KGRhdGE6IHVua25vd24pOiBUW10ge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhXG4gIH1cbiAgaWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBkYXRhKSB7XG4gICAgY29uc3QgbmVzdGVkID0gKGRhdGEgYXMge2RhdGE6IHVua25vd259KS5kYXRhXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmVzdGVkKSkge1xuICAgICAgcmV0dXJuIG5lc3RlZFxuICAgIH1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuZnVuY3Rpb24gZXh0cmFjdE9iamVjdERhdGE8VD4oZGF0YTogdW5rbm93bik6IFQge1xuICBpZiAoXG4gICAgZGF0YSAmJlxuICAgIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgICdkYXRhJyBpbiBkYXRhICYmXG4gICAgIUFycmF5LmlzQXJyYXkoZGF0YSlcbiAgKSB7XG4gICAgY29uc3QgbmVzdGVkID0gKGRhdGEgYXMge2RhdGE6IHVua25vd259KS5kYXRhXG4gICAgaWYgKFxuICAgICAgbmVzdGVkICYmXG4gICAgICB0eXBlb2YgbmVzdGVkID09PSAnb2JqZWN0JyAmJlxuICAgICAgJ2RhdGEnIGluIG5lc3RlZCAmJlxuICAgICAgIUFycmF5LmlzQXJyYXkobmVzdGVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIChuZXN0ZWQgYXMge2RhdGE6IFR9KS5kYXRhXG4gICAgfVxuICAgIHJldHVybiBuZXN0ZWQgYXMgVFxuICB9XG4gIHJldHVybiBkYXRhIGFzIFRcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3Qgd2FsbGV0S2V5cyA9IHtcbiAgYWxsOiBbJ3dhbGxldCddIGFzIGNvbnN0LFxuICBhY3RpdmU6ICgpID0+IFsuLi53YWxsZXRLZXlzLmFsbCwgJ2FjdGl2ZSddIGFzIGNvbnN0LFxuICBoaXN0b3J5OiAocGFnZT86IG51bWJlcikgPT4gWy4uLndhbGxldEtleXMuYWxsLCAnaGlzdG9yeScsIHBhZ2VdIGFzIGNvbnN0LFxuICByZWRlbXB0aW9uczogKCkgPT4gWydyZWRlbXB0aW9ucyddIGFzIGNvbnN0LFxuICBsb29rdXA6IChxckNvZGU6IHN0cmluZykgPT4gWy4uLndhbGxldEtleXMucmVkZW1wdGlvbnMoKSwgJ2xvb2t1cCcsIHFyQ29kZV0gYXMgY29uc3QsXG4gIHNwb3RSZWRlbXB0aW9uczogKHNwb3RJZDogc3RyaW5nLCBwYWdlPzogbnVtYmVyKSA9PlxuICAgIFsuLi53YWxsZXRLZXlzLnJlZGVtcHRpb25zKCksICdzcG90Jywgc3BvdElkLCBwYWdlXSBhcyBjb25zdCxcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHZXQgdXNlcidzIGFjdGl2ZSB3YWxsZXQgaXRlbXMgKHBlbmRpbmcgcmVkZW1wdGlvbnMpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvd2FsbGV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VXYWxsZXQoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxXYWxsZXRSZWRlbXB0aW9uW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFdhbGxldFJlZGVtcHRpb25bXT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB3YWxsZXRLZXlzLmFjdGl2ZSgpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFdhbGxldFJlZGVtcHRpb25bXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oJy93YWxsZXQnKVxuICAgICAgcmV0dXJuIGV4dHJhY3RBcnJheURhdGE8V2FsbGV0UmVkZW1wdGlvbj4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgdXNlcidzIHdhbGxldCBoaXN0b3J5IChhbGwgcmVkZW1wdGlvbnMpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvd2FsbGV0L2hpc3RvcnlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVdhbGxldEhpc3RvcnkoXG4gIHBhcmFtcz86IHtwYWdlPzogbnVtYmVyOyBsaW1pdD86IG51bWJlcn0sXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFdhbGxldEhpc3RvcnlSZXNwb25zZT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiB3YWxsZXRLZXlzLmhpc3RvcnkocGFyYW1zPy5wYWdlKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8ucGFnZSkgcXVlcnlQYXJhbXMuc2V0KCdwYWdlJywgU3RyaW5nKHBhcmFtcy5wYWdlKSlcbiAgICAgIGlmIChwYXJhbXM/LmxpbWl0KSBxdWVyeVBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8V2FsbGV0SGlzdG9yeVJlc3BvbnNlPj4oXG4gICAgICAgIGAvd2FsbGV0L2hpc3Rvcnk/JHtxdWVyeVBhcmFtc31gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIGV4dHJhY3RPYmplY3REYXRhPFdhbGxldEhpc3RvcnlSZXNwb25zZT4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBMb29rdXAgcmVkZW1wdGlvbiBieSBRUiBjb2RlIChmb3Igc2Nhbm5lcilcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9yZWRlbXB0aW9ucy9sb29rdXAvOnFyQ29kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkZW1wdGlvbkxvb2t1cChcbiAgcXJDb2RlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxSZWRlbXB0aW9uTG9va3VwPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxSZWRlbXB0aW9uTG9va3VwPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHdhbGxldEtleXMubG9va3VwKHFyQ29kZSksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UmVkZW1wdGlvbkxvb2t1cD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgIGAvcmVkZW1wdGlvbnMvbG9va3VwLyR7cXJDb2RlfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdE9iamVjdERhdGE8UmVkZW1wdGlvbkxvb2t1cD4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgZW5hYmxlZDogISFxckNvZGUgJiYgcXJDb2RlLmxlbmd0aCA+IDAsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgc3BvdCdzIHJlZGVtcHRpb24gaGlzdG9yeSAoZm9yIHNwb3Qgb3duZXIpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvc3BvdHMvOnNwb3RJZC9yZWRlbXB0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdFJlZGVtcHRpb25zKFxuICBzcG90SWQ6IHN0cmluZyxcbiAgcGFyYW1zPzoge3BhZ2U/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFdhbGxldEhpc3RvcnlSZXNwb25zZT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8V2FsbGV0SGlzdG9yeVJlc3BvbnNlPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHdhbGxldEtleXMuc3BvdFJlZGVtcHRpb25zKHNwb3RJZCwgcGFyYW1zPy5wYWdlKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8ucGFnZSkgcXVlcnlQYXJhbXMuc2V0KCdwYWdlJywgU3RyaW5nKHBhcmFtcy5wYWdlKSlcbiAgICAgIGlmIChwYXJhbXM/LmxpbWl0KSBxdWVyeVBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8V2FsbGV0SGlzdG9yeVJlc3BvbnNlPj4oXG4gICAgICAgIGAvc3BvdHMvJHtzcG90SWR9L3JlZGVtcHRpb25zPyR7cXVlcnlQYXJhbXN9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0T2JqZWN0RGF0YTxXYWxsZXRIaXN0b3J5UmVzcG9uc2U+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export { productsService, ordersService, paymentsService } from './marketplace';
2
- export type { CreateProductInput, UpdateProductInput, CreateOrderInput, } from './marketplace';
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paymentsService = exports.ordersService = exports.productsService = void 0;
4
- var marketplace_1 = require("./marketplace");
5
- Object.defineProperty(exports, "productsService", { enumerable: true, get: function () { return marketplace_1.productsService; } });
6
- Object.defineProperty(exports, "ordersService", { enumerable: true, get: function () { return marketplace_1.ordersService; } });
7
- Object.defineProperty(exports, "paymentsService", { enumerable: true, get: function () { return marketplace_1.paymentsService; } });
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3NlcnZpY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFnRjtBQUF2RSw4R0FBQSxlQUFlLE9BQUE7QUFBRSw0R0FBQSxhQUFhLE9BQUE7QUFBRSw4R0FBQSxlQUFlLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwcm9kdWN0c1NlcnZpY2UsIG9yZGVyc1NlcnZpY2UsIHBheW1lbnRzU2VydmljZSB9IGZyb20gJy4vbWFya2V0cGxhY2UnO1xuZXhwb3J0IHR5cGUge1xuICBDcmVhdGVQcm9kdWN0SW5wdXQsXG4gIFVwZGF0ZVByb2R1Y3RJbnB1dCxcbiAgQ3JlYXRlT3JkZXJJbnB1dCxcbn0gZnJvbSAnLi9tYXJrZXRwbGFjZSc7XG4iXX0=