import { Dayjs } from 'dayjs';
import { getDurationValue } from './flexible';
/**
 * 判断商品是否为跨日预约（duration.type === 'days'）。与 info2 isMultiDayProduct 等价。
 */
export declare function isMultiDayProduct(product: any): boolean;
/**
 * 判断 cacheItem 是否为 session 商品（extension_type ∈ session_product / session_ticket）。
 */
export declare function isSessionProduct(cacheItem: any): boolean;
/** 从 catalog `cartDetailValue` 或 `_extend.other` 取 session 快照。 */
export declare function getSessionFromItem(item: any): Record<string, any> | null;
/**
 * 将 cartDetailValue.session 写入 _extend 的起止时间（与 info2 getServiceStartTimeAndEndTime 的 session 分支一致）。
 * 日历日优先用 ctx.date，时分取自 session.start_at / end_at 或 session.start_time / end_time。
 */
export declare function applySessionTimesToExtend(item: any, extend: Record<string, any>, ctx?: {
    date?: string | Dayjs | null;
}): Record<string, any>;
/**
 * 是否应写入 booking（与 Product.utils isNormalProduct 对齐，并覆盖 session_ticket / cartDetailValue.session）。
 */
export declare function isBookingProduct(item: any): boolean;
/**
 * 处理 'now' 时间占位：'now' → 当前 HH:mm；其他原样返回。
 * 与 info2 `getServeStartTime` 等价。
 */
export declare function getServeStartTime(startTime: string | undefined | null): string;
/**
 * 计算商品的开始结束时间（统一为 dayjs 实例）。
 * 与 info2 `getServiceTimes` 行为等价：
 *   - 跨日商品：startDate = start_date + start_time，endDate = _extend.end_date 原样
 *   - session 商品：从 _extend.other.session 取 start_at / end_at
 *   - 普通商品：startDate + duration（含 flexible 处理）
 */
export declare function getServiceTimes(service: any): {
    startDate: Dayjs;
    endDate: Dayjs;
};
/**
 * 跨日预约相关：把 _extend.start_date / end_date 都对齐到 dayjs startOf('day')。
 * 与 info2 `formatDayDate` 等价。
 */
export declare function formatDayDate(_extend: any): {
    start_date: Dayjs;
    end_date: Dayjs;
};
/**
 * 计算跨日预约时长：
 *   - type='days' → end - start 的天数
 *   - type='minutes' → end - start 的分钟数
 * 与 info2 `getDays` 等价。
 */
export declare function getDays(cacheItem: any, type: 'minutes' | 'days'): number;
export { getDurationValue };
