@instockng/api-client 1.0.3 → 1.0.5

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 (170) hide show
  1. package/dist/apps/backend/src/generated/zod/index.d.ts +1114 -0
  2. package/dist/apps/backend/src/generated/zod/index.js +670 -0
  3. package/dist/apps/backend/src/http-app.d.ts +40 -0
  4. package/dist/apps/backend/src/http-app.js +106 -0
  5. package/dist/apps/backend/src/lib/brand-response.d.ts +14 -0
  6. package/dist/apps/backend/src/lib/brand-response.js +8 -0
  7. package/dist/apps/backend/src/lib/cart-helpers.d.ts +280 -0
  8. package/dist/apps/backend/src/lib/cart-helpers.js +93 -0
  9. package/dist/apps/backend/src/lib/cart-recovery.d.ts +30 -0
  10. package/dist/apps/backend/src/lib/cart-recovery.js +147 -0
  11. package/dist/apps/backend/src/lib/cart-response.d.ts +121 -0
  12. package/dist/apps/backend/src/lib/cart-response.js +150 -0
  13. package/dist/apps/backend/src/lib/clerk.d.ts +18 -0
  14. package/dist/apps/backend/src/lib/clerk.js +167 -0
  15. package/dist/apps/backend/src/lib/delivery-zone-response.d.ts +62 -0
  16. package/dist/apps/backend/src/lib/delivery-zone-response.js +24 -0
  17. package/dist/apps/backend/src/lib/discount-code-response.d.ts +42 -0
  18. package/dist/apps/backend/src/lib/discount-code-response.js +19 -0
  19. package/dist/apps/backend/src/lib/discount.d.ts +20 -0
  20. package/dist/apps/backend/src/lib/discount.js +35 -0
  21. package/dist/apps/backend/src/lib/inventory.d.ts +26 -0
  22. package/dist/apps/backend/src/lib/inventory.js +160 -0
  23. package/dist/apps/backend/src/lib/meta-capi.d.ts +48 -0
  24. package/dist/apps/backend/src/lib/meta-capi.js +120 -0
  25. package/dist/apps/backend/src/lib/openapi.d.ts +36 -0
  26. package/dist/apps/backend/src/lib/openapi.js +69 -0
  27. package/dist/apps/backend/src/lib/order-recovery.d.ts +367 -0
  28. package/dist/apps/backend/src/lib/order-recovery.js +373 -0
  29. package/dist/apps/backend/src/lib/order-response.d.ts +136 -0
  30. package/dist/apps/backend/src/lib/order-response.js +61 -0
  31. package/dist/apps/backend/src/lib/pricing.d.ts +39 -0
  32. package/dist/apps/backend/src/lib/pricing.js +62 -0
  33. package/dist/apps/backend/src/lib/prisma.d.ts +9 -0
  34. package/dist/apps/backend/src/lib/prisma.js +30 -0
  35. package/dist/apps/backend/src/lib/product-response.d.ts +82 -0
  36. package/dist/apps/backend/src/lib/product-response.js +29 -0
  37. package/dist/apps/backend/src/lib/utils.d.ts +32 -0
  38. package/dist/apps/backend/src/lib/utils.js +63 -0
  39. package/dist/apps/backend/src/middleware/clerk-auth.d.ts +8 -0
  40. package/dist/apps/backend/src/middleware/clerk-auth.js +89 -0
  41. package/dist/apps/backend/src/middleware/cors.d.ts +8 -0
  42. package/dist/apps/backend/src/middleware/cors.js +11 -0
  43. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.d.ts +55 -0
  44. package/dist/apps/backend/src/notifications/producers/meta-capi-producer.js +125 -0
  45. package/dist/apps/backend/src/notifications/producers/order-notification.d.ts +9 -0
  46. package/dist/apps/backend/src/notifications/producers/order-notification.js +18 -0
  47. package/dist/apps/backend/src/notifications/producers/prospect-recovery-notification.d.ts +10 -0
  48. package/dist/apps/backend/src/notifications/producers/prospect-recovery-notification.js +11 -0
  49. package/dist/apps/backend/src/routes/admin/abandoned-carts.d.ts +605 -0
  50. package/dist/apps/backend/src/routes/admin/abandoned-carts.js +194 -0
  51. package/dist/apps/backend/src/routes/admin/brands.d.ts +175 -0
  52. package/dist/apps/backend/src/routes/admin/brands.js +118 -0
  53. package/dist/apps/backend/src/routes/admin/customers.d.ts +306 -0
  54. package/dist/apps/backend/src/routes/admin/customers.js +39 -0
  55. package/dist/apps/backend/src/routes/admin/delivery-zones.d.ts +438 -0
  56. package/dist/apps/backend/src/routes/admin/delivery-zones.js +300 -0
  57. package/dist/apps/backend/src/routes/admin/discount-codes.d.ts +478 -0
  58. package/dist/apps/backend/src/routes/admin/discount-codes.js +418 -0
  59. package/dist/apps/backend/src/routes/admin/inventory.d.ts +273 -0
  60. package/dist/apps/backend/src/routes/admin/inventory.js +189 -0
  61. package/dist/apps/backend/src/routes/admin/orders.d.ts +1478 -0
  62. package/dist/apps/backend/src/routes/admin/orders.js +503 -0
  63. package/dist/apps/backend/src/routes/admin/products.d.ts +860 -0
  64. package/dist/apps/backend/src/routes/admin/products.js +107 -0
  65. package/dist/apps/backend/src/routes/admin/stats.d.ts +288 -0
  66. package/dist/apps/backend/src/routes/admin/stats.js +55 -0
  67. package/dist/apps/backend/src/routes/admin/variants.d.ts +239 -0
  68. package/dist/apps/backend/src/routes/admin/variants.js +173 -0
  69. package/dist/apps/backend/src/routes/admin/warehouses.d.ts +373 -0
  70. package/dist/apps/backend/src/routes/admin/warehouses.js +123 -0
  71. package/dist/apps/backend/src/routes/public/brands.d.ts +40 -0
  72. package/dist/apps/backend/src/routes/public/brands.js +38 -0
  73. package/dist/apps/backend/src/routes/public/carts.d.ts +2655 -0
  74. package/dist/apps/backend/src/routes/public/carts.js +631 -0
  75. package/dist/apps/backend/src/routes/public/delivery-zones.d.ts +35 -0
  76. package/dist/apps/backend/src/routes/public/delivery-zones.js +62 -0
  77. package/dist/apps/backend/src/routes/public/orders.d.ts +323 -0
  78. package/dist/apps/backend/src/routes/public/orders.js +160 -0
  79. package/dist/apps/backend/src/routes/public/products.d.ts +449 -0
  80. package/dist/apps/backend/src/routes/public/products.js +133 -0
  81. package/dist/apps/backend/src/types/index.d.ts +42 -0
  82. package/dist/apps/backend/src/types/index.js +2 -0
  83. package/dist/apps/backend/src/validators/brand.d.ts +17 -0
  84. package/dist/apps/backend/src/validators/brand.js +15 -0
  85. package/dist/apps/backend/src/validators/delivery-zone.d.ts +31 -0
  86. package/dist/apps/backend/src/validators/delivery-zone.js +51 -0
  87. package/dist/apps/backend/src/validators/discount-code.d.ts +74 -0
  88. package/dist/apps/backend/src/validators/discount-code.js +50 -0
  89. package/dist/apps/backend/src/validators/inventory.d.ts +20 -0
  90. package/dist/apps/backend/src/validators/inventory.js +15 -0
  91. package/dist/apps/backend/src/validators/order.d.ts +87 -0
  92. package/dist/apps/backend/src/validators/order.js +61 -0
  93. package/dist/apps/backend/src/validators/product.d.ts +18 -0
  94. package/dist/apps/backend/src/validators/product.js +19 -0
  95. package/dist/apps/backend/src/validators/variant.d.ts +19 -0
  96. package/dist/apps/backend/src/validators/variant.js +19 -0
  97. package/dist/apps/backend/src/validators/warehouse.d.ts +15 -0
  98. package/dist/apps/backend/src/validators/warehouse.js +15 -0
  99. package/dist/fetchers/carts.d.ts +746 -754
  100. package/dist/hooks/public/carts.d.ts +694 -702
  101. package/dist/packages/api-client/src/backend-types.d.ts +10 -0
  102. package/dist/packages/api-client/src/backend-types.js +10 -0
  103. package/dist/packages/api-client/src/client.d.ts +20 -0
  104. package/dist/packages/api-client/src/client.js +40 -0
  105. package/dist/packages/api-client/src/fetchers/brands.d.ts +25 -0
  106. package/dist/packages/api-client/src/fetchers/brands.js +26 -0
  107. package/dist/packages/api-client/src/fetchers/carts.d.ts +2335 -0
  108. package/dist/packages/api-client/src/fetchers/carts.js +169 -0
  109. package/dist/packages/api-client/src/fetchers/delivery-zones.d.ts +28 -0
  110. package/dist/packages/api-client/src/fetchers/delivery-zones.js +26 -0
  111. package/dist/packages/api-client/src/fetchers/index.d.ts +22 -0
  112. package/dist/packages/api-client/src/fetchers/index.js +22 -0
  113. package/dist/packages/api-client/src/fetchers/orders.d.ts +283 -0
  114. package/dist/packages/api-client/src/fetchers/orders.js +44 -0
  115. package/dist/packages/api-client/src/fetchers/products.d.ts +386 -0
  116. package/dist/packages/api-client/src/fetchers/products.js +42 -0
  117. package/dist/packages/api-client/src/hooks/admin/abandoned-carts.d.ts +535 -0
  118. package/dist/packages/api-client/src/hooks/admin/abandoned-carts.js +83 -0
  119. package/dist/packages/api-client/src/hooks/admin/brands.d.ts +79 -0
  120. package/dist/packages/api-client/src/hooks/admin/brands.js +108 -0
  121. package/dist/packages/api-client/src/hooks/admin/customers.d.ts +278 -0
  122. package/dist/packages/api-client/src/hooks/admin/customers.js +26 -0
  123. package/dist/packages/api-client/src/hooks/admin/delivery-zones.d.ts +270 -0
  124. package/dist/packages/api-client/src/hooks/admin/delivery-zones.js +176 -0
  125. package/dist/packages/api-client/src/hooks/admin/discount-codes.d.ts +299 -0
  126. package/dist/packages/api-client/src/hooks/admin/discount-codes.js +165 -0
  127. package/dist/packages/api-client/src/hooks/admin/index.d.ts +16 -0
  128. package/dist/packages/api-client/src/hooks/admin/index.js +16 -0
  129. package/dist/packages/api-client/src/hooks/admin/inventory.d.ts +224 -0
  130. package/dist/packages/api-client/src/hooks/admin/inventory.js +107 -0
  131. package/dist/packages/api-client/src/hooks/admin/orders.d.ts +1380 -0
  132. package/dist/packages/api-client/src/hooks/admin/orders.js +175 -0
  133. package/dist/packages/api-client/src/hooks/admin/products.d.ts +374 -0
  134. package/dist/packages/api-client/src/hooks/admin/products.js +89 -0
  135. package/dist/packages/api-client/src/hooks/admin/stats.d.ts +277 -0
  136. package/dist/packages/api-client/src/hooks/admin/stats.js +25 -0
  137. package/dist/packages/api-client/src/hooks/admin/variants.d.ts +115 -0
  138. package/dist/packages/api-client/src/hooks/admin/variants.js +127 -0
  139. package/dist/packages/api-client/src/hooks/admin/warehouses.d.ts +277 -0
  140. package/dist/packages/api-client/src/hooks/admin/warehouses.js +108 -0
  141. package/dist/packages/api-client/src/hooks/public/brands.d.ts +33 -0
  142. package/dist/packages/api-client/src/hooks/public/brands.js +30 -0
  143. package/dist/packages/api-client/src/hooks/public/carts.d.ts +2405 -0
  144. package/dist/packages/api-client/src/hooks/public/carts.js +213 -0
  145. package/dist/packages/api-client/src/hooks/public/delivery-zones.d.ts +34 -0
  146. package/dist/packages/api-client/src/hooks/public/delivery-zones.js +28 -0
  147. package/dist/packages/api-client/src/hooks/public/index.d.ts +10 -0
  148. package/dist/packages/api-client/src/hooks/public/index.js +10 -0
  149. package/dist/packages/api-client/src/hooks/public/orders.d.ts +302 -0
  150. package/dist/packages/api-client/src/hooks/public/orders.js +50 -0
  151. package/dist/packages/api-client/src/hooks/public/products.d.ts +398 -0
  152. package/dist/packages/api-client/src/hooks/public/products.js +47 -0
  153. package/dist/packages/api-client/src/hooks/use-query-unwrapped.d.ts +20 -0
  154. package/dist/packages/api-client/src/hooks/use-query-unwrapped.js +22 -0
  155. package/dist/packages/api-client/src/hooks/useApiConfig.d.ts +12 -0
  156. package/dist/packages/api-client/src/hooks/useApiConfig.js +14 -0
  157. package/dist/packages/api-client/src/index.d.ts +20 -0
  158. package/dist/packages/api-client/src/index.js +25 -0
  159. package/dist/packages/api-client/src/provider.d.ts +36 -0
  160. package/dist/packages/api-client/src/provider.js +54 -0
  161. package/dist/packages/api-client/src/rpc-client.d.ts +9035 -0
  162. package/dist/packages/api-client/src/rpc-client.js +78 -0
  163. package/dist/packages/api-client/src/rpc-types.d.ts +76 -0
  164. package/dist/packages/api-client/src/rpc-types.js +7 -0
  165. package/dist/packages/api-client/src/types.d.ts +37 -0
  166. package/dist/packages/api-client/src/types.js +16 -0
  167. package/dist/packages/api-client/src/utils/query-keys.d.ts +106 -0
  168. package/dist/packages/api-client/src/utils/query-keys.js +108 -0
  169. package/dist/rpc-client.d.ts +685 -693
  170. package/package.json +10 -9
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Type-safe admin RPC hooks for inventory management
3
+ */
4
+ import { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
5
+ import { createAdminRpcClients } from '../../rpc-client';
6
+ /**
7
+ * Hook to get inventory overview using admin RPC
8
+ */
9
+ export declare function useListInventory(params?: {
10
+ brandId?: string;
11
+ warehouseId?: string;
12
+ productId?: string;
13
+ }, options?: Omit<UseQueryOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['inventory']['index']['$get']>>['json']>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
14
+ variantId: string;
15
+ warehouseId: string;
16
+ sku: string;
17
+ productName: string;
18
+ name: string;
19
+ brandName: string;
20
+ warehouseName: string;
21
+ inventoryCount: number;
22
+ lowStockThreshold: number;
23
+ isLowStock: boolean;
24
+ }[], Error>;
25
+ /**
26
+ * Hook to adjust inventory using admin RPC
27
+ */
28
+ export declare function useAdjustInventory(options?: UseMutationOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['inventory']['adjust']['$post']>>['json']>>, Error, any>): import("@tanstack/react-query").UseMutationResult<unknown, Error, any, unknown>;
29
+ /**
30
+ * Hook to transfer inventory between warehouses using admin RPC
31
+ */
32
+ export declare function useTransferInventory(options?: UseMutationOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['inventory']['transfer']['$post']>>['json']>>, Error, any>): import("@tanstack/react-query").UseMutationResult<unknown, Error, any, unknown>;
33
+ /**
34
+ * Hook to get inventory transaction history using admin RPC
35
+ */
36
+ export declare function useGetInventoryTransactions(params?: {
37
+ variantId?: string;
38
+ warehouseId?: string;
39
+ type?: string;
40
+ startDate?: string;
41
+ endDate?: string;
42
+ page?: number;
43
+ limit?: number;
44
+ }, options?: Omit<UseQueryOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['inventory']['transactions']['$get']>>['json']>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
45
+ data: {
46
+ id: string;
47
+ type: import("@prisma/client").$Enums.InventoryTransactionType;
48
+ quantity: number;
49
+ balanceAfter: number;
50
+ reason: string;
51
+ orderId: string;
52
+ orderNumber: number;
53
+ userId: string;
54
+ metadata: string | number | boolean | {
55
+ [x: string]: string | number | boolean | /*elided*/ any | {
56
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
57
+ length: number;
58
+ toString: never;
59
+ toLocaleString: never;
60
+ pop: never;
61
+ push: never;
62
+ concat: never;
63
+ join: never;
64
+ reverse: never;
65
+ shift: never;
66
+ slice: never;
67
+ sort: never;
68
+ splice: never;
69
+ unshift: never;
70
+ indexOf: never;
71
+ lastIndexOf: never;
72
+ every: never;
73
+ some: never;
74
+ forEach: never;
75
+ map: never;
76
+ filter: never;
77
+ reduce: never;
78
+ reduceRight: never;
79
+ find: never;
80
+ findIndex: never;
81
+ fill: never;
82
+ copyWithin: never;
83
+ entries: never;
84
+ keys: never;
85
+ values: never;
86
+ includes: never;
87
+ flatMap: never;
88
+ flat: never;
89
+ [Symbol.iterator]: never;
90
+ readonly [Symbol.unscopables]: {
91
+ [x: number]: boolean;
92
+ length?: boolean;
93
+ toString?: boolean;
94
+ toLocaleString?: boolean;
95
+ pop?: boolean;
96
+ push?: boolean;
97
+ concat?: boolean;
98
+ join?: boolean;
99
+ reverse?: boolean;
100
+ shift?: boolean;
101
+ slice?: boolean;
102
+ sort?: boolean;
103
+ splice?: boolean;
104
+ unshift?: boolean;
105
+ indexOf?: boolean;
106
+ lastIndexOf?: boolean;
107
+ every?: boolean;
108
+ some?: boolean;
109
+ forEach?: boolean;
110
+ map?: boolean;
111
+ filter?: boolean;
112
+ reduce?: boolean;
113
+ reduceRight?: boolean;
114
+ find?: boolean;
115
+ findIndex?: boolean;
116
+ fill?: boolean;
117
+ copyWithin?: boolean;
118
+ entries?: boolean;
119
+ keys?: boolean;
120
+ values?: boolean;
121
+ includes?: boolean;
122
+ flatMap?: boolean;
123
+ flat?: boolean;
124
+ };
125
+ };
126
+ } | {
127
+ [x: number]: string | number | boolean | {
128
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
129
+ } | /*elided*/ any;
130
+ length: number;
131
+ toString: never;
132
+ toLocaleString: never;
133
+ pop: never;
134
+ push: never;
135
+ concat: never;
136
+ join: never;
137
+ reverse: never;
138
+ shift: never;
139
+ slice: never;
140
+ sort: never;
141
+ splice: never;
142
+ unshift: never;
143
+ indexOf: never;
144
+ lastIndexOf: never;
145
+ every: never;
146
+ some: never;
147
+ forEach: never;
148
+ map: never;
149
+ filter: never;
150
+ reduce: never;
151
+ reduceRight: never;
152
+ find: never;
153
+ findIndex: never;
154
+ fill: never;
155
+ copyWithin: never;
156
+ entries: never;
157
+ keys: never;
158
+ values: never;
159
+ includes: never;
160
+ flatMap: never;
161
+ flat: never;
162
+ [Symbol.iterator]: never;
163
+ readonly [Symbol.unscopables]: {
164
+ [x: number]: boolean;
165
+ length?: boolean;
166
+ toString?: boolean;
167
+ toLocaleString?: boolean;
168
+ pop?: boolean;
169
+ push?: boolean;
170
+ concat?: boolean;
171
+ join?: boolean;
172
+ reverse?: boolean;
173
+ shift?: boolean;
174
+ slice?: boolean;
175
+ sort?: boolean;
176
+ splice?: boolean;
177
+ unshift?: boolean;
178
+ indexOf?: boolean;
179
+ lastIndexOf?: boolean;
180
+ every?: boolean;
181
+ some?: boolean;
182
+ forEach?: boolean;
183
+ map?: boolean;
184
+ filter?: boolean;
185
+ reduce?: boolean;
186
+ reduceRight?: boolean;
187
+ find?: boolean;
188
+ findIndex?: boolean;
189
+ fill?: boolean;
190
+ copyWithin?: boolean;
191
+ entries?: boolean;
192
+ keys?: boolean;
193
+ values?: boolean;
194
+ includes?: boolean;
195
+ flatMap?: boolean;
196
+ flat?: boolean;
197
+ };
198
+ };
199
+ createdAt: string;
200
+ variant: {
201
+ id: string;
202
+ sku: string;
203
+ name: string;
204
+ productName: string;
205
+ brandName: string;
206
+ };
207
+ warehouse: {
208
+ id: string;
209
+ name: string;
210
+ };
211
+ }[];
212
+ pagination: {
213
+ page: number;
214
+ limit: number;
215
+ total: number;
216
+ totalPages: number;
217
+ };
218
+ }, Error>;
219
+ /**
220
+ * Hook to get low stock alerts using admin RPC
221
+ */
222
+ export declare function useGetLowStockVariants(params?: {
223
+ brandId?: string;
224
+ }, options?: Omit<UseQueryOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['inventory']['low-stock']['$get']>>['json']>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<never, Error>;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Type-safe admin RPC hooks for inventory management
3
+ */
4
+ import { useMutation, useQueryClient } from '@tanstack/react-query';
5
+ import { useQueryUnwrapped } from '../use-query-unwrapped';
6
+ import { createAdminRpcClients, authHeaders } from '../../rpc-client';
7
+ import { queryKeys } from '../../utils/query-keys';
8
+ import { useApiConfig } from '../useApiConfig';
9
+ /**
10
+ * Hook to get inventory overview using admin RPC
11
+ */
12
+ export function useListInventory(params, options) {
13
+ const { baseURL, getAuthToken } = useApiConfig();
14
+ return useQueryUnwrapped({
15
+ queryKey: queryKeys.admin.inventory.list(params),
16
+ queryFn: async () => {
17
+ const token = await getAuthToken();
18
+ const clients = createAdminRpcClients(baseURL);
19
+ const res = await clients.inventory.index.$get({ query: params }, authHeaders(token));
20
+ if (!res.ok)
21
+ throw new Error(`Failed to fetch inventory: ${res.statusText}`);
22
+ return res.json();
23
+ },
24
+ ...options,
25
+ });
26
+ }
27
+ /**
28
+ * Hook to adjust inventory using admin RPC
29
+ */
30
+ export function useAdjustInventory(options) {
31
+ const { baseURL, getAuthToken } = useApiConfig();
32
+ const queryClient = useQueryClient();
33
+ return useMutation({
34
+ mutationFn: async (data) => {
35
+ const token = await getAuthToken();
36
+ const clients = createAdminRpcClients(baseURL);
37
+ const res = await clients.inventory.adjust.$post({ json: data }, authHeaders(token));
38
+ if (!res.ok)
39
+ throw new Error(`Failed to adjust inventory: ${res.statusText}`);
40
+ return res.json();
41
+ },
42
+ onSuccess: () => {
43
+ queryClient.invalidateQueries({ queryKey: queryKeys.admin.inventory.all });
44
+ queryClient.invalidateQueries({ queryKey: queryKeys.admin.variants.all });
45
+ queryClient.invalidateQueries({ queryKey: queryKeys.admin.warehouses.all });
46
+ },
47
+ ...options,
48
+ });
49
+ }
50
+ /**
51
+ * Hook to transfer inventory between warehouses using admin RPC
52
+ */
53
+ export function useTransferInventory(options) {
54
+ const { baseURL, getAuthToken } = useApiConfig();
55
+ const queryClient = useQueryClient();
56
+ return useMutation({
57
+ mutationFn: async (data) => {
58
+ const token = await getAuthToken();
59
+ const clients = createAdminRpcClients(baseURL);
60
+ const res = await clients.inventory.transfer.$post({ json: data }, authHeaders(token));
61
+ if (!res.ok)
62
+ throw new Error(`Failed to transfer inventory: ${res.statusText}`);
63
+ return res.json();
64
+ },
65
+ onSuccess: () => {
66
+ queryClient.invalidateQueries({ queryKey: queryKeys.admin.inventory.all });
67
+ queryClient.invalidateQueries({ queryKey: queryKeys.admin.warehouses.all });
68
+ },
69
+ ...options,
70
+ });
71
+ }
72
+ /**
73
+ * Hook to get inventory transaction history using admin RPC
74
+ */
75
+ export function useGetInventoryTransactions(params, options) {
76
+ const { baseURL, getAuthToken } = useApiConfig();
77
+ return useQueryUnwrapped({
78
+ queryKey: queryKeys.admin.inventory.transactions(params),
79
+ queryFn: async () => {
80
+ const token = await getAuthToken();
81
+ const clients = createAdminRpcClients(baseURL);
82
+ const res = await clients.inventory.transactions.$get({ query: params }, authHeaders(token));
83
+ if (!res.ok)
84
+ throw new Error(`Failed to fetch inventory transactions: ${res.statusText}`);
85
+ return res.json();
86
+ },
87
+ ...options,
88
+ });
89
+ }
90
+ /**
91
+ * Hook to get low stock alerts using admin RPC
92
+ */
93
+ export function useGetLowStockVariants(params, options) {
94
+ const { baseURL, getAuthToken } = useApiConfig();
95
+ return useQueryUnwrapped({
96
+ queryKey: queryKeys.admin.inventory.lowStock(params?.brandId),
97
+ queryFn: async () => {
98
+ const token = await getAuthToken();
99
+ const clients = createAdminRpcClients(baseURL);
100
+ const res = await clients.inventory['low-stock'].$get({ query: params }, authHeaders(token));
101
+ if (!res.ok)
102
+ throw new Error(`Failed to fetch low stock alerts: ${res.statusText}`);
103
+ return res.json();
104
+ },
105
+ ...options,
106
+ });
107
+ }