# It seems the discussion on when and how to add type hints to matplotlib is
# still ongoing:
# https://github.com/matplotlib/matplotlib/issues/13798
# Hopefully they'll do so soon, allowing us to delete this file

from typing import Any, Sequence, Tuple, Union


def plot(*args, **kwargs) -> Any: ...
def title(x: str) -> Any: ...
def legend(x: Union[str, Sequence[str]]) -> Any: ...
def show(x: bool = True) -> Any: ...
def grid(x: bool = True, **kwargs) -> Any: ...
def xlabel(x: str) -> Any: ...
def ylabel(x: str) -> Any: ...
def legend(*x: Any) -> Any: ...
def subplots(*args) -> Tuple[Any, Axes]: ...
def scatter(*args, **kwargs) -> Any: ...
def close(*args, **kwargs) -> Any: ...
def xlim(*args, **kwargs) -> Any: ...
def ylim(*args, **kwargs) -> Any: ...
def axis(*args, **kwargs) -> Any: ...


def figure(*args, **kwargs) -> Any: ...  # returns a Figure object
def gca(*args, **kwargs) -> Axes: ...  # returns an Axes object


class Axes:
    def plot(*args: Any, **kwargs: Any) -> Any: ...
    def scatter(*args: Any, **kwargs: Any) -> Any: ...
    def legend(*args: Any, **kwargs: Any) -> Any: ...

    def plot_surface(*args: Any, **kwrags: Any) -> Any: ...

    def view_init(self, *args, **kwargs) -> Any: ...

    def set_xlim(self, *args) -> Any: ...
    def set_ylim(self, *args) -> Any: ...
    def set_zlim(self, *args) -> Any: ...

    def get_xlim(self) -> Any: ...
    def get_ylim(self) -> Any: ...
    def get_zlim(self) -> Any: ...

    def set_xticks(self, *args) -> Any: ...
    def set_yticks(self, *args) -> Any: ...
    def set_zticks(self, *args) -> Any: ...

    def set_xlabel(self, *args) -> Any: ...
    def set_ylabel(self, *args) -> Any: ...
    def set_zlabel(self, *args) -> Any: ...

    def grid(self, x: bool = True) -> Any: ...
    def twinx(self, *args) -> Any: ...
    def _get_lines(self, *args) -> Any: ...
