from typing import Tuple, overload
from typing_extensions import Literal
from pygame.cursors import Cursor
from pygame.surface import Surface

from ._common import Coordinate, Sequence, IntCoordinate

@overload
def get_pressed(num_buttons: Literal[3] = 3) -> Tuple[bool, bool, bool]: ...
@overload
def get_pressed(num_buttons: Literal[5]) -> Tuple[bool, bool, bool, bool, bool]: ...
def get_just_pressed() -> Tuple[bool, bool, bool, bool, bool]: ...
def get_just_released() -> Tuple[bool, bool, bool, bool, bool]: ...
def get_pos() -> Tuple[int, int]: ...
def get_rel() -> Tuple[int, int]: ...
@overload
def set_pos(pos: Coordinate, /) -> None: ...
@overload
def set_pos(x: float, y: float, /) -> None: ...
def set_visible(value: bool, /) -> int: ...
def get_visible() -> bool: ...
def get_focused() -> bool: ...
@overload
def set_cursor(cursor: Cursor) -> None: ...
@overload
def set_cursor(constant: int) -> None: ...
@overload
def set_cursor(
    size: IntCoordinate,
    hotspot: IntCoordinate,
    xormasks: Sequence[int],
    andmasks: Sequence[int],
) -> None: ...
@overload
def set_cursor(hotspot: IntCoordinate, surface: Surface) -> None: ...
def get_cursor() -> Cursor: ...
def set_system_cursor(cursor: int, /) -> None: ...
def get_relative_mode() -> bool: ...
def set_relative_mode(enable: bool, /) -> None: ...
