import { Logger } from "@nestjs/common";
import { PHXGrpcClientSystemService } from "src/module/grpc-client/grpc-client-system.service";
import { SETTING_TYPE } from "src/lib/types/tuition";
export interface ISettingEarlyPromotionItem {
    school_id: number;
    list_setting_detail: Array<{
        code: string;
    }>;
}
export interface ISettingEarlyPromotion {
    listSettingEarlyPromotion: Array<ISettingEarlyPromotionItem>;
    listSettingEarlyPromotionCondition: Array<ISettingEarlyPromotionItem>;
    listSettingEarlyMustPayCondition: Array<ISettingEarlyPromotionItem>;
}
export interface IDataTuitionEarlyPromotion {
    school_term_id?: number;
    total_tuition: number;
    total_to_pay: number;
    total_promotion_computed: number;
    total_promotion_reference: number;
}
export declare class PHXSettingFormulaPromotionV2 {
    private readonly grpcClientSystemService;
    logger: Logger;
    constructor(grpcClientSystemService: PHXGrpcClientSystemService);
    getSettingFormulaPromoByCode(code: string, setting_type: SETTING_TYPE, hostname: string): Promise<any>;
    private getTotalToPayBySetting;
    generateTuitionAfterPromotion(feeDebtRecord: Array<any>, listSettingEarlyPromotionBySchoolId: Array<any>, listSettingEarlyPromotionConditionBySchoolId: Array<any>, listSettingEarlyMustPayConditionBySchoolId: Array<any>): {
        dataTuitionByYear: IDataTuitionEarlyPromotion;
        listDataTuitionBySemester: IDataTuitionEarlyPromotion[];
    };
    getTotalPromotionForEarlyPromo(listSettingEarlyPromotion: Array<any>, listSettingEarlyPromotionCondition: Array<any>, recordItem: any): {
        totalPromotionReference: number;
        totalPromotionComputed: number;
    };
    private getTotalPromotionReference;
    getFormulaSettingBySchoolId(listFormulaSetting: Array<any>, schoolId: number): any[];
    checkIsLimitBySibling(listSetting: Array<any>): boolean;
}
