import type { BookingTicketHandle, ScanOrderTempOrder } from '../types'; import type { HolderConfirmSnapshotKey } from '../utils/holderSubmitValidation'; /** 用户通过关闭确认框放弃分配 holder,submit / checkout 应中止且不弹错误 */ export declare const HOLDER_CONFIRM_CANCELLED: unique symbol; export interface HolderConfirmModalContext { bookingTicket: BookingTicketHandle; tempOrder: ScanOrderTempOrder | null; bookingConfig: Record | null; customerId?: number | string | null; /** 打开弹窗时的未分配行快照,列表渲染以此为准 */ snapshotLineKeys: HolderConfirmSnapshotKey[]; onMutate?: () => void; } interface HolderConfirmModalPending { open: boolean; ctx: HolderConfirmModalContext; resolve: () => void; reject: (reason: unknown) => void; } export declare function subscribeHolderConfirmModal(listener: () => void): () => void; export declare function getHolderConfirmModalPending(): HolderConfirmModalPending | null; /** * 打开「预约主体未分配」确认弹窗。 * - 点「确定」/「跳过」→ resolve,后续 save / checkout 继续 * - 点关闭并确认放弃 → reject(HOLDER_CONFIRM_CANCELLED),后续流程中止 */ export declare function showSalesSdkConfirmHolderModal(ctx: HolderConfirmModalContext): Promise; /** 用户确认继续(主弹窗「确定」或 optional 时「跳过」) */ export declare function completeSalesSdkConfirmHolderModal(): void; /** 用户关闭弹窗并确认放弃分配 → 中止 save / checkout */ export declare function cancelSalesSdkConfirmHolderModal(): void; export declare function isHolderConfirmCancelled(error: unknown): boolean; /** 分配 holder 后刷新弹窗列表(不关闭弹窗) */ export declare function refreshSalesSdkConfirmHolderModal(): void; export {};