import type { BaseSalesCalculateProductBookingPriceParams, BaseSalesProductBookingPriceResult, ScanOrderOrderProduct, ScanOrderTempOrder, UpdateOrderProductParams } from '../types'; /** * 将金额类输入统一成两位小数字符串,避免报价字段在不同调用点出现格式差异。 * * @example * toPriceString(6) === '6.00' */ export declare function toPriceString(value: unknown): string; /** * 解析商品行的 source price,优先使用 v2 metadata 中的主商品基准价。 * * @example * resolveLineSourcePrice(orderLine); */ export declare function resolveLineSourcePrice(line: ScanOrderOrderProduct): string; /** * 手动改价行不参与自动报价重算,避免覆盖人工确认的价格。 * * @example * isManualPriceLine(orderLine); */ export declare function isManualPriceLine(line: ScanOrderOrderProduct): boolean; /** * 从 tempOrder 中查找商品行绑定的 booking,Change time 预览会传入 patch 后的 booking 覆盖它。 * * @example * findBookingForLine(orderLine, tempOrder); */ export declare function findBookingForLine(line: ScanOrderOrderProduct, tempOrder: ScanOrderTempOrder | null): Record | undefined; /** * 判断 booking 是否为跨日全天预约,跨日报价需要固定按一天拆段。 * * @example * isMultiDayBookingForPriceQuery({ is_all: 1 }); */ export declare function isMultiDayBookingForPriceQuery(booking: Record | undefined): boolean; /** * 解析商品行报价用的 duration,保持购物车重报价和 Change time 重报价口径一致。 * * @example * resolveCartLineDurationForPriceQuery(orderLine, booking); */ export declare function resolveCartLineDurationForPriceQuery(line: ScanOrderOrderProduct, booking: Record | undefined): BaseSalesCalculateProductBookingPriceParams['duration']; /** * 构造商品行报价请求。bookingOverride 用于 Change time 在不污染原 booking 的前提下按新时间报价。 * * @example * buildCartLinePriceQuery({ line, tempOrder, bookingOverride: nextBooking }); */ export declare function buildCartLinePriceQuery(input: { line: ScanOrderOrderProduct; tempOrder: ScanOrderTempOrder | null; fallbackDate?: string | null; bookingOverride?: Record | null; }): BaseSalesCalculateProductBookingPriceParams | null; /** * 将报价单中的 bundle 价格同步回商品行 bundle 字段。 * * @example * mergeBundleQuotationPrices(orderLine.product_bundle, priceResult); */ export declare function mergeBundleQuotationPrices(bundles: ScanOrderOrderProduct['product_bundle'], result: BaseSalesProductBookingPriceResult): ScanOrderOrderProduct['product_bundle']; /** * 将 BaseSales 报价结果转成 updateOrderProduct 入参,供购物车重报价和 Change time 预览复用。 * * @example * buildCartLineRepriceParams({ line, result, booking: bookingPatch }); */ export declare function buildCartLineRepriceParams(input: { line: ScanOrderOrderProduct; result: BaseSalesProductBookingPriceResult; booking?: Record | null; allowBookingReprice?: boolean; /** Change time 重报价后,允许 OS 将已选编辑态折扣卡重新应用到当前预约商品行。 */ allowBookingDiscountReapply?: boolean; /** Change time 需要清掉旧行级折扣快照,让 OS 按当前已选折扣卡重新计算。 */ resetDiscountList?: boolean; }): UpdateOrderProductParams;