import React from 'react'; declare type HolderActionSource = 'auto' | 'select' | 'scan'; /** 与 Voucher/index SaleDetailDiscount 对齐,避免循环依赖。 */ declare type HolderDiscount = { id: number | string; [key: string]: any; }; export interface PendingHolderAction { source: HolderActionSource; discount: HolderDiscount; applyAfterSave?: boolean; selectValue?: { id: number | string; isSelected: boolean; }; /** 扫码来源时保留原始码,Holder 绑定后重新扫码以写入 discountList 并重算。 */ scanCode?: string; } /** Holder 弹窗客户:优先订单真实客户,walk-in 时回落到折扣卡 machinecode.customer_id。 */ export declare function resolveHolderModalCustomerId(orderCustomerId?: number, discount?: HolderDiscount): number | undefined; export interface DiscountCardHolderProviderProps { children: React.ReactNode; customerId?: number; discountList?: HolderDiscount[]; getDiscountList?: () => HolderDiscount[]; scanPromotionCode?: (code: string, customerId?: number) => Promise; setDiscountSelected?: (params: { discountId: number; isSelected: boolean; }) => Promise; patchDiscountCardHolderOnStore?: (targetDiscount: HolderDiscount, holderId: number | string) => Promise; onDiscountListRefresh?: () => void; holderPromptRecheckKey?: string | number; variant?: string; } interface DiscountCardHolderContextValue { enqueueHolderAction: (action: PendingHolderAction) => void; registerScanCodeClearHandler: (handler: (() => void) | null) => void; registerSelectFlowEndHandler: (handler: (() => void) | null) => void; holderMissingCount: number; openHolderListModal: () => void; } /** 读取折扣卡 Holder 队列(须在 DiscountCardHolderProvider 内使用)。 */ export declare function useDiscountCardHolder(): DiscountCardHolderContextValue; export declare function useOptionalDiscountCardHolder(): DiscountCardHolderContextValue | null; export declare function DiscountCardHolderPrompt(): React.JSX.Element | null; /** * 常驻 Holder 宿主:负责 auto/select/scan 触发的 Holder 补全弹窗。 * 须始终挂载(不可随 Promotion 弹窗 destroyOnClose),否则选客户后无法及时提示。 */ export declare function DiscountCardHolderProvider({ children, customerId, discountList, getDiscountList, scanPromotionCode, setDiscountSelected, patchDiscountCardHolderOnStore, onDiscountListRefresh, holderPromptRecheckKey, variant, }: DiscountCardHolderProviderProps): React.JSX.Element; export {};