// 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 ); }