import type { BaseResponsiveProps } from '../../responsive/type';
import type { SalesSdkCartContextValue, SalesSdkBookingContextValue, SalesSdkContextValue, SalesSdkCustomerContextValue, SalesSdkProviderProps, SalesSdkSummaryContextValue } from '../salesSdk';
export declare type SaleDetailRenderType = 'current' | 'modal' | 'drawer';
export declare type SaleDetailTemplate = 'A' | 'B';
export declare type SaleDetailMobilePresentation = 'inline' | 'bottomSheet';
export declare type SaleDetailModuleKey = 'overview' | 'customer' | 'contact' | 'orderNote' | 'cartItems' | 'cartActions' | 'amountDetails' | 'orderActions' | 'promotionAlert';
export interface SaleDetailModuleConfig {
    hidden?: SaleDetailModuleKey[];
    amountDetails?: {
        defaultExpanded?: boolean;
    };
}
export interface SaleDetailContext {
    sales: SalesSdkContextValue;
    customer: SalesSdkCustomerContextValue;
    cart: SalesSdkCartContextValue;
    summary: SalesSdkSummaryContextValue;
    booking?: SalesSdkBookingContextValue;
    /**
     * 弹窗场景（如 BigSaleDialog）在保存 / 结账成功后回调，用于关闭外层容器。
     *
     * @example
     * onOrderComplete?.({ type: 'save', order_id: 123, reset: true });
     */
    onOrderComplete?: (payload: SaleDetailOrderCompletePayload) => void;
}
/** 对齐 TicketBookingDialog callback 的 save / checkout 语义。 */
export interface SaleDetailOrderCompletePayload {
    type: 'save' | 'checkout';
    data?: any;
    order_id?: number | string;
    reset?: boolean;
}
interface SaleDetailBaseProps extends BaseResponsiveProps {
    context?: SaleDetailContext;
    tmpl?: SaleDetailTemplate;
    template?: SaleDetailTemplate;
    moduleConfig?: SaleDetailModuleConfig;
    mobilePresentation?: SaleDetailMobilePresentation;
}
export interface SaleDetailSdkProviderProps {
    osProps: Pick<SalesSdkProviderProps, 'osKey' | 'orderId' | 'autoBootstrap' | 'businessCode' | 'bookingConfigParams' | 'autoInitBookingContext' | 'otherParams' | 'rulesHooks'>;
}
export declare type SaleDetailBaseComponentProps = SaleDetailBaseProps & ({
    renderType?: 'current';
    containerProps?: never;
} | {
    renderType: Exclude<SaleDetailRenderType, 'current'>;
    containerProps: Record<string, unknown>;
});
export declare type SaleDetailProps = SaleDetailBaseComponentProps & SaleDetailSdkProviderProps;
export interface SaleDetailBlockProps<TDisplayData> {
    dataSource: TDisplayData;
    className?: string;
}
export {};
