@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
@@ -0,0 +1,1656 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { PostType, SpotResponseDto, PostResponseDto, PostReplyDto, ProductResponseDto, SpotImageDto, SpotVibeDto, SpotIntentionDto, OrderItemDto, NotificationResponseDto, SpotOwnerDto, ResponseStatus, ReportReason, ClaimStatus, OrderStatus, SendOtpDto, VerifyOtpDto, CreatePostDto, CreateReplyDto, CreateResponseDto, UpdateResponseDto, UpdateUserDto, CreateConversationDto, CreateMessageDto, ClaimSpotDto, UpvoteResponseDto, VerifyOtpWrappedResponseDto, ApiResponse, PostStatusDto, ProductType, ProductStatus } from '@spotsdev/types';
3
+ export * from '@spotsdev/types';
4
+ export { AccountStatus, AddUserInterestDto, AdjustStockDto, ApiResponse, AuthTokensDto, AuthUserDto, ClaimSpotDto, ClaimStatus, CreateConversationDto, CreateIntentionDto, CreateInterestDto, CreateMediaDto, CreateMessageDto, CreateOrderDto, CreatePostDto, CreateProductDto, CreateReplyDto, CreateReportDto, CreateResponseDto, CreateSpotDto, FulfillmentType, MediaType, NotificationResponseDto, NotificationType, NotificationsListResponseDto, OrderItemDto, OrderStatus, PaginatedPostsResponseDto, PaginatedProductsResponseDto, PaginatedSpotsResponseDto, PostReplyDto, PostReportResponseDto, PostResponseDto, PostSpotDto, PostStatus, PostStatusDto, PostStatusResponseDto, PostType, PostUserDto, ProductResponseDto, ProductStatus, ProductType, RefreshTokenDto, RefreshTokenResponseDto, ReportReason, ResponseStatus, SendOtpDto, SendOtpResponseDto, SpotCityDto, SpotClaimResponseDto, SpotImageDto, SpotIntentionDto, SpotOwnerDto, SpotResponseDto, SpotType, SpotVibeDto, UpdateIntentionDto, UpdateInterestDto, UpdateOrderStatusDto, UpdatePostDto, UpdateProductDto, UpdateResponseDto, UpdateSpotDto, UpdateUserDto, UpvoteResponseDto, UserResponseDto, VerifyOtpDto } from '@spotsdev/types';
5
+ import { UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult, UseInfiniteQueryOptions, UseInfiniteQueryResult } from '@tanstack/react-query';
6
+
7
+ interface SDKConfig {
8
+ baseURL: string;
9
+ getAccessToken: () => string | null | Promise<string | null>;
10
+ refreshAccessToken?: () => Promise<string>;
11
+ onUnauthorized?: () => void;
12
+ }
13
+ declare function configureSDK(sdkConfig: SDKConfig): void;
14
+ declare function getApiClient(): AxiosInstance;
15
+ declare function getConfig(): SDKConfig;
16
+
17
+ /**
18
+ * Spots SDK Entity Types
19
+ *
20
+ * ALL entity and enum types are imported from @spotsdev/types (generated from OpenAPI spec).
21
+ * This file re-exports them with SDK-friendly aliases and adds SDK-specific types.
22
+ *
23
+ * IMPORTANT: Do NOT define entity types here - they come from spots-types.
24
+ */
25
+
26
+ type SpotPostType = PostType;
27
+ type Spot = SpotResponseDto;
28
+ type SpotPost = PostResponseDto;
29
+ type PostReply = PostReplyDto;
30
+ type Product = ProductResponseDto;
31
+ type SpotImage = SpotImageDto;
32
+ type SpotVibe = SpotVibeDto;
33
+ type SpotIntention = SpotIntentionDto;
34
+ type OrderItem = OrderItemDto;
35
+ type Notification = NotificationResponseDto;
36
+ type User = SpotOwnerDto & {
37
+ phone?: string | null;
38
+ email?: string | null;
39
+ bio?: string | null;
40
+ onboardingCompleted?: boolean;
41
+ lastActiveAt?: Date | null;
42
+ createdAt?: Date;
43
+ updatedAt?: Date;
44
+ };
45
+ type ReportStatus = 'PENDING' | 'REVIEWED' | 'RESOLVED' | 'DISMISSED';
46
+ type ClubMemberRole = 'MEMBER' | 'ADMIN' | 'OWNER';
47
+ interface PostResponse {
48
+ id: string;
49
+ postId: string;
50
+ userId: string;
51
+ note: string | null;
52
+ status: ResponseStatus;
53
+ createdAt: Date;
54
+ updatedAt: Date;
55
+ user?: User;
56
+ post?: SpotPost;
57
+ }
58
+ interface PostUpvote {
59
+ id: string;
60
+ postId: string;
61
+ userId: string;
62
+ createdAt: Date;
63
+ }
64
+ interface PostUpvoter {
65
+ id: string;
66
+ userId: string;
67
+ name: string | null;
68
+ avatarUrl: string | null;
69
+ createdAt: Date;
70
+ }
71
+ interface PostUpvotesResponse {
72
+ data: PostUpvoter[];
73
+ meta: {
74
+ total: number;
75
+ limit: number;
76
+ offset: number;
77
+ hasMore: boolean;
78
+ currentUserUpvoted: boolean;
79
+ isPostAuthor: boolean;
80
+ };
81
+ }
82
+ interface PostReport {
83
+ id: string;
84
+ postId: string;
85
+ userId: string;
86
+ reason: ReportReason;
87
+ details: string | null;
88
+ status: ReportStatus;
89
+ createdAt: Date;
90
+ updatedAt: Date;
91
+ }
92
+ interface Club {
93
+ id: string;
94
+ name: string;
95
+ slug: string;
96
+ description: string | null;
97
+ imageUrl: string | null;
98
+ isPrivate: boolean;
99
+ createdById: string;
100
+ createdAt: Date;
101
+ updatedAt: Date;
102
+ }
103
+ interface ClubMember {
104
+ id: string;
105
+ clubId: string;
106
+ userId: string;
107
+ role: ClubMemberRole;
108
+ joinedAt: Date;
109
+ }
110
+ interface Conversation {
111
+ id: string;
112
+ createdAt: Date;
113
+ updatedAt: Date;
114
+ participants?: User[];
115
+ messages?: Message[];
116
+ }
117
+ interface Message {
118
+ id: string;
119
+ conversationId: string;
120
+ senderId: string;
121
+ content: string;
122
+ createdAt: Date;
123
+ sender?: User;
124
+ }
125
+ interface PostTemplate {
126
+ id: string;
127
+ postType: SpotPostType;
128
+ emoji: string;
129
+ title: string;
130
+ placeholder: string | null;
131
+ isActive: boolean;
132
+ sortOrder: number;
133
+ createdAt: Date;
134
+ updatedAt: Date;
135
+ }
136
+ interface Vibe {
137
+ id: string;
138
+ name: string;
139
+ emoji: string | null;
140
+ createdAt: Date;
141
+ }
142
+ interface Interest {
143
+ id: string;
144
+ name: string;
145
+ emoji: string | null;
146
+ category: string | null;
147
+ createdAt: Date;
148
+ }
149
+ interface Intention {
150
+ id: string;
151
+ name: string;
152
+ emoji: string | null;
153
+ createdAt: Date;
154
+ }
155
+ interface LifeSituation {
156
+ id: string;
157
+ name: string;
158
+ emoji: string | null;
159
+ createdAt: Date;
160
+ }
161
+ interface UserVibe {
162
+ id: string;
163
+ name: string;
164
+ emoji: string | null;
165
+ slug?: string;
166
+ category?: string;
167
+ }
168
+ interface FavoriteSpot {
169
+ id: string;
170
+ userId: string;
171
+ spotId: string;
172
+ createdAt: Date;
173
+ spot?: Spot;
174
+ }
175
+ interface SpotSubscription {
176
+ id: string;
177
+ spotId: string;
178
+ userId: string;
179
+ createdAt: Date;
180
+ spot?: Spot;
181
+ }
182
+ interface SpotClaim {
183
+ id: string;
184
+ spotId: string;
185
+ userId: string;
186
+ status: ClaimStatus;
187
+ verificationMethod: string | null;
188
+ createdAt: Date;
189
+ updatedAt: Date;
190
+ }
191
+ interface City {
192
+ id: string;
193
+ name: string;
194
+ country: string;
195
+ latitude: number;
196
+ longitude: number;
197
+ timezone: string | null;
198
+ createdAt: Date;
199
+ }
200
+ interface Order {
201
+ id: string;
202
+ spotId: string;
203
+ userId: string;
204
+ status: OrderStatus;
205
+ subtotal: number;
206
+ tax: number;
207
+ total: number;
208
+ currency: string;
209
+ notes: string | null;
210
+ metadata: Record<string, unknown> | null;
211
+ createdAt: Date;
212
+ updatedAt: Date;
213
+ items?: OrderItem[];
214
+ }
215
+ interface PaginationMeta {
216
+ total: number;
217
+ page: number;
218
+ limit: number;
219
+ totalPages: number;
220
+ hasNextPage: boolean;
221
+ hasPreviousPage: boolean;
222
+ }
223
+ interface PaginatedResponse<T> {
224
+ data: T[];
225
+ meta: PaginationMeta;
226
+ }
227
+
228
+ /**
229
+ * Spots SDK Types
230
+ *
231
+ * Type sources:
232
+ * - Entity types (User, Spot, Post, etc.) → from ./entities (local definitions)
233
+ * - DTO types (CreatePostDto, etc.) → import from @spots/types (OpenAPI generated)
234
+ *
235
+ * This file provides type aliases for SDK convenience.
236
+ */
237
+
238
+ type SendOtpRequest = SendOtpDto;
239
+ type VerifyOtpRequest = VerifyOtpDto;
240
+ type CreatePostRequest = CreatePostDto;
241
+ type CreateReplyRequest = CreateReplyDto;
242
+ type RespondToPostRequest = CreateResponseDto;
243
+ type UpdateResponseRequest = UpdateResponseDto;
244
+ type UpdateProfileRequest = UpdateUserDto;
245
+ type CreateConversationRequest = CreateConversationDto;
246
+ type SendMessageRequest = CreateMessageDto;
247
+ type ClaimSpotRequest = ClaimSpotDto;
248
+ type UpvoteResponse = UpvoteResponseDto;
249
+ type AuthResponse = VerifyOtpWrappedResponseDto;
250
+ type Post = SpotPost;
251
+ type Template = PostTemplate;
252
+ /**
253
+ * Spot summary with activity indicators
254
+ * Returned by /users/me/spots-summary
255
+ */
256
+ interface SpotSummary {
257
+ spotId: string;
258
+ spotName: string;
259
+ spotSlug: string;
260
+ spotType: string;
261
+ postCount: number;
262
+ unreadMessages: number;
263
+ pendingResponses: number;
264
+ lastActivity: string | null;
265
+ hasNewActivity: boolean;
266
+ }
267
+ /**
268
+ * Response meta for spots summary
269
+ */
270
+ interface SpotsSummaryMeta {
271
+ totalSpots: number;
272
+ totalUnreadMessages: number;
273
+ totalPendingResponses: number;
274
+ }
275
+ /**
276
+ * Full response from /users/me/spots-summary
277
+ */
278
+ interface SpotsSummaryResponse {
279
+ data: SpotSummary[];
280
+ meta: SpotsSummaryMeta;
281
+ }
282
+
283
+ /**
284
+ * Auth Mutation Hooks
285
+ *
286
+ * TanStack Query hooks for authentication operations.
287
+ */
288
+
289
+ /**
290
+ * Send OTP to phone number
291
+ *
292
+ * @endpoint POST /auth/send-otp
293
+ */
294
+ declare function useSendOtp(options?: Omit<UseMutationOptions<ApiResponse<{
295
+ sent: boolean;
296
+ }>, Error, SendOtpRequest>, 'mutationFn'>): UseMutationResult<ApiResponse<{
297
+ sent: boolean;
298
+ }>, Error, SendOtpRequest>;
299
+ /**
300
+ * Verify OTP and authenticate
301
+ *
302
+ * @endpoint POST /auth/verify-otp
303
+ */
304
+ declare function useVerifyOtp(options?: Omit<UseMutationOptions<AuthResponse, Error, VerifyOtpRequest>, 'mutationFn'>): UseMutationResult<AuthResponse, Error, VerifyOtpRequest>;
305
+ /**
306
+ * Refresh access token
307
+ *
308
+ * @endpoint POST /auth/refresh
309
+ */
310
+ declare function useRefreshToken(options?: Omit<UseMutationOptions<{
311
+ accessToken: string;
312
+ }, Error, {
313
+ refreshToken: string;
314
+ }>, 'mutationFn'>): UseMutationResult<{
315
+ accessToken: string;
316
+ }, Error, {
317
+ refreshToken: string;
318
+ }>;
319
+
320
+ /**
321
+ * Users Query Hooks
322
+ *
323
+ * TanStack Query hooks for user-related operations.
324
+ */
325
+
326
+ declare const userKeys: {
327
+ all: readonly ["users"];
328
+ me: () => readonly ["users", "me"];
329
+ stats: () => readonly ["users", "me", "stats"];
330
+ spotsSummary: () => readonly ["users", "me", "spots-summary"];
331
+ activity: (limit?: number) => readonly ["users", "me", "activity", number | undefined];
332
+ posts: (params?: {
333
+ page?: number;
334
+ limit?: number;
335
+ }) => readonly ["users", "me", "posts", {
336
+ page?: number;
337
+ limit?: number;
338
+ } | undefined];
339
+ clubs: () => readonly ["users", "me", "clubs"];
340
+ subscriptions: () => readonly ["users", "me", "subscriptions"];
341
+ blocked: () => readonly ["users", "me", "blocked"];
342
+ ownedSpots: () => readonly ["users", "me", "owned-spots"];
343
+ favorites: () => readonly ["users", "me", "favorites"];
344
+ };
345
+ /**
346
+ * Get current user's profile
347
+ *
348
+ * @endpoint GET /users/me
349
+ */
350
+ declare function useCurrentUser(options?: Omit<UseQueryOptions<User>, 'queryKey' | 'queryFn'>): UseQueryResult<User>;
351
+ /**
352
+ * Get current user's stats
353
+ *
354
+ * @endpoint GET /users/me/stats
355
+ * @deprecated This endpoint doesn't exist in the API. Use useUserSpotsSummary instead.
356
+ */
357
+ declare function useUserStats(options?: Omit<UseQueryOptions<{
358
+ posts: number;
359
+ responses: number;
360
+ upvotes: number;
361
+ }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
362
+ posts: number;
363
+ responses: number;
364
+ upvotes: number;
365
+ }>;
366
+ /**
367
+ * Get current user's spots summary with activity indicators
368
+ *
369
+ * Returns list of spots where user has posted, with:
370
+ * - Post count per spot
371
+ * - Unread messages count
372
+ * - Pending responses count
373
+ * - Last activity timestamp
374
+ *
375
+ * @endpoint GET /users/me/spots-summary
376
+ */
377
+ declare function useUserSpotsSummary(options?: Omit<UseQueryOptions<SpotsSummaryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotsSummaryResponse>;
378
+ /**
379
+ * Get current user's activity
380
+ *
381
+ * @endpoint GET /users/me/activity
382
+ */
383
+ declare function useUserActivity(limit?: number, options?: Omit<UseQueryOptions<unknown[]>, 'queryKey' | 'queryFn'>): UseQueryResult<unknown[]>;
384
+ /**
385
+ * Get current user's posts
386
+ *
387
+ * @endpoint GET /user/me/posts
388
+ */
389
+ declare function useUserPosts(params?: {
390
+ page?: number;
391
+ limit?: number;
392
+ }, options?: Omit<UseQueryOptions<Post[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Post[]>;
393
+ /**
394
+ * Get current user's clubs
395
+ *
396
+ * @endpoint GET /user/me/clubs
397
+ */
398
+ declare function useUserClubs(options?: Omit<UseQueryOptions<Club[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Club[]>;
399
+ /**
400
+ * Get current user's spot subscriptions
401
+ *
402
+ * @endpoint GET /user/me/subscriptions
403
+ */
404
+ declare function useUserSubscriptions(options?: Omit<UseQueryOptions<SpotSubscription[]>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotSubscription[]>;
405
+ /**
406
+ * Get blocked users list
407
+ *
408
+ * @endpoint GET /user/me/blocked
409
+ */
410
+ declare function useBlockedUsers(options?: Omit<UseQueryOptions<User[]>, 'queryKey' | 'queryFn'>): UseQueryResult<User[]>;
411
+ /**
412
+ * Get current user's owned spots (for business owners)
413
+ *
414
+ * @endpoint GET /users/me/owned-spots
415
+ */
416
+ declare function useOwnedSpots(options?: Omit<UseQueryOptions<Spot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot[]>;
417
+ /**
418
+ * Get current user's favorite spots
419
+ *
420
+ * @endpoint GET /users/me/favorites
421
+ */
422
+ declare function useUserFavorites(options?: Omit<UseQueryOptions<FavoriteSpot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<FavoriteSpot[]>;
423
+
424
+ /**
425
+ * Spots Query Hooks
426
+ *
427
+ * TanStack Query hooks for spot-related operations.
428
+ */
429
+
430
+ declare const spotKeys: {
431
+ all: readonly ["spots"];
432
+ lists: () => readonly ["spots", "list"];
433
+ list: (filters?: Record<string, unknown>) => readonly ["spots", "list", Record<string, unknown> | undefined];
434
+ details: () => readonly ["spots", "detail"];
435
+ detail: (id: string) => readonly ["spots", "detail", string];
436
+ bySlug: (slug: string) => readonly ["spots", "slug", string];
437
+ byQR: (qrCode: string) => readonly ["spots", "qr", string];
438
+ images: (spotId: string) => readonly ["spots", "detail", string, "images"];
439
+ };
440
+ /**
441
+ * Get all spots
442
+ *
443
+ * @endpoint GET /spots
444
+ */
445
+ declare function useSpots(params?: {
446
+ limit?: number;
447
+ city?: string;
448
+ type?: string;
449
+ lat?: number;
450
+ lng?: number;
451
+ radius?: number;
452
+ search?: string;
453
+ vibes?: string;
454
+ cityId?: string;
455
+ page?: number;
456
+ }, options?: Omit<UseQueryOptions<Spot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot[]>;
457
+ /**
458
+ * Get a spot by ID
459
+ *
460
+ * @endpoint GET /spots/{spotId}
461
+ */
462
+ declare function useSpot(spotId: string, options?: Omit<UseQueryOptions<Spot>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot>;
463
+ /**
464
+ * Get a spot by slug
465
+ *
466
+ * @endpoint GET /spots/slug/{slug}
467
+ */
468
+ declare function useSpotBySlug(slug: string, options?: Omit<UseQueryOptions<Spot>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot>;
469
+ /**
470
+ * Get a spot by QR code
471
+ *
472
+ * @endpoint GET /spots/qr/{qrCode}
473
+ */
474
+ declare function useSpotByQR(qrCode: string, options?: Omit<UseQueryOptions<Spot>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot>;
475
+ /**
476
+ * Get images for a spot
477
+ *
478
+ * @endpoint GET /spots/{spotId}/images
479
+ */
480
+ declare function useSpotImages(spotId: string, options?: Omit<UseQueryOptions<SpotImage[]>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotImage[]>;
481
+ /**
482
+ * Check if a spot is favorited by the current user
483
+ *
484
+ * @endpoint GET /spots/{spotId}/favorite
485
+ */
486
+ declare function useSpotFavoriteStatus(spotId: string, options?: Omit<UseQueryOptions<{
487
+ isFavorite: boolean;
488
+ }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
489
+ isFavorite: boolean;
490
+ }>;
491
+ /**
492
+ * Params for infinite spots query
493
+ */
494
+ interface InfiniteSpotsParams {
495
+ limit?: number;
496
+ city?: string;
497
+ cityId?: string;
498
+ type?: string;
499
+ templateSlugs?: string[];
500
+ vibeIds?: string[];
501
+ search?: string;
502
+ }
503
+ /**
504
+ * Infinite scroll query for spots
505
+ *
506
+ * @endpoint GET /spots (paginated)
507
+ * @returns Infinite query with pages of spots
508
+ */
509
+ declare function useInfiniteSpots(params?: InfiniteSpotsParams, options?: Omit<UseInfiniteQueryOptions<PaginatedResponse<Spot>, Error, {
510
+ pages: PaginatedResponse<Spot>[];
511
+ pageParams: number[];
512
+ }>, 'queryKey' | 'queryFn' | 'getNextPageParam' | 'initialPageParam'>): UseInfiniteQueryResult<{
513
+ pages: PaginatedResponse<Spot>[];
514
+ pageParams: number[];
515
+ }, Error>;
516
+
517
+ /**
518
+ * Posts Query Hooks
519
+ *
520
+ * TanStack Query hooks for post/board operations.
521
+ */
522
+
523
+ declare const postKeys: {
524
+ all: readonly ["posts"];
525
+ lists: () => readonly ["posts", "list"];
526
+ list: (filters?: Record<string, unknown>) => readonly ["posts", "list", Record<string, unknown> | undefined];
527
+ bySpot: (spotId: string, filters?: Record<string, unknown>) => readonly ["posts", "spot", string, Record<string, unknown> | undefined];
528
+ details: () => readonly ["posts", "detail"];
529
+ detail: (id: string) => readonly ["posts", "detail", string];
530
+ responses: (postId: string) => readonly ["posts", "detail", string, "responses"];
531
+ status: (postId: string) => readonly ["posts", "detail", string, "status"];
532
+ upvotes: (postId: string, filters?: {
533
+ limit?: number;
534
+ offset?: number;
535
+ }) => readonly ["posts", "detail", string, "upvotes", {
536
+ limit?: number;
537
+ offset?: number;
538
+ } | undefined];
539
+ };
540
+ /**
541
+ * Get posts for a spot
542
+ *
543
+ * @endpoint GET /spots/{spotId}/posts
544
+ */
545
+ declare function useSpotPosts(spotId: string, params?: {
546
+ postType?: string;
547
+ status?: string;
548
+ page?: number;
549
+ limit?: number;
550
+ }, options?: Omit<UseQueryOptions<Post[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Post[]>;
551
+ /**
552
+ * Get a single post by ID
553
+ *
554
+ * @endpoint GET /posts/{postId}
555
+ */
556
+ declare function usePost(postId: string, options?: Omit<UseQueryOptions<Post>, 'queryKey' | 'queryFn'>): UseQueryResult<Post>;
557
+ /**
558
+ * Get responses for a post
559
+ *
560
+ * @endpoint GET /posts/{postId}/responses
561
+ */
562
+ declare function usePostResponses(postId: string, options?: Omit<UseQueryOptions<PostResponse[]>, 'queryKey' | 'queryFn'>): UseQueryResult<PostResponse[]>;
563
+ /**
564
+ * Get all posts (with filters)
565
+ *
566
+ * @endpoint GET /posts
567
+ */
568
+ declare function usePosts(params?: {
569
+ postType?: string;
570
+ limit?: number;
571
+ }, options?: Omit<UseQueryOptions<Post[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Post[]>;
572
+ /**
573
+ * Get user's status for a post (read/hidden/pinned)
574
+ *
575
+ * @endpoint GET /posts/{postId}/status
576
+ */
577
+ declare function usePostStatus(postId: string, options?: Omit<UseQueryOptions<PostStatusDto>, 'queryKey' | 'queryFn'>): UseQueryResult<PostStatusDto>;
578
+ /**
579
+ * Get upvotes for a post (list of users who upvoted)
580
+ *
581
+ * @endpoint GET /posts/{postId}/upvotes
582
+ */
583
+ declare function usePostUpvotes(postId: string, params?: {
584
+ limit?: number;
585
+ offset?: number;
586
+ }, options?: Omit<UseQueryOptions<PostUpvotesResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<PostUpvotesResponse>;
587
+ /**
588
+ * Get nearby posts feed
589
+ *
590
+ * @endpoint GET /posts/feed
591
+ */
592
+ declare function usePostsFeed(params: {
593
+ lat: number;
594
+ lng: number;
595
+ radius?: number;
596
+ postType?: string;
597
+ cursor?: string;
598
+ limit?: number;
599
+ }, options?: Omit<UseQueryOptions<{
600
+ posts: Post[];
601
+ hasMore: boolean;
602
+ nextCursor?: string;
603
+ }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
604
+ posts: Post[];
605
+ hasMore: boolean;
606
+ nextCursor?: string;
607
+ }>;
608
+
609
+ /**
610
+ * Conversations Query Hooks
611
+ *
612
+ * TanStack Query hooks for conversation/messaging operations.
613
+ */
614
+
615
+ declare const conversationKeys: {
616
+ all: readonly ["conversations"];
617
+ lists: () => readonly ["conversations", "list"];
618
+ list: () => readonly ["conversations", "list"];
619
+ details: () => readonly ["conversations", "detail"];
620
+ detail: (id: string) => readonly ["conversations", "detail", string];
621
+ messages: (conversationId: string, params?: {
622
+ before?: string;
623
+ }) => readonly ["conversations", "detail", string, "messages", {
624
+ before?: string;
625
+ } | undefined];
626
+ };
627
+ /**
628
+ * Get all conversations for current user
629
+ *
630
+ * @endpoint GET /conversations
631
+ */
632
+ declare function useConversations(options?: Omit<UseQueryOptions<Conversation[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Conversation[]>;
633
+ /**
634
+ * Get a single conversation with details
635
+ *
636
+ * @endpoint GET /conversations/{id}
637
+ */
638
+ declare function useConversation(conversationId: string, options?: Omit<UseQueryOptions<Conversation>, 'queryKey' | 'queryFn'>): UseQueryResult<Conversation>;
639
+ /**
640
+ * Get messages for a conversation
641
+ *
642
+ * @endpoint GET /conversations/{id}/messages
643
+ */
644
+ declare function useConversationMessages(conversationId: string, params?: {
645
+ limit?: number;
646
+ before?: string;
647
+ }, options?: Omit<UseQueryOptions<{
648
+ data: Message[];
649
+ meta: {
650
+ hasMore: boolean;
651
+ oldestMessageAt: string | null;
652
+ };
653
+ }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
654
+ data: Message[];
655
+ meta: {
656
+ hasMore: boolean;
657
+ oldestMessageAt: string | null;
658
+ };
659
+ }>;
660
+
661
+ /**
662
+ * Clubs Query Hooks
663
+ *
664
+ * TanStack Query hooks for club operations.
665
+ */
666
+
667
+ declare const clubKeys: {
668
+ all: readonly ["clubs"];
669
+ bySpot: (spotId: string) => readonly ["clubs", "spot", string];
670
+ details: () => readonly ["clubs", "detail"];
671
+ detail: (id: string) => readonly ["clubs", "detail", string];
672
+ bySlug: (slug: string) => readonly ["clubs", "slug", string];
673
+ byUser: (userId: string) => readonly ["clubs", "user", string];
674
+ membership: (clubId: string, userId: string) => readonly ["clubs", "detail", string, "membership", string];
675
+ };
676
+ /**
677
+ * Get clubs for a spot
678
+ *
679
+ * @endpoint GET /clubs/spot/{spotId}
680
+ */
681
+ declare function useClubsBySpot(spotId: string, options?: Omit<UseQueryOptions<Club[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Club[]>;
682
+ /**
683
+ * Get a club by ID
684
+ *
685
+ * @endpoint GET /clubs/{id}
686
+ */
687
+ declare function useClub(clubId: string, options?: Omit<UseQueryOptions<Club>, 'queryKey' | 'queryFn'>): UseQueryResult<Club>;
688
+ /**
689
+ * Get a club by slug
690
+ *
691
+ * @endpoint GET /clubs/slug/{slug}
692
+ */
693
+ declare function useClubBySlug(slug: string, options?: Omit<UseQueryOptions<Club>, 'queryKey' | 'queryFn'>): UseQueryResult<Club>;
694
+ /**
695
+ * Get clubs for a user
696
+ *
697
+ * @endpoint GET /clubs/user/{userId}
698
+ */
699
+ declare function useClubsByUser(userId: string, options?: Omit<UseQueryOptions<Club[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Club[]>;
700
+ /**
701
+ * Get membership status for a user in a club
702
+ *
703
+ * @endpoint GET /clubs/{id}/membership/{userId}
704
+ */
705
+ declare function useClubMembership(clubId: string, userId: string, options?: Omit<UseQueryOptions<{
706
+ isMember: boolean;
707
+ role?: string;
708
+ }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
709
+ isMember: boolean;
710
+ role?: string;
711
+ }>;
712
+
713
+ /**
714
+ * Templates Query Hooks
715
+ *
716
+ * TanStack Query hooks for post template operations.
717
+ */
718
+
719
+ declare const templateKeys: {
720
+ all: readonly ["templates"];
721
+ lists: () => readonly ["templates", "list"];
722
+ list: (filters?: {
723
+ spotType?: string;
724
+ }) => readonly ["templates", "list", {
725
+ spotType?: string;
726
+ } | undefined];
727
+ details: () => readonly ["templates", "detail"];
728
+ detail: (id: string) => readonly ["templates", "detail", string];
729
+ bySlug: (slug: string) => readonly ["templates", "slug", string];
730
+ };
731
+ /**
732
+ * Get all templates
733
+ *
734
+ * @endpoint GET /templates
735
+ */
736
+ declare function useTemplates(params?: {
737
+ spotType?: string;
738
+ }, options?: Omit<UseQueryOptions<Template[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Template[]>;
739
+ /**
740
+ * Get a template by ID
741
+ *
742
+ * @endpoint GET /templates/{templateId}
743
+ */
744
+ declare function useTemplate(templateId: string, options?: Omit<UseQueryOptions<Template>, 'queryKey' | 'queryFn'>): UseQueryResult<Template>;
745
+ /**
746
+ * Get a template by slug
747
+ *
748
+ * @endpoint GET /templates/slug/{slug}
749
+ */
750
+ declare function useTemplateBySlug(slug: string, options?: Omit<UseQueryOptions<Template>, 'queryKey' | 'queryFn'>): UseQueryResult<Template>;
751
+
752
+ /**
753
+ * Notifications Query Hooks
754
+ *
755
+ * TanStack Query hooks for notification operations.
756
+ */
757
+
758
+ declare const notificationKeys: {
759
+ all: readonly ["notifications"];
760
+ lists: () => readonly ["notifications", "list"];
761
+ list: (params?: {
762
+ limit?: number;
763
+ unreadOnly?: boolean;
764
+ }) => readonly ["notifications", "list", {
765
+ limit?: number;
766
+ unreadOnly?: boolean;
767
+ } | undefined];
768
+ unreadCount: () => readonly ["notifications", "unreadCount"];
769
+ };
770
+ /**
771
+ * Get notifications for current user
772
+ *
773
+ * @endpoint GET /notifications
774
+ */
775
+ declare function useNotifications(params?: {
776
+ limit?: number;
777
+ unreadOnly?: boolean;
778
+ }, options?: Omit<UseQueryOptions<Notification[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Notification[]>;
779
+ /**
780
+ * Get unread notification count
781
+ *
782
+ * @endpoint GET /notifications/unread-count
783
+ */
784
+ declare function useUnreadNotificationCount(options?: Omit<UseQueryOptions<number>, 'queryKey' | 'queryFn'>): UseQueryResult<number>;
785
+
786
+ /**
787
+ * Misc Query Hooks
788
+ *
789
+ * TanStack Query hooks for cities, vibes, and other reference data.
790
+ */
791
+
792
+ declare const miscKeys: {
793
+ cities: () => readonly ["cities"];
794
+ vibes: () => readonly ["vibes"];
795
+ lifeSituations: () => readonly ["life-situations"];
796
+ };
797
+ /**
798
+ * Get all cities
799
+ *
800
+ * @endpoint GET /cities
801
+ */
802
+ declare function useCities(options?: Omit<UseQueryOptions<City[]>, 'queryKey' | 'queryFn'>): UseQueryResult<City[]>;
803
+ /**
804
+ * Get all vibes
805
+ *
806
+ * @endpoint GET /vibes
807
+ */
808
+ declare function useVibes(options?: Omit<UseQueryOptions<Vibe[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Vibe[]>;
809
+ /**
810
+ * Get all life situations (for onboarding)
811
+ *
812
+ * @endpoint GET /life-situations
813
+ */
814
+ declare function useLifeSituations(options?: Omit<UseQueryOptions<LifeSituation[]>, 'queryKey' | 'queryFn'>): UseQueryResult<LifeSituation[]>;
815
+
816
+ /**
817
+ * Products Query Hooks
818
+ *
819
+ * TanStack Query hooks for product-related operations.
820
+ */
821
+
822
+ declare const productKeys: {
823
+ all: readonly ["products"];
824
+ lists: () => readonly ["products", "list"];
825
+ list: (filters?: Record<string, unknown>) => readonly ["products", "list", Record<string, unknown> | undefined];
826
+ details: () => readonly ["products", "detail"];
827
+ detail: (id: string) => readonly ["products", "detail", string];
828
+ bySlug: (spotId: string, slug: string) => readonly ["products", "slug", string, string];
829
+ bySpot: (spotId: string) => readonly ["products", "spot", string];
830
+ };
831
+ interface ProductFilters {
832
+ spotId?: string;
833
+ type?: ProductType;
834
+ status?: ProductStatus;
835
+ limit?: number;
836
+ page?: number;
837
+ }
838
+ interface ProductWithSpot extends Product {
839
+ spot: Pick<Spot, 'id' | 'name' | 'slug'>;
840
+ }
841
+ /**
842
+ * Get products for a spot (public browse)
843
+ *
844
+ * @endpoint GET /spots/{spotId}/products
845
+ */
846
+ declare function useSpotProducts(spotId: string, params?: {
847
+ type?: ProductType;
848
+ limit?: number;
849
+ page?: number;
850
+ }, options?: Omit<UseQueryOptions<PaginatedResponse<Product>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<Product>>;
851
+ /**
852
+ * Get a product by ID
853
+ *
854
+ * @endpoint GET /products/{productId}
855
+ */
856
+ declare function useProduct(productId: string, options?: Omit<UseQueryOptions<ProductWithSpot>, 'queryKey' | 'queryFn'>): UseQueryResult<ProductWithSpot>;
857
+ /**
858
+ * Get a product by slug (within a spot)
859
+ *
860
+ * @endpoint GET /spots/{spotId}/products/slug/{slug}
861
+ */
862
+ declare function useProductBySlug(spotId: string, slug: string, options?: Omit<UseQueryOptions<ProductWithSpot>, 'queryKey' | 'queryFn'>): UseQueryResult<ProductWithSpot>;
863
+
864
+ /**
865
+ * Orders Query Hooks
866
+ *
867
+ * TanStack Query hooks for order-related operations.
868
+ */
869
+
870
+ declare const orderKeys: {
871
+ all: readonly ["orders"];
872
+ lists: () => readonly ["orders", "list"];
873
+ list: (filters?: Record<string, unknown>) => readonly ["orders", "list", Record<string, unknown> | undefined];
874
+ details: () => readonly ["orders", "detail"];
875
+ detail: (id: string) => readonly ["orders", "detail", string];
876
+ myOrders: () => readonly ["orders", "my"];
877
+ spotOrders: (spotId: string) => readonly ["orders", "spot", string];
878
+ };
879
+ interface OrderWithDetails extends Order {
880
+ items: (OrderItem & {
881
+ product: Pick<Product, 'id' | 'name' | 'slug' | 'type' | 'imageUrl'>;
882
+ })[];
883
+ spot: Pick<Spot, 'id' | 'name' | 'slug'>;
884
+ }
885
+ interface OrderFilters {
886
+ status?: OrderStatus;
887
+ limit?: number;
888
+ page?: number;
889
+ }
890
+ /**
891
+ * Get current user's orders (purchases)
892
+ *
893
+ * @endpoint GET /users/me/orders
894
+ */
895
+ declare function useMyOrders(params?: OrderFilters, options?: Omit<UseQueryOptions<PaginatedResponse<OrderWithDetails>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OrderWithDetails>>;
896
+ /**
897
+ * Get a single order by ID
898
+ *
899
+ * @endpoint GET /orders/{orderId}
900
+ */
901
+ declare function useOrder(orderId: string, options?: Omit<UseQueryOptions<OrderWithDetails>, 'queryKey' | 'queryFn'>): UseQueryResult<OrderWithDetails>;
902
+ /**
903
+ * Get orders for a spot (seller view)
904
+ *
905
+ * @endpoint GET /seller/spots/{spotId}/orders
906
+ */
907
+ declare function useSpotOrders(spotId: string, params?: OrderFilters, options?: Omit<UseQueryOptions<PaginatedResponse<OrderWithDetails>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OrderWithDetails>>;
908
+
909
+ /**
910
+ * Wallet Query Hooks
911
+ *
912
+ * TanStack Query hooks for wallet and redemption operations.
913
+ */
914
+
915
+ type RedemptionStatus = 'PENDING' | 'REDEEMED' | 'EXPIRED' | 'CANCELLED' | 'VOID';
916
+ interface WalletProduct {
917
+ id: string;
918
+ name: string;
919
+ type: string;
920
+ imageUrl: string | null;
921
+ }
922
+ interface WalletOrderItem {
923
+ product: WalletProduct;
924
+ quantity: number;
925
+ unitPrice: number;
926
+ }
927
+ interface WalletOrder {
928
+ id: string;
929
+ orderNumber: string;
930
+ spotId: string;
931
+ createdAt: string;
932
+ spot: {
933
+ id: string;
934
+ name: string;
935
+ slug: string;
936
+ address: string | null;
937
+ };
938
+ }
939
+ interface WalletRedemption {
940
+ id: string;
941
+ qrCode: string;
942
+ qrCodeUrl: string | null;
943
+ status: RedemptionStatus;
944
+ validFrom: string;
945
+ validUntil: string;
946
+ redeemedAt: string | null;
947
+ createdAt: string;
948
+ orderItem: WalletOrderItem & {
949
+ order: WalletOrder;
950
+ };
951
+ }
952
+ interface RedemptionLookup extends WalletRedemption {
953
+ redeemedBy: {
954
+ id: string;
955
+ name: string;
956
+ } | null;
957
+ spot: {
958
+ id: string;
959
+ name: string;
960
+ } | null;
961
+ orderItem: WalletOrderItem & {
962
+ order: WalletOrder & {
963
+ user: {
964
+ id: string;
965
+ name: string | null;
966
+ avatarUrl: string | null;
967
+ };
968
+ };
969
+ };
970
+ }
971
+ interface WalletHistoryResponse {
972
+ data: WalletRedemption[];
973
+ meta: {
974
+ total: number;
975
+ page: number;
976
+ limit: number;
977
+ totalPages: number;
978
+ };
979
+ }
980
+ declare const walletKeys: {
981
+ all: readonly ["wallet"];
982
+ active: () => readonly ["wallet", "active"];
983
+ history: (page?: number) => readonly ["wallet", "history", number | undefined];
984
+ redemptions: () => readonly ["redemptions"];
985
+ lookup: (qrCode: string) => readonly ["redemptions", "lookup", string];
986
+ spotRedemptions: (spotId: string, page?: number) => readonly ["redemptions", "spot", string, number | undefined];
987
+ };
988
+ /**
989
+ * Get user's active wallet items (pending redemptions)
990
+ *
991
+ * @endpoint GET /wallet
992
+ */
993
+ declare function useWallet(options?: Omit<UseQueryOptions<WalletRedemption[]>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletRedemption[]>;
994
+ /**
995
+ * Get user's wallet history (all redemptions)
996
+ *
997
+ * @endpoint GET /wallet/history
998
+ */
999
+ declare function useWalletHistory(params?: {
1000
+ page?: number;
1001
+ limit?: number;
1002
+ }, options?: Omit<UseQueryOptions<WalletHistoryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletHistoryResponse>;
1003
+ /**
1004
+ * Lookup redemption by QR code (for scanner)
1005
+ *
1006
+ * @endpoint GET /redemptions/lookup/:qrCode
1007
+ */
1008
+ declare function useRedemptionLookup(qrCode: string, options?: Omit<UseQueryOptions<RedemptionLookup>, 'queryKey' | 'queryFn'>): UseQueryResult<RedemptionLookup>;
1009
+ /**
1010
+ * Get spot's redemption history (for spot owner)
1011
+ *
1012
+ * @endpoint GET /spots/:spotId/redemptions
1013
+ */
1014
+ declare function useSpotRedemptions(spotId: string, params?: {
1015
+ page?: number;
1016
+ limit?: number;
1017
+ }, options?: Omit<UseQueryOptions<WalletHistoryResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<WalletHistoryResponse>;
1018
+
1019
+ /**
1020
+ * Payments Query Hooks
1021
+ *
1022
+ * TanStack Query hooks for payment configuration.
1023
+ */
1024
+
1025
+ declare const paymentKeys: {
1026
+ all: readonly ["payments"];
1027
+ config: () => readonly ["payments", "config"];
1028
+ };
1029
+ /**
1030
+ * Payment configuration returned by GET /payments/config
1031
+ */
1032
+ interface PaymentConfig {
1033
+ stripe: {
1034
+ publishableKey: string | null;
1035
+ enabled: boolean;
1036
+ };
1037
+ coinbase: {
1038
+ enabled: boolean;
1039
+ };
1040
+ supportedMethods: Array<'card' | 'apple_pay' | 'google_pay' | 'crypto'>;
1041
+ }
1042
+ /**
1043
+ * Get payment configuration
1044
+ * Returns publishable keys and enabled payment methods
1045
+ *
1046
+ * @endpoint GET /payments/config
1047
+ */
1048
+ declare function usePaymentConfig(options?: Omit<UseQueryOptions<PaymentConfig>, 'queryKey' | 'queryFn'>): UseQueryResult<PaymentConfig>;
1049
+
1050
+ /**
1051
+ * Users Mutation Hooks
1052
+ *
1053
+ * TanStack Query hooks for user mutation operations.
1054
+ */
1055
+
1056
+ /**
1057
+ * Update current user's profile
1058
+ *
1059
+ * @endpoint PUT /users/me
1060
+ */
1061
+ declare function useUpdateProfile(options?: Omit<UseMutationOptions<User, Error, UpdateProfileRequest>, 'mutationFn'>): UseMutationResult<User, Error, UpdateProfileRequest>;
1062
+ /**
1063
+ * Upload avatar
1064
+ *
1065
+ * Uploads avatar file and updates user profile in one request.
1066
+ *
1067
+ * @endpoint POST /users/me/avatar
1068
+ */
1069
+ declare function useUploadAvatar(options?: Omit<UseMutationOptions<{
1070
+ avatarUrl: string;
1071
+ }, Error, FormData>, 'mutationFn'>): UseMutationResult<{
1072
+ avatarUrl: string;
1073
+ }, Error, FormData>;
1074
+ /**
1075
+ * Delete current user's account
1076
+ *
1077
+ * @endpoint DELETE /users/me
1078
+ */
1079
+ declare function useDeleteAccount(options?: Omit<UseMutationOptions<void, Error, void>, 'mutationFn'>): UseMutationResult<void, Error, void>;
1080
+ /**
1081
+ * Update user vibes
1082
+ *
1083
+ * @endpoint PUT /users/me/vibes
1084
+ */
1085
+ declare function useUpdateVibes(options?: Omit<UseMutationOptions<User, Error, {
1086
+ vibes: string[];
1087
+ }>, 'mutationFn'>): UseMutationResult<User, Error, {
1088
+ vibes: string[];
1089
+ }>;
1090
+ /**
1091
+ * Update user interests
1092
+ *
1093
+ * @endpoint PUT /user/me/interests
1094
+ */
1095
+ declare function useUpdateInterests(options?: Omit<UseMutationOptions<User, Error, {
1096
+ interests: string[];
1097
+ }>, 'mutationFn'>): UseMutationResult<User, Error, {
1098
+ interests: string[];
1099
+ }>;
1100
+ /**
1101
+ * Complete onboarding step
1102
+ *
1103
+ * @endpoint POST /user/me/onboarding-step
1104
+ */
1105
+ declare function useCompleteOnboardingStep(options?: Omit<UseMutationOptions<User, Error, {
1106
+ step: number;
1107
+ }>, 'mutationFn'>): UseMutationResult<User, Error, {
1108
+ step: number;
1109
+ }>;
1110
+ /**
1111
+ * Block a user
1112
+ *
1113
+ * @endpoint POST /users/{id}/block
1114
+ */
1115
+ declare function useBlockUser(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1116
+ /**
1117
+ * Unblock a user
1118
+ *
1119
+ * @endpoint DELETE /users/{id}/block
1120
+ */
1121
+ declare function useUnblockUser(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1122
+
1123
+ /**
1124
+ * Posts Mutation Hooks
1125
+ *
1126
+ * TanStack Query hooks for post/board mutation operations.
1127
+ */
1128
+
1129
+ /**
1130
+ * Create a new post
1131
+ *
1132
+ * @endpoint POST /spots/{spotId}/posts
1133
+ */
1134
+ declare function useCreatePost(options?: Omit<UseMutationOptions<Post, Error, {
1135
+ spotId: string;
1136
+ } & CreatePostRequest>, 'mutationFn'>): UseMutationResult<Post, Error, {
1137
+ spotId: string;
1138
+ } & CreatePostRequest>;
1139
+ /**
1140
+ * Update a post
1141
+ *
1142
+ * @endpoint PUT /posts/{postId}
1143
+ */
1144
+ declare function useUpdatePost(options?: Omit<UseMutationOptions<Post, Error, {
1145
+ postId: string;
1146
+ title?: string;
1147
+ content?: string;
1148
+ }>, 'mutationFn'>): UseMutationResult<Post, Error, {
1149
+ postId: string;
1150
+ title?: string;
1151
+ content?: string;
1152
+ }>;
1153
+ /**
1154
+ * Delete a post
1155
+ *
1156
+ * @endpoint DELETE /posts/{postId}
1157
+ */
1158
+ declare function useDeletePost(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1159
+ /**
1160
+ * Fulfill a post (mark as fulfilled)
1161
+ *
1162
+ * @endpoint PUT /posts/{postId}/fulfill
1163
+ */
1164
+ declare function useFulfillPost(options?: Omit<UseMutationOptions<Post, Error, string>, 'mutationFn'>): UseMutationResult<Post, Error, string>;
1165
+ /**
1166
+ * Upvote/unupvote a post
1167
+ *
1168
+ * @endpoint POST /posts/{postId}/upvote
1169
+ */
1170
+ declare function useUpvotePost(options?: Omit<UseMutationOptions<UpvoteResponse, Error, string>, 'mutationFn'>): UseMutationResult<UpvoteResponse, Error, string>;
1171
+ /**
1172
+ * Create a reply to a post
1173
+ *
1174
+ * @endpoint POST /posts/{postId}/reply
1175
+ */
1176
+ declare function useCreateReply(options?: Omit<UseMutationOptions<unknown, Error, {
1177
+ postId: string;
1178
+ } & CreateReplyRequest>, 'mutationFn'>): UseMutationResult<unknown, Error, {
1179
+ postId: string;
1180
+ } & CreateReplyRequest>;
1181
+ /**
1182
+ * Delete a reply
1183
+ *
1184
+ * @endpoint DELETE /replies/{replyId}
1185
+ */
1186
+ declare function useDeleteReply(options?: Omit<UseMutationOptions<void, Error, {
1187
+ replyId: string;
1188
+ postId: string;
1189
+ }>, 'mutationFn'>): UseMutationResult<void, Error, {
1190
+ replyId: string;
1191
+ postId: string;
1192
+ }>;
1193
+ /**
1194
+ * Respond to a post (express interest)
1195
+ *
1196
+ * @endpoint POST /posts/{postId}/respond
1197
+ */
1198
+ declare function useRespondToPost(options?: Omit<UseMutationOptions<PostResponse, Error, {
1199
+ postId: string;
1200
+ } & RespondToPostRequest>, 'mutationFn'>): UseMutationResult<PostResponse, Error, {
1201
+ postId: string;
1202
+ } & RespondToPostRequest>;
1203
+ /**
1204
+ * Accept or decline a response
1205
+ *
1206
+ * @endpoint PUT /responses/{responseId}
1207
+ */
1208
+ declare function useUpdateResponse(options?: Omit<UseMutationOptions<PostResponse, Error, {
1209
+ responseId: string;
1210
+ postId: string;
1211
+ } & UpdateResponseRequest>, 'mutationFn'>): UseMutationResult<PostResponse, Error, {
1212
+ responseId: string;
1213
+ postId: string;
1214
+ } & UpdateResponseRequest>;
1215
+ /**
1216
+ * Report a post
1217
+ *
1218
+ * @endpoint POST /posts/{postId}/report
1219
+ */
1220
+ declare function useReportPost(options?: Omit<UseMutationOptions<void, Error, {
1221
+ postId: string;
1222
+ reason: string;
1223
+ details?: string;
1224
+ }>, 'mutationFn'>): UseMutationResult<void, Error, {
1225
+ postId: string;
1226
+ reason: string;
1227
+ details?: string;
1228
+ }>;
1229
+ interface PostStatusUpdate {
1230
+ isRead?: boolean;
1231
+ isHidden?: boolean;
1232
+ isPinned?: boolean;
1233
+ }
1234
+ /**
1235
+ * Update user's status for a post (read/hidden/pinned)
1236
+ *
1237
+ * @endpoint PUT /posts/{postId}/status
1238
+ */
1239
+ declare function useUpdatePostStatus(options?: Omit<UseMutationOptions<PostStatusDto, Error, {
1240
+ postId: string;
1241
+ } & PostStatusUpdate>, 'mutationFn'>): UseMutationResult<PostStatusDto, Error, {
1242
+ postId: string;
1243
+ } & PostStatusUpdate>;
1244
+
1245
+ /**
1246
+ * Spots Mutation Hooks
1247
+ *
1248
+ * TanStack Query hooks for spot mutation operations.
1249
+ */
1250
+
1251
+ /**
1252
+ * Create a new spot
1253
+ *
1254
+ * @endpoint POST /spots
1255
+ */
1256
+ declare function useCreateSpot(options?: Omit<UseMutationOptions<Spot, Error, Partial<Spot>>, 'mutationFn'>): UseMutationResult<Spot, Error, Partial<Spot>>;
1257
+ /**
1258
+ * Update a spot
1259
+ *
1260
+ * @endpoint PUT /spots/{spotId}
1261
+ */
1262
+ declare function useUpdateSpot(options?: Omit<UseMutationOptions<Spot, Error, {
1263
+ spotId: string;
1264
+ } & Partial<Spot>>, 'mutationFn'>): UseMutationResult<Spot, Error, {
1265
+ spotId: string;
1266
+ } & Partial<Spot>>;
1267
+ /**
1268
+ * Claim a spot (for business owners)
1269
+ *
1270
+ * @endpoint POST /spots/{spotId}/claim
1271
+ */
1272
+ declare function useClaimSpot(options?: Omit<UseMutationOptions<{
1273
+ claimId: string;
1274
+ }, Error, {
1275
+ spotId: string;
1276
+ } & ClaimSpotRequest>, 'mutationFn'>): UseMutationResult<{
1277
+ claimId: string;
1278
+ }, Error, {
1279
+ spotId: string;
1280
+ } & ClaimSpotRequest>;
1281
+ /**
1282
+ * Subscribe to a spot
1283
+ *
1284
+ * @endpoint POST /spots/{spotId}/subscribe
1285
+ */
1286
+ declare function useSubscribeToSpot(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1287
+ /**
1288
+ * Unsubscribe from a spot
1289
+ *
1290
+ * @endpoint DELETE /spots/{spotId}/subscribe
1291
+ */
1292
+ declare function useUnsubscribeFromSpot(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1293
+ /**
1294
+ * Toggle favorite status on a spot
1295
+ *
1296
+ * @endpoint POST /spots/{spotId}/favorite
1297
+ */
1298
+ declare function useFavoriteSpot(options?: Omit<UseMutationOptions<{
1299
+ isFavorite: boolean;
1300
+ }, Error, string>, 'mutationFn'>): UseMutationResult<{
1301
+ isFavorite: boolean;
1302
+ }, Error, string>;
1303
+ /**
1304
+ * Rate a spot
1305
+ *
1306
+ * @endpoint POST /spots/{spotId}/rate
1307
+ */
1308
+ declare function useRateSpot(options?: Omit<UseMutationOptions<{
1309
+ rating: number;
1310
+ }, Error, {
1311
+ spotId: string;
1312
+ rating: number;
1313
+ }>, 'mutationFn'>): UseMutationResult<{
1314
+ rating: number;
1315
+ }, Error, {
1316
+ spotId: string;
1317
+ rating: number;
1318
+ }>;
1319
+ /**
1320
+ * Report a spot
1321
+ *
1322
+ * @endpoint POST /spots/{spotId}/report
1323
+ */
1324
+ declare function useReportSpot(options?: Omit<UseMutationOptions<{
1325
+ success: boolean;
1326
+ }, Error, {
1327
+ spotId: string;
1328
+ reason: string;
1329
+ details?: string;
1330
+ }>, 'mutationFn'>): UseMutationResult<{
1331
+ success: boolean;
1332
+ }, Error, {
1333
+ spotId: string;
1334
+ reason: string;
1335
+ details?: string;
1336
+ }>;
1337
+
1338
+ /**
1339
+ * Conversations Mutation Hooks
1340
+ *
1341
+ * TanStack Query hooks for conversation/messaging mutation operations.
1342
+ */
1343
+
1344
+ /**
1345
+ * Create a new conversation
1346
+ *
1347
+ * @endpoint POST /conversations
1348
+ */
1349
+ declare function useCreateConversation(options?: Omit<UseMutationOptions<Conversation, Error, CreateConversationRequest>, 'mutationFn'>): UseMutationResult<Conversation, Error, CreateConversationRequest>;
1350
+ /**
1351
+ * Create or get direct conversation with a user
1352
+ *
1353
+ * @endpoint POST /conversations/direct
1354
+ */
1355
+ declare function useCreateDirectConversation(options?: Omit<UseMutationOptions<Conversation, Error, {
1356
+ userId: string;
1357
+ }>, 'mutationFn'>): UseMutationResult<Conversation, Error, {
1358
+ userId: string;
1359
+ }>;
1360
+ /**
1361
+ * Send a message in a conversation
1362
+ *
1363
+ * @endpoint POST /conversations/{id}/messages
1364
+ */
1365
+ declare function useSendMessage(options?: Omit<UseMutationOptions<Message, Error, {
1366
+ conversationId: string;
1367
+ } & SendMessageRequest>, 'mutationFn'>): UseMutationResult<Message, Error, {
1368
+ conversationId: string;
1369
+ } & SendMessageRequest>;
1370
+ /**
1371
+ * Mark conversation as read
1372
+ *
1373
+ * @endpoint PUT /conversations/{id}/read
1374
+ */
1375
+ declare function useMarkConversationAsRead(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1376
+ /**
1377
+ * Send typing indicator
1378
+ *
1379
+ * @endpoint POST /conversations/{id}/typing
1380
+ */
1381
+ declare function useSendTypingIndicator(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1382
+
1383
+ /**
1384
+ * Clubs Mutation Hooks
1385
+ *
1386
+ * TanStack Query hooks for club mutation operations.
1387
+ */
1388
+
1389
+ /**
1390
+ * Create a new club
1391
+ *
1392
+ * @endpoint POST /clubs
1393
+ */
1394
+ declare function useCreateClub(options?: Omit<UseMutationOptions<Club, Error, {
1395
+ spotId: string;
1396
+ name: string;
1397
+ description?: string;
1398
+ }>, 'mutationFn'>): UseMutationResult<Club, Error, {
1399
+ spotId: string;
1400
+ name: string;
1401
+ description?: string;
1402
+ }>;
1403
+ /**
1404
+ * Update a club
1405
+ *
1406
+ * @endpoint PUT /clubs/{id}
1407
+ */
1408
+ declare function useUpdateClub(options?: Omit<UseMutationOptions<Club, Error, {
1409
+ clubId: string;
1410
+ name?: string;
1411
+ description?: string;
1412
+ }>, 'mutationFn'>): UseMutationResult<Club, Error, {
1413
+ clubId: string;
1414
+ name?: string;
1415
+ description?: string;
1416
+ }>;
1417
+ /**
1418
+ * Join a club
1419
+ *
1420
+ * @endpoint POST /clubs/{id}/join
1421
+ */
1422
+ declare function useJoinClub(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1423
+ /**
1424
+ * Leave a club
1425
+ *
1426
+ * @endpoint POST /clubs/{id}/leave
1427
+ */
1428
+ declare function useLeaveClub(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1429
+
1430
+ /**
1431
+ * Notifications Mutation Hooks
1432
+ *
1433
+ * TanStack Query hooks for notification mutation operations.
1434
+ */
1435
+
1436
+ /**
1437
+ * Mark notifications as read
1438
+ *
1439
+ * @endpoint PUT /notifications/read
1440
+ */
1441
+ declare function useMarkNotificationsRead(options?: Omit<UseMutationOptions<void, Error, {
1442
+ notificationIds?: string[];
1443
+ }>, 'mutationFn'>): UseMutationResult<void, Error, {
1444
+ notificationIds?: string[];
1445
+ }>;
1446
+ /**
1447
+ * Register device token for push notifications
1448
+ *
1449
+ * @endpoint POST /device-tokens
1450
+ */
1451
+ declare function useRegisterDeviceToken(options?: Omit<UseMutationOptions<void, Error, {
1452
+ token: string;
1453
+ platform: 'ios' | 'android' | 'web';
1454
+ }>, 'mutationFn'>): UseMutationResult<void, Error, {
1455
+ token: string;
1456
+ platform: 'ios' | 'android' | 'web';
1457
+ }>;
1458
+ /**
1459
+ * Remove device token
1460
+ *
1461
+ * @endpoint DELETE /device-tokens
1462
+ */
1463
+ declare function useRemoveDeviceToken(options?: Omit<UseMutationOptions<void, Error, {
1464
+ token: string;
1465
+ }>, 'mutationFn'>): UseMutationResult<void, Error, {
1466
+ token: string;
1467
+ }>;
1468
+
1469
+ /**
1470
+ * Products Mutation Hooks
1471
+ *
1472
+ * TanStack Query hooks for product mutation operations.
1473
+ */
1474
+
1475
+ interface CreateProductRequest {
1476
+ spotId: string;
1477
+ name: string;
1478
+ slug?: string;
1479
+ description?: string;
1480
+ type: ProductType;
1481
+ price: number;
1482
+ currency?: string;
1483
+ stockQuantity?: number;
1484
+ lowStockThreshold?: number;
1485
+ validFrom?: string;
1486
+ validUntil?: string;
1487
+ deliveryRadiusKm?: number;
1488
+ prepTimeMinutes?: number;
1489
+ maxCapacity?: number;
1490
+ eventDate?: string;
1491
+ imageUrl?: string;
1492
+ metadata?: Record<string, unknown>;
1493
+ }
1494
+ interface UpdateProductRequest {
1495
+ name?: string;
1496
+ description?: string;
1497
+ price?: number;
1498
+ stockQuantity?: number;
1499
+ lowStockThreshold?: number;
1500
+ status?: ProductStatus;
1501
+ validFrom?: string;
1502
+ validUntil?: string;
1503
+ deliveryRadiusKm?: number;
1504
+ prepTimeMinutes?: number;
1505
+ maxCapacity?: number;
1506
+ eventDate?: string;
1507
+ imageUrl?: string;
1508
+ metadata?: Record<string, unknown>;
1509
+ }
1510
+ /**
1511
+ * Create a new product
1512
+ *
1513
+ * @endpoint POST /spots/{spotId}/products
1514
+ */
1515
+ declare function useCreateProduct(options?: Omit<UseMutationOptions<Product, Error, CreateProductRequest>, 'mutationFn'>): UseMutationResult<Product, Error, CreateProductRequest>;
1516
+ /**
1517
+ * Update a product
1518
+ *
1519
+ * @endpoint PUT /products/{productId}
1520
+ */
1521
+ declare function useUpdateProduct(options?: Omit<UseMutationOptions<Product, Error, {
1522
+ productId: string;
1523
+ data: UpdateProductRequest;
1524
+ }>, 'mutationFn'>): UseMutationResult<Product, Error, {
1525
+ productId: string;
1526
+ data: UpdateProductRequest;
1527
+ }>;
1528
+ /**
1529
+ * Delete a product
1530
+ *
1531
+ * @endpoint DELETE /products/{productId}
1532
+ */
1533
+ declare function useDeleteProduct(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
1534
+ /**
1535
+ * Adjust product stock
1536
+ *
1537
+ * @endpoint POST /products/{productId}/stock
1538
+ */
1539
+ declare function useAdjustStock(options?: Omit<UseMutationOptions<Product, Error, {
1540
+ productId: string;
1541
+ quantity: number;
1542
+ reason: 'RESTOCK' | 'ADJUSTMENT';
1543
+ notes?: string;
1544
+ }>, 'mutationFn'>): UseMutationResult<Product, Error, {
1545
+ productId: string;
1546
+ quantity: number;
1547
+ reason: 'RESTOCK' | 'ADJUSTMENT';
1548
+ notes?: string;
1549
+ }>;
1550
+
1551
+ /**
1552
+ * Orders Mutation Hooks
1553
+ *
1554
+ * TanStack Query hooks for order mutation operations.
1555
+ */
1556
+
1557
+ interface CartItem {
1558
+ productId: string;
1559
+ quantity: number;
1560
+ }
1561
+ interface CreateOrderRequest {
1562
+ spotId: string;
1563
+ items: CartItem[];
1564
+ notes?: string;
1565
+ deliveryAddress?: string;
1566
+ }
1567
+ interface CreateOrderResponse extends Order {
1568
+ items: Array<{
1569
+ id: string;
1570
+ productId: string;
1571
+ productName: string;
1572
+ quantity: number;
1573
+ unitPrice: number;
1574
+ totalPrice: number;
1575
+ }>;
1576
+ }
1577
+ interface PaymentIntentResponse {
1578
+ clientSecret: string;
1579
+ paymentIntentId: string;
1580
+ }
1581
+ interface CoinbaseChargeResponse {
1582
+ chargeId: string;
1583
+ chargeCode: string;
1584
+ hostedUrl: string;
1585
+ }
1586
+ /**
1587
+ * Create a new order
1588
+ *
1589
+ * @endpoint POST /orders
1590
+ */
1591
+ declare function useCreateOrder(options?: Omit<UseMutationOptions<CreateOrderResponse, Error, CreateOrderRequest>, 'mutationFn'>): UseMutationResult<CreateOrderResponse, Error, CreateOrderRequest>;
1592
+ /**
1593
+ * Create Stripe PaymentIntent for an order
1594
+ *
1595
+ * @endpoint POST /payments/stripe/intent/{orderId}
1596
+ */
1597
+ declare function useCreateStripeIntent(options?: Omit<UseMutationOptions<PaymentIntentResponse, Error, string>, 'mutationFn'>): UseMutationResult<PaymentIntentResponse, Error, string>;
1598
+ /**
1599
+ * Create Coinbase Commerce charge for an order
1600
+ *
1601
+ * @endpoint POST /payments/coinbase/charge/{orderId}
1602
+ */
1603
+ declare function useCreateCoinbaseCharge(options?: Omit<UseMutationOptions<CoinbaseChargeResponse, Error, string>, 'mutationFn'>): UseMutationResult<CoinbaseChargeResponse, Error, string>;
1604
+ /**
1605
+ * Update order status (seller action)
1606
+ *
1607
+ * @endpoint PUT /orders/{orderId}/status
1608
+ */
1609
+ declare function useUpdateOrderStatus(options?: Omit<UseMutationOptions<OrderWithDetails, Error, {
1610
+ orderId: string;
1611
+ status: OrderStatus;
1612
+ }>, 'mutationFn'>): UseMutationResult<OrderWithDetails, Error, {
1613
+ orderId: string;
1614
+ status: OrderStatus;
1615
+ }>;
1616
+ /**
1617
+ * Cancel an order (buyer action, only for pending orders)
1618
+ *
1619
+ * @endpoint POST /orders/{orderId}/cancel
1620
+ */
1621
+ declare function useCancelOrder(options?: Omit<UseMutationOptions<OrderWithDetails, Error, string>, 'mutationFn'>): UseMutationResult<OrderWithDetails, Error, string>;
1622
+
1623
+ /**
1624
+ * Redemption Mutation Hooks
1625
+ *
1626
+ * TanStack Query mutations for redemption operations.
1627
+ */
1628
+
1629
+ interface RedeemRequest {
1630
+ qrCode: string;
1631
+ spotId?: string;
1632
+ deviceInfo?: string;
1633
+ latitude?: number;
1634
+ longitude?: number;
1635
+ notes?: string;
1636
+ }
1637
+ interface VoidRedemptionRequest {
1638
+ reason: string;
1639
+ }
1640
+ /**
1641
+ * Redeem a QR code (spot owner/staff action)
1642
+ *
1643
+ * @endpoint POST /redemptions/redeem
1644
+ */
1645
+ declare function useRedeem(): UseMutationResult<WalletRedemption, Error, RedeemRequest>;
1646
+ /**
1647
+ * Void a redemption (spot owner action)
1648
+ *
1649
+ * @endpoint PUT /redemptions/:id/void
1650
+ */
1651
+ declare function useVoidRedemption(): UseMutationResult<WalletRedemption, Error, {
1652
+ redemptionId: string;
1653
+ reason: string;
1654
+ }>;
1655
+
1656
+ export { type AuthResponse, type CartItem, type City, type ClaimSpotRequest, type Club, type ClubMember, type ClubMemberRole, type CoinbaseChargeResponse, type Conversation, type CreateConversationRequest, type CreateOrderRequest, type CreateOrderResponse, type CreatePostRequest, type CreateProductRequest, type CreateReplyRequest, type FavoriteSpot, type InfiniteSpotsParams, type Intention, type Interest, type LifeSituation, type Message, type Notification, type Order, type OrderFilters, type OrderItem, type OrderWithDetails, type PaginatedResponse, type PaginationMeta, type PaymentConfig, type PaymentIntentResponse, type Post, type PostReply, type PostReport, type PostResponse, type PostTemplate, type PostUpvote, type PostUpvoter, type PostUpvotesResponse, type Product, type ProductFilters, type ProductWithSpot, type RedeemRequest, type RedemptionLookup, type RedemptionStatus, type ReportStatus, type RespondToPostRequest, type SDKConfig, type SendMessageRequest, type SendOtpRequest, type Spot, type SpotClaim, type SpotImage, type SpotIntention, type SpotPost, type SpotPostType, type SpotSubscription, type SpotSummary, type SpotVibe, type SpotsSummaryMeta, type SpotsSummaryResponse, type Template, type UpdateProductRequest, type UpdateProfileRequest, type UpdateResponseRequest, type UpvoteResponse, type User, type UserVibe, type VerifyOtpRequest, type Vibe, type VoidRedemptionRequest, type WalletHistoryResponse, type WalletOrder, type WalletOrderItem, type WalletProduct, type WalletRedemption, clubKeys, configureSDK, conversationKeys, getApiClient, getConfig, miscKeys, notificationKeys, orderKeys, paymentKeys, postKeys, productKeys, spotKeys, templateKeys, useAdjustStock, useBlockUser, useBlockedUsers, useCancelOrder, useCities, useClaimSpot, useClub, useClubBySlug, useClubMembership, useClubsBySpot, useClubsByUser, useCompleteOnboardingStep, useConversation, useConversationMessages, useConversations, useCreateClub, useCreateCoinbaseCharge, useCreateConversation, useCreateDirectConversation, useCreateOrder, useCreatePost, useCreateProduct, useCreateReply, useCreateSpot, useCreateStripeIntent, useCurrentUser, useDeleteAccount, useDeletePost, useDeleteProduct, useDeleteReply, useFavoriteSpot, useFulfillPost, useInfiniteSpots, useJoinClub, useLeaveClub, useLifeSituations, useMarkConversationAsRead, useMarkNotificationsRead, useMyOrders, useNotifications, useOrder, useOwnedSpots, usePaymentConfig, usePost, usePostResponses, usePostStatus, usePostUpvotes, usePosts, usePostsFeed, useProduct, useProductBySlug, useRateSpot, useRedeem, useRedemptionLookup, useRefreshToken, useRegisterDeviceToken, useRemoveDeviceToken, useReportPost, useReportSpot, useRespondToPost, useSendMessage, useSendOtp, useSendTypingIndicator, useSpot, useSpotByQR, useSpotBySlug, useSpotFavoriteStatus, useSpotImages, useSpotOrders, useSpotPosts, useSpotProducts, useSpotRedemptions, useSpots, useSubscribeToSpot, useTemplate, useTemplateBySlug, useTemplates, useUnblockUser, useUnreadNotificationCount, useUnsubscribeFromSpot, useUpdateClub, useUpdateInterests, useUpdateOrderStatus, useUpdatePost, useUpdatePostStatus, useUpdateProduct, useUpdateProfile, useUpdateResponse, useUpdateSpot, useUpdateVibes, useUploadAvatar, useUpvotePost, useUserActivity, useUserClubs, useUserFavorites, useUserPosts, useUserSpotsSummary, useUserStats, useUserSubscriptions, useVerifyOtp, useVibes, useVoidRedemption, useWallet, useWalletHistory, userKeys, walletKeys };