@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,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMarkNotificationRead = useMarkNotificationRead;
4
+ exports.useMarkAllNotificationsRead = useMarkAllNotificationsRead;
5
+ exports.useDeleteNotification = useDeleteNotification;
6
+ const react_query_1 = require("@tanstack/react-query");
7
+ const client_1 = require("../client");
8
+ const notifications_1 = require("../queries/notifications");
9
+ // ============================================================================
10
+ // MUTATION HOOKS
11
+ // ============================================================================
12
+ /**
13
+ * Mark a notification as read
14
+ *
15
+ * @param options - TanStack Query mutation options
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * const { mutate: markAsRead } = useMarkNotificationRead();
20
+ *
21
+ * const handleNotificationClick = (notificationId: string) => {
22
+ * markAsRead(notificationId);
23
+ * };
24
+ * ```
25
+ */
26
+ function useMarkNotificationRead(options) {
27
+ const queryClient = (0, react_query_1.useQueryClient)();
28
+ return (0, react_query_1.useMutation)({
29
+ mutationFn: async (id) => {
30
+ const client = (0, client_1.getApiClient)();
31
+ const response = await client.patch(`/api/v1/notifications/${id}/read`);
32
+ return response.data;
33
+ },
34
+ onSuccess: (data, id, context) => {
35
+ // Update notification in cache
36
+ queryClient.setQueryData(notifications_1.notificationKeys.detail(id), data);
37
+ // Invalidate lists to refetch
38
+ queryClient.invalidateQueries({ queryKey: notifications_1.notificationKeys.list() });
39
+ queryClient.invalidateQueries({ queryKey: notifications_1.notificationKeys.unreadCount() });
40
+ // User's onSuccess is handled by spreading options
41
+ },
42
+ ...options,
43
+ });
44
+ }
45
+ /**
46
+ * Mark all notifications as read
47
+ *
48
+ * @param options - TanStack Query mutation options
49
+ *
50
+ * @example
51
+ * ```tsx
52
+ * const { mutate: markAllRead, isPending } = useMarkAllNotificationsRead();
53
+ *
54
+ * const handleMarkAllRead = () => {
55
+ * markAllRead();
56
+ * };
57
+ * ```
58
+ */
59
+ function useMarkAllNotificationsRead(options) {
60
+ const queryClient = (0, react_query_1.useQueryClient)();
61
+ return (0, react_query_1.useMutation)({
62
+ mutationFn: async () => {
63
+ const client = (0, client_1.getApiClient)();
64
+ await client.patch('/api/v1/notifications/read-all');
65
+ },
66
+ onSuccess: (data, variables, context) => {
67
+ // Invalidate all notification queries
68
+ queryClient.invalidateQueries({ queryKey: notifications_1.notificationKeys.all });
69
+ // User's onSuccess is handled by spreading options
70
+ },
71
+ ...options,
72
+ });
73
+ }
74
+ /**
75
+ * Delete a notification
76
+ *
77
+ * @param options - TanStack Query mutation options
78
+ *
79
+ * @example
80
+ * ```tsx
81
+ * const { mutate: deleteNotification } = useDeleteNotification();
82
+ *
83
+ * const handleDelete = (notificationId: string) => {
84
+ * deleteNotification(notificationId);
85
+ * };
86
+ * ```
87
+ */
88
+ function useDeleteNotification(options) {
89
+ const queryClient = (0, react_query_1.useQueryClient)();
90
+ return (0, react_query_1.useMutation)({
91
+ mutationFn: async (id) => {
92
+ const client = (0, client_1.getApiClient)();
93
+ await client.delete(`/api/v1/notifications/${id}`);
94
+ },
95
+ onSuccess: (data, id, context) => {
96
+ // Remove from cache
97
+ queryClient.removeQueries({ queryKey: notifications_1.notificationKeys.detail(id) });
98
+ // Invalidate lists to refetch
99
+ queryClient.invalidateQueries({ queryKey: notifications_1.notificationKeys.list() });
100
+ queryClient.invalidateQueries({ queryKey: notifications_1.notificationKeys.unreadCount() });
101
+ // User's onSuccess is handled by spreading options
102
+ },
103
+ ...options,
104
+ });
105
+ }
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvbXV0YXRpb25zL25vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1QkEsMERBcUJDO0FBZ0JELGtFQWlCQztBQWdCRCxzREFvQkM7QUFqSEQsdURBQXdGO0FBQ3hGLHNDQUF5QztBQUN6Qyw0REFBNEQ7QUFHNUQsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxPQUFxRjtJQUVyRixNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQVUsRUFBaUMsRUFBRTtZQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDeEUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQy9CLCtCQUErQjtZQUMvQixXQUFXLENBQUMsWUFBWSxDQUFDLGdDQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RCw4QkFBOEI7WUFDOUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdDQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0NBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLG1EQUFtRDtRQUNyRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FDekMsT0FBbUU7SUFFbkUsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssSUFBbUIsRUFBRTtZQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QyxzQ0FBc0M7WUFDdEMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdDQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbEUsbURBQW1EO1FBQ3JELENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxPQUFxRTtJQUVyRSxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQVUsRUFBaUIsRUFBRTtZQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMseUJBQXlCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDL0Isb0JBQW9CO1lBQ3BCLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0NBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRSw4QkFBOEI7WUFDOUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGdDQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNyRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsZ0NBQWdCLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVFLG1EQUFtRDtRQUNyRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCwgVXNlTXV0YXRpb25PcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyBub3RpZmljYXRpb25LZXlzIH0gZnJvbSAnLi4vcXVlcmllcy9ub3RpZmljYXRpb25zJztcbmltcG9ydCB0eXBlIHsgTm90aWZpY2F0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogTWFyayBhIG5vdGlmaWNhdGlvbiBhcyByZWFkXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGU6IG1hcmtBc1JlYWQgfSA9IHVzZU1hcmtOb3RpZmljYXRpb25SZWFkKCk7XG4gKlxuICogY29uc3QgaGFuZGxlTm90aWZpY2F0aW9uQ2xpY2sgPSAobm90aWZpY2F0aW9uSWQ6IHN0cmluZykgPT4ge1xuICogICBtYXJrQXNSZWFkKG5vdGlmaWNhdGlvbklkKTtcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1hcmtOb3RpZmljYXRpb25SZWFkKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8Tm90aWZpY2F0aW9uUmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPE5vdGlmaWNhdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBhdGNoKGAvYXBpL3YxL25vdGlmaWNhdGlvbnMvJHtpZH0vcmVhZGApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChkYXRhLCBpZCwgY29udGV4dCkgPT4ge1xuICAgICAgLy8gVXBkYXRlIG5vdGlmaWNhdGlvbiBpbiBjYWNoZVxuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcnlEYXRhKG5vdGlmaWNhdGlvbktleXMuZGV0YWlsKGlkKSwgZGF0YSk7XG4gICAgICAvLyBJbnZhbGlkYXRlIGxpc3RzIHRvIHJlZmV0Y2hcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG5vdGlmaWNhdGlvbktleXMubGlzdCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogbm90aWZpY2F0aW9uS2V5cy51bnJlYWRDb3VudCgpIH0pO1xuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBNYXJrIGFsbCBub3RpZmljYXRpb25zIGFzIHJlYWRcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogbWFya0FsbFJlYWQsIGlzUGVuZGluZyB9ID0gdXNlTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkKCk7XG4gKlxuICogY29uc3QgaGFuZGxlTWFya0FsbFJlYWQgPSAoKSA9PiB7XG4gKiAgIG1hcmtBbGxSZWFkKCk7XG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNYXJrQWxsTm90aWZpY2F0aW9uc1JlYWQoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczx2b2lkLCBFcnJvciwgdm9pZD4sICdtdXRhdGlvbkZuJz5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5wYXRjaCgnL2FwaS92MS9ub3RpZmljYXRpb25zL3JlYWQtYWxsJyk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChkYXRhLCB2YXJpYWJsZXMsIGNvbnRleHQpID0+IHtcbiAgICAgIC8vIEludmFsaWRhdGUgYWxsIG5vdGlmaWNhdGlvbiBxdWVyaWVzXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBub3RpZmljYXRpb25LZXlzLmFsbCB9KTtcbiAgICAgIC8vIFVzZXIncyBvblN1Y2Nlc3MgaXMgaGFuZGxlZCBieSBzcHJlYWRpbmcgb3B0aW9uc1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGEgbm90aWZpY2F0aW9uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGU6IGRlbGV0ZU5vdGlmaWNhdGlvbiB9ID0gdXNlRGVsZXRlTm90aWZpY2F0aW9uKCk7XG4gKlxuICogY29uc3QgaGFuZGxlRGVsZXRlID0gKG5vdGlmaWNhdGlvbklkOiBzdHJpbmcpID0+IHtcbiAqICAgZGVsZXRlTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklkKTtcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlbGV0ZU5vdGlmaWNhdGlvbihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPHZvaWQsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2FwaS92MS9ub3RpZmljYXRpb25zLyR7aWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChkYXRhLCBpZCwgY29udGV4dCkgPT4ge1xuICAgICAgLy8gUmVtb3ZlIGZyb20gY2FjaGVcbiAgICAgIHF1ZXJ5Q2xpZW50LnJlbW92ZVF1ZXJpZXMoeyBxdWVyeUtleTogbm90aWZpY2F0aW9uS2V5cy5kZXRhaWwoaWQpIH0pO1xuICAgICAgLy8gSW52YWxpZGF0ZSBsaXN0cyB0byByZWZldGNoXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBub3RpZmljYXRpb25LZXlzLmxpc3QoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG5vdGlmaWNhdGlvbktleXMudW5yZWFkQ291bnQoKSB9KTtcbiAgICAgIC8vIFVzZXIncyBvblN1Y2Nlc3MgaXMgaGFuZGxlZCBieSBzcHJlYWRpbmcgb3B0aW9uc1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+ import type { OfferResponse, RedeemOfferRequest } from '../types';
3
+ /**
4
+ * Redeem an offer
5
+ *
6
+ * @param options - TanStack Query mutation options
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const { mutate, isPending } = useRedeemOffer();
11
+ *
12
+ * mutate({
13
+ * id: 'offer-123',
14
+ * data: {
15
+ * // Add any required fields from RedeemOfferRequest
16
+ * }
17
+ * });
18
+ * ```
19
+ */
20
+ export declare function useRedeemOffer(options?: Omit<UseMutationOptions<OfferResponse, Error, {
21
+ id: string;
22
+ data?: RedeemOfferRequest;
23
+ }>, 'mutationFn'>): UseMutationResult<OfferResponse, Error, {
24
+ id: string;
25
+ data?: RedeemOfferRequest;
26
+ }>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRedeemOffer = useRedeemOffer;
4
+ const react_query_1 = require("@tanstack/react-query");
5
+ const client_1 = require("../client");
6
+ const offers_1 = require("../queries/offers");
7
+ // ============================================================================
8
+ // MUTATION HOOKS
9
+ // ============================================================================
10
+ /**
11
+ * Redeem an offer
12
+ *
13
+ * @param options - TanStack Query mutation options
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const { mutate, isPending } = useRedeemOffer();
18
+ *
19
+ * mutate({
20
+ * id: 'offer-123',
21
+ * data: {
22
+ * // Add any required fields from RedeemOfferRequest
23
+ * }
24
+ * });
25
+ * ```
26
+ */
27
+ function useRedeemOffer(options) {
28
+ const queryClient = (0, react_query_1.useQueryClient)();
29
+ return (0, react_query_1.useMutation)({
30
+ mutationFn: async ({ id, data, }) => {
31
+ const client = (0, client_1.getApiClient)();
32
+ const response = await client.post(`/api/v1/offers/${id}/redeem`, data);
33
+ return response.data;
34
+ },
35
+ onSuccess: (redeemedOffer, variables, context) => {
36
+ // Update the specific offer in cache
37
+ queryClient.setQueryData(offers_1.offerKeys.detail(variables.id), redeemedOffer);
38
+ // Invalidate the can-redeem check for this offer
39
+ queryClient.invalidateQueries({ queryKey: offers_1.offerKeys.canRedeem(variables.id) });
40
+ // Invalidate offer lists to reflect redemption counts
41
+ queryClient.invalidateQueries({ queryKey: offers_1.offerKeys.lists() });
42
+ // Call user's onSuccess if provided
43
+ },
44
+ ...options,
45
+ });
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9tdXRhdGlvbnMvb2ZmZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0JBLHdDQXlDQztBQXhFRCx1REFLK0I7QUFDL0Isc0NBQXlDO0FBRXpDLDhDQUE4QztBQUU5QywrRUFBK0U7QUFDL0UsaUJBQWlCO0FBQ2pCLCtFQUErRTtBQUUvRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUNILFNBQWdCLGNBQWMsQ0FDNUIsT0FPQztJQUVELE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsRUFBRSxFQUNGLElBQUksR0FJTCxFQUEwQixFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDeEUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQy9DLHFDQUFxQztZQUNyQyxXQUFXLENBQUMsWUFBWSxDQUN0QixrQkFBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQzlCLGFBQWEsQ0FDZCxDQUFDO1lBRUYsaURBQWlEO1lBQ2pELFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxrQkFBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRS9FLHNEQUFzRDtZQUN0RCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFL0Qsb0NBQW9DO1FBQ3RDLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXNlTXV0YXRpb24sXG4gIHVzZVF1ZXJ5Q2xpZW50LFxuICBVc2VNdXRhdGlvbk9wdGlvbnMsXG4gIFVzZU11dGF0aW9uUmVzdWx0LFxufSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgT2ZmZXJSZXNwb25zZSwgUmVkZWVtT2ZmZXJSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgb2ZmZXJLZXlzIH0gZnJvbSAnLi4vcXVlcmllcy9vZmZlcnMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNVVRBVElPTiBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlZGVlbSBhbiBvZmZlclxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlLCBpc1BlbmRpbmcgfSA9IHVzZVJlZGVlbU9mZmVyKCk7XG4gKlxuICogbXV0YXRlKHtcbiAqICAgaWQ6ICdvZmZlci0xMjMnLFxuICogICBkYXRhOiB7XG4gKiAgICAgLy8gQWRkIGFueSByZXF1aXJlZCBmaWVsZHMgZnJvbSBSZWRlZW1PZmZlclJlcXVlc3RcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlZGVlbU9mZmVyKFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8XG4gICAgICBPZmZlclJlc3BvbnNlLFxuICAgICAgRXJyb3IsXG4gICAgICB7IGlkOiBzdHJpbmc7IGRhdGE/OiBSZWRlZW1PZmZlclJlcXVlc3QgfVxuICAgID4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbik6IFVzZU11dGF0aW9uUmVzdWx0PE9mZmVyUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IGRhdGE/OiBSZWRlZW1PZmZlclJlcXVlc3QgfT4ge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgaWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGlkOiBzdHJpbmc7XG4gICAgICBkYXRhPzogUmVkZWVtT2ZmZXJSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPE9mZmVyUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9vZmZlcnMvJHtpZH0vcmVkZWVtYCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKHJlZGVlbWVkT2ZmZXIsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gVXBkYXRlIHRoZSBzcGVjaWZpYyBvZmZlciBpbiBjYWNoZVxuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcnlEYXRhKFxuICAgICAgICBvZmZlcktleXMuZGV0YWlsKHZhcmlhYmxlcy5pZCksXG4gICAgICAgIHJlZGVlbWVkT2ZmZXJcbiAgICAgICk7XG5cbiAgICAgIC8vIEludmFsaWRhdGUgdGhlIGNhbi1yZWRlZW0gY2hlY2sgZm9yIHRoaXMgb2ZmZXJcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IG9mZmVyS2V5cy5jYW5SZWRlZW0odmFyaWFibGVzLmlkKSB9KTtcblxuICAgICAgLy8gSW52YWxpZGF0ZSBvZmZlciBsaXN0cyB0byByZWZsZWN0IHJlZGVtcHRpb24gY291bnRzXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBvZmZlcktleXMubGlzdHMoKSB9KTtcblxuICAgICAgLy8gQ2FsbCB1c2VyJ3Mgb25TdWNjZXNzIGlmIHByb3ZpZGVkXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,127 @@
1
+ import { UseMutationOptions } from '@tanstack/react-query';
2
+ import type { CreateCheckoutRequest, SubscriptionResponse } from '../types';
3
+ export interface CheckoutSession {
4
+ sessionId: string;
5
+ url: string;
6
+ }
7
+ export interface CustomerPortalSession {
8
+ url: string;
9
+ }
10
+ /**
11
+ * Create a Stripe checkout session for subscription
12
+ *
13
+ * @param options - TanStack Query mutation options
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const { mutate: createCheckout, isPending } = useCreateCheckout();
18
+ *
19
+ * const handleUpgrade = () => {
20
+ * createCheckout(
21
+ * { tier: 'PREMIUM', successUrl: '/success', cancelUrl: '/cancel' },
22
+ * {
23
+ * onSuccess: (session) => {
24
+ * window.location.href = session.url;
25
+ * },
26
+ * }
27
+ * );
28
+ * };
29
+ * ```
30
+ */
31
+ export declare function useCreateCheckout(options?: Omit<UseMutationOptions<CheckoutSession, Error, CreateCheckoutRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<CheckoutSession, Error, {
32
+ tier: "FREE" | "PREMIUM";
33
+ successUrl?: string;
34
+ cancelUrl?: string;
35
+ priceId?: string;
36
+ }, unknown>;
37
+ /**
38
+ * Get Stripe customer portal URL for managing subscription
39
+ *
40
+ * @param options - TanStack Query mutation options
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * const { mutate: getPortal, isPending } = useCustomerPortal();
45
+ *
46
+ * const handleManageSubscription = () => {
47
+ * getPortal(undefined, {
48
+ * onSuccess: (session) => {
49
+ * window.location.href = session.url;
50
+ * },
51
+ * });
52
+ * };
53
+ * ```
54
+ */
55
+ export declare function useCustomerPortal(options?: Omit<UseMutationOptions<CustomerPortalSession, Error, void>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<CustomerPortalSession, Error, void, unknown>;
56
+ /**
57
+ * Cancel current subscription
58
+ *
59
+ * @param options - TanStack Query mutation options
60
+ *
61
+ * @example
62
+ * ```tsx
63
+ * const { mutate: cancelSubscription, isPending } = useCancelSubscription();
64
+ *
65
+ * const handleCancel = () => {
66
+ * cancelSubscription(undefined, {
67
+ * onSuccess: () => {
68
+ * // Subscription will be cancelled at period end
69
+ * },
70
+ * });
71
+ * };
72
+ * ```
73
+ */
74
+ export declare function useCancelSubscription(options?: Omit<UseMutationOptions<SubscriptionResponse, Error, void>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
75
+ id: string;
76
+ userId: string;
77
+ tier: "FREE" | "PREMIUM";
78
+ status: "ACTIVE" | "TRIALING" | "PAST_DUE" | "CANCELLED" | "PAUSED";
79
+ stripeCustomerId?: Record<string, never>;
80
+ stripeSubscriptionId?: Record<string, never>;
81
+ stripePriceId?: Record<string, never>;
82
+ currentPeriodStart?: Record<string, never>;
83
+ currentPeriodEnd?: Record<string, never>;
84
+ cancelAtPeriodEnd: boolean;
85
+ cancelledAt?: Record<string, never>;
86
+ trialStart?: Record<string, never>;
87
+ trialEnd?: Record<string, never>;
88
+ hadTrial: boolean;
89
+ createdAt: string;
90
+ updatedAt: string;
91
+ }, Error, void, unknown>;
92
+ /**
93
+ * Resume a cancelled subscription (before period end)
94
+ *
95
+ * @param options - TanStack Query mutation options
96
+ *
97
+ * @example
98
+ * ```tsx
99
+ * const { mutate: resumeSubscription, isPending } = useResumeSubscription();
100
+ *
101
+ * const handleResume = () => {
102
+ * resumeSubscription(undefined, {
103
+ * onSuccess: () => {
104
+ * // Subscription resumed
105
+ * },
106
+ * });
107
+ * };
108
+ * ```
109
+ */
110
+ export declare function useResumeSubscription(options?: Omit<UseMutationOptions<SubscriptionResponse, Error, void>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
111
+ id: string;
112
+ userId: string;
113
+ tier: "FREE" | "PREMIUM";
114
+ status: "ACTIVE" | "TRIALING" | "PAST_DUE" | "CANCELLED" | "PAUSED";
115
+ stripeCustomerId?: Record<string, never>;
116
+ stripeSubscriptionId?: Record<string, never>;
117
+ stripePriceId?: Record<string, never>;
118
+ currentPeriodStart?: Record<string, never>;
119
+ currentPeriodEnd?: Record<string, never>;
120
+ cancelAtPeriodEnd: boolean;
121
+ cancelledAt?: Record<string, never>;
122
+ trialStart?: Record<string, never>;
123
+ trialEnd?: Record<string, never>;
124
+ hadTrial: boolean;
125
+ createdAt: string;
126
+ updatedAt: string;
127
+ }, Error, void, unknown>;
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCreateCheckout = useCreateCheckout;
4
+ exports.useCustomerPortal = useCustomerPortal;
5
+ exports.useCancelSubscription = useCancelSubscription;
6
+ exports.useResumeSubscription = useResumeSubscription;
7
+ const react_query_1 = require("@tanstack/react-query");
8
+ const client_1 = require("../client");
9
+ const subscriptions_1 = require("../queries/subscriptions");
10
+ // ============================================================================
11
+ // MUTATION HOOKS
12
+ // ============================================================================
13
+ /**
14
+ * Create a Stripe checkout session for subscription
15
+ *
16
+ * @param options - TanStack Query mutation options
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * const { mutate: createCheckout, isPending } = useCreateCheckout();
21
+ *
22
+ * const handleUpgrade = () => {
23
+ * createCheckout(
24
+ * { tier: 'PREMIUM', successUrl: '/success', cancelUrl: '/cancel' },
25
+ * {
26
+ * onSuccess: (session) => {
27
+ * window.location.href = session.url;
28
+ * },
29
+ * }
30
+ * );
31
+ * };
32
+ * ```
33
+ */
34
+ function useCreateCheckout(options) {
35
+ return (0, react_query_1.useMutation)({
36
+ mutationFn: async (data) => {
37
+ const client = (0, client_1.getApiClient)();
38
+ const response = await client.post('/api/v1/subscriptions/checkout', data);
39
+ return response.data;
40
+ },
41
+ ...options,
42
+ });
43
+ }
44
+ /**
45
+ * Get Stripe customer portal URL for managing subscription
46
+ *
47
+ * @param options - TanStack Query mutation options
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * const { mutate: getPortal, isPending } = useCustomerPortal();
52
+ *
53
+ * const handleManageSubscription = () => {
54
+ * getPortal(undefined, {
55
+ * onSuccess: (session) => {
56
+ * window.location.href = session.url;
57
+ * },
58
+ * });
59
+ * };
60
+ * ```
61
+ */
62
+ function useCustomerPortal(options) {
63
+ return (0, react_query_1.useMutation)({
64
+ mutationFn: async () => {
65
+ const client = (0, client_1.getApiClient)();
66
+ const response = await client.post('/api/v1/subscriptions/portal');
67
+ return response.data;
68
+ },
69
+ ...options,
70
+ });
71
+ }
72
+ /**
73
+ * Cancel current subscription
74
+ *
75
+ * @param options - TanStack Query mutation options
76
+ *
77
+ * @example
78
+ * ```tsx
79
+ * const { mutate: cancelSubscription, isPending } = useCancelSubscription();
80
+ *
81
+ * const handleCancel = () => {
82
+ * cancelSubscription(undefined, {
83
+ * onSuccess: () => {
84
+ * // Subscription will be cancelled at period end
85
+ * },
86
+ * });
87
+ * };
88
+ * ```
89
+ */
90
+ function useCancelSubscription(options) {
91
+ const queryClient = (0, react_query_1.useQueryClient)();
92
+ return (0, react_query_1.useMutation)({
93
+ mutationFn: async () => {
94
+ const client = (0, client_1.getApiClient)();
95
+ const response = await client.post('/api/v1/subscriptions/cancel');
96
+ return response.data;
97
+ },
98
+ onSuccess: (data, variables, context) => {
99
+ // Update subscription in cache
100
+ queryClient.setQueryData(subscriptions_1.subscriptionKeys.mine(), data);
101
+ // User's onSuccess is handled by spreading options
102
+ },
103
+ ...options,
104
+ });
105
+ }
106
+ /**
107
+ * Resume a cancelled subscription (before period end)
108
+ *
109
+ * @param options - TanStack Query mutation options
110
+ *
111
+ * @example
112
+ * ```tsx
113
+ * const { mutate: resumeSubscription, isPending } = useResumeSubscription();
114
+ *
115
+ * const handleResume = () => {
116
+ * resumeSubscription(undefined, {
117
+ * onSuccess: () => {
118
+ * // Subscription resumed
119
+ * },
120
+ * });
121
+ * };
122
+ * ```
123
+ */
124
+ function useResumeSubscription(options) {
125
+ const queryClient = (0, react_query_1.useQueryClient)();
126
+ return (0, react_query_1.useMutation)({
127
+ mutationFn: async () => {
128
+ const client = (0, client_1.getApiClient)();
129
+ const response = await client.post('/api/v1/subscriptions/resume');
130
+ return response.data;
131
+ },
132
+ onSuccess: (data, variables, context) => {
133
+ // Update subscription in cache
134
+ queryClient.setQueryData(subscriptions_1.subscriptionKeys.mine(), data);
135
+ // User's onSuccess is handled by spreading options
136
+ },
137
+ ...options,
138
+ });
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvbXV0YXRpb25zL3N1YnNjcmlwdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEyQ0EsOENBV0M7QUFvQkQsOENBV0M7QUFvQkQsc0RBa0JDO0FBb0JELHNEQWtCQztBQWpLRCx1REFBd0Y7QUFDeEYsc0NBQXlDO0FBQ3pDLDREQUE0RDtBQWdCNUQsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE9BQStGO0lBRS9GLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBMkIsRUFBNEIsRUFBRTtZQUMxRSxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0UsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE9BQW9GO0lBRXBGLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLElBQW9DLEVBQUU7WUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDbkUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQ25DLE9BQW1GO0lBRW5GLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLElBQW1DLEVBQUU7WUFDcEQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDbkUsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ3RDLCtCQUErQjtZQUMvQixXQUFXLENBQUMsWUFBWSxDQUFDLGdDQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hELG1EQUFtRDtRQUNyRCxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILFNBQWdCLHFCQUFxQixDQUNuQyxPQUFtRjtJQUVuRixNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxJQUFtQyxFQUFFO1lBQ3BELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QywrQkFBK0I7WUFDL0IsV0FBVyxDQUFDLFlBQVksQ0FBQyxnQ0FBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4RCxtREFBbUQ7UUFDckQsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQsIFVzZU11dGF0aW9uT3B0aW9ucyB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgc3Vic2NyaXB0aW9uS2V5cyB9IGZyb20gJy4uL3F1ZXJpZXMvc3Vic2NyaXB0aW9ucyc7XG5pbXBvcnQgdHlwZSB7IENyZWF0ZUNoZWNrb3V0UmVxdWVzdCwgU3Vic2NyaXB0aW9uUmVzcG9uc2UgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tvdXRTZXNzaW9uIHtcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyUG9ydGFsU2Vzc2lvbiB7XG4gIHVybDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNVVRBVElPTiBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBhIFN0cmlwZSBjaGVja291dCBzZXNzaW9uIGZvciBzdWJzY3JpcHRpb25cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogY3JlYXRlQ2hlY2tvdXQsIGlzUGVuZGluZyB9ID0gdXNlQ3JlYXRlQ2hlY2tvdXQoKTtcbiAqXG4gKiBjb25zdCBoYW5kbGVVcGdyYWRlID0gKCkgPT4ge1xuICogICBjcmVhdGVDaGVja291dChcbiAqICAgICB7IHRpZXI6ICdQUkVNSVVNJywgc3VjY2Vzc1VybDogJy9zdWNjZXNzJywgY2FuY2VsVXJsOiAnL2NhbmNlbCcgfSxcbiAqICAgICB7XG4gKiAgICAgICBvblN1Y2Nlc3M6IChzZXNzaW9uKSA9PiB7XG4gKiAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc2Vzc2lvbi51cmw7XG4gKiAgICAgICB9LFxuICogICAgIH1cbiAqICAgKTtcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0ZUNoZWNrb3V0KFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8Q2hlY2tvdXRTZXNzaW9uLCBFcnJvciwgQ3JlYXRlQ2hlY2tvdXRSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKSB7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IENyZWF0ZUNoZWNrb3V0UmVxdWVzdCk6IFByb21pc2U8Q2hlY2tvdXRTZXNzaW9uPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoJy9hcGkvdjEvc3Vic2NyaXB0aW9ucy9jaGVja291dCcsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgU3RyaXBlIGN1c3RvbWVyIHBvcnRhbCBVUkwgZm9yIG1hbmFnaW5nIHN1YnNjcmlwdGlvblxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlOiBnZXRQb3J0YWwsIGlzUGVuZGluZyB9ID0gdXNlQ3VzdG9tZXJQb3J0YWwoKTtcbiAqXG4gKiBjb25zdCBoYW5kbGVNYW5hZ2VTdWJzY3JpcHRpb24gPSAoKSA9PiB7XG4gKiAgIGdldFBvcnRhbCh1bmRlZmluZWQsIHtcbiAqICAgICBvblN1Y2Nlc3M6IChzZXNzaW9uKSA9PiB7XG4gKiAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNlc3Npb24udXJsO1xuICogICAgIH0sXG4gKiAgIH0pO1xuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3VzdG9tZXJQb3J0YWwoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxDdXN0b21lclBvcnRhbFNlc3Npb24sIEVycm9yLCB2b2lkPiwgJ211dGF0aW9uRm4nPlxuKSB7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKCk6IFByb21pc2U8Q3VzdG9tZXJQb3J0YWxTZXNzaW9uPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoJy9hcGkvdjEvc3Vic2NyaXB0aW9ucy9wb3J0YWwnKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogQ2FuY2VsIGN1cnJlbnQgc3Vic2NyaXB0aW9uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGU6IGNhbmNlbFN1YnNjcmlwdGlvbiwgaXNQZW5kaW5nIH0gPSB1c2VDYW5jZWxTdWJzY3JpcHRpb24oKTtcbiAqXG4gKiBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gKiAgIGNhbmNlbFN1YnNjcmlwdGlvbih1bmRlZmluZWQsIHtcbiAqICAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAqICAgICAgIC8vIFN1YnNjcmlwdGlvbiB3aWxsIGJlIGNhbmNlbGxlZCBhdCBwZXJpb2QgZW5kXG4gKiAgICAgfSxcbiAqICAgfSk7XG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDYW5jZWxTdWJzY3JpcHRpb24oXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxTdWJzY3JpcHRpb25SZXNwb25zZSwgRXJyb3IsIHZvaWQ+LCAnbXV0YXRpb25Gbic+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKCk6IFByb21pc2U8U3Vic2NyaXB0aW9uUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdCgnL2FwaS92MS9zdWJzY3JpcHRpb25zL2NhbmNlbCcpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChkYXRhLCB2YXJpYWJsZXMsIGNvbnRleHQpID0+IHtcbiAgICAgIC8vIFVwZGF0ZSBzdWJzY3JpcHRpb24gaW4gY2FjaGVcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShzdWJzY3JpcHRpb25LZXlzLm1pbmUoKSwgZGF0YSk7XG4gICAgICAvLyBVc2VyJ3Mgb25TdWNjZXNzIGlzIGhhbmRsZWQgYnkgc3ByZWFkaW5nIG9wdGlvbnNcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlc3VtZSBhIGNhbmNlbGxlZCBzdWJzY3JpcHRpb24gKGJlZm9yZSBwZXJpb2QgZW5kKVxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlOiByZXN1bWVTdWJzY3JpcHRpb24sIGlzUGVuZGluZyB9ID0gdXNlUmVzdW1lU3Vic2NyaXB0aW9uKCk7XG4gKlxuICogY29uc3QgaGFuZGxlUmVzdW1lID0gKCkgPT4ge1xuICogICByZXN1bWVTdWJzY3JpcHRpb24odW5kZWZpbmVkLCB7XG4gKiAgICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gKiAgICAgICAvLyBTdWJzY3JpcHRpb24gcmVzdW1lZFxuICogICAgIH0sXG4gKiAgIH0pO1xuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVzdW1lU3Vic2NyaXB0aW9uKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8U3Vic2NyaXB0aW9uUmVzcG9uc2UsIEVycm9yLCB2b2lkPiwgJ211dGF0aW9uRm4nPlxuKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICgpOiBQcm9taXNlPFN1YnNjcmlwdGlvblJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoJy9hcGkvdjEvc3Vic2NyaXB0aW9ucy9yZXN1bWUnKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoZGF0YSwgdmFyaWFibGVzLCBjb250ZXh0KSA9PiB7XG4gICAgICAvLyBVcGRhdGUgc3Vic2NyaXB0aW9uIGluIGNhY2hlXG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyeURhdGEoc3Vic2NyaXB0aW9uS2V5cy5taW5lKCksIGRhdGEpO1xuICAgICAgLy8gVXNlcidzIG9uU3VjY2VzcyBpcyBoYW5kbGVkIGJ5IHNwcmVhZGluZyBvcHRpb25zXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,165 @@
1
+ import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+ import type { DailyCheckInResponse, CreateCheckInRequest, UpdateCheckInRequest, MoodLogResponse, CreateMoodLogRequest, WinResponse, CreateWinRequest, HabitResponse, CreateHabitRequest, UpdateHabitRequest, ReflectionResponse, CreateReflectionRequest } from '../types';
3
+ /**
4
+ * Create a daily check-in
5
+ *
6
+ * @param options - TanStack Query mutation options
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const { mutate, isPending } = useCreateCheckIn();
11
+ *
12
+ * mutate({
13
+ * mood: 8,
14
+ * notes: 'Feeling great today!',
15
+ * triggers: ['stress'],
16
+ * gratitude: ['My support group']
17
+ * });
18
+ * ```
19
+ */
20
+ export declare function useCreateCheckIn(options?: Omit<UseMutationOptions<DailyCheckInResponse, Error, CreateCheckInRequest>, 'mutationFn'>): UseMutationResult<DailyCheckInResponse, Error, CreateCheckInRequest>;
21
+ /**
22
+ * Update a daily check-in
23
+ *
24
+ * @param options - TanStack Query mutation options
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * const { mutate, isPending } = useUpdateCheckIn();
29
+ *
30
+ * mutate({
31
+ * id: 'checkin-123',
32
+ * data: {
33
+ * mood: 4,
34
+ * notes: 'Updated notes',
35
+ * }
36
+ * });
37
+ * ```
38
+ */
39
+ export declare function useUpdateCheckIn(options?: Omit<UseMutationOptions<DailyCheckInResponse, Error, {
40
+ id: string;
41
+ data: UpdateCheckInRequest;
42
+ }>, 'mutationFn'>): UseMutationResult<DailyCheckInResponse, Error, {
43
+ id: string;
44
+ data: UpdateCheckInRequest;
45
+ }>;
46
+ /**
47
+ * Create a mood log
48
+ *
49
+ * @param options - TanStack Query mutation options
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * const { mutate, isPending } = useCreateMoodLog();
54
+ *
55
+ * mutate({
56
+ * mood: 7,
57
+ * notes: 'Feeling optimistic',
58
+ * activities: ['exercise', 'meditation']
59
+ * });
60
+ * ```
61
+ */
62
+ export declare function useCreateMoodLog(options?: Omit<UseMutationOptions<MoodLogResponse, Error, CreateMoodLogRequest>, 'mutationFn'>): UseMutationResult<MoodLogResponse, Error, CreateMoodLogRequest>;
63
+ /**
64
+ * Create a win
65
+ *
66
+ * @param options - TanStack Query mutation options
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * const { mutate, isPending } = useCreateWin();
71
+ *
72
+ * mutate({
73
+ * title: '30 days sober!',
74
+ * description: 'Hit my first milestone',
75
+ * category: 'sobriety'
76
+ * });
77
+ * ```
78
+ */
79
+ export declare function useCreateWin(options?: Omit<UseMutationOptions<WinResponse, Error, CreateWinRequest>, 'mutationFn'>): UseMutationResult<WinResponse, Error, CreateWinRequest>;
80
+ /**
81
+ * Create a habit
82
+ *
83
+ * @param options - TanStack Query mutation options
84
+ *
85
+ * @example
86
+ * ```tsx
87
+ * const { mutate, isPending } = useCreateHabit();
88
+ *
89
+ * mutate({
90
+ * name: 'Morning meditation',
91
+ * description: '10 minutes of mindfulness',
92
+ * frequency: 'daily',
93
+ * targetDays: 7
94
+ * });
95
+ * ```
96
+ */
97
+ export declare function useCreateHabit(options?: Omit<UseMutationOptions<HabitResponse, Error, CreateHabitRequest>, 'mutationFn'>): UseMutationResult<HabitResponse, Error, CreateHabitRequest>;
98
+ /**
99
+ * Update a habit
100
+ *
101
+ * @param options - TanStack Query mutation options
102
+ *
103
+ * @example
104
+ * ```tsx
105
+ * const { mutate, isPending } = useUpdateHabit();
106
+ *
107
+ * mutate({
108
+ * id: 'habit-123',
109
+ * data: {
110
+ * name: 'Evening meditation',
111
+ * targetDays: 14
112
+ * }
113
+ * });
114
+ * ```
115
+ */
116
+ export declare function useUpdateHabit(options?: Omit<UseMutationOptions<HabitResponse, Error, {
117
+ id: string;
118
+ data: UpdateHabitRequest;
119
+ }>, 'mutationFn'>): UseMutationResult<HabitResponse, Error, {
120
+ id: string;
121
+ data: UpdateHabitRequest;
122
+ }>;
123
+ /**
124
+ * Delete a habit
125
+ *
126
+ * @param options - TanStack Query mutation options
127
+ *
128
+ * @example
129
+ * ```tsx
130
+ * const { mutate, isPending } = useDeleteHabit();
131
+ *
132
+ * mutate('habit-123');
133
+ * ```
134
+ */
135
+ export declare function useDeleteHabit(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
136
+ /**
137
+ * Complete a habit for today
138
+ *
139
+ * @param options - TanStack Query mutation options
140
+ *
141
+ * @example
142
+ * ```tsx
143
+ * const { mutate, isPending } = useCompleteHabit();
144
+ *
145
+ * mutate('habit-123');
146
+ * ```
147
+ */
148
+ export declare function useCompleteHabit(options?: Omit<UseMutationOptions<HabitResponse, Error, string>, 'mutationFn'>): UseMutationResult<HabitResponse, Error, string>;
149
+ /**
150
+ * Create a reflection
151
+ *
152
+ * @param options - TanStack Query mutation options
153
+ *
154
+ * @example
155
+ * ```tsx
156
+ * const { mutate, isPending } = useCreateReflection();
157
+ *
158
+ * mutate({
159
+ * content: 'Today I learned...',
160
+ * category: 'growth',
161
+ * mood: 8
162
+ * });
163
+ * ```
164
+ */
165
+ export declare function useCreateReflection(options?: Omit<UseMutationOptions<ReflectionResponse, Error, CreateReflectionRequest>, 'mutationFn'>): UseMutationResult<ReflectionResponse, Error, CreateReflectionRequest>;