DepositsCalculation.java
package org.cardanofoundation.rewards.calculation;
import org.cardanofoundation.rewards.calculation.domain.RetiredPool;
import java.math.BigInteger;
import java.util.Set;
public class DepositsCalculation {
public static BigInteger calculateDepositsInEpoch(BigInteger depositsInPreviousEpoch,
BigInteger transactionDepositsInEpoch,
Set<RetiredPool> retiredPoolsInEpoch) {
BigInteger deposits = BigInteger.ZERO;
deposits = deposits.add(transactionDepositsInEpoch);
//add deposits of retired pools
var refundAmount = retiredPoolsInEpoch.stream()
.reduce(BigInteger.ZERO, (sum, retiredPool) -> sum.add(retiredPool.getDepositAmount()), BigInteger::add);
deposits = deposits.subtract(refundAmount);
return depositsInPreviousEpoch.add(deposits);
}
}