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