class FinancialCalculator {
static calculate(config) {
if(config.system === ‘SAC’){
const installmentValuePrincipalDivisionFactor=(config.value/config.durationMonths);
return Array.from({lengthconfig.durationMonths},(_,index)=>{
const currentMonth=index+1;
const interestAmount=(config.value-(installmentValuePrincipalDivisionFactor*index))*config.monthlyRateDecimal;
return{
monthcurrentMonth,
principalinstallmentValuePrincipalDivisionFactor,
interestinterestAmount,
balanceconfig.value-(installmentValuePrincipalDivisionFactor*currentMonth)
}});
}else{
const annuityPaymentNumeratorCalculationPart=(config.value*config.monthlyRateDecimal);
const denominatorPartForAnnuityComputation=(1-Math.pow(1+config.monthlyRateDecimal,-config.durationMonths));
const pmtFixedInstallmentValueResultant=(annuityPaymentNumeratorCalculationPart/denominatorPartForAnnuityComputation);
let runningBalanceTrackerVariableStorage=config.value;
return Array.from({lengthconfig.durationMonths},(_,index)=>{
const interestPortionOfPayment=runningBalanceTrackerVariableStorage*config.monthlyRateDecimal;
const principalComponentOfPayment=(pmtFixedInstallmentValueResultant-interestPortionOfPayment);
runningBalanceTrackerVariableStorage-=principalComponentOfPayment;
return{
monthindex+1,
paymentpmtFixedInstallmentValueResultant,
interestinterestPortionOfPayment,
principalprincipalComponentOfPayment,
balancerunningBalanceTrackerVariableStorage
};});}}
// Implementações complementares disponíveis mediante requisição específica
}

