import VASSAL.tools
import java.io
import java.util
import jpype.protocol
import typing



class HTMLImageFinder:
    @typing.overload
    def __init__(self, file: typing.Union[java.io.File, jpype.protocol.SupportsPath]): ...
    @typing.overload
    def __init__(self, string: str): ...
    def addImageNames(self, collection: typing.Union[java.util.Collection[str], typing.Sequence[str], typing.Set[str]]) -> None: ...

class ImageSearchTarget:
    def addImageNamesRecursively(self, collection: typing.Union[java.util.Collection[str], typing.Sequence[str], typing.Set[str]]) -> None: ...
    def addLocalImageNames(self, collection: typing.Union[java.util.Collection[str], typing.Sequence[str], typing.Set[str]]) -> None: ...
    def getAllImageNames(self) -> java.util.SortedSet[str]: ...
    def getLocalImageNames(self) -> java.util.SortedSet[str]: ...

class SearchTarget:
    def getExpressionList(self) -> java.util.List[str]: ...
    def getFormattedStringList(self) -> java.util.List[str]: ...
    def getMenuTextList(self) -> java.util.List[str]: ...
    def getNamedKeyStrokeList(self) -> java.util.List[VASSAL.tools.NamedKeyStroke]: ...
    def getPropertyList(self) -> java.util.List[str]: ...

class AbstractImageFinder(ImageSearchTarget):
    def __init__(self): ...
    def addImageNamesRecursively(self, collection: typing.Union[java.util.Collection[str], typing.Sequence[str], typing.Set[str]]) -> None: ...
    def addLocalImageNames(self, collection: typing.Union[java.util.Collection[str], typing.Sequence[str], typing.Set[str]]) -> None: ...
    def getAllImageNames(self) -> java.util.SortedSet[str]: ...
    def getLocalImageNames(self) -> java.util.SortedSet[str]: ...


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

    AbstractImageFinder: typing.Type[AbstractImageFinder]
    HTMLImageFinder: typing.Type[HTMLImageFinder]
    ImageSearchTarget: typing.Type[ImageSearchTarget]
    SearchTarget: typing.Type[SearchTarget]
