diff --git a/contracts/Liquidator.sol b/contracts/Liquidator.sol index ff2edff..aec11dc 100644 --- a/contracts/Liquidator.sol +++ b/contracts/Liquidator.sol @@ -270,7 +270,16 @@ contract Liquidator is Ownable { address creditAccount, uint256 hfOptimal, IPartialLiquidationBotV3.PriceUpdate[] memory priceUpdates - ) external returns (address tokenOut, uint256 optimalAmount, uint256 repaidAmount, bool isOptimalRepayable) { + ) + external + returns ( + address tokenOut, + uint256 optimalAmount, + uint256 optimalAmountUnderlying, + uint256 repaidAmount, + bool isOptimalRepayable + ) + { ICreditManagerV3 creditManager = ICreditManagerV3(ICreditAccountV3(creditAccount).creditManager()); IPriceOracleV3 priceOracle = IPriceOracleV3(creditManager.priceOracle()); @@ -280,6 +289,7 @@ contract Liquidator is Ownable { (optimalAmount, repaidAmount, isOptimalRepayable) = _getOptimalAmount(creditAccount, tokenOut, hfOptimal, creditManager, priceOracle); + optimalAmountUnderlying = priceOracle.convert(optimalAmount, tokenOut, creditManager.underlying()); } function _getBestTokenOut(address creditAccount, ICreditManagerV3 creditManager, IPriceOracleV3 priceOracle) diff --git a/contracts/interfaces/ILiquidator.sol b/contracts/interfaces/ILiquidator.sol index 102e77c..b8f8460 100644 --- a/contracts/interfaces/ILiquidator.sol +++ b/contracts/interfaces/ILiquidator.sol @@ -43,7 +43,15 @@ interface ILiquidator { address creditAccount, uint256 hfOptimal, IPartialLiquidationBotV3.PriceUpdate[] memory priceUpdates - ) external returns (address tokenOut, uint256 optimalAmount, uint256 repaidAmount, bool isOptimalRepayable); + ) + external + returns ( + address tokenOut, + uint256 optimalAmount, + uint256 optimalAmountUnderlying, + uint256 repaidAmount, + bool isOptimalRepayable + ); function registerCM(address creditManager) external;