39 lines
1.3 KiB
Solidity
39 lines
1.3 KiB
Solidity
|
|
// SPDX-License-Identifier: MIT
|
||
|
|
pragma solidity ^0.8.20;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @title ICollateralAdapter
|
||
|
|
* @notice Interface for Collateral Adapter
|
||
|
|
* @dev Handles M0 collateral deposits and withdrawals
|
||
|
|
*/
|
||
|
|
interface ICollateralAdapter {
|
||
|
|
/**
|
||
|
|
* @notice Deposit M0 collateral
|
||
|
|
* @param vault Vault address
|
||
|
|
* @param asset Collateral asset address
|
||
|
|
* @param amount Amount to deposit
|
||
|
|
*/
|
||
|
|
function deposit(address vault, address asset, uint256 amount) external payable;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Withdraw M0 collateral
|
||
|
|
* @param vault Vault address
|
||
|
|
* @param asset Collateral asset address
|
||
|
|
* @param amount Amount to withdraw
|
||
|
|
*/
|
||
|
|
function withdraw(address vault, address asset, uint256 amount) external;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Seize collateral during liquidation
|
||
|
|
* @param vault Vault address
|
||
|
|
* @param asset Collateral asset address
|
||
|
|
* @param amount Amount to seize
|
||
|
|
* @param liquidator Liquidator address
|
||
|
|
*/
|
||
|
|
function seize(address vault, address asset, uint256 amount, address liquidator) external;
|
||
|
|
|
||
|
|
event CollateralDeposited(address indexed vault, address indexed asset, uint256 amount);
|
||
|
|
event CollateralWithdrawn(address indexed vault, address indexed asset, uint256 amount);
|
||
|
|
event CollateralSeized(address indexed vault, address indexed asset, uint256 amount, address indexed liquidator);
|
||
|
|
}
|