Skip to content

Commit 6bb44bf

Browse files
committed
feat: add ILiquidator interface
1 parent f883f2a commit 6bb44bf

File tree

2 files changed

+41
-8
lines changed

2 files changed

+41
-8
lines changed

contracts/Liquidator.sol

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
88
import {SafeERC20} from "@1inch/solidity-utils/contracts/libraries/SafeERC20.sol";
99

1010
import {IRouterV3, RouterResult} from "./interfaces/IRouterV3.sol";
11+
import {ILiquidator, LiquidationResult} from "./interfaces/ILiquidator.sol";
1112
import {IPartialLiquidationBotV3} from "@gearbox-protocol/bots-v3/contracts/interfaces/IPartialLiquidationBotV3.sol";
1213
import {ICreditManagerV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditManagerV3.sol";
1314
import {ICreditFacadeV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditFacadeV3.sol";
@@ -17,13 +18,6 @@ import {MultiCall, MultiCallOps} from "@gearbox-protocol/core-v2/contracts/libra
1718
import {AaveFLTaker} from "./AaveFLTaker.sol";
1819
import {IAavePoolFlashLoan} from "./interfaces/IAavePoolFlashLoan.sol";
1920

20-
struct LiquidationResult {
21-
MultiCall[] calls;
22-
int256 profit;
23-
uint256 amountIn;
24-
uint256 amountOut;
25-
}
26-
2721
struct IntermediateData {
2822
bool preview;
2923
address creditManager;
@@ -39,7 +33,7 @@ struct IntermediateData {
3933
uint256 initialUnderlyingBalance;
4034
}
4135

42-
contract Liquidator is Ownable {
36+
contract Liquidator is ILiquidator, Ownable {
4337
using SafeERC20 for IERC20;
4438
using MultiCallOps for MultiCall[];
4539

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// SPDX-License-Identifier: BUSL-1.1
2+
// Gearbox Protocol. Generalized leverage for DeFi protocols
3+
// (c) Gearbox Foundation, 2024
4+
pragma solidity ^0.8.17;
5+
6+
import {IPartialLiquidationBotV3} from "@gearbox-protocol/bots-v3/contracts/interfaces/IPartialLiquidationBotV3.sol";
7+
import {MultiCall} from "@gearbox-protocol/core-v2/contracts/libraries/MultiCall.sol";
8+
9+
struct LiquidationResult {
10+
MultiCall[] calls;
11+
int256 profit;
12+
uint256 amountIn;
13+
uint256 amountOut;
14+
}
15+
16+
interface ILiquidator {
17+
function cmToCA(address cm) external view returns (address);
18+
19+
function partialLiquidateAndConvert(
20+
address creditManager,
21+
address creditAccount,
22+
address assetOut,
23+
uint256 amountOut,
24+
uint256 flashLoanAmount,
25+
IPartialLiquidationBotV3.PriceUpdate[] calldata priceUpdates,
26+
MultiCall[] calldata conversionCalls
27+
) external;
28+
29+
function previewPartialLiquidation(
30+
address creditManager,
31+
address creditAccount,
32+
address assetOut,
33+
uint256 amountOut,
34+
uint256 flashLoanAmount,
35+
IPartialLiquidationBotV3.PriceUpdate[] calldata priceUpdates,
36+
address[] calldata connectors,
37+
uint256 slippage
38+
) external returns (LiquidationResult memory res);
39+
}

0 commit comments

Comments
 (0)