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