contract TealCoin is ERC20, MinterRole {
    string private _name;
    string private _symbol;
    uint8 private _decimals;


    /**
     * @dev Constructor.
     */
    constructor() public payable {
      _name = 'TealCoin';
      _symbol = 'TLC';
      _decimals = 6;
    }

    /**
     * @dev See `ERC20._mint`.
     *
     * Requirements:
     *
     * - the caller must have the `MinterRole`.
     */
    function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }
    
    /**
     * @dev transfers minter role from msg.sender to newMinter
     */
    function transferMinterRole(address newMinter) public {
      addMinter(newMinter);
      renounceMinter();
    }

    // optional functions from ERC20 stardard

    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
      return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
      return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
      return _decimals;
    }
}
function mint(address account, uint256 amount) public onlyMinter returns (bool) {
        _mint(account, amount);
        return true;
    }
/**
 * @dev See `ERC20._mint`.
 *
 * Requirements:
 *
 * - the caller must have the `MinterRole`.
 */