export interface TareOption {
    id: string;
    label: string;
    /** 皮重值，以系统称重单位（WeighingProps.unit）存储。 */
    value: number;
    /** 皮重值对应的单位；用于系统单位切换时的跨单位换算。 */
    unit?: WeightUnit;
}
export declare type WeighingMode = 'auto' | 'manual';
/** 重量单位，与 ProductData.unit 字段对应。 */
export declare type WeightUnit = 'KILOGRAMS' | 'GRAMS' | 'POUNDS' | 'OUNCES';
export interface WeighingValue {
    /** 称重方式 */
    mode: WeighingMode;
    /**
     * 称重原值（auto 模式为秤实时读数，manual 模式为手动输入值）。
     * 单位为系统称重单位（WeighingProps.unit），原样保留，不做换算。
     * 对外输出为固定小数位字符串，当前默认三位。
     * 购物车等下游组件从系统配置读取同一单位后即可直接展示。
     */
    weight: string;
    /**
     * 所选皮重信息。
     * tare.value 单位与 weight 一致（系统称重单位）。
     * 回填时优先按 tare.id 匹配，若不存在则按 label + value 匹配；
     * 若无匹配则自动在列表首位插入还原项（不写入 localStorage）。
     */
    tare: {
        id?: string;
        label: string;
        value: string;
        unit?: WeightUnit;
    };
    /**
     * 净重 = weight − tare.value，单位与 weight 一致（系统称重单位）。
     * 对外输出为固定小数位字符串，当前默认三位。
     */
    net_weight: string;
    /**
     * 最终价格。由组件将 net_weight 换算至商品计价单位后乘以单价得出。
     */
    total_amount: number;
    unit: WeightUnit;
    unit_weight: string;
    unit_price: string;
    scalePriceProduct?: ScalePricedProduct;
}
export interface WeighingProps {
    tareOptions?: TareOption[];
    /**
     * 编辑态恢复值。传入后组件将以此值一次性初始化 mode、grossWeight 和 tare。
     * 典型用法：将上次 onChange 回调存储的 WeighingValue 原样传回。
     * 所有重量字段均以系统称重单位（unit）为准，原样还原，无需调用方做换算。
     */
    initialValue?: WeighingValue;
    /**
     * 系统称重单位（即硬件秤的真实输出单位），默认 KILOGRAMS。
     * 秤读数以此单位为准；用户手动输入、Add Tare 表单、
     * 以及 onChange 输出的所有重量字段均使用此单位。
     * 若商品计价单位（productData.unit）与此不同，价格侧的跨单位换算
     * 由 nativeScaleTools.calculateScaleItemTotal 内部处理。
     */
    unit?: WeightUnit;
    /**
     * 货币符号，默认 '$'。来自 getData('shop_symbol')。
     */
    currencySymbol?: string;
    scalePriceProduct?: ScalePricedProduct;
    onChange?: (value: WeighingValue) => void;
}
/**
 * 商品称重配置信息，来自商品后台配置。
 * unit：商品售价对应的重量单位；unit_value：该单位计价数量。
 */
export interface ScalePricedProduct {
    id: number;
    variant_id?: number | null;
    unit: WeightUnit;
    unit_value: number;
    price: number;
}
