From af6114b051257ff52e03cda256eeaf17e422dbe6fc8da71831f7fa1afef71bd3 Mon Sep 17 00:00:00 2001 From: Minimons Date: Wed, 10 Jun 2026 09:21:44 +0200 Subject: [PATCH] Fix bugs and generics in calculateLockedSums() --- .../ref/DesiredPositionCalculatorImpl.tjava | 46 ++++++++++++------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/src/main/tjava/com/fanitas/evelyn/core/impl/ref/DesiredPositionCalculatorImpl.tjava b/src/main/tjava/com/fanitas/evelyn/core/impl/ref/DesiredPositionCalculatorImpl.tjava index 5313bbc..a21c3f4 100644 --- a/src/main/tjava/com/fanitas/evelyn/core/impl/ref/DesiredPositionCalculatorImpl.tjava +++ b/src/main/tjava/com/fanitas/evelyn/core/impl/ref/DesiredPositionCalculatorImpl.tjava @@ -107,12 +107,14 @@ public class DesiredPositionCalculatorImpl implements DesiredPositionCalculator } @Override - public Pair calculateLockedSums(ΩPriceΩ currentPrice) { + public Pair 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 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); }