@instockng/api-client 1.0.16 → 1.0.18

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.
@@ -794,9 +794,11 @@ export declare function updateCart(cartId: string, data: {
794
794
  * @param quantity - Quantity to add
795
795
  * @param fbc - Facebook Click ID (optional)
796
796
  * @param fbp - Facebook Browser ID (optional)
797
+ * @param ttp - TikTok Click ID (_ttp cookie) (optional)
798
+ * @param ttclid - TikTok Click ID (URL parameter) (optional)
797
799
  * @returns Updated cart
798
800
  */
799
- export declare function addCartItem(cartId: string, sku: string, quantity: number, fbc?: string, fbp?: string): Promise<{
801
+ export declare function addCartItem(cartId: string, sku: string, quantity: number, fbc?: string, fbp?: string, ttp?: string, ttclid?: string): Promise<{
800
802
  id: string;
801
803
  brand: {
802
804
  createdAt: string;
@@ -2099,6 +2101,8 @@ export declare function checkoutCart(cartId: string, checkoutData: {
2099
2101
  ifUnmodifiedSince?: string;
2100
2102
  fbc?: string;
2101
2103
  fbp?: string;
2104
+ ttp?: string;
2105
+ ttclid?: string;
2102
2106
  }): Promise<{
2103
2107
  subtotal: number;
2104
2108
  deliveryCharge: number;
@@ -2362,3 +2366,201 @@ export declare function checkoutCart(cartId: string, checkoutData: {
2362
2366
  prospectReason: import("@prisma/client").$Enums.ProspectReason | null;
2363
2367
  userActionToken: string;
2364
2368
  }>;
2369
+ /**
2370
+ * Fetch recommended products for a cart
2371
+ *
2372
+ * @param cartId - Cart UUID
2373
+ * @param limit - Maximum number of recommendations (default: 6)
2374
+ * @returns Array of recommended products from the same brand
2375
+ */
2376
+ export declare function fetchCartRecommendations(cartId: string, limit: number): Promise<{
2377
+ brand: {
2378
+ createdAt: string;
2379
+ updatedAt: string;
2380
+ deletedAt: string;
2381
+ id: string;
2382
+ name: string;
2383
+ slug: string;
2384
+ logoUrl: string | null;
2385
+ siteUrl: string;
2386
+ domain: string;
2387
+ metaPixelId: string | null;
2388
+ tiktokPixelId: string | null;
2389
+ paystackPublicKey: string | null;
2390
+ paystackSecretKey: string | null;
2391
+ };
2392
+ variants: {
2393
+ createdAt: string;
2394
+ updatedAt: string;
2395
+ price: number;
2396
+ deletedAt: string;
2397
+ id: string;
2398
+ name: string | null;
2399
+ isActive: boolean;
2400
+ thumbnailUrl: string | null;
2401
+ productId: string;
2402
+ sku: string;
2403
+ trackInventory: boolean;
2404
+ lowStockThreshold: number | null;
2405
+ }[];
2406
+ id: string;
2407
+ name: string;
2408
+ slug: string;
2409
+ createdAt: string;
2410
+ updatedAt: string;
2411
+ deletedAt: string;
2412
+ brandId: string;
2413
+ isActive: boolean;
2414
+ description: string | null;
2415
+ thumbnailUrl: string | null;
2416
+ quantityDiscounts: string | number | boolean | {
2417
+ [x: string]: string | number | boolean | /*elided*/ any | {
2418
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
2419
+ length: number;
2420
+ toString: never;
2421
+ toLocaleString: never;
2422
+ pop: never;
2423
+ push: never;
2424
+ concat: never;
2425
+ join: never;
2426
+ reverse: never;
2427
+ shift: never;
2428
+ slice: never;
2429
+ sort: never;
2430
+ splice: never;
2431
+ unshift: never;
2432
+ indexOf: never;
2433
+ lastIndexOf: never;
2434
+ every: never;
2435
+ some: never;
2436
+ forEach: never;
2437
+ map: never;
2438
+ filter: never;
2439
+ reduce: never;
2440
+ reduceRight: never;
2441
+ find: never;
2442
+ findIndex: never;
2443
+ fill: never;
2444
+ copyWithin: never;
2445
+ entries: never;
2446
+ keys: never;
2447
+ values: never;
2448
+ includes: never;
2449
+ flatMap: never;
2450
+ flat: never;
2451
+ [Symbol.iterator]: never;
2452
+ readonly [Symbol.unscopables]: {
2453
+ [x: number]: boolean;
2454
+ length?: boolean;
2455
+ toString?: boolean;
2456
+ toLocaleString?: boolean;
2457
+ pop?: boolean;
2458
+ push?: boolean;
2459
+ concat?: boolean;
2460
+ join?: boolean;
2461
+ reverse?: boolean;
2462
+ shift?: boolean;
2463
+ slice?: boolean;
2464
+ sort?: boolean;
2465
+ splice?: boolean;
2466
+ unshift?: boolean;
2467
+ indexOf?: boolean;
2468
+ lastIndexOf?: boolean;
2469
+ every?: boolean;
2470
+ some?: boolean;
2471
+ forEach?: boolean;
2472
+ map?: boolean;
2473
+ filter?: boolean;
2474
+ reduce?: boolean;
2475
+ reduceRight?: boolean;
2476
+ find?: boolean;
2477
+ findIndex?: boolean;
2478
+ fill?: boolean;
2479
+ copyWithin?: boolean;
2480
+ entries?: boolean;
2481
+ keys?: boolean;
2482
+ values?: boolean;
2483
+ includes?: boolean;
2484
+ flatMap?: boolean;
2485
+ flat?: boolean;
2486
+ };
2487
+ };
2488
+ } | {
2489
+ [x: number]: string | number | boolean | {
2490
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
2491
+ } | /*elided*/ any;
2492
+ length: number;
2493
+ toString: never;
2494
+ toLocaleString: never;
2495
+ pop: never;
2496
+ push: never;
2497
+ concat: never;
2498
+ join: never;
2499
+ reverse: never;
2500
+ shift: never;
2501
+ slice: never;
2502
+ sort: never;
2503
+ splice: never;
2504
+ unshift: never;
2505
+ indexOf: never;
2506
+ lastIndexOf: never;
2507
+ every: never;
2508
+ some: never;
2509
+ forEach: never;
2510
+ map: never;
2511
+ filter: never;
2512
+ reduce: never;
2513
+ reduceRight: never;
2514
+ find: never;
2515
+ findIndex: never;
2516
+ fill: never;
2517
+ copyWithin: never;
2518
+ entries: never;
2519
+ keys: never;
2520
+ values: never;
2521
+ includes: never;
2522
+ flatMap: never;
2523
+ flat: never;
2524
+ [Symbol.iterator]: never;
2525
+ readonly [Symbol.unscopables]: {
2526
+ [x: number]: boolean;
2527
+ length?: boolean;
2528
+ toString?: boolean;
2529
+ toLocaleString?: boolean;
2530
+ pop?: boolean;
2531
+ push?: boolean;
2532
+ concat?: boolean;
2533
+ join?: boolean;
2534
+ reverse?: boolean;
2535
+ shift?: boolean;
2536
+ slice?: boolean;
2537
+ sort?: boolean;
2538
+ splice?: boolean;
2539
+ unshift?: boolean;
2540
+ indexOf?: boolean;
2541
+ lastIndexOf?: boolean;
2542
+ every?: boolean;
2543
+ some?: boolean;
2544
+ forEach?: boolean;
2545
+ map?: boolean;
2546
+ filter?: boolean;
2547
+ reduce?: boolean;
2548
+ reduceRight?: boolean;
2549
+ find?: boolean;
2550
+ findIndex?: boolean;
2551
+ fill?: boolean;
2552
+ copyWithin?: boolean;
2553
+ entries?: boolean;
2554
+ keys?: boolean;
2555
+ values?: boolean;
2556
+ includes?: boolean;
2557
+ flatMap?: boolean;
2558
+ flat?: boolean;
2559
+ };
2560
+ };
2561
+ }[] | {
2562
+ error: {
2563
+ code: string;
2564
+ message: string;
2565
+ };
2566
+ }>;
@@ -67,14 +67,16 @@ export async function updateCart(cartId, data) {
67
67
  * @param quantity - Quantity to add
68
68
  * @param fbc - Facebook Click ID (optional)
69
69
  * @param fbp - Facebook Browser ID (optional)
70
+ * @param ttp - TikTok Click ID (_ttp cookie) (optional)
71
+ * @param ttclid - TikTok Click ID (URL parameter) (optional)
70
72
  * @returns Updated cart
71
73
  */
72
- export async function addCartItem(cartId, sku, quantity, fbc, fbp) {
74
+ export async function addCartItem(cartId, sku, quantity, fbc, fbp, ttp, ttclid) {
73
75
  const clients = createRpcClients(API_URL);
74
76
  const res = await clients.carts[':id'].items.$post({
75
77
  param: { id: cartId },
76
78
  // @ts-expect-error - Hono RPC type inference issue
77
- json: { sku, quantity, fbc, fbp },
79
+ json: { sku, quantity, fbc, fbp, ttp, ttclid },
78
80
  });
79
81
  if (!res.ok) {
80
82
  throw new Error(`Failed to add item to cart: ${res.statusText}`);
@@ -172,3 +174,22 @@ export async function checkoutCart(cartId, checkoutData) {
172
174
  }
173
175
  return res.json();
174
176
  }
177
+ /**
178
+ * Fetch recommended products for a cart
179
+ *
180
+ * @param cartId - Cart UUID
181
+ * @param limit - Maximum number of recommendations (default: 6)
182
+ * @returns Array of recommended products from the same brand
183
+ */
184
+ export async function fetchCartRecommendations(cartId, limit) {
185
+ const clients = createRpcClients(API_URL);
186
+ const res = await clients.carts[':id'].recommendations.$get({
187
+ param: { id: cartId },
188
+ // @ts-ignore - Hono RPC type inference issue with query parameters
189
+ query: { limit: limit.toString() },
190
+ });
191
+ if (!res.ok) {
192
+ throw new Error(`Failed to fetch cart recommendations: ${res.statusText}`);
193
+ }
194
+ return res.json();
195
+ }
@@ -8,13 +8,27 @@ import { createAdminRpcClients } from '../../rpc-client';
8
8
  */
9
9
  export declare function useGetStats(params?: {
10
10
  brandId?: string;
11
+ period?: string;
11
12
  }, options?: Omit<UseQueryOptions<Awaited<ReturnType<Awaited<ReturnType<ReturnType<typeof createAdminRpcClients>['stats']['index']['$get']>>['json']>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
12
13
  overview: {
13
14
  totalOrders: number;
15
+ totalOrdersChange: number;
16
+ totalOrdersPrevious: number;
14
17
  pendingOrders: number;
18
+ pendingOrdersChange: number;
19
+ pendingOrdersPrevious: number;
15
20
  shippedOrders: number;
21
+ shippedOrdersChange: number;
22
+ shippedOrdersPrevious: number;
16
23
  deliveredOrders: number;
17
- totalRevenue: number;
24
+ deliveredOrdersChange: number;
25
+ deliveredOrdersPrevious: number;
26
+ realizedRevenue: number;
27
+ realizedRevenueChange: number;
28
+ realizedRevenuePrevious: number;
29
+ unrealizedRevenue: number;
30
+ unrealizedRevenueChange: number;
31
+ unrealizedRevenuePrevious: number;
18
32
  };
19
33
  recentOrders: {
20
34
  subtotal: number;
@@ -11,7 +11,7 @@ import { useApiConfig } from '../useApiConfig';
11
11
  export function useGetStats(params, options) {
12
12
  const { baseURL, getAuthToken } = useApiConfig();
13
13
  return useQueryUnwrapped({
14
- queryKey: queryKeys.admin.stats.overview(params?.brandId),
14
+ queryKey: queryKeys.admin.stats.overview(params?.brandId, params?.period),
15
15
  queryFn: async () => {
16
16
  const token = await getAuthToken();
17
17
  const clients = createAdminRpcClients(baseURL);
@@ -20,6 +20,8 @@ export function useGetStats(params, options) {
20
20
  throw new Error(`Failed to fetch statistics: ${res.statusText}`);
21
21
  return res.json();
22
22
  },
23
+ staleTime: 0,
24
+ gcTime: 0,
23
25
  ...options,
24
26
  });
25
27
  }
@@ -5,7 +5,7 @@
5
5
  * providing end-to-end type safety without code generation.
6
6
  */
7
7
  import { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
8
- import { fetchCart, updateCart, createCart, addCartItem, updateCartItem, removeCartItem, applyDiscount, removeDiscount, checkoutCart } from '../../fetchers/carts';
8
+ import { fetchCart, updateCart, createCart, addCartItem, updateCartItem, removeCartItem, applyDiscount, removeDiscount, checkoutCart, fetchCartRecommendations } from '../../fetchers/carts';
9
9
  /**
10
10
  * Hook to get cart by ID using RPC
11
11
  *
@@ -1343,7 +1343,7 @@ export declare function useRemoveDiscount(cartId: string, options?: UseMutationO
1343
1343
  * @example
1344
1344
  * ```tsx
1345
1345
  * const addItem = useAddCartItem('cart-123');
1346
- * addItem.mutate({ sku: 'PROD-001', quantity: 2, fbc: '_fbc_cookie', fbp: '_fbp_cookie' });
1346
+ * addItem.mutate({ sku: 'PROD-001', quantity: 2, fbc: '_fbc_cookie', fbp: '_fbp_cookie', ttp: '_ttp_cookie', ttclid: 'tiktok_click_id' });
1347
1347
  * ```
1348
1348
  */
1349
1349
  export declare function useAddCartItem(cartId: string, options?: UseMutationOptions<Awaited<ReturnType<typeof addCartItem>>, Error, {
@@ -1351,6 +1351,8 @@ export declare function useAddCartItem(cartId: string, options?: UseMutationOpti
1351
1351
  quantity: number;
1352
1352
  fbc?: string;
1353
1353
  fbp?: string;
1354
+ ttp?: string;
1355
+ ttclid?: string;
1354
1356
  }>): import("@tanstack/react-query").UseMutationResult<{
1355
1357
  id: string;
1356
1358
  brand: {
@@ -1608,6 +1610,8 @@ export declare function useAddCartItem(cartId: string, options?: UseMutationOpti
1608
1610
  quantity: number;
1609
1611
  fbc?: string;
1610
1612
  fbp?: string;
1613
+ ttp?: string;
1614
+ ttclid?: string;
1611
1615
  }, unknown>;
1612
1616
  /**
1613
1617
  * Hook to update cart item quantity using RPC
@@ -2431,4 +2435,205 @@ export declare function useCheckoutCart(cartId: string, options?: UseMutationOpt
2431
2435
  ifUnmodifiedSince?: string;
2432
2436
  fbc?: string;
2433
2437
  fbp?: string;
2438
+ ttp?: string;
2439
+ ttclid?: string;
2434
2440
  }, unknown>;
2441
+ /**
2442
+ * Hook to get recommended products for a cart using RPC
2443
+ *
2444
+ * @param cartId - Cart UUID
2445
+ * @param limit - Maximum number of recommendations (default: 6)
2446
+ * @param options - React Query options
2447
+ *
2448
+ * @example
2449
+ * ```tsx
2450
+ * const { data: recommendations, isLoading } = useGetCartRecommendations('cart-123', 6);
2451
+ * console.log(recommendations); // Array of products from same brand
2452
+ * ```
2453
+ */
2454
+ export declare function useGetCartRecommendations(cartId: string | null | undefined, limit: number, options?: Omit<UseQueryOptions<Awaited<ReturnType<typeof fetchCartRecommendations>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
2455
+ brand: {
2456
+ createdAt: string;
2457
+ updatedAt: string;
2458
+ deletedAt: string;
2459
+ id: string;
2460
+ name: string;
2461
+ slug: string;
2462
+ logoUrl: string | null;
2463
+ siteUrl: string;
2464
+ domain: string;
2465
+ metaPixelId: string | null;
2466
+ tiktokPixelId: string | null;
2467
+ paystackPublicKey: string | null;
2468
+ paystackSecretKey: string | null;
2469
+ };
2470
+ variants: {
2471
+ createdAt: string;
2472
+ updatedAt: string;
2473
+ price: number;
2474
+ deletedAt: string;
2475
+ id: string;
2476
+ name: string | null;
2477
+ isActive: boolean;
2478
+ thumbnailUrl: string | null;
2479
+ productId: string;
2480
+ sku: string;
2481
+ trackInventory: boolean;
2482
+ lowStockThreshold: number | null;
2483
+ }[];
2484
+ id: string;
2485
+ name: string;
2486
+ slug: string;
2487
+ createdAt: string;
2488
+ updatedAt: string;
2489
+ deletedAt: string;
2490
+ brandId: string;
2491
+ isActive: boolean;
2492
+ description: string | null;
2493
+ thumbnailUrl: string | null;
2494
+ quantityDiscounts: string | number | boolean | {
2495
+ [x: string]: string | number | boolean | /*elided*/ any | {
2496
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
2497
+ length: number;
2498
+ toString: never;
2499
+ toLocaleString: never;
2500
+ pop: never;
2501
+ push: never;
2502
+ concat: never;
2503
+ join: never;
2504
+ reverse: never;
2505
+ shift: never;
2506
+ slice: never;
2507
+ sort: never;
2508
+ splice: never;
2509
+ unshift: never;
2510
+ indexOf: never;
2511
+ lastIndexOf: never;
2512
+ every: never;
2513
+ some: never;
2514
+ forEach: never;
2515
+ map: never;
2516
+ filter: never;
2517
+ reduce: never;
2518
+ reduceRight: never;
2519
+ find: never;
2520
+ findIndex: never;
2521
+ fill: never;
2522
+ copyWithin: never;
2523
+ entries: never;
2524
+ keys: never;
2525
+ values: never;
2526
+ includes: never;
2527
+ flatMap: never;
2528
+ flat: never;
2529
+ [Symbol.iterator]: never;
2530
+ readonly [Symbol.unscopables]: {
2531
+ [x: number]: boolean;
2532
+ length?: boolean;
2533
+ toString?: boolean;
2534
+ toLocaleString?: boolean;
2535
+ pop?: boolean;
2536
+ push?: boolean;
2537
+ concat?: boolean;
2538
+ join?: boolean;
2539
+ reverse?: boolean;
2540
+ shift?: boolean;
2541
+ slice?: boolean;
2542
+ sort?: boolean;
2543
+ splice?: boolean;
2544
+ unshift?: boolean;
2545
+ indexOf?: boolean;
2546
+ lastIndexOf?: boolean;
2547
+ every?: boolean;
2548
+ some?: boolean;
2549
+ forEach?: boolean;
2550
+ map?: boolean;
2551
+ filter?: boolean;
2552
+ reduce?: boolean;
2553
+ reduceRight?: boolean;
2554
+ find?: boolean;
2555
+ findIndex?: boolean;
2556
+ fill?: boolean;
2557
+ copyWithin?: boolean;
2558
+ entries?: boolean;
2559
+ keys?: boolean;
2560
+ values?: boolean;
2561
+ includes?: boolean;
2562
+ flatMap?: boolean;
2563
+ flat?: boolean;
2564
+ };
2565
+ };
2566
+ } | {
2567
+ [x: number]: string | number | boolean | {
2568
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
2569
+ } | /*elided*/ any;
2570
+ length: number;
2571
+ toString: never;
2572
+ toLocaleString: never;
2573
+ pop: never;
2574
+ push: never;
2575
+ concat: never;
2576
+ join: never;
2577
+ reverse: never;
2578
+ shift: never;
2579
+ slice: never;
2580
+ sort: never;
2581
+ splice: never;
2582
+ unshift: never;
2583
+ indexOf: never;
2584
+ lastIndexOf: never;
2585
+ every: never;
2586
+ some: never;
2587
+ forEach: never;
2588
+ map: never;
2589
+ filter: never;
2590
+ reduce: never;
2591
+ reduceRight: never;
2592
+ find: never;
2593
+ findIndex: never;
2594
+ fill: never;
2595
+ copyWithin: never;
2596
+ entries: never;
2597
+ keys: never;
2598
+ values: never;
2599
+ includes: never;
2600
+ flatMap: never;
2601
+ flat: never;
2602
+ [Symbol.iterator]: never;
2603
+ readonly [Symbol.unscopables]: {
2604
+ [x: number]: boolean;
2605
+ length?: boolean;
2606
+ toString?: boolean;
2607
+ toLocaleString?: boolean;
2608
+ pop?: boolean;
2609
+ push?: boolean;
2610
+ concat?: boolean;
2611
+ join?: boolean;
2612
+ reverse?: boolean;
2613
+ shift?: boolean;
2614
+ slice?: boolean;
2615
+ sort?: boolean;
2616
+ splice?: boolean;
2617
+ unshift?: boolean;
2618
+ indexOf?: boolean;
2619
+ lastIndexOf?: boolean;
2620
+ every?: boolean;
2621
+ some?: boolean;
2622
+ forEach?: boolean;
2623
+ map?: boolean;
2624
+ filter?: boolean;
2625
+ reduce?: boolean;
2626
+ reduceRight?: boolean;
2627
+ find?: boolean;
2628
+ findIndex?: boolean;
2629
+ fill?: boolean;
2630
+ copyWithin?: boolean;
2631
+ entries?: boolean;
2632
+ keys?: boolean;
2633
+ values?: boolean;
2634
+ includes?: boolean;
2635
+ flatMap?: boolean;
2636
+ flat?: boolean;
2637
+ };
2638
+ };
2639
+ }[], Error>;
@@ -7,7 +7,7 @@
7
7
  import { useMutation, useQueryClient } from '@tanstack/react-query';
8
8
  import { useQueryUnwrapped } from '../use-query-unwrapped';
9
9
  import { queryKeys } from '../../utils/query-keys';
10
- import { fetchCart, updateCart, createCart, addCartItem, updateCartItem, removeCartItem, applyDiscount, removeDiscount, checkoutCart, } from '../../fetchers/carts';
10
+ import { fetchCart, updateCart, createCart, addCartItem, updateCartItem, removeCartItem, applyDiscount, removeDiscount, checkoutCart, fetchCartRecommendations, } from '../../fetchers/carts';
11
11
  /**
12
12
  * Hook to get cart by ID using RPC
13
13
  *
@@ -122,13 +122,13 @@ export function useRemoveDiscount(cartId, options) {
122
122
  * @example
123
123
  * ```tsx
124
124
  * const addItem = useAddCartItem('cart-123');
125
- * addItem.mutate({ sku: 'PROD-001', quantity: 2, fbc: '_fbc_cookie', fbp: '_fbp_cookie' });
125
+ * addItem.mutate({ sku: 'PROD-001', quantity: 2, fbc: '_fbc_cookie', fbp: '_fbp_cookie', ttp: '_ttp_cookie', ttclid: 'tiktok_click_id' });
126
126
  * ```
127
127
  */
128
128
  export function useAddCartItem(cartId, options) {
129
129
  const queryClient = useQueryClient();
130
130
  return useMutation({
131
- mutationFn: (data) => addCartItem(cartId, data.sku, data.quantity, data.fbc, data.fbp),
131
+ mutationFn: (data) => addCartItem(cartId, data.sku, data.quantity, data.fbc, data.fbp, data.ttp, data.ttclid),
132
132
  onSuccess: () => {
133
133
  queryClient.invalidateQueries({ queryKey: queryKeys.public.carts.detail(cartId) });
134
134
  },
@@ -211,3 +211,24 @@ export function useCheckoutCart(cartId, options) {
211
211
  ...options,
212
212
  });
213
213
  }
214
+ /**
215
+ * Hook to get recommended products for a cart using RPC
216
+ *
217
+ * @param cartId - Cart UUID
218
+ * @param limit - Maximum number of recommendations (default: 6)
219
+ * @param options - React Query options
220
+ *
221
+ * @example
222
+ * ```tsx
223
+ * const { data: recommendations, isLoading } = useGetCartRecommendations('cart-123', 6);
224
+ * console.log(recommendations); // Array of products from same brand
225
+ * ```
226
+ */
227
+ export function useGetCartRecommendations(cartId, limit, options) {
228
+ return useQueryUnwrapped({
229
+ queryKey: ['carts', cartId, 'recommendations', limit],
230
+ queryFn: () => fetchCartRecommendations(cartId, limit),
231
+ enabled: !!cartId,
232
+ ...options,
233
+ });
234
+ }
@@ -2707,6 +2707,234 @@ export declare function createRpcClients(baseURL: string): {
2707
2707
  };
2708
2708
  }>;
2709
2709
  };
2710
+ } & {
2711
+ ":id": {
2712
+ recommendations: import("hono/client").ClientRequest<{
2713
+ $get: {
2714
+ input: {
2715
+ param: {
2716
+ id: string;
2717
+ };
2718
+ };
2719
+ output: {
2720
+ brand: {
2721
+ createdAt: string;
2722
+ updatedAt: string;
2723
+ deletedAt: string;
2724
+ id: string;
2725
+ name: string;
2726
+ slug: string;
2727
+ logoUrl: string | null;
2728
+ siteUrl: string;
2729
+ domain: string;
2730
+ metaPixelId: string | null;
2731
+ tiktokPixelId: string | null;
2732
+ paystackPublicKey: string | null;
2733
+ paystackSecretKey: string | null;
2734
+ };
2735
+ variants: {
2736
+ createdAt: string;
2737
+ updatedAt: string;
2738
+ price: number;
2739
+ deletedAt: string;
2740
+ id: string;
2741
+ name: string | null;
2742
+ isActive: boolean;
2743
+ thumbnailUrl: string | null;
2744
+ productId: string;
2745
+ sku: string;
2746
+ trackInventory: boolean;
2747
+ lowStockThreshold: number | null;
2748
+ }[];
2749
+ id: string;
2750
+ name: string;
2751
+ slug: string;
2752
+ createdAt: string;
2753
+ updatedAt: string;
2754
+ deletedAt: string;
2755
+ brandId: string;
2756
+ isActive: boolean;
2757
+ description: string | null;
2758
+ thumbnailUrl: string | null;
2759
+ quantityDiscounts: string | number | boolean | {
2760
+ [x: string]: string | number | boolean | /*elided*/ any | {
2761
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
2762
+ length: number;
2763
+ toString: never;
2764
+ toLocaleString: never;
2765
+ pop: never;
2766
+ push: never;
2767
+ concat: never;
2768
+ join: never;
2769
+ reverse: never;
2770
+ shift: never;
2771
+ slice: never;
2772
+ sort: never;
2773
+ splice: never;
2774
+ unshift: never;
2775
+ indexOf: never;
2776
+ lastIndexOf: never;
2777
+ every: never;
2778
+ some: never;
2779
+ forEach: never;
2780
+ map: never;
2781
+ filter: never;
2782
+ reduce: never;
2783
+ reduceRight: never;
2784
+ find: never;
2785
+ findIndex: never;
2786
+ fill: never;
2787
+ copyWithin: never;
2788
+ entries: never;
2789
+ keys: never;
2790
+ values: never;
2791
+ includes: never;
2792
+ flatMap: never;
2793
+ flat: never;
2794
+ [Symbol.iterator]: never;
2795
+ readonly [Symbol.unscopables]: {
2796
+ [x: number]: boolean;
2797
+ length?: boolean;
2798
+ toString?: boolean;
2799
+ toLocaleString?: boolean;
2800
+ pop?: boolean;
2801
+ push?: boolean;
2802
+ concat?: boolean;
2803
+ join?: boolean;
2804
+ reverse?: boolean;
2805
+ shift?: boolean;
2806
+ slice?: boolean;
2807
+ sort?: boolean;
2808
+ splice?: boolean;
2809
+ unshift?: boolean;
2810
+ indexOf?: boolean;
2811
+ lastIndexOf?: boolean;
2812
+ every?: boolean;
2813
+ some?: boolean;
2814
+ forEach?: boolean;
2815
+ map?: boolean;
2816
+ filter?: boolean;
2817
+ reduce?: boolean;
2818
+ reduceRight?: boolean;
2819
+ find?: boolean;
2820
+ findIndex?: boolean;
2821
+ fill?: boolean;
2822
+ copyWithin?: boolean;
2823
+ entries?: boolean;
2824
+ keys?: boolean;
2825
+ values?: boolean;
2826
+ includes?: boolean;
2827
+ flatMap?: boolean;
2828
+ flat?: boolean;
2829
+ };
2830
+ };
2831
+ } | {
2832
+ [x: number]: string | number | boolean | {
2833
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
2834
+ } | /*elided*/ any;
2835
+ length: number;
2836
+ toString: never;
2837
+ toLocaleString: never;
2838
+ pop: never;
2839
+ push: never;
2840
+ concat: never;
2841
+ join: never;
2842
+ reverse: never;
2843
+ shift: never;
2844
+ slice: never;
2845
+ sort: never;
2846
+ splice: never;
2847
+ unshift: never;
2848
+ indexOf: never;
2849
+ lastIndexOf: never;
2850
+ every: never;
2851
+ some: never;
2852
+ forEach: never;
2853
+ map: never;
2854
+ filter: never;
2855
+ reduce: never;
2856
+ reduceRight: never;
2857
+ find: never;
2858
+ findIndex: never;
2859
+ fill: never;
2860
+ copyWithin: never;
2861
+ entries: never;
2862
+ keys: never;
2863
+ values: never;
2864
+ includes: never;
2865
+ flatMap: never;
2866
+ flat: never;
2867
+ [Symbol.iterator]: never;
2868
+ readonly [Symbol.unscopables]: {
2869
+ [x: number]: boolean;
2870
+ length?: boolean;
2871
+ toString?: boolean;
2872
+ toLocaleString?: boolean;
2873
+ pop?: boolean;
2874
+ push?: boolean;
2875
+ concat?: boolean;
2876
+ join?: boolean;
2877
+ reverse?: boolean;
2878
+ shift?: boolean;
2879
+ slice?: boolean;
2880
+ sort?: boolean;
2881
+ splice?: boolean;
2882
+ unshift?: boolean;
2883
+ indexOf?: boolean;
2884
+ lastIndexOf?: boolean;
2885
+ every?: boolean;
2886
+ some?: boolean;
2887
+ forEach?: boolean;
2888
+ map?: boolean;
2889
+ filter?: boolean;
2890
+ reduce?: boolean;
2891
+ reduceRight?: boolean;
2892
+ find?: boolean;
2893
+ findIndex?: boolean;
2894
+ fill?: boolean;
2895
+ copyWithin?: boolean;
2896
+ entries?: boolean;
2897
+ keys?: boolean;
2898
+ values?: boolean;
2899
+ includes?: boolean;
2900
+ flatMap?: boolean;
2901
+ flat?: boolean;
2902
+ };
2903
+ };
2904
+ }[];
2905
+ outputFormat: "json";
2906
+ status: 200;
2907
+ } | {
2908
+ input: {
2909
+ param: {
2910
+ id: string;
2911
+ };
2912
+ };
2913
+ output: {
2914
+ error: {
2915
+ code: string;
2916
+ message: string;
2917
+ };
2918
+ };
2919
+ outputFormat: "json";
2920
+ status: any;
2921
+ } | {
2922
+ input: {
2923
+ param: {
2924
+ id: string;
2925
+ };
2926
+ };
2927
+ output: {
2928
+ error: {
2929
+ code: string;
2930
+ message: any;
2931
+ };
2932
+ };
2933
+ outputFormat: "json";
2934
+ status: 500;
2935
+ };
2936
+ }>;
2937
+ };
2710
2938
  };
2711
2939
  orders: {
2712
2940
  ":id": {
@@ -8269,10 +8497,23 @@ export declare function createAdminRpcClients(baseURL: string): {
8269
8497
  output: {
8270
8498
  overview: {
8271
8499
  totalOrders: number;
8500
+ totalOrdersChange: number;
8501
+ totalOrdersPrevious: number;
8272
8502
  pendingOrders: number;
8503
+ pendingOrdersChange: number;
8504
+ pendingOrdersPrevious: number;
8273
8505
  shippedOrders: number;
8506
+ shippedOrdersChange: number;
8507
+ shippedOrdersPrevious: number;
8274
8508
  deliveredOrders: number;
8275
- totalRevenue: number;
8509
+ deliveredOrdersChange: number;
8510
+ deliveredOrdersPrevious: number;
8511
+ realizedRevenue: number;
8512
+ realizedRevenueChange: number;
8513
+ realizedRevenuePrevious: number;
8514
+ unrealizedRevenue: number;
8515
+ unrealizedRevenueChange: number;
8516
+ unrealizedRevenuePrevious: number;
8276
8517
  };
8277
8518
  recentOrders: {
8278
8519
  subtotal: number;
@@ -74,7 +74,7 @@ export declare const queryKeys: {
74
74
  };
75
75
  stats: {
76
76
  all: readonly ["admin", "stats"];
77
- overview: (brandId?: string) => readonly ["admin", "stats", "overview", string];
77
+ overview: (brandId?: string, period?: string) => readonly ["admin", "stats", "overview", string, string];
78
78
  };
79
79
  abandonedCarts: {
80
80
  all: readonly ["admin", "abandoned-carts"];
@@ -76,7 +76,7 @@ export const queryKeys = {
76
76
  },
77
77
  stats: {
78
78
  all: ['admin', 'stats'],
79
- overview: (brandId) => ['admin', 'stats', 'overview', brandId],
79
+ overview: (brandId, period) => ['admin', 'stats', 'overview', brandId, period],
80
80
  },
81
81
  abandonedCarts: {
82
82
  all: ['admin', 'abandoned-carts'],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instockng/api-client",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "React Query hooks for OMS API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",