import type { FloorRoomCardHostBookingStatus } from '../../floorRoomCard/floorRoomCardModel';
import type { PisellReservationTableRow } from '../../types';
export declare type BookingStatusBadgeVariant = 'success' | 'warning' | 'neutral' | 'danger';
export declare type BookingDetailViewModel = {
    /** 展示用预约/订单号 */
    bookingIdLabel: string;
    internalId?: string | number;
    statusRaw?: string;
    /** 标题旁状态徽章文案（如 Started），无则不出徽章 */
    statusBadgeLabel?: string;
    statusBadgeVariant?: BookingStatusBadgeVariant;
    title: string;
    contactName?: string;
    contactPhone?: string;
    /**
     * 与平面图 RoomCard 的 guestDisplayLine(holder, true) 一致：有姓名则为姓名，否则为脱敏手机号（仅手机时）。
     * 用于弹窗左上是否与图元同一套「主展示串」；有姓名且另有手机时 UI 可再并排展示 {@link contactPhone}。
     */
    guestHeadline: string;
    timeRangeLabel: string;
    staffLabel?: string;
    paymentStatusRaw?: string;
    totalAmountLabel?: string;
    /** RoomCard 对齐 */
    partySize: number;
    startDisplay: string;
    endDisplay: string;
    cardAmount: string | number;
    lateTimeMinutes?: number;
    timeoutTimeMinutes?: number;
    /** 预留「还有 n 分钟」，与图元一致（宿主字段优先） */
    reservedCountdownMinutes: number | null;
    progressPercent: number;
    hostBookingStatus?: FloorRoomCardHostBookingStatus;
    /** 桌位行上的容量展示名 */
    roomCapacityLabel?: string;
    /** 桌位 code · main_field */
    roomTitleLabel?: string;
};
/** 预约 raw 是否已为 fully paid（优先 `order.payment_status`，否则顶层 `payment_status`） */
export declare function isBookingRawOrderPaid(raw: Record<string, unknown>): boolean;
/**
 * @param raw 单条 floorMapSourceBookings 项
 * @param roomRow 当前桌位行（容量、展示名与图元一致）
 */
/** 彩色信息头（订单摘要 + 支付/Due） */
export declare type BookingDetailOrderStripModel = {
    /**
     * 无联系人时用于左上角的回退文案：relation_form_name → pickTitle → booking_id。
     * 有联系人时由 {@link BookingDetailViewModel.guestHeadline} / ContactInfo 式展示，不直接使用本字段。
     */
    eyebrow: string;
    /** 粉头大号字：预约 ID（booking_id → id → 门店单号 → 平台 order_number） */
    stripBookingId: string;
    scheduleLine: string;
    /** 左下「n 件」：优先 `raw.products` 有效行数（与列表一致）；无数组时回退 `order.summary.product_quantity` */
    itemsCount: number | null;
    /** 已带货币符号的订单合计文案 */
    orderTotalWithSymbol: string;
    paymentStatusRaw?: string;
    /** 已带货币符号的 Due 文案 */
    dueWithSymbol: string;
};
/**
 * 预约详情正文顶部信息条：字段来自 order.summary / order 与 raw 起止时间。
 */
export declare function bookingDetailOrderStripFromRaw(raw: Record<string, unknown>): BookingDetailOrderStripModel;
export declare function bookingDetailFromRaw(raw: Record<string, unknown>, roomRow?: PisellReservationTableRow | null): BookingDetailViewModel;
