@growsober/sdk 1.0.18 → 1.0.19

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.
package/dist/CLAUDE.md ADDED
@@ -0,0 +1,11 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Jan 25, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #1649 | 10:55 AM | 🔵 | Missing useCreateProductPaymentIntent Export in SDK | ~386 |
11
+ </claude-mem-context>
@@ -0,0 +1,12 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Jan 25, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #1650 | 10:55 AM | 🔵 | Confirmed Payment Intent Hook Exists in SDK | ~243 |
11
+ | #1649 | " | 🔵 | Missing useCreateProductPaymentIntent Export in SDK | ~386 |
12
+ </claude-mem-context>
@@ -0,0 +1,56 @@
1
+ import { CommunityMemberResponse, CommunityMessageResponse, CreatorCommunityResponse } from '../queries/creator-community';
2
+ /**
3
+ * Update community settings (owner only)
4
+ */
5
+ export declare function useUpdateCommunitySettings(creatorId: string): import("@tanstack/react-query").UseMutationResult<CreatorCommunityResponse, Error, {
6
+ name?: string;
7
+ description?: string;
8
+ isLocked?: boolean;
9
+ }, unknown>;
10
+ /**
11
+ * Join a creator's community
12
+ */
13
+ export declare function useJoinCommunity(creatorId: string): import("@tanstack/react-query").UseMutationResult<CommunityMemberResponse, Error, void, unknown>;
14
+ /**
15
+ * Leave a creator's community
16
+ */
17
+ export declare function useLeaveCommunity(creatorId: string): import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>;
18
+ /**
19
+ * Invite a user to the community (owner/moderator only)
20
+ */
21
+ export declare function useInviteToCommunity(creatorId: string): import("@tanstack/react-query").UseMutationResult<CommunityMemberResponse, Error, string, unknown>;
22
+ /**
23
+ * Remove a member from the community (owner/moderator only)
24
+ */
25
+ export declare function useRemoveCommunityMember(creatorId: string): import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;
26
+ /**
27
+ * Update member settings (nickname, mute)
28
+ */
29
+ export declare function useUpdateCommunityMemberSettings(creatorId: string): import("@tanstack/react-query").UseMutationResult<CommunityMemberResponse, Error, {
30
+ nickname?: string;
31
+ isMuted?: boolean;
32
+ }, unknown>;
33
+ /**
34
+ * Mark messages as read
35
+ */
36
+ export declare function useMarkCommunityAsRead(creatorId: string): import("@tanstack/react-query").UseMutationResult<void, Error, void, unknown>;
37
+ /**
38
+ * Send a message to the community
39
+ */
40
+ export declare function useSendCommunityMessage(creatorId: string): import("@tanstack/react-query").UseMutationResult<CommunityMessageResponse, Error, {
41
+ content: string;
42
+ messageType?: "TEXT" | "IMAGE" | "SYSTEM" | "ANNOUNCEMENT";
43
+ imageUrl?: string;
44
+ replyToId?: string;
45
+ }, unknown>;
46
+ /**
47
+ * Update a community message
48
+ */
49
+ export declare function useUpdateCommunityMessage(creatorId: string): import("@tanstack/react-query").UseMutationResult<CommunityMessageResponse, Error, {
50
+ messageId: string;
51
+ content: string;
52
+ }, unknown>;
53
+ /**
54
+ * Delete a community message
55
+ */
56
+ export declare function useDeleteCommunityMessage(creatorId: string): import("@tanstack/react-query").UseMutationResult<void, Error, string, unknown>;
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useUpdateCommunitySettings = useUpdateCommunitySettings;
4
+ exports.useJoinCommunity = useJoinCommunity;
5
+ exports.useLeaveCommunity = useLeaveCommunity;
6
+ exports.useInviteToCommunity = useInviteToCommunity;
7
+ exports.useRemoveCommunityMember = useRemoveCommunityMember;
8
+ exports.useUpdateCommunityMemberSettings = useUpdateCommunityMemberSettings;
9
+ exports.useMarkCommunityAsRead = useMarkCommunityAsRead;
10
+ exports.useSendCommunityMessage = useSendCommunityMessage;
11
+ exports.useUpdateCommunityMessage = useUpdateCommunityMessage;
12
+ exports.useDeleteCommunityMessage = useDeleteCommunityMessage;
13
+ const react_query_1 = require("@tanstack/react-query");
14
+ const client_1 = require("../client");
15
+ const creator_community_1 = require("../queries/creator-community");
16
+ // ============================================================================
17
+ // COMMUNITY MANAGEMENT
18
+ // ============================================================================
19
+ /**
20
+ * Update community settings (owner only)
21
+ */
22
+ function useUpdateCommunitySettings(creatorId) {
23
+ const queryClient = (0, react_query_1.useQueryClient)();
24
+ return (0, react_query_1.useMutation)({
25
+ mutationFn: async (data) => {
26
+ const client = (0, client_1.getApiClient)();
27
+ const response = await client.put(`/api/v1/creators/${creatorId}/community/settings`, data);
28
+ return response.data?.data || response.data;
29
+ },
30
+ onSuccess: () => {
31
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.detail(creatorId) });
32
+ },
33
+ });
34
+ }
35
+ // ============================================================================
36
+ // MEMBER MANAGEMENT
37
+ // ============================================================================
38
+ /**
39
+ * Join a creator's community
40
+ */
41
+ function useJoinCommunity(creatorId) {
42
+ const queryClient = (0, react_query_1.useQueryClient)();
43
+ return (0, react_query_1.useMutation)({
44
+ mutationFn: async () => {
45
+ const client = (0, client_1.getApiClient)();
46
+ const response = await client.post(`/api/v1/creators/${creatorId}/community/join`);
47
+ return response.data?.data || response.data;
48
+ },
49
+ onSuccess: () => {
50
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.detail(creatorId) });
51
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.members(creatorId) });
52
+ },
53
+ });
54
+ }
55
+ /**
56
+ * Leave a creator's community
57
+ */
58
+ function useLeaveCommunity(creatorId) {
59
+ const queryClient = (0, react_query_1.useQueryClient)();
60
+ return (0, react_query_1.useMutation)({
61
+ mutationFn: async () => {
62
+ const client = (0, client_1.getApiClient)();
63
+ await client.post(`/api/v1/creators/${creatorId}/community/leave`);
64
+ },
65
+ onSuccess: () => {
66
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.detail(creatorId) });
67
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.members(creatorId) });
68
+ },
69
+ });
70
+ }
71
+ /**
72
+ * Invite a user to the community (owner/moderator only)
73
+ */
74
+ function useInviteToCommunity(creatorId) {
75
+ const queryClient = (0, react_query_1.useQueryClient)();
76
+ return (0, react_query_1.useMutation)({
77
+ mutationFn: async (userId) => {
78
+ const client = (0, client_1.getApiClient)();
79
+ const response = await client.post(`/api/v1/creators/${creatorId}/community/invite`, { userId });
80
+ return response.data?.data || response.data;
81
+ },
82
+ onSuccess: () => {
83
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.members(creatorId) });
84
+ },
85
+ });
86
+ }
87
+ /**
88
+ * Remove a member from the community (owner/moderator only)
89
+ */
90
+ function useRemoveCommunityMember(creatorId) {
91
+ const queryClient = (0, react_query_1.useQueryClient)();
92
+ return (0, react_query_1.useMutation)({
93
+ mutationFn: async (userId) => {
94
+ const client = (0, client_1.getApiClient)();
95
+ await client.delete(`/api/v1/creators/${creatorId}/community/members/${userId}`);
96
+ },
97
+ onSuccess: () => {
98
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.members(creatorId) });
99
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.detail(creatorId) });
100
+ },
101
+ });
102
+ }
103
+ /**
104
+ * Update member settings (nickname, mute)
105
+ */
106
+ function useUpdateCommunityMemberSettings(creatorId) {
107
+ const queryClient = (0, react_query_1.useQueryClient)();
108
+ return (0, react_query_1.useMutation)({
109
+ mutationFn: async (data) => {
110
+ const client = (0, client_1.getApiClient)();
111
+ const response = await client.put(`/api/v1/creators/${creatorId}/community/settings/me`, data);
112
+ return response.data?.data || response.data;
113
+ },
114
+ onSuccess: () => {
115
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.members(creatorId) });
116
+ },
117
+ });
118
+ }
119
+ /**
120
+ * Mark messages as read
121
+ */
122
+ function useMarkCommunityAsRead(creatorId) {
123
+ return (0, react_query_1.useMutation)({
124
+ mutationFn: async () => {
125
+ const client = (0, client_1.getApiClient)();
126
+ await client.post(`/api/v1/creators/${creatorId}/community/read`);
127
+ },
128
+ });
129
+ }
130
+ // ============================================================================
131
+ // MESSAGES
132
+ // ============================================================================
133
+ /**
134
+ * Send a message to the community
135
+ */
136
+ function useSendCommunityMessage(creatorId) {
137
+ const queryClient = (0, react_query_1.useQueryClient)();
138
+ return (0, react_query_1.useMutation)({
139
+ mutationFn: async (data) => {
140
+ const client = (0, client_1.getApiClient)();
141
+ const response = await client.post(`/api/v1/creators/${creatorId}/community/messages`, data);
142
+ return response.data?.data || response.data;
143
+ },
144
+ onSuccess: () => {
145
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.messages(creatorId) });
146
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.detail(creatorId) });
147
+ },
148
+ });
149
+ }
150
+ /**
151
+ * Update a community message
152
+ */
153
+ function useUpdateCommunityMessage(creatorId) {
154
+ const queryClient = (0, react_query_1.useQueryClient)();
155
+ return (0, react_query_1.useMutation)({
156
+ mutationFn: async ({ messageId, content, }) => {
157
+ const client = (0, client_1.getApiClient)();
158
+ const response = await client.put(`/api/v1/creators/${creatorId}/community/messages/${messageId}`, { content });
159
+ return response.data?.data || response.data;
160
+ },
161
+ onSuccess: () => {
162
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.messages(creatorId) });
163
+ },
164
+ });
165
+ }
166
+ /**
167
+ * Delete a community message
168
+ */
169
+ function useDeleteCommunityMessage(creatorId) {
170
+ const queryClient = (0, react_query_1.useQueryClient)();
171
+ return (0, react_query_1.useMutation)({
172
+ mutationFn: async (messageId) => {
173
+ const client = (0, client_1.getApiClient)();
174
+ await client.delete(`/api/v1/creators/${creatorId}/community/messages/${messageId}`);
175
+ },
176
+ onSuccess: () => {
177
+ queryClient.invalidateQueries({ queryKey: creator_community_1.communityKeys.messages(creatorId) });
178
+ },
179
+ });
180
+ }
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvci1jb21tdW5pdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9jcmVhdG9yLWNvbW11bml0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdCQSxnRUFvQkM7QUFTRCw0Q0FjQztBQUtELDhDQWFDO0FBS0Qsb0RBZ0JDO0FBS0QsNERBYUM7QUFLRCw0RUFtQkM7QUFLRCx3REFPQztBQVNELDBEQXNCQztBQUtELDhEQXNCQztBQUtELDhEQWNDO0FBck9ELHVEQUFvRTtBQUNwRSxzQ0FBeUM7QUFDekMsb0VBS3NDO0FBRXRDLCtFQUErRTtBQUMvRSx1QkFBdUI7QUFDdkIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ0gsU0FBZ0IsMEJBQTBCLENBQUMsU0FBaUI7SUFDMUQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUlsQixFQUFxQyxFQUFFO1lBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0Isb0JBQW9CLFNBQVMscUJBQXFCLEVBQ2xELElBQUksQ0FDTCxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzlDLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlDQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvRSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELCtFQUErRTtBQUMvRSxvQkFBb0I7QUFDcEIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ0gsU0FB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QUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQy9CLG9CQUFvQixTQUFTLHVCQUF1QixTQUFTLEVBQUUsRUFDL0QsRUFBRSxPQUFPLEVBQUUsQ0FDWixDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzlDLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLGlDQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNqRixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsU0FBaUI7SUFDekQsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFpQixFQUFpQixFQUFFO1lBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FDakIsb0JBQW9CLFNBQVMsdUJBQXVCLFNBQVMsRUFBRSxDQUNoRSxDQUFDO1FBQ0osQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsaUNBQWEsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5Q2xpZW50IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQge1xuICBjb21tdW5pdHlLZXlzLFxuICBDb21tdW5pdHlNZW1iZXJSZXNwb25zZSxcbiAgQ29tbXVuaXR5TWVzc2FnZVJlc3BvbnNlLFxuICBDcmVhdG9yQ29tbXVuaXR5UmVzcG9uc2UsXG59IGZyb20gJy4uL3F1ZXJpZXMvY3JlYXRvci1jb21tdW5pdHknO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT01NVU5JVFkgTUFOQUdFTUVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFVwZGF0ZSBjb21tdW5pdHkgc2V0dGluZ3MgKG93bmVyIG9ubHkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVcGRhdGVDb21tdW5pdHlTZXR0aW5ncyhjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YToge1xuICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgaXNMb2NrZWQ/OiBib29sZWFuO1xuICAgIH0pOiBQcm9taXNlPENyZWF0b3JDb21tdW5pdHlSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQoXG4gICAgICAgIGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9jb21tdW5pdHkvc2V0dGluZ3NgLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY29tbXVuaXR5S2V5cy5kZXRhaWwoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTUVNQkVSIE1BTkFHRU1FTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBKb2luIGEgY3JlYXRvcidzIGNvbW11bml0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSm9pbkNvbW11bml0eShjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoKTogUHJvbWlzZTxDb21tdW5pdHlNZW1iZXJSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9jb21tdW5pdHkvam9pbmApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY29tbXVuaXR5S2V5cy5kZXRhaWwoY3JlYXRvcklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbW11bml0eUtleXMubWVtYmVycyhjcmVhdG9ySWQpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIExlYXZlIGEgY3JlYXRvcidzIGNvbW11bml0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTGVhdmVDb21tdW5pdHkoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vY29tbXVuaXR5L2xlYXZlYCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbW11bml0eUtleXMuZGV0YWlsKGNyZWF0b3JJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjb21tdW5pdHlLZXlzLm1lbWJlcnMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBJbnZpdGUgYSB1c2VyIHRvIHRoZSBjb21tdW5pdHkgKG93bmVyL21vZGVyYXRvciBvbmx5KVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlSW52aXRlVG9Db21tdW5pdHkoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxDb21tdW5pdHlNZW1iZXJSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KFxuICAgICAgICBgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vY29tbXVuaXR5L2ludml0ZWAsXG4gICAgICAgIHsgdXNlcklkIH1cbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YT8uZGF0YSB8fCByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjb21tdW5pdHlLZXlzLm1lbWJlcnMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYSBtZW1iZXIgZnJvbSB0aGUgY29tbXVuaXR5IChvd25lci9tb2RlcmF0b3Igb25seSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlbW92ZUNvbW11bml0eU1lbWJlcihjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vY29tbXVuaXR5L21lbWJlcnMvJHt1c2VySWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbW11bml0eUtleXMubWVtYmVycyhjcmVhdG9ySWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY29tbXVuaXR5S2V5cy5kZXRhaWwoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgbWVtYmVyIHNldHRpbmdzIChuaWNrbmFtZSwgbXV0ZSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUNvbW11bml0eU1lbWJlclNldHRpbmdzKGNyZWF0b3JJZDogc3RyaW5nKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiB7XG4gICAgICBuaWNrbmFtZT86IHN0cmluZztcbiAgICAgIGlzTXV0ZWQ/OiBib29sZWFuO1xuICAgIH0pOiBQcm9taXNlPENvbW11bml0eU1lbWJlclJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dChcbiAgICAgICAgYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2NvbW11bml0eS9zZXR0aW5ncy9tZWAsXG4gICAgICAgIGRhdGFcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YT8uZGF0YSB8fCByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjb21tdW5pdHlLZXlzLm1lbWJlcnMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBNYXJrIG1lc3NhZ2VzIGFzIHJlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU1hcmtDb21tdW5pdHlBc1JlYWQoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9jb21tdW5pdHkvcmVhZGApO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRVNTQUdFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNlbmQgYSBtZXNzYWdlIHRvIHRoZSBjb21tdW5pdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbmRDb21tdW5pdHlNZXNzYWdlKGNyZWF0b3JJZDogc3RyaW5nKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiB7XG4gICAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgICBtZXNzYWdlVHlwZT86ICdURVhUJyB8ICdJTUFHRScgfCAnU1lTVEVNJyB8ICdBTk5PVU5DRU1FTlQnO1xuICAgICAgaW1hZ2VVcmw/OiBzdHJpbmc7XG4gICAgICByZXBseVRvSWQ/OiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8Q29tbXVuaXR5TWVzc2FnZVJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoXG4gICAgICAgIGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9jb21tdW5pdHkvbWVzc2FnZXNgLFxuICAgICAgICBkYXRhXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY29tbXVuaXR5S2V5cy5tZXNzYWdlcyhjcmVhdG9ySWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY29tbXVuaXR5S2V5cy5kZXRhaWwoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYSBjb21tdW5pdHkgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXBkYXRlQ29tbXVuaXR5TWVzc2FnZShjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgbWVzc2FnZUlkLFxuICAgICAgY29udGVudCxcbiAgICB9OiB7XG4gICAgICBtZXNzYWdlSWQ6IHN0cmluZztcbiAgICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICB9KTogUHJvbWlzZTxDb21tdW5pdHlNZXNzYWdlUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0KFxuICAgICAgICBgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vY29tbXVuaXR5L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWAsXG4gICAgICAgIHsgY29udGVudCB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY29tbXVuaXR5S2V5cy5tZXNzYWdlcyhjcmVhdG9ySWQpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSBhIGNvbW11bml0eSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEZWxldGVDb21tdW5pdHlNZXNzYWdlKGNyZWF0b3JJZDogc3RyaW5nKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQuZGVsZXRlKFxuICAgICAgICBgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vY29tbXVuaXR5L21lc3NhZ2VzLyR7bWVzc2FnZUlkfWBcbiAgICAgICk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNvbW11bml0eUtleXMubWVzc2FnZXMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==
@@ -20,8 +20,8 @@ export declare function useCreateCreator(options?: Omit<UseMutationOptions<Creat
20
20
  userId: string;
21
21
  slug: string;
22
22
  displayName: string;
23
- bio?: Record<string, never>;
24
- avatarUrl?: Record<string, never>;
23
+ bio?: string | null;
24
+ avatarUrl?: string | null;
25
25
  cityIds: string[];
26
26
  canFacilitate: boolean;
27
27
  canCreateContent: boolean;
@@ -56,8 +56,8 @@ export declare function useUpdateCreator(options?: Omit<UseMutationOptions<Creat
56
56
  userId: string;
57
57
  slug: string;
58
58
  displayName: string;
59
- bio?: Record<string, never>;
60
- avatarUrl?: Record<string, never>;
59
+ bio?: string | null;
60
+ avatarUrl?: string | null;
61
61
  cityIds: string[];
62
62
  canFacilitate: boolean;
63
63
  canCreateContent: boolean;
@@ -229,16 +229,18 @@ export declare function useCreateGatheringType(creatorId: string): import("@tans
229
229
  id: string;
230
230
  creatorId: string;
231
231
  name: string;
232
- description?: Record<string, never> | null;
232
+ description?: string | null;
233
233
  duration: number;
234
234
  vibes: string[];
235
235
  category?: "WALK" | "COFFEE" | "MOVEMENT" | "CONVERSATION" | "CREATIVE" | "COWORKING" | null;
236
- suggestedPrice?: Record<string, never> | null;
236
+ timeOfDay?: string | null;
237
+ venueType?: string | null;
238
+ suggestedPrice?: number | null;
237
239
  currency: string;
238
240
  isAiGenerated: boolean;
239
241
  isApproved: boolean;
240
- aiPromptContext?: Record<string, never> | null;
241
- defaultVenueId?: Record<string, never> | null;
242
+ aiPromptContext?: string | null;
243
+ defaultVenueId?: string | null;
242
244
  defaultVenue?: Record<string, never> | null;
243
245
  createdAt: string;
244
246
  updatedAt: string;
@@ -248,6 +250,8 @@ export declare function useCreateGatheringType(creatorId: string): import("@tans
248
250
  duration: number;
249
251
  vibes?: string[];
250
252
  category?: "WALK" | "COFFEE" | "MOVEMENT" | "CONVERSATION" | "CREATIVE" | "COWORKING";
253
+ timeOfDay?: string;
254
+ venueType?: string;
251
255
  suggestedPrice?: number;
252
256
  currency: string;
253
257
  defaultVenueId?: string;
@@ -271,16 +275,18 @@ export declare function useUpdateGatheringType(creatorId: string): import("@tans
271
275
  id: string;
272
276
  creatorId: string;
273
277
  name: string;
274
- description?: Record<string, never> | null;
278
+ description?: string | null;
275
279
  duration: number;
276
280
  vibes: string[];
277
281
  category?: "WALK" | "COFFEE" | "MOVEMENT" | "CONVERSATION" | "CREATIVE" | "COWORKING" | null;
278
- suggestedPrice?: Record<string, never> | null;
282
+ timeOfDay?: string | null;
283
+ venueType?: string | null;
284
+ suggestedPrice?: number | null;
279
285
  currency: string;
280
286
  isAiGenerated: boolean;
281
287
  isApproved: boolean;
282
- aiPromptContext?: Record<string, never> | null;
283
- defaultVenueId?: Record<string, never> | null;
288
+ aiPromptContext?: string | null;
289
+ defaultVenueId?: string | null;
284
290
  defaultVenue?: Record<string, never> | null;
285
291
  createdAt: string;
286
292
  updatedAt: string;
@@ -304,16 +310,18 @@ export declare function useApproveGatheringType(creatorId: string): import("@tan
304
310
  id: string;
305
311
  creatorId: string;
306
312
  name: string;
307
- description?: Record<string, never> | null;
313
+ description?: string | null;
308
314
  duration: number;
309
315
  vibes: string[];
310
316
  category?: "WALK" | "COFFEE" | "MOVEMENT" | "CONVERSATION" | "CREATIVE" | "COWORKING" | null;
311
- suggestedPrice?: Record<string, never> | null;
317
+ timeOfDay?: string | null;
318
+ venueType?: string | null;
319
+ suggestedPrice?: number | null;
312
320
  currency: string;
313
321
  isAiGenerated: boolean;
314
322
  isApproved: boolean;
315
- aiPromptContext?: Record<string, never> | null;
316
- defaultVenueId?: Record<string, never> | null;
323
+ aiPromptContext?: string | null;
324
+ defaultVenueId?: string | null;
317
325
  defaultVenue?: Record<string, never> | null;
318
326
  createdAt: string;
319
327
  updatedAt: string;
@@ -348,16 +356,18 @@ export declare function useGenerateGatheringTypeSuggestions(creatorId: string):
348
356
  id: string;
349
357
  creatorId: string;
350
358
  name: string;
351
- description?: Record<string, never> | null;
359
+ description?: string | null;
352
360
  duration: number;
353
361
  vibes: string[];
354
362
  category?: "WALK" | "COFFEE" | "MOVEMENT" | "CONVERSATION" | "CREATIVE" | "COWORKING" | null;
355
- suggestedPrice?: Record<string, never> | null;
363
+ timeOfDay?: string | null;
364
+ venueType?: string | null;
365
+ suggestedPrice?: number | null;
356
366
  currency: string;
357
367
  isAiGenerated: boolean;
358
368
  isApproved: boolean;
359
- aiPromptContext?: Record<string, never> | null;
360
- defaultVenueId?: Record<string, never> | null;
369
+ aiPromptContext?: string | null;
370
+ defaultVenueId?: string | null;
361
371
  defaultVenue?: Record<string, never> | null;
362
372
  createdAt: string;
363
373
  updatedAt: string;
@@ -27,3 +27,4 @@ export * from './brands';
27
27
  export * from './products';
28
28
  export * from './venues';
29
29
  export * from './stripe-connect';
30
+ export * from './creator-community';
@@ -43,4 +43,5 @@ __exportStar(require("./brands"), exports);
43
43
  __exportStar(require("./products"), exports);
44
44
  __exportStar(require("./venues"), exports);
45
45
  __exportStar(require("./stripe-connect"), exports);
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDBDQUF3QjtBQUN4Qix5Q0FBdUI7QUFDdkIsNkNBQTJCO0FBQzNCLDJDQUF5QjtBQUN6Qix5Q0FBdUI7QUFDdkIsNENBQTBCO0FBQzFCLHdDQUFzQjtBQUN0QixrREFBZ0M7QUFDaEMsMkNBQXlCO0FBQ3pCLGtEQUFnQztBQUNoQyw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLHlDQUF1QjtBQUN2QixnREFBOEI7QUFDOUIsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiwrQ0FBNkI7QUFDN0IsOENBQTRCO0FBQzVCLDJDQUF5QjtBQUN6Qiw2Q0FBMkI7QUFDM0IsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiwyQ0FBeUI7QUFDekIsbURBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNdXRhdGlvbiBIb29rc1xuICpcbiAqIFJlLWV4cG9ydHMgYWxsIG11dGF0aW9uIGhvb2tzIGZvciBBUEkgZW5kcG9pbnRzLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vYWRtaW4nO1xuZXhwb3J0ICogZnJvbSAnLi9hdXRoJztcbmV4cG9ydCAqIGZyb20gJy4vYm9va2luZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9odWJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGlicmFyeSc7XG5leHBvcnQgKiBmcm9tICcuL21hcCc7XG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9vZmZlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdWJzY3JpcHRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vc3VwcG9ydCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vamFjayc7XG5leHBvcnQgKiBmcm9tICcuL2FtYmFzc2Fkb3JzJztcbmV4cG9ydCAqIGZyb20gJy4vZ3JvdzkwJztcbmV4cG9ydCAqIGZyb20gJy4vbWF0Y2hpbmcnO1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudC1jaGF0JztcbmV4cG9ydCAqIGZyb20gJy4vdXNlci1waW5zJztcbmV4cG9ydCAqIGZyb20gJy4vYmFkZ2VzJztcbmV4cG9ydCAqIGZyb20gJy4vY3JlYXRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9icmFuZHMnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm9kdWN0cyc7XG5leHBvcnQgKiBmcm9tICcuL3ZlbnVlcyc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmlwZS1jb25uZWN0JztcbiJdfQ==
46
+ __exportStar(require("./creator-community"), exports);
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDBDQUF3QjtBQUN4Qix5Q0FBdUI7QUFDdkIsNkNBQTJCO0FBQzNCLDJDQUF5QjtBQUN6Qix5Q0FBdUI7QUFDdkIsNENBQTBCO0FBQzFCLHdDQUFzQjtBQUN0QixrREFBZ0M7QUFDaEMsMkNBQXlCO0FBQ3pCLGtEQUFnQztBQUNoQyw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLHlDQUF1QjtBQUN2QixnREFBOEI7QUFDOUIsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiwrQ0FBNkI7QUFDN0IsOENBQTRCO0FBQzVCLDJDQUF5QjtBQUN6Qiw2Q0FBMkI7QUFDM0IsMkNBQXlCO0FBQ3pCLDZDQUEyQjtBQUMzQiwyQ0FBeUI7QUFDekIsbURBQWlDO0FBQ2pDLHNEQUFvQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTXV0YXRpb24gSG9va3NcbiAqXG4gKiBSZS1leHBvcnRzIGFsbCBtdXRhdGlvbiBob29rcyBmb3IgQVBJIGVuZHBvaW50cy5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2FkbWluJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aCc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb2tpbmdzJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vaHVicyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYnJhcnknO1xuZXhwb3J0ICogZnJvbSAnLi9tYXAnO1xuZXhwb3J0ICogZnJvbSAnLi9ub3RpZmljYXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vb2ZmZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vc3Vic2NyaXB0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3N1cHBvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi91c2Vycyc7XG5leHBvcnQgKiBmcm9tICcuL2phY2snO1xuZXhwb3J0ICogZnJvbSAnLi9hbWJhc3NhZG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL2dyb3c5MCc7XG5leHBvcnQgKiBmcm9tICcuL21hdGNoaW5nJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnQtY2hhdCc7XG5leHBvcnQgKiBmcm9tICcuL3VzZXItcGlucyc7XG5leHBvcnQgKiBmcm9tICcuL2JhZGdlcyc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vYnJhbmRzJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi92ZW51ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zdHJpcGUtY29ubmVjdCc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0b3ItY29tbXVuaXR5JztcbiJdfQ==
@@ -173,3 +173,27 @@ export declare function useCancelProductBooking(): import("@tanstack/react-query
173
173
  export declare function useCompleteProductBooking(): import("@tanstack/react-query").UseMutationResult<ProductBookingResponse, Error, {
174
174
  bookingId: string;
175
175
  }, unknown>;
176
+ export interface PaymentIntentResponse {
177
+ clientSecret: string;
178
+ paymentIntentId: string;
179
+ }
180
+ /**
181
+ * Create a payment intent for a product booking
182
+ * Use this with Stripe Elements to process payment
183
+ *
184
+ * @example
185
+ * ```tsx
186
+ * const { mutate: createPaymentIntent, data, isLoading } = useCreateProductPaymentIntent();
187
+ *
188
+ * // Create payment intent
189
+ * createPaymentIntent({ bookingId: 'booking-123' });
190
+ *
191
+ * // Use clientSecret with Stripe Elements
192
+ * if (data?.clientSecret) {
193
+ * // Pass to Stripe PaymentElement
194
+ * }
195
+ * ```
196
+ */
197
+ export declare function useCreateProductPaymentIntent(): import("@tanstack/react-query").UseMutationResult<PaymentIntentResponse, Error, {
198
+ bookingId: string;
199
+ }, unknown>;
@@ -7,6 +7,7 @@ exports.useBookProduct = useBookProduct;
7
7
  exports.useUpdateProductBooking = useUpdateProductBooking;
8
8
  exports.useCancelProductBooking = useCancelProductBooking;
9
9
  exports.useCompleteProductBooking = useCompleteProductBooking;
10
+ exports.useCreateProductPaymentIntent = useCreateProductPaymentIntent;
10
11
  const react_query_1 = require("@tanstack/react-query");
11
12
  const client_1 = require("../client");
12
13
  const products_1 = require("../queries/products");
@@ -223,4 +224,30 @@ function useCompleteProductBooking() {
223
224
  },
224
225
  });
225
226
  }
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9wcm9kdWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQThFQSw0Q0FvQkM7QUFtQkQsNENBMEJDO0FBZUQsNENBb0JDO0FBdUJELHdDQW1CQztBQWtCRCwwREF5QkM7QUFlRCwwREF3QkM7QUFZRCw4REFxQkM7QUEvVUQsdURBQW9FO0FBQ3BFLHNDQUF5QztBQUN6QyxrREFBK0g7QUFxRC9ILCtFQUErRTtBQUMvRSw0QkFBNEI7QUFDNUIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxTQUFnQixnQkFBZ0I7SUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUNqQixTQUFTLEVBQ1QsSUFBSSxHQUlMLEVBQW1DLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixTQUFTLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDOUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7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Q0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1lBQzlCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEYsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgcHJvZHVjdEtleXMsIENyZWF0b3JQcm9kdWN0UmVzcG9uc2UsIFByb2R1Y3RCb29raW5nUmVzcG9uc2UsIFByb2R1Y3RUeXBlLCBEZWxpdmVyeU1ldGhvZCB9IGZyb20gJy4uL3F1ZXJpZXMvcHJvZHVjdHMnO1xuaW1wb3J0IHsgY3JlYXRvcktleXMgfSBmcm9tICcuLi9xdWVyaWVzL2NyZWF0b3JzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVQcm9kdWN0UmVxdWVzdCB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpbWFnZVVybD86IHN0cmluZztcbiAgdHlwZT86IFByb2R1Y3RUeXBlO1xuICBwcmljZTogbnVtYmVyO1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgZHVyYXRpb25NaW51dGVzPzogbnVtYmVyO1xuICBtYXhQYXJ0aWNpcGFudHM/OiBudW1iZXI7XG4gIGRlbGl2ZXJ5TWV0aG9kPzogRGVsaXZlcnlNZXRob2Q7XG4gIGxvY2F0aW9uRGV0YWlscz86IHN0cmluZztcbiAgc2x1Zz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVQcm9kdWN0UmVxdWVzdCB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaW1hZ2VVcmw/OiBzdHJpbmc7XG4gIHR5cGU/OiBQcm9kdWN0VHlwZTtcbiAgcHJpY2U/OiBudW1iZXI7XG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xuICBkdXJhdGlvbk1pbnV0ZXM/OiBudW1iZXI7XG4gIG1heFBhcnRpY2lwYW50cz86IG51bWJlcjtcbiAgZGVsaXZlcnlNZXRob2Q/OiBEZWxpdmVyeU1ldGhvZDtcbiAgbG9jYXRpb25EZXRhaWxzPzogc3RyaW5nO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIGlzRmVhdHVyZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2tQcm9kdWN0UmVxdWVzdCB7XG4gIHNjaGVkdWxlZEF0OiBzdHJpbmc7XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICBjbGllbnROb3Rlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVCb29raW5nUmVxdWVzdCB7XG4gIHNjaGVkdWxlZEF0Pzogc3RyaW5nO1xuICBjbGllbnROb3Rlcz86IHN0cmluZztcbiAgY3JlYXRvck5vdGVzPzogc3RyaW5nO1xuICBtZWV0aW5nTGluaz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxCb29raW5nUmVxdWVzdCB7XG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTVVUQVRJT04gSE9PS1MgLSBQUk9EVUNUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBwcm9kdWN0IGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogY3JlYXRlUHJvZHVjdCwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdGVQcm9kdWN0KCk7XG4gKlxuICogY3JlYXRlUHJvZHVjdCh7XG4gKiAgIGNyZWF0b3JJZDogJ2NyZWF0b3ItMTIzJyxcbiAqICAgZGF0YToge1xuICogICAgIHRpdGxlOiAnMS1vbi0xIENvYWNoaW5nIFNlc3Npb24nLFxuICogICAgIGRlc2NyaXB0aW9uOiAnUGVyc29uYWwgY29hY2hpbmcgc2Vzc2lvbicsXG4gKiAgICAgdHlwZTogJ1NFU1NJT05fMU9OMScsXG4gKiAgICAgcHJpY2U6IDUwMDAsXG4gKiAgICAgZHVyYXRpb25NaW51dGVzOiA2MCxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdGVQcm9kdWN0KCkge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgY3JlYXRvcklkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IENyZWF0ZVByb2R1Y3RSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPENyZWF0b3JQcm9kdWN0UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vcHJvZHVjdHNgLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgeyBjcmVhdG9ySWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYnlDcmVhdG9yKGNyZWF0b3JJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5saXN0cygpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhbiBleGlzdGluZyBwcm9kdWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGU6IHVwZGF0ZVByb2R1Y3QsIGlzTG9hZGluZyB9ID0gdXNlVXBkYXRlUHJvZHVjdCgpO1xuICpcbiAqIHVwZGF0ZVByb2R1Y3Qoe1xuICogICBjcmVhdG9ySWQ6ICdjcmVhdG9yLTEyMycsXG4gKiAgIHByb2R1Y3RJZDogJ3Byb2R1Y3QtNDU2JyxcbiAqICAgZGF0YToge1xuICogICAgIHByaWNlOiA2MDAwLFxuICogICAgIGlzQWN0aXZlOiB0cnVlLFxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZVByb2R1Y3QoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBjcmVhdG9ySWQsXG4gICAgICBwcm9kdWN0SWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGNyZWF0b3JJZDogc3RyaW5nO1xuICAgICAgcHJvZHVjdElkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBVcGRhdGVQcm9kdWN0UmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxDcmVhdG9yUHJvZHVjdFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dChcbiAgICAgICAgYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L3Byb2R1Y3RzLyR7cHJvZHVjdElkfWAsXG4gICAgICAgIGRhdGFcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHsgY3JlYXRvcklkLCBwcm9kdWN0SWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuZGV0YWlsKHByb2R1Y3RJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ieUNyZWF0b3IoY3JlYXRvcklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmxpc3RzKCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGEgcHJvZHVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlOiBkZWxldGVQcm9kdWN0LCBpc0xvYWRpbmcgfSA9IHVzZURlbGV0ZVByb2R1Y3QoKTtcbiAqXG4gKiBkZWxldGVQcm9kdWN0KHtcbiAqICAgY3JlYXRvcklkOiAnY3JlYXRvci0xMjMnLFxuICogICBwcm9kdWN0SWQ6ICdwcm9kdWN0LTQ1NicsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRGVsZXRlUHJvZHVjdCgpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGNyZWF0b3JJZCxcbiAgICAgIHByb2R1Y3RJZCxcbiAgICB9OiB7XG4gICAgICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgICAgIHByb2R1Y3RJZDogc3RyaW5nO1xuICAgIH0pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vcHJvZHVjdHMvJHtwcm9kdWN0SWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB7IGNyZWF0b3JJZCwgcHJvZHVjdElkIH0pID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LnJlbW92ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuZGV0YWlsKHByb2R1Y3RJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ieUNyZWF0b3IoY3JlYXRvcklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmxpc3RzKCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTIC0gQk9PS0lOR1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBCb29rIGEgcHJvZHVjdC9zZXNzaW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGU6IGJvb2tQcm9kdWN0LCBpc0xvYWRpbmcgfSA9IHVzZUJvb2tQcm9kdWN0KCk7XG4gKlxuICogYm9va1Byb2R1Y3Qoe1xuICogICBwcm9kdWN0SWQ6ICdwcm9kdWN0LTEyMycsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzY2hlZHVsZWRBdDogJzIwMjQtMDMtMTVUMTA6MDA6MDBaJyxcbiAqICAgICB0aW1lem9uZTogJ0V1cm9wZS9Mb25kb24nLFxuICogICAgIGNsaWVudE5vdGVzOiAnTG9va2luZyBmb3J3YXJkIHRvIHRoZSBzZXNzaW9uIScsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQm9va1Byb2R1Y3QoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBwcm9kdWN0SWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIHByb2R1Y3RJZDogc3RyaW5nO1xuICAgICAgZGF0YTogQm9va1Byb2R1Y3RSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPFByb2R1Y3RCb29raW5nUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9wcm9kdWN0cy8ke3Byb2R1Y3RJZH0vYm9va2AsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLm15Qm9va2luZ3MoKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYSBwcm9kdWN0IGJvb2tpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogdXBkYXRlQm9va2luZywgaXNMb2FkaW5nIH0gPSB1c2VVcGRhdGVQcm9kdWN0Qm9va2luZygpO1xuICpcbiAqIHVwZGF0ZUJvb2tpbmcoe1xuICogICBib29raW5nSWQ6ICdib29raW5nLTEyMycsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzY2hlZHVsZWRBdDogJzIwMjQtMDMtMTZUMTQ6MDA6MDBaJyxcbiAqICAgICBjbGllbnROb3RlczogJ1Jlc2NoZWR1bGVkIGR1ZSB0byBjb25mbGljdCcsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXBkYXRlUHJvZHVjdEJvb2tpbmcoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBib29raW5nSWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGJvb2tpbmdJZDogc3RyaW5nO1xuICAgICAgZGF0YTogVXBkYXRlQm9va2luZ1JlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8UHJvZHVjdEJvb2tpbmdSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQoXG4gICAgICAgIGAvYXBpL3YxL3VzZXJzL21lL3Byb2R1Y3QtYm9va2luZ3MvJHtib29raW5nSWR9YCxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgeyBib29raW5nSWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ0RldGFpbChib29raW5nSWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMubXlCb29raW5ncygpIH0pO1xuICAgICAgLy8gQWxzbyBpbnZhbGlkYXRlIGNyZWF0b3IgYm9va2luZ3MgYXMgdGhleSBzZWUgdGhpc1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ3MoKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDYW5jZWwgYSBwcm9kdWN0IGJvb2tpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogY2FuY2VsQm9va2luZywgaXNMb2FkaW5nIH0gPSB1c2VDYW5jZWxQcm9kdWN0Qm9va2luZygpO1xuICpcbiAqIGNhbmNlbEJvb2tpbmcoe1xuICogICBib29raW5nSWQ6ICdib29raW5nLTEyMycsXG4gKiAgIGRhdGE6IHsgcmVhc29uOiAnU2NoZWR1bGUgY29uZmxpY3QnIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FuY2VsUHJvZHVjdEJvb2tpbmcoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBib29raW5nSWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGJvb2tpbmdJZDogc3RyaW5nO1xuICAgICAgZGF0YT86IENhbmNlbEJvb2tpbmdSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPFByb2R1Y3RCb29raW5nUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlKFxuICAgICAgICBgL2FwaS92MS91c2Vycy9tZS9wcm9kdWN0LWJvb2tpbmdzLyR7Ym9va2luZ0lkfWAsXG4gICAgICAgIHsgZGF0YSB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB7IGJvb2tpbmdJZCB9KSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ib29raW5nRGV0YWlsKGJvb2tpbmdJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5teUJvb2tpbmdzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ib29raW5ncygpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIE1hcmsgYSBib29raW5nIGFzIGNvbXBsZXRlZCAoY3JlYXRvciBvbmx5KVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlOiBjb21wbGV0ZUJvb2tpbmcsIGlzTG9hZGluZyB9ID0gdXNlQ29tcGxldGVQcm9kdWN0Qm9va2luZygpO1xuICpcbiAqIGNvbXBsZXRlQm9va2luZyh7IGJvb2tpbmdJZDogJ2Jvb2tpbmctMTIzJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29tcGxldGVQcm9kdWN0Qm9va2luZygpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGJvb2tpbmdJZCxcbiAgICB9OiB7XG4gICAgICBib29raW5nSWQ6IHN0cmluZztcbiAgICB9KTogUHJvbWlzZTxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoXG4gICAgICAgIGAvYXBpL3YxL3VzZXJzL21lL3Byb2R1Y3QtYm9va2luZ3MvJHtib29raW5nSWR9L2NvbXBsZXRlYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgeyBib29raW5nSWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ0RldGFpbChib29raW5nSWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMubXlCb29raW5ncygpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ3MoKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==
227
+ /**
228
+ * Create a payment intent for a product booking
229
+ * Use this with Stripe Elements to process payment
230
+ *
231
+ * @example
232
+ * ```tsx
233
+ * const { mutate: createPaymentIntent, data, isLoading } = useCreateProductPaymentIntent();
234
+ *
235
+ * // Create payment intent
236
+ * createPaymentIntent({ bookingId: 'booking-123' });
237
+ *
238
+ * // Use clientSecret with Stripe Elements
239
+ * if (data?.clientSecret) {
240
+ * // Pass to Stripe PaymentElement
241
+ * }
242
+ * ```
243
+ */
244
+ function useCreateProductPaymentIntent() {
245
+ return (0, react_query_1.useMutation)({
246
+ mutationFn: async ({ bookingId, }) => {
247
+ const client = (0, client_1.getApiClient)();
248
+ const response = await client.post(`/api/v1/users/me/product-bookings/${bookingId}/payment-intent`);
249
+ return response.data;
250
+ },
251
+ });
252
+ }
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9wcm9kdWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQThFQSw0Q0FvQkM7QUFtQkQsNENBMEJDO0FBZUQsNENBb0JDO0FBdUJELHdDQW1CQztBQWtCRCwwREF5QkM7QUFlRCwwREF3QkM7QUFZRCw4REFxQkM7QUE0QkQsc0VBY0M7QUF6WEQsdURBQW9FO0FBQ3BFLHNDQUF5QztBQUN6QyxrREFBK0g7QUFxRC9ILCtFQUErRTtBQUMvRSw0QkFBNEI7QUFDNUIsK0VBQStFO0FBRS9FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxTQUFnQixnQkFBZ0I7SUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUNqQixTQUFTLEVBQ1QsSUFBSSxHQUlMLEVBQW1DLEVBQUU7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixTQUFTLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNuRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7WUFDOUIsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM5RSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUNGLENBQUMsQ0FB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RCxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO1lBQzlCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBVyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEYsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFXLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQVdEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0IsNkJBQTZCO0lBQzNDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFDakIsU0FBUyxHQUdWLEVBQWtDLEVBQUU7WUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUNoQyxxQ0FBcUMsU0FBUyxpQkFBaUIsQ0FDaEUsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgcHJvZHVjdEtleXMsIENyZWF0b3JQcm9kdWN0UmVzcG9uc2UsIFByb2R1Y3RCb29raW5nUmVzcG9uc2UsIFByb2R1Y3RUeXBlLCBEZWxpdmVyeU1ldGhvZCB9IGZyb20gJy4uL3F1ZXJpZXMvcHJvZHVjdHMnO1xuaW1wb3J0IHsgY3JlYXRvcktleXMgfSBmcm9tICcuLi9xdWVyaWVzL2NyZWF0b3JzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVQcm9kdWN0UmVxdWVzdCB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpbWFnZVVybD86IHN0cmluZztcbiAgdHlwZT86IFByb2R1Y3RUeXBlO1xuICBwcmljZTogbnVtYmVyO1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgZHVyYXRpb25NaW51dGVzPzogbnVtYmVyO1xuICBtYXhQYXJ0aWNpcGFudHM/OiBudW1iZXI7XG4gIGRlbGl2ZXJ5TWV0aG9kPzogRGVsaXZlcnlNZXRob2Q7XG4gIGxvY2F0aW9uRGV0YWlscz86IHN0cmluZztcbiAgc2x1Zz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVQcm9kdWN0UmVxdWVzdCB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaW1hZ2VVcmw/OiBzdHJpbmc7XG4gIHR5cGU/OiBQcm9kdWN0VHlwZTtcbiAgcHJpY2U/OiBudW1iZXI7XG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xuICBkdXJhdGlvbk1pbnV0ZXM/OiBudW1iZXI7XG4gIG1heFBhcnRpY2lwYW50cz86IG51bWJlcjtcbiAgZGVsaXZlcnlNZXRob2Q/OiBEZWxpdmVyeU1ldGhvZDtcbiAgbG9jYXRpb25EZXRhaWxzPzogc3RyaW5nO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG4gIGlzRmVhdHVyZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2tQcm9kdWN0UmVxdWVzdCB7XG4gIHNjaGVkdWxlZEF0OiBzdHJpbmc7XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICBjbGllbnROb3Rlcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVCb29raW5nUmVxdWVzdCB7XG4gIHNjaGVkdWxlZEF0Pzogc3RyaW5nO1xuICBjbGllbnROb3Rlcz86IHN0cmluZztcbiAgY3JlYXRvck5vdGVzPzogc3RyaW5nO1xuICBtZWV0aW5nTGluaz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxCb29raW5nUmVxdWVzdCB7XG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTVVUQVRJT04gSE9PS1MgLSBQUk9EVUNUU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBwcm9kdWN0IGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogY3JlYXRlUHJvZHVjdCwgaXNMb2FkaW5nIH0gPSB1c2VDcmVhdGVQcm9kdWN0KCk7XG4gKlxuICogY3JlYXRlUHJvZHVjdCh7XG4gKiAgIGNyZWF0b3JJZDogJ2NyZWF0b3ItMTIzJyxcbiAqICAgZGF0YToge1xuICogICAgIHRpdGxlOiAnMS1vbi0xIENvYWNoaW5nIFNlc3Npb24nLFxuICogICAgIGRlc2NyaXB0aW9uOiAnUGVyc29uYWwgY29hY2hpbmcgc2Vzc2lvbicsXG4gKiAgICAgdHlwZTogJ1NFU1NJT05fMU9OMScsXG4gKiAgICAgcHJpY2U6IDUwMDAsXG4gKiAgICAgZHVyYXRpb25NaW51dGVzOiA2MCxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdGVQcm9kdWN0KCkge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgY3JlYXRvcklkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IENyZWF0ZVByb2R1Y3RSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPENyZWF0b3JQcm9kdWN0UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vcHJvZHVjdHNgLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgeyBjcmVhdG9ySWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYnlDcmVhdG9yKGNyZWF0b3JJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5saXN0cygpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhbiBleGlzdGluZyBwcm9kdWN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGU6IHVwZGF0ZVByb2R1Y3QsIGlzTG9hZGluZyB9ID0gdXNlVXBkYXRlUHJvZHVjdCgpO1xuICpcbiAqIHVwZGF0ZVByb2R1Y3Qoe1xuICogICBjcmVhdG9ySWQ6ICdjcmVhdG9yLTEyMycsXG4gKiAgIHByb2R1Y3RJZDogJ3Byb2R1Y3QtNDU2JyxcbiAqICAgZGF0YToge1xuICogICAgIHByaWNlOiA2MDAwLFxuICogICAgIGlzQWN0aXZlOiB0cnVlLFxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZVByb2R1Y3QoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBjcmVhdG9ySWQsXG4gICAgICBwcm9kdWN0SWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGNyZWF0b3JJZDogc3RyaW5nO1xuICAgICAgcHJvZHVjdElkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBVcGRhdGVQcm9kdWN0UmVxdWVzdDtcbiAgICB9KTogUHJvbWlzZTxDcmVhdG9yUHJvZHVjdFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dChcbiAgICAgICAgYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L3Byb2R1Y3RzLyR7cHJvZHVjdElkfWAsXG4gICAgICAgIGRhdGFcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHsgY3JlYXRvcklkLCBwcm9kdWN0SWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuZGV0YWlsKHByb2R1Y3RJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ieUNyZWF0b3IoY3JlYXRvcklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmxpc3RzKCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGEgcHJvZHVjdFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlOiBkZWxldGVQcm9kdWN0LCBpc0xvYWRpbmcgfSA9IHVzZURlbGV0ZVByb2R1Y3QoKTtcbiAqXG4gKiBkZWxldGVQcm9kdWN0KHtcbiAqICAgY3JlYXRvcklkOiAnY3JlYXRvci0xMjMnLFxuICogICBwcm9kdWN0SWQ6ICdwcm9kdWN0LTQ1NicsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRGVsZXRlUHJvZHVjdCgpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGNyZWF0b3JJZCxcbiAgICAgIHByb2R1Y3RJZCxcbiAgICB9OiB7XG4gICAgICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgICAgIHByb2R1Y3RJZDogc3RyaW5nO1xuICAgIH0pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vcHJvZHVjdHMvJHtwcm9kdWN0SWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB7IGNyZWF0b3JJZCwgcHJvZHVjdElkIH0pID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LnJlbW92ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuZGV0YWlsKHByb2R1Y3RJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ieUNyZWF0b3IoY3JlYXRvcklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmxpc3RzKCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1VVEFUSU9OIEhPT0tTIC0gQk9PS0lOR1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBCb29rIGEgcHJvZHVjdC9zZXNzaW9uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGU6IGJvb2tQcm9kdWN0LCBpc0xvYWRpbmcgfSA9IHVzZUJvb2tQcm9kdWN0KCk7XG4gKlxuICogYm9va1Byb2R1Y3Qoe1xuICogICBwcm9kdWN0SWQ6ICdwcm9kdWN0LTEyMycsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzY2hlZHVsZWRBdDogJzIwMjQtMDMtMTVUMTA6MDA6MDBaJyxcbiAqICAgICB0aW1lem9uZTogJ0V1cm9wZS9Mb25kb24nLFxuICogICAgIGNsaWVudE5vdGVzOiAnTG9va2luZyBmb3J3YXJkIHRvIHRoZSBzZXNzaW9uIScsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQm9va1Byb2R1Y3QoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBwcm9kdWN0SWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIHByb2R1Y3RJZDogc3RyaW5nO1xuICAgICAgZGF0YTogQm9va1Byb2R1Y3RSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPFByb2R1Y3RCb29raW5nUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9wcm9kdWN0cy8ke3Byb2R1Y3RJZH0vYm9va2AsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLm15Qm9va2luZ3MoKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYSBwcm9kdWN0IGJvb2tpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogdXBkYXRlQm9va2luZywgaXNMb2FkaW5nIH0gPSB1c2VVcGRhdGVQcm9kdWN0Qm9va2luZygpO1xuICpcbiAqIHVwZGF0ZUJvb2tpbmcoe1xuICogICBib29raW5nSWQ6ICdib29raW5nLTEyMycsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBzY2hlZHVsZWRBdDogJzIwMjQtMDMtMTZUMTQ6MDA6MDBaJyxcbiAqICAgICBjbGllbnROb3RlczogJ1Jlc2NoZWR1bGVkIGR1ZSB0byBjb25mbGljdCcsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVXBkYXRlUHJvZHVjdEJvb2tpbmcoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBib29raW5nSWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGJvb2tpbmdJZDogc3RyaW5nO1xuICAgICAgZGF0YTogVXBkYXRlQm9va2luZ1JlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8UHJvZHVjdEJvb2tpbmdSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQoXG4gICAgICAgIGAvYXBpL3YxL3VzZXJzL21lL3Byb2R1Y3QtYm9va2luZ3MvJHtib29raW5nSWR9YCxcbiAgICAgICAgZGF0YVxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgeyBib29raW5nSWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ0RldGFpbChib29raW5nSWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMubXlCb29raW5ncygpIH0pO1xuICAgICAgLy8gQWxzbyBpbnZhbGlkYXRlIGNyZWF0b3IgYm9va2luZ3MgYXMgdGhleSBzZWUgdGhpc1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ3MoKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDYW5jZWwgYSBwcm9kdWN0IGJvb2tpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZTogY2FuY2VsQm9va2luZywgaXNMb2FkaW5nIH0gPSB1c2VDYW5jZWxQcm9kdWN0Qm9va2luZygpO1xuICpcbiAqIGNhbmNlbEJvb2tpbmcoe1xuICogICBib29raW5nSWQ6ICdib29raW5nLTEyMycsXG4gKiAgIGRhdGE6IHsgcmVhc29uOiAnU2NoZWR1bGUgY29uZmxpY3QnIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FuY2VsUHJvZHVjdEJvb2tpbmcoKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBib29raW5nSWQsXG4gICAgICBkYXRhLFxuICAgIH06IHtcbiAgICAgIGJvb2tpbmdJZDogc3RyaW5nO1xuICAgICAgZGF0YT86IENhbmNlbEJvb2tpbmdSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPFByb2R1Y3RCb29raW5nUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZGVsZXRlKFxuICAgICAgICBgL2FwaS92MS91c2Vycy9tZS9wcm9kdWN0LWJvb2tpbmdzLyR7Ym9va2luZ0lkfWAsXG4gICAgICAgIHsgZGF0YSB9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB7IGJvb2tpbmdJZCB9KSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ib29raW5nRGV0YWlsKGJvb2tpbmdJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5teUJvb2tpbmdzKCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5ib29raW5ncygpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIE1hcmsgYSBib29raW5nIGFzIGNvbXBsZXRlZCAoY3JlYXRvciBvbmx5KVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlOiBjb21wbGV0ZUJvb2tpbmcsIGlzTG9hZGluZyB9ID0gdXNlQ29tcGxldGVQcm9kdWN0Qm9va2luZygpO1xuICpcbiAqIGNvbXBsZXRlQm9va2luZyh7IGJvb2tpbmdJZDogJ2Jvb2tpbmctMTIzJyB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29tcGxldGVQcm9kdWN0Qm9va2luZygpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGJvb2tpbmdJZCxcbiAgICB9OiB7XG4gICAgICBib29raW5nSWQ6IHN0cmluZztcbiAgICB9KTogUHJvbWlzZTxQcm9kdWN0Qm9va2luZ1Jlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoXG4gICAgICAgIGAvYXBpL3YxL3VzZXJzL21lL3Byb2R1Y3QtYm9va2luZ3MvJHtib29raW5nSWR9L2NvbXBsZXRlYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgeyBib29raW5nSWQgfSkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ0RldGFpbChib29raW5nSWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMubXlCb29raW5ncygpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcHJvZHVjdEtleXMuYm9va2luZ3MoKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTVVUQVRJT04gSE9PS1MgLSBQQVlNRU5UU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIFBheW1lbnRJbnRlbnRSZXNwb25zZSB7XG4gIGNsaWVudFNlY3JldDogc3RyaW5nO1xuICBwYXltZW50SW50ZW50SWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwYXltZW50IGludGVudCBmb3IgYSBwcm9kdWN0IGJvb2tpbmdcbiAqIFVzZSB0aGlzIHdpdGggU3RyaXBlIEVsZW1lbnRzIHRvIHByb2Nlc3MgcGF5bWVudFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlOiBjcmVhdGVQYXltZW50SW50ZW50LCBkYXRhLCBpc0xvYWRpbmcgfSA9IHVzZUNyZWF0ZVByb2R1Y3RQYXltZW50SW50ZW50KCk7XG4gKlxuICogLy8gQ3JlYXRlIHBheW1lbnQgaW50ZW50XG4gKiBjcmVhdGVQYXltZW50SW50ZW50KHsgYm9va2luZ0lkOiAnYm9va2luZy0xMjMnIH0pO1xuICpcbiAqIC8vIFVzZSBjbGllbnRTZWNyZXQgd2l0aCBTdHJpcGUgRWxlbWVudHNcbiAqIGlmIChkYXRhPy5jbGllbnRTZWNyZXQpIHtcbiAqICAgLy8gUGFzcyB0byBTdHJpcGUgUGF5bWVudEVsZW1lbnRcbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlUHJvZHVjdFBheW1lbnRJbnRlbnQoKSB7XG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGJvb2tpbmdJZCxcbiAgICB9OiB7XG4gICAgICBib29raW5nSWQ6IHN0cmluZztcbiAgICB9KTogUHJvbWlzZTxQYXltZW50SW50ZW50UmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChcbiAgICAgICAgYC9hcGkvdjEvdXNlcnMvbWUvcHJvZHVjdC1ib29raW5ncy8ke2Jvb2tpbmdJZH0vcGF5bWVudC1pbnRlbnRgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgfSk7XG59XG4iXX0=