46 lines
1.4 KiB
Solidity
46 lines
1.4 KiB
Solidity
|
|
// SPDX-License-Identifier: MIT
|
||
|
|
pragma solidity ^0.8.20;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @title ILiquidation
|
||
|
|
* @notice Interface for Liquidation Module
|
||
|
|
* @dev Handles liquidation of undercollateralized vaults
|
||
|
|
*/
|
||
|
|
interface ILiquidation {
|
||
|
|
/**
|
||
|
|
* @notice Liquidate an undercollateralized vault
|
||
|
|
* @param vault Vault address to liquidate
|
||
|
|
* @param currency Debt currency address
|
||
|
|
* @param maxDebt Maximum debt to liquidate
|
||
|
|
* @return seizedCollateral Amount of collateral seized
|
||
|
|
* @return repaidDebt Amount of debt repaid
|
||
|
|
*/
|
||
|
|
function liquidate(
|
||
|
|
address vault,
|
||
|
|
address currency,
|
||
|
|
uint256 maxDebt
|
||
|
|
) external returns (uint256 seizedCollateral, uint256 repaidDebt);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Check if a vault can be liquidated
|
||
|
|
* @param vault Vault address
|
||
|
|
* @return canLiquidate True if vault can be liquidated
|
||
|
|
* @return healthRatio Current health ratio in basis points
|
||
|
|
*/
|
||
|
|
function canLiquidate(address vault) external view returns (bool canLiquidate, uint256 healthRatio);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Get liquidation bonus (penalty)
|
||
|
|
* @return bonus Liquidation bonus in basis points
|
||
|
|
*/
|
||
|
|
function liquidationBonus() external view returns (uint256);
|
||
|
|
|
||
|
|
event VaultLiquidated(
|
||
|
|
address indexed vault,
|
||
|
|
address indexed currency,
|
||
|
|
uint256 seizedCollateral,
|
||
|
|
uint256 repaidDebt,
|
||
|
|
address indexed liquidator
|
||
|
|
);
|
||
|
|
}
|