@instockng/api-client 1.0.29 → 1.0.30

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.
@@ -5,7 +5,7 @@
5
5
  * providing end-to-end type safety without code generation.
6
6
  */
7
7
  import { UseQueryOptions } from '@tanstack/react-query';
8
- import { fetchProductsByBrand, fetchProductBySlug, fetchProductAddons } from '../../fetchers/products';
8
+ import { fetchProductsByBrand, fetchProductBySlug, fetchProductAddons, fetchProductRecommendations } from '../../fetchers/products';
9
9
  /**
10
10
  * Hook to get products by brand slug using RPC
11
11
  *
@@ -991,3 +991,486 @@ export declare function useGetProduct(slug: string, options?: Omit<UseQueryOptio
991
991
  * @param limit - Max number of add-ons
992
992
  */
993
993
  export declare function useGetProductAddOns(slug: string, limit?: number, options?: Omit<UseQueryOptions<Awaited<ReturnType<typeof fetchProductAddons>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<any, Error>;
994
+ /**
995
+ * Hook to get product recommendations (other products from same brand)
996
+ *
997
+ * @param slug - Product slug
998
+ * @param limit - Max number of recommendations (default 4)
999
+ */
1000
+ export declare function useGetProductRecommendations(slug: string, limit?: number, options?: Omit<UseQueryOptions<Awaited<ReturnType<typeof fetchProductRecommendations>>, Error>, 'queryKey' | 'queryFn'>): import("@tanstack/react-query").UseQueryResult<{
1001
+ id: string;
1002
+ name: string;
1003
+ slug: string;
1004
+ description: string;
1005
+ thumbnailUrl: string;
1006
+ quantityDiscounts: string | number | boolean | {
1007
+ [x: string]: string | number | boolean | /*elided*/ any | {
1008
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1009
+ length: number;
1010
+ toString: never;
1011
+ toLocaleString: never;
1012
+ pop: never;
1013
+ push: never;
1014
+ concat: never;
1015
+ join: never;
1016
+ reverse: never;
1017
+ shift: never;
1018
+ slice: never;
1019
+ sort: never;
1020
+ splice: never;
1021
+ unshift: never;
1022
+ indexOf: never;
1023
+ lastIndexOf: never;
1024
+ every: never;
1025
+ some: never;
1026
+ forEach: never;
1027
+ map: never;
1028
+ filter: never;
1029
+ reduce: never;
1030
+ reduceRight: never;
1031
+ find: never;
1032
+ findIndex: never;
1033
+ fill: never;
1034
+ copyWithin: never;
1035
+ entries: never;
1036
+ keys: never;
1037
+ values: never;
1038
+ includes: never;
1039
+ flatMap: never;
1040
+ flat: never;
1041
+ [Symbol.iterator]: never;
1042
+ readonly [Symbol.unscopables]: {
1043
+ [x: number]: boolean;
1044
+ length?: boolean;
1045
+ toString?: boolean;
1046
+ toLocaleString?: boolean;
1047
+ pop?: boolean;
1048
+ push?: boolean;
1049
+ concat?: boolean;
1050
+ join?: boolean;
1051
+ reverse?: boolean;
1052
+ shift?: boolean;
1053
+ slice?: boolean;
1054
+ sort?: boolean;
1055
+ splice?: boolean;
1056
+ unshift?: boolean;
1057
+ indexOf?: boolean;
1058
+ lastIndexOf?: boolean;
1059
+ every?: boolean;
1060
+ some?: boolean;
1061
+ forEach?: boolean;
1062
+ map?: boolean;
1063
+ filter?: boolean;
1064
+ reduce?: boolean;
1065
+ reduceRight?: boolean;
1066
+ find?: boolean;
1067
+ findIndex?: boolean;
1068
+ fill?: boolean;
1069
+ copyWithin?: boolean;
1070
+ entries?: boolean;
1071
+ keys?: boolean;
1072
+ values?: boolean;
1073
+ includes?: boolean;
1074
+ flatMap?: boolean;
1075
+ flat?: boolean;
1076
+ };
1077
+ };
1078
+ } | {
1079
+ [x: number]: string | number | boolean | {
1080
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1081
+ } | /*elided*/ any;
1082
+ length: number;
1083
+ toString: never;
1084
+ toLocaleString: never;
1085
+ pop: never;
1086
+ push: never;
1087
+ concat: never;
1088
+ join: never;
1089
+ reverse: never;
1090
+ shift: never;
1091
+ slice: never;
1092
+ sort: never;
1093
+ splice: never;
1094
+ unshift: never;
1095
+ indexOf: never;
1096
+ lastIndexOf: never;
1097
+ every: never;
1098
+ some: never;
1099
+ forEach: never;
1100
+ map: never;
1101
+ filter: never;
1102
+ reduce: never;
1103
+ reduceRight: never;
1104
+ find: never;
1105
+ findIndex: never;
1106
+ fill: never;
1107
+ copyWithin: never;
1108
+ entries: never;
1109
+ keys: never;
1110
+ values: never;
1111
+ includes: never;
1112
+ flatMap: never;
1113
+ flat: never;
1114
+ [Symbol.iterator]: never;
1115
+ readonly [Symbol.unscopables]: {
1116
+ [x: number]: boolean;
1117
+ length?: boolean;
1118
+ toString?: boolean;
1119
+ toLocaleString?: boolean;
1120
+ pop?: boolean;
1121
+ push?: boolean;
1122
+ concat?: boolean;
1123
+ join?: boolean;
1124
+ reverse?: boolean;
1125
+ shift?: boolean;
1126
+ slice?: boolean;
1127
+ sort?: boolean;
1128
+ splice?: boolean;
1129
+ unshift?: boolean;
1130
+ indexOf?: boolean;
1131
+ lastIndexOf?: boolean;
1132
+ every?: boolean;
1133
+ some?: boolean;
1134
+ forEach?: boolean;
1135
+ map?: boolean;
1136
+ filter?: boolean;
1137
+ reduce?: boolean;
1138
+ reduceRight?: boolean;
1139
+ find?: boolean;
1140
+ findIndex?: boolean;
1141
+ fill?: boolean;
1142
+ copyWithin?: boolean;
1143
+ entries?: boolean;
1144
+ keys?: boolean;
1145
+ values?: boolean;
1146
+ includes?: boolean;
1147
+ flatMap?: boolean;
1148
+ flat?: boolean;
1149
+ };
1150
+ };
1151
+ brand: {
1152
+ id: string;
1153
+ name: string;
1154
+ slug: string;
1155
+ logoUrl: string;
1156
+ siteUrl: string;
1157
+ domain: string;
1158
+ metaPixelId: string;
1159
+ tiktokPixelId: string;
1160
+ paystackPublicKey: string;
1161
+ createdAt: string;
1162
+ updatedAt: string;
1163
+ deletedAt: string;
1164
+ };
1165
+ variants: {
1166
+ createdAt: string;
1167
+ updatedAt: string;
1168
+ price: number;
1169
+ compareAtPrice: number;
1170
+ deletedAt: string;
1171
+ id: string;
1172
+ name: string | null;
1173
+ isActive: boolean;
1174
+ thumbnailUrl: string | null;
1175
+ productId: string;
1176
+ sku: string;
1177
+ trackInventory: boolean;
1178
+ lowStockThreshold: number | null;
1179
+ }[];
1180
+ media: string | number | true | {
1181
+ [x: string]: string | number | boolean | /*elided*/ any | {
1182
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1183
+ length: number;
1184
+ toString: never;
1185
+ toLocaleString: never;
1186
+ pop: never;
1187
+ push: never;
1188
+ concat: never;
1189
+ join: never;
1190
+ reverse: never;
1191
+ shift: never;
1192
+ slice: never;
1193
+ sort: never;
1194
+ splice: never;
1195
+ unshift: never;
1196
+ indexOf: never;
1197
+ lastIndexOf: never;
1198
+ every: never;
1199
+ some: never;
1200
+ forEach: never;
1201
+ map: never;
1202
+ filter: never;
1203
+ reduce: never;
1204
+ reduceRight: never;
1205
+ find: never;
1206
+ findIndex: never;
1207
+ fill: never;
1208
+ copyWithin: never;
1209
+ entries: never;
1210
+ keys: never;
1211
+ values: never;
1212
+ includes: never;
1213
+ flatMap: never;
1214
+ flat: never;
1215
+ [Symbol.iterator]: never;
1216
+ readonly [Symbol.unscopables]: {
1217
+ [x: number]: boolean;
1218
+ length?: boolean;
1219
+ toString?: boolean;
1220
+ toLocaleString?: boolean;
1221
+ pop?: boolean;
1222
+ push?: boolean;
1223
+ concat?: boolean;
1224
+ join?: boolean;
1225
+ reverse?: boolean;
1226
+ shift?: boolean;
1227
+ slice?: boolean;
1228
+ sort?: boolean;
1229
+ splice?: boolean;
1230
+ unshift?: boolean;
1231
+ indexOf?: boolean;
1232
+ lastIndexOf?: boolean;
1233
+ every?: boolean;
1234
+ some?: boolean;
1235
+ forEach?: boolean;
1236
+ map?: boolean;
1237
+ filter?: boolean;
1238
+ reduce?: boolean;
1239
+ reduceRight?: boolean;
1240
+ find?: boolean;
1241
+ findIndex?: boolean;
1242
+ fill?: boolean;
1243
+ copyWithin?: boolean;
1244
+ entries?: boolean;
1245
+ keys?: boolean;
1246
+ values?: boolean;
1247
+ includes?: boolean;
1248
+ flatMap?: boolean;
1249
+ flat?: boolean;
1250
+ };
1251
+ };
1252
+ } | {
1253
+ [x: number]: string | number | boolean | {
1254
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1255
+ } | /*elided*/ any;
1256
+ length: number;
1257
+ toString: never;
1258
+ toLocaleString: never;
1259
+ pop: never;
1260
+ push: never;
1261
+ concat: never;
1262
+ join: never;
1263
+ reverse: never;
1264
+ shift: never;
1265
+ slice: never;
1266
+ sort: never;
1267
+ splice: never;
1268
+ unshift: never;
1269
+ indexOf: never;
1270
+ lastIndexOf: never;
1271
+ every: never;
1272
+ some: never;
1273
+ forEach: never;
1274
+ map: never;
1275
+ filter: never;
1276
+ reduce: never;
1277
+ reduceRight: never;
1278
+ find: never;
1279
+ findIndex: never;
1280
+ fill: never;
1281
+ copyWithin: never;
1282
+ entries: never;
1283
+ keys: never;
1284
+ values: never;
1285
+ includes: never;
1286
+ flatMap: never;
1287
+ flat: never;
1288
+ [Symbol.iterator]: never;
1289
+ readonly [Symbol.unscopables]: {
1290
+ [x: number]: boolean;
1291
+ length?: boolean;
1292
+ toString?: boolean;
1293
+ toLocaleString?: boolean;
1294
+ pop?: boolean;
1295
+ push?: boolean;
1296
+ concat?: boolean;
1297
+ join?: boolean;
1298
+ reverse?: boolean;
1299
+ shift?: boolean;
1300
+ slice?: boolean;
1301
+ sort?: boolean;
1302
+ splice?: boolean;
1303
+ unshift?: boolean;
1304
+ indexOf?: boolean;
1305
+ lastIndexOf?: boolean;
1306
+ every?: boolean;
1307
+ some?: boolean;
1308
+ forEach?: boolean;
1309
+ map?: boolean;
1310
+ filter?: boolean;
1311
+ reduce?: boolean;
1312
+ reduceRight?: boolean;
1313
+ find?: boolean;
1314
+ findIndex?: boolean;
1315
+ fill?: boolean;
1316
+ copyWithin?: boolean;
1317
+ entries?: boolean;
1318
+ keys?: boolean;
1319
+ values?: boolean;
1320
+ includes?: boolean;
1321
+ flatMap?: boolean;
1322
+ flat?: boolean;
1323
+ };
1324
+ };
1325
+ features: string;
1326
+ faqs: string | number | true | {
1327
+ [x: string]: string | number | boolean | /*elided*/ any | {
1328
+ [x: number]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1329
+ length: number;
1330
+ toString: never;
1331
+ toLocaleString: never;
1332
+ pop: never;
1333
+ push: never;
1334
+ concat: never;
1335
+ join: never;
1336
+ reverse: never;
1337
+ shift: never;
1338
+ slice: never;
1339
+ sort: never;
1340
+ splice: never;
1341
+ unshift: never;
1342
+ indexOf: never;
1343
+ lastIndexOf: never;
1344
+ every: never;
1345
+ some: never;
1346
+ forEach: never;
1347
+ map: never;
1348
+ filter: never;
1349
+ reduce: never;
1350
+ reduceRight: never;
1351
+ find: never;
1352
+ findIndex: never;
1353
+ fill: never;
1354
+ copyWithin: never;
1355
+ entries: never;
1356
+ keys: never;
1357
+ values: never;
1358
+ includes: never;
1359
+ flatMap: never;
1360
+ flat: never;
1361
+ [Symbol.iterator]: never;
1362
+ readonly [Symbol.unscopables]: {
1363
+ [x: number]: boolean;
1364
+ length?: boolean;
1365
+ toString?: boolean;
1366
+ toLocaleString?: boolean;
1367
+ pop?: boolean;
1368
+ push?: boolean;
1369
+ concat?: boolean;
1370
+ join?: boolean;
1371
+ reverse?: boolean;
1372
+ shift?: boolean;
1373
+ slice?: boolean;
1374
+ sort?: boolean;
1375
+ splice?: boolean;
1376
+ unshift?: boolean;
1377
+ indexOf?: boolean;
1378
+ lastIndexOf?: boolean;
1379
+ every?: boolean;
1380
+ some?: boolean;
1381
+ forEach?: boolean;
1382
+ map?: boolean;
1383
+ filter?: boolean;
1384
+ reduce?: boolean;
1385
+ reduceRight?: boolean;
1386
+ find?: boolean;
1387
+ findIndex?: boolean;
1388
+ fill?: boolean;
1389
+ copyWithin?: boolean;
1390
+ entries?: boolean;
1391
+ keys?: boolean;
1392
+ values?: boolean;
1393
+ includes?: boolean;
1394
+ flatMap?: boolean;
1395
+ flat?: boolean;
1396
+ };
1397
+ };
1398
+ } | {
1399
+ [x: number]: string | number | boolean | {
1400
+ [x: string]: string | number | boolean | /*elided*/ any | /*elided*/ any;
1401
+ } | /*elided*/ any;
1402
+ length: number;
1403
+ toString: never;
1404
+ toLocaleString: never;
1405
+ pop: never;
1406
+ push: never;
1407
+ concat: never;
1408
+ join: never;
1409
+ reverse: never;
1410
+ shift: never;
1411
+ slice: never;
1412
+ sort: never;
1413
+ splice: never;
1414
+ unshift: never;
1415
+ indexOf: never;
1416
+ lastIndexOf: never;
1417
+ every: never;
1418
+ some: never;
1419
+ forEach: never;
1420
+ map: never;
1421
+ filter: never;
1422
+ reduce: never;
1423
+ reduceRight: never;
1424
+ find: never;
1425
+ findIndex: never;
1426
+ fill: never;
1427
+ copyWithin: never;
1428
+ entries: never;
1429
+ keys: never;
1430
+ values: never;
1431
+ includes: never;
1432
+ flatMap: never;
1433
+ flat: never;
1434
+ [Symbol.iterator]: never;
1435
+ readonly [Symbol.unscopables]: {
1436
+ [x: number]: boolean;
1437
+ length?: boolean;
1438
+ toString?: boolean;
1439
+ toLocaleString?: boolean;
1440
+ pop?: boolean;
1441
+ push?: boolean;
1442
+ concat?: boolean;
1443
+ join?: boolean;
1444
+ reverse?: boolean;
1445
+ shift?: boolean;
1446
+ slice?: boolean;
1447
+ sort?: boolean;
1448
+ splice?: boolean;
1449
+ unshift?: boolean;
1450
+ indexOf?: boolean;
1451
+ lastIndexOf?: boolean;
1452
+ every?: boolean;
1453
+ some?: boolean;
1454
+ forEach?: boolean;
1455
+ map?: boolean;
1456
+ filter?: boolean;
1457
+ reduce?: boolean;
1458
+ reduceRight?: boolean;
1459
+ find?: boolean;
1460
+ findIndex?: boolean;
1461
+ fill?: boolean;
1462
+ copyWithin?: boolean;
1463
+ entries?: boolean;
1464
+ keys?: boolean;
1465
+ values?: boolean;
1466
+ includes?: boolean;
1467
+ flatMap?: boolean;
1468
+ flat?: boolean;
1469
+ };
1470
+ };
1471
+ createdAt: string;
1472
+ updatedAt: string;
1473
+ deletedAt: string;
1474
+ brandId: string;
1475
+ isActive: boolean;
1476
+ }[], Error>;
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { useQueryUnwrapped } from '../use-query-unwrapped';
8
8
  import { queryKeys } from '../../utils/query-keys';
9
- import { fetchProductsByBrand, fetchProductBySlug, fetchProductAddons } from '../../fetchers/products';
9
+ import { fetchProductsByBrand, fetchProductBySlug, fetchProductAddons, fetchProductRecommendations } from '../../fetchers/products';
10
10
  /**
11
11
  * Hook to get products by brand slug using RPC
12
12
  *
@@ -58,3 +58,16 @@ export function useGetProductAddOns(slug, limit, options) {
58
58
  ...options,
59
59
  });
60
60
  }
61
+ /**
62
+ * Hook to get product recommendations (other products from same brand)
63
+ *
64
+ * @param slug - Product slug
65
+ * @param limit - Max number of recommendations (default 4)
66
+ */
67
+ export function useGetProductRecommendations(slug, limit, options) {
68
+ return useQueryUnwrapped({
69
+ queryKey: queryKeys.public.products.recommendations(slug, limit),
70
+ queryFn: () => fetchProductRecommendations(slug, limit),
71
+ ...options,
72
+ });
73
+ }