/**
 * BaseSales 流程 hook 后缀。
 * 完整事件名应由当前模块名动态拼接，避免多个实例共享固定事件 key。
 */
export var BaseSalesHookNames = {
  onInited: 'onInited',
  onDestroy: 'onDestroy',
  onRetryInit: 'onRetryInit',
  onRefresh: 'onRefresh',
  onCartValidationChanged: 'onCartValidationChanged',
  onPaymentSyncStart: 'onPaymentSyncStart',
  onPaymentSyncEnd: 'onPaymentSyncEnd'
};
export function createBaseSalesHook(moduleName, hookName) {
  return "".concat(moduleName, ":").concat(hookName);
}

/**
 * 出站 payload 版本的商品行。
 *
 * 与 tempOrder 内部 `BaseSalesOrderProduct` 的字段差异：
 * - `product_option_item[*]`：内部为 `{ option_group_item_id, option_group_id, num, price, ... }`，
 *   出站保留 `{ option_group_item_id, option_group_id, num }`
 *   （后端 checkout 协议；丢弃 `price` 等运行时辅助字段）。
 * - `product_bundle[*].option[*]`：同上重命名规则。
 *
 * 运行时（UI 显示、加购合并、指纹、持久化）与提交边界统一消费字段名
 * `option_group_item_id`，保持 tempOrder 与后端协议一致。
 */

/**
 * BaseSales 临时订单（runtime-clean 版本）
 * 只保留运行时字段，不包含任何 __comment 字段
 */

/** `resource_capacity[i].capacity_list[j]` */

/** `/order/resource/occupy-detail` 单条 `occupy_details[i]` */

/** BaseSales.scanPromotionCode 对外的轻量结果（不含 discountList，UI 在 resolve 后调 getDiscountList） */