pragma ever-solidity >= 0.68.0; pragma AbiHeader expire; pragma AbiHeader pubkey; import "../libraries/UtilityErrors.tsol"; contract InternalOwner { address public owner; event OwnershipTransferred(address previousOwner, address newOwner); modifier onlyOwner() { require( msg.sender == owner && msg.sender.value != 0, UtilityErrors.CALLER_IS_NOT_OWNER ); _; } /* @dev Internal function for setting owner Can be used in child contracts */ function setOwnership(address newOwner) internal { address oldOwner = owner; owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } /* @dev Transfer ownership to the new owner */ function transferOwnership(address newOwner) external onlyOwner { require( newOwner != address.makeAddrStd(0, 0), UtilityErrors.INVALID_NEW_OWNER ); setOwnership(newOwner); } /* @dev Renounce ownership. Can't be aborted! */ function renounceOwnership() external onlyOwner { address newOwner = address.makeAddrStd(0, 0); setOwnership(newOwner); } }