contract ERC20 {
  uint256 public totalSupply;

  function balanceOf(address _who) public view returns (uint256);

  function allowance(address _owner, address _spender) public view returns (uint256);

 // This generates a public event on the blockchain that will notify clients
  function transfer(address _to, uint256 _value) public returns (bool);
  
// This generates a public event on the blockchain that will notify clients
  function approve(address _spender, uint256 _value) public returns (bool);

  function transferFrom(address _from, address _to, uint256 _value) public returns (bool);

  event Transfer( address indexed from, address indexed to,  uint256 value);

  event Approval(address indexed owner, address indexed spender, uint256 value);
  
  // This notifies clients about the amount burnt
  event Burn(address indexed from, uint256 value);
}
function transfer(address _to, uint256 _value) public returns (bool);

// This generates a public event on the blockchain that will notify clients