contract SeigToken is ERC20, Ownable, ERC20OnApprove, AuthController {
  SeigManagerI public seigManager;

  function setSeigManager(SeigManagerI _seigManager) external onlyOwner {
    seigManager = _seigManager;
  }

  //////////////////////
  // Override ERC20 functions
  //////////////////////

  function _transfer(address sender, address recipient, uint256 amount) internal {
    require(msg.sender == sender || msg.sender == recipient, "SeigToken: only sender or recipient can transfer");
    super._transfer(sender, recipient, amount);
    if (address(seigManager) != address(0)) {
      // seigManager.onTransfer(sender, recipient, amount);
    }
  }

  function _mint(address account, uint256 amount) internal {
    super._mint(account, amount);
    if (address(seigManager) != address(0)) {
      // seigManager.onTransfer(address(0), account, amount);
    }
  }

  function _burn(address account, uint256 amount) internal {
    super._burn(account, amount);
    if (address(seigManager) != address(0)) {
      // seigManager.onTransfer(account, address(0), amount);
    }
  }
}
function _transfer(address sender, address recipient, uint256 amount) internal {
  require(msg.sender == sender || msg.sender == recipient, "SeigToken: only sender or recipient can transfer");
  super._transfer(sender, recipient, amount);
  if (address(seigManager) != address(0)) {
    // seigManager.onTransfer(sender, recipient, amount);
  }
}

//////////////////////