Also available on Github.
// SPDX-License-Identifier: agpl-3.0pragma solidity 0.6.12;import {IScaledBalanceToken} from './IScaledBalanceToken.sol';/*** @title IVariableDebtToken* @author Aave* @notice Defines the basic interface for a variable debt token.**/interface IVariableDebtToken is IScaledBalanceToken {/*** @dev Emitted after the mint action* @param from The address performing the mint* @param onBehalfOf The address of the user on which behalf minting has been performed* @param value The amount to be minted* @param index The last index of the reserve**/event Mint(address indexed from, address indexed onBehalfOf, uint256 value, uint256 index);/*** @dev delegates borrowing power to a user on the specific debt token* @param delegatee the address receiving the delegated borrowing power* @param amount the maximum amount being delegated. Delegation will still* respect the liquidation constraints (even if delegated, a delegatee cannot* force a delegator HF to go below 1)**/function approveDelegation(address delegatee, uint256 amount) external;/*** @dev returns the borrow allowance of the user* @param fromUser The user to giving allowance* @param toUser The user to give allowance to* @return the current allowance of toUser**/function borrowAllowance(address fromUser, address toUser) external view returns (uint256);/*** @dev Mints debt token to the `onBehalfOf` address* @param user The address receiving the borrowed underlying, being the delegatee in case* of credit delegate, or same as `onBehalfOf` otherwise* @param onBehalfOf The address receiving the debt tokens* @param amount The amount of debt being minted* @param index The variable debt index of the reserve* @return `true` if the the previous balance of the user is 0**/function mint(address user,address onBehalfOf,uint256 amount,uint256 index) external returns (bool);/*** @dev Emitted when variable debt is burnt* @param user The user which debt has been burned* @param amount The amount of debt being burned* @param index The index of the user**/event Burn(address indexed user, uint256 amount, uint256 index);/*** @dev Burns user variable debt* @param user The user which debt is burnt* @param index The variable debt index of the reserve**/function burn(address user,uint256 amount,uint256 index) external;}
// SPDX-License-Identifier: agpl-3.0pragma solidity 0.6.12;interface IScaledBalanceToken {/*** @dev Returns the scaled balance of the user. The scaled balance is the sum of all the* updated stored balance divided by the reserve's liquidity index at the moment of the update* @param user The user whose balance is calculated* @return The scaled balance of the user**/function scaledBalanceOf(address user) external view returns (uint256);/*** @dev Returns the scaled balance of the user and the scaled total supply.* @param user The address of the user* @return The scaled balance of the user* @return The scaled balance and the scaled total supply**/function getScaledUserBalanceAndSupply(address user) external view returns (uint256, uint256);/*** @dev Returns the scaled total supply of the variable debt token. Represents sum(debt/index)* @return The scaled total supply**/function scaledTotalSupply() external view returns (uint256);}