import VASSAL.chat
import java.util
import javax.swing
import typing



class Message:
    @typing.overload
    def __init__(self, string: str, string2: str): ...
    @typing.overload
    def __init__(self, string: str, string2: str, date: java.util.Date): ...
    def getDate(self) -> java.util.Date: ...
    def getSender(self) -> str: ...
    def getText(self) -> str: ...

class MessageBoard(VASSAL.chat.MessageServer):
    def getMessages(self) -> typing.List[Message]: ...
    def postMessage(self, string: str) -> None: ...

class MessageBoardControls:
    def __init__(self): ...
    def getCheckMessagesAction(self) -> javax.swing.Action: ...
    def getPostMessageAction(self) -> javax.swing.Action: ...
    def setServer(self, messageBoard: MessageBoard, string: str) -> None: ...
    def showMessages(self, messageArray: typing.List[Message]) -> None: ...

class MessageViewer(javax.swing.JPanel):
    def __init__(self): ...
    def setMessages(self, enumeration: java.util.Enumeration[Message]) -> None: ...


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

    Message: typing.Type[Message]
    MessageBoard: typing.Type[MessageBoard]
    MessageBoardControls: typing.Type[MessageBoardControls]
    MessageViewer: typing.Type[MessageViewer]
