from __future__ import annotations

from typing import Optional

from gi.repository import Gtk
from gi.repository import GObject


INDICATOR_SIGNAL_CONNECTION_CHANGED: str = ...
INDICATOR_SIGNAL_NEW_ATTENTION_ICON: str = ...
INDICATOR_SIGNAL_NEW_ICON: str = ...
INDICATOR_SIGNAL_NEW_ICON_THEME_PATH: str = ...
INDICATOR_SIGNAL_NEW_LABEL: str = ...
INDICATOR_SIGNAL_NEW_STATUS: str = ...
INDICATOR_SIGNAL_SCROLL_EVENT: str = ...
_namespace: str = ...
_version: str = ...


class Indicator:
    parent = ...
    priv = ...
    
    def build_menu_from_desktop(*args, **kwargs): ...
    def get_attention_icon(*args, **kwargs): ...
    def get_attention_icon_desc(*args, **kwargs): ...
    def get_category(*args, **kwargs): ...
    def get_icon(*args, **kwargs): ...
    def get_icon_desc(*args, **kwargs): ...
    def get_icon_theme_path(*args, **kwargs): ...
    def get_id(*args, **kwargs): ...
    def get_label(*args, **kwargs): ...
    def get_label_guide(*args, **kwargs): ...
    def get_menu(*args, **kwargs): ...
    def get_ordering_index(*args, **kwargs): ...
    def get_secondary_activate_target(*args, **kwargs): ...
    def get_status(*args, **kwargs): ...
    def get_title(*args, **kwargs): ...
    @classmethod
    def new(cls, id: str, icon_name: str, category: IndicatorCategory) -> Indicator: ...
    def new_with_path(*args, **kwargs): ...
    def set_attention_icon(*args, **kwargs): ...
    def set_attention_icon_full(self, icon_name: str, icon_desc: str) -> None: ...
    def set_icon(*args, **kwargs): ...
    def set_icon_full(self, icon_name: str, icon_desc: str) -> None: ...
    def set_icon_theme_path(self, icon_theme_path: str) -> None: ...
    def set_label(*args, **kwargs): ...
    def set_menu(self, menu: Optional[Gtk.Menu]) -> None: ...
    def set_ordering_index(*args, **kwargs): ...
    def set_secondary_activate_target(self, target: Optional[Gtk.Widget]) -> None: ...
    def set_status(self, status: IndicatorStatus) -> None: ...
    def set_title(*args, **kwargs): ...
    
    def do_connection_changed(self, *args, **kwargs): ...
    def do_new_attention_icon(self, *args, **kwargs): ...
    def do_new_icon(self, *args, **kwargs): ...
    def do_new_icon_theme_path(self, *args, **kwargs): ...
    def do_new_label(self, *args, **kwargs): ...
    def do_new_status(self, *args, **kwargs): ...
    def do_scroll_event(self, *args, **kwargs): ...
    def do_unfallback(self, *args, **kwargs): ...
    

class IndicatorCategory(GObject.GEnum):
    APPLICATION_STATUS = ...
    COMMUNICATIONS = ...
    HARDWARE = ...
    OTHER = ...
    SYSTEM_SERVICES = ...

class IndicatorStatus(GObject.GEnum):
    ACTIVE = ...
    ATTENTION = ...
    PASSIVE = ...
