import VASSAL.build
import VASSAL.build.module
import VASSAL.build.module.documentation
import VASSAL.build.module.map
import VASSAL.build.module.map.boardPicker.board
import VASSAL.build.module.map.boardPicker.board.mapgrid
import VASSAL.configure
import java.awt
import java.awt.event
import java.util
import javax.swing
import typing



class Board(VASSAL.build.AbstractConfigurable, VASSAL.build.module.map.boardPicker.board.mapgrid.GridContainer):
    NAME: typing.ClassVar[str] = ...
    IMAGE: typing.ClassVar[str] = ...
    WIDTH: typing.ClassVar[str] = ...
    HEIGHT: typing.ClassVar[str] = ...
    COLOR: typing.ClassVar[str] = ...
    REVERSIBLE: typing.ClassVar[str] = ...
    def __init__(self): ...
    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 bounds(self) -> java.awt.Rectangle: ...
    def contains(self, point: java.awt.Point) -> bool: ...
    def copy(self) -> 'Board': ...
    def draw(self, graphics: java.awt.Graphics, int: int, int2: int, double: float, component: java.awt.Component) -> None: ...
    def drawRegion(self, graphics: java.awt.Graphics, point: java.awt.Point, rectangle: java.awt.Rectangle, double: float, component: java.awt.Component) -> None: ...
    def fileName(self) -> str: ...
    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 getBoard(self) -> 'Board': ...
    @staticmethod
    def getConfigureTypeName() -> str: ...
    def getGrid(self) -> VASSAL.build.module.map.boardPicker.board.MapGrid: ...
    def getHelpFile(self) -> VASSAL.build.module.documentation.HelpFile: ...
    def getLocalizedName(self) -> str: ...
    def getMagnification(self) -> float: ...
    def getMap(self) -> VASSAL.build.module.Map: ...
    def getName(self) -> str: ...
    def getSize(self) -> java.awt.Dimension: ...
    def globalCoordinates(self, point: java.awt.Point) -> java.awt.Point: ...
    def isLocationRestricted(self, point: java.awt.Point) -> bool: ...
    def isReversed(self) -> bool: ...
    def localCoordinates(self, point: java.awt.Point) -> java.awt.Point: ...
    def localizedLocationName(self, point: java.awt.Point) -> str: ...
    def locationName(self, point: java.awt.Point) -> str: ...
    def relativePosition(self) -> java.awt.Point: ...
    def removeFrom(self, buildable: VASSAL.build.Buildable) -> None: ...
    def removeGrid(self, mapGrid: VASSAL.build.module.map.boardPicker.board.MapGrid) -> None: ...
    def setAttribute(self, string: str, object: typing.Any) -> None: ...
    def setCacheGrid(self, boolean: bool) -> None: ...
    def setGrid(self, mapGrid: VASSAL.build.module.map.boardPicker.board.MapGrid) -> None: ...
    def setLocation(self, int: int, int2: int) -> None: ...
    def setMagnification(self, double: float) -> None: ...
    def setMap(self, map: VASSAL.build.module.Map) -> None: ...
    def setReversed(self, boolean: bool) -> None: ...
    def snapTo(self, point: java.awt.Point) -> java.awt.Point: ...
    def translate(self, int: int, int2: int) -> None: ...

class BoardSlot(javax.swing.JPanel, javax.swing.Icon, java.awt.event.ActionListener):
    @typing.overload
    def __init__(self, boardPicker: VASSAL.build.module.map.BoardPicker): ...
    @typing.overload
    def __init__(self, boardPicker: VASSAL.build.module.map.BoardPicker, string: str): ...
    def actionPerformed(self, actionEvent: java.awt.event.ActionEvent) -> None: ...
    def getBoard(self) -> Board: ...
    def getIconHeight(self) -> int: ...
    def getIconWidth(self) -> int: ...
    def paintIcon(self, component: java.awt.Component, graphics: java.awt.Graphics, int: int, int2: int) -> None: ...
    def setBoard(self, board: Board) -> None: ...


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

    Board: typing.Type[Board]
    BoardSlot: typing.Type[BoardSlot]
    board: VASSAL.build.module.map.boardPicker.board.__module_protocol__
