
from typing import Any
from typing import Optional
from typing import Callable

from gi.repository import Gio
from gi.repository import GObject


ATTR_APPLICATION_ICON: str = ...
ATTR_APPLICATION_ICON_NAME: str = ...
ATTR_APPLICATION_ID: str = ...
ATTR_APPLICATION_LANGUAGE: str = ...
ATTR_APPLICATION_NAME: str = ...
ATTR_APPLICATION_PROCESS_BINARY: str = ...
ATTR_APPLICATION_PROCESS_HOST: str = ...
ATTR_APPLICATION_PROCESS_ID: str = ...
ATTR_APPLICATION_PROCESS_USER: str = ...
ATTR_APPLICATION_VERSION: str = ...
ATTR_CANBERRA_CACHE_CONTROL: str = ...
ATTR_CANBERRA_ENABLE: str = ...
ATTR_CANBERRA_FORCE_CHANNEL: str = ...
ATTR_CANBERRA_VOLUME: str = ...
ATTR_CANBERRA_XDG_THEME_NAME: str = ...
ATTR_CANBERRA_XDG_THEME_OUTPUT_PROFILE: str = ...
ATTR_EVENT_DESCRIPTION: str = ...
ATTR_EVENT_ID: str = ...
ATTR_EVENT_MOUSE_BUTTON: str = ...
ATTR_EVENT_MOUSE_HPOS: str = ...
ATTR_EVENT_MOUSE_VPOS: str = ...
ATTR_EVENT_MOUSE_X: str = ...
ATTR_EVENT_MOUSE_Y: str = ...
ATTR_MEDIA_ARTIST: str = ...
ATTR_MEDIA_FILENAME: str = ...
ATTR_MEDIA_ICON: str = ...
ATTR_MEDIA_ICON_NAME: str = ...
ATTR_MEDIA_LANGUAGE: str = ...
ATTR_MEDIA_NAME: str = ...
ATTR_MEDIA_ROLE: str = ...
ATTR_MEDIA_TITLE: str = ...
ATTR_WINDOW_DESKTOP: str = ...
ATTR_WINDOW_HEIGHT: str = ...
ATTR_WINDOW_HPOS: str = ...
ATTR_WINDOW_ICON: str = ...
ATTR_WINDOW_ICON_NAME: str = ...
ATTR_WINDOW_ID: str = ...
ATTR_WINDOW_NAME: str = ...
ATTR_WINDOW_VPOS: str = ...
ATTR_WINDOW_WIDTH: str = ...
ATTR_WINDOW_X: str = ...
ATTR_WINDOW_X11_DISPLAY: str = ...
ATTR_WINDOW_X11_MONITOR: str = ...
ATTR_WINDOW_X11_SCREEN: str = ...
ATTR_WINDOW_X11_XID: str = ...
ATTR_WINDOW_Y: str = ...


def error_quark(*args, **kwargs): ...


class Context(GObject.GObject):
    def init(self) -> None: ...
    def cache(self, attrs: dict[str, str]): bool
    def new(*args, **kwargs): ...
    def open(self) -> bool: ...
    def play_full(self, attrs: dict[str, str], cancellable: Optional[Gio.Cancellable], callback: Callable[[Context, Gio.AsyncResult, Any], Any], user_data: Any) -> None: ...
    def play_full_finish(self, result: Gio.AsyncResult) -> bool: ...
    def play_simple(self, attrs: dict[str, str], cancellable: Optional[Gio.Cancellable]) -> bool: ...
    def set_attributes(self, attrs: dict[str, str]) -> bool: ...
    def set_driver(self, driver: str) -> bool: ...
    

class Error(GObject.GEnum):
    NOTSUPPORTED = ...
    INVALID = ...
    STATE = ...
    OOM = ...
    NODRIVER = ...
    SYSTEM = ...
    CORRUPT = ...
    TOOBIG = ...
    NOTFOUND = ...
    DESTROYED = ...
    CANCELED = ...
    NOTAVAILABLE = ...
    ACCESS = ...
    IO = ...
    INTERNAL = ...
    DISABLED = ...
    FORKED = ...
    DISCONNECTED = ...
