import java.awt
import java.awt.event
import javax.swing
import typing



class AbstractUpdateCheckRequest(javax.swing.SwingWorker[bool, None]):
    def __init__(self): ...

class GitProperties:
    @typing.overload
    def __init__(self): ...
    @typing.overload
    def __init__(self, string: str): ...
    def getVersion(self) -> str: ...

class UpdateCheckAction(javax.swing.AbstractAction):
    def __init__(self, frame: java.awt.Frame): ...
    def actionPerformed(self, actionEvent: java.awt.event.ActionEvent) -> None: ...

class VersionInfo:
    def getBeta(self) -> str: ...
    def getRelease(self) -> str: ...

class VersionUtils:
    @staticmethod
    def compareReportable(string: str) -> int: ...
    @staticmethod
    def compareVersions(string: str, string2: str) -> int: ...
    @staticmethod
    def isCurrent(string: str) -> bool: ...
    @staticmethod
    def isUpdateable(string: str) -> bool: ...
    @staticmethod
    def nextMinorVersion(string: str) -> str: ...
    @staticmethod
    def setVersionInfo(versionInfo: VersionInfo) -> None: ...
    @staticmethod
    def truncateToMinorVersion(string: str) -> str: ...

class LiveVersionInfo(VersionInfo):
    def __init__(self): ...
    def getBeta(self) -> str: ...
    def getRelease(self) -> str: ...


class __module_protocol__(typing.Protocol):
    # A module protocol which reflects the result of ``jp.JPackage("VASSAL.tools.version")``.

    AbstractUpdateCheckRequest: typing.Type[AbstractUpdateCheckRequest]
    GitProperties: typing.Type[GitProperties]
    LiveVersionInfo: typing.Type[LiveVersionInfo]
    UpdateCheckAction: typing.Type[UpdateCheckAction]
    VersionInfo: typing.Type[VersionInfo]
    VersionUtils: typing.Type[VersionUtils]
