import type { ReactNode } from 'react';
import type { SalesSdkCartBookingView, SalesSdkCartItemView } from '../../../salesSdk';
export declare type LineItemType = 'a2' | 'a5' | 'a9';
export declare type LineItemKind = 'booking' | 'product';
export interface LineItemStatusOption {
    key: string;
    label: ReactNode;
    color?: string;
    danger?: boolean;
}
export interface LineItemHolderOption {
    id: string | number;
    label: ReactNode;
}
export interface LineItemThemeTokens {
    bg: string;
    borderColor: string;
    radius: string;
    shadow: string;
    headerBg: string;
    headerText: string;
    headerSubText: string;
    productBg: string;
    sectionBg: string;
    dividerColor: string;
    textPrimary: string;
    textSecondary: string;
    textMuted: string;
    priceColor: string;
    originalPriceColor: string;
    actionBg: string;
    actionText: string;
    dangerColor: string;
    statusBg: string;
    statusText: string;
    tagBg: string;
    tagText: string;
    imageBg: string;
}
export declare type LineItemThemePreset = 'dark' | 'light';
export declare type LineItemTheme = LineItemThemePreset | Partial<LineItemThemeTokens>;
export declare type LineItemProductDisplay = SalesSdkCartItemView;
export interface LineItemResourceDisplay {
    id: string;
    label: ReactNode;
    formName: ReactNode;
    resourceName: ReactNode;
}
export interface LineItemHolderDisplay {
    id: string | number;
    label: ReactNode;
}
export interface LineItemBookingDisplay {
    source: SalesSdkCartBookingView | Record<string, any>;
    bookingId?: string;
    status?: string;
    timeText: string;
    title: ReactNode;
    bookingNumber: number;
    resources: LineItemResourceDisplay[];
    holders: LineItemHolderDisplay[];
    holderMaxCount: number;
    showUnassignedHolder: boolean;
    relatedProduct: LineItemProductDisplay | null;
}
export interface LineItemAction {
    key?: string;
    text?: ReactNode;
    color?: string;
    onClick?: (event: any) => void;
    style?: React.CSSProperties;
}
export interface LineItemProps {
    dataSource: SalesSdkCartItemView | SalesSdkCartBookingView | Record<string, any>;
    itemType?: LineItemKind;
    type?: LineItemType;
    theme?: LineItemTheme;
    isShowBookingHeader?: boolean;
    rightActions?: LineItemAction[];
    statusOptions?: LineItemStatusOption[];
    statusLoading?: boolean;
    statusDisabled?: boolean;
    holderOptions?: LineItemHolderOption[];
    isFormSubject?: boolean;
    isShowRelatedProduct?: boolean;
    isShowImage?: boolean;
    isShowDelete?: boolean;
    isShowNote?: boolean;
    isShowAmountFooter?: boolean;
    disabledClick?: boolean;
    disabledEdit?: boolean;
    disabledBookingEdit?: boolean;
    disabledEditClick?: boolean;
    isShowOriginalPrice?: boolean;
    isShowEditProduct?: boolean;
    maxSpecsCount?: number;
    onBookingStatusChange?: (status: string, item: any) => void;
    onAction?: (item: any) => void;
    onDelete?: (item: any) => void;
    onNote?: (item: any) => void;
    onCard?: (item: any) => void;
    onEdit?: (item: any) => void;
    /** 是否展示 Add time 按钮（由宿主判断加时商品可用性） */
    showAddTime?: boolean;
    onAddTime?: (item: any) => void;
    onPromotion?: (item: any) => void;
    onGift?: (item: any) => void;
    onEditProduct?: (item: any) => void;
    [key: string]: any;
}
