import java.io
import java.util
import java.util.function
import java.util.zip
import org.apache.commons.lang3.tuple
import typing



class DependencyChecker:
    def __init__(self): ...
    @staticmethod
    def main(stringArray: typing.List[str]) -> None: ...

class DependencyWriter:
    def __init__(self): ...
    @staticmethod
    def main(stringArray: typing.List[str]) -> None: ...

class DeprecationWriter:
    def __init__(self): ...
    @staticmethod
    def main(stringArray: typing.List[str]) -> None: ...

class Processor:
    def __init__(self): ...
    @typing.overload
    @staticmethod
    def process(walker: 'Walker', byteArray: typing.List[int]) -> None: ...
    @typing.overload
    @staticmethod
    def process(walker: 'Walker', inputStream: java.io.InputStream) -> None: ...
    @typing.overload
    @staticmethod
    def process(walker: 'Walker', string: str) -> None: ...
    @typing.overload
    @staticmethod
    def process(walker: 'Walker', zipFile: java.util.zip.ZipFile) -> None: ...
    @staticmethod
    def readCompSet(inputStream: java.io.InputStream, consumer: typing.Union[java.util.function.Consumer[typing.List[str]], typing.Callable[[typing.List[str]], None]]) -> None: ...

class RemovalAndDeprecationChecker:
    def __init__(self): ...
    def check(self, zipFile: java.util.zip.ZipFile) -> org.apache.commons.lang3.tuple.Pair[java.util.Map[str, java.util.Map[str, str]], java.util.Map[str, java.util.Map[str, str]]]: ...
    @staticmethod
    def formatResult(map: typing.Union[java.util.Map[str, typing.Union[java.util.Map[str, str], typing.Mapping[str, str]]], typing.Mapping[str, typing.Union[java.util.Map[str, str], typing.Mapping[str, str]]]]) -> str: ...

class Walker:
    @typing.overload
    def setInput(self, byteArray: typing.List[int]) -> None: ...
    @typing.overload
    def setInput(self, inputStream: java.io.InputStream) -> None: ...
    @typing.overload
    def setInput(self, string: str) -> None: ...
    def walk(self) -> None: ...

class DependencyWalker(Walker):
    def __init__(self): ...
    def setClassCallback(self, consumer: typing.Union[java.util.function.Consumer[str], typing.Callable[[str], None]]) -> None: ...
    def setFieldCallback(self, consumer: typing.Union[java.util.function.Consumer[str], typing.Callable[[str], None]]) -> None: ...
    @typing.overload
    def setInput(self, byteArray: typing.List[int]) -> None: ...
    @typing.overload
    def setInput(self, inputStream: java.io.InputStream) -> None: ...
    @typing.overload
    def setInput(self, string: str) -> None: ...
    def setMethodCallback(self, consumer: typing.Union[java.util.function.Consumer[str], typing.Callable[[str], None]]) -> None: ...
    def setThisClassBeginCallback(self, consumer: typing.Union[java.util.function.Consumer[str], typing.Callable[[str], None]]) -> None: ...
    def setThisClassEndCallback(self, consumer: typing.Union[java.util.function.Consumer[str], typing.Callable[[str], None]]) -> None: ...
    def walk(self) -> None: ...

class DeprecationWalker(Walker):
    def __init__(self): ...
    def setCallback(self, callback: typing.Union['DeprecationWalker.Callback', typing.Callable]) -> None: ...
    @typing.overload
    def setInput(self, byteArray: typing.List[int]) -> None: ...
    @typing.overload
    def setInput(self, inputStream: java.io.InputStream) -> None: ...
    @typing.overload
    def setInput(self, string: str) -> None: ...
    def walk(self) -> None: ...
    class Callback:
        def accept(self, string: str, string2: str, boolean: bool) -> None: ...


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

    DependencyChecker: typing.Type[DependencyChecker]
    DependencyWalker: typing.Type[DependencyWalker]
    DependencyWriter: typing.Type[DependencyWriter]
    DeprecationWalker: typing.Type[DeprecationWalker]
    DeprecationWriter: typing.Type[DeprecationWriter]
    Processor: typing.Type[Processor]
    RemovalAndDeprecationChecker: typing.Type[RemovalAndDeprecationChecker]
    Walker: typing.Type[Walker]
