/// <reference types="react" />
export interface CurrentOrderInfo {
    /** 订单UUID */
    uuid?: string;
    /** 订单ID */
    orderId?: string;
    /** 订单状态 */
    status?: string;
    /** 当前步骤 */
    step?: string;
    /** 订单总金额 */
    totalAmount?: string;
    /** 待付金额 */
    remainingAmount?: string;
    /** 支付状态 */
    paymentStatus?: string;
    /** 是否为定金订单 */
    isDeposit?: boolean;
    /** 定金金额 */
    depositAmount?: string;
    /** 订单类型 */
    orderType?: 'virtual' | 'appointment_booking';
    /** 平台类型 */
    platform?: 'pc' | 'h5';
    /** 创建时间 */
    createdAt?: string;
    /** 商品数量 */
    itemCount?: number;
    /** 是否有本地订单数据 */
    hasLocalOrderData?: boolean;
}
export interface PaymentData {
    orderId?: string | number;
    totalAmount?: number;
    currency?: string;
    customerId?: string | number;
    customerName?: string;
    description?: string;
    items?: PaymentItem[];
}
export interface PaymentItem {
    id: string | number;
    name: string;
    quantity: number;
    price: number;
    total: number;
}
export interface ModuleConfig {
    showWalletPass?: boolean;
    showCashPayment?: boolean;
    showAdditionalModule?: boolean;
    showPaymentOptions?: boolean;
}
export interface StatusConfig {
    leftStatus?: string;
    rightStatus?: string;
}
export interface PaymentResult {
    type: 'cash' | 'walletpass' | 'etfpos' | 'custom' | 'mx51';
    amount?: number;
    status: 'success' | 'failed' | 'cancelled' | 'pending';
    orderId?: string | number;
    transactionId?: string;
    message?: string;
    timestamp?: number;
    roundingAmount?: number;
}
export interface CheckoutCallbacks {
    onPaymentComplete?: (result: PaymentResult) => void;
    onPaymentCancel?: () => void;
    onStatusChange?: (status: string) => void;
}
export interface CheckoutProps {
    paymentData?: PaymentData;
    moduleConfig?: ModuleConfig;
    statusConfig?: StatusConfig;
    cashAmountButtons?: number[];
    onPaymentComplete?: (result: PaymentResult) => void;
    onPaymentCancel?: () => void;
    onStatusChange?: (status: string) => void;
}
export interface StatusSectionProps {
    config?: StatusConfig;
    onStatusChange?: (status: string) => void;
}
export interface AmountSummaryProps {
    orderInfo?: CurrentOrderInfo;
    open_deposit?: boolean;
    customAmount?: string;
    onAmountChange?: (amount: string) => void;
}
export interface WalletPassModuleProps {
    orderInfo?: CurrentOrderInfo;
}
export interface CashPaymentModuleProps {
    orderInfo?: CurrentOrderInfo;
    onPaymentComplete?: (result: PaymentResult) => void;
    amountButtons?: number[];
}
export interface PaymentOptionsModuleProps {
    orderInfo?: CurrentOrderInfo;
    onClick?: (method: PaymentMethod) => void;
}
export interface AdditionalModuleProps {
    orderInfo?: CurrentOrderInfo;
    customAmount?: string;
    handleButtonClick: (key: string) => void;
    hasOrderNote?: boolean;
}
export interface PaymentMethod {
    id: string;
    name: string;
    nameEn?: string;
    surcharge: string;
    surchargeAmount?: number;
    icon?: string;
    iconComponent?: React.ReactNode;
    color?: string;
    enabled?: boolean;
    code: string;
    type: string;
    fixed?: number;
    percentage?: number;
}
export interface PaymentMethodSelection {
    method: PaymentMethod;
    amount: number;
    totalWithSurcharge: number;
}
