@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,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useUpdateChatSettings = useUpdateChatSettings;
4
+ exports.useJoinEventChat = useJoinEventChat;
5
+ exports.useLeaveEventChat = useLeaveEventChat;
6
+ exports.useUpdateMemberSettings = useUpdateMemberSettings;
7
+ exports.useMarkMessagesAsRead = useMarkMessagesAsRead;
8
+ exports.useSendEventChatMessage = useSendEventChatMessage;
9
+ exports.useUpdateEventChatMessage = useUpdateEventChatMessage;
10
+ exports.useDeleteEventChatMessage = useDeleteEventChatMessage;
11
+ const react_query_1 = require("@tanstack/react-query");
12
+ const client_1 = require("../client");
13
+ const event_chat_1 = require("../queries/event-chat");
14
+ // ============================================================================
15
+ // CHAT MANAGEMENT
16
+ // ============================================================================
17
+ /**
18
+ * Update chat settings (hosts only)
19
+ */
20
+ function useUpdateChatSettings(eventId) {
21
+ const queryClient = (0, react_query_1.useQueryClient)();
22
+ return (0, react_query_1.useMutation)({
23
+ mutationFn: async (data) => {
24
+ const client = (0, client_1.getApiClient)();
25
+ const response = await client.put(`/events/${eventId}/chat/settings`, data);
26
+ return response.data;
27
+ },
28
+ onSuccess: () => {
29
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.chat(eventId) });
30
+ },
31
+ });
32
+ }
33
+ // ============================================================================
34
+ // MEMBER MANAGEMENT
35
+ // ============================================================================
36
+ /**
37
+ * Join event chat
38
+ */
39
+ function useJoinEventChat(eventId) {
40
+ const queryClient = (0, react_query_1.useQueryClient)();
41
+ return (0, react_query_1.useMutation)({
42
+ mutationFn: async () => {
43
+ const client = (0, client_1.getApiClient)();
44
+ const response = await client.post(`/events/${eventId}/chat/join`);
45
+ return response.data;
46
+ },
47
+ onSuccess: () => {
48
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.chat(eventId) });
49
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.members(eventId) });
50
+ },
51
+ });
52
+ }
53
+ /**
54
+ * Leave event chat
55
+ */
56
+ function useLeaveEventChat(eventId) {
57
+ const queryClient = (0, react_query_1.useQueryClient)();
58
+ return (0, react_query_1.useMutation)({
59
+ mutationFn: async () => {
60
+ const client = (0, client_1.getApiClient)();
61
+ await client.post(`/events/${eventId}/chat/leave`);
62
+ },
63
+ onSuccess: () => {
64
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.chat(eventId) });
65
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.members(eventId) });
66
+ },
67
+ });
68
+ }
69
+ /**
70
+ * Update member settings (mute, nickname)
71
+ */
72
+ function useUpdateMemberSettings(eventId) {
73
+ const queryClient = (0, react_query_1.useQueryClient)();
74
+ return (0, react_query_1.useMutation)({
75
+ mutationFn: async (data) => {
76
+ const client = (0, client_1.getApiClient)();
77
+ const response = await client.put(`/events/${eventId}/chat/settings/me`, data);
78
+ return response.data;
79
+ },
80
+ onSuccess: () => {
81
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.members(eventId) });
82
+ },
83
+ });
84
+ }
85
+ /**
86
+ * Mark messages as read
87
+ */
88
+ function useMarkMessagesAsRead(eventId) {
89
+ return (0, react_query_1.useMutation)({
90
+ mutationFn: async () => {
91
+ const client = (0, client_1.getApiClient)();
92
+ await client.post(`/events/${eventId}/chat/read`);
93
+ },
94
+ });
95
+ }
96
+ // ============================================================================
97
+ // MESSAGES
98
+ // ============================================================================
99
+ /**
100
+ * Send a message
101
+ */
102
+ function useSendEventChatMessage(eventId) {
103
+ const queryClient = (0, react_query_1.useQueryClient)();
104
+ return (0, react_query_1.useMutation)({
105
+ mutationFn: async (data) => {
106
+ const client = (0, client_1.getApiClient)();
107
+ const response = await client.post(`/events/${eventId}/chat/messages`, data);
108
+ return response.data;
109
+ },
110
+ onSuccess: () => {
111
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.messages(eventId) });
112
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.chat(eventId) });
113
+ },
114
+ });
115
+ }
116
+ /**
117
+ * Update a message
118
+ */
119
+ function useUpdateEventChatMessage(eventId) {
120
+ const queryClient = (0, react_query_1.useQueryClient)();
121
+ return (0, react_query_1.useMutation)({
122
+ mutationFn: async ({ messageId, content }) => {
123
+ const client = (0, client_1.getApiClient)();
124
+ const response = await client.put(`/events/${eventId}/chat/messages/${messageId}`, { content });
125
+ return response.data;
126
+ },
127
+ onSuccess: () => {
128
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.messages(eventId) });
129
+ },
130
+ });
131
+ }
132
+ /**
133
+ * Delete a message
134
+ */
135
+ function useDeleteEventChatMessage(eventId) {
136
+ const queryClient = (0, react_query_1.useQueryClient)();
137
+ return (0, react_query_1.useMutation)({
138
+ mutationFn: async (messageId) => {
139
+ const client = (0, client_1.getApiClient)();
140
+ await client.delete(`/events/${eventId}/chat/messages/${messageId}`);
141
+ },
142
+ onSuccess: () => {
143
+ queryClient.invalidateQueries({ queryKey: event_chat_1.eventChatKeys.messages(eventId) });
144
+ },
145
+ });
146
+ }
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtY2hhdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvbXV0YXRpb25zL2V2ZW50LWNoYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFvQkEsc0RBZ0JDO0FBU0QsNENBZ0JDO0FBS0QsOENBYUM7QUFLRCwwREFnQkM7QUFLRCxzREFPQztBQVNELDBEQWlCQztBQUtELDhEQWdCQztBQUtELDhEQVlDO0FBaExELHVEQUFvRTtBQUNwRSxzQ0FBeUM7QUFDekMsc0RBQXNEO0FBV3RELCtFQUErRTtBQUMvRSxrQkFBa0I7QUFDbEIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsT0FBZTtJQUNuRCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLElBQStCLEVBQUUsRUFBRTtZQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQy9CLFdBQVcsT0FBTyxnQkFBZ0IsRUFDbEMsSUFBSSxDQUNMLENBQUM7WUFDRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsMEJBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsK0VBQStFO0FBQy9FLG9CQUFvQjtBQUNwQiwrRUFBK0U7QUFFL0U7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUFlO0lBQzlDLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9B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QztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLE9BQWU7SUFDdkQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFpQixFQUFFLEVBQUU7WUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsT0FBTyxrQkFBa0IsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSwwQkFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB7IGV2ZW50Q2hhdEtleXMgfSBmcm9tICcuLi9xdWVyaWVzL2V2ZW50LWNoYXQnO1xuaW1wb3J0IHR5cGUge1xuICBDaGF0TWVtYmVyUmVzcG9uc2UsXG4gIE1lc3NhZ2VSZXNwb25zZSxcbiAgRXZlbnRDaGF0UmVzcG9uc2UsXG4gIFNlbmRNZXNzYWdlUmVxdWVzdCxcbiAgVXBkYXRlTWVzc2FnZVJlcXVlc3QsXG4gIFVwZGF0ZUNoYXRTZXR0aW5nc1JlcXVlc3QsXG4gIFVwZGF0ZU1lbWJlclNldHRpbmdzUmVxdWVzdCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDSEFUIE1BTkFHRU1FTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBVcGRhdGUgY2hhdCBzZXR0aW5ncyAoaG9zdHMgb25seSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUNoYXRTZXR0aW5ncyhldmVudElkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IFVwZGF0ZUNoYXRTZXR0aW5nc1JlcXVlc3QpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PEV2ZW50Q2hhdFJlc3BvbnNlPihcbiAgICAgICAgYC9ldmVudHMvJHtldmVudElkfS9jaGF0L3NldHRpbmdzYCxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudENoYXRLZXlzLmNoYXQoZXZlbnRJZCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1FTUJFUiBNQU5BR0VNRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSm9pbiBldmVudCBjaGF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VKb2luRXZlbnRDaGF0KGV2ZW50SWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3Q8Q2hhdE1lbWJlclJlc3BvbnNlPihcbiAgICAgICAgYC9ldmVudHMvJHtldmVudElkfS9jaGF0L2pvaW5gXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50Q2hhdEtleXMuY2hhdChldmVudElkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50Q2hhdEtleXMubWVtYmVycyhldmVudElkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBMZWF2ZSBldmVudCBjaGF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMZWF2ZUV2ZW50Q2hhdChldmVudElkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQucG9zdChgL2V2ZW50cy8ke2V2ZW50SWR9L2NoYXQvbGVhdmVgKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRDaGF0S2V5cy5jaGF0KGV2ZW50SWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRDaGF0S2V5cy5tZW1iZXJzKGV2ZW50SWQpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBtZW1iZXIgc2V0dGluZ3MgKG11dGUsIG5pY2tuYW1lKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXBkYXRlTWVtYmVyU2V0dGluZ3MoZXZlbnRJZDogc3RyaW5nKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBVcGRhdGVNZW1iZXJTZXR0aW5nc1JlcXVlc3QpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0PENoYXRNZW1iZXJSZXNwb25zZT4oXG4gICAgICAgIGAvZXZlbnRzLyR7ZXZlbnRJZH0vY2hhdC9zZXR0aW5ncy9tZWAsXG4gICAgICAgIGRhdGFcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRDaGF0S2V5cy5tZW1iZXJzKGV2ZW50SWQpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIE1hcmsgbWVzc2FnZXMgYXMgcmVhZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWFya01lc3NhZ2VzQXNSZWFkKGV2ZW50SWQ6IHN0cmluZykge1xuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LnBvc3QoYC9ldmVudHMvJHtldmVudElkfS9jaGF0L3JlYWRgKTtcbiAgICB9LFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUVTU0FHRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBTZW5kIGEgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VuZEV2ZW50Q2hhdE1lc3NhZ2UoZXZlbnRJZDogc3RyaW5nKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBTZW5kTWVzc2FnZVJlcXVlc3QpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdDxNZXNzYWdlUmVzcG9uc2U+KFxuICAgICAgICBgL2V2ZW50cy8ke2V2ZW50SWR9L2NoYXQvbWVzc2FnZXNgLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50Q2hhdEtleXMubWVzc2FnZXMoZXZlbnRJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudENoYXRLZXlzLmNoYXQoZXZlbnRJZCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGEgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXBkYXRlRXZlbnRDaGF0TWVzc2FnZShldmVudElkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHsgbWVzc2FnZUlkLCBjb250ZW50IH06IHsgbWVzc2FnZUlkOiBzdHJpbmcgfSAmIFVwZGF0ZU1lc3NhZ2VSZXF1ZXN0KSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dDxNZXNzYWdlUmVzcG9uc2U+KFxuICAgICAgICBgL2V2ZW50cy8ke2V2ZW50SWR9L2NoYXQvbWVzc2FnZXMvJHttZXNzYWdlSWR9YCxcbiAgICAgICAgeyBjb250ZW50IH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRDaGF0S2V5cy5tZXNzYWdlcyhldmVudElkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBEZWxldGUgYSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEZWxldGVFdmVudENoYXRNZXNzYWdlKGV2ZW50SWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAobWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2V2ZW50cy8ke2V2ZW50SWR9L2NoYXQvbWVzc2FnZXMvJHttZXNzYWdlSWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50Q2hhdEtleXMubWVzc2FnZXMoZXZlbnRJZCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,87 @@
1
+ import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+ import type { EventResponse, CreateEventRequest, UpdateEventRequest } from '../types';
3
+ /**
4
+ * Create a new event
5
+ *
6
+ * @param options - TanStack Query mutation options
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const { mutate, isPending } = useCreateEvent();
11
+ *
12
+ * mutate({
13
+ * title: 'Yoga in the Park',
14
+ * description: 'Join us for morning yoga',
15
+ * startDate: new Date('2025-01-15T10:00:00Z'),
16
+ * // ... other fields
17
+ * });
18
+ * ```
19
+ */
20
+ export declare function useCreateEvent(options?: Omit<UseMutationOptions<EventResponse, Error, CreateEventRequest>, 'mutationFn'>): UseMutationResult<EventResponse, Error, CreateEventRequest>;
21
+ /**
22
+ * Update an existing event
23
+ *
24
+ * @param options - TanStack Query mutation options
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * const { mutate, isPending } = useUpdateEvent();
29
+ *
30
+ * mutate({
31
+ * id: 'event-123',
32
+ * data: {
33
+ * title: 'Updated Event Title',
34
+ * isFeatured: true,
35
+ * }
36
+ * });
37
+ * ```
38
+ */
39
+ export declare function useUpdateEvent(options?: Omit<UseMutationOptions<EventResponse, Error, {
40
+ id: string;
41
+ data: UpdateEventRequest;
42
+ }>, 'mutationFn'>): UseMutationResult<EventResponse, Error, {
43
+ id: string;
44
+ data: UpdateEventRequest;
45
+ }>;
46
+ /**
47
+ * Delete an event
48
+ *
49
+ * @param options - TanStack Query mutation options
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * const { mutate, isPending } = useDeleteEvent();
54
+ *
55
+ * mutate('event-123');
56
+ * ```
57
+ */
58
+ export declare function useDeleteEvent(options?: Omit<UseMutationOptions<void, Error, string>, 'mutationFn'>): UseMutationResult<void, Error, string>;
59
+ /**
60
+ * Cancel an event
61
+ *
62
+ * @param options - TanStack Query mutation options
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * const { mutate, isPending } = useCancelEvent();
67
+ *
68
+ * mutate('event-123');
69
+ * ```
70
+ */
71
+ export declare function useCancelEvent(options?: Omit<UseMutationOptions<EventResponse, Error, string>, 'mutationFn'>): UseMutationResult<EventResponse, Error, string>;
72
+ /**
73
+ * Publish an event
74
+ *
75
+ * Note: This mutation is provided for future compatibility.
76
+ * The API endpoint exists but may require specific permissions.
77
+ *
78
+ * @param options - TanStack Query mutation options
79
+ *
80
+ * @example
81
+ * ```tsx
82
+ * const { mutate, isPending } = usePublishEvent();
83
+ *
84
+ * mutate('event-123');
85
+ * ```
86
+ */
87
+ export declare function usePublishEvent(options?: Omit<UseMutationOptions<EventResponse, Error, string>, 'mutationFn'>): UseMutationResult<EventResponse, Error, string>;
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCreateEvent = useCreateEvent;
4
+ exports.useUpdateEvent = useUpdateEvent;
5
+ exports.useDeleteEvent = useDeleteEvent;
6
+ exports.useCancelEvent = useCancelEvent;
7
+ exports.usePublishEvent = usePublishEvent;
8
+ const react_query_1 = require("@tanstack/react-query");
9
+ const client_1 = require("../client");
10
+ const events_1 = require("../queries/events");
11
+ // ============================================================================
12
+ // MUTATION HOOKS
13
+ // ============================================================================
14
+ /**
15
+ * Create a new event
16
+ *
17
+ * @param options - TanStack Query mutation options
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const { mutate, isPending } = useCreateEvent();
22
+ *
23
+ * mutate({
24
+ * title: 'Yoga in the Park',
25
+ * description: 'Join us for morning yoga',
26
+ * startDate: new Date('2025-01-15T10:00:00Z'),
27
+ * // ... other fields
28
+ * });
29
+ * ```
30
+ */
31
+ function useCreateEvent(options) {
32
+ const queryClient = (0, react_query_1.useQueryClient)();
33
+ return (0, react_query_1.useMutation)({
34
+ mutationFn: async (data) => {
35
+ const client = (0, client_1.getApiClient)();
36
+ const response = await client.post('/api/v1/events', data);
37
+ return response.data;
38
+ },
39
+ onSuccess: (newEvent, variables, context) => {
40
+ // Invalidate all event lists to include the new event
41
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.lists() });
42
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.upcoming() });
43
+ // If the event is featured, invalidate featured events
44
+ if (newEvent.isFeatured) {
45
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.featured() });
46
+ }
47
+ // Call user's onSuccess if provided
48
+ },
49
+ ...options,
50
+ });
51
+ }
52
+ /**
53
+ * Update an existing event
54
+ *
55
+ * @param options - TanStack Query mutation options
56
+ *
57
+ * @example
58
+ * ```tsx
59
+ * const { mutate, isPending } = useUpdateEvent();
60
+ *
61
+ * mutate({
62
+ * id: 'event-123',
63
+ * data: {
64
+ * title: 'Updated Event Title',
65
+ * isFeatured: true,
66
+ * }
67
+ * });
68
+ * ```
69
+ */
70
+ function useUpdateEvent(options) {
71
+ const queryClient = (0, react_query_1.useQueryClient)();
72
+ return (0, react_query_1.useMutation)({
73
+ mutationFn: async ({ id, data, }) => {
74
+ const client = (0, client_1.getApiClient)();
75
+ const response = await client.put(`/api/v1/events/${id}`, data);
76
+ return response.data;
77
+ },
78
+ onSuccess: (updatedEvent, variables, context) => {
79
+ // Update the specific event in cache
80
+ queryClient.setQueryData(events_1.eventKeys.detail(variables.id), updatedEvent);
81
+ // If the event has a slug, update the slug-based query too
82
+ if (updatedEvent.slug && typeof updatedEvent.slug === 'string') {
83
+ queryClient.setQueryData(events_1.eventKeys.detailBySlug(updatedEvent.slug), updatedEvent);
84
+ }
85
+ // Invalidate lists to reflect changes in ordering/filtering
86
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.lists() });
87
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.upcoming() });
88
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.featured() });
89
+ // Call user's onSuccess if provided
90
+ },
91
+ ...options,
92
+ });
93
+ }
94
+ /**
95
+ * Delete an event
96
+ *
97
+ * @param options - TanStack Query mutation options
98
+ *
99
+ * @example
100
+ * ```tsx
101
+ * const { mutate, isPending } = useDeleteEvent();
102
+ *
103
+ * mutate('event-123');
104
+ * ```
105
+ */
106
+ function useDeleteEvent(options) {
107
+ const queryClient = (0, react_query_1.useQueryClient)();
108
+ return (0, react_query_1.useMutation)({
109
+ mutationFn: async (id) => {
110
+ const client = (0, client_1.getApiClient)();
111
+ await client.delete(`/api/v1/events/${id}`);
112
+ },
113
+ onSuccess: (data, eventId, context) => {
114
+ // Remove the event from cache
115
+ queryClient.removeQueries({ queryKey: events_1.eventKeys.detail(eventId) });
116
+ // Invalidate all lists
117
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.lists() });
118
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.upcoming() });
119
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.featured() });
120
+ // Call user's onSuccess if provided
121
+ },
122
+ ...options,
123
+ });
124
+ }
125
+ /**
126
+ * Cancel an event
127
+ *
128
+ * @param options - TanStack Query mutation options
129
+ *
130
+ * @example
131
+ * ```tsx
132
+ * const { mutate, isPending } = useCancelEvent();
133
+ *
134
+ * mutate('event-123');
135
+ * ```
136
+ */
137
+ function useCancelEvent(options) {
138
+ const queryClient = (0, react_query_1.useQueryClient)();
139
+ return (0, react_query_1.useMutation)({
140
+ mutationFn: async (id) => {
141
+ const client = (0, client_1.getApiClient)();
142
+ const response = await client.post(`/api/v1/events/${id}/cancel`);
143
+ return response.data;
144
+ },
145
+ onSuccess: (cancelledEvent, eventId, context) => {
146
+ // Update the specific event in cache
147
+ queryClient.setQueryData(events_1.eventKeys.detail(eventId), cancelledEvent);
148
+ // If the event has a slug, update the slug-based query too
149
+ if (cancelledEvent.slug && typeof cancelledEvent.slug === 'string') {
150
+ queryClient.setQueryData(events_1.eventKeys.detailBySlug(cancelledEvent.slug), cancelledEvent);
151
+ }
152
+ // Invalidate lists to reflect the cancelled status
153
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.lists() });
154
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.upcoming() });
155
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.featured() });
156
+ // Invalidate bookings for this event
157
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.bookings(eventId) });
158
+ // Call user's onSuccess if provided
159
+ },
160
+ ...options,
161
+ });
162
+ }
163
+ /**
164
+ * Publish an event
165
+ *
166
+ * Note: This mutation is provided for future compatibility.
167
+ * The API endpoint exists but may require specific permissions.
168
+ *
169
+ * @param options - TanStack Query mutation options
170
+ *
171
+ * @example
172
+ * ```tsx
173
+ * const { mutate, isPending } = usePublishEvent();
174
+ *
175
+ * mutate('event-123');
176
+ * ```
177
+ */
178
+ function usePublishEvent(options) {
179
+ const queryClient = (0, react_query_1.useQueryClient)();
180
+ return (0, react_query_1.useMutation)({
181
+ mutationFn: async (id) => {
182
+ const client = (0, client_1.getApiClient)();
183
+ const response = await client.post(`/api/v1/events/${id}/publish`);
184
+ return response.data;
185
+ },
186
+ onSuccess: (publishedEvent, eventId, context) => {
187
+ // Update the specific event in cache
188
+ queryClient.setQueryData(events_1.eventKeys.detail(eventId), publishedEvent);
189
+ // If the event has a slug, update the slug-based query too
190
+ if (publishedEvent.slug && typeof publishedEvent.slug === 'string') {
191
+ queryClient.setQueryData(events_1.eventKeys.detailBySlug(publishedEvent.slug), publishedEvent);
192
+ }
193
+ // Invalidate lists to reflect the published status
194
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.lists() });
195
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.upcoming() });
196
+ // If the event is featured, invalidate featured events
197
+ if (publishedEvent.isFeatured) {
198
+ queryClient.invalidateQueries({ queryKey: events_1.eventKeys.featured() });
199
+ }
200
+ // Call user's onSuccess if provided
201
+ },
202
+ ...options,
203
+ });
204
+ }
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9tdXRhdGlvbnMvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBK0JBLHdDQTRCQztBQW9CRCx3Q0FnREM7QUFjRCx3Q0F1QkM7QUFjRCx3Q0FzQ0M7QUFpQkQsMENBdUNDO0FBaFJELHVEQUsrQjtBQUMvQixzQ0FBeUM7QUFFekMsOENBQThDO0FBRTlDLCtFQUErRTtBQUMvRSxpQkFBaUI7QUFDakIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0IsY0FBYyxDQUM1QixPQUdDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUF3QixFQUEwQixFQUFFO1lBQ3JFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUU7WUFDMUMsc0RBQXNEO1lBQ3RELFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxrQkFBUyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvRCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQVMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFbEUsdURBQXVEO1lBQ3ZELElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN4QixXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFR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QUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGtCQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxrQkFBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUVsRSx1REFBdUQ7WUFDdkQsSUFBSSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzlCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxrQkFBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNwRSxDQUFDO1lBRUQsb0NBQW9DO1FBQ3RDLENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdXNlTXV0YXRpb24sXG4gIHVzZVF1ZXJ5Q2xpZW50LFxuICBVc2VNdXRhdGlvbk9wdGlvbnMsXG4gIFVzZU11dGF0aW9uUmVzdWx0LFxufSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgRXZlbnRSZXNwb25zZSwgQ3JlYXRlRXZlbnRSZXF1ZXN0LCBVcGRhdGVFdmVudFJlcXVlc3QgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBldmVudEtleXMgfSBmcm9tICcuLi9xdWVyaWVzL2V2ZW50cyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGV2ZW50XG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGUsIGlzUGVuZGluZyB9ID0gdXNlQ3JlYXRlRXZlbnQoKTtcbiAqXG4gKiBtdXRhdGUoe1xuICogICB0aXRsZTogJ1lvZ2EgaW4gdGhlIFBhcmsnLFxuICogICBkZXNjcmlwdGlvbjogJ0pvaW4gdXMgZm9yIG1vcm5pbmcgeW9nYScsXG4gKiAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoJzIwMjUtMDEtMTVUMTA6MDA6MDBaJyksXG4gKiAgIC8vIC4uLiBvdGhlciBmaWVsZHNcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdGVFdmVudChcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPEV2ZW50UmVzcG9uc2UsIEVycm9yLCBDcmVhdGVFdmVudFJlcXVlc3Q+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxFdmVudFJlc3BvbnNlLCBFcnJvciwgQ3JlYXRlRXZlbnRSZXF1ZXN0PiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBDcmVhdGVFdmVudFJlcXVlc3QpOiBQcm9taXNlPEV2ZW50UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdCgnL2FwaS92MS9ldmVudHMnLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAobmV3RXZlbnQsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gSW52YWxpZGF0ZSBhbGwgZXZlbnQgbGlzdHMgdG8gaW5jbHVkZSB0aGUgbmV3IGV2ZW50XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMubGlzdHMoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50S2V5cy51cGNvbWluZygpIH0pO1xuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgaXMgZmVhdHVyZWQsIGludmFsaWRhdGUgZmVhdHVyZWQgZXZlbnRzXG4gICAgICBpZiAobmV3RXZlbnQuaXNGZWF0dXJlZCkge1xuICAgICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMuZmVhdHVyZWQoKSB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FsbCB1c2VyJ3Mgb25TdWNjZXNzIGlmIHByb3ZpZGVkXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYW4gZXhpc3RpbmcgZXZlbnRcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZSwgaXNQZW5kaW5nIH0gPSB1c2VVcGRhdGVFdmVudCgpO1xuICpcbiAqIG11dGF0ZSh7XG4gKiAgIGlkOiAnZXZlbnQtMTIzJyxcbiAqICAgZGF0YToge1xuICogICAgIHRpdGxlOiAnVXBkYXRlZCBFdmVudCBUaXRsZScsXG4gKiAgICAgaXNGZWF0dXJlZDogdHJ1ZSxcbiAqICAgfVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUV2ZW50KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8XG4gICAgICBFdmVudFJlc3BvbnNlLFxuICAgICAgRXJyb3IsXG4gICAgICB7IGlkOiBzdHJpbmc7IGRhdGE6IFVwZGF0ZUV2ZW50UmVxdWVzdCB9XG4gICAgPixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKTogVXNlTXV0YXRpb25SZXN1bHQ8RXZlbnRSZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlRXZlbnRSZXF1ZXN0IH0+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogVXBkYXRlRXZlbnRSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPEV2ZW50UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0KGAvYXBpL3YxL2V2ZW50cy8ke2lkfWAsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICh1cGRhdGVkRXZlbnQsIHZhcmlhYmxlcywgY29udGV4dCkgPT4ge1xuICAgICAgLy8gVXBkYXRlIHRoZSBzcGVjaWZpYyBldmVudCBpbiBjYWNoZVxuICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcnlEYXRhKFxuICAgICAgICBldmVudEtleXMuZGV0YWlsKHZhcmlhYmxlcy5pZCksXG4gICAgICAgIHVwZGF0ZWRFdmVudFxuICAgICAgKTtcblxuICAgICAgLy8gSWYgdGhlIGV2ZW50IGhhcyBhIHNsdWcsIHVwZGF0ZSB0aGUgc2x1Zy1iYXNlZCBxdWVyeSB0b29cbiAgICAgIGlmICh1cGRhdGVkRXZlbnQuc2x1ZyAmJiB0eXBlb2YgdXBkYXRlZEV2ZW50LnNsdWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShcbiAgICAgICAgICBldmVudEtleXMuZGV0YWlsQnlTbHVnKHVwZGF0ZWRFdmVudC5zbHVnKSxcbiAgICAgICAgICB1cGRhdGVkRXZlbnRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW52YWxpZGF0ZSBsaXN0cyB0byByZWZsZWN0IGNoYW5nZXMgaW4gb3JkZXJpbmcvZmlsdGVyaW5nXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMubGlzdHMoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50S2V5cy51cGNvbWluZygpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRLZXlzLmZlYXR1cmVkKCkgfSk7XG5cbiAgICAgIC8vIENhbGwgdXNlcidzIG9uU3VjY2VzcyBpZiBwcm92aWRlZFxuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGFuIGV2ZW50XG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUYW5TdGFjayBRdWVyeSBtdXRhdGlvbiBvcHRpb25zXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGUsIGlzUGVuZGluZyB9ID0gdXNlRGVsZXRlRXZlbnQoKTtcbiAqXG4gKiBtdXRhdGUoJ2V2ZW50LTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEZWxldGVFdmVudChcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPHZvaWQsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDx2b2lkLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5kZWxldGUoYC9hcGkvdjEvZXZlbnRzLyR7aWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChkYXRhLCBldmVudElkLCBjb250ZXh0KSA9PiB7XG4gICAgICAvLyBSZW1vdmUgdGhlIGV2ZW50IGZyb20gY2FjaGVcbiAgICAgIHF1ZXJ5Q2xpZW50LnJlbW92ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRLZXlzLmRldGFpbChldmVudElkKSB9KTtcblxuICAgICAgLy8gSW52YWxpZGF0ZSBhbGwgbGlzdHNcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50S2V5cy5saXN0cygpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRLZXlzLnVwY29taW5nKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMuZmVhdHVyZWQoKSB9KTtcblxuICAgICAgLy8gQ2FsbCB1c2VyJ3Mgb25TdWNjZXNzIGlmIHByb3ZpZGVkXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDYW5jZWwgYW4gZXZlbnRcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRhblN0YWNrIFF1ZXJ5IG11dGF0aW9uIG9wdGlvbnNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZSwgaXNQZW5kaW5nIH0gPSB1c2VDYW5jZWxFdmVudCgpO1xuICpcbiAqIG11dGF0ZSgnZXZlbnQtMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNhbmNlbEV2ZW50KFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8RXZlbnRSZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbik6IFVzZU11dGF0aW9uUmVzdWx0PEV2ZW50UmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+IHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGlkOiBzdHJpbmcpOiBQcm9taXNlPEV2ZW50UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9ldmVudHMvJHtpZH0vY2FuY2VsYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKGNhbmNlbGxlZEV2ZW50LCBldmVudElkLCBjb250ZXh0KSA9PiB7XG4gICAgICAvLyBVcGRhdGUgdGhlIHNwZWNpZmljIGV2ZW50IGluIGNhY2hlXG4gICAgICBxdWVyeUNsaWVudC5zZXRRdWVyeURhdGEoXG4gICAgICAgIGV2ZW50S2V5cy5kZXRhaWwoZXZlbnRJZCksXG4gICAgICAgIGNhbmNlbGxlZEV2ZW50XG4gICAgICApO1xuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgaGFzIGEgc2x1ZywgdXBkYXRlIHRoZSBzbHVnLWJhc2VkIHF1ZXJ5IHRvb1xuICAgICAgaWYgKGNhbmNlbGxlZEV2ZW50LnNsdWcgJiYgdHlwZW9mIGNhbmNlbGxlZEV2ZW50LnNsdWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShcbiAgICAgICAgICBldmVudEtleXMuZGV0YWlsQnlTbHVnKGNhbmNlbGxlZEV2ZW50LnNsdWcpLFxuICAgICAgICAgIGNhbmNlbGxlZEV2ZW50XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIEludmFsaWRhdGUgbGlzdHMgdG8gcmVmbGVjdCB0aGUgY2FuY2VsbGVkIHN0YXR1c1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogZXZlbnRLZXlzLmxpc3RzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMudXBjb21pbmcoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50S2V5cy5mZWF0dXJlZCgpIH0pO1xuXG4gICAgICAvLyBJbnZhbGlkYXRlIGJvb2tpbmdzIGZvciB0aGlzIGV2ZW50XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMuYm9va2luZ3MoZXZlbnRJZCkgfSk7XG5cbiAgICAgIC8vIENhbGwgdXNlcidzIG9uU3VjY2VzcyBpZiBwcm92aWRlZFxuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogUHVibGlzaCBhbiBldmVudFxuICpcbiAqIE5vdGU6IFRoaXMgbXV0YXRpb24gaXMgcHJvdmlkZWQgZm9yIGZ1dHVyZSBjb21wYXRpYmlsaXR5LlxuICogVGhlIEFQSSBlbmRwb2ludCBleGlzdHMgYnV0IG1heSByZXF1aXJlIHNwZWNpZmljIHBlcm1pc3Npb25zLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGFuU3RhY2sgUXVlcnkgbXV0YXRpb24gb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlLCBpc1BlbmRpbmcgfSA9IHVzZVB1Ymxpc2hFdmVudCgpO1xuICpcbiAqIG11dGF0ZSgnZXZlbnQtMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVB1Ymxpc2hFdmVudChcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPEV2ZW50UmVzcG9uc2UsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pOiBVc2VNdXRhdGlvblJlc3VsdDxFdmVudFJlc3BvbnNlLCBFcnJvciwgc3RyaW5nPiB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChpZDogc3RyaW5nKTogUHJvbWlzZTxFdmVudFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoYC9hcGkvdjEvZXZlbnRzLyR7aWR9L3B1Ymxpc2hgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAocHVibGlzaGVkRXZlbnQsIGV2ZW50SWQsIGNvbnRleHQpID0+IHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgc3BlY2lmaWMgZXZlbnQgaW4gY2FjaGVcbiAgICAgIHF1ZXJ5Q2xpZW50LnNldFF1ZXJ5RGF0YShcbiAgICAgICAgZXZlbnRLZXlzLmRldGFpbChldmVudElkKSxcbiAgICAgICAgcHVibGlzaGVkRXZlbnRcbiAgICAgICk7XG5cbiAgICAgIC8vIElmIHRoZSBldmVudCBoYXMgYSBzbHVnLCB1cGRhdGUgdGhlIHNsdWctYmFzZWQgcXVlcnkgdG9vXG4gICAgICBpZiAocHVibGlzaGVkRXZlbnQuc2x1ZyAmJiB0eXBlb2YgcHVibGlzaGVkRXZlbnQuc2x1ZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcXVlcnlDbGllbnQuc2V0UXVlcnlEYXRhKFxuICAgICAgICAgIGV2ZW50S2V5cy5kZXRhaWxCeVNsdWcocHVibGlzaGVkRXZlbnQuc2x1ZyksXG4gICAgICAgICAgcHVibGlzaGVkRXZlbnRcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gSW52YWxpZGF0ZSBsaXN0cyB0byByZWZsZWN0IHRoZSBwdWJsaXNoZWQgc3RhdHVzXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMubGlzdHMoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGV2ZW50S2V5cy51cGNvbWluZygpIH0pO1xuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgaXMgZmVhdHVyZWQsIGludmFsaWRhdGUgZmVhdHVyZWQgZXZlbnRzXG4gICAgICBpZiAocHVibGlzaGVkRXZlbnQuaXNGZWF0dXJlZCkge1xuICAgICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBldmVudEtleXMuZmVhdHVyZWQoKSB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2FsbCB1c2VyJ3Mgb25TdWNjZXNzIGlmIHByb3ZpZGVkXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,36 @@
1
+ import { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
2
+ import type { Grow90EnrollmentResponse, Grow90ProgressResponse, EnrollGrow90Request, UpdateGrow90ProgressRequest, UpdateGrow90SettingsRequest } from '../types';
3
+ /**
4
+ * Enroll in GROW90 program
5
+ */
6
+ export declare function useEnrollGrow90(options?: Omit<UseMutationOptions<Grow90EnrollmentResponse, Error, EnrollGrow90Request>, 'mutationFn'>): UseMutationResult<Grow90EnrollmentResponse, Error, EnrollGrow90Request>;
7
+ /**
8
+ * Update progress for a specific day
9
+ */
10
+ export declare function useUpdateGrow90Progress(options?: Omit<UseMutationOptions<Grow90ProgressResponse, Error, {
11
+ day: number;
12
+ data: UpdateGrow90ProgressRequest;
13
+ }>, 'mutationFn'>): UseMutationResult<Grow90ProgressResponse, Error, {
14
+ day: number;
15
+ data: UpdateGrow90ProgressRequest;
16
+ }>;
17
+ /**
18
+ * Update GROW90 settings
19
+ */
20
+ export declare function useUpdateGrow90Settings(options?: Omit<UseMutationOptions<Grow90EnrollmentResponse, Error, UpdateGrow90SettingsRequest>, 'mutationFn'>): UseMutationResult<Grow90EnrollmentResponse, Error, UpdateGrow90SettingsRequest>;
21
+ /**
22
+ * Pause GROW90 program
23
+ */
24
+ export declare function usePauseGrow90(options?: Omit<UseMutationOptions<Grow90EnrollmentResponse, Error, void>, 'mutationFn'>): UseMutationResult<Grow90EnrollmentResponse, Error, void>;
25
+ /**
26
+ * Resume GROW90 program
27
+ */
28
+ export declare function useResumeGrow90(options?: Omit<UseMutationOptions<Grow90EnrollmentResponse, Error, void>, 'mutationFn'>): UseMutationResult<Grow90EnrollmentResponse, Error, void>;
29
+ /**
30
+ * Abandon GROW90 program
31
+ */
32
+ export declare function useAbandonGrow90(options?: Omit<UseMutationOptions<{
33
+ success: boolean;
34
+ }, Error, void>, 'mutationFn'>): UseMutationResult<{
35
+ success: boolean;
36
+ }, Error, void>;