contract BRSToken is AccessControlEnumerable, ERC20Burnable {

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    // constructor
    constructor(string memory name, string memory symbol, uint256 amount) ERC20(name, symbol) {

        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(MINTER_ROLE, _msgSender());

        _mint(_msgSender(), amount);
    }

    // mint function
    function mint(address to, uint256 amount) public virtual {

        require(hasRole(MINTER_ROLE, _msgSender()), "BRS: must have minter role");
        _mint(to, amount);
    }
}
function mint(address to, uint256 amount) public virtual {

    require(hasRole(MINTER_ROLE, _msgSender()), "BRS: must have minter role");
    _mint(to, amount);
}

// mint function