mirror of
https://github.com/luxfi/uma.git
synced 2026-10-30 15:14:44 +00:00
35 lines
1.1 KiB
Solidity
35 lines
1.1 KiB
Solidity
// SPDX-License-Identifier: AGPL-3.0-only
|
|
pragma solidity ^0.8.0;
|
|
|
|
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
|
|
/**
|
|
* @title ERC20 interface that includes burn and mint methods.
|
|
*/
|
|
abstract contract ExpandedIERC20 is IERC20 {
|
|
/**
|
|
* @notice Burns a specific amount of the caller's tokens.
|
|
* @dev Only burns the caller's tokens, so it is safe to leave this method permissionless.
|
|
*/
|
|
function burn(uint256 value) external virtual;
|
|
|
|
/**
|
|
* @dev Burns `value` tokens owned by `recipient`.
|
|
* @param recipient address to burn tokens from.
|
|
* @param value amount of tokens to burn.
|
|
*/
|
|
function burnFrom(address recipient, uint256 value) external virtual returns (bool);
|
|
|
|
/**
|
|
* @notice Mints tokens and adds them to the balance of the `to` address.
|
|
* @dev This method should be permissioned to only allow designated parties to mint tokens.
|
|
*/
|
|
function mint(address to, uint256 value) external virtual returns (bool);
|
|
|
|
function addMinter(address account) external virtual;
|
|
|
|
function addBurner(address account) external virtual;
|
|
|
|
function resetOwner(address account) external virtual;
|
|
}
|