import { EvaluationResult, StrategyConfig } from '../../type';
/**
 * Voucher 数据结构
 */
export interface Voucher {
    id: number;
    amount: number;
    balance: number;
    type?: string;
    usedCount?: number;
    available_product_type?: 'product_all' | 'product_collection' | 'products';
    available_product_ids?: number[];
    product_id: number;
    unified_available_status: number;
    /** 用户手动编辑的金额，优先于 recommended_usage_amount 使用 */
    edit_current_amount?: number;
    /** 前端基于策略返回的 不可用状态 */
    _unified_available_status?: number;
    /** 前端基于策略返回的 可用最大金额 */
    _available_max_amount?: number;
    /** 前端基于策略返回的 不可用原因 */
    reason?: string;
    /** 前端基于策略返回的 不可用原因码 */
    reasonCode?: string;
    /** 后端计算推荐使用金额 */
    recommended_usage_amount: number;
    /** 后端计算推荐使用金额（仅商品） 不包含税费附加费 */
    recommended_pure_product_usage_amount: number;
    /** 实际抵扣金额 */
    actualDeduction: number;
    /** 抵扣详情 */
    deductionDetails: any[];
    config?: {
        /** 最大抵扣金额 */
        maxDeductionAmount: number;
        /** 每单最多使用张数（同一 product_id 的券）。默认为 0，表示不限制数量。 */
        maxUsagePerOrder: number;
        /** 是否抵扣税费与附加费 */
        deductTaxAndFee: boolean;
        /** 适用粒度（多商品共用） 默认开启勾选项 */
        allowCrossProduct: boolean;
        /** 可用商品数量上限 （仅多商品） 默认为0，表示不限制商品数量。 */
        applicableProductLimit: number;
        /** 单订单行每单位可用同一 Wallet Pass 券次数；该行总券次上限 = maxPassesPerItem × 该行 quantity（按行唯一键区分）。0 表示不限制。 */
        maxPassesPerItem: number;
        /** 是否抵扣单规格价格 (Option Price)，默认 false。开启后折扣范围包含 option 的 add_price */
        deductOptionPrice: boolean;
    };
}
/**
 * 商品数据结构
 */
export interface Product {
    product_id: number;
    /** 订单明细 id，参与行唯一键兜底解析 */
    id?: number;
    /** 行级唯一串，参与行唯一键解析 */
    product_unique_string?: string;
    price: number;
    quantity: number;
    name?: string;
    selling_price?: number;
    /** 主商品折扣前金额，不包含套餐子商品 */
    main_product_original_price?: number;
    /** 主商品折扣后金额，不包含套餐子商品 */
    main_product_selling_price?: number;
    /** 单规格（Option）列表 */
    product_options?: {
        id: number;
        add_price: number | string;
        num: number;
        [key: string]: any;
    }[];
    /** 主商品税费 */
    tax_fee: number;
    metadata: {
        /** 行唯一标识，优先用于 Wallet Pass 按行配额 */
        product_unique?: string;
        unique_identification_number?: string;
        main_product_attached_bundle_tax_fee?: number;
        main_product_attached_bundle_surcharge_fee?: number;
        surcharge_rounding_remainder?: number;
        tax_fee_rounding_remainder?: number;
        main_product_selling_price: number;
    };
    is_price_include_tax: 0 | 1;
    product_bundle: {
        is_price_include_tax: 0 | 1;
        bundle_id: number;
        bundle_product_id: number;
        bundle_variant_id: number;
        price_type: string;
        price_type_ext: string;
        bundle_selling_price: number;
        num: number;
        is_charge_tax: number;
        tax_fee: number;
        metadata: {
            surcharge_fee: number;
            surcharge_rounding_remainder?: number;
            tax_fee_rounding_remainder?: number;
        };
    }[];
}
/**
 * Voucher 评估结果
 */
export interface VoucherEvaluationResult {
    voucher: Voucher;
    /** 是否可用 */
    isApplicable: boolean;
    /** 每单可使用张数 */
    canUseCount: number;
    /** 最大抵扣金额 */
    maxDeduction: number;
    /** 是否抵扣税费与附加费 */
    deductTaxAndFee: boolean;
    /** 适用商品ID列表 */
    applicableProductIds: number[];
    /** 不可用原因 */
    reason?: string;
    /** 不可用原因码 */
    reasonCode?: string;
    strategyResult?: EvaluationResult;
}
/**
 * 评估器输入参数
 */
export interface EvaluatorInput {
    /** 订单总金额 */
    orderTotalAmount: number;
    /** 商品列表 */
    products: Product[];
    /** 代金券列表 */
    vouchers: Voucher[];
    /** 策略配置列表 */
    strategyConfigs?: StrategyConfig<{
        /** 最大抵扣金额 */
        maxDeductionAmount: number;
        /** 每单最多使用张数（同一 product_id 的券）。默认为 0，表示不限制数量。 */
        maxUsagePerOrder: number;
        /** 是否抵扣税费与附加费 */
        deductTaxAndFee: boolean;
        /** 适用粒度（多商品共用） 默认开启勾选项 */
        allowCrossProduct: boolean;
        /** 可用商品数量上限 （仅多商品） 默认为0，表示不限制商品数量。 */
        applicableProductLimit: number;
        /** 单订单行每单位可用同一 Wallet Pass 券次数；行总上限 = maxPassesPerItem × 该行 quantity（按行唯一键计）。0 表示不限制。 */
        maxPassesPerItem: number;
        /** 是否抵扣单规格价格 (Option Price)，默认 false */
        deductOptionPrice: boolean;
    }>[];
}
/**
 * WalletPassAdapter 业务数据输入
 */
export interface WalletPassBusinessData {
    /** 订单总金额 */
    orderTotalAmount: number;
    /** 商品列表 */
    products: Product[];
    /** 当前评估的 voucher */
    voucher: Voucher;
    /** 策略配置 */
    strategyConfig: StrategyConfig;
}
/**
 * WalletPassAdapter 转换结果
 */
export interface WalletPassTransformResult {
    /** 是否可用 */
    isApplicable: boolean;
    /** 每单可使用张数 */
    canUseCount: number;
    /** 最大抵扣金额 */
    maxDeduction: number;
    /** 是否抵扣税费与附加费 */
    deductTaxAndFee: boolean;
    /** 适用商品ID列表 */
    applicableProductIds: number[];
    /** 不可用原因 */
    reason?: string;
    /** 不可用原因码 */
    reasonCode?: string;
    /** 原始策略评估结果 */
    strategyResult?: EvaluationResult;
}
