Fix bugs and generics in calculateLockedSums()

This commit is contained in:
2026-06-10 09:21:44 +02:00
parent 4f788c87c1
commit af6114b051
@@ -107,12 +107,14 @@ public class DesiredPositionCalculatorImpl implements DesiredPositionCalculator
}
@Override
public Pair calculateLockedSums(ΩPriceΩ currentPrice) {
public Pair<MoneyAmount, MoneyAmount> calculateLockedSums(ΩPriceΩ currentPrice) {
List<ΩPriceΩ> ascendingPrices = getSortedPositionIntervalFromValues(liquidityProviderPositions);
ΩAmountΩ sum = ZERO;
ΩAmountΩ sumA = ZERO;
ΩAmountΩ sumB = ZERO;
// TODO: This smells - setting to null. Oh dear!
CurrencyType ct = null;
CurrencyType ctA = null;
CurrencyType ctB = null;
int index = lookupIndexOfFirstGreaterThanOrEqual(ascendingPrices, currentPrice);
if(index >= 0) {
@@ -120,18 +122,22 @@ public class DesiredPositionCalculatorImpl implements DesiredPositionCalculator
for (RaydiumLiquidityPoolPositionConcentrated position : liquidityProviderPositions.values()) {
if (position.priceRange().from().compareTo(startPriceOfStartPos) >= 0) {
ct = position.amountMintA().currencyType();
sum = sum.add(position.amountMintB().amount());
ctA = position.amountMintA().currencyType();
sumA = sumA.add(position.amountMintA().amount());
ctB = position.amountMintB().currencyType();
sumB = sumB.add(position.amountMintB().amount());
}
}
}
MoneyAmount ma = new MoneyAmount(sum, ct);
return new Pair(ZERO, ma);
MoneyAmount ma = new MoneyAmount(sumA, ctA);
MoneyAmount mb = new MoneyAmount(sumB, ctB);
return new Pair<>(ma, mb);
}
@Override
public Pair calculateRedistributableSums(
public Pair<MoneyAmount, MoneyAmount> calculateRedistributableSums(
ΩPriceΩ currentPrice,
MoneyAmount inactiveInAccountMintA,
MoneyAmount inactiveInAccountMintB,
@@ -139,8 +145,10 @@ public class DesiredPositionCalculatorImpl implements DesiredPositionCalculator
MoneyAmount reservedForBurnMintB
) {
List<ΩPriceΩ> ascendingValues = getSortedPositionIntervalFromValues(liquidityProviderPositions);
ΩAmountΩ redistSum = ZERO;
CurrencyType ct = null;
ΩAmountΩ redistSumA = ZERO;
ΩAmountΩ redistSumB = ZERO;
CurrencyType ctA = null;
CurrencyType ctB = null;
int index = lookupIndexOfLastLessThan(ascendingValues, currentPrice);
if(index >= 0) {
@@ -148,16 +156,22 @@ public class DesiredPositionCalculatorImpl implements DesiredPositionCalculator
for (RaydiumLiquidityPoolPositionConcentrated position : liquidityProviderPositions.values()) {
if (position.priceRange().from().compareTo(startPriceOfStartPos) <= 0) {
ct = position.amountMintB().currencyType();
redistSum = redistSum.add(position.amountMintB().amount());
ctA = position.amountMintA().currencyType();
ctB = position.amountMintB().currencyType();
redistSumA = redistSumA.add(position.amountMintA().amount());
redistSumB = redistSumB.add(position.amountMintB().amount());
}
}
}
redistSum = add(inactiveInAccountMintB, redistSum);
redistSum = subtract(redistSum, reservedForBurnMintB);
MoneyAmount ma = new MoneyAmount(redistSum, ct);
return new Pair(ZERO, ma);
redistSumA = add(inactiveInAccountMintA, redistSumA);
redistSumA = subtract(redistSumA, reservedForBurnMintA);
redistSumB = add(inactiveInAccountMintB, redistSumB);
redistSumB = subtract(redistSumB, reservedForBurnMintB);
MoneyAmount ma = new MoneyAmount(redistSumA, ctA);
MoneyAmount mb = new MoneyAmount(redistSumB, ctB);
return new Pair<>(ma, mb);
}