aave-protocol-v2/contracts/tokenization/interfaces/IStableDebtToken.sol
2020-07-13 11:54:08 +03:00

53 lines
1.4 KiB
Solidity

pragma solidity ^0.6.0;
/**
* @title interface IStableDebtToken
*
* @notice defines the interface for the stable debt token
*
* @dev it does not inherit from IERC20 to save in code size
*
* @author Aave
*
**/
interface IStableDebtToken {
/**
* @dev mints debt token to the target user. The resulting rate is the weighted average
* between the rate of the new debt and the rate of the previous debt
* @param _user the address of the user
* @param _amount the amount of debt tokens to mint
* @param _rate the rate of the debt being minted.
**/
function mint(
address _user,
uint256 _amount,
uint256 _rate
) external virtual;
/**
* @dev burns debt of the target user.
* @param _user the address of the user
* @param _amount the amount of debt tokens to mint
**/
function burn(address _user, uint256 _amount) external virtual;
/**
* @dev returns the average rate of all the stable rate loans.
* @return the average stable rate
**/
function getAverageStableRate() external virtual view returns (uint256);
/**
* @dev returns the stable rate of the user debt
* @return the stable rate of the user
**/
function getUserStableRate(address _user) external virtual view returns (uint256);
/**
* @dev returns the timestamp of the last update of the user
* @return the timestamp
**/
function getUserLastUpdated(address _user) external virtual view returns (uint40);
}