import VASSAL.build
import VASSAL.command
import VASSAL.configure
import VASSAL.i18n
import VASSAL.tools.imageop
import java.awt
import java.beans
import java.io
import java.net
import java.util
import javax.swing
import javax.swing.event
import jpype.protocol
import typing



class AboutScreen(VASSAL.build.AbstractConfigurable):
    TITLE: typing.ClassVar[str] = ...
    FILE: typing.ClassVar[str] = ...
    @typing.overload
    def __init__(self): ...
    @typing.overload
    def __init__(self, imageOp: VASSAL.tools.imageop.ImageOp): ...
    def addLocalImageNames(self, collection: typing.Union[java.util.Collection[str], typing.Sequence[str], typing.Set[str]]) -> None: ...
    def addTo(self, buildable: VASSAL.build.Buildable) -> None: ...
    def getAllowableConfigureComponents(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeDescriptions(self) -> typing.List[str]: ...
    def getAttributeNames(self) -> typing.List[str]: ...
    def getAttributeTypes(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeValueString(self, string: str) -> str: ...
    @staticmethod
    def getConfigureTypeName() -> str: ...
    def getFormattedStringList(self) -> java.util.List[str]: ...
    def getHelpFile(self) -> 'HelpFile': ...
    def launch(self) -> None: ...
    def removeFrom(self, buildable: VASSAL.build.Buildable) -> None: ...
    def setAttribute(self, string: str, object: typing.Any) -> None: ...

class BrowserHelpFile(VASSAL.build.AbstractBuildable, VASSAL.build.Configurable):
    TITLE: typing.ClassVar[str] = ...
    CONTENTS: typing.ClassVar[str] = ...
    STARTING_PAGE: typing.ClassVar[str] = ...
    def __init__(self): ...
    def addPropertyChangeListener(self, propertyChangeListener: java.beans.PropertyChangeListener) -> None: ...
    def addTo(self, buildable: VASSAL.build.Buildable) -> None: ...
    def getAllowableConfigureComponents(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeNames(self) -> typing.List[str]: ...
    def getAttributeValueString(self, string: str) -> str: ...
    def getConfigureComponents(self) -> typing.List[VASSAL.build.Configurable]: ...
    def getConfigureName(self) -> str: ...
    @staticmethod
    def getConfigureTypeName() -> str: ...
    def getConfigurer(self) -> VASSAL.configure.Configurer: ...
    def getHelpFile(self) -> 'HelpFile': ...
    def getI18nData(self) -> VASSAL.i18n.ComponentI18nData: ...
    def launch(self) -> None: ...
    def remove(self, buildable: VASSAL.build.Buildable) -> None: ...
    def removeFrom(self, buildable: VASSAL.build.Buildable) -> None: ...
    def setAttribute(self, string: str, object: typing.Any) -> None: ...
    class ContentsConfig(VASSAL.configure.ConfigurerFactory):
        def __init__(self): ...
        def getConfigurer(self, autoConfigurable: VASSAL.build.AutoConfigurable, string: str, string2: str) -> VASSAL.configure.Configurer: ...

class BrowserPDFFile(VASSAL.build.AbstractConfigurable):
    TITLE: typing.ClassVar[str] = ...
    PDF_FILE: typing.ClassVar[str] = ...
    def __init__(self): ...
    def addTo(self, buildable: VASSAL.build.Buildable) -> None: ...
    def getAllowableConfigureComponents(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeDescriptions(self) -> typing.List[str]: ...
    def getAttributeNames(self) -> typing.List[str]: ...
    def getAttributeTypes(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeValueString(self, string: str) -> str: ...
    def getConfigureName(self) -> str: ...
    @staticmethod
    def getConfigureTypeName() -> str: ...
    def getHelpFile(self) -> 'HelpFile': ...
    def launch(self) -> None: ...
    def remove(self, buildable: VASSAL.build.Buildable) -> None: ...
    def removeFrom(self, buildable: VASSAL.build.Buildable) -> None: ...
    def setAttribute(self, string: str, object: typing.Any) -> None: ...

class DialogHelpWindow(javax.swing.JDialog, javax.swing.event.HyperlinkListener):
    def __init__(self, string: str, uRL: java.net.URL, dialog: java.awt.Dialog): ...
    def hyperlinkUpdate(self, hyperlinkEvent: javax.swing.event.HyperlinkEvent) -> None: ...
    @typing.overload
    def update(self, uRL: java.net.URL) -> None: ...
    @typing.overload
    def update(self, graphics: java.awt.Graphics) -> None: ...

class HelpFile(VASSAL.build.AbstractConfigurable):
    TITLE: typing.ClassVar[str] = ...
    FILE: typing.ClassVar[str] = ...
    TYPE: typing.ClassVar[str] = ...
    ARCHIVE_ENTRY: typing.ClassVar[str] = ...
    RESOURCE: typing.ClassVar[str] = ...
    LOCAL_FILE: typing.ClassVar[str] = ...
    @typing.overload
    def __init__(self): ...
    @typing.overload
    def __init__(self, string: str, file: typing.Union[java.io.File, jpype.protocol.SupportsPath]): ...
    @typing.overload
    def __init__(self, string: str, file: typing.Union[java.io.File, jpype.protocol.SupportsPath], string2: str): ...
    @typing.overload
    def __init__(self, string: str, uRL: java.net.URL): ...
    def addLocalImageNames(self, collection: typing.Union[java.util.Collection[str], typing.Sequence[str], typing.Set[str]]) -> None: ...
    def addTo(self, buildable: VASSAL.build.Buildable) -> None: ...
    def getAllowableConfigureComponents(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeDescriptions(self) -> typing.List[str]: ...
    def getAttributeNames(self) -> typing.List[str]: ...
    def getAttributeTypes(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeValueString(self, string: str) -> str: ...
    @staticmethod
    def getConfigureTypeName() -> str: ...
    def getContents(self) -> java.net.URL: ...
    def getFormattedStringList(self) -> java.util.List[str]: ...
    def getHelpFile(self) -> 'HelpFile': ...
    @typing.overload
    @staticmethod
    def getReferenceManualPage(string: str) -> 'HelpFile': ...
    @typing.overload
    @staticmethod
    def getReferenceManualPage(string: str, string2: str) -> 'HelpFile': ...
    def removeFrom(self, buildable: VASSAL.build.Buildable) -> None: ...
    def setAttribute(self, string: str, object: typing.Any) -> None: ...
    @typing.overload
    def showWindow(self) -> None: ...
    @typing.overload
    def showWindow(self, dialog: java.awt.Dialog) -> None: ...

class HelpWindow(javax.swing.JFrame, javax.swing.event.HyperlinkListener):
    def __init__(self, string: str, uRL: java.net.URL): ...
    def hyperlinkUpdate(self, hyperlinkEvent: javax.swing.event.HyperlinkEvent) -> None: ...
    @typing.overload
    def update(self, uRL: java.net.URL) -> None: ...
    @typing.overload
    def update(self, graphics: java.awt.Graphics) -> None: ...

class HelpWindowExtension:
    def setBaseWindow(self, helpWindow: HelpWindow) -> None: ...

class Tutorial(VASSAL.build.AbstractConfigurable):
    FILE_NAME: typing.ClassVar[str] = ...
    NAME: typing.ClassVar[str] = ...
    LAUNCH_ON_STARTUP: typing.ClassVar[str] = ...
    PROMPT_MESSAGE: typing.ClassVar[str] = ...
    WELCOME_MESSAGE: typing.ClassVar[str] = ...
    def __init__(self): ...
    def addTo(self, buildable: VASSAL.build.Buildable) -> None: ...
    def getAllowableConfigureComponents(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeDescriptions(self) -> typing.List[str]: ...
    def getAttributeNames(self) -> typing.List[str]: ...
    def getAttributeTypes(self) -> typing.List[typing.Type[typing.Any]]: ...
    def getAttributeValueString(self, string: str) -> str: ...
    def getAttributeVisibility(self, string: str) -> VASSAL.configure.VisibilityCondition: ...
    def getHelpFile(self) -> HelpFile: ...
    def getTutorialCommand(self) -> VASSAL.command.Command: ...
    def getTutorialContents(self) -> java.io.InputStream: ...
    def getWelcomeMessage(self) -> str: ...
    def isFirstRun(self) -> bool: ...
    def launch(self) -> None: ...
    def markAsViewed(self) -> None: ...
    def removeFrom(self, buildable: VASSAL.build.Buildable) -> None: ...
    def setAttribute(self, string: str, object: typing.Any) -> None: ...


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

    AboutScreen: typing.Type[AboutScreen]
    BrowserHelpFile: typing.Type[BrowserHelpFile]
    BrowserPDFFile: typing.Type[BrowserPDFFile]
    DialogHelpWindow: typing.Type[DialogHelpWindow]
    HelpFile: typing.Type[HelpFile]
    HelpWindow: typing.Type[HelpWindow]
    HelpWindowExtension: typing.Type[HelpWindowExtension]
    Tutorial: typing.Type[Tutorial]
