@esolve/ng-esolve-connect 0.143.0 → 0.145.0

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.
package/index.d.ts CHANGED
@@ -593,150 +593,71 @@ interface EsolveAssetOptions {
593
593
  area_of_application?: string;
594
594
  }
595
595
 
596
- declare class EsolveCategoryTreeItem implements EsolveSeoDetails {
597
- type: 'category' | 'subcategory';
598
- esolve_id: string | number;
599
- parent_id: string;
600
- description: string;
601
- sef_description: string;
602
- short_description: string;
603
- sort_priority: number;
604
- active: boolean;
605
- display_only: boolean;
606
- private image_name;
607
- id: string;
608
- seo_details: EsolveSeoInfo;
609
- total_stock?: number;
610
- children?: EsolveCategoryTreeItem[];
611
- private image_path;
612
- get small_image_src(): string;
613
- get thumbnail_image_src(): string;
614
- get tiny_image_src(): string;
615
- constructor(type: 'category' | 'subcategory', esolve_id: string | number, parent_id: string, description: string, sef_description: string, short_description: string, sort_priority: number, active: boolean, display_only: boolean, image_name: string, seo_title: string, seo_keywords: string, seo_description: string, children?: EsolveCategoryTreeItem[]);
616
- getImagePath(image_size: 'small' | 'thumb' | 'tiny'): string;
617
- }
596
+ type EsolveStockSortField = 'sorting_code' | 'price' | 'name' | 'description' | 'code' | 'created';
618
597
 
619
- interface EsolveSubcategoryRecord {
620
- type: 'subcategory';
598
+ type EsolveErpSalesStockSortField = EsolveStockSortField | 'total' | 'qty' | 'date';
599
+
600
+ interface EsolveAdditionalStockImageRecord {
621
601
  id: number;
622
- menu_id: string;
623
- external_system_code: string;
624
- location_id: number;
625
- description: string;
626
- sef_description: string;
627
- seo_description: string;
628
- sort_priority: number;
629
- active: boolean;
630
- display_only: boolean;
631
- seo_page_title: string;
632
- seo_keywords: string;
633
- short_description: string;
634
- image: string;
635
- total_stock?: number;
602
+ type: string;
603
+ url: string;
604
+ name?: string | null;
605
+ etag?: string | null;
606
+ key?: string | null;
636
607
  }
637
608
 
638
- interface EsolveCategoryRecord {
639
- type: 'category';
640
- menu_id: string;
641
- owner_menu_id: string;
642
- description: string;
643
- sef_description: string;
644
- seo_description: string;
645
- sort_priority: number;
646
- active: boolean;
647
- display_only: boolean;
648
- seo_page_title: string;
649
- seo_keywords: string;
650
- short_description: string;
651
- image: string;
652
- total_stock?: number;
653
- children: (EsolveCategoryRecord | EsolveSubcategoryRecord)[];
609
+ interface EsolveStockBarcodeOptions {
610
+ barcode: string;
611
+ barcode_type?: string;
654
612
  }
655
613
 
656
- interface EsolveCategoryTreeItemRecord {
657
- type: 'category' | 'subcategory';
658
- id: string | number;
659
- parent_id: string;
660
- description: string;
661
- sef_description: string;
662
- short_description: string;
663
- sort_priority: number;
664
- active: boolean;
665
- display_only: boolean;
666
- seo_page_title: string;
667
- seo_keywords: string;
668
- seo_description: string;
669
- image: string;
670
- total_stock?: number;
671
- children?: EsolveCategoryTreeItemRecord[];
614
+ type EsolveBarcodeType = 'ean13' | 'qr' | 'code39' | 'code128';
615
+
616
+ interface EsolveStockBarcodeRecord {
617
+ id: number;
618
+ code: string;
619
+ barcode_data: string;
620
+ barcode_type: EsolveBarcodeType;
672
621
  }
673
622
 
674
- interface EsolveCategoryTreeItemOptions {
675
- /**
676
- * Generated ID. Does not require type to be set.
677
- */
678
- id?: string;
679
- /**
680
- * Type category tree item. Required for if esolve_id or sef_description is set
681
- */
682
- type?: 'category' | 'subcategory';
683
- /**
684
- * Search engine friendly description. Requires type to be set.
685
- */
686
- sef_description?: string;
687
- /**
688
- * ID from eSolve. Requires type to be set.
689
- */
690
- esolve_id?: number | string;
623
+ interface EsolveColourOptions {
624
+ colour_chart_id?: number | number[];
691
625
  }
692
626
 
693
- interface EsolveCategoryIdentifier {
694
- type: 'category' | 'subcategory';
695
- esolve_id: number | string;
627
+ interface EsolveColourRecord {
628
+ id: number;
629
+ colour: string;
630
+ description: string;
631
+ image_name: string;
632
+ image_last_modified: string;
696
633
  }
697
634
 
698
- declare class EsolveCategoryTreeService {
635
+ declare class EsolveColour {
636
+ id: number;
637
+ colour: string;
638
+ description: string;
639
+ private image_name;
640
+ private image_last_modified;
641
+ get image_src(): string;
642
+ constructor(record: Partial<EsolveColourRecord>);
643
+ getImagePath(): string;
644
+ }
645
+
646
+ declare class EsolveColoursService {
699
647
  private readonly config;
700
648
  private readonly http;
701
649
  /**
702
- * Retrieves the category tree from eSolve instance and coverts it to the correct format.
703
- */
704
- getCategoryTree(identifier?: string): Observable<EsolveCategoryTreeItem[]>;
705
- /**
706
- * Retrieve the special tree structure for a specific special from the eSolve
707
- * instance and converts it into the correct format
708
- *
709
- * @param special_id Id of to special to get tree for
710
- *
711
- * @returns Observable containing special tree data
712
- */
713
- getSpecialTree(special_id: number): Observable<EsolveCategoryTreeItem[]>;
714
- /**
715
- * Retrieve the manufacturer tree structure for a specific manufacturer from the eSolve
716
- * instance and converts it into the correct format
717
- *
718
- * @param manufacturer_id Id of the manufacturer to get the tree for
719
- *
720
- * @returns Observable containing manufacturer tree data
721
- */
722
- getManufacturerTree(manufacturer_id: number): Observable<EsolveCategoryTreeItem[]>;
723
- /**
724
- * Retrieve the details of a category tree item from the eSolve instance and
725
- * converts it to the correct format.
726
- *
727
- * @param options Filter options
728
- */
729
- getCategoryTreeItem(options: EsolveCategoryTreeItemOptions): Observable<EsolveCategoryTreeItem>;
730
- /**
731
- * Processes the eSolve tree records and converts them into the correct format.
732
- *
733
- * @param tree_records Records to process
734
- */
735
- private processTree;
736
- private processTreeItem;
737
- private processID;
738
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveCategoryTreeService, never>;
739
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveCategoryTreeService>;
650
+ * Retrieves colour chart details for the provided filter options
651
+ *
652
+ * @param options Filter options
653
+ *
654
+ * @returns An observable of colour details
655
+ */
656
+ getColours(options?: EsolveColourOptions): Observable<EsolveColour[]>;
657
+ private parseOptions;
658
+ private processColours;
659
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveColoursService, never>;
660
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveColoursService>;
740
661
  }
741
662
 
742
663
  interface EsolveManufacturerOptions {
@@ -794,6 +715,42 @@ declare class EsolveManufacturersService {
794
715
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveManufacturersService>;
795
716
  }
796
717
 
718
+ type EsolveMaterialPhraseMatchMode = 'contains' | 'not_equals' | 'equals';
719
+
720
+ interface EsolveMaterialOptions {
721
+ type_of_materials_id?: number | number[];
722
+ phrase?: string;
723
+ phrase_match_mode?: EsolveMaterialPhraseMatchMode;
724
+ }
725
+
726
+ interface EsolveMaterialRecord {
727
+ id: number;
728
+ material: string;
729
+ }
730
+
731
+ declare class EsolveMaterial {
732
+ id: number;
733
+ material: string;
734
+ constructor(record?: Partial<EsolveMaterialRecord>);
735
+ }
736
+
737
+ declare class EsolveMaterialsService {
738
+ private readonly config;
739
+ private readonly http;
740
+ /**
741
+ * Retrieves type of materials details for the provided filter options
742
+ *
743
+ * @param options Filter options
744
+ *
745
+ * @returns An observable of material details
746
+ */
747
+ getMaterials(options?: EsolveMaterialOptions): Observable<EsolveMaterial[]>;
748
+ private parseOptions;
749
+ private processMaterials;
750
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveMaterialsService, never>;
751
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveMaterialsService>;
752
+ }
753
+
797
754
  interface EsolveRangeRecord {
798
755
  id: number;
799
756
  range: string;
@@ -927,478 +884,26 @@ declare class EsolveTopicService {
927
884
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveTopicService>;
928
885
  }
929
886
 
930
- interface EsolveAssetRecord {
887
+ interface EsolveStockBadgeRecord {
931
888
  id: number;
932
- src: string;
933
- name: string;
934
- type: EsolveAssetType;
935
- description: string;
936
- document_number?: string;
937
- document_type?: string;
938
- area_of_application?: string;
939
- asset_category?: string;
940
- asset_sub_category?: string;
941
- sort_priority?: number;
942
- created?: string;
943
- image_name?: string;
944
- category?: EsolveCategoryTreeItemRecord;
945
- subcategory?: EsolveCategoryTreeItemRecord;
946
- manufacturer?: EsolveManufacturerRecord;
947
- range?: EsolveRangeRecord;
948
- topics?: EsolveTopicRecord[];
949
- tags?: EsolveTagRecord[];
950
- url?: string;
889
+ text: string;
890
+ identifier: string;
891
+ font_colour: string;
892
+ badge_colour: string;
893
+ sort_priority: number;
951
894
  }
952
895
 
953
- interface EsolveMediaAssetOptions extends EsolveAssetOptions {
954
- media_id?: number;
955
- media_identifier?: string;
896
+ interface EsolveStockCartParameter {
897
+ name: string;
898
+ type: EsolveStockCartParameterInput;
899
+ label: string;
900
+ is_required: boolean;
901
+ options?: string[];
956
902
  }
957
903
 
958
- interface EsolveStockAssetOptions extends EsolveAssetOptions {
959
- code?: string;
960
- sef_name?: string;
961
- }
962
-
963
- declare class EsolveLinkedAsset {
964
- id: number;
965
- name: string;
966
- type: EsolveAssetType;
967
- description: string;
968
- src: string;
969
- private image_name;
970
- /**
971
- * Shortcut to `getImagePath()`
972
- */
973
- get image_src(): string;
974
- constructor(record: EsolveLinkedAssetRecord);
975
- /**
976
- * Retrieve image path
977
- *
978
- * @returns Image path on CDN, else empty string if no image exists
979
- */
980
- getImagePath(): string;
981
- }
982
-
983
- declare class EsolveAsset {
984
- id: number;
985
- src: string;
986
- name: string;
987
- type?: EsolveAssetType;
988
- description: string;
989
- document_number: string;
990
- document_type: string;
991
- area_of_application: string;
992
- asset_category: string;
993
- asset_sub_category: string;
994
- sort_priority: number;
995
- created?: string;
996
- category?: EsolveCategoryTreeItem;
997
- subcategory?: EsolveCategoryTreeItem;
998
- manufacturer?: EsolveManufacturer;
999
- range?: EsolveRange;
1000
- topics: EsolveTopic[];
1001
- tags: EsolveTag[];
1002
- url: string;
1003
- private image_name;
1004
- /**
1005
- * Shortcut to `getImagePath()`
1006
- */
1007
- get image_src(): string;
1008
- constructor(record: EsolveAssetRecord);
1009
- /**
1010
- * Retrieve image path
1011
- *
1012
- * @returns Image path on CDN, else empty string if no image exists
1013
- */
1014
- getImagePath(): string;
1015
- }
1016
-
1017
- declare class EsolveAssetsService {
1018
- private readonly config;
1019
- private readonly http;
1020
- getAsset(id: number): Observable<EsolveAsset>;
1021
- getAssets(options?: EsolveAssetOptions): Observable<EsolveAssetList>;
1022
- getMediaAssets(options: EsolveMediaAssetOptions): Observable<EsolveAssetList>;
1023
- getStockAssets(options: EsolveStockAssetOptions): Observable<EsolveAssetList>;
1024
- private processAsset;
1025
- private getAssetRecords;
1026
- private parseOptions;
1027
- private processAssetLists;
1028
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveAssetsService, never>;
1029
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveAssetsService>;
1030
- }
1031
-
1032
- interface EsolveSessionData {
1033
- addresses_id: number;
1034
- location_id: number;
1035
- shipping_id: number;
1036
- clients_id: number;
1037
- }
1038
-
1039
- interface EsolveSession {
1040
- token: string;
1041
- user_id: number;
1042
- access_level: number;
1043
- location_id: number;
1044
- addresses_id: number;
1045
- shipping_id: number;
1046
- clients_id: number;
1047
- }
1048
-
1049
- interface EsolveSessionUpdateOptions {
1050
- user_id?: number;
1051
- location_id?: number;
1052
- addresses_id?: number;
1053
- shipping_id?: number;
1054
- clients_id?: number;
1055
- token?: string;
1056
- expiry_date_unix?: number;
1057
- grace_unix?: number;
1058
- }
1059
-
1060
- declare class EsolveSessionService {
1061
- private readonly is_browser;
1062
- private readonly config;
1063
- private readonly cookieService;
1064
- private readonly storage_key;
1065
- private readonly appRef;
1066
- protected readonly token: i0.WritableSignal<string>;
1067
- protected readonly user_id: i0.WritableSignal<number>;
1068
- protected readonly access_level: i0.WritableSignal<number>;
1069
- protected readonly location_id: i0.WritableSignal<number>;
1070
- protected readonly addresses_id: i0.WritableSignal<number>;
1071
- protected readonly shipping_id: i0.WritableSignal<number>;
1072
- protected readonly clients_id: i0.WritableSignal<number>;
1073
- protected readonly state_hash: i0.Signal<string>;
1074
- protected readonly session: i0.Signal<EsolveSession>;
1075
- private token$;
1076
- private user_id$;
1077
- private access_level$;
1078
- private location_id$;
1079
- private addresses_id$;
1080
- private shipping_id$;
1081
- private clients_id$;
1082
- private session$;
1083
- private timer_start;
1084
- private timer_stop;
1085
- private expire;
1086
- private session_end;
1087
- private app_stable_init$;
1088
- constructor();
1089
- isValid(): boolean;
1090
- getSession(): Observable<EsolveSession>;
1091
- getSessionValue(): EsolveSession;
1092
- onSessionEnd(): Observable<void>;
1093
- onExpire(): Observable<void>;
1094
- expireSession(): void;
1095
- getToken(): string;
1096
- onTokenUpdate(): Observable<string>;
1097
- updateToken(token: string): void;
1098
- getUserId(): number;
1099
- onUserIdUpdate(): Observable<number>;
1100
- updateUserId(user_id: number): void;
1101
- getAccessLevel(): number;
1102
- onAccessLevelUpdate(): Observable<number>;
1103
- updateAccessLevel(access_level: number): void;
1104
- getLocationId(): number;
1105
- onLocationIdUpdate(): Observable<number>;
1106
- updateLocationId(location_id: number): void;
1107
- getAddressesId(): number;
1108
- onAddressesIdUpdate(): Observable<number>;
1109
- updateAddressesId(addresses_id: number): void;
1110
- getShippingId(): number;
1111
- onShippingIdUpdate(): Observable<number>;
1112
- updateShippingId(shipping_id: number): void;
1113
- getClientsId(): number;
1114
- onClientsIdUpdate(): Observable<number>;
1115
- updateClientsId(clients_id: number): void;
1116
- getStateHash(): string;
1117
- stopTimer(): void;
1118
- startTimer(time: number | Date): Promise<void>;
1119
- getCachedSession(): string | null;
1120
- reset(): void;
1121
- handleSession(session: EsolveSession, expiry_date_unix: number, grace_unix: number): void;
1122
- handleUpdateSession(options: EsolveSessionUpdateOptions): void;
1123
- private setStorageKey;
1124
- private getCache;
1125
- private setCache;
1126
- private removeCache;
1127
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveSessionService, never>;
1128
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveSessionService>;
1129
- }
1130
-
1131
- declare class EsolveSessionMetadataService {
1132
- private readonly config;
1133
- private readonly http;
1134
- private readonly errorHandler;
1135
- private readonly responseHandler;
1136
- set(type: string, metadata: any): Observable<EsolveResponseResult>;
1137
- get<T>(type: string): Observable<T>;
1138
- delete(type: string): Observable<EsolveResult>;
1139
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveSessionMetadataService, never>;
1140
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveSessionMetadataService>;
1141
- }
1142
-
1143
- declare enum EsolveEventType {
1144
- FATAL_SESSION_ERROR = "FATAL_SESSION_ERROR",
1145
- SESSION_VALIDATION_START = "SESSION_VALIDATION_START",
1146
- SESSION_VALIDATION_END = "SESSION_VALIDATION_END",
1147
- CART_ERROR = "CART_ERROR"
1148
- }
1149
-
1150
- interface EsolveEventRecord {
1151
- type: EsolveEventType;
1152
- message?: string;
1153
- additional_data?: any;
1154
- }
1155
-
1156
- interface EsolveNotificationButtonActionRecord {
1157
- text: string;
1158
- module: string;
1159
- target: EsolveUrlTarget;
1160
- url: string;
1161
- }
1162
-
1163
- interface EsolveNotificationDateRecord {
1164
- date: string;
1165
- timestamp: number;
1166
- }
1167
-
1168
- interface EsolveNotificationDatesRecord {
1169
- from: EsolveNotificationDateRecord;
1170
- to: EsolveNotificationDateRecord;
1171
- }
1172
-
1173
- interface EsolveSystemNotificationOptions {
1174
- exclude_ids?: number[];
1175
- }
1176
-
1177
- type EsolveNotificationPosition = 'top' | 'center' | 'bottom' | 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
1178
-
1179
- type EsolveNotificationSize = 'small' | 'normal' | 'large';
1180
-
1181
- type EsolveNotificationType = 'modal' | 'floating_block' | 'toast';
1182
-
1183
- interface EsolveSystemNotificationTypeRecord {
1184
- id: number;
1185
- identifier: string;
1186
- title: string;
1187
- type: EsolveNotificationType;
1188
- position: EsolveNotificationPosition;
1189
- size: EsolveNotificationSize;
1190
- system_disable_order: boolean;
1191
- }
1192
-
1193
- interface EsolveSystemNotificationRecord {
1194
- id: number;
1195
- identifier: string;
1196
- title: string;
1197
- message: string;
1198
- dates?: EsolveNotificationDatesRecord | null;
1199
- timeout: number;
1200
- display_every: number;
1201
- button_actions: EsolveNotificationButtonActionRecord[];
1202
- type: EsolveSystemNotificationTypeRecord;
1203
- }
1204
-
1205
- declare class EsolveEvent {
1206
- private _type;
1207
- private _message;
1208
- private _additional_data?;
1209
- get type(): EsolveEventType;
1210
- get message(): string;
1211
- get additional_data(): any;
1212
- constructor(record: EsolveEventRecord);
1213
- }
1214
-
1215
- declare class EsolveNotificationButtonAction {
1216
- text: string;
1217
- url: string;
1218
- module: string;
1219
- target: EsolveUrlTarget;
1220
- constructor(record?: EsolveNotificationButtonActionRecord);
1221
- }
1222
-
1223
- declare class EsolveNotificationDates {
1224
- from: Date;
1225
- to: Date;
1226
- constructor(record: EsolveNotificationDatesRecord);
1227
- }
1228
-
1229
- declare class EsolveSystemNotificationType {
1230
- id: number;
1231
- identifier: string;
1232
- title: string;
1233
- system_disable_order: boolean;
1234
- position: EsolveNotificationPosition;
1235
- size: EsolveNotificationSize;
1236
- type: EsolveNotificationType;
1237
- constructor(record: EsolveSystemNotificationTypeRecord);
1238
- }
1239
-
1240
- declare class EsolveSystemNotification {
1241
- id: number;
1242
- identifier: string;
1243
- title: string;
1244
- message: string;
1245
- timeout: number;
1246
- display_every: number;
1247
- button_actions: EsolveNotificationButtonAction[];
1248
- type: EsolveSystemNotificationType;
1249
- dates?: EsolveNotificationDates;
1250
- constructor(record: EsolveSystemNotificationRecord);
1251
- }
1252
-
1253
- declare class EsolveEventTargetService {
1254
- private readonly listeners;
1255
- addEventListener(event_name: EsolveEventType, callback: (event: EsolveEvent) => void): void;
1256
- removeEventListener(event_name: EsolveEventType, callback: (event: EsolveEvent) => void): void;
1257
- dispatchEvent(event: EsolveEvent | EsolveEventType): void;
1258
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveEventTargetService, never>;
1259
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveEventTargetService>;
1260
- }
1261
-
1262
- declare class EsolveNotificationsService {
1263
- private readonly config;
1264
- private readonly http;
1265
- getSystemNotifications(options?: EsolveSystemNotificationOptions): Observable<EsolveSystemNotification[]>;
1266
- private processNotifications;
1267
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveNotificationsService, never>;
1268
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveNotificationsService>;
1269
- }
1270
-
1271
- interface EsolveAuthGetData {
1272
- key: string;
1273
- }
1274
-
1275
- interface EsolveAuthCheckData extends Partial<EsolveAuthGetData> {
1276
- key_okay: boolean;
1277
- }
1278
-
1279
- type EsolveStockSortField = 'sorting_code' | 'price' | 'name' | 'description' | 'code' | 'created';
1280
-
1281
- type EsolveErpSalesStockSortField = EsolveStockSortField | 'total' | 'qty' | 'date';
1282
-
1283
- interface EsolveAdditionalStockImageRecord {
1284
- id: number;
1285
- type: string;
1286
- url: string;
1287
- name?: string | null;
1288
- etag?: string | null;
1289
- key?: string | null;
1290
- }
1291
-
1292
- interface EsolveStockBarcodeOptions {
1293
- barcode: string;
1294
- barcode_type?: string;
1295
- }
1296
-
1297
- type EsolveBarcodeType = 'ean13' | 'qr' | 'code39' | 'code128';
1298
-
1299
- interface EsolveStockBarcodeRecord {
1300
- id: number;
1301
- code: string;
1302
- barcode_data: string;
1303
- barcode_type: EsolveBarcodeType;
1304
- }
1305
-
1306
- interface EsolveColourOptions {
1307
- colour_chart_id?: number | number[];
1308
- }
1309
-
1310
- interface EsolveColourRecord {
1311
- id: number;
1312
- colour: string;
1313
- description: string;
1314
- image_name: string;
1315
- image_last_modified: string;
1316
- }
1317
-
1318
- declare class EsolveColour {
1319
- id: number;
1320
- colour: string;
1321
- description: string;
1322
- private image_name;
1323
- private image_last_modified;
1324
- get image_src(): string;
1325
- constructor(record: Partial<EsolveColourRecord>);
1326
- getImagePath(): string;
1327
- }
1328
-
1329
- declare class EsolveColoursService {
1330
- private readonly config;
1331
- private readonly http;
1332
- /**
1333
- * Retrieves colour chart details for the provided filter options
1334
- *
1335
- * @param options Filter options
1336
- *
1337
- * @returns An observable of colour details
1338
- */
1339
- getColours(options?: EsolveColourOptions): Observable<EsolveColour[]>;
1340
- private parseOptions;
1341
- private processColours;
1342
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveColoursService, never>;
1343
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveColoursService>;
1344
- }
1345
-
1346
- type EsolveMaterialPhraseMatchMode = 'contains' | 'not_equals' | 'equals';
1347
-
1348
- interface EsolveMaterialOptions {
1349
- type_of_materials_id?: number | number[];
1350
- phrase?: string;
1351
- phrase_match_mode?: EsolveMaterialPhraseMatchMode;
1352
- }
1353
-
1354
- interface EsolveMaterialRecord {
1355
- id: number;
1356
- material: string;
1357
- }
1358
-
1359
- declare class EsolveMaterial {
1360
- id: number;
1361
- material: string;
1362
- constructor(record?: Partial<EsolveMaterialRecord>);
1363
- }
1364
-
1365
- declare class EsolveMaterialsService {
1366
- private readonly config;
1367
- private readonly http;
1368
- /**
1369
- * Retrieves type of materials details for the provided filter options
1370
- *
1371
- * @param options Filter options
1372
- *
1373
- * @returns An observable of material details
1374
- */
1375
- getMaterials(options?: EsolveMaterialOptions): Observable<EsolveMaterial[]>;
1376
- private parseOptions;
1377
- private processMaterials;
1378
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveMaterialsService, never>;
1379
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveMaterialsService>;
1380
- }
1381
-
1382
- interface EsolveStockBadgeRecord {
1383
- id: number;
1384
- text: string;
1385
- identifier: string;
1386
- font_colour: string;
1387
- badge_colour: string;
1388
- sort_priority: number;
1389
- }
1390
-
1391
- interface EsolveStockCartParameter {
1392
- name: string;
1393
- type: EsolveStockCartParameterInput;
1394
- label: string;
1395
- is_required: boolean;
1396
- options?: string[];
1397
- }
1398
-
1399
- interface EsolveStockLeadTimesRecord {
1400
- max: number;
1401
- min: number;
904
+ interface EsolveStockLeadTimesRecord {
905
+ max: number;
906
+ min: number;
1402
907
  }
1403
908
 
1404
909
  interface EsolveStockLinkedCategoryRecord {
@@ -1512,7 +1017,35 @@ interface EsolveLinkedStockRecord<T extends EsolveCustomFields = EsolveCustomFie
1512
1017
  qty: number;
1513
1018
  }
1514
1019
 
1515
- interface EsolveMediaStockItemOptions {
1020
+ type EsolveStockItemOptionsFieldsSet = 'lite' | 'full' | 'custom' | 'config';
1021
+
1022
+ /**
1023
+ * Shared options controlling which stock field set an endpoint returns.
1024
+ *
1025
+ * Supported by every stock-search endpoint: get-items, get-wishlist,
1026
+ * get-suggested-items, get-recipe-items, get-linked-items and
1027
+ * get-media-linked-items.
1028
+ *
1029
+ * When omitted the endpoint returns the default `lite` field set.
1030
+ */
1031
+ interface EsolveStockFieldSetOptions {
1032
+ /**
1033
+ * Overrides which field set is returned.
1034
+ *
1035
+ * Note: `full` is only honoured by endpoints that apply listing
1036
+ * identifiers (get-items, get-wishlist, get-recipe-items,
1037
+ * get-media-linked-items). On get-suggested-items and get-linked-items it
1038
+ * degrades to `lite`; use `config` or `custom` there instead.
1039
+ */
1040
+ override_fields_set?: EsolveStockItemOptionsFieldsSet;
1041
+ /**
1042
+ * Field-config names used when `override_fields_set` is `custom`.
1043
+ * Serialised to a comma-separated list on the wire.
1044
+ */
1045
+ custom_field_config_names?: string[];
1046
+ }
1047
+
1048
+ interface EsolveMediaStockItemOptions extends EsolveStockFieldSetOptions {
1516
1049
  media_id?: number;
1517
1050
  media_identifier?: string;
1518
1051
  rows?: number;
@@ -1529,7 +1062,7 @@ interface EsolveRecipeItemRecord<T extends EsolveCustomFields = EsolveCustomFiel
1529
1062
  qty: number;
1530
1063
  }
1531
1064
 
1532
- interface EsolveRecipeStockOptions {
1065
+ interface EsolveRecipeStockOptions extends EsolveStockFieldSetOptions {
1533
1066
  page?: number;
1534
1067
  rows?: number;
1535
1068
  sort?: EsolveSort<EsolveStockSortField>;
@@ -1576,17 +1109,13 @@ interface EsolveStockItemLocationLevelRecord {
1576
1109
  distance?: number;
1577
1110
  }
1578
1111
 
1579
- type EsolveStockItemOptionsFieldsSet = 'lite' | 'full' | 'custom' | 'config';
1580
-
1581
- interface EsolveStockItemOptions extends EsolveStockItemBaseOptions {
1112
+ interface EsolveStockItemOptions extends EsolveStockItemBaseOptions, EsolveStockFieldSetOptions {
1582
1113
  category_id?: string;
1583
1114
  subcategory_id?: number;
1584
1115
  manufacturers_id?: number;
1585
1116
  ranges_id?: number;
1586
1117
  is_active?: boolean;
1587
1118
  display_only?: boolean;
1588
- override_fields_set?: EsolveStockItemOptionsFieldsSet;
1589
- custom_field_config_names?: string[];
1590
1119
  tag_id_list?: number[];
1591
1120
  topic_id_list?: number[];
1592
1121
  specials_id?: number;
@@ -2231,7 +1760,7 @@ declare class EsolveStockService<T extends EsolveCustomFields = EsolveCustomFiel
2231
1760
  *
2232
1761
  * @param code Stock item code
2233
1762
  */
2234
- getLinkedItems(code: string): Observable<EsolveLinkedStockItem<T>[]>;
1763
+ getLinkedItems(code: string, options?: EsolveStockFieldSetOptions): Observable<EsolveLinkedStockItem<T>[]>;
2235
1764
  /**
2236
1765
  * Retrieve list of stock items on a recipe from the eSolve API
2237
1766
  *
@@ -2249,7 +1778,7 @@ declare class EsolveStockService<T extends EsolveCustomFields = EsolveCustomFiel
2249
1778
  *
2250
1779
  * @param code Stock item code
2251
1780
  */
2252
- getSuggestedItems(code: string): Observable<EsolveSuggestedStockItem<T>[]>;
1781
+ getSuggestedItems(code: string, options?: EsolveStockFieldSetOptions): Observable<EsolveSuggestedStockItem<T>[]>;
2253
1782
  /**
2254
1783
  * Retrieves the full image collection of a stock item
2255
1784
  *
@@ -2264,6 +1793,14 @@ declare class EsolveStockService<T extends EsolveCustomFields = EsolveCustomFiel
2264
1793
  */
2265
1794
  getStockBarcodes(options: EsolveStockBarcodeOptions): Observable<EsolveStockBarcode[]>;
2266
1795
  private parseBaseStockItemOptions;
1796
+ /**
1797
+ * Applies the shared field-set options (`override_fields_set` and
1798
+ * `custom_field_config_names`) to the given HTTP params.
1799
+ *
1800
+ * @param params HTTP client parameters
1801
+ * @param options Field set options
1802
+ */
1803
+ private applyFieldSetOptions;
2267
1804
  /**
2268
1805
  * Processes the eSolve stock item record and converts it to an object.
2269
1806
  *
@@ -2886,9 +2423,120 @@ declare class EsolveErpDocumentsRequestResult extends EsolveResponseResult {
2886
2423
  constructor(response: EsolvePostResponseItem);
2887
2424
  }
2888
2425
 
2889
- declare class EsolveChangePasswordResult extends EsolveResponseResult {
2890
- password_updated: boolean;
2891
- constructor(response: EsolvePostResponseItem);
2426
+ declare class EsolveChangePasswordResult extends EsolveResponseResult {
2427
+ password_updated: boolean;
2428
+ constructor(response: EsolvePostResponseItem);
2429
+ }
2430
+
2431
+ interface EsolveSessionData {
2432
+ addresses_id: number;
2433
+ location_id: number;
2434
+ shipping_id: number;
2435
+ clients_id: number;
2436
+ }
2437
+
2438
+ interface EsolveSession {
2439
+ token: string;
2440
+ user_id: number;
2441
+ access_level: number;
2442
+ location_id: number;
2443
+ addresses_id: number;
2444
+ shipping_id: number;
2445
+ clients_id: number;
2446
+ }
2447
+
2448
+ interface EsolveSessionUpdateOptions {
2449
+ user_id?: number;
2450
+ location_id?: number;
2451
+ addresses_id?: number;
2452
+ shipping_id?: number;
2453
+ clients_id?: number;
2454
+ token?: string;
2455
+ expiry_date_unix?: number;
2456
+ grace_unix?: number;
2457
+ }
2458
+
2459
+ declare class EsolveSessionService {
2460
+ private readonly is_browser;
2461
+ private readonly config;
2462
+ private readonly cookieService;
2463
+ private readonly storage_key;
2464
+ private readonly appRef;
2465
+ protected readonly token: i0.WritableSignal<string>;
2466
+ protected readonly user_id: i0.WritableSignal<number>;
2467
+ protected readonly access_level: i0.WritableSignal<number>;
2468
+ protected readonly location_id: i0.WritableSignal<number>;
2469
+ protected readonly addresses_id: i0.WritableSignal<number>;
2470
+ protected readonly shipping_id: i0.WritableSignal<number>;
2471
+ protected readonly clients_id: i0.WritableSignal<number>;
2472
+ protected readonly state_hash: i0.Signal<string>;
2473
+ protected readonly session: i0.Signal<EsolveSession>;
2474
+ private token$;
2475
+ private user_id$;
2476
+ private access_level$;
2477
+ private location_id$;
2478
+ private addresses_id$;
2479
+ private shipping_id$;
2480
+ private clients_id$;
2481
+ private session$;
2482
+ private timer_start;
2483
+ private timer_stop;
2484
+ private expire;
2485
+ private session_end;
2486
+ private app_stable_init$;
2487
+ constructor();
2488
+ isValid(): boolean;
2489
+ getSession(): Observable<EsolveSession>;
2490
+ getSessionValue(): EsolveSession;
2491
+ onSessionEnd(): Observable<void>;
2492
+ onExpire(): Observable<void>;
2493
+ expireSession(): void;
2494
+ getToken(): string;
2495
+ onTokenUpdate(): Observable<string>;
2496
+ updateToken(token: string): void;
2497
+ getUserId(): number;
2498
+ onUserIdUpdate(): Observable<number>;
2499
+ updateUserId(user_id: number): void;
2500
+ getAccessLevel(): number;
2501
+ onAccessLevelUpdate(): Observable<number>;
2502
+ updateAccessLevel(access_level: number): void;
2503
+ getLocationId(): number;
2504
+ onLocationIdUpdate(): Observable<number>;
2505
+ updateLocationId(location_id: number): void;
2506
+ getAddressesId(): number;
2507
+ onAddressesIdUpdate(): Observable<number>;
2508
+ updateAddressesId(addresses_id: number): void;
2509
+ getShippingId(): number;
2510
+ onShippingIdUpdate(): Observable<number>;
2511
+ updateShippingId(shipping_id: number): void;
2512
+ getClientsId(): number;
2513
+ onClientsIdUpdate(): Observable<number>;
2514
+ updateClientsId(clients_id: number): void;
2515
+ getStateHash(): string;
2516
+ stopTimer(): void;
2517
+ startTimer(time: number | Date): Promise<void>;
2518
+ getCachedSession(): string | null;
2519
+ reset(): void;
2520
+ handleSession(session: EsolveSession, expiry_date_unix: number, grace_unix: number): void;
2521
+ handleUpdateSession(options: EsolveSessionUpdateOptions): void;
2522
+ private setStorageKey;
2523
+ private getCache;
2524
+ private setCache;
2525
+ private removeCache;
2526
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveSessionService, never>;
2527
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveSessionService>;
2528
+ }
2529
+
2530
+ declare class EsolveSessionMetadataService {
2531
+ private readonly config;
2532
+ private readonly http;
2533
+ private readonly errorHandler;
2534
+ private readonly responseHandler;
2535
+ set(type: string, metadata: any): Observable<EsolveResponseResult>;
2536
+ get<T>(type: string): Observable<T>;
2537
+ delete(type: string): Observable<EsolveResult>;
2538
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveSessionMetadataService, never>;
2539
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveSessionMetadataService>;
2892
2540
  }
2893
2541
 
2894
2542
  interface EsolveForgotPasswordResponse extends EsolvePostResponseItem {
@@ -3297,6 +2945,7 @@ interface EsolveLocationRecord<T extends EsolveCustomFields = EsolveCustomFields
3297
2945
  image_name?: string;
3298
2946
  image_last_modified?: string;
3299
2947
  custom_fields?: T;
2948
+ sef_name?: string;
3300
2949
  }
3301
2950
 
3302
2951
  type EsolveLocationSortField = 'sorting_code' | 'price' | 'name' | 'description' | 'code' | 'created';
@@ -3348,6 +2997,7 @@ declare class EsolveLocation<T extends EsolveCustomFields = EsolveCustomFields>
3348
2997
  include_on_enquiries: boolean;
3349
2998
  include_on_store_locator: boolean;
3350
2999
  website_url: string;
3000
+ sef_name: string;
3351
3001
  address: EsolveLocationAddress;
3352
3002
  pobox_address: EsolveLocationPOBoxAddress;
3353
3003
  contact_info: EsolveLocationContactInfo;
@@ -4406,9 +4056,7 @@ type EsolveCartItemErrors = {
4406
4056
  [tempcart_id: number]: EsolveCartItemErrorRecord;
4407
4057
  };
4408
4058
 
4409
- type EsolveCartSetAction = 'add' | 'edit' | 'remove';
4410
-
4411
- type EsolveCart = EsolveCartItem[];
4059
+ type EsolveCartItemSortField = 'sorting_code' | 'price' | 'qty' | 'name' | 'description' | 'code' | 'type';
4412
4060
 
4413
4061
  /**
4414
4062
  * How a promotion's reward is expressed once qualified.
@@ -4434,6 +4082,10 @@ type EsolveCartPromotionProgressMode = 'qty' | 'any_one' | 'all';
4434
4082
  */
4435
4083
  type EsolveCartPromotionProgress = EsolveCartPromotionProgressItem[];
4436
4084
 
4085
+ type EsolveCartSetAction = 'add' | 'edit' | 'remove';
4086
+
4087
+ type EsolveCart = EsolveCartItem[];
4088
+
4437
4089
  type EsolveDeliveryCategoryTotalsMapRecord = Record<string, EsolveDeliveryCategoryTotalsRecord>;
4438
4090
 
4439
4091
  type EsolveDeliveryCategoryTotalsMap = Map<string, EsolveDeliveryCategoryTotals>;
@@ -4460,107 +4112,523 @@ declare class EsolveCartService {
4460
4112
  *
4461
4113
  * @returns An `Observable` with an array of cart items
4462
4114
  */
4463
- getCart(): Observable<EsolveCart>;
4115
+ getCart(): Observable<EsolveCart>;
4116
+ /**
4117
+ * Updates the cart by preforming various actions, such as adding, editing or removing items from the cart.
4118
+ *
4119
+ * @param items An array of options to update the cart
4120
+ * @param action The default action to preform
4121
+ *
4122
+ * @returns An `Observable` with an array of responses that gives feedback on the requested changes
4123
+ */
4124
+ setCart(items: EsolveCartSetItem[], action?: EsolveCartSetAction): Observable<EsolveCartItemResponse[]>;
4125
+ setCartEmpty(type: EsolveTransactionType, additional_where: EsolveAdditionalWhere[]): Observable<EsolveEmptyCartResult>;
4126
+ /**
4127
+ * Retrieves the totals of the cart with all the totals calculated
4128
+ *
4129
+ * @returns An `Observable` with an object containing cart totals
4130
+ */
4131
+ getTotals(type?: EsolveTransactionType): Observable<EsolveCartTotals>;
4132
+ /**
4133
+ * Retrieves a tracking code for the cart
4134
+ *
4135
+ * @returns An `Observable` with the cart tracking code
4136
+ */
4137
+ getTrackingCode(): Observable<number>;
4138
+ /**
4139
+ * Get the data of the transaction for the analytics
4140
+ *
4141
+ * @param transaction_id ID of the transaction used in eSolve
4142
+ *
4143
+ * @returns An `Observable` with the analytics data
4144
+ */
4145
+ getTransactionAnalyticsData<T = any>(transaction_id: number): Observable<EsolveTransactionAnalyticsData<T>>;
4146
+ /**
4147
+ * Initiates checkout of the cart items
4148
+ *
4149
+ * @param type The cart type that needs to be checked out
4150
+ * @param addresses_id The ID of the delivery address
4151
+ * @param shipping_id The ID of the shipping method
4152
+ * @param payment_method_id The ID of the selected payment method
4153
+ * @param location_id The ID of the selected branch from with shipping needs to be calculated
4154
+ * @param comments Additional comments on the cart
4155
+ * @param time_slot The time slot to be used
4156
+ * @param apply_wallet Whether to apply wallet to the order
4157
+ * @param purchase_order_number Custom purchase order to added to transaction
4158
+ *
4159
+ * @returns An `Observable` with the transaction ID
4160
+ */
4161
+ checkout(type: EsolveTransactionType, addresses_id: number, shipping_id: number, payment_method_id?: number, location_id?: number, comments?: string, time_slot?: EsolveTimeSlotCheckout, apply_wallet?: boolean, purchase_order_number?: string, expected_date?: string): Observable<EsolveCheckoutResult>;
4162
+ getCartAlternatives(): Observable<EsolveCartAlternativesMap>;
4163
+ /**
4164
+ * Retrieves the active promotions the cart has not yet qualified for, with a
4165
+ * ready-to-display indicator message and the structured data behind it.
4166
+ *
4167
+ * The endpoint is read-only — it never applies discounts and never writes to
4168
+ * the cart. Call it whenever the cart changes (the same trigger used for
4169
+ * `getCart` / `getTotals`). A `no_records` soft-error (`records: []`) means
4170
+ * there is nothing to display — not a real failure — and resolves to an
4171
+ * empty array.
4172
+ *
4173
+ * @returns An `Observable` with an array of promotion progress entries
4174
+ */
4175
+ getCartPromotionProgress(): Observable<EsolveCartPromotionProgress>;
4176
+ /**
4177
+ * Set an alternative stock item to current cart item
4178
+ *
4179
+ * @param id It is used to identify the specific cart item for which the alternative is being set
4180
+ * @param alternative The alternative value that you want to set for a specific cart item.
4181
+ * @returns an Observable of type EsolveResponseResult.
4182
+ */
4183
+ setCartAlternative(id: number, alternative: string): Observable<EsolveResponseResult>;
4184
+ deleteCartAlternative(id: number): Observable<EsolveResult>;
4185
+ /**
4186
+ * Processes the eSolve tree records
4187
+ *
4188
+ * @param cart_item_records Records to process
4189
+ * @returns An array of processed cart items
4190
+ */
4191
+ private processCart;
4192
+ /**
4193
+ * Processes the eSolve cart alternatives records
4194
+ *
4195
+ * @param records Records to process
4196
+ *
4197
+ * @returns A `Map` of processed cart alternatives
4198
+ */
4199
+ private processCartAlternatives;
4200
+ /**
4201
+ * Processes the eSolve cart totals
4202
+ *
4203
+ * @param record Data to process
4204
+ * @returns Processed cart totals
4205
+ */
4206
+ private processCartTotals;
4207
+ /**
4208
+ * Processes the eSolve cart promotion progress records
4209
+ *
4210
+ * @param records Records to process
4211
+ * @returns An array of processed promotion progress entries
4212
+ */
4213
+ private processCartPromotionProgress;
4214
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveCartService, never>;
4215
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveCartService>;
4216
+ }
4217
+
4218
+ declare class EsolveCategoryTreeItem implements EsolveSeoDetails {
4219
+ type: 'category' | 'subcategory';
4220
+ esolve_id: string | number;
4221
+ parent_id: string;
4222
+ description: string;
4223
+ sef_description: string;
4224
+ short_description: string;
4225
+ sort_priority: number;
4226
+ active: boolean;
4227
+ display_only: boolean;
4228
+ private image_name;
4229
+ id: string;
4230
+ seo_details: EsolveSeoInfo;
4231
+ total_stock?: number;
4232
+ children?: EsolveCategoryTreeItem[];
4233
+ cart_sort: EsolveSort<EsolveCartItemSortField> | null;
4234
+ stock_sort: EsolveSort<EsolveStockSortField> | null;
4235
+ private image_path;
4236
+ get small_image_src(): string;
4237
+ get thumbnail_image_src(): string;
4238
+ get tiny_image_src(): string;
4239
+ constructor(type: 'category' | 'subcategory', esolve_id: string | number, parent_id: string, description: string, sef_description: string, short_description: string, sort_priority: number, active: boolean, display_only: boolean, image_name: string, seo_title: string, seo_keywords: string, seo_description: string, children?: EsolveCategoryTreeItem[], cart_sort?: {
4240
+ sort: EsolveCartItemSortField;
4241
+ order: EsolveSortOrder;
4242
+ }, stock_sort?: {
4243
+ sort: EsolveStockSortField;
4244
+ order: EsolveSortOrder;
4245
+ });
4246
+ getImagePath(image_size: 'small' | 'thumb' | 'tiny'): string;
4247
+ }
4248
+
4249
+ interface EsolveSubcategoryRecord {
4250
+ type: 'subcategory';
4251
+ id: number;
4252
+ menu_id: string;
4253
+ external_system_code: string;
4254
+ location_id: number;
4255
+ description: string;
4256
+ sef_description: string;
4257
+ seo_description: string;
4258
+ sort_priority: number;
4259
+ active: boolean;
4260
+ display_only: boolean;
4261
+ seo_page_title: string;
4262
+ seo_keywords: string;
4263
+ short_description: string;
4264
+ image: string;
4265
+ total_stock?: number;
4266
+ cart_sort?: {
4267
+ sort: EsolveCartItemSortField;
4268
+ order: EsolveSortOrder;
4269
+ };
4270
+ stock_sort?: {
4271
+ sort: EsolveStockSortField;
4272
+ order: EsolveSortOrder;
4273
+ };
4274
+ }
4275
+
4276
+ interface EsolveCategoryRecord {
4277
+ type: 'category';
4278
+ menu_id: string;
4279
+ owner_menu_id: string;
4280
+ description: string;
4281
+ sef_description: string;
4282
+ seo_description: string;
4283
+ sort_priority: number;
4284
+ active: boolean;
4285
+ display_only: boolean;
4286
+ seo_page_title: string;
4287
+ seo_keywords: string;
4288
+ short_description: string;
4289
+ image: string;
4290
+ total_stock?: number;
4291
+ children: (EsolveCategoryRecord | EsolveSubcategoryRecord)[];
4292
+ cart_sort?: {
4293
+ sort: EsolveCartItemSortField;
4294
+ order: EsolveSortOrder;
4295
+ };
4296
+ stock_sort?: {
4297
+ sort: EsolveStockSortField;
4298
+ order: EsolveSortOrder;
4299
+ };
4300
+ }
4301
+
4302
+ interface EsolveCategoryTreeItemRecord {
4303
+ type: 'category' | 'subcategory';
4304
+ id: string | number;
4305
+ parent_id: string;
4306
+ description: string;
4307
+ sef_description: string;
4308
+ short_description: string;
4309
+ sort_priority: number;
4310
+ active: boolean;
4311
+ display_only: boolean;
4312
+ seo_page_title: string;
4313
+ seo_keywords: string;
4314
+ seo_description: string;
4315
+ image: string;
4316
+ total_stock?: number;
4317
+ children?: EsolveCategoryTreeItemRecord[];
4318
+ cart_sort?: {
4319
+ sort: EsolveCartItemSortField;
4320
+ order: EsolveSortOrder;
4321
+ };
4322
+ stock_sort?: {
4323
+ sort: EsolveStockSortField;
4324
+ order: EsolveSortOrder;
4325
+ };
4326
+ }
4327
+
4328
+ interface EsolveCategoryTreeItemOptions {
4329
+ /**
4330
+ * Generated ID. Does not require type to be set.
4331
+ */
4332
+ id?: string;
4333
+ /**
4334
+ * Type category tree item. Required for if esolve_id or sef_description is set
4335
+ */
4336
+ type?: 'category' | 'subcategory';
4464
4337
  /**
4465
- * Updates the cart by preforming various actions, such as adding, editing or removing items from the cart.
4466
- *
4467
- * @param items An array of options to update the cart
4468
- * @param action The default action to preform
4469
- *
4470
- * @returns An `Observable` with an array of responses that gives feedback on the requested changes
4338
+ * Search engine friendly description. Requires type to be set.
4471
4339
  */
4472
- setCart(items: EsolveCartSetItem[], action?: EsolveCartSetAction): Observable<EsolveCartItemResponse[]>;
4473
- setCartEmpty(type: EsolveTransactionType, additional_where: EsolveAdditionalWhere[]): Observable<EsolveEmptyCartResult>;
4340
+ sef_description?: string;
4474
4341
  /**
4475
- * Retrieves the totals of the cart with all the totals calculated
4476
- *
4477
- * @returns An `Observable` with an object containing cart totals
4342
+ * ID from eSolve. Requires type to be set.
4478
4343
  */
4479
- getTotals(type?: EsolveTransactionType): Observable<EsolveCartTotals>;
4344
+ esolve_id?: number | string;
4345
+ }
4346
+
4347
+ interface EsolveCategoryIdentifier {
4348
+ type: 'category' | 'subcategory';
4349
+ esolve_id: number | string;
4350
+ }
4351
+
4352
+ declare class EsolveCategoryTreeService {
4353
+ private readonly config;
4354
+ private readonly http;
4480
4355
  /**
4481
- * Retrieves a tracking code for the cart
4482
- *
4483
- * @returns An `Observable` with the cart tracking code
4356
+ * Retrieves the category tree from eSolve instance and coverts it to the correct format.
4484
4357
  */
4485
- getTrackingCode(): Observable<number>;
4358
+ getCategoryTree(identifier?: string): Observable<EsolveCategoryTreeItem[]>;
4486
4359
  /**
4487
- * Get the data of the transaction for the analytics
4360
+ * Retrieve the special tree structure for a specific special from the eSolve
4361
+ * instance and converts it into the correct format
4488
4362
  *
4489
- * @param transaction_id ID of the transaction used in eSolve
4363
+ * @param special_id Id of to special to get tree for
4490
4364
  *
4491
- * @returns An `Observable` with the analytics data
4365
+ * @returns Observable containing special tree data
4492
4366
  */
4493
- getTransactionAnalyticsData<T = any>(transaction_id: number): Observable<EsolveTransactionAnalyticsData<T>>;
4367
+ getSpecialTree(special_id: number): Observable<EsolveCategoryTreeItem[]>;
4494
4368
  /**
4495
- * Initiates checkout of the cart items
4369
+ * Retrieve the manufacturer tree structure for a specific manufacturer from the eSolve
4370
+ * instance and converts it into the correct format
4496
4371
  *
4497
- * @param type The cart type that needs to be checked out
4498
- * @param addresses_id The ID of the delivery address
4499
- * @param shipping_id The ID of the shipping method
4500
- * @param payment_method_id The ID of the selected payment method
4501
- * @param location_id The ID of the selected branch from with shipping needs to be calculated
4502
- * @param comments Additional comments on the cart
4503
- * @param time_slot The time slot to be used
4504
- * @param apply_wallet Whether to apply wallet to the order
4505
- * @param purchase_order_number Custom purchase order to added to transaction
4372
+ * @param manufacturer_id Id of the manufacturer to get the tree for
4506
4373
  *
4507
- * @returns An `Observable` with the transaction ID
4374
+ * @returns Observable containing manufacturer tree data
4508
4375
  */
4509
- checkout(type: EsolveTransactionType, addresses_id: number, shipping_id: number, payment_method_id?: number, location_id?: number, comments?: string, time_slot?: EsolveTimeSlotCheckout, apply_wallet?: boolean, purchase_order_number?: string, expected_date?: string): Observable<EsolveCheckoutResult>;
4510
- getCartAlternatives(): Observable<EsolveCartAlternativesMap>;
4376
+ getManufacturerTree(manufacturer_id: number): Observable<EsolveCategoryTreeItem[]>;
4511
4377
  /**
4512
- * Retrieves the active promotions the cart has not yet qualified for, with a
4513
- * ready-to-display indicator message and the structured data behind it.
4514
- *
4515
- * The endpoint is read-only — it never applies discounts and never writes to
4516
- * the cart. Call it whenever the cart changes (the same trigger used for
4517
- * `getCart` / `getTotals`). A `no_records` soft-error (`records: []`) means
4518
- * there is nothing to display — not a real failure — and resolves to an
4519
- * empty array.
4378
+ * Retrieve the details of a category tree item from the eSolve instance and
4379
+ * converts it to the correct format.
4520
4380
  *
4521
- * @returns An `Observable` with an array of promotion progress entries
4381
+ * @param options Filter options
4522
4382
  */
4523
- getCartPromotionProgress(): Observable<EsolveCartPromotionProgress>;
4383
+ getCategoryTreeItem(options: EsolveCategoryTreeItemOptions): Observable<EsolveCategoryTreeItem>;
4524
4384
  /**
4525
- * Set an alternative stock item to current cart item
4385
+ * Processes the eSolve tree records and converts them into the correct format.
4526
4386
  *
4527
- * @param id It is used to identify the specific cart item for which the alternative is being set
4528
- * @param alternative The alternative value that you want to set for a specific cart item.
4529
- * @returns an Observable of type EsolveResponseResult.
4387
+ * @param tree_records Records to process
4530
4388
  */
4531
- setCartAlternative(id: number, alternative: string): Observable<EsolveResponseResult>;
4532
- deleteCartAlternative(id: number): Observable<EsolveResult>;
4389
+ private processTree;
4390
+ private processTreeItem;
4391
+ private processID;
4392
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveCategoryTreeService, never>;
4393
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveCategoryTreeService>;
4394
+ }
4395
+
4396
+ interface EsolveAssetRecord {
4397
+ id: number;
4398
+ src: string;
4399
+ name: string;
4400
+ type: EsolveAssetType;
4401
+ description: string;
4402
+ document_number?: string;
4403
+ document_type?: string;
4404
+ area_of_application?: string;
4405
+ asset_category?: string;
4406
+ asset_sub_category?: string;
4407
+ sort_priority?: number;
4408
+ created?: string;
4409
+ image_name?: string;
4410
+ category?: EsolveCategoryTreeItemRecord;
4411
+ subcategory?: EsolveCategoryTreeItemRecord;
4412
+ manufacturer?: EsolveManufacturerRecord;
4413
+ range?: EsolveRangeRecord;
4414
+ topics?: EsolveTopicRecord[];
4415
+ tags?: EsolveTagRecord[];
4416
+ url?: string;
4417
+ }
4418
+
4419
+ interface EsolveMediaAssetOptions extends EsolveAssetOptions {
4420
+ media_id?: number;
4421
+ media_identifier?: string;
4422
+ }
4423
+
4424
+ interface EsolveStockAssetOptions extends EsolveAssetOptions {
4425
+ code?: string;
4426
+ sef_name?: string;
4427
+ }
4428
+
4429
+ declare class EsolveLinkedAsset {
4430
+ id: number;
4431
+ name: string;
4432
+ type: EsolveAssetType;
4433
+ description: string;
4434
+ src: string;
4435
+ private image_name;
4533
4436
  /**
4534
- * Processes the eSolve tree records
4535
- *
4536
- * @param cart_item_records Records to process
4537
- * @returns An array of processed cart items
4437
+ * Shortcut to `getImagePath()`
4538
4438
  */
4539
- private processCart;
4439
+ get image_src(): string;
4440
+ constructor(record: EsolveLinkedAssetRecord);
4540
4441
  /**
4541
- * Processes the eSolve cart alternatives records
4542
- *
4543
- * @param records Records to process
4442
+ * Retrieve image path
4544
4443
  *
4545
- * @returns A `Map` of processed cart alternatives
4444
+ * @returns Image path on CDN, else empty string if no image exists
4546
4445
  */
4547
- private processCartAlternatives;
4446
+ getImagePath(): string;
4447
+ }
4448
+
4449
+ declare class EsolveAsset {
4450
+ id: number;
4451
+ src: string;
4452
+ name: string;
4453
+ type?: EsolveAssetType;
4454
+ description: string;
4455
+ document_number: string;
4456
+ document_type: string;
4457
+ area_of_application: string;
4458
+ asset_category: string;
4459
+ asset_sub_category: string;
4460
+ sort_priority: number;
4461
+ created?: string;
4462
+ category?: EsolveCategoryTreeItem;
4463
+ subcategory?: EsolveCategoryTreeItem;
4464
+ manufacturer?: EsolveManufacturer;
4465
+ range?: EsolveRange;
4466
+ topics: EsolveTopic[];
4467
+ tags: EsolveTag[];
4468
+ url: string;
4469
+ private image_name;
4548
4470
  /**
4549
- * Processes the eSolve cart totals
4550
- *
4551
- * @param record Data to process
4552
- * @returns Processed cart totals
4471
+ * Shortcut to `getImagePath()`
4553
4472
  */
4554
- private processCartTotals;
4473
+ get image_src(): string;
4474
+ constructor(record: EsolveAssetRecord);
4555
4475
  /**
4556
- * Processes the eSolve cart promotion progress records
4476
+ * Retrieve image path
4557
4477
  *
4558
- * @param records Records to process
4559
- * @returns An array of processed promotion progress entries
4478
+ * @returns Image path on CDN, else empty string if no image exists
4560
4479
  */
4561
- private processCartPromotionProgress;
4562
- static ɵfac: i0.ɵɵFactoryDeclaration<EsolveCartService, never>;
4563
- static ɵprov: i0.ɵɵInjectableDeclaration<EsolveCartService>;
4480
+ getImagePath(): string;
4481
+ }
4482
+
4483
+ declare class EsolveAssetsService {
4484
+ private readonly config;
4485
+ private readonly http;
4486
+ getAsset(id: number): Observable<EsolveAsset>;
4487
+ getAssets(options?: EsolveAssetOptions): Observable<EsolveAssetList>;
4488
+ getMediaAssets(options: EsolveMediaAssetOptions): Observable<EsolveAssetList>;
4489
+ getStockAssets(options: EsolveStockAssetOptions): Observable<EsolveAssetList>;
4490
+ private processAsset;
4491
+ private getAssetRecords;
4492
+ private parseOptions;
4493
+ private processAssetLists;
4494
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveAssetsService, never>;
4495
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveAssetsService>;
4496
+ }
4497
+
4498
+ declare enum EsolveEventType {
4499
+ FATAL_SESSION_ERROR = "FATAL_SESSION_ERROR",
4500
+ SESSION_VALIDATION_START = "SESSION_VALIDATION_START",
4501
+ SESSION_VALIDATION_END = "SESSION_VALIDATION_END",
4502
+ CART_ERROR = "CART_ERROR"
4503
+ }
4504
+
4505
+ interface EsolveEventRecord {
4506
+ type: EsolveEventType;
4507
+ message?: string;
4508
+ additional_data?: any;
4509
+ }
4510
+
4511
+ interface EsolveNotificationButtonActionRecord {
4512
+ text: string;
4513
+ module: string;
4514
+ target: EsolveUrlTarget;
4515
+ url: string;
4516
+ }
4517
+
4518
+ interface EsolveNotificationDateRecord {
4519
+ date: string;
4520
+ timestamp: number;
4521
+ }
4522
+
4523
+ interface EsolveNotificationDatesRecord {
4524
+ from: EsolveNotificationDateRecord;
4525
+ to: EsolveNotificationDateRecord;
4526
+ }
4527
+
4528
+ interface EsolveSystemNotificationOptions {
4529
+ exclude_ids?: number[];
4530
+ }
4531
+
4532
+ type EsolveNotificationPosition = 'top' | 'center' | 'bottom' | 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
4533
+
4534
+ type EsolveNotificationSize = 'small' | 'normal' | 'large';
4535
+
4536
+ type EsolveNotificationType = 'modal' | 'floating_block' | 'toast';
4537
+
4538
+ interface EsolveSystemNotificationTypeRecord {
4539
+ id: number;
4540
+ identifier: string;
4541
+ title: string;
4542
+ type: EsolveNotificationType;
4543
+ position: EsolveNotificationPosition;
4544
+ size: EsolveNotificationSize;
4545
+ system_disable_order: boolean;
4546
+ }
4547
+
4548
+ interface EsolveSystemNotificationRecord {
4549
+ id: number;
4550
+ identifier: string;
4551
+ title: string;
4552
+ message: string;
4553
+ dates?: EsolveNotificationDatesRecord | null;
4554
+ timeout: number;
4555
+ display_every: number;
4556
+ button_actions: EsolveNotificationButtonActionRecord[];
4557
+ type: EsolveSystemNotificationTypeRecord;
4558
+ }
4559
+
4560
+ declare class EsolveEvent {
4561
+ private _type;
4562
+ private _message;
4563
+ private _additional_data?;
4564
+ get type(): EsolveEventType;
4565
+ get message(): string;
4566
+ get additional_data(): any;
4567
+ constructor(record: EsolveEventRecord);
4568
+ }
4569
+
4570
+ declare class EsolveNotificationButtonAction {
4571
+ text: string;
4572
+ url: string;
4573
+ module: string;
4574
+ target: EsolveUrlTarget;
4575
+ constructor(record?: EsolveNotificationButtonActionRecord);
4576
+ }
4577
+
4578
+ declare class EsolveNotificationDates {
4579
+ from: Date;
4580
+ to: Date;
4581
+ constructor(record: EsolveNotificationDatesRecord);
4582
+ }
4583
+
4584
+ declare class EsolveSystemNotificationType {
4585
+ id: number;
4586
+ identifier: string;
4587
+ title: string;
4588
+ system_disable_order: boolean;
4589
+ position: EsolveNotificationPosition;
4590
+ size: EsolveNotificationSize;
4591
+ type: EsolveNotificationType;
4592
+ constructor(record: EsolveSystemNotificationTypeRecord);
4593
+ }
4594
+
4595
+ declare class EsolveSystemNotification {
4596
+ id: number;
4597
+ identifier: string;
4598
+ title: string;
4599
+ message: string;
4600
+ timeout: number;
4601
+ display_every: number;
4602
+ button_actions: EsolveNotificationButtonAction[];
4603
+ type: EsolveSystemNotificationType;
4604
+ dates?: EsolveNotificationDates;
4605
+ constructor(record: EsolveSystemNotificationRecord);
4606
+ }
4607
+
4608
+ declare class EsolveEventTargetService {
4609
+ private readonly listeners;
4610
+ addEventListener(event_name: EsolveEventType, callback: (event: EsolveEvent) => void): void;
4611
+ removeEventListener(event_name: EsolveEventType, callback: (event: EsolveEvent) => void): void;
4612
+ dispatchEvent(event: EsolveEvent | EsolveEventType): void;
4613
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveEventTargetService, never>;
4614
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveEventTargetService>;
4615
+ }
4616
+
4617
+ declare class EsolveNotificationsService {
4618
+ private readonly config;
4619
+ private readonly http;
4620
+ getSystemNotifications(options?: EsolveSystemNotificationOptions): Observable<EsolveSystemNotification[]>;
4621
+ private processNotifications;
4622
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveNotificationsService, never>;
4623
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveNotificationsService>;
4624
+ }
4625
+
4626
+ interface EsolveAuthGetData {
4627
+ key: string;
4628
+ }
4629
+
4630
+ interface EsolveAuthCheckData extends Partial<EsolveAuthGetData> {
4631
+ key_okay: boolean;
4564
4632
  }
4565
4633
 
4566
4634
  interface EsolveAuthData {
@@ -5460,6 +5528,130 @@ declare class EsolvePaymentService {
5460
5528
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolvePaymentService>;
5461
5529
  }
5462
5530
 
5531
+ interface EsolveEnquiryFormFieldRecordBase {
5532
+ id: number;
5533
+ identifier: string;
5534
+ type: string;
5535
+ label: string;
5536
+ description: string;
5537
+ required: boolean;
5538
+ /**
5539
+ * Fields sharing the same nonzero `layout_row` render together in one
5540
+ * Formly `fieldGroup` row instead of stacked. `0` (the default for every
5541
+ * field predating this) means "own row" — unchanged behavior.
5542
+ */
5543
+ layout_row: number;
5544
+ }
5545
+
5546
+ interface EsolveEnquiryFormFieldCheckboxRecord extends EsolveEnquiryFormFieldRecordBase {
5547
+ type: 'checkbox';
5548
+ options: {
5549
+ label: string;
5550
+ value: string;
5551
+ }[];
5552
+ }
5553
+
5554
+ interface EsolveEnquiryFormFieldFileRecord extends EsolveEnquiryFormFieldRecordBase {
5555
+ type: 'file';
5556
+ accept: string;
5557
+ }
5558
+
5559
+ /**
5560
+ * A presentational section heading. It collects no answer and should be
5561
+ * rendered as a group title; every field that follows it (in order) belongs
5562
+ * under this heading until the next heading. `required` and `layout_row` do
5563
+ * not apply.
5564
+ */
5565
+ interface EsolveEnquiryFormFieldHeadingRecord extends EsolveEnquiryFormFieldRecordBase {
5566
+ type: 'heading';
5567
+ presentational: true;
5568
+ }
5569
+
5570
+ interface EsolveEnquiryFormFieldRadioRecord extends EsolveEnquiryFormFieldRecordBase {
5571
+ type: 'radio';
5572
+ options: {
5573
+ label: string;
5574
+ value: string;
5575
+ }[];
5576
+ }
5577
+
5578
+ interface EsolveEnquiryFormFieldSelectRecord extends EsolveEnquiryFormFieldRecordBase {
5579
+ type: 'select';
5580
+ options: {
5581
+ label: string;
5582
+ value: string;
5583
+ }[];
5584
+ }
5585
+
5586
+ interface EsolveEnquiryFormFieldTextRecord extends EsolveEnquiryFormFieldRecordBase {
5587
+ type: 'input' | 'textarea' | 'phone' | 'email';
5588
+ placeholder: string;
5589
+ character_length: number;
5590
+ }
5591
+
5592
+ type EsolveEnquiryFormFieldRecord = EsolveEnquiryFormFieldTextRecord | EsolveEnquiryFormFieldSelectRecord | EsolveEnquiryFormFieldRadioRecord | EsolveEnquiryFormFieldCheckboxRecord | EsolveEnquiryFormFieldFileRecord | EsolveEnquiryFormFieldHeadingRecord;
5593
+
5594
+ interface EsolveEnquiryFormRecord {
5595
+ id: number;
5596
+ identifier: string;
5597
+ title: string;
5598
+ description: string;
5599
+ success_message: string;
5600
+ fields: EsolveEnquiryFormFieldRecord[];
5601
+ }
5602
+
5603
+ interface EsolveEnquiryFormSubmitResult {
5604
+ success: boolean;
5605
+ message: string;
5606
+ invalid_field_identifiers?: string[];
5607
+ }
5608
+
5609
+ declare class EsolveEnquiryFormField {
5610
+ id: number;
5611
+ identifier: string;
5612
+ type: string;
5613
+ label: string;
5614
+ description: string;
5615
+ required: boolean;
5616
+ placeholder: string;
5617
+ character_length: number;
5618
+ options: {
5619
+ label: string;
5620
+ value: string;
5621
+ }[];
5622
+ accept: string;
5623
+ layout_row: number;
5624
+ presentational: boolean;
5625
+ constructor(record?: Partial<EsolveEnquiryFormFieldRecord>);
5626
+ /**
5627
+ * Presentational fields (e.g. section headings) carry no answer and should
5628
+ * be rendered as layout/grouping markers rather than inputs.
5629
+ */
5630
+ isPresentational(): boolean;
5631
+ }
5632
+
5633
+ declare class EsolveEnquiryFormSubmissionResult {
5634
+ success: boolean;
5635
+ message: string;
5636
+ invalid_field_identifiers: string[];
5637
+ constructor(result: EsolveEnquiryFormSubmitResult);
5638
+ }
5639
+
5640
+ declare class EsolveEnquiryForm {
5641
+ id: number;
5642
+ identifier: string;
5643
+ title: string;
5644
+ description: string;
5645
+ success_message: string;
5646
+ fields: EsolveEnquiryFormField[];
5647
+ constructor(record?: Partial<EsolveEnquiryFormRecord>);
5648
+ private processFields;
5649
+ }
5650
+
5651
+ interface EsolveEnquiryFormSubmitHttpResponse {
5652
+ additional_data: EsolveEnquiryFormSubmitResult;
5653
+ }
5654
+
5463
5655
  type EsolveEnquiryResponse = EsolvePostResponseItem;
5464
5656
 
5465
5657
  declare class EsolveEnquiryResult extends EsolveResponseResult {
@@ -5467,6 +5659,46 @@ declare class EsolveEnquiryResult extends EsolveResponseResult {
5467
5659
  constructor(response: EsolveEnquiryResponse);
5468
5660
  }
5469
5661
 
5662
+ declare class EsolveEnquiryFormsService {
5663
+ private readonly http;
5664
+ private readonly config;
5665
+ private readonly errorHandler;
5666
+ /**
5667
+ * Fetch an enquiry form definition by its id or string identifier.
5668
+ *
5669
+ * @param params - Either `{ id: number }` or `{ identifier: string }`
5670
+ *
5671
+ * @returns an Observable of type EsolveEnquiryForm
5672
+ */
5673
+ getEnquiryForm(params: {
5674
+ id: number;
5675
+ } | {
5676
+ identifier: string;
5677
+ }): Observable<EsolveEnquiryForm>;
5678
+ /**
5679
+ * Submit a completed enquiry form.
5680
+ *
5681
+ * Resolves with the submit result — does not reject on validation failure.
5682
+ * Check `result.success` and `result.invalid_field_identifiers` to handle
5683
+ * field-level validation errors without clearing the form.
5684
+ *
5685
+ * Captcha fields (`captcha_key`, `captcha_code`) should be appended to
5686
+ * `form_data` by the caller when captcha is enabled.
5687
+ *
5688
+ * @param params - Either `{ id: number }` or `{ identifier: string }`
5689
+ * @param form_data - Completed form data; file fields appended as `File` objects
5690
+ *
5691
+ * @returns an Observable of type EsolveEnquiryFormSubmissionResult
5692
+ */
5693
+ submitEnquiryForm(params: {
5694
+ id: number;
5695
+ } | {
5696
+ identifier: string;
5697
+ }, form_data: FormData): Observable<EsolveEnquiryFormSubmissionResult>;
5698
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveEnquiryFormsService, never>;
5699
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveEnquiryFormsService>;
5700
+ }
5701
+
5470
5702
  declare class EsolveEnquiryService {
5471
5703
  private readonly config;
5472
5704
  private readonly http;
@@ -5531,9 +5763,12 @@ declare class EsolveWishlistService {
5531
5763
  /**
5532
5764
  * Retrieves the current wishlist
5533
5765
  *
5766
+ * @param options Optional field-set options controlling which stock
5767
+ * fields are returned for each wishlist item
5768
+ *
5534
5769
  * @returns An `Observable` with an array of cart items
5535
5770
  */
5536
- getWishlist(): Observable<EsolveWishlist>;
5771
+ getWishlist(options?: EsolveStockFieldSetOptions): Observable<EsolveWishlist>;
5537
5772
  /**
5538
5773
  * Updates the wishlist by preforming various actions, such as adding, editing or removing items from the list.
5539
5774
  *
@@ -6142,11 +6377,35 @@ declare class EsolveCompetitionEntryResult extends EsolveResponseResult {
6142
6377
  constructor(response: EsolveCompetitionEntryResponse);
6143
6378
  }
6144
6379
 
6380
+ interface EsolveCompetitionEntryRecord {
6381
+ id: string;
6382
+ code: string;
6383
+ title: string;
6384
+ submitted_by: string;
6385
+ file_type: 'image' | 'video' | 'audio' | 'text' | 'pdf' | 'pptx' | 'docx';
6386
+ file_url: string;
6387
+ preview_url: string;
6388
+ date_submitted: string;
6389
+ status: 'pending' | 'approved' | 'winner';
6390
+ up_votes: number;
6391
+ down_votes: number;
6392
+ has_voted: boolean;
6393
+ text_content?: string;
6394
+ }
6395
+
6145
6396
  interface EsolveCompetitionOptions {
6146
6397
  competition_id?: number;
6147
6398
  identifier?: string;
6148
6399
  }
6149
6400
 
6401
+ /**
6402
+ * Raw public competition statistics shape returned by the API.
6403
+ */
6404
+ interface EsolveCompetitionStatsRecord {
6405
+ total_entries: number;
6406
+ total_votes: number;
6407
+ }
6408
+
6150
6409
  interface EsolveCompetitionWinnerRecord {
6151
6410
  userid: number;
6152
6411
  firstname: string;
@@ -6174,11 +6433,65 @@ interface EsolveCompetitionRecord {
6174
6433
  audio_attachment: boolean;
6175
6434
  video_attachment: boolean;
6176
6435
  image_attachment: boolean;
6436
+ document_attachment: boolean;
6177
6437
  text: boolean;
6178
6438
  display_timer: boolean;
6439
+ enable_voting: boolean;
6440
+ require_approval: boolean;
6441
+ stats: EsolveCompetitionStatsRecord;
6179
6442
  winners: EsolveCompetitionWinnerRecord[];
6180
6443
  }
6181
6444
 
6445
+ interface EsolveCompetitionVoteRecord extends EsolvePostResponseItem {
6446
+ entry_id: string;
6447
+ dowhat: 'up' | 'down';
6448
+ up_votes: number;
6449
+ down_votes: number;
6450
+ has_voted: boolean;
6451
+ }
6452
+
6453
+ declare class EsolveCompetitionEntry {
6454
+ id: string;
6455
+ code: string;
6456
+ title: string;
6457
+ submitted_by: string;
6458
+ file_type: EsolveCompetitionEntryRecord['file_type'];
6459
+ file_url: string;
6460
+ preview_url: string;
6461
+ date_submitted: string;
6462
+ status: EsolveCompetitionEntryRecord['status'];
6463
+ up_votes: number;
6464
+ down_votes: number;
6465
+ has_voted: boolean;
6466
+ text_content?: string;
6467
+ constructor(record?: Partial<EsolveCompetitionEntryRecord>);
6468
+ }
6469
+
6470
+ /**
6471
+ * Public competition statistics returned by the `get-competitions.php` service.
6472
+ */
6473
+ declare class EsolveCompetitionStats implements EsolveCompetitionStatsRecord {
6474
+ /**
6475
+ * Total approved entries submitted to the competition.
6476
+ */
6477
+ total_entries: number;
6478
+ /**
6479
+ * Total up + down votes cast across all competition entries.
6480
+ */
6481
+ total_votes: number;
6482
+ constructor(record?: Partial<EsolveCompetitionStatsRecord>);
6483
+ }
6484
+
6485
+ declare class EsolveCompetitionVoteResult extends EsolveResponseResult {
6486
+ success: boolean;
6487
+ entry_id: string;
6488
+ dowhat: 'up' | 'down';
6489
+ up_votes: number;
6490
+ down_votes: number;
6491
+ has_voted: boolean;
6492
+ constructor(record: EsolveCompetitionVoteRecord);
6493
+ }
6494
+
6182
6495
  declare class EsolveCompetitionWinner {
6183
6496
  /**
6184
6497
  * eSolve Generated ID
@@ -6252,6 +6565,18 @@ declare class EsolveCompetition {
6252
6565
  * Competition requires text submission
6253
6566
  */
6254
6567
  require_text: boolean;
6568
+ /**
6569
+ * Allow document (PDF/PPTX/DOCX) submissions
6570
+ */
6571
+ require_document: boolean;
6572
+ /**
6573
+ * Whether public voting on entries is enabled for this competition
6574
+ */
6575
+ enable_voting: boolean;
6576
+ /**
6577
+ * Whether new entries require moderator approval before they appear
6578
+ */
6579
+ require_approval: boolean;
6255
6580
  /**
6256
6581
  * List of competition winners
6257
6582
  */
@@ -6260,6 +6585,10 @@ declare class EsolveCompetition {
6260
6585
  * Display a count down timer
6261
6586
  */
6262
6587
  display_timer: boolean;
6588
+ /**
6589
+ * Public competition statistics (entries and votes)
6590
+ */
6591
+ stats: EsolveCompetitionStats;
6263
6592
  constructor(record?: Partial<EsolveCompetitionRecord>);
6264
6593
  }
6265
6594
 
@@ -6303,6 +6632,25 @@ declare class EsolveCompetitionsService {
6303
6632
  * @returns an Observable of type EsolveCompetitionEntryResult
6304
6633
  */
6305
6634
  setCompetitionEntry(competitions_id: number, form_data: FormData): Observable<EsolveCompetitionEntryResult>;
6635
+ /**
6636
+ * Retrieve a paginated list of approved entries for a competition.
6637
+ *
6638
+ * @param competitions_id - eSolve ID of the competition.
6639
+ * @param page - 1-based page number (optional).
6640
+ * @param rows - entries per page (optional).
6641
+ *
6642
+ * @returns an Observable of EsolveCompetitionEntry[].
6643
+ */
6644
+ getCompetitionEntries(competitions_id: number, page?: number, rows?: number): Observable<EsolveCompetitionEntry[]>;
6645
+ /**
6646
+ * Cast or retract a vote on a competition entry.
6647
+ *
6648
+ * @param competition_entry_id - UUID of the entry to vote on.
6649
+ * @param dowhat - `'up'` to upvote (default) or `'down'` to downvote.
6650
+ *
6651
+ * @returns an Observable of EsolveCompetitionVoteResult.
6652
+ */
6653
+ setCompetitionVote(competition_entry_id: string, dowhat?: 'up' | 'down'): Observable<EsolveCompetitionVoteResult>;
6306
6654
  private getCompetitionSingle;
6307
6655
  private getCompetitionRecords;
6308
6656
  private processCompetition;
@@ -7019,5 +7367,221 @@ declare class EsolveSettingsService {
7019
7367
  static ɵprov: i0.ɵɵInjectableDeclaration<EsolveSettingsService>;
7020
7368
  }
7021
7369
 
7022
- export { ESOLVE_CONNECT_CONFIG, ESOLVE_EURUS_AUTO_LOGIN, EsolveAccountConfirmationResult, EsolveAccountPayment, EsolveAccountService, EsolveAdditionalStockImage, EsolveAddress, EsolveAddressResult, EsolveAffiliate, EsolveAffiliateCheckResult, EsolveAffiliateLinkResult, EsolveAffiliateService, EsolveAlbum, EsolveAlbumImage, EsolveAlbumImageList, EsolveAlbumList, EsolveAlbumsService, EsolveAsset, EsolveAssetsService, EsolveAuthService, EsolveBankingDetails, EsolveBanner, EsolveBannerImage, EsolveBannerImageHotspot, EsolveBannerService, EsolveBannerVideo, EsolveCaptcha, EsolveCaptchaService, EsolveCareer, EsolveCareersService, EsolveCartAlternative, EsolveCartErrorHandlerService, EsolveCartItem, EsolveCartItemError, EsolveCartPromotionProgressItem, EsolveCartPromotionProgressQualifyingItem, EsolveCartService, EsolveCartStockItem, EsolveCartTaxBreakdown, EsolveCartTotals, EsolveCategoryTreeItem, EsolveCategoryTreeService, EsolveCdnSrcDirective, EsolveChangePasswordResult, EsolveCheckoutResult, EsolveClientAsset, EsolveClientAssetList, EsolveColour, EsolveColoursService, EsolveCompetition, EsolveCompetitionDates, EsolveCompetitionEntryResult, EsolveCompetitionWinner, EsolveCompetitionsService, EsolveConfigService, EsolveCookieService, EsolveCountry, EsolveCountryService, EsolveCoupon, EsolveCouponsService, EsolveDeliveriesService, EsolveDelivery, EsolveDeliveryCategoryTotals, EsolveDeliveryList, EsolveDeliveryStatus, EsolveDependantItem, EsolveDeviceService, EsolveEmptyCartResult, EsolveEmptyWishlistResult, EsolveEnquiryResult, EsolveEnquiryService, EsolveErpDocumentRequest, EsolveErpDocumentsRequestResult, EsolveErrorHandlerService, EsolveEvent, EsolveEventTargetService, EsolveEventType, EsolveFilterFactory, EsolveGenericFilter, EsolveGeocodeAddressResult, EsolveGeocodeCoordsResult, EsolveGeocodeResult, EsolveGeocoderService, EsolveHttpError, EsolveLinkedAsset, EsolveLinkedStockItem, EsolveList, EsolveLocation, EsolveLocationAddress, EsolveLocationContactInfo, EsolveLocationGEO, EsolveLocationList, EsolveLocationPOBoxAddress, EsolveLocationTradingDay, EsolveLocationTradingTimes, EsolveLocationUpdateResult, EsolveLocationsService, EsolveManufacturer, EsolveManufacturersService, EsolveMaterial, EsolveMaterialsService, EsolveMediaStockItem, EsolveMenuItem, EsolveMenuService, EsolveMultipleSelectFilter, EsolveNewsArticle, EsolveNewsArticleAuthor, EsolveNewsArticleList, EsolveNewsGroup, EsolveNewsService, EsolveNewsletterResult, EsolveNotificationButtonAction, EsolveNotificationDates, EsolveNotificationsService, EsolveOtp, EsolveOtpService, EsolveOtpValidation, EsolvePaymentMethod, EsolvePaymentResult, EsolvePaymentService, EsolveRange, EsolveRangeFilter, EsolveRangesService, EsolveRecipeStockItem, EsolveRegistrationResult, EsolveResetPasswordResult, EsolveResponseHandlerService, EsolveResponseResult, EsolveResult, EsolveReview, EsolveReviewList, EsolveReviewResult, EsolveReviewsService, EsolveSearchCleanResult, EsolveSearchResult, EsolveSearchResultItem, EsolveSearchService, EsolveSearchVectorizeResult, EsolveSeoInfo, EsolveSeoService, EsolveSessionAddressUpdateResult, EsolveSessionClientUpdateResult, EsolveSessionMetadataService, EsolveSessionService, EsolveSessionShippingUpdateResult, EsolveSetDeviceResult, EsolveSetNotifyResult, EsolveSettings, EsolveSettingsService, EsolveShippingCost, EsolveShippingCostItem, EsolveShippingMethod, EsolveShippingService, EsolveShippingTotals, EsolveSingleSelectFilter, EsolveSpecial, EsolveSpecialDates, EsolveSpecialImage, EsolveSpecialImageCollection, EsolveSpecialsService, EsolveStatement, EsolveStatementAgeing, EsolveStatementBalances, EsolveStatementTransaction, EsolveStockBadge, EsolveStockBarcode, EsolveStockGroup, EsolveStockGroupItem, EsolveStockImage, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemBase, EsolveStockItemList, EsolveStockItemLocationLevel, EsolveStockLeadTimes, EsolveStockLinkedCategory, EsolveStockPrice, EsolveStockReviewsReport, EsolveStockService, EsolveStockTransactionSales, EsolveSuggestedStockItem, EsolveSupplier, EsolveSuppliersService, EsolveSystemNotification, EsolveSystemNotificationType, EsolveTag, EsolveTagsService, EsolveTimeSlot, EsolveTimeSlotConfig, EsolveTimeSlotDate, EsolveTimeSlotDays, EsolveTimeSlotTimes, EsolveToggleFilter, EsolveTopic, EsolveTopicService, EsolveTransaction, EsolveTransactionAddress, EsolveTransactionAnalyticsData, EsolveTransactionApprovalResult, EsolveTransactionClient, EsolveTransactionDelivery, EsolveTransactionItem, EsolveTransactionItemPrice, EsolveTransactionList, EsolveTransactionLocation, EsolveTransactionPaymentMethod, EsolveTransactionPick, EsolveTransactionShippingMethod, EsolveTransactionTimeSlot, EsolveTransactionUser, EsolveTransactionsService, EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact, EsolveUserAccountResult, EsolveUserClientAccount, EsolveUserClientAccountBalances, EsolveUserDevice, EsolveVaultItem, EsolveVaultItemResult, EsolveVoucher, EsolveVouchersService, EsolveWalletBalances, EsolveWalletService, EsolveWalletTransaction, EsolveWalletTransactionsList, EsolveWishlistItem, EsolveWishlistService, NgEsolveConnectModule, esolveAuthInterceptor, esolveHexHash, esolveUnauthorizedErrorInterceptor, isEsolveCdnPath, isFtgCdnPath, isLegacyEsolveCdnPath, processEsolveImageSrc, provideEsolveImageLoader, provideNgEsolveConnect };
7023
- export type { EsolveAccountConfirmationPostResponseItem, EsolveAccountPaymentRecord, EsolveAccountPaymentsOptions, EsolveAdditionalStockImageRecord, EsolveAdditionalWhere, EsolveAddressPlaceType, EsolveAddressPostData, EsolveAddressRecord, EsolveAddressResponse, EsolveAddressType, EsolveAffiliateCheckRecord, EsolveAffiliateLinkOptions, EsolveAffiliateLinkResponse, EsolveAffiliateRecord, EsolveAffiliatesOptions, EsolveAlbumImageOptions, EsolveAlbumImageRecord, EsolveAlbumImageSize, EsolveAlbumOptions, EsolveAlbumRecord, EsolveAssetList, EsolveAssetOptions, EsolveAssetRecord, EsolveAssetType, EsolveAuthCheckData, EsolveAuthCheckResponse, EsolveAuthData, EsolveAuthGetData, EsolveAuthGetResponse, EsolveAuthResponse, EsolveAuthResponseData, EsolveAuthResult, EsolveBannerImageHotspotCoords, EsolveBannerImageHotspotRecord, EsolveBannerImageRecord, EsolveBannerImageSet, EsolveBannerImageType, EsolveBannerLink, EsolveBannerRecord, EsolveBannerType, EsolveBannerVideoRecord, EsolveCaptchaAction, EsolveCaptchaOptions, EsolveCaptchaRecord, EsolveCardData, EsolveCareerOptions, EsolveCareerRecord, EsolveCareerType, EsolveCareersSortField, EsolveCart, EsolveCartAdditionalParams, EsolveCartAlternativeRecord, EsolveCartAlternativesMap, EsolveCartEmptyResponse, EsolveCartErrors, EsolveCartItemErrorRecord, EsolveCartItemErrors, EsolveCartItemRecord, EsolveCartItemResponse, EsolveCartPromotionProgress, EsolveCartPromotionProgressDiscountType, EsolveCartPromotionProgressItemType, EsolveCartPromotionProgressMode, EsolveCartPromotionProgressQualifyingItemRecord, EsolveCartPromotionProgressRecord, EsolveCartSetAction, EsolveCartSetItem, EsolveCartTotalsRecord, EsolveCategoryIdentifier, EsolveCategoryRecord, EsolveCategoryTreeItemOptions, EsolveCategoryTreeItemRecord, EsolveCheckoutBody, EsolveCheckoutResponse, EsolveClientAssetRecord, EsolveClientAssetsOptions, EsolveColourOptions, EsolveColourRecord, EsolveCompetitionOptions, EsolveCompetitionRecord, EsolveCompetitionWinnerRecord, EsolveConnectConfig, EsolveCookieOptions, EsolveCountryOptions, EsolveCountryRecord, EsolveCouponRecord, EsolveCouponValidation, EsolveCouponValidationError, EsolveCouponValidationResult, EsolveCouponsCache, EsolveCustomFields, EsolveDeleteResponse, EsolveDeleteResult, EsolveDeliveriesOptions, EsolveDeliveriesSortField, EsolveDeliveryCategoryTotalsMap, EsolveDeliveryCategoryTotalsMapRecord, EsolveDeliveryCategoryTotalsRecord, EsolveDeliveryIntegration, EsolveDeliveryRecord, EsolveDeliveryStatusRecord, EsolveDeliveryStatusType, EsolveDeliveryType, EsolveDependantItemRecord, EsolveDevice, EsolveDeviceType, EsolveEnquiryResponse, EsolveErpDocumentRequestRecord, EsolveErpSalesStockSortField, EsolveEventRecord, EsolveFilter, EsolveFilterDefinitions, EsolveFilterList, EsolveFilterRecord, EsolveFilterRecordList, EsolveFilterType, EsolveForgotPasswordGetResult, EsolveForgotPasswordResponse, EsolveGenericFilterDefinition, EsolveGeocodeAddressRecord, EsolveGeocodeResponse, EsolveGeocodeResultRecord, EsolveGetResponse, EsolveInsuranceCalculationMethod, EsolveIntegrationType, EsolveLinkedAssetRecord, EsolveLinkedStockRecord, EsolveLocationFilterOptions, EsolveLocationGeoOptions, EsolveLocationImageSize, EsolveLocationOption, EsolveLocationOptions, EsolveLocationRecord, EsolveLocationSortField, EsolveLoginPostResponseItem, EsolveLoginResponse, EsolveLogoutResponse, EsolveManufacturerImageSize, EsolveManufacturerOptions, EsolveManufacturerRecord, EsolveMaterialOptions, EsolveMaterialPhraseMatchMode, EsolveMaterialRecord, EsolveMediaAssetOptions, EsolveMediaStockItemList, EsolveMediaStockItemOptions, EsolveMediaStockItemRecord, EsolveMediaStockSortField, EsolveMenu, EsolveMenuTreeRecord, EsolveNewsArticleAuthorRecord, EsolveNewsArticleOptions, EsolveNewsArticleRecord, EsolveNewsGroupRecord, EsolveNewsletterResponse, EsolveNotificationButtonActionRecord, EsolveNotificationDateRecord, EsolveNotificationDatesRecord, EsolveNotificationPosition, EsolveNotificationSize, EsolveNotificationType, EsolveOtpAction, EsolveOtpOptions, EsolveOtpRecord, EsolveOtpValidationRecord, EsolvePaymentFormInput, EsolvePaymentMethodOptions, EsolvePaymentMethodRecord, EsolvePaymentRedirectLinks, EsolvePaymentResponse, EsolvePaymentSetBody, EsolvePaymentStatus, EsolvePickStatusType, EsolvePostResponseItem, EsolvePostResponseStatus, EsolveRangeFilterDefinition, EsolveRangeFilterRecord, EsolveRangeFilterType, EsolveRangeOptions, EsolveRangeRecord, EsolveRecipeItemRecord, EsolveRecipeStockOptions, EsolveRegistrationData, EsolveRegistrationPostResponseItem, EsolveResponse, EsolveResponseLogItem, EsolveReviewListRecord, EsolveReviewOptions, EsolveReviewRecord, EsolveReviewReport, EsolveReviewResponse, EsolveReviewSortField, EsolveReviewUser, EsolveSearchAuthStatus, EsolveSearchAuthStatusType, EsolveSearchBillingRequest, EsolveSearchBillingResponse, EsolveSearchBillingTotal, EsolveSearchCleanResponse, EsolveSearchRequest, EsolveSearchResponse, EsolveSearchResultRecord, EsolveSearchVectorizeGetRequest, EsolveSearchVectorizeGetResponse, EsolveSearchVectorizeItem, EsolveSearchVectorizeRequest, EsolveSearchVectorizeResponse, EsolveSelectFilter, EsolveSelectFilterRecord, EsolveSelectFilterType, EsolveSeoDetails, EsolveServiceProvider, EsolveSession, EsolveSessionData, EsolveSessionUpdateOptions, EsolveSetResponse, EsolveSettingsRecord, EsolveShippingCalculationMethod, EsolveShippingCostItemRecord, EsolveShippingCostRecord, EsolveShippingLocation, EsolveShippingMethodOptions, EsolveShippingMethodRecord, EsolveSort, EsolveSortOrder, EsolveSpecialImageCollectionRecord, EsolveSpecialImageRecord, EsolveSpecialOptions, EsolveSpecialRecord, EsolveStatementAgeingRecord, EsolveStatementBalancesRecord, EsolveStatementRecord, EsolveStatementTransactionRecord, EsolveStockAssetOptions, EsolveStockBadgeRecord, EsolveStockBarcodeOptions, EsolveStockBarcodeRecord, EsolveStockBaseRecord, EsolveStockCartParameter, EsolveStockCartParameterInput, EsolveStockFilterOptions, EsolveStockGroupItemRecord, EsolveStockHistorySortField, EsolveStockImageCollectionRecord, EsolveStockImageSize, EsolveStockItemBaseOptions, EsolveStockItemHistoryOptions, EsolveStockItemLocationLevelRecord, EsolveStockItemOptions, EsolveStockLeadTimesRecord, EsolveStockLinkedCategoryRecord, EsolveStockRecord, EsolveStockReviewsReportRecord, EsolveStockSortField, EsolveStockType, EsolveStockUnitOfMeasure, EsolveSubcategoryRecord, EsolveSupplierOptions, EsolveSupplierRecord, EsolveSystemNotificationOptions, EsolveSystemNotificationRecord, EsolveSystemNotificationTypeRecord, EsolveTagOptions, EsolveTagPhraseMatchMode, EsolveTagRecord, EsolveTimeSlotCheckout, EsolveTimeSlotConfigRecord, EsolveTimeSlotDateRecord, EsolveTimeSlotDaysRecord, EsolveTimeSlotRecord, EsolveTimeSlotTimesRecord, EsolveToggleFilterType, EsolveTopicRecord, EsolveTrackingCode, EsolveTranactionApproval, EsolveTransactionAnalyticsDataRecord, EsolveTransactionApprovalState, EsolveTransactionClientRecord, EsolveTransactionItemRecord, EsolveTransactionLocationRecord, EsolveTransactionOptions, EsolveTransactionPaymentMethodRecord, EsolveTransactionRecord, EsolveTransactionSalesStockItemOptions, EsolveTransactionShippingMethodRecord, EsolveTransactionSortField, EsolveTransactionTimeSlotRecord, EsolveTransactionType, EsolveTransactionUserRecord, EsolveUrlTarget, EsolveUserAccountData, EsolveUserAccountRecord, EsolveUserClientAccountBalancesRecord, EsolveUserClientAccountRecord, EsolveUserDeviceOptions, EsolveUserDeviceRecord, EsolveValidateOtpResponse, EsolveVaultRecord, EsolveVaultResponse, EsolveVoucherRecord, EsolveVoucherValidation, EsolveVoucherValidationError, EsolveVoucherValidationResult, EsolveVouchersCache, EsolveWalletBalancesRecord, EsolveWalletCashOutOptions, EsolveWalletCashOutResponse, EsolveWalletTransactionOptions, EsolveWalletTransactionRecord, EsolveWalletTransactionType, EsolveWishlist, EsolveWishlistItemRecord, EsolveWishlistItemResponse, EsolveWishlistSetAction, EsolveWishlistSetItem };
7370
+ /**
7371
+ * Suggestion-chip intents the frontend handles locally with no server call.
7372
+ * The server emits these in `suggestions[].intent`; they never appear in the
7373
+ * top-level response `intent` and are never sent back to `set-chat-intent.php`.
7374
+ */
7375
+ type EsolveChatClientActionIntent = 'view_cart' | 'checkout';
7376
+
7377
+ type EsolveChatDisplayHint = 'grid' | 'multi_grid' | 'list' | 'map' | 'text';
7378
+
7379
+ type EsolveChatIntent = 'product_search' | 'product_catalog' | 'add_to_basket' | 'directions' | 'list_brands' | 'general';
7380
+
7381
+ type EsolveChatIntentRequest = EsolveChatIntentMessageRequest | EsolveChatIntentDispatchRequest;
7382
+
7383
+ /**
7384
+ * "View more" target for a `product_catalog` group, resolved server-side
7385
+ * from the AI's guessed `filters` (`category`/`subcategory`/`brand`/`tag`)
7386
+ * against the store's real taxonomy — see
7387
+ * `ChatIntentDispatcher::resolveGroupLink()` on the esolve side. `null` when
7388
+ * no filter dimension resolved to a real record; the group still renders,
7389
+ * it just has no "View more" link.
7390
+ *
7391
+ * `type` selects which storefront route to build:
7392
+ * - `category`: `/category/:sef`
7393
+ * - `subcategory`: `/category/:parent_sef/subcategory/:sef`
7394
+ * - `brand`: `/brands/:sef`
7395
+ * - `tag`: `/search/tag/:phrase`
7396
+ *
7397
+ * `topic` is intentionally not included — the server does not currently
7398
+ * resolve topic filters to a link (no reliable sef/slug to route to).
7399
+ */
7400
+ type EsolveChatProductGroupLinkRecord = {
7401
+ type: 'category';
7402
+ sef: string;
7403
+ } | {
7404
+ type: 'subcategory';
7405
+ sef: string;
7406
+ parent_sef: string;
7407
+ } | {
7408
+ type: 'brand';
7409
+ sef: string;
7410
+ } | {
7411
+ type: 'tag';
7412
+ phrase: string;
7413
+ };
7414
+
7415
+ /** The `intent` on a suggestion chip — a server intent (dispatch) or a client-action intent (local). */
7416
+ type EsolveChatSuggestionIntent = EsolveChatIntent | EsolveChatClientActionIntent;
7417
+
7418
+ interface EsolveChatMessage {
7419
+ role: 'user' | 'assistant';
7420
+ content: string;
7421
+ }
7422
+
7423
+ /** Structured chip tap — direct dispatch, no AI round trip. */
7424
+ interface EsolveChatIntentDispatchRequest {
7425
+ /** One of the 5 server intents. Client-action intents are never sent here. */
7426
+ intent: EsolveChatIntent;
7427
+ parameters: Record<string, unknown>;
7428
+ history?: EsolveChatMessage[];
7429
+ /** Chip phrase recorded as the user turn in history. Falls back to parameters.query server-side. */
7430
+ phrase?: string;
7431
+ }
7432
+
7433
+ /** Free-text message — AI classification. */
7434
+ interface EsolveChatIntentMessageRequest {
7435
+ message: string;
7436
+ history: EsolveChatMessage[];
7437
+ context?: string;
7438
+ }
7439
+
7440
+ /**
7441
+ * Raw `{label, items, link}` group shape the `product_catalog` intent
7442
+ * returns in `data` (`display_hint: 'multi_grid'`) — one group per
7443
+ * `parameters.groups` entry the AI resolved a search for. `items` is the
7444
+ * same raw `'lite'` field-set stock row shape `product_search`/
7445
+ * `get-items.php` return; never a bespoke chat-only shape.
7446
+ */
7447
+ interface EsolveChatProductGroupRecord {
7448
+ /** Group heading (e.g. a category or theme name). Empty string when the server had no label to give — e.g. the legacy single-query fallback. */
7449
+ label: string;
7450
+ items: Partial<EsolveStockBaseRecord>[];
7451
+ /** "View more" target resolved from this group's filters, or `null` when none of them matched a real category/subcategory/brand/tag. */
7452
+ link: EsolveChatProductGroupLinkRecord | null;
7453
+ }
7454
+
7455
+ /**
7456
+ * One quick-reply chip offered after an assistant turn. `intent` is the
7457
+ * routing key — server intents are tapped via
7458
+ * {@link EsolveChatService.dispatchIntent} (no AI round trip); client-action
7459
+ * intents (`view_cart`, `checkout`) are mapped locally by the consumer with
7460
+ * no server call. `query` is the free-text fallback, always present.
7461
+ */
7462
+ interface EsolveChatSuggestion {
7463
+ /** Short text to show on the chip. */
7464
+ label: string;
7465
+ /** Routing key: a server intent (dispatch) or a client-action intent (local). */
7466
+ intent: EsolveChatSuggestionIntent;
7467
+ /** Intent parameters for structured routing. Empty for client-action chips. */
7468
+ parameters: Record<string, unknown>;
7469
+ /** Free-text fallback message; always present. */
7470
+ query: string;
7471
+ }
7472
+
7473
+ /**
7474
+ * `data` is whatever raw row shape the matched intent's action already
7475
+ * returns server-side — the same `Partial<EsolveStockBaseRecord>`,
7476
+ * `EsolveLocationRecord`, or `Partial<EsolveManufacturerRecord>` shape the
7477
+ * rest of the app builds from `get-items.php` / `get-locations.php` /
7478
+ * `get-manufacturers.php` — never a bespoke chat-only shape. The one
7479
+ * exception is `product_catalog`, whose rows are already grouped
7480
+ * server-side (`{label, items}[]`, `display_hint: 'multi_grid'`) since a
7481
+ * single flat item list can't represent multiple labelled grids.
7482
+ */
7483
+ interface EsolveChatIntentResponse {
7484
+ intent: EsolveChatIntent;
7485
+ parameters: Record<string, unknown>;
7486
+ reply: string;
7487
+ history: EsolveChatMessage[];
7488
+ data: Partial<EsolveStockBaseRecord>[] | EsolveLocationRecord[] | Partial<EsolveManufacturerRecord>[] | EsolveChatProductGroupRecord[] | [];
7489
+ context: string;
7490
+ display_hint: EsolveChatDisplayHint;
7491
+ suggestions: EsolveChatSuggestion[];
7492
+ }
7493
+
7494
+ /**
7495
+ * One labelled product grid within a `product_catalog` (`multi_grid`) chat
7496
+ * result — e.g. "Under R500", "Best sellers". `items` are built the same way
7497
+ * `EsolveChatIntentResult.items` builds `product_search` results, just
7498
+ * grouped under a label instead of a single flat list. `link` is an optional
7499
+ * "View more" target the consumer can build a route from — `null` when the
7500
+ * server couldn't resolve any of this group's filters to a real
7501
+ * category/subcategory/brand/tag.
7502
+ */
7503
+ declare class EsolveChatProductGroup {
7504
+ label: string;
7505
+ items: EsolveStockItemBase[];
7506
+ link: EsolveChatProductGroupLinkRecord | null;
7507
+ constructor(record: EsolveChatProductGroupRecord);
7508
+ }
7509
+
7510
+ declare class EsolveChatIntentResult {
7511
+ intent: EsolveChatIntent;
7512
+ parameters: Record<string, unknown>;
7513
+ reply: string;
7514
+ history: EsolveChatMessage[];
7515
+ /**
7516
+ * Raw `'lite'` field-set stock rows — the same shape and model
7517
+ * `get-items.php` results use elsewhere in the app — rather than a
7518
+ * bespoke chat-only item shape. The full StockSearch already runs
7519
+ * server-side regardless, so there's nothing cheaper to build a
7520
+ * duplicate model from.
7521
+ *
7522
+ * Populated for `product_search` and `add_to_basket` only. `product_catalog`
7523
+ * results come back grouped — see {@link groups} — since a flat item list
7524
+ * can't represent multiple labelled grids.
7525
+ */
7526
+ items: EsolveStockItemBase[];
7527
+ /**
7528
+ * Labelled product grids for the `product_catalog` intent
7529
+ * (`display_hint: 'multi_grid'`) — one StockSearch per group, run
7530
+ * server-side. Empty for every other intent.
7531
+ */
7532
+ groups: EsolveChatProductGroup[];
7533
+ /** Raw location rows, same shape/model `get-locations.php` results use. */
7534
+ locations: EsolveLocation[];
7535
+ /** Raw manufacturer rows, same shape/model `get-manufacturers.php` results use. */
7536
+ brands: EsolveManufacturer[];
7537
+ /** Pass back as `context` on the next {@link EsolveChatService.sendMessage} call. Empty string when there are no results. */
7538
+ context: string;
7539
+ /** UI rendering hint from the server: `'grid'`, `'multi_grid'`, `'list'`, `'map'`, or `'text'`. */
7540
+ display_hint: EsolveChatDisplayHint;
7541
+ /** Up to 3 quick-reply chips to show after this turn. */
7542
+ suggestions: EsolveChatSuggestion[];
7543
+ constructor(response: EsolveChatIntentResponse);
7544
+ }
7545
+
7546
+ declare class EsolveChatService {
7547
+ private readonly http;
7548
+ private readonly config;
7549
+ private readonly errorHandler;
7550
+ /**
7551
+ * Send a free-text message to the chat assistant (AI classification).
7552
+ *
7553
+ * The caller is responsible for persisting `result.history` and
7554
+ * `result.context` between turns and passing them back on the next call.
7555
+ * The server caps history at 50 messages and summarises automatically.
7556
+ *
7557
+ * @param message The user's message (max 1024 chars; truncated server-side).
7558
+ * @param history History from the previous `EsolveChatIntentResult.history`.
7559
+ * Pass an empty array to start a new conversation.
7560
+ * @param context Pass back `EsolveChatIntentResult.context` from the previous
7561
+ * turn so the AI can answer follow-up questions about results
7562
+ * currently shown on screen. Omit or pass `null` / `''` when
7563
+ * there are no current results. Never stored in history.
7564
+ */
7565
+ sendMessage(message: string, history?: EsolveChatIntentMessageRequest['history'], context?: string): Observable<EsolveChatIntentResult>;
7566
+ /**
7567
+ * Dispatch a structured suggestion-chip tap directly — no AI round trip.
7568
+ *
7569
+ * Use this when the consumer taps a chip whose `intent` is a server intent
7570
+ * (`product_search`, `product_catalog`, `add_to_basket`, `directions`,
7571
+ * `list_brands`). Client-action intents (`view_cart`, `checkout`) are handled
7572
+ * locally by the consumer and never reach this method.
7573
+ *
7574
+ * @param intent One of the 5 server intents.
7575
+ * @param parameters The chip's `parameters` (sent back verbatim).
7576
+ * @param history History from the previous `EsolveChatIntentResult.history`.
7577
+ * @param phrase The chip's phrase, recorded as the user turn in history.
7578
+ * Omit to let the server fall back to `parameters.query`.
7579
+ */
7580
+ dispatchIntent(intent: EsolveChatIntent, parameters: Record<string, unknown>, history?: EsolveChatIntentDispatchRequest['history'], phrase?: string): Observable<EsolveChatIntentResult>;
7581
+ private post;
7582
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsolveChatService, never>;
7583
+ static ɵprov: i0.ɵɵInjectableDeclaration<EsolveChatService>;
7584
+ }
7585
+
7586
+ export { ESOLVE_CONNECT_CONFIG, ESOLVE_EURUS_AUTO_LOGIN, EsolveAccountConfirmationResult, EsolveAccountPayment, EsolveAccountService, EsolveAdditionalStockImage, EsolveAddress, EsolveAddressResult, EsolveAffiliate, EsolveAffiliateCheckResult, EsolveAffiliateLinkResult, EsolveAffiliateService, EsolveAlbum, EsolveAlbumImage, EsolveAlbumImageList, EsolveAlbumList, EsolveAlbumsService, EsolveAsset, EsolveAssetsService, EsolveAuthService, EsolveBankingDetails, EsolveBanner, EsolveBannerImage, EsolveBannerImageHotspot, EsolveBannerService, EsolveBannerVideo, EsolveCaptcha, EsolveCaptchaService, EsolveCareer, EsolveCareersService, EsolveCartAlternative, EsolveCartErrorHandlerService, EsolveCartItem, EsolveCartItemError, EsolveCartPromotionProgressItem, EsolveCartPromotionProgressQualifyingItem, EsolveCartService, EsolveCartStockItem, EsolveCartTaxBreakdown, EsolveCartTotals, EsolveCategoryTreeItem, EsolveCategoryTreeService, EsolveCdnSrcDirective, EsolveChangePasswordResult, EsolveChatIntentResult, EsolveChatProductGroup, EsolveChatService, EsolveCheckoutResult, EsolveClientAsset, EsolveClientAssetList, EsolveColour, EsolveColoursService, EsolveCompetition, EsolveCompetitionDates, EsolveCompetitionEntry, EsolveCompetitionEntryResult, EsolveCompetitionStats, EsolveCompetitionVoteResult, EsolveCompetitionWinner, EsolveCompetitionsService, EsolveConfigService, EsolveCookieService, EsolveCountry, EsolveCountryService, EsolveCoupon, EsolveCouponsService, EsolveDeliveriesService, EsolveDelivery, EsolveDeliveryCategoryTotals, EsolveDeliveryList, EsolveDeliveryStatus, EsolveDependantItem, EsolveDeviceService, EsolveEmptyCartResult, EsolveEmptyWishlistResult, EsolveEnquiryForm, EsolveEnquiryFormField, EsolveEnquiryFormSubmissionResult, EsolveEnquiryFormsService, EsolveEnquiryResult, EsolveEnquiryService, EsolveErpDocumentRequest, EsolveErpDocumentsRequestResult, EsolveErrorHandlerService, EsolveEvent, EsolveEventTargetService, EsolveEventType, EsolveFilterFactory, EsolveGenericFilter, EsolveGeocodeAddressResult, EsolveGeocodeCoordsResult, EsolveGeocodeResult, EsolveGeocoderService, EsolveHttpError, EsolveLinkedAsset, EsolveLinkedStockItem, EsolveList, EsolveLocation, EsolveLocationAddress, EsolveLocationContactInfo, EsolveLocationGEO, EsolveLocationList, EsolveLocationPOBoxAddress, EsolveLocationTradingDay, EsolveLocationTradingTimes, EsolveLocationUpdateResult, EsolveLocationsService, EsolveManufacturer, EsolveManufacturersService, EsolveMaterial, EsolveMaterialsService, EsolveMediaStockItem, EsolveMenuItem, EsolveMenuService, EsolveMultipleSelectFilter, EsolveNewsArticle, EsolveNewsArticleAuthor, EsolveNewsArticleList, EsolveNewsGroup, EsolveNewsService, EsolveNewsletterResult, EsolveNotificationButtonAction, EsolveNotificationDates, EsolveNotificationsService, EsolveOtp, EsolveOtpService, EsolveOtpValidation, EsolvePaymentMethod, EsolvePaymentResult, EsolvePaymentService, EsolveRange, EsolveRangeFilter, EsolveRangesService, EsolveRecipeStockItem, EsolveRegistrationResult, EsolveResetPasswordResult, EsolveResponseHandlerService, EsolveResponseResult, EsolveResult, EsolveReview, EsolveReviewList, EsolveReviewResult, EsolveReviewsService, EsolveSearchCleanResult, EsolveSearchResult, EsolveSearchResultItem, EsolveSearchService, EsolveSearchVectorizeResult, EsolveSeoInfo, EsolveSeoService, EsolveSessionAddressUpdateResult, EsolveSessionClientUpdateResult, EsolveSessionMetadataService, EsolveSessionService, EsolveSessionShippingUpdateResult, EsolveSetDeviceResult, EsolveSetNotifyResult, EsolveSettings, EsolveSettingsService, EsolveShippingCost, EsolveShippingCostItem, EsolveShippingMethod, EsolveShippingService, EsolveShippingTotals, EsolveSingleSelectFilter, EsolveSpecial, EsolveSpecialDates, EsolveSpecialImage, EsolveSpecialImageCollection, EsolveSpecialsService, EsolveStatement, EsolveStatementAgeing, EsolveStatementBalances, EsolveStatementTransaction, EsolveStockBadge, EsolveStockBarcode, EsolveStockGroup, EsolveStockGroupItem, EsolveStockImage, EsolveStockImageCollection, EsolveStockItem, EsolveStockItemBase, EsolveStockItemList, EsolveStockItemLocationLevel, EsolveStockLeadTimes, EsolveStockLinkedCategory, EsolveStockPrice, EsolveStockReviewsReport, EsolveStockService, EsolveStockTransactionSales, EsolveSuggestedStockItem, EsolveSupplier, EsolveSuppliersService, EsolveSystemNotification, EsolveSystemNotificationType, EsolveTag, EsolveTagsService, EsolveTimeSlot, EsolveTimeSlotConfig, EsolveTimeSlotDate, EsolveTimeSlotDays, EsolveTimeSlotTimes, EsolveToggleFilter, EsolveTopic, EsolveTopicService, EsolveTransaction, EsolveTransactionAddress, EsolveTransactionAnalyticsData, EsolveTransactionApprovalResult, EsolveTransactionClient, EsolveTransactionDelivery, EsolveTransactionItem, EsolveTransactionItemPrice, EsolveTransactionList, EsolveTransactionLocation, EsolveTransactionPaymentMethod, EsolveTransactionPick, EsolveTransactionShippingMethod, EsolveTransactionTimeSlot, EsolveTransactionUser, EsolveTransactionsService, EsolveUserAccount, EsolveUserAccountBusiness, EsolveUserAccountContact, EsolveUserAccountResult, EsolveUserClientAccount, EsolveUserClientAccountBalances, EsolveUserDevice, EsolveVaultItem, EsolveVaultItemResult, EsolveVoucher, EsolveVouchersService, EsolveWalletBalances, EsolveWalletService, EsolveWalletTransaction, EsolveWalletTransactionsList, EsolveWishlistItem, EsolveWishlistService, NgEsolveConnectModule, esolveAuthInterceptor, esolveHexHash, esolveUnauthorizedErrorInterceptor, isEsolveCdnPath, isFtgCdnPath, isLegacyEsolveCdnPath, processEsolveImageSrc, provideEsolveImageLoader, provideNgEsolveConnect };
7587
+ export type { EsolveAccountConfirmationPostResponseItem, EsolveAccountPaymentRecord, EsolveAccountPaymentsOptions, EsolveAdditionalStockImageRecord, EsolveAdditionalWhere, EsolveAddressPlaceType, EsolveAddressPostData, EsolveAddressRecord, EsolveAddressResponse, EsolveAddressType, EsolveAffiliateCheckRecord, EsolveAffiliateLinkOptions, EsolveAffiliateLinkResponse, EsolveAffiliateRecord, EsolveAffiliatesOptions, EsolveAlbumImageOptions, EsolveAlbumImageRecord, EsolveAlbumImageSize, EsolveAlbumOptions, EsolveAlbumRecord, EsolveAssetList, EsolveAssetOptions, EsolveAssetRecord, EsolveAssetType, EsolveAuthCheckData, EsolveAuthCheckResponse, EsolveAuthData, EsolveAuthGetData, EsolveAuthGetResponse, EsolveAuthResponse, EsolveAuthResponseData, EsolveAuthResult, EsolveBannerImageHotspotCoords, EsolveBannerImageHotspotRecord, EsolveBannerImageRecord, EsolveBannerImageSet, EsolveBannerImageType, EsolveBannerLink, EsolveBannerRecord, EsolveBannerType, EsolveBannerVideoRecord, EsolveCaptchaAction, EsolveCaptchaOptions, EsolveCaptchaRecord, EsolveCardData, EsolveCareerOptions, EsolveCareerRecord, EsolveCareerType, EsolveCareersSortField, EsolveCart, EsolveCartAdditionalParams, EsolveCartAlternativeRecord, EsolveCartAlternativesMap, EsolveCartEmptyResponse, EsolveCartErrors, EsolveCartItemErrorRecord, EsolveCartItemErrors, EsolveCartItemRecord, EsolveCartItemResponse, EsolveCartItemSortField, EsolveCartPromotionProgress, EsolveCartPromotionProgressDiscountType, EsolveCartPromotionProgressItemType, EsolveCartPromotionProgressMode, EsolveCartPromotionProgressQualifyingItemRecord, EsolveCartPromotionProgressRecord, EsolveCartSetAction, EsolveCartSetItem, EsolveCartTotalsRecord, EsolveCategoryIdentifier, EsolveCategoryRecord, EsolveCategoryTreeItemOptions, EsolveCategoryTreeItemRecord, EsolveChatClientActionIntent, EsolveChatDisplayHint, EsolveChatIntent, EsolveChatIntentDispatchRequest, EsolveChatIntentMessageRequest, EsolveChatIntentRequest, EsolveChatIntentResponse, EsolveChatMessage, EsolveChatProductGroupLinkRecord, EsolveChatProductGroupRecord, EsolveChatSuggestion, EsolveChatSuggestionIntent, EsolveCheckoutBody, EsolveCheckoutResponse, EsolveClientAssetRecord, EsolveClientAssetsOptions, EsolveColourOptions, EsolveColourRecord, EsolveCompetitionEntryRecord, EsolveCompetitionOptions, EsolveCompetitionRecord, EsolveCompetitionStatsRecord, EsolveCompetitionVoteRecord, EsolveCompetitionWinnerRecord, EsolveConnectConfig, EsolveCookieOptions, EsolveCountryOptions, EsolveCountryRecord, EsolveCouponRecord, EsolveCouponValidation, EsolveCouponValidationError, EsolveCouponValidationResult, EsolveCouponsCache, EsolveCustomFields, EsolveDeleteResponse, EsolveDeleteResult, EsolveDeliveriesOptions, EsolveDeliveriesSortField, EsolveDeliveryCategoryTotalsMap, EsolveDeliveryCategoryTotalsMapRecord, EsolveDeliveryCategoryTotalsRecord, EsolveDeliveryIntegration, EsolveDeliveryRecord, EsolveDeliveryStatusRecord, EsolveDeliveryStatusType, EsolveDeliveryType, EsolveDependantItemRecord, EsolveDevice, EsolveDeviceType, EsolveEnquiryFormFieldCheckboxRecord, EsolveEnquiryFormFieldFileRecord, EsolveEnquiryFormFieldHeadingRecord, EsolveEnquiryFormFieldRadioRecord, EsolveEnquiryFormFieldRecord, EsolveEnquiryFormFieldRecordBase, EsolveEnquiryFormFieldSelectRecord, EsolveEnquiryFormFieldTextRecord, EsolveEnquiryFormRecord, EsolveEnquiryFormSubmitHttpResponse, EsolveEnquiryFormSubmitResult, EsolveEnquiryResponse, EsolveErpDocumentRequestRecord, EsolveErpSalesStockSortField, EsolveEventRecord, EsolveFilter, EsolveFilterDefinitions, EsolveFilterList, EsolveFilterRecord, EsolveFilterRecordList, EsolveFilterType, EsolveForgotPasswordGetResult, EsolveForgotPasswordResponse, EsolveGenericFilterDefinition, EsolveGeocodeAddressRecord, EsolveGeocodeResponse, EsolveGeocodeResultRecord, EsolveGetResponse, EsolveInsuranceCalculationMethod, EsolveIntegrationType, EsolveLinkedAssetRecord, EsolveLinkedStockRecord, EsolveLocationFilterOptions, EsolveLocationGeoOptions, EsolveLocationImageSize, EsolveLocationOption, EsolveLocationOptions, EsolveLocationRecord, EsolveLocationSortField, EsolveLoginPostResponseItem, EsolveLoginResponse, EsolveLogoutResponse, EsolveManufacturerImageSize, EsolveManufacturerOptions, EsolveManufacturerRecord, EsolveMaterialOptions, EsolveMaterialPhraseMatchMode, EsolveMaterialRecord, EsolveMediaAssetOptions, EsolveMediaStockItemList, EsolveMediaStockItemOptions, EsolveMediaStockItemRecord, EsolveMediaStockSortField, EsolveMenu, EsolveMenuTreeRecord, EsolveNewsArticleAuthorRecord, EsolveNewsArticleOptions, EsolveNewsArticleRecord, EsolveNewsGroupRecord, EsolveNewsletterResponse, EsolveNotificationButtonActionRecord, EsolveNotificationDateRecord, EsolveNotificationDatesRecord, EsolveNotificationPosition, EsolveNotificationSize, EsolveNotificationType, EsolveOtpAction, EsolveOtpOptions, EsolveOtpRecord, EsolveOtpValidationRecord, EsolvePaymentFormInput, EsolvePaymentMethodOptions, EsolvePaymentMethodRecord, EsolvePaymentRedirectLinks, EsolvePaymentResponse, EsolvePaymentSetBody, EsolvePaymentStatus, EsolvePickStatusType, EsolvePostResponseItem, EsolvePostResponseStatus, EsolveRangeFilterDefinition, EsolveRangeFilterRecord, EsolveRangeFilterType, EsolveRangeOptions, EsolveRangeRecord, EsolveRecipeItemRecord, EsolveRecipeStockOptions, EsolveRegistrationData, EsolveRegistrationPostResponseItem, EsolveResponse, EsolveResponseLogItem, EsolveReviewListRecord, EsolveReviewOptions, EsolveReviewRecord, EsolveReviewReport, EsolveReviewResponse, EsolveReviewSortField, EsolveReviewUser, EsolveSearchAuthStatus, EsolveSearchAuthStatusType, EsolveSearchBillingRequest, EsolveSearchBillingResponse, EsolveSearchBillingTotal, EsolveSearchCleanResponse, EsolveSearchRequest, EsolveSearchResponse, EsolveSearchResultRecord, EsolveSearchVectorizeGetRequest, EsolveSearchVectorizeGetResponse, EsolveSearchVectorizeItem, EsolveSearchVectorizeRequest, EsolveSearchVectorizeResponse, EsolveSelectFilter, EsolveSelectFilterRecord, EsolveSelectFilterType, EsolveSeoDetails, EsolveServiceProvider, EsolveSession, EsolveSessionData, EsolveSessionUpdateOptions, EsolveSetResponse, EsolveSettingsRecord, EsolveShippingCalculationMethod, EsolveShippingCostItemRecord, EsolveShippingCostRecord, EsolveShippingLocation, EsolveShippingMethodOptions, EsolveShippingMethodRecord, EsolveSort, EsolveSortOrder, EsolveSpecialImageCollectionRecord, EsolveSpecialImageRecord, EsolveSpecialOptions, EsolveSpecialRecord, EsolveStatementAgeingRecord, EsolveStatementBalancesRecord, EsolveStatementRecord, EsolveStatementTransactionRecord, EsolveStockAssetOptions, EsolveStockBadgeRecord, EsolveStockBarcodeOptions, EsolveStockBarcodeRecord, EsolveStockBaseRecord, EsolveStockCartParameter, EsolveStockCartParameterInput, EsolveStockFieldSetOptions, EsolveStockFilterOptions, EsolveStockGroupItemRecord, EsolveStockHistorySortField, EsolveStockImageCollectionRecord, EsolveStockImageSize, EsolveStockItemBaseOptions, EsolveStockItemHistoryOptions, EsolveStockItemLocationLevelRecord, EsolveStockItemOptions, EsolveStockLeadTimesRecord, EsolveStockLinkedCategoryRecord, EsolveStockRecord, EsolveStockReviewsReportRecord, EsolveStockSortField, EsolveStockType, EsolveStockUnitOfMeasure, EsolveSubcategoryRecord, EsolveSupplierOptions, EsolveSupplierRecord, EsolveSystemNotificationOptions, EsolveSystemNotificationRecord, EsolveSystemNotificationTypeRecord, EsolveTagOptions, EsolveTagPhraseMatchMode, EsolveTagRecord, EsolveTimeSlotCheckout, EsolveTimeSlotConfigRecord, EsolveTimeSlotDateRecord, EsolveTimeSlotDaysRecord, EsolveTimeSlotRecord, EsolveTimeSlotTimesRecord, EsolveToggleFilterType, EsolveTopicRecord, EsolveTrackingCode, EsolveTranactionApproval, EsolveTransactionAnalyticsDataRecord, EsolveTransactionApprovalState, EsolveTransactionClientRecord, EsolveTransactionItemRecord, EsolveTransactionLocationRecord, EsolveTransactionOptions, EsolveTransactionPaymentMethodRecord, EsolveTransactionRecord, EsolveTransactionSalesStockItemOptions, EsolveTransactionShippingMethodRecord, EsolveTransactionSortField, EsolveTransactionTimeSlotRecord, EsolveTransactionType, EsolveTransactionUserRecord, EsolveUrlTarget, EsolveUserAccountData, EsolveUserAccountRecord, EsolveUserClientAccountBalancesRecord, EsolveUserClientAccountRecord, EsolveUserDeviceOptions, EsolveUserDeviceRecord, EsolveValidateOtpResponse, EsolveVaultRecord, EsolveVaultResponse, EsolveVoucherRecord, EsolveVoucherValidation, EsolveVoucherValidationError, EsolveVoucherValidationResult, EsolveVouchersCache, EsolveWalletBalancesRecord, EsolveWalletCashOutOptions, EsolveWalletCashOutResponse, EsolveWalletTransactionOptions, EsolveWalletTransactionRecord, EsolveWalletTransactionType, EsolveWishlist, EsolveWishlistItemRecord, EsolveWishlistItemResponse, EsolveWishlistSetAction, EsolveWishlistSetItem };