import React from 'react';
export interface ScanOrderEntryContext {
    biz: string;
    resource_id?: string;
    order_id?: string;
}
export interface ScanOrderProps {
    biz?: string;
    resource_id?: string;
    order_id?: string;
    entryContext?: ScanOrderEntryContext;
}
export declare type ScanOrderStepKey = 'init' | 'product' | 'check' | 'error';
export declare type ScanOrderEntryMode = 'default' | 'additional_order';
/** 步骤缓存中记录的 gate 标记（对应协议 / 表单 / 人数 modal 是否已走过） */
export declare type ScanOrderGateKey = 'policyAccepted' | 'formSubmitted' | 'paxEntered';
/** 存入 sessionStorage 桶内的 entryContext 快照（用于校验是否同一扫码场景） */
export interface ScanOrderCachedEntryContext {
    resourceId?: string;
    hasOrderId?: boolean;
    biz?: string;
}
export interface ScanOrderViewModel {
    menuItems: any[];
    cartItems: any[];
    summary: Record<string, any>;
    note: string;
}
export interface ScanOrderContextValue {
    entryContext: ScanOrderEntryContext;
    scanOrderModule: any;
    cartValidation: {
        passed: boolean | null;
        failures: any[];
    };
    isLoading: boolean;
    errorMessage: string;
    currentStep: ScanOrderStepKey;
    stepList: ScanOrderStepKey[];
    viewModel: ScanOrderViewModel;
    footerActionText: string;
    tableName: string;
    entryMode: ScanOrderEntryMode;
    submitDisabledTips: string;
    /** 折扣/优惠券列表（来自 scanOrder 模块 getDiscountList） */
    discountList: any[];
    isReady: boolean;
    setCurrentStep: (step: ScanOrderStepKey) => void;
    setTableName: (name: string) => void;
    setEntryMode: (mode: ScanOrderEntryMode) => void;
    setSubmitDisabledTips: (tips: string) => void;
    goToStep: (step: ScanOrderStepKey) => void;
    nextStep: () => void;
    prevStep: () => void;
    refreshViewModel: () => Promise<void>;
    runModuleAction: (actionName: string, ...args: any[]) => Promise<any>;
    setFooterActionText: (text: string) => void;
    updateOrderNote: (note: string) => Promise<void>;
    /** 步骤缓存 hydrate 是否已完成（未完成时不建议写入 step，避免覆盖缓存） */
    isCacheHydrated: boolean;
    /** 将 gate 标记为已完成（写入 sessionStorage 桶） */
    markGate: (flag: ScanOrderGateKey) => void;
    /** 查询某个 gate 是否已完成 */
    isGatePassed: (flag: ScanOrderGateKey) => boolean;
    /** 整桶清空（提交成功 / restoreOrder 等场景） */
    clearStepCache: () => void;
    /**
     * bootstrap 结束后要恢复到的目标 step（仅记录 `'product' | 'check'`）。
     * hydrate 阶段不直接 `setCurrentStep`，避免在 checkResourceAvailable 之前让
     * `<Menu>` / `<Check>` mount、提前发出缺 menu_list_ids 的请求。
     */
    resumeStep: ScanOrderStepKey | null;
    /** 消费并清空 resumeStep；建议在完成 goToStep 后立刻调用 */
    consumeResumeStep: () => void;
}
export interface ScanOrderProviderProps {
    entryContext: ScanOrderEntryContext;
    children: React.ReactNode;
}
