import { Discount } from '../Discount/types';
export declare enum UnavailableReason {
    TimeLimit = "time_limit",
    ProductNotApplicable = "product_not_applicable",
    AlreadyUsed = "already_used",
    Unknown = "unknown"
}
export declare enum RulesHooks {
    OnRulesListChange = "rules:onRulesListChange",
    OnDestroy = "rules:onDestroy"
}
export interface Rules {
    id: string;
    name: string;
    description: string;
    discount: number;
}
export interface RulesState {
    rulesList: Rules[];
}
export interface DiscountResult {
    productList: any[];
    discountList: any[];
}
export interface RulesModuleAPI {
    setRulesList: (rulesList: Rules[]) => Promise<void>;
    clear: () => Promise<void>;
    calcDiscount: (params: {
        discountList: any[];
        productList: any[];
        holders: {
            form_record_id: number;
        }[];
        isFormSubject: boolean;
        orderTotalAmount: number;
    }) => DiscountResult;
}
type ProductDetail = {
    isClient?: boolean;
    isManualDiscount?: boolean;
    booking_id: any;
    id: number;
    price: number | string;
    total: number;
    discount_list: Discount[];
    origin_total: number;
    _id: string;
    options?: any[];
    bundle?: any[];
    original_price?: number | string;
    num?: number;
    quantity: number;
    vouchersApplicable?: boolean;
    holder_id?: number;
    startDate?: any;
    main_product_selling_price?: number | string;
};
export interface RulesParamsHooks {
    getProduct: (product: Record<string, any>) => ProductDetail;
    setProduct: (product: Record<string, any>, values: {
        _id?: string;
        total?: number;
        discount_list: any[];
        origin_total?: number;
        price?: string | number;
        variant?: any[];
        original_price?: number | string;
        quantity?: number;
        bundle?: any[];
        main_product_selling_price?: string | number;
        options?: any[];
    }) => Record<string, any>;
}
export {};
