/**
 * BookingTicket - 预约状态相关纯函数。
 *
 * 该文件不持有任何运行时引用（无 request / store / effects），
 * 只做字段解析与本地数组的原地写入/回滚，便于独立单测与未来其他
 * booking 写操作（editBooking / cancelBooking 等）复用。
 *
 * 设计依据：参考 .cursor/rules/data-field-semantics.mdc，
 * 字段含义严格对齐既有协议（OrderTempOrder / parseSalesResponse），
 * 不发明等价关系。
 */
/**
 * 子预约状态机转移动作（POST /schedule/booking-transition/{schedule_event_id}）。
 *
 * @example
 * await bookingTicket.transitionChildBooking({
 *   schedule_event_id: 301,
 *   action: 'confirm',
 * });
 */
export type BookingTransitionAction = 'confirm' | 'reject' | 'arrive' | 'start' | 'complete' | 'cancel' | 'no_show' | 'reschedule';
/** 子预约状态转移入参 */
export interface TransitionChildBookingParams {
    schedule_event_id: number | string;
    action: BookingTransitionAction;
}
/**
 * 从 tempOrder 解析用于调用 appointment-status 接口的 schedule id。
 *
 * 优先级：
 *   1. `tempOrder.metadata.appointment_booking_parent_schedule_id`
 *   2. `tempOrder.bookings` 中 `parent_id === 0` 的 `schedule_event_id`
 *
 * 都缺失时返回 null，由调用方决定如何抛错。
 */
export declare function resolveScheduleId(tempOrder: {
    bookings?: any[];
    metadata?: Record<string, any> | null;
} | null | undefined): number | string | null;
/**
 * 原地把所有 bookings 的 `appointment_status` 覆盖为新值，
 * 返回原 status 数组用于回滚（顺序与 bookings 一一对应）。
 *
 * - 元素为 null/undefined 时跳过写入（但占位仍保留以保证回滚下标对齐）
 * - 不会克隆 booking 对象，保持与 OrderModule.tempOrder 引用一致
 */
export declare function applyBookingsStatus(bookings: any[] | null | undefined, status: string): Array<string | undefined>;
/**
 * 把 applyBookingsStatus 的返回值原地写回，撤销乐观更新。
 * 长度不一致时按较短一方对齐（防御式编程，正常路径不会发生）。
 */
export declare function restoreBookingsStatus(bookings: any[] | null | undefined, previous: Array<string | undefined>): void;
/**
 * 将状态机 action 解析为转移后的 `appointment_status`。
 *
 * `reschedule` 暂未在状态矩阵启用，返回 null 表示跳过乐观更新。
 *
 * @example
 * resolveStatusAfterTransition('confirm'); // 'confirmed'
 */
export declare function resolveStatusAfterTransition(action: BookingTransitionAction): string | null;
/**
 * 在 bookings 中按 `schedule_event_id` 定位子预约并乐观写入 `appointment_status`。
 *
 * @returns 写入前的 status；未命中时返回 undefined（调用方跳过回滚）
 *
 * @example
 * const prev = applyChildBookingStatus(tempOrder.bookings, 301, 'confirmed');
 */
export declare function applyChildBookingStatus(bookings: any[] | null | undefined, scheduleEventId: number | string, status: string): string | undefined;
/**
 * 撤销 applyChildBookingStatus 对单条子预约的乐观写入。
 *
 * @example
 * restoreChildBookingStatus(tempOrder.bookings, 301, prev);
 */
export declare function restoreChildBookingStatus(bookings: any[] | null | undefined, scheduleEventId: number | string, previous: string | undefined): void;
