2020-08-20 12:32:20 +00:00
|
|
|
// SPDX-License-Identifier: agpl-3.0
|
|
|
|
pragma solidity ^0.6.8;
|
|
|
|
|
2020-10-15 13:25:27 +00:00
|
|
|
import {IERC20} from '../../dependencies/openzeppelin/contracts/IERC20.sol';
|
2020-09-21 15:41:38 +00:00
|
|
|
import {IScaledBalanceToken} from './IScaledBalanceToken.sol';
|
2020-08-20 12:32:20 +00:00
|
|
|
|
2020-09-21 15:41:38 +00:00
|
|
|
interface IAToken is IERC20, IScaledBalanceToken {
|
2020-08-21 14:03:01 +00:00
|
|
|
/**
|
|
|
|
* @dev emitted after aTokens are burned
|
|
|
|
* @param from the address performing the redeem
|
|
|
|
* @param value the amount to be redeemed
|
2020-09-07 15:55:47 +00:00
|
|
|
* @param index the last index of the reserve
|
2020-08-21 14:03:01 +00:00
|
|
|
**/
|
2020-09-14 13:53:34 +00:00
|
|
|
event Burn(address indexed from, address indexed target, uint256 value, uint256 index);
|
2020-08-21 14:03:01 +00:00
|
|
|
/**
|
|
|
|
* @dev emitted during the transfer action
|
|
|
|
* @param from the address from which the tokens are being transferred
|
|
|
|
* @param to the adress of the destination
|
|
|
|
* @param value the amount to be minted
|
2020-09-07 15:55:47 +00:00
|
|
|
* @param index the last index of the reserve
|
2020-08-21 14:03:01 +00:00
|
|
|
**/
|
2020-09-14 13:53:34 +00:00
|
|
|
event BalanceTransfer(address indexed from, address indexed to, uint256 value, uint256 index);
|
2020-08-20 12:32:20 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @dev burns the aTokens and sends the equivalent amount of underlying to the target.
|
|
|
|
* only lending pools can call this function
|
2020-08-21 13:38:47 +00:00
|
|
|
* @param amount the amount being burned
|
2020-09-12 11:18:17 +00:00
|
|
|
* @param index the liquidity index
|
2020-08-20 12:32:20 +00:00
|
|
|
**/
|
|
|
|
function burn(
|
2020-08-21 13:38:47 +00:00
|
|
|
address user,
|
|
|
|
address underlyingTarget,
|
2020-09-12 11:18:17 +00:00
|
|
|
uint256 amount,
|
|
|
|
uint256 index
|
2020-08-20 12:32:20 +00:00
|
|
|
) external;
|
|
|
|
|
|
|
|
/**
|
2020-09-14 13:09:16 +00:00
|
|
|
* @dev mints aTokens to the reserve treasury
|
|
|
|
* @param amount the amount to mint
|
|
|
|
* @param index the liquidity index of the reserve
|
|
|
|
**/
|
|
|
|
function mintToTreasury(uint256 amount, uint256 index) external;
|
2020-08-20 12:32:20 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @dev transfers tokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken
|
|
|
|
* only lending pools can call this function
|
2020-08-21 13:38:47 +00:00
|
|
|
* @param from the address from which transfer the aTokens
|
|
|
|
* @param to the destination address
|
|
|
|
* @param value the amount to transfer
|
2020-08-20 12:32:20 +00:00
|
|
|
**/
|
|
|
|
function transferOnLiquidation(
|
2020-08-21 13:38:47 +00:00
|
|
|
address from,
|
|
|
|
address to,
|
|
|
|
uint256 value
|
2020-08-20 12:32:20 +00:00
|
|
|
) external;
|
|
|
|
|
2020-08-21 13:38:47 +00:00
|
|
|
function isTransferAllowed(address user, uint256 amount) external view returns (bool);
|
2020-08-20 12:32:20 +00:00
|
|
|
|
|
|
|
/**
|
2020-09-09 19:16:39 +00:00
|
|
|
* @dev transfer the amount of the underlying asset to the user
|
2020-08-21 13:38:47 +00:00
|
|
|
* @param user address of the user
|
|
|
|
* @param amount the amount to transfer
|
2020-08-20 12:32:20 +00:00
|
|
|
* @return the amount transferred
|
|
|
|
**/
|
2020-09-09 19:16:39 +00:00
|
|
|
function transferUnderlyingTo(address user, uint256 amount) external returns (uint256);
|
2020-08-20 12:32:20 +00:00
|
|
|
}
|