export declare enum DiscountHooks {
    OnDiscountListChange = "discount:onDiscountListChange",
    OnDestroy = "discount:onDestroy"
}
interface Product {
    id: number;
    title: string;
    is_charge_tax: number;
    base_price: string;
}
interface Formattitle {
    auto: string;
    original: string;
    en?: any;
    'zh-CN'?: any;
    'zh-HK'?: any;
}
interface PackageSubItemUsageRules {
    type: 'universal_discount' | 'package_exclusive' | 'single_item_promo' | 'custom_usage_rules';
    rules: ("original_price" | "markup_price")[];
    package_scope?: {
        type: 'all_packages' | 'specific_packages' | 'product_all' | 'products';
        exclude_bundle_product_ids: number[];
        include_bundle_product_ids: number[];
        filter: 0 | 1;
        rule: any[];
        rule_type: 'and' | 'or';
    };
}
interface Limitedrelationproductdata {
    id: number;
    type: 'product_all' | 'products' | 'product_collection';
    product_ids: number[];
    product_collection_id: number[];
    package_sub_item_usage_rules?: PackageSubItemUsageRules;
    filter: 0 | 1;
    exclude_product_ids: number[];
}
interface ApplicableProductDetails {
    amount: string;
    type: string;
    resource_id: number;
    title: string;
    original_amount: string;
    num: number;
    metadata?: {
        product_discount_difference?: number;
    };
    discount?: {
        fixed_amount?: number;
        product_id?: number;
        original_amount?: string;
        percent?: string;
        resource_id?: number;
        title?: string;
    };
    _num: number;
}
interface UsageCreditsValue {
    total_credits: number;
    per_user_limit: number;
    max_per_day: number;
    max_per_week: number;
    max_per_month: number;
}
interface ExtensionData {
    id: number;
    shop_id: number;
    product_id: number;
    field_id: number;
    field_key: string;
    type: string;
    value: UsageCreditsValue | Record<string, any> | string | number | boolean | any[];
    created_at: string | null;
    updated_at: string | null;
    deleted_at: string | null;
}
export interface Discount {
    id: number;
    product_name: string;
    encoded: string;
    code: string;
    tag: string;
    expire_time?: string;
    product_id: number;
    relation_type: string;
    par_value: string;
    used_par_value: string;
    limit_status: string;
    limited_relation_product_data: Limitedrelationproductdata;
    balance: string;
    format_title: Formattitle;
    metadata?: {
        discount_card_type?: 'fixed_amount' | 'percent';
        custom_product_bundle_map_id?: string;
        validity_type?: "custom_schedule_validity" | "fixed_validity";
        discount_calculation_mode: 'item_level' | 'order_level';
        holder: {
            type: "customer" | "custom";
        };
    };
    product: Product;
    type: "product" | 'good_pass';
    resource_id?: number;
    savedAmount?: number;
    isEditMode?: boolean;
    isScan?: boolean;
    discount?: {
        discount_product_id: number;
        resource_id: number;
        discount_calculation_mode: 'item_level' | 'order_level';
    };
    isManualSelect?: boolean;
    isDisabled?: boolean;
    isSelected?: boolean;
    isAvailable?: boolean;
    isUsed?: boolean;
    config?: {
        isAvailable?: boolean;
        /** 最大抵扣金额 */
        maxDeductionAmount?: number;
        /** 每单最多使用张数 */
        maxUsagePerOrder?: number;
        /** 是否抵扣税费与附加费 */
        deductTaxAndFee?: boolean;
        /** 适用粒度（多商品共用） */
        allowCrossProduct?: boolean;
        /** 可用商品数量上限 */
        applicableProductLimit?: number;
        /** 是否抵扣单规格价格 (Option Price) */
        deductOptionPrice?: boolean;
    };
    applicableProductIds?: number[];
    applicableProductDetails: ApplicableProductDetails[];
    appliedProductDetails: ApplicableProductDetails[];
    isDisabledForProductUsed?: boolean;
    amount?: number;
    customer_id?: number | string | null;
    extension_data?: ExtensionData[];
    total_order_behavior_count?: number;
    today_order_behavior_count?: number;
    week_order_behavior_count?: number;
    month_order_behavior_count?: number;
    customer_order_behavior_count?: number;
    custom_schedule_snapshot?: {
        data: any[];
    };
    num?: number;
    start_date?: string;
    start_time?: string;
}
export interface DiscountState {
    discountList: Discount[];
    originalDiscountList?: Discount[];
}
export interface DiscountModuleAPI {
    setDiscountList: (discountList: Discount[]) => Promise<void>;
    clear: () => Promise<void>;
}
export {};
