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