@growsober/sdk 1.0.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 (129) hide show
  1. package/README.md +276 -0
  2. package/dist/__tests__/e2e.test.d.ts +7 -0
  3. package/dist/__tests__/e2e.test.js +472 -0
  4. package/dist/api/client.d.ts +11 -0
  5. package/dist/api/client.js +61 -0
  6. package/dist/api/mutations/admin.d.ts +167 -0
  7. package/dist/api/mutations/admin.js +326 -0
  8. package/dist/api/mutations/ambassadors.d.ts +52 -0
  9. package/dist/api/mutations/ambassadors.js +148 -0
  10. package/dist/api/mutations/auth.d.ts +267 -0
  11. package/dist/api/mutations/auth.js +332 -0
  12. package/dist/api/mutations/bookings.d.ts +59 -0
  13. package/dist/api/mutations/bookings.js +143 -0
  14. package/dist/api/mutations/event-chat.d.ts +35 -0
  15. package/dist/api/mutations/event-chat.js +147 -0
  16. package/dist/api/mutations/events.d.ts +87 -0
  17. package/dist/api/mutations/events.js +205 -0
  18. package/dist/api/mutations/grow90.d.ts +36 -0
  19. package/dist/api/mutations/grow90.js +132 -0
  20. package/dist/api/mutations/hubs.d.ts +111 -0
  21. package/dist/api/mutations/hubs.js +240 -0
  22. package/dist/api/mutations/index.d.ts +22 -0
  23. package/dist/api/mutations/index.js +39 -0
  24. package/dist/api/mutations/jack.d.ts +61 -0
  25. package/dist/api/mutations/jack.js +104 -0
  26. package/dist/api/mutations/library.d.ts +67 -0
  27. package/dist/api/mutations/library.js +168 -0
  28. package/dist/api/mutations/map.d.ts +153 -0
  29. package/dist/api/mutations/map.js +181 -0
  30. package/dist/api/mutations/matching.d.ts +130 -0
  31. package/dist/api/mutations/matching.js +204 -0
  32. package/dist/api/mutations/notifications.d.ts +63 -0
  33. package/dist/api/mutations/notifications.js +106 -0
  34. package/dist/api/mutations/offers.d.ts +26 -0
  35. package/dist/api/mutations/offers.js +47 -0
  36. package/dist/api/mutations/subscriptions.d.ts +127 -0
  37. package/dist/api/mutations/subscriptions.js +140 -0
  38. package/dist/api/mutations/support.d.ts +165 -0
  39. package/dist/api/mutations/support.js +307 -0
  40. package/dist/api/mutations/users.d.ts +211 -0
  41. package/dist/api/mutations/users.js +261 -0
  42. package/dist/api/queries/admin.d.ts +257 -0
  43. package/dist/api/queries/admin.js +320 -0
  44. package/dist/api/queries/ambassadors.d.ts +53 -0
  45. package/dist/api/queries/ambassadors.js +98 -0
  46. package/dist/api/queries/auth.d.ts +16 -0
  47. package/dist/api/queries/auth.js +25 -0
  48. package/dist/api/queries/bookings.d.ts +91 -0
  49. package/dist/api/queries/bookings.js +102 -0
  50. package/dist/api/queries/businesses.d.ts +212 -0
  51. package/dist/api/queries/businesses.js +154 -0
  52. package/dist/api/queries/event-chat.d.ts +19 -0
  53. package/dist/api/queries/event-chat.js +75 -0
  54. package/dist/api/queries/events.d.ts +322 -0
  55. package/dist/api/queries/events.js +221 -0
  56. package/dist/api/queries/grow90.d.ts +26 -0
  57. package/dist/api/queries/grow90.js +85 -0
  58. package/dist/api/queries/hubs.d.ts +165 -0
  59. package/dist/api/queries/hubs.js +143 -0
  60. package/dist/api/queries/index.d.ts +23 -0
  61. package/dist/api/queries/index.js +40 -0
  62. package/dist/api/queries/jack.d.ts +63 -0
  63. package/dist/api/queries/jack.js +92 -0
  64. package/dist/api/queries/library.d.ts +132 -0
  65. package/dist/api/queries/library.js +120 -0
  66. package/dist/api/queries/map.d.ts +216 -0
  67. package/dist/api/queries/map.js +278 -0
  68. package/dist/api/queries/matching.d.ts +136 -0
  69. package/dist/api/queries/matching.js +161 -0
  70. package/dist/api/queries/notifications.d.ts +78 -0
  71. package/dist/api/queries/notifications.js +88 -0
  72. package/dist/api/queries/offers.d.ts +91 -0
  73. package/dist/api/queries/offers.js +103 -0
  74. package/dist/api/queries/subscriptions.d.ts +56 -0
  75. package/dist/api/queries/subscriptions.js +73 -0
  76. package/dist/api/queries/support.d.ts +106 -0
  77. package/dist/api/queries/support.js +202 -0
  78. package/dist/api/queries/users.d.ts +293 -0
  79. package/dist/api/queries/users.js +370 -0
  80. package/dist/api/types.d.ts +464 -0
  81. package/dist/api/types.js +9 -0
  82. package/dist/hooks/useAuth.d.ts +5 -0
  83. package/dist/hooks/useAuth.js +39 -0
  84. package/dist/hooks/useUser.d.ts +43 -0
  85. package/dist/hooks/useUser.js +44 -0
  86. package/dist/index.d.ts +36 -0
  87. package/dist/index.js +67 -0
  88. package/package.json +62 -0
  89. package/src/__tests__/e2e.test.ts +502 -0
  90. package/src/api/client.ts +71 -0
  91. package/src/api/mutations/admin.ts +531 -0
  92. package/src/api/mutations/ambassadors.ts +185 -0
  93. package/src/api/mutations/auth.ts +350 -0
  94. package/src/api/mutations/bookings.ts +190 -0
  95. package/src/api/mutations/event-chat.ts +177 -0
  96. package/src/api/mutations/events.ts +273 -0
  97. package/src/api/mutations/grow90.ts +169 -0
  98. package/src/api/mutations/hubs.ts +385 -0
  99. package/src/api/mutations/index.ts +23 -0
  100. package/src/api/mutations/jack.ts +130 -0
  101. package/src/api/mutations/library.ts +212 -0
  102. package/src/api/mutations/map.ts +230 -0
  103. package/src/api/mutations/matching.ts +271 -0
  104. package/src/api/mutations/notifications.ts +114 -0
  105. package/src/api/mutations/offers.ts +73 -0
  106. package/src/api/mutations/subscriptions.ts +162 -0
  107. package/src/api/mutations/support.ts +390 -0
  108. package/src/api/mutations/users.ts +271 -0
  109. package/src/api/queries/admin.ts +480 -0
  110. package/src/api/queries/ambassadors.ts +139 -0
  111. package/src/api/queries/auth.ts +24 -0
  112. package/src/api/queries/bookings.ts +135 -0
  113. package/src/api/queries/businesses.ts +203 -0
  114. package/src/api/queries/event-chat.ts +78 -0
  115. package/src/api/queries/events.ts +272 -0
  116. package/src/api/queries/grow90.ts +98 -0
  117. package/src/api/queries/hubs.ts +211 -0
  118. package/src/api/queries/index.ts +24 -0
  119. package/src/api/queries/jack.ts +127 -0
  120. package/src/api/queries/library.ts +166 -0
  121. package/src/api/queries/map.ts +331 -0
  122. package/src/api/queries/matching.ts +238 -0
  123. package/src/api/queries/notifications.ts +103 -0
  124. package/src/api/queries/offers.ts +136 -0
  125. package/src/api/queries/subscriptions.ts +91 -0
  126. package/src/api/queries/support.ts +235 -0
  127. package/src/api/queries/users.ts +393 -0
  128. package/src/api/types.ts +596 -0
  129. package/src/index.ts +57 -0
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * Map Mutation Hooks
4
+ *
5
+ * TanStack Query mutation hooks for map-related write operations.
6
+ * These hooks handle updating user location and visibility settings.
7
+ *
8
+ * @module api/mutations/map
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.useUpdateLocation = useUpdateLocation;
12
+ exports.useUpdateOpenToMeet = useUpdateOpenToMeet;
13
+ const react_query_1 = require("@tanstack/react-query");
14
+ const client_1 = require("../client");
15
+ const map_1 = require("../queries/map");
16
+ const users_1 = require("../queries/users");
17
+ // ============================================================================
18
+ // MUTATION HOOKS
19
+ // ============================================================================
20
+ /**
21
+ * Update current user's location
22
+ *
23
+ * @description
24
+ * Updates the authenticated user's location for display on the member map.
25
+ * Location is only visible to other users if the user has enabled "open to meet".
26
+ *
27
+ * @endpoint PUT /api/v1/map/location
28
+ *
29
+ * @example
30
+ * ```tsx
31
+ * import { useUpdateLocation } from '@growsober/sdk';
32
+ *
33
+ * function LocationUpdater() {
34
+ * const updateLocation = useUpdateLocation();
35
+ *
36
+ * const handleLocationUpdate = async () => {
37
+ * // Get current position from device
38
+ * navigator.geolocation.getCurrentPosition(
39
+ * async (position) => {
40
+ * await updateLocation.mutateAsync({
41
+ * lat: position.coords.latitude,
42
+ * lng: position.coords.longitude,
43
+ * });
44
+ * },
45
+ * (error) => console.error('Location error:', error)
46
+ * );
47
+ * };
48
+ *
49
+ * return (
50
+ * <button onClick={handleLocationUpdate} disabled={updateLocation.isPending}>
51
+ * Update My Location
52
+ * </button>
53
+ * );
54
+ * }
55
+ * ```
56
+ *
57
+ * @example
58
+ * With Expo Location:
59
+ * ```tsx
60
+ * import * as Location from 'expo-location';
61
+ * import { useUpdateLocation } from '@growsober/sdk';
62
+ *
63
+ * function App() {
64
+ * const updateLocation = useUpdateLocation();
65
+ *
66
+ * useEffect(() => {
67
+ * (async () => {
68
+ * const { status } = await Location.requestForegroundPermissionsAsync();
69
+ * if (status === 'granted') {
70
+ * const location = await Location.getCurrentPositionAsync({});
71
+ * updateLocation.mutate({
72
+ * lat: location.coords.latitude,
73
+ * lng: location.coords.longitude,
74
+ * });
75
+ * }
76
+ * })();
77
+ * }, []);
78
+ * }
79
+ * ```
80
+ *
81
+ * @param options - TanStack Query mutation options
82
+ * @returns TanStack Query mutation result
83
+ */
84
+ function useUpdateLocation(options) {
85
+ const queryClient = (0, react_query_1.useQueryClient)();
86
+ return (0, react_query_1.useMutation)({
87
+ mutationFn: async (data) => {
88
+ const client = (0, client_1.getApiClient)();
89
+ const response = await client.put('/api/v1/map/location', data);
90
+ return response.data;
91
+ },
92
+ onSuccess: () => {
93
+ // Invalidate map queries to reflect new location
94
+ queryClient.invalidateQueries({ queryKey: map_1.mapKeys.members() });
95
+ // Also invalidate user data as location is stored on user
96
+ queryClient.invalidateQueries({ queryKey: users_1.userKeys.me() });
97
+ },
98
+ ...options,
99
+ });
100
+ }
101
+ /**
102
+ * Toggle "open to meet" status
103
+ *
104
+ * @description
105
+ * Updates the user's "open to meet" visibility setting.
106
+ * When enabled, the user's location will be visible to other premium members on the map.
107
+ * Premium feature.
108
+ *
109
+ * @endpoint PUT /api/v1/map/open-to-meet
110
+ *
111
+ * @example
112
+ * ```tsx
113
+ * import { useUpdateOpenToMeet } from '@growsober/sdk';
114
+ *
115
+ * function OpenToMeetToggle() {
116
+ * const updateOpenToMeet = useUpdateOpenToMeet();
117
+ * const [isOpen, setIsOpen] = useState(false);
118
+ *
119
+ * const handleToggle = async () => {
120
+ * const newValue = !isOpen;
121
+ * await updateOpenToMeet.mutateAsync({ openToMeet: newValue });
122
+ * setIsOpen(newValue);
123
+ * };
124
+ *
125
+ * return (
126
+ * <Switch
127
+ * checked={isOpen}
128
+ * onChange={handleToggle}
129
+ * disabled={updateOpenToMeet.isPending}
130
+ * />
131
+ * );
132
+ * }
133
+ * ```
134
+ *
135
+ * @example
136
+ * With user state:
137
+ * ```tsx
138
+ * import { useCurrentUser, useUpdateOpenToMeet } from '@growsober/sdk';
139
+ *
140
+ * function OpenToMeetSetting() {
141
+ * const { data: user } = useCurrentUser();
142
+ * const updateOpenToMeet = useUpdateOpenToMeet({
143
+ * onSuccess: (data) => {
144
+ * console.log(data.openToMeet ? 'Now visible on map!' : 'Hidden from map');
145
+ * },
146
+ * });
147
+ *
148
+ * return (
149
+ * <div>
150
+ * <label>Open to Meet</label>
151
+ * <Switch
152
+ * checked={user?.openToMeet}
153
+ * onChange={(checked) => updateOpenToMeet.mutate({ openToMeet: checked })}
154
+ * />
155
+ * <p>Show your location to other members</p>
156
+ * </div>
157
+ * );
158
+ * }
159
+ * ```
160
+ *
161
+ * @param options - TanStack Query mutation options
162
+ * @returns TanStack Query mutation result
163
+ */
164
+ function useUpdateOpenToMeet(options) {
165
+ const queryClient = (0, react_query_1.useQueryClient)();
166
+ return (0, react_query_1.useMutation)({
167
+ mutationFn: async (data) => {
168
+ const client = (0, client_1.getApiClient)();
169
+ const response = await client.put('/api/v1/map/open-to-meet', data);
170
+ return response.data;
171
+ },
172
+ onSuccess: () => {
173
+ // Invalidate user data to reflect new setting
174
+ queryClient.invalidateQueries({ queryKey: users_1.userKeys.me() });
175
+ // Invalidate map queries as visibility has changed
176
+ queryClient.invalidateQueries({ queryKey: map_1.mapKeys.members() });
177
+ },
178
+ ...options,
179
+ });
180
+ }
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9tdXRhdGlvbnMvbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQTJHSCw4Q0F5QkM7QUFpRUQsa0RBeUJDO0FBNU5ELHVEQUsrQjtBQUMvQixzQ0FBeUM7QUFDekMsd0NBQXlDO0FBQ3pDLDRDQUE0QztBQTZCNUMsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStERztBQUNILFNBQWdCLGlCQUFpQixDQUMvQixPQUdDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUEyQixFQUFtQyxFQUFFO1lBQ2pGLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0Isc0JBQXNCLEVBQ3RCLElBQUksQ0FDTCxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsaURBQWlEO1lBQ2pELFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxhQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELDBEQUEwRDtZQUMxRCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4REc7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsT0FHQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBNkIsRUFBK0IsRUFBRTtZQUMvRSxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQy9CLDBCQUEwQixFQUMxQixJQUFJLENBQ0wsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLDhDQUE4QztZQUM5QyxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDM0QsbURBQW1EO1lBQ25ELFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxhQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYXAgTXV0YXRpb24gSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBob29rcyBmb3IgbWFwLXJlbGF0ZWQgd3JpdGUgb3BlcmF0aW9ucy5cbiAqIFRoZXNlIGhvb2tzIGhhbmRsZSB1cGRhdGluZyB1c2VyIGxvY2F0aW9uIGFuZCB2aXNpYmlsaXR5IHNldHRpbmdzLlxuICpcbiAqIEBtb2R1bGUgYXBpL211dGF0aW9ucy9tYXBcbiAqL1xuXG5pbXBvcnQge1xuICB1c2VNdXRhdGlvbixcbiAgVXNlTXV0YXRpb25PcHRpb25zLFxuICBVc2VNdXRhdGlvblJlc3VsdCxcbiAgdXNlUXVlcnlDbGllbnQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgbWFwS2V5cyB9IGZyb20gJy4uL3F1ZXJpZXMvbWFwJztcbmltcG9ydCB7IHVzZXJLZXlzIH0gZnJvbSAnLi4vcXVlcmllcy91c2Vycyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJFUVVFU1QgVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVMb2NhdGlvblJlcXVlc3Qge1xuICBsYXQ6IG51bWJlcjtcbiAgbG5nOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlT3BlblRvTWVldFJlcXVlc3Qge1xuICBvcGVuVG9NZWV0OiBib29sZWFuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVNQT05TRSBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uVXBkYXRlUmVzcG9uc2Uge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3BlblRvTWVldFJlc3BvbnNlIHtcbiAgb3BlblRvTWVldDogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNVVRBVElPTiBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFVwZGF0ZSBjdXJyZW50IHVzZXIncyBsb2NhdGlvblxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVXBkYXRlcyB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgbG9jYXRpb24gZm9yIGRpc3BsYXkgb24gdGhlIG1lbWJlciBtYXAuXG4gKiBMb2NhdGlvbiBpcyBvbmx5IHZpc2libGUgdG8gb3RoZXIgdXNlcnMgaWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgXCJvcGVuIHRvIG1lZXRcIi5cbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvbWFwL2xvY2F0aW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogaW1wb3J0IHsgdXNlVXBkYXRlTG9jYXRpb24gfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gTG9jYXRpb25VcGRhdGVyKCkge1xuICogICBjb25zdCB1cGRhdGVMb2NhdGlvbiA9IHVzZVVwZGF0ZUxvY2F0aW9uKCk7XG4gKlxuICogICBjb25zdCBoYW5kbGVMb2NhdGlvblVwZGF0ZSA9IGFzeW5jICgpID0+IHtcbiAqICAgICAvLyBHZXQgY3VycmVudCBwb3NpdGlvbiBmcm9tIGRldmljZVxuICogICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oXG4gKiAgICAgICBhc3luYyAocG9zaXRpb24pID0+IHtcbiAqICAgICAgICAgYXdhaXQgdXBkYXRlTG9jYXRpb24ubXV0YXRlQXN5bmMoe1xuICogICAgICAgICAgIGxhdDogcG9zaXRpb24uY29vcmRzLmxhdGl0dWRlLFxuICogICAgICAgICAgIGxuZzogcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZSxcbiAqICAgICAgICAgfSk7XG4gKiAgICAgICB9LFxuICogICAgICAgKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKCdMb2NhdGlvbiBlcnJvcjonLCBlcnJvcilcbiAqICAgICApO1xuICogICB9O1xuICpcbiAqICAgcmV0dXJuIChcbiAqICAgICA8YnV0dG9uIG9uQ2xpY2s9e2hhbmRsZUxvY2F0aW9uVXBkYXRlfSBkaXNhYmxlZD17dXBkYXRlTG9jYXRpb24uaXNQZW5kaW5nfT5cbiAqICAgICAgIFVwZGF0ZSBNeSBMb2NhdGlvblxuICogICAgIDwvYnV0dG9uPlxuICogICApO1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFdpdGggRXhwbyBMb2NhdGlvbjpcbiAqIGBgYHRzeFxuICogaW1wb3J0ICogYXMgTG9jYXRpb24gZnJvbSAnZXhwby1sb2NhdGlvbic7XG4gKiBpbXBvcnQgeyB1c2VVcGRhdGVMb2NhdGlvbiB9IGZyb20gJ0Bncm93c29iZXIvc2RrJztcbiAqXG4gKiBmdW5jdGlvbiBBcHAoKSB7XG4gKiAgIGNvbnN0IHVwZGF0ZUxvY2F0aW9uID0gdXNlVXBkYXRlTG9jYXRpb24oKTtcbiAqXG4gKiAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gKiAgICAgKGFzeW5jICgpID0+IHtcbiAqICAgICAgIGNvbnN0IHsgc3RhdHVzIH0gPSBhd2FpdCBMb2NhdGlvbi5yZXF1ZXN0Rm9yZWdyb3VuZFBlcm1pc3Npb25zQXN5bmMoKTtcbiAqICAgICAgIGlmIChzdGF0dXMgPT09ICdncmFudGVkJykge1xuICogICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGF3YWl0IExvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbkFzeW5jKHt9KTtcbiAqICAgICAgICAgdXBkYXRlTG9jYXRpb24ubXV0YXRlKHtcbiAqICAgICAgICAgICBsYXQ6IGxvY2F0aW9uLmNvb3Jkcy5sYXRpdHVkZSxcbiAqICAgICAgICAgICBsbmc6IGxvY2F0aW9uLmNvb3Jkcy5sb25naXR1ZGUsXG4gKiAgICAgICAgIH0pO1xuICogICAgICAgfVxuICogICAgIH0pKCk7XG4gKiAgIH0sIFtdKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICogQHJldHVybnMgVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gcmVzdWx0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVcGRhdGVMb2NhdGlvbihcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPExvY2F0aW9uVXBkYXRlUmVzcG9uc2UsIEVycm9yLCBVcGRhdGVMb2NhdGlvblJlcXVlc3Q+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxMb2NhdGlvblVwZGF0ZVJlc3BvbnNlLCBFcnJvciwgVXBkYXRlTG9jYXRpb25SZXF1ZXN0PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBVcGRhdGVMb2NhdGlvblJlcXVlc3QpOiBQcm9taXNlPExvY2F0aW9uVXBkYXRlUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PExvY2F0aW9uVXBkYXRlUmVzcG9uc2U+KFxuICAgICAgICAnL2FwaS92MS9tYXAvbG9jYXRpb24nLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIC8vIEludmFsaWRhdGUgbWFwIHF1ZXJpZXMgdG8gcmVmbGVjdCBuZXcgbG9jYXRpb25cbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG1hcEtleXMubWVtYmVycygpIH0pO1xuICAgICAgLy8gQWxzbyBpbnZhbGlkYXRlIHVzZXIgZGF0YSBhcyBsb2NhdGlvbiBpcyBzdG9yZWQgb24gdXNlclxuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogdXNlcktleXMubWUoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFRvZ2dsZSBcIm9wZW4gdG8gbWVldFwiIHN0YXR1c1xuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVXBkYXRlcyB0aGUgdXNlcidzIFwib3BlbiB0byBtZWV0XCIgdmlzaWJpbGl0eSBzZXR0aW5nLlxuICogV2hlbiBlbmFibGVkLCB0aGUgdXNlcidzIGxvY2F0aW9uIHdpbGwgYmUgdmlzaWJsZSB0byBvdGhlciBwcmVtaXVtIG1lbWJlcnMgb24gdGhlIG1hcC5cbiAqIFByZW1pdW0gZmVhdHVyZS5cbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvbWFwL29wZW4tdG8tbWVldFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZVVwZGF0ZU9wZW5Ub01lZXQgfSBmcm9tICdAZ3Jvd3NvYmVyL3Nkayc7XG4gKlxuICogZnVuY3Rpb24gT3BlblRvTWVldFRvZ2dsZSgpIHtcbiAqICAgY29uc3QgdXBkYXRlT3BlblRvTWVldCA9IHVzZVVwZGF0ZU9wZW5Ub01lZXQoKTtcbiAqICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAqXG4gKiAgIGNvbnN0IGhhbmRsZVRvZ2dsZSA9IGFzeW5jICgpID0+IHtcbiAqICAgICBjb25zdCBuZXdWYWx1ZSA9ICFpc09wZW47XG4gKiAgICAgYXdhaXQgdXBkYXRlT3BlblRvTWVldC5tdXRhdGVBc3luYyh7IG9wZW5Ub01lZXQ6IG5ld1ZhbHVlIH0pO1xuICogICAgIHNldElzT3BlbihuZXdWYWx1ZSk7XG4gKiAgIH07XG4gKlxuICogICByZXR1cm4gKFxuICogICAgIDxTd2l0Y2hcbiAqICAgICAgIGNoZWNrZWQ9e2lzT3Blbn1cbiAqICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUb2dnbGV9XG4gKiAgICAgICBkaXNhYmxlZD17dXBkYXRlT3BlblRvTWVldC5pc1BlbmRpbmd9XG4gKiAgICAgLz5cbiAqICAgKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBXaXRoIHVzZXIgc3RhdGU6XG4gKiBgYGB0c3hcbiAqIGltcG9ydCB7IHVzZUN1cnJlbnRVc2VyLCB1c2VVcGRhdGVPcGVuVG9NZWV0IH0gZnJvbSAnQGdyb3dzb2Jlci9zZGsnO1xuICpcbiAqIGZ1bmN0aW9uIE9wZW5Ub01lZXRTZXR0aW5nKCkge1xuICogICBjb25zdCB7IGRhdGE6IHVzZXIgfSA9IHVzZUN1cnJlbnRVc2VyKCk7XG4gKiAgIGNvbnN0IHVwZGF0ZU9wZW5Ub01lZXQgPSB1c2VVcGRhdGVPcGVuVG9NZWV0KHtcbiAqICAgICBvblN1Y2Nlc3M6IChkYXRhKSA9PiB7XG4gKiAgICAgICBjb25zb2xlLmxvZyhkYXRhLm9wZW5Ub01lZXQgPyAnTm93IHZpc2libGUgb24gbWFwIScgOiAnSGlkZGVuIGZyb20gbWFwJyk7XG4gKiAgICAgfSxcbiAqICAgfSk7XG4gKlxuICogICByZXR1cm4gKFxuICogICAgIDxkaXY+XG4gKiAgICAgICA8bGFiZWw+T3BlbiB0byBNZWV0PC9sYWJlbD5cbiAqICAgICAgIDxTd2l0Y2hcbiAqICAgICAgICAgY2hlY2tlZD17dXNlcj8ub3BlblRvTWVldH1cbiAqICAgICAgICAgb25DaGFuZ2U9eyhjaGVja2VkKSA9PiB1cGRhdGVPcGVuVG9NZWV0Lm11dGF0ZSh7IG9wZW5Ub01lZXQ6IGNoZWNrZWQgfSl9XG4gKiAgICAgICAvPlxuICogICAgICAgPHA+U2hvdyB5b3VyIGxvY2F0aW9uIHRvIG90aGVyIG1lbWJlcnM8L3A+XG4gKiAgICAgPC9kaXY+XG4gKiAgICk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIHJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXBkYXRlT3BlblRvTWVldChcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPE9wZW5Ub01lZXRSZXNwb25zZSwgRXJyb3IsIFVwZGF0ZU9wZW5Ub01lZXRSZXF1ZXN0PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8T3BlblRvTWVldFJlc3BvbnNlLCBFcnJvciwgVXBkYXRlT3BlblRvTWVldFJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IFVwZGF0ZU9wZW5Ub01lZXRSZXF1ZXN0KTogUHJvbWlzZTxPcGVuVG9NZWV0UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PE9wZW5Ub01lZXRSZXNwb25zZT4oXG4gICAgICAgICcvYXBpL3YxL21hcC9vcGVuLXRvLW1lZXQnLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIC8vIEludmFsaWRhdGUgdXNlciBkYXRhIHRvIHJlZmxlY3QgbmV3IHNldHRpbmdcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHVzZXJLZXlzLm1lKCkgfSk7XG4gICAgICAvLyBJbnZhbGlkYXRlIG1hcCBxdWVyaWVzIGFzIHZpc2liaWxpdHkgaGFzIGNoYW5nZWRcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG1hcEtleXMubWVtYmVycygpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,130 @@
1
+ import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+ import { MatchResponse, BuddyResponse } from '../queries/matching';
3
+ export interface CreateMatchRequest {
4
+ matchedUserId: string;
5
+ message?: string;
6
+ }
7
+ export interface UpdateMatchRequest {
8
+ status: 'ACCEPTED' | 'DECLINED' | 'BLOCKED';
9
+ }
10
+ export interface CreateBuddyRequest {
11
+ buddyId: string;
12
+ message?: string;
13
+ }
14
+ export interface UpdateBuddyRequest {
15
+ status: 'ACCEPTED' | 'DECLINED' | 'ENDED';
16
+ }
17
+ export interface LogBuddyActivityRequest {
18
+ type: 'CHECK_IN' | 'MESSAGE' | 'SUPPORT';
19
+ note?: string;
20
+ }
21
+ /**
22
+ * Create a new match request
23
+ *
24
+ * @endpoint POST /api/v1/matching/matches
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * const createMatch = useCreateMatch();
29
+ * await createMatch.mutateAsync({ matchedUserId: 'user-123' });
30
+ * ```
31
+ */
32
+ export declare function useCreateMatch(options?: Omit<UseMutationOptions<MatchResponse, Error, CreateMatchRequest>, 'mutationFn'>): UseMutationResult<MatchResponse, Error, CreateMatchRequest>;
33
+ /**
34
+ * Update match status (accept/decline/block)
35
+ *
36
+ * @endpoint PUT /api/v1/matching/matches/:matchId
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * const updateMatch = useUpdateMatch();
41
+ * await updateMatch.mutateAsync({ matchId: 'match-123', status: 'ACCEPTED' });
42
+ * ```
43
+ */
44
+ export declare function useUpdateMatch(options?: Omit<UseMutationOptions<MatchResponse, Error, {
45
+ matchId: string;
46
+ data: UpdateMatchRequest;
47
+ }>, 'mutationFn'>): UseMutationResult<MatchResponse, Error, {
48
+ matchId: string;
49
+ data: UpdateMatchRequest;
50
+ }>;
51
+ /**
52
+ * Accept a match (convenience hook)
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * const acceptMatch = useAcceptMatch();
57
+ * await acceptMatch.mutateAsync('match-123');
58
+ * ```
59
+ */
60
+ export declare function useAcceptMatch(options?: Omit<UseMutationOptions<MatchResponse, Error, string>, 'mutationFn'>): UseMutationResult<MatchResponse, Error, string>;
61
+ /**
62
+ * Decline a match (convenience hook)
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * const declineMatch = useDeclineMatch();
67
+ * await declineMatch.mutateAsync('match-123');
68
+ * ```
69
+ */
70
+ export declare function useDeclineMatch(options?: Omit<UseMutationOptions<MatchResponse, Error, string>, 'mutationFn'>): UseMutationResult<MatchResponse, Error, string>;
71
+ /**
72
+ * Delete a match
73
+ *
74
+ * @endpoint DELETE /api/v1/matching/matches/:matchId
75
+ *
76
+ * @example
77
+ * ```tsx
78
+ * const deleteMatch = useDeleteMatch();
79
+ * await deleteMatch.mutateAsync('match-123');
80
+ * ```
81
+ */
82
+ export declare function useDeleteMatch(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
83
+ /**
84
+ * Request someone as accountability buddy
85
+ *
86
+ * @endpoint POST /api/v1/matching/buddies
87
+ *
88
+ * @example
89
+ * ```tsx
90
+ * const requestBuddy = useRequestBuddy();
91
+ * await requestBuddy.mutateAsync({ buddyId: 'user-123' });
92
+ * ```
93
+ */
94
+ export declare function useRequestBuddy(options?: Omit<UseMutationOptions<BuddyResponse, Error, CreateBuddyRequest>, 'mutationFn'>): UseMutationResult<BuddyResponse, Error, CreateBuddyRequest>;
95
+ /**
96
+ * Update buddy request (accept/decline/end)
97
+ *
98
+ * @endpoint PUT /api/v1/matching/buddies/:buddyId
99
+ *
100
+ * @example
101
+ * ```tsx
102
+ * const updateBuddy = useUpdateBuddy();
103
+ * await updateBuddy.mutateAsync({ buddyId: 'buddy-123', data: { status: 'ACCEPTED' } });
104
+ * ```
105
+ */
106
+ export declare function useUpdateBuddy(options?: Omit<UseMutationOptions<BuddyResponse, Error, {
107
+ buddyId: string;
108
+ data: UpdateBuddyRequest;
109
+ }>, 'mutationFn'>): UseMutationResult<BuddyResponse, Error, {
110
+ buddyId: string;
111
+ data: UpdateBuddyRequest;
112
+ }>;
113
+ /**
114
+ * Log activity with buddy (check-in, message)
115
+ *
116
+ * @endpoint POST /api/v1/matching/buddies/:buddyId/activity
117
+ *
118
+ * @example
119
+ * ```tsx
120
+ * const logActivity = useLogBuddyActivity();
121
+ * await logActivity.mutateAsync({ buddyId: 'buddy-123', data: { type: 'CHECK_IN' } });
122
+ * ```
123
+ */
124
+ export declare function useLogBuddyActivity(options?: Omit<UseMutationOptions<void, Error, {
125
+ buddyId: string;
126
+ data: LogBuddyActivityRequest;
127
+ }>, 'mutationFn'>): UseMutationResult<void, Error, {
128
+ buddyId: string;
129
+ data: LogBuddyActivityRequest;
130
+ }>;
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCreateMatch = useCreateMatch;
4
+ exports.useUpdateMatch = useUpdateMatch;
5
+ exports.useAcceptMatch = useAcceptMatch;
6
+ exports.useDeclineMatch = useDeclineMatch;
7
+ exports.useDeleteMatch = useDeleteMatch;
8
+ exports.useRequestBuddy = useRequestBuddy;
9
+ exports.useUpdateBuddy = useUpdateBuddy;
10
+ exports.useLogBuddyActivity = useLogBuddyActivity;
11
+ const react_query_1 = require("@tanstack/react-query");
12
+ const client_1 = require("../client");
13
+ const matching_1 = require("../queries/matching");
14
+ // ============================================================================
15
+ // MUTATION HOOKS
16
+ // ============================================================================
17
+ /**
18
+ * Create a new match request
19
+ *
20
+ * @endpoint POST /api/v1/matching/matches
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * const createMatch = useCreateMatch();
25
+ * await createMatch.mutateAsync({ matchedUserId: 'user-123' });
26
+ * ```
27
+ */
28
+ function useCreateMatch(options) {
29
+ const queryClient = (0, react_query_1.useQueryClient)();
30
+ return (0, react_query_1.useMutation)({
31
+ mutationFn: async (data) => {
32
+ const client = (0, client_1.getApiClient)();
33
+ const response = await client.post('/api/v1/matching/matches', data);
34
+ return response.data?.data || response.data;
35
+ },
36
+ onSuccess: () => {
37
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.matches() });
38
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.stats() });
39
+ },
40
+ ...options,
41
+ });
42
+ }
43
+ /**
44
+ * Update match status (accept/decline/block)
45
+ *
46
+ * @endpoint PUT /api/v1/matching/matches/:matchId
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * const updateMatch = useUpdateMatch();
51
+ * await updateMatch.mutateAsync({ matchId: 'match-123', status: 'ACCEPTED' });
52
+ * ```
53
+ */
54
+ function useUpdateMatch(options) {
55
+ const queryClient = (0, react_query_1.useQueryClient)();
56
+ return (0, react_query_1.useMutation)({
57
+ mutationFn: async ({ matchId, data }) => {
58
+ const client = (0, client_1.getApiClient)();
59
+ const response = await client.put(`/api/v1/matching/matches/${matchId}`, data);
60
+ return response.data?.data || response.data;
61
+ },
62
+ onSuccess: () => {
63
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.matches() });
64
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.stats() });
65
+ },
66
+ ...options,
67
+ });
68
+ }
69
+ /**
70
+ * Accept a match (convenience hook)
71
+ *
72
+ * @example
73
+ * ```tsx
74
+ * const acceptMatch = useAcceptMatch();
75
+ * await acceptMatch.mutateAsync('match-123');
76
+ * ```
77
+ */
78
+ function useAcceptMatch(options) {
79
+ const updateMatch = useUpdateMatch();
80
+ return {
81
+ ...updateMatch,
82
+ mutate: (matchId, mutateOptions) => updateMatch.mutate({ matchId, data: { status: 'ACCEPTED' } }, mutateOptions),
83
+ mutateAsync: (matchId) => updateMatch.mutateAsync({ matchId, data: { status: 'ACCEPTED' } }),
84
+ };
85
+ }
86
+ /**
87
+ * Decline a match (convenience hook)
88
+ *
89
+ * @example
90
+ * ```tsx
91
+ * const declineMatch = useDeclineMatch();
92
+ * await declineMatch.mutateAsync('match-123');
93
+ * ```
94
+ */
95
+ function useDeclineMatch(options) {
96
+ const updateMatch = useUpdateMatch();
97
+ return {
98
+ ...updateMatch,
99
+ mutate: (matchId, mutateOptions) => updateMatch.mutate({ matchId, data: { status: 'DECLINED' } }, mutateOptions),
100
+ mutateAsync: (matchId) => updateMatch.mutateAsync({ matchId, data: { status: 'DECLINED' } }),
101
+ };
102
+ }
103
+ /**
104
+ * Delete a match
105
+ *
106
+ * @endpoint DELETE /api/v1/matching/matches/:matchId
107
+ *
108
+ * @example
109
+ * ```tsx
110
+ * const deleteMatch = useDeleteMatch();
111
+ * await deleteMatch.mutateAsync('match-123');
112
+ * ```
113
+ */
114
+ function useDeleteMatch(options) {
115
+ const queryClient = (0, react_query_1.useQueryClient)();
116
+ return (0, react_query_1.useMutation)({
117
+ mutationFn: async (matchId) => {
118
+ const client = (0, client_1.getApiClient)();
119
+ await client.delete(`/api/v1/matching/matches/${matchId}`);
120
+ },
121
+ onSuccess: () => {
122
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.matches() });
123
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.stats() });
124
+ },
125
+ ...options,
126
+ });
127
+ }
128
+ /**
129
+ * Request someone as accountability buddy
130
+ *
131
+ * @endpoint POST /api/v1/matching/buddies
132
+ *
133
+ * @example
134
+ * ```tsx
135
+ * const requestBuddy = useRequestBuddy();
136
+ * await requestBuddy.mutateAsync({ buddyId: 'user-123' });
137
+ * ```
138
+ */
139
+ function useRequestBuddy(options) {
140
+ const queryClient = (0, react_query_1.useQueryClient)();
141
+ return (0, react_query_1.useMutation)({
142
+ mutationFn: async (data) => {
143
+ const client = (0, client_1.getApiClient)();
144
+ const response = await client.post('/api/v1/matching/buddies', data);
145
+ return response.data?.data || response.data;
146
+ },
147
+ onSuccess: () => {
148
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.buddies() });
149
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.buddyRequests() });
150
+ },
151
+ ...options,
152
+ });
153
+ }
154
+ /**
155
+ * Update buddy request (accept/decline/end)
156
+ *
157
+ * @endpoint PUT /api/v1/matching/buddies/:buddyId
158
+ *
159
+ * @example
160
+ * ```tsx
161
+ * const updateBuddy = useUpdateBuddy();
162
+ * await updateBuddy.mutateAsync({ buddyId: 'buddy-123', data: { status: 'ACCEPTED' } });
163
+ * ```
164
+ */
165
+ function useUpdateBuddy(options) {
166
+ const queryClient = (0, react_query_1.useQueryClient)();
167
+ return (0, react_query_1.useMutation)({
168
+ mutationFn: async ({ buddyId, data }) => {
169
+ const client = (0, client_1.getApiClient)();
170
+ const response = await client.put(`/api/v1/matching/buddies/${buddyId}`, data);
171
+ return response.data?.data || response.data;
172
+ },
173
+ onSuccess: () => {
174
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.buddies() });
175
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.buddyRequests() });
176
+ },
177
+ ...options,
178
+ });
179
+ }
180
+ /**
181
+ * Log activity with buddy (check-in, message)
182
+ *
183
+ * @endpoint POST /api/v1/matching/buddies/:buddyId/activity
184
+ *
185
+ * @example
186
+ * ```tsx
187
+ * const logActivity = useLogBuddyActivity();
188
+ * await logActivity.mutateAsync({ buddyId: 'buddy-123', data: { type: 'CHECK_IN' } });
189
+ * ```
190
+ */
191
+ function useLogBuddyActivity(options) {
192
+ const queryClient = (0, react_query_1.useQueryClient)();
193
+ return (0, react_query_1.useMutation)({
194
+ mutationFn: async ({ buddyId, data }) => {
195
+ const client = (0, client_1.getApiClient)();
196
+ await client.post(`/api/v1/matching/buddies/${buddyId}/activity`, data);
197
+ },
198
+ onSuccess: () => {
199
+ queryClient.invalidateQueries({ queryKey: matching_1.matchingKeys.buddies() });
200
+ },
201
+ ...options,
202
+ });
203
+ }
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9tYXRjaGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQW1EQSx3Q0FpQkM7QUFhRCx3Q0FvQkM7QUFXRCx3Q0FZQztBQVdELDBDQVlDO0FBYUQsd0NBZ0JDO0FBYUQsMENBaUJDO0FBYUQsd0NBb0JDO0FBYUQsa0RBa0JDO0FBOVFELHVEQUsrQjtBQUMvQixzQ0FBeUM7QUFDekMsa0RBQWlGO0FBNkJqRiwrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUM1QixPQUEwRjtJQUUxRixNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLElBQXdCLEVBQTBCLEVBQUU7WUFDckUsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QyxDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSx1QkFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsdUJBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVH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QUFNLENBQUMsR0FBRyxDQUFDLDRCQUE0QixPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMvRSxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDOUMsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsdUJBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHVCQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyxPQUdDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBaUIsRUFBRTtZQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLE9BQU8sV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHVCQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXNlTXV0YXRpb24sXG4gIHVzZVF1ZXJ5Q2xpZW50LFxuICBVc2VNdXRhdGlvbk9wdGlvbnMsXG4gIFVzZU11dGF0aW9uUmVzdWx0LFxufSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IG1hdGNoaW5nS2V5cywgTWF0Y2hSZXNwb25zZSwgQnVkZHlSZXNwb25zZSB9IGZyb20gJy4uL3F1ZXJpZXMvbWF0Y2hpbmcnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVFVRVNUIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlTWF0Y2hSZXF1ZXN0IHtcbiAgbWF0Y2hlZFVzZXJJZDogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZU1hdGNoUmVxdWVzdCB7XG4gIHN0YXR1czogJ0FDQ0VQVEVEJyB8ICdERUNMSU5FRCcgfCAnQkxPQ0tFRCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQnVkZHlSZXF1ZXN0IHtcbiAgYnVkZHlJZDogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUJ1ZGR5UmVxdWVzdCB7XG4gIHN0YXR1czogJ0FDQ0VQVEVEJyB8ICdERUNMSU5FRCcgfCAnRU5ERUQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ0J1ZGR5QWN0aXZpdHlSZXF1ZXN0IHtcbiAgdHlwZTogJ0NIRUNLX0lOJyB8ICdNRVNTQUdFJyB8ICdTVVBQT1JUJztcbiAgbm90ZT86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTVVUQVRJT04gSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgbWF0Y2ggcmVxdWVzdFxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvbWF0Y2hpbmcvbWF0Y2hlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGNyZWF0ZU1hdGNoID0gdXNlQ3JlYXRlTWF0Y2goKTtcbiAqIGF3YWl0IGNyZWF0ZU1hdGNoLm11dGF0ZUFzeW5jKHsgbWF0Y2hlZFVzZXJJZDogJ3VzZXItMTIzJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlTWF0Y2goXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxNYXRjaFJlc3BvbnNlLCBFcnJvciwgQ3JlYXRlTWF0Y2hSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8TWF0Y2hSZXNwb25zZSwgRXJyb3IsIENyZWF0ZU1hdGNoUmVxdWVzdD4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlTWF0Y2hSZXF1ZXN0KTogUHJvbWlzZTxNYXRjaFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoJy9hcGkvdjEvbWF0Y2hpbmcvbWF0Y2hlcycsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogbWF0Y2hpbmdLZXlzLm1hdGNoZXMoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG1hdGNoaW5nS2V5cy5zdGF0cygpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogVXBkYXRlIG1hdGNoIHN0YXR1cyAoYWNjZXB0L2RlY2xpbmUvYmxvY2spXG4gKlxuICogQGVuZHBvaW50IFBVVCAvYXBpL3YxL21hdGNoaW5nL21hdGNoZXMvOm1hdGNoSWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB1cGRhdGVNYXRjaCA9IHVzZVVwZGF0ZU1hdGNoKCk7XG4gKiBhd2FpdCB1cGRhdGVNYXRjaC5tdXRhdGVBc3luYyh7IG1hdGNoSWQ6ICdtYXRjaC0xMjMnLCBzdGF0dXM6ICdBQ0NFUFRFRCcgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZU1hdGNoKFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8TWF0Y2hSZXNwb25zZSwgRXJyb3IsIHsgbWF0Y2hJZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVNYXRjaFJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PE1hdGNoUmVzcG9uc2UsIEVycm9yLCB7IG1hdGNoSWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlTWF0Y2hSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHsgbWF0Y2hJZCwgZGF0YSB9KTogUHJvbWlzZTxNYXRjaFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dChgL2FwaS92MS9tYXRjaGluZy9tYXRjaGVzLyR7bWF0Y2hJZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG1hdGNoaW5nS2V5cy5tYXRjaGVzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBtYXRjaGluZ0tleXMuc3RhdHMoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEFjY2VwdCBhIG1hdGNoIChjb252ZW5pZW5jZSBob29rKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGFjY2VwdE1hdGNoID0gdXNlQWNjZXB0TWF0Y2goKTtcbiAqIGF3YWl0IGFjY2VwdE1hdGNoLm11dGF0ZUFzeW5jKCdtYXRjaC0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWNjZXB0TWF0Y2goXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxNYXRjaFJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8TWF0Y2hSZXNwb25zZSwgRXJyb3IsIHN0cmluZz4ge1xuICBjb25zdCB1cGRhdGVNYXRjaCA9IHVzZVVwZGF0ZU1hdGNoKCk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi51cGRhdGVNYXRjaCxcbiAgICBtdXRhdGU6IChtYXRjaElkOiBzdHJpbmcsIG11dGF0ZU9wdGlvbnM/OiBhbnkpID0+XG4gICAgICB1cGRhdGVNYXRjaC5tdXRhdGUoeyBtYXRjaElkLCBkYXRhOiB7IHN0YXR1czogJ0FDQ0VQVEVEJyB9IH0sIG11dGF0ZU9wdGlvbnMpLFxuICAgIG11dGF0ZUFzeW5jOiAobWF0Y2hJZDogc3RyaW5nKSA9PlxuICAgICAgdXBkYXRlTWF0Y2gubXV0YXRlQXN5bmMoeyBtYXRjaElkLCBkYXRhOiB7IHN0YXR1czogJ0FDQ0VQVEVEJyB9IH0pLFxuICB9IGFzIFVzZU11dGF0aW9uUmVzdWx0PE1hdGNoUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIERlY2xpbmUgYSBtYXRjaCAoY29udmVuaWVuY2UgaG9vaylcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBkZWNsaW5lTWF0Y2ggPSB1c2VEZWNsaW5lTWF0Y2goKTtcbiAqIGF3YWl0IGRlY2xpbmVNYXRjaC5tdXRhdGVBc3luYygnbWF0Y2gtMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlY2xpbmVNYXRjaChcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPE1hdGNoUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxNYXRjaFJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHVwZGF0ZU1hdGNoID0gdXNlVXBkYXRlTWF0Y2goKTtcblxuICByZXR1cm4ge1xuICAgIC4uLnVwZGF0ZU1hdGNoLFxuICAgIG11dGF0ZTogKG1hdGNoSWQ6IHN0cmluZywgbXV0YXRlT3B0aW9ucz86IGFueSkgPT5cbiAgICAgIHVwZGF0ZU1hdGNoLm11dGF0ZSh7IG1hdGNoSWQsIGRhdGE6IHsgc3RhdHVzOiAnREVDTElORUQnIH0gfSwgbXV0YXRlT3B0aW9ucyksXG4gICAgbXV0YXRlQXN5bmM6IChtYXRjaElkOiBzdHJpbmcpID0+XG4gICAgICB1cGRhdGVNYXRjaC5tdXRhdGVBc3luYyh7IG1hdGNoSWQsIGRhdGE6IHsgc3RhdHVzOiAnREVDTElORUQnIH0gfSksXG4gIH0gYXMgVXNlTXV0YXRpb25SZXN1bHQ8TWF0Y2hSZXNwb25zZSwgRXJyb3IsIHN0cmluZz47XG59XG5cbi8qKlxuICogRGVsZXRlIGEgbWF0Y2hcbiAqXG4gKiBAZW5kcG9pbnQgREVMRVRFIC9hcGkvdjEvbWF0Y2hpbmcvbWF0Y2hlcy86bWF0Y2hJZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGRlbGV0ZU1hdGNoID0gdXNlRGVsZXRlTWF0Y2goKTtcbiAqIGF3YWl0IGRlbGV0ZU1hdGNoLm11dGF0ZUFzeW5jKCdtYXRjaC0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRGVsZXRlTWF0Y2goXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczx2b2lkLCBFcnJvciwgc3RyaW5nPiwgJ211dGF0aW9uRm4nPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8dm9pZCwgRXJyb3IsIHN0cmluZz4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAobWF0Y2hJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5kZWxldGUoYC9hcGkvdjEvbWF0Y2hpbmcvbWF0Y2hlcy8ke21hdGNoSWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG1hdGNoaW5nS2V5cy5tYXRjaGVzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBtYXRjaGluZ0tleXMuc3RhdHMoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlcXVlc3Qgc29tZW9uZSBhcyBhY2NvdW50YWJpbGl0eSBidWRkeVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvbWF0Y2hpbmcvYnVkZGllc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHJlcXVlc3RCdWRkeSA9IHVzZVJlcXVlc3RCdWRkeSgpO1xuICogYXdhaXQgcmVxdWVzdEJ1ZGR5Lm11dGF0ZUFzeW5jKHsgYnVkZHlJZDogJ3VzZXItMTIzJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVxdWVzdEJ1ZGR5KFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8QnVkZHlSZXNwb25zZSwgRXJyb3IsIENyZWF0ZUJ1ZGR5UmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEJ1ZGR5UmVzcG9uc2UsIEVycm9yLCBDcmVhdGVCdWRkeVJlcXVlc3Q+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IENyZWF0ZUJ1ZGR5UmVxdWVzdCk6IFByb21pc2U8QnVkZHlSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KCcvYXBpL3YxL21hdGNoaW5nL2J1ZGRpZXMnLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG1hdGNoaW5nS2V5cy5idWRkaWVzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBtYXRjaGluZ0tleXMuYnVkZHlSZXF1ZXN0cygpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGJ1ZGR5IHJlcXVlc3QgKGFjY2VwdC9kZWNsaW5lL2VuZClcbiAqXG4gKiBAZW5kcG9pbnQgUFVUIC9hcGkvdjEvbWF0Y2hpbmcvYnVkZGllcy86YnVkZHlJZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHVwZGF0ZUJ1ZGR5ID0gdXNlVXBkYXRlQnVkZHkoKTtcbiAqIGF3YWl0IHVwZGF0ZUJ1ZGR5Lm11dGF0ZUFzeW5jKHsgYnVkZHlJZDogJ2J1ZGR5LTEyMycsIGRhdGE6IHsgc3RhdHVzOiAnQUNDRVBURUQnIH0gfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUJ1ZGR5KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8QnVkZHlSZXNwb25zZSwgRXJyb3IsIHsgYnVkZHlJZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVCdWRkeVJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEJ1ZGR5UmVzcG9uc2UsIEVycm9yLCB7IGJ1ZGR5SWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlQnVkZHlSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHsgYnVkZHlJZCwgZGF0YSB9KTogUHJvbWlzZTxCdWRkeVJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dChgL2FwaS92MS9tYXRjaGluZy9idWRkaWVzLyR7YnVkZHlJZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhPy5kYXRhIHx8IHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG1hdGNoaW5nS2V5cy5idWRkaWVzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBtYXRjaGluZ0tleXMuYnVkZHlSZXF1ZXN0cygpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogTG9nIGFjdGl2aXR5IHdpdGggYnVkZHkgKGNoZWNrLWluLCBtZXNzYWdlKVxuICpcbiAqIEBlbmRwb2ludCBQT1NUIC9hcGkvdjEvbWF0Y2hpbmcvYnVkZGllcy86YnVkZHlJZC9hY3Rpdml0eVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGxvZ0FjdGl2aXR5ID0gdXNlTG9nQnVkZHlBY3Rpdml0eSgpO1xuICogYXdhaXQgbG9nQWN0aXZpdHkubXV0YXRlQXN5bmMoeyBidWRkeUlkOiAnYnVkZHktMTIzJywgZGF0YTogeyB0eXBlOiAnQ0hFQ0tfSU4nIH0gfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxvZ0J1ZGR5QWN0aXZpdHkoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczx2b2lkLCBFcnJvciwgeyBidWRkeUlkOiBzdHJpbmc7IGRhdGE6IExvZ0J1ZGR5QWN0aXZpdHlSZXF1ZXN0IH0+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDx2b2lkLCBFcnJvciwgeyBidWRkeUlkOiBzdHJpbmc7IGRhdGE6IExvZ0J1ZGR5QWN0aXZpdHlSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHsgYnVkZHlJZCwgZGF0YSB9KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL21hdGNoaW5nL2J1ZGRpZXMvJHtidWRkeUlkfS9hY3Rpdml0eWAsIGRhdGEpO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBtYXRjaGluZ0tleXMuYnVkZGllcygpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { UseMutationOptions } from '@tanstack/react-query';
2
+ import type { NotificationResponse } from '../types';
3
+ /**
4
+ * Mark a notification as read
5
+ *
6
+ * @param options - TanStack Query mutation options
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const { mutate: markAsRead } = useMarkNotificationRead();
11
+ *
12
+ * const handleNotificationClick = (notificationId: string) => {
13
+ * markAsRead(notificationId);
14
+ * };
15
+ * ```
16
+ */
17
+ export declare function useMarkNotificationRead(options?: Omit<UseMutationOptions<NotificationResponse, Error, string>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
18
+ id: string;
19
+ userId: string;
20
+ type: "EVENT_REMINDER" | "EVENT_CANCELLED" | "EVENT_UPDATED" | "NEW_EVENT" | "HUB_WELCOME" | "NEW_MEMBER" | "STREAK_MILESTONE" | "DAILY_REMINDER" | "JACK_RESPONSE" | "WEEKLY_REFLECTION" | "BADGE_EARNED" | "SYSTEM_UPDATE";
21
+ title: string;
22
+ body?: Record<string, never>;
23
+ data?: Record<string, never>;
24
+ imageUrl?: Record<string, never>;
25
+ channel: "APP" | "EMAIL" | "PUSH" | "SMS" | "WHATSAPP";
26
+ isRead: boolean;
27
+ sentAt?: Record<string, never>;
28
+ readAt?: Record<string, never>;
29
+ actionUrl?: Record<string, never>;
30
+ deliveryStatus: "PENDING" | "SENT" | "DELIVERED" | "FAILED";
31
+ errorMessage?: Record<string, never>;
32
+ createdAt: string;
33
+ }, Error, string, unknown>;
34
+ /**
35
+ * Mark all notifications as read
36
+ *
37
+ * @param options - TanStack Query mutation options
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * const { mutate: markAllRead, isPending } = useMarkAllNotificationsRead();
42
+ *
43
+ * const handleMarkAllRead = () => {
44
+ * markAllRead();
45
+ * };
46
+ * ```
47
+ */
48
+ export declare function useMarkAllNotificationsRead(options?: Omit<UseMutationOptions<void, Error, void>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>;
49
+ /**
50
+ * Delete a notification
51
+ *
52
+ * @param options - TanStack Query mutation options
53
+ *
54
+ * @example
55
+ * ```tsx
56
+ * const { mutate: deleteNotification } = useDeleteNotification();
57
+ *
58
+ * const handleDelete = (notificationId: string) => {
59
+ * deleteNotification(notificationId);
60
+ * };
61
+ * ```
62
+ */
63
+ export declare function useDeleteNotification(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;