61 lines
1.9 KiB
Solidity
61 lines
1.9 KiB
Solidity
|
|
// SPDX-License-Identifier: MIT
|
||
|
|
pragma solidity ^0.8.20;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @title IVault
|
||
|
|
* @notice Interface for Vault contract
|
||
|
|
* @dev Aave-style vault operations (deposit, borrow, repay, withdraw)
|
||
|
|
*/
|
||
|
|
interface IVault {
|
||
|
|
/**
|
||
|
|
* @notice Deposit M0 collateral into vault
|
||
|
|
* @param asset Collateral asset address
|
||
|
|
* @param amount Amount to deposit
|
||
|
|
*/
|
||
|
|
function deposit(address asset, uint256 amount) external payable;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Borrow eMoney against collateral
|
||
|
|
* @param currency eMoney currency address
|
||
|
|
* @param amount Amount to borrow
|
||
|
|
*/
|
||
|
|
function borrow(address currency, uint256 amount) external;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Repay borrowed eMoney
|
||
|
|
* @param currency eMoney currency address
|
||
|
|
* @param amount Amount to repay
|
||
|
|
*/
|
||
|
|
function repay(address currency, uint256 amount) external;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Withdraw collateral from vault
|
||
|
|
* @param asset Collateral asset address
|
||
|
|
* @param amount Amount to withdraw
|
||
|
|
*/
|
||
|
|
function withdraw(address asset, uint256 amount) external;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Get vault owner
|
||
|
|
* @return owner Vault owner address
|
||
|
|
*/
|
||
|
|
function owner() external view returns (address);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @notice Get vault health
|
||
|
|
* @return healthRatio Collateralization ratio in basis points
|
||
|
|
* @return collateralValue Total collateral value in XAU
|
||
|
|
* @return debtValue Total debt value in XAU
|
||
|
|
*/
|
||
|
|
function getHealth() external view returns (
|
||
|
|
uint256 healthRatio,
|
||
|
|
uint256 collateralValue,
|
||
|
|
uint256 debtValue
|
||
|
|
);
|
||
|
|
|
||
|
|
event Deposited(address indexed asset, uint256 amount, address indexed depositor);
|
||
|
|
event Borrowed(address indexed currency, uint256 amount, address indexed borrower);
|
||
|
|
event Repaid(address indexed currency, uint256 amount, address indexed repayer);
|
||
|
|
event Withdrawn(address indexed asset, uint256 amount, address indexed withdrawer);
|
||
|
|
}
|