from matplotlib._typing import *
from matplotlib.backend_tools import Cursors
from matplotlib import backend_tools
from matplotlib.backend_bases import (
    FigureCanvasBase,
    FigureManagerBase,
    NavigationToolbar2,
    TimerBase,
    _Backend,
)

backend_version = ...

def mpl_to_gtk_cursor_name(mpl_cursor: Cursors) -> str: ...

class TimerGTK(TimerBase):
    def __init__(self, *args, **kwargs) -> None: ...

class _FigureManagerGTK(FigureManagerBase):

    canvas: FigureCanvasBase
    num: int | str
    toolbar: Gtk.Toolbar | Gtk.Box
    vbox: Gtk.VBox
    window: Gtk.Window

    def __init__(self, canvas: FigureCanvasBase, num: int | str) -> None: ...
    def destroy(self, *args)-> None: ...
    def show(self)-> None: ...
    def full_screen_toggle(self)->  None: ...
    def get_window_title(self): ...
    def set_window_title(self, title)-> None: ...
    def resize(self, width, height)-> None: ...

class _NavigationToolbar2GTK(NavigationToolbar2):
    def set_message(self, s)-> None: ...
    def draw_rubberband(self, event, x0, y0, x1, y1)-> None: ...
    def remove_rubberband(self)-> None: ...
    def pan(self, *args)-> None: ...
    def zoom(self, *args)-> None: ...
    def set_history_buttons(self)-> None: ...

class RubberbandGTK(backend_tools.RubberbandBase):
    def draw_rubberband(self, x0, y0, x1, y1)-> None: ...
    def remove_rubberband(self)-> None: ...

class ConfigureSubplotsGTK(backend_tools.ConfigureSubplotsBase):
    def trigger(self, *args)-> None: ...

class _BackendGTK(_Backend):
    @staticmethod
    def mainloop() -> None: ...
