@spotsdev/sdk 1.3.3 → 1.5.0

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