Fix bugs and generics in calculateLockedSums()
This commit is contained in:
+30
-16
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user