Skip to content

Commit

Permalink
Merge pull request #172 from gammaswap/feat/fix-error-code
Browse files Browse the repository at this point in the history
publish package
  • Loading branch information
0xDanr committed Apr 17, 2024
2 parents 89cdfa4 + 19a9e50 commit a8104f9
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 3 deletions.
6 changes: 3 additions & 3 deletions contracts/strategies/cpmm/base/CPMMBaseLongStrategy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ abstract contract CPMMBaseLongStrategy is BaseLongStrategy, CPMMBaseStrategy {
error BadDelta();
error ZeroReserves();
error InvalidTradingFee();
error InsufficientTokeRepayment();
error InsufficientTokenRepayment();

/// @return feeSource - source of tradingFee for tradingFee1
address immutable public feeSource;
Expand Down Expand Up @@ -60,12 +60,12 @@ abstract contract CPMMBaseLongStrategy is BaseLongStrategy, CPMMBaseStrategy {
if(maxAmounts.length == 2) {
if(amounts[0] > maxAmounts[0]) {
unchecked {
if(amounts[0] - maxAmounts[0] > 1000) revert InsufficientTokeRepayment();
if(amounts[0] - maxAmounts[0] > 1000) revert InsufficientTokenRepayment();
}
}
if(amounts[1] > maxAmounts[1]) {
unchecked {
if(amounts[1] - maxAmounts[1] > 1000) revert InsufficientTokeRepayment();
if(amounts[1] - maxAmounts[1] > 1000) revert InsufficientTokenRepayment();
}
}
amounts[0] = GSMath.min(amounts[0], maxAmounts[0]);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,4 +173,23 @@ contract TestCPMMBatchLiquidationStrategy is CPMMBatchLiquidationStrategy, BaseB
function _calcDynamicOriginationFee(uint256 baseOrigFee, uint256 utilRate, uint256 lowUtilRate, uint256 minUtilRate1, uint256 minUtilRate2, uint256 feeDivisor) internal virtual override view returns(uint256) {
return 0;
}

function checkExpectedUtilizationRate(uint256 lpTokens, bool isLoan) internal virtual override {
}

function calcTokensToRepay(uint128[] memory reserves, uint256 liquidity, uint128[] memory maxAmounts) internal virtual override(BaseLongStrategy,CPMMBaseLongStrategy) view returns(uint256[] memory amounts) {
amounts = new uint256[](2);
uint256 lastCFMMInvariant = calcInvariant(address(0), reserves);

uint256 lastCFMMTotalSupply = s.lastCFMMTotalSupply;
uint256 expectedLPTokens = liquidity * lastCFMMTotalSupply / lastCFMMInvariant;

amounts[0] = expectedLPTokens * reserves[0] / lastCFMMTotalSupply + 1;
amounts[1] = expectedLPTokens * reserves[1] / lastCFMMTotalSupply + 1;

if(maxAmounts.length == 2) {
amounts[0] = GSMath.min(amounts[0], maxAmounts[0]);
amounts[1] = GSMath.min(amounts[1], maxAmounts[1]);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -173,4 +173,23 @@ contract TestDSV2BatchLiquidationStrategy is DSV2BatchLiquidationStrategy, BaseB
function _calcDynamicOriginationFee(uint256 baseOrigFee, uint256 utilRate, uint256 lowUtilRate, uint256 minUtilRate1, uint256 minUtilRate2, uint256 feeDivisor) internal virtual override view returns(uint256) {
return 0;
}

function checkExpectedUtilizationRate(uint256 lpTokens, bool isLoan) internal virtual override {
}

function calcTokensToRepay(uint128[] memory reserves, uint256 liquidity, uint128[] memory maxAmounts) internal virtual override(BaseLongStrategy,CPMMBaseLongStrategy) view returns(uint256[] memory amounts) {
amounts = new uint256[](2);
uint256 lastCFMMInvariant = calcInvariant(address(0), reserves);

uint256 lastCFMMTotalSupply = s.lastCFMMTotalSupply;
uint256 expectedLPTokens = liquidity * lastCFMMTotalSupply / lastCFMMInvariant;

amounts[0] = expectedLPTokens * reserves[0] / lastCFMMTotalSupply + 1;
amounts[1] = expectedLPTokens * reserves[1] / lastCFMMTotalSupply + 1;

if(maxAmounts.length == 2) {
amounts[0] = GSMath.min(amounts[0], maxAmounts[0]);
amounts[1] = GSMath.min(amounts[1], maxAmounts[1]);
}
}
}

0 comments on commit a8104f9

Please sign in to comment.