from typing import Tuple, Set, Iterable, List

class GH_ISerializable:
    def Write (self, writer : GH_IWriter) -> bool: ...
    def Read (self, reader : GH_IReader) -> bool: ...
class VersionNumber:
    def __init__(self, major : int, minor : int, time : DateTime, buildBranch : Branch): ...
    def __init__(self, majorVersionNumber : int, minorVersionNumber : int, versionQuartetYyddd : int, versionQuartetHhmmb : int): ...
    def __init__(self, version : Version): ...
    def CompareTo (self, value : VersionNumber) -> int: ...
    def CompareTo (self, value : Object) -> int: ...
    @property
    def Unset () -> VersionNumber: ...
    @property
    def MinValid () -> VersionNumber: ...
    @property
    def MaxValid () -> VersionNumber: ...
    @property
    def IsValid (self) -> bool: ...
    @property
    def MinMajorVersionNumber () -> int: ...
    @property
    def MaxMajorVersionNumber () -> int: ...
    @property
    def UnsetTime () -> DateTime: ...
    @property
    def MinValidTime () -> DateTime: ...
    @property
    def MaxValidTime () -> DateTime: ...
    @property
    def UnsetBuildBranch () -> Branch: ...
    @property
    def MinValidBuildBranch () -> Branch: ...
    @property
    def MaxValidBuildBranch () -> Branch: ...
    def ToString (self) -> str: ...
    def ToVersion (self) -> Version: ...
    def TryParse (s : str) -> Tuple[bool, VersionNumber]: ...
    def TryParse (v : Version) -> Tuple[bool, VersionNumber]: ...
    @property
    def Major (self) -> int: ...
    @property
    def Minor (self) -> int: ...
    @property
    def MinMinorVersionNumber () -> int: ...
    @property
    def MaxMinorVersionNumber () -> int: ...
    @property
    def Time (self) -> DateTime: ...
    @property
    def BuildBranch (self) -> Branch: ...
class Branch:
    Unset = 0
    Developer = 1
    Trunk = 2
    ReleaseCandidate = 3
    Release = 4
