@growsober/sdk 1.0.5 → 1.0.8

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 (70) hide show
  1. package/dist/__tests__/e2e.test.d.ts +30 -0
  2. package/dist/__tests__/e2e.test.js +959 -63
  3. package/dist/api/mutations/badges.d.ts +116 -0
  4. package/dist/api/mutations/badges.js +177 -0
  5. package/dist/api/mutations/brands.d.ts +251 -0
  6. package/dist/api/mutations/brands.js +242 -0
  7. package/dist/api/mutations/creators.d.ts +131 -0
  8. package/dist/api/mutations/creators.js +129 -0
  9. package/dist/api/mutations/event-chat.d.ts +2 -2
  10. package/dist/api/mutations/event-chat.js +9 -9
  11. package/dist/api/mutations/index.d.ts +4 -0
  12. package/dist/api/mutations/index.js +5 -1
  13. package/dist/api/mutations/jack.d.ts +29 -0
  14. package/dist/api/mutations/jack.js +41 -1
  15. package/dist/api/mutations/products.d.ts +175 -0
  16. package/dist/api/mutations/products.js +226 -0
  17. package/dist/api/mutations/support.d.ts +20 -1
  18. package/dist/api/mutations/support.js +36 -1
  19. package/dist/api/queries/badges.d.ts +221 -0
  20. package/dist/api/queries/badges.js +290 -0
  21. package/dist/api/queries/bookings.d.ts +1 -1
  22. package/dist/api/queries/brands.d.ts +248 -0
  23. package/dist/api/queries/brands.js +226 -0
  24. package/dist/api/queries/businesses.d.ts +61 -1
  25. package/dist/api/queries/businesses.js +27 -1
  26. package/dist/api/queries/creators.d.ts +332 -0
  27. package/dist/api/queries/creators.js +249 -0
  28. package/dist/api/queries/event-chat.d.ts +1 -1
  29. package/dist/api/queries/event-chat.js +4 -4
  30. package/dist/api/queries/events.d.ts +45 -0
  31. package/dist/api/queries/index.d.ts +5 -0
  32. package/dist/api/queries/index.js +6 -1
  33. package/dist/api/queries/jack.d.ts +80 -0
  34. package/dist/api/queries/jack.js +98 -1
  35. package/dist/api/queries/library.d.ts +8 -0
  36. package/dist/api/queries/products.d.ts +185 -0
  37. package/dist/api/queries/products.js +203 -0
  38. package/dist/api/queries/support.d.ts +46 -1
  39. package/dist/api/queries/support.js +48 -1
  40. package/dist/api/queries/venues.d.ts +304 -0
  41. package/dist/api/queries/venues.js +211 -0
  42. package/dist/api/types.d.ts +245 -0
  43. package/dist/api/types.js +6 -1
  44. package/dist/api/utils/eventGrouping.d.ts +104 -0
  45. package/dist/api/utils/eventGrouping.js +155 -0
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.js +5 -1
  48. package/package.json +5 -2
  49. package/src/__tests__/e2e.test.ts +996 -64
  50. package/src/api/mutations/badges.ts +228 -0
  51. package/src/api/mutations/brands.ts +376 -0
  52. package/src/api/mutations/creators.ts +171 -0
  53. package/src/api/mutations/event-chat.ts +8 -8
  54. package/src/api/mutations/index.ts +4 -0
  55. package/src/api/mutations/jack.ts +50 -1
  56. package/src/api/mutations/products.ts +336 -0
  57. package/src/api/mutations/support.ts +44 -0
  58. package/src/api/queries/badges.ts +385 -0
  59. package/src/api/queries/brands.ts +281 -0
  60. package/src/api/queries/businesses.ts +30 -1
  61. package/src/api/queries/creators.ts +308 -0
  62. package/src/api/queries/event-chat.ts +3 -3
  63. package/src/api/queries/index.ts +5 -0
  64. package/src/api/queries/jack.ts +139 -1
  65. package/src/api/queries/products.ts +312 -0
  66. package/src/api/queries/support.ts +54 -0
  67. package/src/api/queries/venues.ts +271 -0
  68. package/src/api/types.ts +317 -1
  69. package/src/api/utils/eventGrouping.ts +181 -0
  70. package/src/index.ts +6 -0
@@ -0,0 +1,116 @@
1
+ import { UseMutationOptions } from '@tanstack/react-query';
2
+ import type { PartnerRewardResponse, PartnerRewardRedemptionResponse, CreatePartnerRewardRequest } from '../types';
3
+ /**
4
+ * Redeem a partner reward
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * const redeemReward = useRedeemReward();
9
+ *
10
+ * const handleRedeem = async (rewardId: string) => {
11
+ * await redeemReward.mutateAsync(rewardId);
12
+ * // Show success message
13
+ * };
14
+ * ```
15
+ */
16
+ export declare function useRedeemReward(options?: Omit<UseMutationOptions<PartnerRewardRedemptionResponse, Error, string>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<PartnerRewardRedemptionResponse, Error, string, unknown>;
17
+ /**
18
+ * Create a partner reward (for business dashboard)
19
+ *
20
+ * @param businessId - Business ID creating the reward
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * const createReward = useCreatePartnerReward('business-123');
25
+ *
26
+ * const handleCreate = async () => {
27
+ * await createReward.mutateAsync({
28
+ * badgeId: 'badge-week-warrior',
29
+ * title: 'Free Coffee',
30
+ * description: 'Show your badge for a free coffee',
31
+ * });
32
+ * };
33
+ * ```
34
+ */
35
+ export declare function useCreatePartnerReward(businessId: string, options?: Omit<UseMutationOptions<PartnerRewardResponse, Error, CreatePartnerRewardRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<PartnerRewardResponse, Error, CreatePartnerRewardRequest, unknown>;
36
+ interface CreateRewardRequest {
37
+ badgeId: string;
38
+ title: string;
39
+ description?: string;
40
+ code?: string;
41
+ redeemType?: 'IN_PERSON' | 'ONLINE' | 'BOTH';
42
+ maxRedemptions?: number;
43
+ perUserLimit?: number;
44
+ validFrom?: string;
45
+ validUntil?: string;
46
+ }
47
+ /**
48
+ * Create a reward for a venue
49
+ *
50
+ * @param venueId - Venue ID
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * const createReward = useCreateVenueReward('venue-123');
55
+ *
56
+ * const handleCreate = async () => {
57
+ * await createReward.mutateAsync({
58
+ * badgeId: 'badge-week-warrior',
59
+ * title: 'Free Coffee',
60
+ * description: 'Show your badge for a free coffee',
61
+ * redeemType: 'IN_PERSON',
62
+ * });
63
+ * };
64
+ * ```
65
+ */
66
+ export declare function useCreateVenueReward(venueId: string, options?: Omit<UseMutationOptions<unknown, Error, CreateRewardRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<unknown, Error, CreateRewardRequest, unknown>;
67
+ /**
68
+ * Create a reward for a brand
69
+ *
70
+ * @param brandId - Brand ID
71
+ *
72
+ * @example
73
+ * ```tsx
74
+ * const createReward = useCreateBrandReward('brand-123');
75
+ *
76
+ * const handleCreate = async () => {
77
+ * await createReward.mutateAsync({
78
+ * badgeId: 'badge-week-warrior',
79
+ * title: '10% Off',
80
+ * description: 'Use code at checkout',
81
+ * code: 'SOBER10',
82
+ * redeemType: 'ONLINE',
83
+ * });
84
+ * };
85
+ * ```
86
+ */
87
+ export declare function useCreateBrandReward(brandId: string, options?: Omit<UseMutationOptions<unknown, Error, CreateRewardRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<unknown, Error, CreateRewardRequest, unknown>;
88
+ /**
89
+ * Update a partner reward (for business dashboard)
90
+ *
91
+ * @param businessId - Business ID
92
+ *
93
+ * @example
94
+ * ```tsx
95
+ * const updateReward = useUpdatePartnerReward('business-123');
96
+ *
97
+ * const handleUpdate = async (rewardId: string) => {
98
+ * await updateReward.mutateAsync({
99
+ * id: rewardId,
100
+ * data: { title: 'Updated Title', isActive: false },
101
+ * });
102
+ * };
103
+ * ```
104
+ */
105
+ export declare function useUpdatePartnerReward(businessId: string, options?: Omit<UseMutationOptions<PartnerRewardResponse, Error, {
106
+ id: string;
107
+ data: Partial<CreatePartnerRewardRequest & {
108
+ isActive: boolean;
109
+ }>;
110
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<PartnerRewardResponse, Error, {
111
+ id: string;
112
+ data: Partial<CreatePartnerRewardRequest & {
113
+ isActive: boolean;
114
+ }>;
115
+ }, unknown>;
116
+ export {};
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRedeemReward = useRedeemReward;
4
+ exports.useCreatePartnerReward = useCreatePartnerReward;
5
+ exports.useCreateVenueReward = useCreateVenueReward;
6
+ exports.useCreateBrandReward = useCreateBrandReward;
7
+ exports.useUpdatePartnerReward = useUpdatePartnerReward;
8
+ const react_query_1 = require("@tanstack/react-query");
9
+ const client_1 = require("../client");
10
+ const badges_1 = require("../queries/badges");
11
+ // ============================================================================
12
+ // REWARD MUTATION HOOKS
13
+ // ============================================================================
14
+ /**
15
+ * Redeem a partner reward
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * const redeemReward = useRedeemReward();
20
+ *
21
+ * const handleRedeem = async (rewardId: string) => {
22
+ * await redeemReward.mutateAsync(rewardId);
23
+ * // Show success message
24
+ * };
25
+ * ```
26
+ */
27
+ function useRedeemReward(options) {
28
+ const queryClient = (0, react_query_1.useQueryClient)();
29
+ return (0, react_query_1.useMutation)({
30
+ mutationFn: async (rewardId) => {
31
+ const client = (0, client_1.getApiClient)();
32
+ const response = await client.post(`/api/v1/rewards/${rewardId}/redeem`);
33
+ return response.data?.data || response.data;
34
+ },
35
+ onSuccess: () => {
36
+ // Invalidate wallet, available and redeemed rewards
37
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.wallet() });
38
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.available() });
39
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.redeemed() });
40
+ },
41
+ ...options,
42
+ });
43
+ }
44
+ /**
45
+ * Create a partner reward (for business dashboard)
46
+ *
47
+ * @param businessId - Business ID creating the reward
48
+ *
49
+ * @example
50
+ * ```tsx
51
+ * const createReward = useCreatePartnerReward('business-123');
52
+ *
53
+ * const handleCreate = async () => {
54
+ * await createReward.mutateAsync({
55
+ * badgeId: 'badge-week-warrior',
56
+ * title: 'Free Coffee',
57
+ * description: 'Show your badge for a free coffee',
58
+ * });
59
+ * };
60
+ * ```
61
+ */
62
+ function useCreatePartnerReward(businessId, options) {
63
+ const queryClient = (0, react_query_1.useQueryClient)();
64
+ return (0, react_query_1.useMutation)({
65
+ mutationFn: async (data) => {
66
+ const client = (0, client_1.getApiClient)();
67
+ const response = await client.post(`/api/v1/businesses/${businessId}/rewards`, data);
68
+ return response.data?.data || response.data;
69
+ },
70
+ onSuccess: () => {
71
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.forBusiness(businessId) });
72
+ },
73
+ ...options,
74
+ });
75
+ }
76
+ /**
77
+ * Create a reward for a venue
78
+ *
79
+ * @param venueId - Venue ID
80
+ *
81
+ * @example
82
+ * ```tsx
83
+ * const createReward = useCreateVenueReward('venue-123');
84
+ *
85
+ * const handleCreate = async () => {
86
+ * await createReward.mutateAsync({
87
+ * badgeId: 'badge-week-warrior',
88
+ * title: 'Free Coffee',
89
+ * description: 'Show your badge for a free coffee',
90
+ * redeemType: 'IN_PERSON',
91
+ * });
92
+ * };
93
+ * ```
94
+ */
95
+ function useCreateVenueReward(venueId, options) {
96
+ const queryClient = (0, react_query_1.useQueryClient)();
97
+ return (0, react_query_1.useMutation)({
98
+ mutationFn: async (data) => {
99
+ const client = (0, client_1.getApiClient)();
100
+ const response = await client.post(`/api/v1/venues/${venueId}/rewards`, data);
101
+ return response.data?.data || response.data;
102
+ },
103
+ onSuccess: () => {
104
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.forVenue(venueId) });
105
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.available() });
106
+ },
107
+ ...options,
108
+ });
109
+ }
110
+ /**
111
+ * Create a reward for a brand
112
+ *
113
+ * @param brandId - Brand ID
114
+ *
115
+ * @example
116
+ * ```tsx
117
+ * const createReward = useCreateBrandReward('brand-123');
118
+ *
119
+ * const handleCreate = async () => {
120
+ * await createReward.mutateAsync({
121
+ * badgeId: 'badge-week-warrior',
122
+ * title: '10% Off',
123
+ * description: 'Use code at checkout',
124
+ * code: 'SOBER10',
125
+ * redeemType: 'ONLINE',
126
+ * });
127
+ * };
128
+ * ```
129
+ */
130
+ function useCreateBrandReward(brandId, options) {
131
+ const queryClient = (0, react_query_1.useQueryClient)();
132
+ return (0, react_query_1.useMutation)({
133
+ mutationFn: async (data) => {
134
+ const client = (0, client_1.getApiClient)();
135
+ const response = await client.post(`/api/v1/brands/${brandId}/rewards`, data);
136
+ return response.data?.data || response.data;
137
+ },
138
+ onSuccess: () => {
139
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.forBrand(brandId) });
140
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.available() });
141
+ },
142
+ ...options,
143
+ });
144
+ }
145
+ /**
146
+ * Update a partner reward (for business dashboard)
147
+ *
148
+ * @param businessId - Business ID
149
+ *
150
+ * @example
151
+ * ```tsx
152
+ * const updateReward = useUpdatePartnerReward('business-123');
153
+ *
154
+ * const handleUpdate = async (rewardId: string) => {
155
+ * await updateReward.mutateAsync({
156
+ * id: rewardId,
157
+ * data: { title: 'Updated Title', isActive: false },
158
+ * });
159
+ * };
160
+ * ```
161
+ */
162
+ function useUpdatePartnerReward(businessId, options) {
163
+ const queryClient = (0, react_query_1.useQueryClient)();
164
+ return (0, react_query_1.useMutation)({
165
+ mutationFn: async ({ id, data, }) => {
166
+ const client = (0, client_1.getApiClient)();
167
+ const response = await client.patch(`/api/v1/businesses/${businessId}/rewards/${id}`, data);
168
+ return response.data?.data || response.data;
169
+ },
170
+ onSuccess: () => {
171
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.forBusiness(businessId) });
172
+ queryClient.invalidateQueries({ queryKey: badges_1.rewardKeys.available() });
173
+ },
174
+ ...options,
175
+ });
176
+ }
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9tdXRhdGlvbnMvYmFkZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMEJBLDBDQW1CQztBQW9CRCx3REFpQkM7QUFxQ0Qsb0RBa0JDO0FBc0JELG9EQWtCQztBQW1CRCx3REErQkM7QUFuT0QsdURBQXdGO0FBQ3hGLHNDQUF5QztBQUN6Qyw4Q0FBMEQ7QUFPMUQsK0VBQStFO0FBQy9FLHdCQUF3QjtBQUN4QiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixPQUFnRztJQUVoRyxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQWdCLEVBQTRDLEVBQUU7WUFDL0UsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixRQUFRLFNBQVMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQztRQUM5QyxDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLG9EQUFvRDtZQUNwRCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQVUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLG1CQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBVSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFD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Q1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQ3BDLFVBQWtCLEVBQ2xCLE9BT0M7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRCQUFjLEdBQUUsQ0FBQztJQUVyQyxPQUFPLElBQUEseUJBQVcsRUFBQztRQUNqQixVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQ2pCLEVBQUUsRUFDRixJQUFJLEdBSUwsRUFBa0MsRUFBRTtZQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFBLHFCQUFZLEdBQUUsQ0FBQztZQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLFVBQVUsWUFBWSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RixPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDOUMsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQVUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxtQkFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCwgVXNlTXV0YXRpb25PcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyBiYWRnZUtleXMsIHJld2FyZEtleXMgfSBmcm9tICcuLi9xdWVyaWVzL2JhZGdlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFBhcnRuZXJSZXdhcmRSZXNwb25zZSxcbiAgUGFydG5lclJld2FyZFJlZGVtcHRpb25SZXNwb25zZSxcbiAgQ3JlYXRlUGFydG5lclJld2FyZFJlcXVlc3QsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVXQVJEIE1VVEFUSU9OIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVkZWVtIGEgcGFydG5lciByZXdhcmRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCByZWRlZW1SZXdhcmQgPSB1c2VSZWRlZW1SZXdhcmQoKTtcbiAqXG4gKiBjb25zdCBoYW5kbGVSZWRlZW0gPSBhc3luYyAocmV3YXJkSWQ6IHN0cmluZykgPT4ge1xuICogICBhd2FpdCByZWRlZW1SZXdhcmQubXV0YXRlQXN5bmMocmV3YXJkSWQpO1xuICogICAvLyBTaG93IHN1Y2Nlc3MgbWVzc2FnZVxuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVkZWVtUmV3YXJkKFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8UGFydG5lclJld2FyZFJlZGVtcHRpb25SZXNwb25zZSwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAocmV3YXJkSWQ6IHN0cmluZyk6IFByb21pc2U8UGFydG5lclJld2FyZFJlZGVtcHRpb25SZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL3Jld2FyZHMvJHtyZXdhcmRJZH0vcmVkZWVtYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YT8uZGF0YSB8fCByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICAvLyBJbnZhbGlkYXRlIHdhbGxldCwgYXZhaWxhYmxlIGFuZCByZWRlZW1lZCByZXdhcmRzXG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiByZXdhcmRLZXlzLndhbGxldCgpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcmV3YXJkS2V5cy5hdmFpbGFibGUoKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHJld2FyZEtleXMucmVkZWVtZWQoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHBhcnRuZXIgcmV3YXJkIChmb3IgYnVzaW5lc3MgZGFzaGJvYXJkKVxuICpcbiAqIEBwYXJhbSBidXNpbmVzc0lkIC0gQnVzaW5lc3MgSUQgY3JlYXRpbmcgdGhlIHJld2FyZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGNyZWF0ZVJld2FyZCA9IHVzZUNyZWF0ZVBhcnRuZXJSZXdhcmQoJ2J1c2luZXNzLTEyMycpO1xuICpcbiAqIGNvbnN0IGhhbmRsZUNyZWF0ZSA9IGFzeW5jICgpID0+IHtcbiAqICAgYXdhaXQgY3JlYXRlUmV3YXJkLm11dGF0ZUFzeW5jKHtcbiAqICAgICBiYWRnZUlkOiAnYmFkZ2Utd2Vlay13YXJyaW9yJyxcbiAqICAgICB0aXRsZTogJ0ZyZWUgQ29mZmVlJyxcbiAqICAgICBkZXNjcmlwdGlvbjogJ1Nob3cgeW91ciBiYWRnZSBmb3IgYSBmcmVlIGNvZmZlZScsXG4gKiAgIH0pO1xuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlUGFydG5lclJld2FyZChcbiAgYnVzaW5lc3NJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8UGFydG5lclJld2FyZFJlc3BvbnNlLCBFcnJvciwgQ3JlYXRlUGFydG5lclJld2FyZFJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IENyZWF0ZVBhcnRuZXJSZXdhcmRSZXF1ZXN0KTogUHJvbWlzZTxQYXJ0bmVyUmV3YXJkUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9idXNpbmVzc2VzLyR7YnVzaW5lc3NJZH0vcmV3YXJkc2AsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcmV3YXJkS2V5cy5mb3JCdXNpbmVzcyhidXNpbmVzc0lkKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVTklGSUVEIFJFV0FSRCBNVVRBVElPTlMgKFZlbnVlICYgQnJhbmQpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmludGVyZmFjZSBDcmVhdGVSZXdhcmRSZXF1ZXN0IHtcbiAgYmFkZ2VJZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY29kZT86IHN0cmluZztcbiAgcmVkZWVtVHlwZT86ICdJTl9QRVJTT04nIHwgJ09OTElORScgfCAnQk9USCc7XG4gIG1heFJlZGVtcHRpb25zPzogbnVtYmVyO1xuICBwZXJVc2VyTGltaXQ/OiBudW1iZXI7XG4gIHZhbGlkRnJvbT86IHN0cmluZztcbiAgdmFsaWRVbnRpbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSByZXdhcmQgZm9yIGEgdmVudWVcbiAqXG4gKiBAcGFyYW0gdmVudWVJZCAtIFZlbnVlIElEXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgY3JlYXRlUmV3YXJkID0gdXNlQ3JlYXRlVmVudWVSZXdhcmQoJ3ZlbnVlLTEyMycpO1xuICpcbiAqIGNvbnN0IGhhbmRsZUNyZWF0ZSA9IGFzeW5jICgpID0+IHtcbiAqICAgYXdhaXQgY3JlYXRlUmV3YXJkLm11dGF0ZUFzeW5jKHtcbiAqICAgICBiYWRnZUlkOiAnYmFkZ2Utd2Vlay13YXJyaW9yJyxcbiAqICAgICB0aXRsZTogJ0ZyZWUgQ29mZmVlJyxcbiAqICAgICBkZXNjcmlwdGlvbjogJ1Nob3cgeW91ciBiYWRnZSBmb3IgYSBmcmVlIGNvZmZlZScsXG4gKiAgICAgcmVkZWVtVHlwZTogJ0lOX1BFUlNPTicsXG4gKiAgIH0pO1xuICogfTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlVmVudWVSZXdhcmQoXG4gIHZlbnVlSWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPHVua25vd24sIEVycm9yLCBDcmVhdGVSZXdhcmRSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBDcmVhdGVSZXdhcmRSZXF1ZXN0KSA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoYC9hcGkvdjEvdmVudWVzLyR7dmVudWVJZH0vcmV3YXJkc2AsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE/LmRhdGEgfHwgcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcmV3YXJkS2V5cy5mb3JWZW51ZSh2ZW51ZUlkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IHJld2FyZEtleXMuYXZhaWxhYmxlKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSByZXdhcmQgZm9yIGEgYnJhbmRcbiAqXG4gKiBAcGFyYW0gYnJhbmRJZCAtIEJyYW5kIElEXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgY3JlYXRlUmV3YXJkID0gdXNlQ3JlYXRlQnJhbmRSZXdhcmQoJ2JyYW5kLTEyMycpO1xuICpcbiAqIGNvbnN0IGhhbmRsZUNyZWF0ZSA9IGFzeW5jICgpID0+IHtcbiAqICAgYXdhaXQgY3JlYXRlUmV3YXJkLm11dGF0ZUFzeW5jKHtcbiAqICAgICBiYWRnZUlkOiAnYmFkZ2Utd2Vlay13YXJyaW9yJyxcbiAqICAgICB0aXRsZTogJzEwJSBPZmYnLFxuICogICAgIGRlc2NyaXB0aW9uOiAnVXNlIGNvZGUgYXQgY2hlY2tvdXQnLFxuICogICAgIGNvZGU6ICdTT0JFUjEwJyxcbiAqICAgICByZWRlZW1UeXBlOiAnT05MSU5FJyxcbiAqICAgfSk7XG4gKiB9O1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VDcmVhdGVCcmFuZFJld2FyZChcbiAgYnJhbmRJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8dW5rbm93biwgRXJyb3IsIENyZWF0ZVJld2FyZFJlcXVlc3Q+LCAnbXV0YXRpb25Gbic+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IENyZWF0ZVJld2FyZFJlcXVlc3QpID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9icmFuZHMvJHticmFuZElkfS9yZXdhcmRzYCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YT8uZGF0YSB8fCByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiByZXdhcmRLZXlzLmZvckJyYW5kKGJyYW5kSWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcmV3YXJkS2V5cy5hdmFpbGFibGUoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhIHBhcnRuZXIgcmV3YXJkIChmb3IgYnVzaW5lc3MgZGFzaGJvYXJkKVxuICpcbiAqIEBwYXJhbSBidXNpbmVzc0lkIC0gQnVzaW5lc3MgSURcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB1cGRhdGVSZXdhcmQgPSB1c2VVcGRhdGVQYXJ0bmVyUmV3YXJkKCdidXNpbmVzcy0xMjMnKTtcbiAqXG4gKiBjb25zdCBoYW5kbGVVcGRhdGUgPSBhc3luYyAocmV3YXJkSWQ6IHN0cmluZykgPT4ge1xuICogICBhd2FpdCB1cGRhdGVSZXdhcmQubXV0YXRlQXN5bmMoe1xuICogICAgIGlkOiByZXdhcmRJZCxcbiAqICAgICBkYXRhOiB7IHRpdGxlOiAnVXBkYXRlZCBUaXRsZScsIGlzQWN0aXZlOiBmYWxzZSB9LFxuICogICB9KTtcbiAqIH07XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZVBhcnRuZXJSZXdhcmQoXG4gIGJ1c2luZXNzSWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPFxuICAgICAgUGFydG5lclJld2FyZFJlc3BvbnNlLFxuICAgICAgRXJyb3IsXG4gICAgICB7IGlkOiBzdHJpbmc7IGRhdGE6IFBhcnRpYWw8Q3JlYXRlUGFydG5lclJld2FyZFJlcXVlc3QgJiB7IGlzQWN0aXZlOiBib29sZWFuIH0+IH1cbiAgICA+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogUGFydGlhbDxDcmVhdGVQYXJ0bmVyUmV3YXJkUmVxdWVzdCAmIHsgaXNBY3RpdmU6IGJvb2xlYW4gfT47XG4gICAgfSk6IFByb21pc2U8UGFydG5lclJld2FyZFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBhdGNoKGAvYXBpL3YxL2J1c2luZXNzZXMvJHtidXNpbmVzc0lkfS9yZXdhcmRzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YT8uZGF0YSB8fCByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiByZXdhcmRLZXlzLmZvckJ1c2luZXNzKGJ1c2luZXNzSWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogcmV3YXJkS2V5cy5hdmFpbGFibGUoKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
@@ -0,0 +1,251 @@
1
+ import { UseMutationOptions } from '@tanstack/react-query';
2
+ import type { BrandResponse, BrandOwnerResponse, BrandCreatorResponse, BrandOwnerRole, CreateBrandRequest, UpdateBrandRequest } from '../types';
3
+ /**
4
+ * Create a new brand
5
+ *
6
+ * @example
7
+ * ```tsx
8
+ * const { mutateAsync: createBrand } = useCreateBrand();
9
+ *
10
+ * await createBrand({
11
+ * slug: 'wellness-co',
12
+ * name: 'Wellness Co',
13
+ * description: 'A wellness brand',
14
+ * });
15
+ * ```
16
+ */
17
+ export declare function useCreateBrand(options?: Omit<UseMutationOptions<BrandResponse, Error, CreateBrandRequest>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
18
+ id: string;
19
+ slug: string;
20
+ name: string;
21
+ description?: Record<string, never>;
22
+ logoUrl?: Record<string, never>;
23
+ bannerUrl?: Record<string, never>;
24
+ primaryColor?: Record<string, never>;
25
+ website?: Record<string, never>;
26
+ email?: Record<string, never>;
27
+ instagram?: Record<string, never>;
28
+ isActive: boolean;
29
+ isVerified: boolean;
30
+ isFeatured: boolean;
31
+ createdAt: string;
32
+ updatedAt: string;
33
+ }, Error, CreateBrandRequest, unknown>;
34
+ /**
35
+ * Update a brand
36
+ *
37
+ * @example
38
+ * ```tsx
39
+ * const { mutateAsync: updateBrand } = useUpdateBrand();
40
+ *
41
+ * await updateBrand({
42
+ * id: 'brand-123',
43
+ * data: { description: 'Updated description' },
44
+ * });
45
+ * ```
46
+ */
47
+ export declare function useUpdateBrand(options?: Omit<UseMutationOptions<BrandResponse, Error, {
48
+ id: string;
49
+ data: UpdateBrandRequest;
50
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
51
+ id: string;
52
+ slug: string;
53
+ name: string;
54
+ description?: Record<string, never>;
55
+ logoUrl?: Record<string, never>;
56
+ bannerUrl?: Record<string, never>;
57
+ primaryColor?: Record<string, never>;
58
+ website?: Record<string, never>;
59
+ email?: Record<string, never>;
60
+ instagram?: Record<string, never>;
61
+ isActive: boolean;
62
+ isVerified: boolean;
63
+ isFeatured: boolean;
64
+ createdAt: string;
65
+ updatedAt: string;
66
+ }, Error, {
67
+ id: string;
68
+ data: UpdateBrandRequest;
69
+ }, unknown>;
70
+ /**
71
+ * Add a brand owner
72
+ *
73
+ * @example
74
+ * ```tsx
75
+ * const { mutateAsync: addOwner } = useAddBrandOwner();
76
+ *
77
+ * await addOwner({
78
+ * brandId: 'brand-123',
79
+ * userId: 'user-456',
80
+ * role: 'MANAGER',
81
+ * });
82
+ * ```
83
+ */
84
+ export declare function useAddBrandOwner(options?: Omit<UseMutationOptions<BrandOwnerResponse, Error, {
85
+ brandId: string;
86
+ userId: string;
87
+ role: BrandOwnerRole;
88
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
89
+ id: string;
90
+ brandId: string;
91
+ userId: string;
92
+ role: "OWNER" | "MANAGER" | "MARKETING";
93
+ user?: import("@growsober/types/dist/generated").components["schemas"]["BrandOwnerUserDto"];
94
+ createdAt: string;
95
+ updatedAt: string;
96
+ }, Error, {
97
+ brandId: string;
98
+ userId: string;
99
+ role: BrandOwnerRole;
100
+ }, unknown>;
101
+ /**
102
+ * Update a brand owner's role
103
+ *
104
+ * @example
105
+ * ```tsx
106
+ * const { mutateAsync: updateOwnerRole } = useUpdateBrandOwnerRole();
107
+ *
108
+ * await updateOwnerRole({
109
+ * brandId: 'brand-123',
110
+ * userId: 'user-456',
111
+ * role: 'OWNER',
112
+ * });
113
+ * ```
114
+ */
115
+ export declare function useUpdateBrandOwnerRole(options?: Omit<UseMutationOptions<BrandOwnerResponse, Error, {
116
+ brandId: string;
117
+ userId: string;
118
+ role: BrandOwnerRole;
119
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
120
+ id: string;
121
+ brandId: string;
122
+ userId: string;
123
+ role: "OWNER" | "MANAGER" | "MARKETING";
124
+ user?: import("@growsober/types/dist/generated").components["schemas"]["BrandOwnerUserDto"];
125
+ createdAt: string;
126
+ updatedAt: string;
127
+ }, Error, {
128
+ brandId: string;
129
+ userId: string;
130
+ role: BrandOwnerRole;
131
+ }, unknown>;
132
+ /**
133
+ * Remove a brand owner
134
+ *
135
+ * @example
136
+ * ```tsx
137
+ * const { mutateAsync: removeOwner } = useRemoveBrandOwner();
138
+ *
139
+ * await removeOwner({
140
+ * brandId: 'brand-123',
141
+ * userId: 'user-456',
142
+ * });
143
+ * ```
144
+ */
145
+ export declare function useRemoveBrandOwner(options?: Omit<UseMutationOptions<void, Error, {
146
+ brandId: string;
147
+ userId: string;
148
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, {
149
+ brandId: string;
150
+ userId: string;
151
+ }, unknown>;
152
+ /**
153
+ * Add a creator partnership to a brand
154
+ *
155
+ * @example
156
+ * ```tsx
157
+ * const { mutateAsync: addCreator } = useAddBrandCreator();
158
+ *
159
+ * await addCreator({
160
+ * brandId: 'brand-123',
161
+ * creatorId: 'creator-456',
162
+ * commissionRate: 0.15,
163
+ * });
164
+ * ```
165
+ */
166
+ export declare function useAddBrandCreator(options?: Omit<UseMutationOptions<BrandCreatorResponse, Error, {
167
+ brandId: string;
168
+ creatorId: string;
169
+ startDate?: string;
170
+ endDate?: string;
171
+ commissionRate?: number;
172
+ isActive?: boolean;
173
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
174
+ id: string;
175
+ brandId: string;
176
+ creatorId: string;
177
+ startDate?: string;
178
+ endDate?: string;
179
+ isActive: boolean;
180
+ commissionRate?: number;
181
+ creator?: Record<string, never>;
182
+ createdAt: string;
183
+ updatedAt: string;
184
+ }, Error, {
185
+ brandId: string;
186
+ creatorId: string;
187
+ startDate?: string;
188
+ endDate?: string;
189
+ commissionRate?: number;
190
+ isActive?: boolean;
191
+ }, unknown>;
192
+ /**
193
+ * Update a creator partnership
194
+ *
195
+ * @example
196
+ * ```tsx
197
+ * const { mutateAsync: updateCreator } = useUpdateBrandCreator();
198
+ *
199
+ * await updateCreator({
200
+ * brandId: 'brand-123',
201
+ * creatorId: 'creator-456',
202
+ * isActive: false,
203
+ * });
204
+ * ```
205
+ */
206
+ export declare function useUpdateBrandCreator(options?: Omit<UseMutationOptions<BrandCreatorResponse, Error, {
207
+ brandId: string;
208
+ creatorId: string;
209
+ startDate?: string;
210
+ endDate?: string;
211
+ commissionRate?: number;
212
+ isActive?: boolean;
213
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<{
214
+ id: string;
215
+ brandId: string;
216
+ creatorId: string;
217
+ startDate?: string;
218
+ endDate?: string;
219
+ isActive: boolean;
220
+ commissionRate?: number;
221
+ creator?: Record<string, never>;
222
+ createdAt: string;
223
+ updatedAt: string;
224
+ }, Error, {
225
+ brandId: string;
226
+ creatorId: string;
227
+ startDate?: string;
228
+ endDate?: string;
229
+ commissionRate?: number;
230
+ isActive?: boolean;
231
+ }, unknown>;
232
+ /**
233
+ * Remove a creator partnership from a brand
234
+ *
235
+ * @example
236
+ * ```tsx
237
+ * const { mutateAsync: removeCreator } = useRemoveBrandCreator();
238
+ *
239
+ * await removeCreator({
240
+ * brandId: 'brand-123',
241
+ * creatorId: 'creator-456',
242
+ * });
243
+ * ```
244
+ */
245
+ export declare function useRemoveBrandCreator(options?: Omit<UseMutationOptions<void, Error, {
246
+ brandId: string;
247
+ creatorId: string;
248
+ }>, 'mutationFn'>): import("@tanstack/react-query").UseMutationResult<void, Error, {
249
+ brandId: string;
250
+ creatorId: string;
251
+ }, unknown>;