@pisell/pisellos 2.2.291 → 2.2.293

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/dist/core/index.d.ts +7 -0
  2. package/dist/core/index.js +108 -65
  3. package/dist/model/strategy/adapter/itemRule/adapter.d.ts +4 -1
  4. package/dist/model/strategy/adapter/itemRule/adapter.js +135 -35
  5. package/dist/model/strategy/adapter/itemRule/evaluator.d.ts +8 -1
  6. package/dist/model/strategy/adapter/itemRule/evaluator.js +25 -1
  7. package/dist/model/strategy/adapter/itemRule/type.d.ts +44 -0
  8. package/dist/model/strategy/adapter/itemRule/type.js +19 -1
  9. package/dist/model/strategy/adapter/promotion/index.js +0 -9
  10. package/dist/modules/BookingContext/index.d.ts +3 -0
  11. package/dist/modules/BookingContext/index.js +42 -13
  12. package/dist/modules/BookingContext/types.d.ts +4 -4
  13. package/dist/modules/BookingContext/types.js +3 -3
  14. package/dist/modules/OpenData/types.d.ts +1 -0
  15. package/dist/modules/Order/index.d.ts +18 -3
  16. package/dist/modules/Order/index.js +885 -485
  17. package/dist/modules/Order/salesNotes.d.ts +31 -0
  18. package/dist/modules/Order/salesNotes.js +492 -0
  19. package/dist/modules/Order/types.d.ts +93 -5
  20. package/dist/modules/Order/types.js +5 -0
  21. package/dist/modules/Order/utils.d.ts +12 -0
  22. package/dist/modules/Order/utils.js +96 -31
  23. package/dist/modules/Product/types.d.ts +2 -0
  24. package/dist/modules/ProductList/clientDataVariants.d.ts +50 -0
  25. package/dist/modules/ProductList/clientDataVariants.js +216 -0
  26. package/dist/modules/ProductList/index.d.ts +18 -3
  27. package/dist/modules/ProductList/index.js +220 -38
  28. package/dist/modules/ProductList/types.d.ts +10 -0
  29. package/dist/modules/Quotation/index.d.ts +22 -0
  30. package/dist/modules/Quotation/index.js +293 -28
  31. package/dist/modules/ResourcePlanner/index.d.ts +0 -22
  32. package/dist/modules/ResourcePlanner/index.js +1 -180
  33. package/dist/modules/ResourcePlanner/localClock.d.ts +33 -0
  34. package/dist/modules/ResourcePlanner/localClock.js +183 -0
  35. package/dist/modules/ResourcePlanner/planner.d.ts +5 -14
  36. package/dist/modules/ResourcePlanner/planner.js +2111 -958
  37. package/dist/modules/ResourcePlanner/types.d.ts +359 -187
  38. package/dist/modules/ResourcePlanner/types.js +33 -1
  39. package/dist/plugins/request.d.ts +1 -0
  40. package/dist/server/index.d.ts +17 -2
  41. package/dist/server/index.js +1134 -932
  42. package/dist/server/modules/floor-plan/index.d.ts +4 -0
  43. package/dist/server/modules/floor-plan/index.js +240 -98
  44. package/dist/server/modules/menu/index.js +48 -23
  45. package/dist/server/modules/order/index.d.ts +17 -7
  46. package/dist/server/modules/order/index.js +419 -207
  47. package/dist/server/modules/products/index.d.ts +10 -4
  48. package/dist/server/modules/products/index.js +177 -84
  49. package/dist/server/modules/resource/index.js +21 -13
  50. package/dist/server/utils/product.d.ts +1 -1
  51. package/dist/server/utils/product.js +186 -22
  52. package/dist/server/utils/small-ticket.d.ts +9 -1
  53. package/dist/server/utils/small-ticket.js +131 -84
  54. package/dist/solution/BaseSales/index.d.ts +26 -3
  55. package/dist/solution/BaseSales/index.js +1384 -905
  56. package/dist/solution/BaseSales/types.d.ts +2 -0
  57. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  58. package/dist/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +10 -3
  59. package/dist/solution/BaseSales/utils.js +6 -3
  60. package/dist/solution/BookingByStep/index.d.ts +4 -4
  61. package/dist/solution/BookingTicket/index.d.ts +1 -1
  62. package/dist/solution/BookingTicket/index.js +4 -2
  63. package/dist/solution/BookingTicket/utils/addProductDecision.d.ts +2 -1
  64. package/dist/solution/BookingTicket/utils/addProductDecision.js +6 -3
  65. package/dist/solution/BookingTicket/utils/orderCustomer.js +3 -2
  66. package/dist/solution/RegisterAndLogin/config.d.ts +9 -3
  67. package/dist/solution/RegisterAndLogin/config.js +95 -40
  68. package/dist/solution/RegisterAndLogin/index.js +4 -1
  69. package/dist/solution/ScanOrder/index.d.ts +1 -0
  70. package/dist/solution/ScanOrder/index.js +31 -27
  71. package/dist/solution/ScanOrder/types.d.ts +2 -0
  72. package/dist/solution/ScanOrder/utils.d.ts +1 -0
  73. package/dist/solution/ScanOrder/utils.js +8 -3
  74. package/dist/solution/UnifiedBookingSales/index.d.ts +128 -74
  75. package/dist/solution/UnifiedBookingSales/index.js +3877 -963
  76. package/dist/solution/UnifiedBookingSales/remoteOccupancyCache.d.ts +49 -0
  77. package/dist/solution/UnifiedBookingSales/remoteOccupancyCache.js +430 -0
  78. package/dist/solution/UnifiedBookingSales/types.d.ts +161 -77
  79. package/dist/solution/UnifiedBookingSales/types.js +4 -9
  80. package/dist/solution/VenueBooking/index.d.ts +3 -0
  81. package/dist/solution/VenueBooking/index.js +549 -497
  82. package/dist/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
  83. package/dist/solution/VenueBooking/utils/dateSummary.js +3 -1
  84. package/dist/solution/VenueBooking/utils/slotMerge.d.ts +2 -0
  85. package/dist/solution/VenueBooking/utils/slotMerge.js +3 -1
  86. package/dist/utils/platform.d.ts +8 -0
  87. package/dist/utils/platform.js +15 -0
  88. package/lib/core/index.d.ts +7 -0
  89. package/lib/core/index.js +20 -2
  90. package/lib/model/strategy/adapter/itemRule/adapter.d.ts +4 -1
  91. package/lib/model/strategy/adapter/itemRule/adapter.js +73 -4
  92. package/lib/model/strategy/adapter/itemRule/evaluator.d.ts +8 -1
  93. package/lib/model/strategy/adapter/itemRule/evaluator.js +23 -1
  94. package/lib/model/strategy/adapter/itemRule/type.d.ts +44 -0
  95. package/lib/model/strategy/adapter/itemRule/type.js +19 -1
  96. package/lib/modules/BookingContext/index.d.ts +3 -0
  97. package/lib/modules/BookingContext/index.js +35 -8
  98. package/lib/modules/BookingContext/types.d.ts +4 -4
  99. package/lib/modules/BookingContext/types.js +3 -3
  100. package/lib/modules/OpenData/types.d.ts +1 -0
  101. package/lib/modules/Order/index.d.ts +18 -3
  102. package/lib/modules/Order/index.js +325 -28
  103. package/lib/modules/Order/salesNotes.d.ts +31 -0
  104. package/lib/modules/Order/salesNotes.js +382 -0
  105. package/lib/modules/Order/types.d.ts +93 -5
  106. package/lib/modules/Order/types.js +4 -0
  107. package/lib/modules/Order/utils.d.ts +12 -0
  108. package/lib/modules/Order/utils.js +85 -16
  109. package/lib/modules/Product/types.d.ts +2 -0
  110. package/lib/modules/ProductList/clientDataVariants.d.ts +50 -0
  111. package/lib/modules/ProductList/clientDataVariants.js +204 -0
  112. package/lib/modules/ProductList/index.d.ts +18 -3
  113. package/lib/modules/ProductList/index.js +137 -8
  114. package/lib/modules/ProductList/types.d.ts +10 -0
  115. package/lib/modules/Quotation/index.d.ts +22 -0
  116. package/lib/modules/Quotation/index.js +158 -11
  117. package/lib/modules/ResourcePlanner/index.d.ts +0 -22
  118. package/lib/modules/ResourcePlanner/index.js +9 -129
  119. package/lib/modules/ResourcePlanner/localClock.d.ts +33 -0
  120. package/lib/modules/ResourcePlanner/localClock.js +205 -0
  121. package/lib/modules/ResourcePlanner/planner.d.ts +5 -14
  122. package/lib/modules/ResourcePlanner/planner.js +1807 -783
  123. package/lib/modules/ResourcePlanner/types.d.ts +359 -187
  124. package/lib/modules/ResourcePlanner/types.js +13 -1
  125. package/lib/plugins/request.d.ts +1 -0
  126. package/lib/server/index.d.ts +17 -2
  127. package/lib/server/index.js +149 -21
  128. package/lib/server/modules/floor-plan/index.d.ts +4 -0
  129. package/lib/server/modules/floor-plan/index.js +60 -7
  130. package/lib/server/modules/menu/index.js +26 -4
  131. package/lib/server/modules/order/index.d.ts +17 -7
  132. package/lib/server/modules/order/index.js +194 -57
  133. package/lib/server/modules/products/index.d.ts +10 -4
  134. package/lib/server/modules/products/index.js +93 -23
  135. package/lib/server/modules/resource/index.js +12 -2
  136. package/lib/server/utils/product.d.ts +1 -1
  137. package/lib/server/utils/product.js +163 -3
  138. package/lib/server/utils/small-ticket.d.ts +9 -1
  139. package/lib/server/utils/small-ticket.js +123 -79
  140. package/lib/solution/BaseSales/index.d.ts +26 -3
  141. package/lib/solution/BaseSales/index.js +396 -70
  142. package/lib/solution/BaseSales/types.d.ts +2 -0
  143. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.d.ts +3 -0
  144. package/lib/solution/BaseSales/utils/transformBaseProductToOrderProduct.js +9 -2
  145. package/lib/solution/BaseSales/utils.js +3 -0
  146. package/lib/solution/BookingByStep/index.d.ts +4 -4
  147. package/lib/solution/BookingTicket/index.d.ts +1 -1
  148. package/lib/solution/BookingTicket/index.js +2 -1
  149. package/lib/solution/BookingTicket/utils/addProductDecision.d.ts +2 -1
  150. package/lib/solution/BookingTicket/utils/addProductDecision.js +5 -2
  151. package/lib/solution/BookingTicket/utils/orderCustomer.js +2 -1
  152. package/lib/solution/RegisterAndLogin/config.d.ts +9 -3
  153. package/lib/solution/RegisterAndLogin/config.js +49 -8
  154. package/lib/solution/RegisterAndLogin/index.js +4 -1
  155. package/lib/solution/ScanOrder/index.d.ts +1 -0
  156. package/lib/solution/ScanOrder/index.js +5 -1
  157. package/lib/solution/ScanOrder/types.d.ts +2 -0
  158. package/lib/solution/ScanOrder/utils.d.ts +1 -0
  159. package/lib/solution/ScanOrder/utils.js +4 -0
  160. package/lib/solution/UnifiedBookingSales/index.d.ts +128 -74
  161. package/lib/solution/UnifiedBookingSales/index.js +2592 -424
  162. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.d.ts +49 -0
  163. package/lib/solution/UnifiedBookingSales/remoteOccupancyCache.js +316 -0
  164. package/lib/solution/UnifiedBookingSales/types.d.ts +161 -77
  165. package/lib/solution/UnifiedBookingSales/types.js +4 -6
  166. package/lib/solution/VenueBooking/index.d.ts +3 -0
  167. package/lib/solution/VenueBooking/index.js +33 -9
  168. package/lib/solution/VenueBooking/utils/dateSummary.d.ts +1 -0
  169. package/lib/solution/VenueBooking/utils/dateSummary.js +3 -1
  170. package/lib/solution/VenueBooking/utils/slotMerge.d.ts +2 -0
  171. package/lib/solution/VenueBooking/utils/slotMerge.js +3 -1
  172. package/lib/utils/platform.d.ts +8 -0
  173. package/lib/utils/platform.js +22 -0
  174. package/package.json +1 -1
@@ -0,0 +1,216 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ export var PRODUCT_QUERY_DATA_VARIANT_RELATIONS = ['category', 'collection', 'resourceRelation', 'bundleGroup.bundleItem', 'optionGroup.optionItem', 'variantGroup.variantItem', 'dataVariants'];
3
+
4
+ /**
5
+ * 判断当前商品查询是否会被本地 OS Server 接管。
6
+ *
7
+ * H5 RequestPlugin 即使收到 osServer=true 仍会直接请求远端接口,因此必须按
8
+ * RequestPlugin 实际 baseUrl 对应的已注册路由判断,不能只看请求选项。
9
+ */
10
+ export function isProductQueryHandledByOsServer(core, request) {
11
+ var server = core === null || core === void 0 ? void 0 : core.server;
12
+ if (!server || typeof server.hasRoute !== 'function') return false;
13
+ var requestBaseUrl = String((request === null || request === void 0 ? void 0 : request.baseUrl) || '/shop').replace(/\/+$/, '');
14
+ return server.hasRoute('post', "".concat(requestBaseUrl, "/product/query")) === true;
15
+ }
16
+ function getBundleItems(product) {
17
+ if (!Array.isArray(product.bundle_group)) return [];
18
+ return product.bundle_group.flatMap(function (group) {
19
+ return Array.isArray(group === null || group === void 0 ? void 0 : group.bundle_item) ? group.bundle_item : [];
20
+ });
21
+ }
22
+ function hasCompleteDataVariantRelations(products) {
23
+ return products.every(function (product) {
24
+ return Array.isArray(product === null || product === void 0 ? void 0 : product.data_variants);
25
+ });
26
+ }
27
+ function hasAnyDataVariants(products) {
28
+ return products.some(function (product) {
29
+ var _product$data_variant;
30
+ return (((_product$data_variant = product.data_variants) === null || _product$data_variant === void 0 ? void 0 : _product$data_variant.length) || 0) > 0 || getBundleItems(product).some(function (item) {
31
+ return Array.isArray(item === null || item === void 0 ? void 0 : item.data_variants) && item.data_variants.length > 0;
32
+ });
33
+ });
34
+ }
35
+ function collectReferencedRuleIds(products) {
36
+ var ids = new Set();
37
+ var remember = function remember(variants) {
38
+ if (!Array.isArray(variants)) return;
39
+ variants.forEach(function (variant) {
40
+ var _variant$data_variant;
41
+ var id = String((_variant$data_variant = variant === null || variant === void 0 ? void 0 : variant.data_variant_rule_id) !== null && _variant$data_variant !== void 0 ? _variant$data_variant : '').trim();
42
+ if (id) ids.add(id);
43
+ });
44
+ };
45
+ products.forEach(function (product) {
46
+ remember(product.data_variants);
47
+ getBundleItems(product).forEach(function (item) {
48
+ return remember(item === null || item === void 0 ? void 0 : item.data_variants);
49
+ });
50
+ });
51
+ return ids;
52
+ }
53
+ function isEvaluatorReady(evaluator, products) {
54
+ if (typeof evaluator.isReady === 'function') {
55
+ if (evaluator.isReady() === false) return false;
56
+ }
57
+ if (evaluator.isReady === false || evaluator.ready === false) return false;
58
+
59
+ // The built-in evaluator is installed before its strategy request completes.
60
+ // A referenced Data Variant cannot be evaluated authoritatively until those
61
+ // configs have arrived. Evaluators without this capability remain compatible.
62
+ if (typeof evaluator.getStrategyConfigs === 'function') {
63
+ var configs = evaluator.getStrategyConfigs();
64
+ if (!Array.isArray(configs) || configs.length === 0) return false;
65
+ var availableRuleIds = new Set(configs.map(function (config) {
66
+ var _config$metadata$id, _config$metadata;
67
+ return String((_config$metadata$id = config === null || config === void 0 || (_config$metadata = config.metadata) === null || _config$metadata === void 0 ? void 0 : _config$metadata.id) !== null && _config$metadata$id !== void 0 ? _config$metadata$id : '').trim();
68
+ }).filter(Boolean));
69
+ return Array.from(collectReferencedRuleIds(products)).every(function (id) {
70
+ return availableRuleIds.has(id);
71
+ });
72
+ }
73
+ return true;
74
+ }
75
+
76
+ /**
77
+ * Strict client-side Data Variant resolution for quote fast paths.
78
+ *
79
+ * Unlike resolveClientDataVariants, callers can distinguish a complete local
80
+ * result from a capability/readiness/error fallback and decide to query the
81
+ * remote product endpoint instead.
82
+ */
83
+ export function tryResolveClientDataVariants(_ref) {
84
+ var _core$context, _scheduleModule$getSc, _core$context2, _core$context3, _strategyContext$busi;
85
+ var core = _ref.core,
86
+ _ref$otherParams = _ref.otherParams,
87
+ otherParams = _ref$otherParams === void 0 ? {} : _ref$otherParams,
88
+ products = _ref.products,
89
+ queryPayload = _ref.queryPayload,
90
+ handledByOsServer = _ref.handledByOsServer,
91
+ explicitScheduleList = _ref.scheduleList,
92
+ explicitMenuList = _ref.menuList,
93
+ _ref$requireCompleteD = _ref.requireCompleteDataVariantRelations,
94
+ requireCompleteDataVariantRelations = _ref$requireCompleteD === void 0 ? true : _ref$requireCompleteD,
95
+ _ref$requireEvaluator = _ref.requireEvaluatorReady,
96
+ requireEvaluatorReady = _ref$requireEvaluator === void 0 ? true : _ref$requireEvaluator;
97
+ if (handledByOsServer) {
98
+ return {
99
+ status: 'handled-by-os-server',
100
+ products: products
101
+ };
102
+ }
103
+ if (products.length === 0) {
104
+ return {
105
+ status: 'empty',
106
+ products: products
107
+ };
108
+ }
109
+ if (requireCompleteDataVariantRelations && !hasCompleteDataVariantRelations(products)) {
110
+ return {
111
+ status: 'data-variants-unavailable',
112
+ products: products
113
+ };
114
+ }
115
+
116
+ // Explicit empty arrays mean the query hydrated the relation and there is no
117
+ // rule to apply. This is an authoritative local base-price result even when
118
+ // no evaluator has been installed.
119
+ if (!hasAnyDataVariants(products)) {
120
+ return {
121
+ status: 'resolved',
122
+ products: products
123
+ };
124
+ }
125
+ var evaluator = core === null || core === void 0 || (_core$context = core.context) === null || _core$context === void 0 ? void 0 : _core$context.dataVariantEvaluator;
126
+ if (!evaluator || typeof evaluator.resolveProducts !== 'function') {
127
+ return {
128
+ status: 'evaluator-unavailable',
129
+ products: products
130
+ };
131
+ }
132
+ try {
133
+ if (requireEvaluatorReady && !isEvaluatorReady(evaluator, products)) {
134
+ return {
135
+ status: 'evaluator-not-ready',
136
+ products: products
137
+ };
138
+ }
139
+ } catch (error) {
140
+ return {
141
+ status: 'error',
142
+ products: products,
143
+ error: error
144
+ };
145
+ }
146
+ var strategyContext = queryPayload.strategy_context && _typeof(queryPayload.strategy_context) === 'object' ? queryPayload.strategy_context : {};
147
+ var fatherModule = String(otherParams.fatherModule || '').trim();
148
+ var scheduleModule = (fatherModule ? core === null || core === void 0 ? void 0 : core.getModule("".concat(fatherModule, "_schedule")) : null) || (core === null || core === void 0 ? void 0 : core.getModule('schedule'));
149
+ var moduleScheduleList = scheduleModule === null || scheduleModule === void 0 || (_scheduleModule$getSc = scheduleModule.getScheduleList) === null || _scheduleModule$getSc === void 0 ? void 0 : _scheduleModule$getSc.call(scheduleModule);
150
+ var contextScheduleList = core === null || core === void 0 || (_core$context2 = core.context) === null || _core$context2 === void 0 ? void 0 : _core$context2.scheduleList;
151
+ var contextMenuList = core === null || core === void 0 || (_core$context3 = core.context) === null || _core$context3 === void 0 ? void 0 : _core$context3.menuList;
152
+ var businessData = {
153
+ products: products,
154
+ scheduleDateTime: queryPayload.schedule_datetime || queryPayload.schedule_date,
155
+ scheduleList: Array.isArray(explicitScheduleList) && explicitScheduleList.length > 0 ? explicitScheduleList : Array.isArray(moduleScheduleList) && moduleScheduleList.length > 0 ? moduleScheduleList : Array.isArray(contextScheduleList) ? contextScheduleList : [],
156
+ menuList: Array.isArray(explicitMenuList) ? explicitMenuList : Array.isArray(otherParams.menuList) ? otherParams.menuList : Array.isArray(contextMenuList) ? contextMenuList : [],
157
+ customerId: queryPayload.customer_id,
158
+ channel: strategyContext.channel,
159
+ orderType: strategyContext.orderType || strategyContext.order_type,
160
+ businessCode: (_strategyContext$busi = strategyContext.business_code) !== null && _strategyContext$busi !== void 0 ? _strategyContext$busi : strategyContext.businessCode,
161
+ availableWalletIds: strategyContext.available_wallet_ids,
162
+ custom: strategyContext
163
+ };
164
+ try {
165
+ var result = evaluator.resolveProducts(businessData);
166
+ if (!Array.isArray(result === null || result === void 0 ? void 0 : result.products)) {
167
+ return {
168
+ status: 'error',
169
+ products: products,
170
+ error: new Error('Data Variant evaluator returned an invalid product list')
171
+ };
172
+ }
173
+ return {
174
+ status: 'resolved',
175
+ products: result.products
176
+ };
177
+ } catch (error) {
178
+ return {
179
+ status: 'error',
180
+ products: products,
181
+ error: error
182
+ };
183
+ }
184
+ }
185
+
186
+ /**
187
+ * 未启用商品 OS 路由时,在客户端补做 Data Variant 解析。
188
+ *
189
+ * 商品列表和预约报价必须共用这个边界,避免 H5 的弹窗报价绕过客户端智能定价。
190
+ * OS Server 已接管时直接信任服务端结果,确保同一批商品只评估一次。
191
+ */
192
+ export function resolveClientDataVariants(_ref2) {
193
+ var core = _ref2.core,
194
+ _ref2$otherParams = _ref2.otherParams,
195
+ otherParams = _ref2$otherParams === void 0 ? {} : _ref2$otherParams,
196
+ products = _ref2.products,
197
+ queryPayload = _ref2.queryPayload,
198
+ handledByOsServer = _ref2.handledByOsServer,
199
+ explicitScheduleList = _ref2.scheduleList,
200
+ explicitMenuList = _ref2.menuList;
201
+ var result = tryResolveClientDataVariants({
202
+ core: core,
203
+ otherParams: otherParams,
204
+ products: products,
205
+ queryPayload: queryPayload,
206
+ handledByOsServer: handledByOsServer,
207
+ scheduleList: explicitScheduleList,
208
+ menuList: explicitMenuList,
209
+ requireCompleteDataVariantRelations: false,
210
+ requireEvaluatorReady: false
211
+ });
212
+ if (result.status === 'error') {
213
+ console.error('[ClientDataVariants] Data Variant 客户端解析失败', result.error);
214
+ }
215
+ return result.products;
216
+ }
@@ -1,6 +1,6 @@
1
1
  import { Module, PisellCore } from '../../types';
2
2
  import { BaseModule } from '../BaseModule';
3
- import { ProductListLoadProductsParams } from './types';
3
+ import { ProductListLoadProductsParams, ProductListStoreQueryParams } from './types';
4
4
  import { ProductData } from '../Product/types';
5
5
  export * from './types';
6
6
  export declare class ProductList extends BaseModule implements Module {
@@ -9,6 +9,7 @@ export declare class ProductList extends BaseModule implements Module {
9
9
  private store;
10
10
  private request;
11
11
  private otherParams;
12
+ private rawProductPriceSources;
12
13
  constructor(name?: string, version?: string);
13
14
  initialize(core: PisellCore, options: any): Promise<void>;
14
15
  /**
@@ -25,19 +26,33 @@ export declare class ProductList extends BaseModule implements Module {
25
26
  * @example
26
27
  * const products = await productList.getAddTimeProducts({ schedule_date: '2026-06-16' });
27
28
  */
28
- getAddTimeProducts(params?: ProductListLoadProductsParams): Promise<any>;
29
+ getAddTimeProducts(params?: ProductListLoadProductsParams): Promise<ProductData[]>;
29
30
  loadProducts({ category_ids, product_ids, collection, menu_list_ids, customer_id: paramsCustomerId, with_count, schedule_datetime, schedule_date, cacheId, with_schedule, extension_type, status, strategy_context, }?: ProductListLoadProductsParams, options?: {
30
31
  callback?: (result: any) => void;
31
32
  subscriberId?: string;
32
- }): Promise<any>;
33
+ }): Promise<ProductData[]>;
33
34
  loadProductsPrice({ ids, customer_id, schedule_date, channel, }: {
34
35
  ids?: number[];
35
36
  customer_id?: number;
36
37
  schedule_date?: string;
37
38
  channel?: string;
38
39
  }): Promise<any>;
40
+ /**
41
+ * Remember raw remote product records before client-side Data Variant
42
+ * evaluation. Quote-only reads can then always start from a clean baseline.
43
+ */
44
+ rememberRawProductQueryResult(products: Array<ProductData | Record<string, any>>): void;
45
+ private replaceRawProductQueryResult;
46
+ /**
47
+ * Return isolated raw price sources for the requested products.
48
+ *
49
+ * Missing IDs are intentionally omitted so callers can remotely fetch only
50
+ * the incomplete part of a batch quote.
51
+ */
52
+ getRawProductPriceSources(ids: number[]): Map<number, ProductData>;
39
53
  getProducts(): Promise<ProductData[]>;
40
54
  getProduct(id: number): Promise<ProductData | undefined>;
55
+ queryProducts(params?: ProductListStoreQueryParams): Promise<ProductData[]>;
41
56
  getProductByIds(ids: number[]): Promise<ProductData[] | undefined>;
42
57
  addProduct(products: ProductData[]): Promise<void>;
43
58
  selectProducts(products: ProductData[]): Promise<void>;