from typing import Union, Optional, Tuple, List, Sequence from typing_extensions import Protocol from pygame.color import Color from pygame.rect import Rect from pygame.surface import Surface from pygame.math import Vector2 _Coordinate = Union[Tuple[float, float], List[float], Vector2] _ColorValue = Union[ Color, str, Tuple[int, int, int], List[int], int, Tuple[int, int, int, int] ] _CanBeRect = Union[ Rect, Tuple[int, int, int, int], List[int], Tuple[_Coordinate, _Coordinate], List[_Coordinate] ] class _HasRectAttribute(Protocol): rect: _CanBeRect _RectValue = Union[ _CanBeRect, _HasRectAttribute ] def rect( surface: Surface, color: _ColorValue, rect: _RectValue, width: Optional[int] = 0, border_radius: Optional[int] = -1, border_top_left_radius: Optional[int] = -1, border_top_right_radius: Optional[int] = -1, border_bottom_left_radius: Optional[int] = -1, border_bottom_right_radius: Optional[int] = -1, ) -> Rect: ... def polygon( surface: Surface, color: _ColorValue, points: Sequence[_Coordinate], width: Optional[int] = 0, ) -> Rect: ... def circle( surface: Surface, color: _ColorValue, center: _Coordinate, radius: float, width: Optional[int] = 0, draw_top_right: Optional[bool] = None, draw_top_left: Optional[bool] = None, draw_bottom_left: Optional[bool] = None, draw_bottom_right: Optional[bool] = None, ) -> Rect: ... def ellipse( surface: Surface, color: _ColorValue, rect: _RectValue, width: Optional[int] = 0 ) -> Rect: ... def arc( surface: Surface, color: _ColorValue, rect: _RectValue, start_angle: float, stop_angle: float, width: Optional[int] = 1, ) -> Rect: ... def line( surface: Surface, color: _ColorValue, start_pos: _Coordinate, end_pos: _Coordinate, width: Optional[int] = 1, ) -> Rect: ... def lines( surface: Surface, color: _ColorValue, closed: bool, points: Sequence[_Coordinate], width: Optional[int] = 1, ) -> Rect: ... def aaline( surface: Surface, color: _ColorValue, start_pos: _Coordinate, end_pos: _Coordinate, blend: Optional[int] = 1, ) -> Rect: ... def aalines( surface: Surface, color: _ColorValue, closed: bool, points: Sequence[_Coordinate], blend: Optional[int] = 1, ) -> Rect: ...