package org.mifos.clientportfolio.newloan.domain;
import java.util.List;
import org.mifos.accounts.loan.business.LoanScheduleEntity;
import org.mifos.accounts.loan.business.RepaymentTotals;
import org.mifos.accounts.productdefinition.util.helpers.GraceType;
import org.mifos.framework.util.helpers.Money;
public interface LoanScheduleRounderHelper {
RepaymentTotals calculateInitialTotals_v2(
List<LoanScheduleEntity> unroundedLoanSchedules, Money loanAmount,
List<LoanScheduleEntity> allExistingLoanSchedules);
boolean isGraceInstallment_v2(int installmentNum, GraceType graceType, Short gracePeriodDuration);
LoanScheduleEntity roundAndAdjustGraceInstallment_v2(LoanScheduleEntity roundedInstallment);
void roundAndAdjustNonGraceInstallmentForDecliningEPI_v2(LoanScheduleEntity roundedInstallment);
void roundAndAdjustButLastNonGraceInstallment_v2(LoanScheduleEntity roundedInstallment);
void updateRunningTotals_v2(RepaymentTotals totals, LoanScheduleEntity roundedInstallment);
void roundAndAdjustLastInstallment_v2(LoanScheduleEntity roundedInstallment, RepaymentTotals totals);
}