import type { ISalesBooking, SalesSdkCartBookingView, SalesSdkCartItemView, SalesSdkMergedBookingSource, ScanOrderOrderProduct } from '../types'; /** * 生成严格合并 key;任一核心展示或写回字段不同都会拆成不同展示行。 * * @example * buildBookingMergeKey(booking); */ export declare function buildBookingMergeKey(booking: SalesSdkCartBookingView): string | null; /** * 计算 booking 展示数量;预约商品通常一条真实行为 1,这里保留 num 兼容。 * * @example * resolveBookingDisplayQuantity(product); */ export declare function resolveBookingDisplayQuantity(product: ScanOrderOrderProduct | null | undefined): number; /** * 从合并 booking 或代表商品行中取出真实来源;未合并时返回空数组。 * * @example * getMergedBookingSources(bookingView); */ export declare function getMergedBookingSources(target: SalesSdkCartBookingView | SalesSdkCartItemView | null | undefined): SalesSdkMergedBookingSource[]; /** * 判断购物车目标是否为合并 booking 展示行。 * * @example * isMergedBookingTarget(bookingView); */ export declare function isMergedBookingTarget(target: SalesSdkCartBookingView | SalesSdkCartItemView | null | undefined): boolean; /** * 按严格 key 合并 booking 展示行;底层真实 booking/product 不会被修改。 * * @example * const displayBookings = mergeBookingsForDisplay(rawBookings); */ export declare function mergeBookingsForDisplay(bookings: SalesSdkCartBookingView[]): SalesSdkCartBookingView[]; /** * 克隆新增预约真实行时清理旧 uid,避免 OS createLinkedProductAndBooking 复用原行身份。 * * @example * const product = cloneProductForMergedBookingAppend(source.product); */ export declare function cloneProductForMergedBookingAppend(product: SalesSdkCartItemView): Partial; /** * 克隆新增预约真实行时清理旧 booking uid 和 product_uid。 * * @example * const booking = cloneBookingForMergedBookingAppend(source.booking); */ export declare function cloneBookingForMergedBookingAppend(booking: ISalesBooking): ISalesBooking;