--- /dev/null
+from collections.abc import Container
+from typing import Any, Sequence, Tuple, Union, overload
+from typing_extensions import Literal
+
+from .Image import Image
+from .ImageColor import _Ink
+from .ImageFont import _Font
+
+_XY = Sequence[Union[float, Tuple[float, float]]]
+_Outline = Any
+
+class ImageDraw:
+ def __init__(self, im: Image, mode: str | None = ...) -> None: ...
+ def getfont(self): ...
+ def arc(self, xy: _XY, start: float, end: float, fill: _Ink | None = ..., width: float = ...) -> None: ...
+ def bitmap(self, xy: _XY, bitmap: Image, fill: _Ink | None = ...) -> None: ...
+ def chord(
+ self, xy: _XY, start: float, end: float, fill: _Ink | None = ..., outline: _Ink | None = ..., width: float = ...
+ ) -> None: ...
+ def ellipse(self, xy: _XY, fill: _Ink | None = ..., outline: _Ink | None = ..., width: float = ...) -> None: ...
+ def line(self, xy: _XY, fill: _Ink | None = ..., width: float = ..., joint: Literal["curve"] | None = ...) -> None: ...
+ def shape(self, shape: _Outline, fill: _Ink | None = ..., outline: _Ink | None = ...) -> None: ...
+ def pieslice(
+ self,
+ xy: tuple[tuple[float, float], tuple[float, float]],
+ start: float,
+ end: float,
+ fill: _Ink | None = ...,
+ outline: _Ink | None = ...,
+ width: float = ...,
+ ) -> None: ...
+ def point(self, xy: _XY, fill: _Ink | None = ...) -> None: ...
+ def polygon(self, xy: _XY, fill: _Ink | None = ..., outline: _Ink | None = ...) -> None: ...
+ def regular_polygon(
+ self,
+ bounding_circle: tuple[float, float] | tuple[float, float, float] | list[int],
+ n_sides: int,
+ rotation: float = ...,
+ fill: _Ink | None = ...,
+ outline: _Ink | None = ...,
+ ) -> None: ...
+ def rectangle(
+ self,
+ xy: tuple[float, float, float, float] | tuple[tuple[float, float], tuple[float, float]],
+ fill: _Ink | None = ...,
+ outline: _Ink | None = ...,
+ width: float = ...,
+ ) -> None: ...
+ def rounded_rectangle(
+ self,
+ xy: tuple[float, float, float, float] | tuple[tuple[float, float], tuple[float, float]],
+ radius: float = ...,
+ fill: _Ink | None = ...,
+ outline: _Ink | None = ...,
+ width: float = ...,
+ ) -> None: ...
+ def text(
+ self,
+ xy: tuple[float, float],
+ text: str | bytes,
+ fill: _Ink | None = ...,
+ font: _Font | None = ...,
+ anchor: str | None = ...,
+ spacing: float = ...,
+ align: Literal["left", "center", "right"] = ...,
+ direction: Literal["rtl", "ltr", "ttb"] | None = ...,
+ features: Sequence[str] | None = ...,
+ language: str | None = ...,
+ stroke_width: int = ...,
+ stroke_fill: _Ink | None = ...,
+ embedded_color: bool = ...,
+ *args,
+ **kwargs,
+ ) -> None: ...
+ def multiline_text(
+ self,
+ xy: tuple[float, float],
+ text: str | bytes,
+ fill: _Ink | None = ...,
+ font: _Font | None = ...,
+ anchor: str | None = ...,
+ spacing: float = ...,
+ align: Literal["left", "center", "right"] = ...,
+ direction: Literal["rtl", "ltr", "ttb"] | None = ...,
+ features: Any | None = ...,
+ language: str | None = ...,
+ stroke_width: int = ...,
+ stroke_fill: _Ink | None = ...,
+ embedded_color: bool = ...,
+ ) -> None: ...
+ def textsize(
+ self,
+ text: str | bytes,
+ font: _Font | None = ...,
+ spacing: float = ...,
+ direction: Literal["rtl", "ltr", "ttb"] | None = ...,
+ features: Sequence[str] | None = ...,
+ language: str | None = ...,
+ stroke_width: int = ...,
+ ) -> tuple[int, int]: ...
+ def multiline_textsize(
+ self,
+ text: str | bytes,
+ font: _Font | None = ...,
+ spacing: float = ...,
+ direction: Literal["rtl", "ltr", "ttb"] | None = ...,
+ features: Sequence[str] | None = ...,
+ language: str | None = ...,
+ stroke_width: int = ...,
+ ) -> tuple[int, int]: ...
+ def textlength(
+ self,
+ text: str | bytes,
+ font: _Font | None = ...,
+ direction: Literal["rtl", "ltr", "ttb"] | None = ...,
+ features: Sequence[str] | None = ...,
+ language: str | None = ...,
+ embedded_color: bool = ...,
+ ) -> int: ...
+ def textbbox(
+ self,
+ xy: tuple[float, float],
+ text: str | bytes,
+ font: _Font | None = ...,
+ anchor: str | None = ...,
+ spacing: float = ...,
+ align: Literal["left", "center", "right"] = ...,
+ direction: Literal["rtl", "ltr", "ttb"] | None = ...,
+ features: Any | None = ...,
+ language: str | None = ...,
+ stroke_width: int = ...,
+ embedded_color: bool = ...,
+ ) -> tuple[int, int, int, int]: ...
+ def multiline_textbbox(
+ self,
+ xy: tuple[float, float],
+ text: str | bytes,
+ font: _Font | None = ...,
+ anchor: str | None = ...,
+ spacing: float = ...,
+ align: Literal["left", "center", "right"] = ...,
+ direction: Literal["rtl", "ltr", "ttb"] | None = ...,
+ features: Any | None = ...,
+ language: str | None = ...,
+ stroke_width: int = ...,
+ embedded_color: bool = ...,
+ ) -> tuple[int, int, int, int]: ...
+
+def Draw(im: Image, mode: str | None = ...) -> ImageDraw: ...
+def Outline() -> _Outline: ...
+@overload
+def getdraw(im: None = ..., hints: Container[Literal["nicest"]] | None = ...) -> tuple[None, Any]: ...
+@overload
+def getdraw(im: Image, hints: Container[Literal["nicest"]] | None = ...) -> tuple[Image, Any]: ...
+def floodfill(image: Image, xy: tuple[float, float], value, border=..., thresh: float = ...) -> None: ...