
from typing import Any
from typing import Optional
from typing import Callable
from typing import TypeVar
from typing import Type

from enum import Flag
from enum import Enum

from gi.repository import GLib

_T = TypeVar('_T')


G_MAXDOUBLE: float = ...
G_MAXFLOAT: float = ...
G_MAXINT: int = ...
G_MAXINT16: int = ...
G_MAXINT32: int = ...
G_MAXINT64: int = ...
G_MAXINT8: int = ...
G_MAXLONG: int = ...
G_MAXOFFSET: int = ...
G_MAXSHORT: int = ...
G_MAXSIZE: int = ...
G_MAXSSIZE: int = ...
G_MAXUINT: int = ...
G_MAXUINT16: int = ...
G_MAXUINT32: int = ...
G_MAXUINT64: int = ...
G_MAXUINT8: int = ...
G_MAXULONG: int = ...
G_MAXUSHORT: int = ...
G_MINDOUBLE: float = ...
G_MINFLOAT: float = ...
G_MININT: int = ...
G_MININT16: int = ...
G_MININT32: int = ...
G_MININT64: int = ...
G_MININT8: int = ...
G_MINLONG: int = ...
G_MINOFFSET: int = ...
G_MINSHORT: int = ...
G_MINSSIZE: int = ...
IO_ERR = ...
IO_FLAG_APPEND = ...
IO_FLAG_GET_MASK = ...
IO_FLAG_IS_READABLE = ...
IO_FLAG_IS_SEEKABLE = ...
IO_FLAG_IS_WRITEABLE = ...
IO_FLAG_MASK = ...
IO_FLAG_NONBLOCK = ...
IO_FLAG_SET_MASK = ...
IO_HUP = ...
IO_IN = ...
IO_NVAL = ...
IO_OUT = ...
IO_PRI = ...
IO_STATUS_AGAIN = ...
IO_STATUS_EOF = ...
IO_STATUS_ERROR = ...
IO_STATUS_NORMAL = ...
OPTION_ERROR_BAD_VALUE = ...
OPTION_ERROR_FAILED = ...
OPTION_ERROR_UNKNOWN_OPTION = ...
OPTION_FLAG_FILENAME = ...
OPTION_FLAG_HIDDEN = ...
OPTION_FLAG_IN_MAIN = ...
OPTION_FLAG_NOALIAS = ...
OPTION_FLAG_NO_ARG = ...
OPTION_FLAG_OPTIONAL_ARG = ...
OPTION_FLAG_REVERSE = ...
OPTION_REMAINING: str = ...
PARAM_CONSTRUCT = ...
PARAM_CONSTRUCT_ONLY = ...
PARAM_LAX_VALIDATION = ...
PARAM_MASK: int = ...
PARAM_READABLE = ...
PARAM_READWRITE = ...
PARAM_STATIC_STRINGS: int = ...
PARAM_USER_SHIFT: int = ...
PARAM_WRITABLE = ...
PRIORITY_DEFAULT = ...
PRIORITY_DEFAULT_IDLE: int = ...
PRIORITY_HIGH: int = ...
PRIORITY_HIGH_IDLE: int = ...
PRIORITY_LOW: int = ...
SIGNAL_ACTION = ...
SIGNAL_DETAILED = ...
SIGNAL_FLAGS_MASK: int = ...
SIGNAL_MATCH_MASK: int = ...
SIGNAL_NO_HOOKS = ...
SIGNAL_NO_RECURSE = ...
SIGNAL_RUN_CLEANUP = ...
SIGNAL_RUN_FIRST = ...
SIGNAL_RUN_LAST = ...
SPAWN_CHILD_INHERITS_STDIN = ...
SPAWN_DO_NOT_REAP_CHILD = ...
SPAWN_FILE_AND_ARGV_ZERO = ...
SPAWN_LEAVE_DESCRIPTORS_OPEN = ...
SPAWN_SEARCH_PATH = ...
SPAWN_STDERR_TO_DEV_NULL = ...
SPAWN_STDOUT_TO_DEV_NULL = ...
TYPE_BOOLEAN = ...
TYPE_BOXED = ...
TYPE_CHAR = ...
TYPE_DOUBLE = ...
TYPE_ENUM = ...
TYPE_FLAGS = ...
TYPE_FLAG_RESERVED_ID_BIT: int = ...
TYPE_FLOAT = ...
TYPE_FUNDAMENTAL_MAX: int = ...
TYPE_FUNDAMENTAL_SHIFT: int = ...
TYPE_GSTRING = ...
TYPE_GTYPE = ...
TYPE_INT = ...
TYPE_INT64 = ...
TYPE_INTERFACE = ...
TYPE_INVALID = ...
TYPE_LONG = ...
TYPE_NONE = ...
TYPE_OBJECT = ...
TYPE_PARAM = ...
TYPE_POINTER = ...
TYPE_PYOBJECT = ...
TYPE_RESERVED_BSE_FIRST: int = ...
TYPE_RESERVED_BSE_LAST: int = ...
TYPE_RESERVED_GLIB_FIRST: int = ...
TYPE_RESERVED_GLIB_LAST: int = ...
TYPE_RESERVED_USER_FIRST: int = ...
TYPE_STRING = ...
TYPE_STRV = ...
TYPE_UCHAR = ...
TYPE_UINT = ...
TYPE_UINT64 = ...
TYPE_ULONG = ...
TYPE_UNICHAR = ...
TYPE_VALUE = ...
TYPE_VARIANT = ...
VALUE_INTERNED_STRING: int = ...
VALUE_NOCOPY_CONTENTS: int = ...
features = ...
glib_version = ...
pygobject_version: tuple[int, int, int, int, int] = ...

def add_emission_hook(*args, **kwargs): ...
def boxed_copy(*args, **kwargs): ...
def boxed_free(*args, **kwargs): ...
def cclosure_marshal_BOOLEAN__BOXED_BOXED(*args, **kwargs): ...
def cclosure_marshal_BOOLEAN__FLAGS(*args, **kwargs): ...
def cclosure_marshal_STRING__OBJECT_POINTER(*args, **kwargs): ...
def cclosure_marshal_VOID__BOOLEAN(*args, **kwargs): ...
def cclosure_marshal_VOID__BOXED(*args, **kwargs): ...
def cclosure_marshal_VOID__CHAR(*args, **kwargs): ...
def cclosure_marshal_VOID__DOUBLE(*args, **kwargs): ...
def cclosure_marshal_VOID__ENUM(*args, **kwargs): ...
def cclosure_marshal_VOID__FLAGS(*args, **kwargs): ...
def cclosure_marshal_VOID__FLOAT(*args, **kwargs): ...
def cclosure_marshal_VOID__INT(*args, **kwargs): ...
def cclosure_marshal_VOID__LONG(*args, **kwargs): ...
def cclosure_marshal_VOID__OBJECT(*args, **kwargs): ...
def cclosure_marshal_VOID__PARAM(*args, **kwargs): ...
def cclosure_marshal_VOID__POINTER(*args, **kwargs): ...
def cclosure_marshal_VOID__STRING(*args, **kwargs): ...
def cclosure_marshal_VOID__UCHAR(*args, **kwargs): ...
def cclosure_marshal_VOID__UINT(*args, **kwargs): ...
def cclosure_marshal_VOID__UINT_POINTER(*args, **kwargs): ...
def cclosure_marshal_VOID__ULONG(*args, **kwargs): ...
def cclosure_marshal_VOID__VARIANT(*args, **kwargs): ...
def cclosure_marshal_VOID__VOID(*args, **kwargs): ...
def cclosure_marshal_generic(*args, **kwargs): ...
def child_watch_add(*args, **kwargs): ...
def clear_signal_handler(*args, **kwargs): ...
def enum_complete_type_info(*args, **kwargs): ...
def enum_get_value(*args, **kwargs): ...
def enum_get_value_by_name(*args, **kwargs): ...
def enum_get_value_by_nick(*args, **kwargs): ...
def enum_register_static(*args, **kwargs): ...
def enum_to_string(*args, **kwargs): ...
def filename_display_basename(*args, **kwargs): ...
def filename_display_name(*args, **kwargs): ...
def filename_from_utf8(*args, **kwargs): ...
def flags_complete_type_info(*args, **kwargs): ...
def flags_get_first_value(*args, **kwargs): ...
def flags_get_value_by_name(*args, **kwargs): ...
def flags_get_value_by_nick(*args, **kwargs): ...
def flags_register_static(*args, **kwargs): ...
def flags_to_string(*args, **kwargs): ...
def get_application_name(*args, **kwargs): ...
def get_current_time(*args, **kwargs): ...
def get_prgname(*args, **kwargs): ...
def gtype_get_type(*args, **kwargs): ...
def idle_add(*args, **kwargs): ...
def io_add_watch(*args, **kwargs): ...
def list_properties(*args, **kwargs): ...
def main_context_default(*args, **kwargs): ...
def main_depth(*args, **kwargs): ...
def markup_escape_text(*args, **kwargs): ...
def new(*args, **kwargs): ...
def param_spec_boolean(*args, **kwargs): ...
def param_spec_boxed(*args, **kwargs): ...
def param_spec_char(*args, **kwargs): ...
def param_spec_double(*args, **kwargs): ...
def param_spec_enum(*args, **kwargs): ...
def param_spec_flags(*args, **kwargs): ...
def param_spec_float(*args, **kwargs): ...
def param_spec_gtype(*args, **kwargs): ...
def param_spec_int(*args, **kwargs): ...
def param_spec_int64(*args, **kwargs): ...
def param_spec_long(*args, **kwargs): ...
def param_spec_object(*args, **kwargs): ...
def param_spec_param(*args, **kwargs): ...
def param_spec_pointer(*args, **kwargs): ...
def param_spec_string(*args, **kwargs): ...
def param_spec_uchar(*args, **kwargs): ...
def param_spec_uint(*args, **kwargs): ...
def param_spec_uint64(*args, **kwargs): ...
def param_spec_ulong(*args, **kwargs): ...
def param_spec_unichar(*args, **kwargs): ...
def param_spec_variant(*args, **kwargs): ...
def param_type_register_static(*args, **kwargs): ...
def param_value_convert(*args, **kwargs): ...
def param_value_defaults(*args, **kwargs): ...
def param_value_set_default(*args, **kwargs): ...
def param_value_validate(*args, **kwargs): ...
def param_values_cmp(*args, **kwargs): ...
def pointer_type_register_static(*args, **kwargs): ...
def remove_emission_hook(*args, **kwargs): ...
def set_application_name(*args, **kwargs): ...
def set_prgname(*args, **kwargs): ...
def signal_accumulator_first_wins(*args, **kwargs): ...
def signal_accumulator_true_handled(*args, **kwargs): ...
def signal_add_emission_hook(*args, **kwargs): ...
def signal_chain_from_overridden(*args, **kwargs): ...
def signal_connect_closure(*args, **kwargs): ...
def signal_connect_closure_by_id(*args, **kwargs): ...
def signal_emitv(*args, **kwargs): ...
def signal_get_invocation_hint(*args, **kwargs): ...
def signal_handler_block(*args, **kwargs): ...
def signal_handler_disconnect(*args, **kwargs): ...
def signal_handler_find(*args, **kwargs): ...
def signal_handler_is_connected(*args, **kwargs): ...
def signal_handler_unblock(*args, **kwargs): ...
def signal_handlers_block_matched(*args, **kwargs): ...
def signal_handlers_destroy(*args, **kwargs): ...
def signal_handlers_disconnect_matched(*args, **kwargs): ...
def signal_handlers_unblock_matched(*args, **kwargs): ...
def signal_has_handler_pending(*args, **kwargs): ...
def signal_is_valid_name(*args, **kwargs): ...
def signal_list_ids(*args, **kwargs): ...
def signal_list_names(*args, **kwargs): ...
def signal_lookup(*args, **kwargs): ...
def signal_name(*args, **kwargs): ...
def signal_new(*args, **kwargs): ...
def signal_override_class_closure(*args, **kwargs): ...
def signal_parse_name(*args, **kwargs): ...
def signal_query(*args, **kwargs): ...
def signal_remove_emission_hook(*args, **kwargs): ...
def signal_set_va_marshaller(*args, **kwargs): ...
def signal_stop_emission(*args, **kwargs): ...
def signal_stop_emission_by_name(*args, **kwargs): ...
def signal_type_cclosure_new(*args, **kwargs): ...
def source_remove(*args, **kwargs): ...
def source_set_closure(*args, **kwargs): ...
def source_set_dummy_callback(*args, **kwargs): ...
def spawn_async(*args, **kwargs): ...
def strdup_value_contents(*args, **kwargs): ...
def threads_init(*args, **kwargs): ...
def timeout_add(*args, **kwargs): ...
def timeout_add_seconds(*args, **kwargs): ...
def type_add_class_private(*args, **kwargs): ...
def type_add_instance_private(*args, **kwargs): ...
def type_add_interface_dynamic(*args, **kwargs): ...
def type_add_interface_static(*args, **kwargs): ...
def type_check_class_is_a(*args, **kwargs): ...
def type_check_instance(*args, **kwargs): ...
def type_check_instance_is_a(*args, **kwargs): ...
def type_check_instance_is_fundamentally_a(*args, **kwargs): ...
def type_check_is_value_type(*args, **kwargs): ...
def type_check_value(*args, **kwargs): ...
def type_check_value_holds(*args, **kwargs): ...
def type_children(*args, **kwargs): ...
def type_class_adjust_private_offset(*args, **kwargs): ...
def type_class_peek(*args, **kwargs): ...
def type_class_peek_static(*args, **kwargs): ...
def type_class_ref(*args, **kwargs): ...
def type_default_interface_peek(*args, **kwargs): ...
def type_default_interface_ref(*args, **kwargs): ...
def type_default_interface_unref(*args, **kwargs): ...
def type_depth(*args, **kwargs): ...
def type_ensure(*args, **kwargs): ...
def type_free_instance(*args, **kwargs): ...
def type_from_name(*args, **kwargs): ...
def type_fundamental(*args, **kwargs): ...
def type_fundamental_next(*args, **kwargs): ...
def type_get_instance_count(*args, **kwargs): ...
def type_get_plugin(*args, **kwargs): ...
def type_get_qdata(*args, **kwargs): ...
def type_get_type_registration_serial(*args, **kwargs): ...
def type_init(*args, **kwargs): ...
def type_init_with_debug_flags(*args, **kwargs): ...
def type_interface_add_prerequisite(*args, **kwargs): ...
def type_interface_get_plugin(*args, **kwargs): ...
def type_interface_instantiatable_prerequisite(*args, **kwargs): ...
def type_interface_peek(*args, **kwargs): ...
def type_interface_prerequisites(*args, **kwargs): ...
def type_interfaces(*args, **kwargs): ...
def type_is_a(*args, **kwargs): ...
def type_name(*args, **kwargs): ...
def type_name_from_class(*args, **kwargs): ...
def type_name_from_instance(*args, **kwargs): ...
def type_next_base(*args, **kwargs): ...
def type_parent(*args, **kwargs): ...
def type_qname(*args, **kwargs): ...
def type_query(*args, **kwargs): ...
def type_register(*args, **kwargs): ...
def type_register_dynamic(*args, **kwargs): ...
def type_register_fundamental(*args, **kwargs): ...
def type_register_static(*args, **kwargs): ...
def type_set_qdata(*args, **kwargs): ...
def type_test_flags(*args, **kwargs): ...
def uri_list_extract_uris(*args, **kwargs): ...
def value_type_compatible(*args, **kwargs): ...
def value_type_transformable(*args, **kwargs): ...


class Binding:
    def dup_source(*args, **kwargs): ...
    def dup_target(*args, **kwargs): ...
    def get_flags(*args, **kwargs): ...
    def get_source(*args, **kwargs): ...
    def get_source_property(*args, **kwargs): ...
    def get_target(*args, **kwargs): ...
    def get_target_property(*args, **kwargs): ...
    def unbind(*args, **kwargs): ...
    

class CClosure:
    callback = ...
    closure = ...
    
    def marshal_BOOLEAN__BOXED_BOXED(*args, **kwargs): ...
    def marshal_BOOLEAN__FLAGS(*args, **kwargs): ...
    def marshal_STRING__OBJECT_POINTER(*args, **kwargs): ...
    def marshal_VOID__BOOLEAN(*args, **kwargs): ...
    def marshal_VOID__BOXED(*args, **kwargs): ...
    def marshal_VOID__CHAR(*args, **kwargs): ...
    def marshal_VOID__DOUBLE(*args, **kwargs): ...
    def marshal_VOID__ENUM(*args, **kwargs): ...
    def marshal_VOID__FLAGS(*args, **kwargs): ...
    def marshal_VOID__FLOAT(*args, **kwargs): ...
    def marshal_VOID__INT(*args, **kwargs): ...
    def marshal_VOID__LONG(*args, **kwargs): ...
    def marshal_VOID__OBJECT(*args, **kwargs): ...
    def marshal_VOID__PARAM(*args, **kwargs): ...
    def marshal_VOID__POINTER(*args, **kwargs): ...
    def marshal_VOID__STRING(*args, **kwargs): ...
    def marshal_VOID__UCHAR(*args, **kwargs): ...
    def marshal_VOID__UINT(*args, **kwargs): ...
    def marshal_VOID__UINT_POINTER(*args, **kwargs): ...
    def marshal_VOID__ULONG(*args, **kwargs): ...
    def marshal_VOID__VARIANT(*args, **kwargs): ...
    def marshal_VOID__VOID(*args, **kwargs): ...
    def marshal_generic(*args, **kwargs): ...
    

class Closure:
    data = ...
    derivative_flag = ...
    floating = ...
    in_inotify = ...
    in_marshal = ...
    is_invalid = ...
    marshal = ...
    meta_marshal_nouse = ...
    n_fnotifiers = ...
    n_guards = ...
    n_inotifiers = ...
    notifiers = ...
    ref_count = ...
    
    def invalidate(*args, **kwargs): ...
    def invoke(*args, **kwargs): ...
    def new_object(*args, **kwargs): ...
    def new_simple(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def sink(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    

class ClosureNotifyData:
    data = ...
    notify = ...
    

class EnumValue:
    value = ...
    value_name = ...
    value_nick = ...
    

class FlagsValue:
    value = ...
    value_name = ...
    value_nick = ...
    

class GBoxed:
    def copy(self, *args, **kwargs): ...
    

class GError:
    def copy(*args, **kwargs): ...
    def matches(*args, **kwargs): ...
    def new_literal(*args, **kwargs): ...
    

class GInterface: ...

class GObject:
    g_type_instance = ...
    props = ...
    qdata = ...
    ref_count = ...
    
    def bind_property_full(*args, **kwargs): ...
    def compat_control(*args, **kwargs): ...
    def connect_data(*args, **kwargs): ...
    def disconnect(*args, **kwargs): ...
    def emit_stop_by_name(*args, **kwargs): ...
    def find_property(*args, **kwargs): ...
    def force_floating(*args, **kwargs): ...
    def freeze_notify(*args, **kwargs): ...
    def get_data(*args, **kwargs): ...
    def get_qdata(*args, **kwargs): ...
    def getv(*args, **kwargs): ...
    def handler_block(*args, **kwargs): ...
    def handler_disconnect(*args, **kwargs): ...
    def handler_is_connected(*args, **kwargs): ...
    def handler_unblock(*args, **kwargs): ...
    def install_properties(*args, **kwargs): ...
    def install_property(*args, **kwargs): ...
    def interface_find_property(*args, **kwargs): ...
    def interface_install_property(*args, **kwargs): ...
    def interface_list_properties(*args, **kwargs): ...
    def is_floating(*args, **kwargs): ...
    def list_properties(*args, **kwargs): ...
    def newv(*args, **kwargs): ...
    def notify(*args, **kwargs): ...
    def notify_by_pspec(*args, **kwargs): ...
    def override_property(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def ref_sink(*args, **kwargs): ...
    def replace_data(*args, **kwargs): ...
    def replace_qdata(*args, **kwargs): ...
    def run_dispose(self) -> None: ...
    def set_data(*args, **kwargs): ...
    def steal_data(*args, **kwargs): ...
    def steal_qdata(*args, **kwargs): ...
    def stop_emission(*args, **kwargs): ...
    def stop_emission_by_name(*args, **kwargs): ...
    def thaw_notify(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    def watch_closure(*args, **kwargs): ...
    
    def bind_property(self, *args, **kwargs): ...
    def chain(self, *args, **kwargs): ...
    def connect(self, *args, **kwargs): ...
    def connect_after(self, *args, **kwargs): ...
    def connect_object(self, *args, **kwargs): ...
    def connect_object_after(self, *args, **kwargs): ...
    def disconnect_by_func(self, *args, **kwargs): ...
    def emit(self, *args, **kwargs): ...
    def get_properties(self, *args, **kwargs): ...
    def get_property(self, *args, **kwargs): ...
    def handler_block_by_func(self, *args, **kwargs): ...
    def handler_unblock_by_func(self, *args, **kwargs): ...
    def set_properties(self, *args, **kwargs): ...
    def set_property(self, *args, **kwargs): ...
    def weak_ref(self, callback: Callable[..., Any], *args: Any) -> None: ...
    

class GObjectWeakRef:
    def unref(self, *args, **kwargs): ...
    

class GParamSpec: ...

class GPointer: ...

class GType:
    children = ...
    depth = ...
    fundamental = ...
    interfaces = ...
    name = ...
    parent = ...
    pytype = ...
    
    def from_name(*args, **kwargs): ...
    
    def has_value_table(self, *args, **kwargs): ...
    def is_a(self, *args, **kwargs): ...
    def is_abstract(self, *args, **kwargs): ...
    def is_classed(self, *args, **kwargs): ...
    def is_deep_derivable(self, *args, **kwargs): ...
    def is_derivable(self, *args, **kwargs): ...
    def is_instantiatable(self, *args, **kwargs): ...
    def is_interface(self, *args, **kwargs): ...
    def is_value_abstract(self, *args, **kwargs): ...
    def is_value_type(self, *args, **kwargs): ...
    

class Idle:
    callback_data = ...
    callback_funcs = ...
    can_recurse = ...
    context = ...
    flags = ...
    name = ...
    next = ...
    poll_fds = ...
    prev = ...
    priority = ...
    priv = ...
    ref_count = ...
    source_funcs = ...
    source_id = ...
    
    def add_child_source(*args, **kwargs): ...
    def add_poll(*args, **kwargs): ...
    def add_unix_fd(*args, **kwargs): ...
    def attach(*args, **kwargs): ...
    def destroy(*args, **kwargs): ...
    def get_can_recurse(*args, **kwargs): ...
    def get_context(*args, **kwargs): ...
    def get_current_time(*args, **kwargs): ...
    def get_id(*args, **kwargs): ...
    def get_name(*args, **kwargs): ...
    def get_priority(*args, **kwargs): ...
    def get_ready_time(*args, **kwargs): ...
    def get_time(*args, **kwargs): ...
    def is_destroyed(*args, **kwargs): ...
    def modify_unix_fd(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def query_unix_fd(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def remove(*args, **kwargs): ...
    def remove_by_funcs_user_data(*args, **kwargs): ...
    def remove_by_user_data(*args, **kwargs): ...
    def remove_child_source(*args, **kwargs): ...
    def remove_poll(*args, **kwargs): ...
    def remove_unix_fd(*args, **kwargs): ...
    def set_callback(*args, **kwargs): ...
    def set_callback_indirect(*args, **kwargs): ...
    def set_can_recurse(*args, **kwargs): ...
    def set_funcs(*args, **kwargs): ...
    def set_name(*args, **kwargs): ...
    def set_name_by_id(*args, **kwargs): ...
    def set_priority(*args, **kwargs): ...
    def set_ready_time(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    

class InitiallyUnowned(Object): ...

class InterfaceInfo:
    interface_data = ...
    interface_finalize = ...
    interface_init = ...
    

class MainContext:
    def acquire(*args, **kwargs): ...
    def add_poll(*args, **kwargs): ...
    def check(*args, **kwargs): ...
    def default(*args, **kwargs): ...
    def dispatch(*args, **kwargs): ...
    def find_source_by_funcs_user_data(*args, **kwargs): ...
    def find_source_by_id(*args, **kwargs): ...
    def find_source_by_user_data(*args, **kwargs): ...
    def get_thread_default(*args, **kwargs): ...
    def invoke_full(*args, **kwargs): ...
    def is_owner(*args, **kwargs): ...
    def iteration(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def pending(*args, **kwargs): ...
    def pop_thread_default(*args, **kwargs): ...
    def prepare(*args, **kwargs): ...
    def push_thread_default(*args, **kwargs): ...
    def query(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def ref_thread_default(*args, **kwargs): ...
    def release(*args, **kwargs): ...
    def remove_poll(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    def wait(*args, **kwargs): ...
    def wakeup(*args, **kwargs): ...
    

class MainLoop:
    def get_context(*args, **kwargs): ...
    def is_running(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def quit(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def run(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    

class Object:
    g_type_instance = ...
    props = ...
    qdata = ...
    ref_count = ...

    def bind_property_full(*args, **kwargs): ...
    def compat_control(*args, **kwargs): ...
    def connect_data(*args, **kwargs): ...
    def disconnect(self, id: int) -> None: ...
    def emit_stop_by_name(*args, **kwargs): ...
    def find_property(*args, **kwargs): ...
    def force_floating(*args, **kwargs): ...
    def freeze_notify(*args, **kwargs): ...
    def get_data(*args, **kwargs): ...
    def get_qdata(*args, **kwargs): ...
    def getv(*args, **kwargs): ...
    def handler_block(*args, **kwargs): ...
    def handler_disconnect(*args, **kwargs): ...
    def handler_is_connected(self, id: int) -> bool: ...
    def handler_unblock(*args, **kwargs): ...
    def install_properties(*args, **kwargs): ...
    def install_property(*args, **kwargs): ...
    def interface_find_property(*args, **kwargs): ...
    def interface_install_property(*args, **kwargs): ...
    def interface_list_properties(*args, **kwargs): ...
    def is_floating(*args, **kwargs): ...
    def list_properties(*args, **kwargs): ...
    def newv(*args, **kwargs): ...
    def notify(*args, **kwargs): ...
    def notify_by_pspec(*args, **kwargs): ...
    def override_property(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def ref_sink(*args, **kwargs): ...
    def replace_data(*args, **kwargs): ...
    def replace_qdata(*args, **kwargs): ...
    def run_dispose(self) -> None: ...
    def set_data(*args, **kwargs): ...
    def steal_data(*args, **kwargs): ...
    def steal_qdata(*args, **kwargs): ...
    def stop_emission(*args, **kwargs): ...
    def stop_emission_by_name(self, detailed_signal: str) -> None: ...
    def thaw_notify(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    def watch_closure(*args, **kwargs): ...
    
    def bind_property(self, *args, **kwargs): ...
    def chain(self, *args, **kwargs): ...
    def connect(self, detailed_signal: str, handler: Callable[..., Any], *args: Any) -> int: ...
    def connect_after(self, detailed_signal: str, handler: Callable[..., Any], *args: Any) -> int: ...
    def connect_object(self, *args, **kwargs): ...
    def connect_object_after(self, *args, **kwargs): ...
    def disconnect_by_func(self, *args, **kwargs): ...
    def emit(self, signal_name: str, *args: Any) -> None: ...
    def get_properties(self, *args, **kwargs): ...
    def get_property(self, property_name: str) -> Any: ...
    def handler_block_by_func(self, *args, **kwargs): ...
    def handler_unblock_by_func(self, *args, **kwargs): ...
    def set_properties(self, *args, **kwargs): ...
    def set_property(self, property_name: str, value: object) -> None: ...
    def weak_ref(self, callback: Callable[..., Any], *args: Any) -> None: ...
    

class ObjectConstructParam:
    pspec = ...
    value = ...
    

class OptionContext:
    def add_group(self, *args, **kwargs): ...
    def get_help_enabled(self, *args, **kwargs): ...
    def get_ignore_unknown_options(self, *args, **kwargs): ...
    def get_main_group(self, *args, **kwargs): ...
    def parse(self, *args, **kwargs): ...
    def set_help_enabled(self, *args, **kwargs): ...
    def set_ignore_unknown_options(self, *args, **kwargs): ...
    def set_main_group(self, *args, **kwargs): ...
    

class OptionGroup:
    def add_entries(self, *args, **kwargs): ...
    def set_translation_domain(self, *args, **kwargs): ...
    

class ParamSpec:
    _blurb = ...
    _nick = ...
    flags = ...
    g_type_instance = ...
    name = ...
    owner_type = ...
    param_id = ...
    qdata = ...
    ref_count = ...
    value_type = ...
    
    def get_blurb(*args, **kwargs): ...
    def get_default_value(*args, **kwargs): ...
    def get_name(*args, **kwargs): ...
    def get_name_quark(*args, **kwargs): ...
    def get_nick(*args, **kwargs): ...
    def get_qdata(*args, **kwargs): ...
    def get_redirect_target(*args, **kwargs): ...
    def is_valid_name(*args, **kwargs): ...
    def set_qdata(*args, **kwargs): ...
    def sink(*args, **kwargs): ...
    def steal_qdata(*args, **kwargs): ...
    
    def do_finalize(self, *args, **kwargs): ...
    def do_value_set_default(self, *args, **kwargs): ...
    def do_value_validate(self, *args, **kwargs): ...
    def do_values_cmp(self, *args, **kwargs): ...
    

class ParamSpecBoolean:
    default_value = ...
    parent_instance = ...
    

class ParamSpecBoxed:
    parent_instance = ...
    

class ParamSpecChar:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecDouble:
    default_value = ...
    epsilon = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecEnum:
    default_value = ...
    enum_class = ...
    parent_instance = ...
    

class ParamSpecFlags:
    default_value = ...
    flags_class = ...
    parent_instance = ...
    

class ParamSpecFloat:
    default_value = ...
    epsilon = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecGType:
    is_a_type = ...
    parent_instance = ...
    

class ParamSpecInt:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecInt64:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecLong:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecObject:
    parent_instance = ...
    

class ParamSpecOverride:
    overridden = ...
    parent_instance = ...
    

class ParamSpecParam:
    parent_instance = ...
    

class ParamSpecPointer:
    parent_instance = ...
    

class ParamSpecPool:
    def insert(*args, **kwargs): ...
    def list(*args, **kwargs): ...
    def list_owned(*args, **kwargs): ...
    def lookup(*args, **kwargs): ...
    def remove(*args, **kwargs): ...
    

class ParamSpecString:
    cset_first = ...
    cset_nth = ...
    default_value = ...
    ensure_non_null = ...
    null_fold_if_empty = ...
    parent_instance = ...
    substitutor = ...
    

class ParamSpecTypeInfo:
    finalize = ...
    instance_init = ...
    instance_size = ...
    n_preallocs = ...
    value_set_default = ...
    value_type = ...
    value_validate = ...
    values_cmp = ...
    

class ParamSpecUChar:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecUInt:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecUInt64:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecULong:
    default_value = ...
    maximum = ...
    minimum = ...
    parent_instance = ...
    

class ParamSpecUnichar:
    default_value = ...
    parent_instance = ...
    

class ParamSpecValueArray:
    element_spec = ...
    fixed_n_elements = ...
    parent_instance = ...
    

class ParamSpecVariant:
    default_value = ...
    padding = ...
    parent_instance = ...
    type = ...
    

class Parameter:
    name = ...
    value = ...
    

class Pid:
    denominator = ...
    imag = ...
    numerator = ...
    real = ...
    
    def from_bytes(*args, **kwargs): ...
    
    def as_integer_ratio(self, *args, **kwargs): ...
    def bit_length(self, *args, **kwargs): ...
    def close(self, *args, **kwargs): ...
    def conjugate(self, *args, **kwargs): ...
    def to_bytes(self, *args, **kwargs): ...
    

class PollFD:
    events = ...
    fd = ...
    revents = ...
    

class Property:
    _default_lookup = ...
    _max_value_lookup = ...
    _min_value_lookup = ...
    _type_from_pytype_lookup = ...
    
    def get_pspec_args(*args, **kwargs): ...
    def getter(*args, **kwargs): ...
    def setter(*args, **kwargs): ...
    

class Signal:
    def copy(*args, **kwargs): ...
    def get_signal_args(*args, **kwargs): ...
    def maketrans(*args, **kwargs): ...
    
    def capitalize(self, *args, **kwargs): ...
    def casefold(self, *args, **kwargs): ...
    def center(self, *args, **kwargs): ...
    def count(self, *args, **kwargs): ...
    def encode(self, *args, **kwargs): ...
    def endswith(self, *args, **kwargs): ...
    def expandtabs(self, *args, **kwargs): ...
    def find(self, *args, **kwargs): ...
    def format(self, *args, **kwargs): ...
    def format_map(self, *args, **kwargs): ...
    def index(self, *args, **kwargs): ...
    def isalnum(self, *args, **kwargs): ...
    def isalpha(self, *args, **kwargs): ...
    def isascii(self, *args, **kwargs): ...
    def isdecimal(self, *args, **kwargs): ...
    def isdigit(self, *args, **kwargs): ...
    def isidentifier(self, *args, **kwargs): ...
    def islower(self, *args, **kwargs): ...
    def isnumeric(self, *args, **kwargs): ...
    def isprintable(self, *args, **kwargs): ...
    def isspace(self, *args, **kwargs): ...
    def istitle(self, *args, **kwargs): ...
    def isupper(self, *args, **kwargs): ...
    def join(self, *args, **kwargs): ...
    def ljust(self, *args, **kwargs): ...
    def lower(self, *args, **kwargs): ...
    def lstrip(self, *args, **kwargs): ...
    def partition(self, *args, **kwargs): ...
    def removeprefix(self, *args, **kwargs): ...
    def removesuffix(self, *args, **kwargs): ...
    def replace(self, *args, **kwargs): ...
    def rfind(self, *args, **kwargs): ...
    def rindex(self, *args, **kwargs): ...
    def rjust(self, *args, **kwargs): ...
    def rpartition(self, *args, **kwargs): ...
    def rsplit(self, *args, **kwargs): ...
    def rstrip(self, *args, **kwargs): ...
    def split(self, *args, **kwargs): ...
    def splitlines(self, *args, **kwargs): ...
    def startswith(self, *args, **kwargs): ...
    def strip(self, *args, **kwargs): ...
    def swapcase(self, *args, **kwargs): ...
    def title(self, *args, **kwargs): ...
    def translate(self, *args, **kwargs): ...
    def upper(self, *args, **kwargs): ...
    def zfill(self, *args, **kwargs): ...
    
    class BoundSignal:
        def connect(*args, **kwargs): ...
        def connect_detailed(*args, **kwargs): ...
        def disconnect(*args, **kwargs): ...
        def emit(*args, **kwargs): ...
        def maketrans(*args, **kwargs): ...
        
        def capitalize(self, *args, **kwargs): ...
        def casefold(self, *args, **kwargs): ...
        def center(self, *args, **kwargs): ...
        def count(self, *args, **kwargs): ...
        def encode(self, *args, **kwargs): ...
        def endswith(self, *args, **kwargs): ...
        def expandtabs(self, *args, **kwargs): ...
        def find(self, *args, **kwargs): ...
        def format(self, *args, **kwargs): ...
        def format_map(self, *args, **kwargs): ...
        def index(self, *args, **kwargs): ...
        def isalnum(self, *args, **kwargs): ...
        def isalpha(self, *args, **kwargs): ...
        def isascii(self, *args, **kwargs): ...
        def isdecimal(self, *args, **kwargs): ...
        def isdigit(self, *args, **kwargs): ...
        def isidentifier(self, *args, **kwargs): ...
        def islower(self, *args, **kwargs): ...
        def isnumeric(self, *args, **kwargs): ...
        def isprintable(self, *args, **kwargs): ...
        def isspace(self, *args, **kwargs): ...
        def istitle(self, *args, **kwargs): ...
        def isupper(self, *args, **kwargs): ...
        def join(self, *args, **kwargs): ...
        def ljust(self, *args, **kwargs): ...
        def lower(self, *args, **kwargs): ...
        def lstrip(self, *args, **kwargs): ...
        def partition(self, *args, **kwargs): ...
        def removeprefix(self, *args, **kwargs): ...
        def removesuffix(self, *args, **kwargs): ...
        def replace(self, *args, **kwargs): ...
        def rfind(self, *args, **kwargs): ...
        def rindex(self, *args, **kwargs): ...
        def rjust(self, *args, **kwargs): ...
        def rpartition(self, *args, **kwargs): ...
        def rsplit(self, *args, **kwargs): ...
        def rstrip(self, *args, **kwargs): ...
        def split(self, *args, **kwargs): ...
        def splitlines(self, *args, **kwargs): ...
        def startswith(self, *args, **kwargs): ...
        def strip(self, *args, **kwargs): ...
        def swapcase(self, *args, **kwargs): ...
        def title(self, *args, **kwargs): ...
        def translate(self, *args, **kwargs): ...
        def upper(self, *args, **kwargs): ...
        def zfill(self, *args, **kwargs): ...
        
    

class SignalInvocationHint:
    detail = ...
    run_type = ...
    signal_id = ...
    

class SignalOverride:
    def copy(*args, **kwargs): ...
    def get_signal_args(*args, **kwargs): ...
    def maketrans(*args, **kwargs): ...
    
    def capitalize(self, *args, **kwargs): ...
    def casefold(self, *args, **kwargs): ...
    def center(self, *args, **kwargs): ...
    def count(self, *args, **kwargs): ...
    def encode(self, *args, **kwargs): ...
    def endswith(self, *args, **kwargs): ...
    def expandtabs(self, *args, **kwargs): ...
    def find(self, *args, **kwargs): ...
    def format(self, *args, **kwargs): ...
    def format_map(self, *args, **kwargs): ...
    def index(self, *args, **kwargs): ...
    def isalnum(self, *args, **kwargs): ...
    def isalpha(self, *args, **kwargs): ...
    def isascii(self, *args, **kwargs): ...
    def isdecimal(self, *args, **kwargs): ...
    def isdigit(self, *args, **kwargs): ...
    def isidentifier(self, *args, **kwargs): ...
    def islower(self, *args, **kwargs): ...
    def isnumeric(self, *args, **kwargs): ...
    def isprintable(self, *args, **kwargs): ...
    def isspace(self, *args, **kwargs): ...
    def istitle(self, *args, **kwargs): ...
    def isupper(self, *args, **kwargs): ...
    def join(self, *args, **kwargs): ...
    def ljust(self, *args, **kwargs): ...
    def lower(self, *args, **kwargs): ...
    def lstrip(self, *args, **kwargs): ...
    def partition(self, *args, **kwargs): ...
    def removeprefix(self, *args, **kwargs): ...
    def removesuffix(self, *args, **kwargs): ...
    def replace(self, *args, **kwargs): ...
    def rfind(self, *args, **kwargs): ...
    def rindex(self, *args, **kwargs): ...
    def rjust(self, *args, **kwargs): ...
    def rpartition(self, *args, **kwargs): ...
    def rsplit(self, *args, **kwargs): ...
    def rstrip(self, *args, **kwargs): ...
    def split(self, *args, **kwargs): ...
    def splitlines(self, *args, **kwargs): ...
    def startswith(self, *args, **kwargs): ...
    def strip(self, *args, **kwargs): ...
    def swapcase(self, *args, **kwargs): ...
    def title(self, *args, **kwargs): ...
    def translate(self, *args, **kwargs): ...
    def upper(self, *args, **kwargs): ...
    def zfill(self, *args, **kwargs): ...
    
    class BoundSignal:
        def connect(*args, **kwargs): ...
        def connect_detailed(*args, **kwargs): ...
        def disconnect(*args, **kwargs): ...
        def emit(*args, **kwargs): ...
        def maketrans(*args, **kwargs): ...
        
        def capitalize(self, *args, **kwargs): ...
        def casefold(self, *args, **kwargs): ...
        def center(self, *args, **kwargs): ...
        def count(self, *args, **kwargs): ...
        def encode(self, *args, **kwargs): ...
        def endswith(self, *args, **kwargs): ...
        def expandtabs(self, *args, **kwargs): ...
        def find(self, *args, **kwargs): ...
        def format(self, *args, **kwargs): ...
        def format_map(self, *args, **kwargs): ...
        def index(self, *args, **kwargs): ...
        def isalnum(self, *args, **kwargs): ...
        def isalpha(self, *args, **kwargs): ...
        def isascii(self, *args, **kwargs): ...
        def isdecimal(self, *args, **kwargs): ...
        def isdigit(self, *args, **kwargs): ...
        def isidentifier(self, *args, **kwargs): ...
        def islower(self, *args, **kwargs): ...
        def isnumeric(self, *args, **kwargs): ...
        def isprintable(self, *args, **kwargs): ...
        def isspace(self, *args, **kwargs): ...
        def istitle(self, *args, **kwargs): ...
        def isupper(self, *args, **kwargs): ...
        def join(self, *args, **kwargs): ...
        def ljust(self, *args, **kwargs): ...
        def lower(self, *args, **kwargs): ...
        def lstrip(self, *args, **kwargs): ...
        def partition(self, *args, **kwargs): ...
        def removeprefix(self, *args, **kwargs): ...
        def removesuffix(self, *args, **kwargs): ...
        def replace(self, *args, **kwargs): ...
        def rfind(self, *args, **kwargs): ...
        def rindex(self, *args, **kwargs): ...
        def rjust(self, *args, **kwargs): ...
        def rpartition(self, *args, **kwargs): ...
        def rsplit(self, *args, **kwargs): ...
        def rstrip(self, *args, **kwargs): ...
        def split(self, *args, **kwargs): ...
        def splitlines(self, *args, **kwargs): ...
        def startswith(self, *args, **kwargs): ...
        def strip(self, *args, **kwargs): ...
        def swapcase(self, *args, **kwargs): ...
        def title(self, *args, **kwargs): ...
        def translate(self, *args, **kwargs): ...
        def upper(self, *args, **kwargs): ...
        def zfill(self, *args, **kwargs): ...
        
    

class SignalQuery:
    itype = ...
    n_params = ...
    param_types = ...
    return_type = ...
    signal_flags = ...
    signal_id = ...
    signal_name = ...
    

class Source:
    callback_data = ...
    callback_funcs = ...
    can_recurse = ...
    context = ...
    flags = ...
    name = ...
    next = ...
    poll_fds = ...
    prev = ...
    priority = ...
    priv = ...
    ref_count = ...
    source_funcs = ...
    source_id = ...
    
    def add_child_source(*args, **kwargs): ...
    def add_poll(*args, **kwargs): ...
    def add_unix_fd(*args, **kwargs): ...
    def attach(*args, **kwargs): ...
    def destroy(*args, **kwargs): ...
    def get_can_recurse(*args, **kwargs): ...
    def get_context(*args, **kwargs): ...
    def get_current_time(*args, **kwargs): ...
    def get_id(*args, **kwargs): ...
    def get_name(*args, **kwargs): ...
    def get_priority(*args, **kwargs): ...
    def get_ready_time(*args, **kwargs): ...
    def get_time(*args, **kwargs): ...
    def is_destroyed(*args, **kwargs): ...
    def modify_unix_fd(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def query_unix_fd(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def remove(*args, **kwargs): ...
    def remove_by_funcs_user_data(*args, **kwargs): ...
    def remove_by_user_data(*args, **kwargs): ...
    def remove_child_source(*args, **kwargs): ...
    def remove_poll(*args, **kwargs): ...
    def remove_unix_fd(*args, **kwargs): ...
    def set_callback(*args, **kwargs): ...
    def set_callback_indirect(*args, **kwargs): ...
    def set_can_recurse(*args, **kwargs): ...
    def set_funcs(*args, **kwargs): ...
    def set_name(*args, **kwargs): ...
    def set_name_by_id(*args, **kwargs): ...
    def set_priority(*args, **kwargs): ...
    def set_ready_time(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    

class Timeout:
    callback_data = ...
    callback_funcs = ...
    can_recurse = ...
    context = ...
    flags = ...
    name = ...
    next = ...
    poll_fds = ...
    prev = ...
    priority = ...
    priv = ...
    ref_count = ...
    source_funcs = ...
    source_id = ...
    
    def add_child_source(*args, **kwargs): ...
    def add_poll(*args, **kwargs): ...
    def add_unix_fd(*args, **kwargs): ...
    def attach(*args, **kwargs): ...
    def destroy(*args, **kwargs): ...
    def get_can_recurse(*args, **kwargs): ...
    def get_context(*args, **kwargs): ...
    def get_current_time(*args, **kwargs): ...
    def get_id(*args, **kwargs): ...
    def get_name(*args, **kwargs): ...
    def get_priority(*args, **kwargs): ...
    def get_ready_time(*args, **kwargs): ...
    def get_time(*args, **kwargs): ...
    def is_destroyed(*args, **kwargs): ...
    def modify_unix_fd(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def query_unix_fd(*args, **kwargs): ...
    def ref(*args, **kwargs): ...
    def remove(*args, **kwargs): ...
    def remove_by_funcs_user_data(*args, **kwargs): ...
    def remove_by_user_data(*args, **kwargs): ...
    def remove_child_source(*args, **kwargs): ...
    def remove_poll(*args, **kwargs): ...
    def remove_unix_fd(*args, **kwargs): ...
    def set_callback(*args, **kwargs): ...
    def set_callback_indirect(*args, **kwargs): ...
    def set_can_recurse(*args, **kwargs): ...
    def set_funcs(*args, **kwargs): ...
    def set_name(*args, **kwargs): ...
    def set_name_by_id(*args, **kwargs): ...
    def set_priority(*args, **kwargs): ...
    def set_ready_time(*args, **kwargs): ...
    def unref(*args, **kwargs): ...
    

class TypeCValue: ...

class TypeFundamentalInfo:
    type_flags = ...
    

class TypeInfo:
    base_finalize = ...
    base_init = ...
    class_data = ...
    class_finalize = ...
    class_init = ...
    class_size = ...
    instance_init = ...
    instance_size = ...
    n_preallocs = ...
    value_table = ...
    

class TypeInstance:
    g_class = ...
    
    def get_private(*args, **kwargs): ...
    

class TypeInterface:
    g_instance_type = ...
    g_type = ...
    
    def add_prerequisite(*args, **kwargs): ...
    def get_plugin(*args, **kwargs): ...
    def instantiatable_prerequisite(*args, **kwargs): ...
    def peek(*args, **kwargs): ...
    def peek_parent(*args, **kwargs): ...
    def prerequisites(*args, **kwargs): ...
    

class TypeModule:
    interface_infos = ...
    name = ...
    parent_instance = ...
    type_infos = ...
    use_count = ...
    
    def add_interface(*args, **kwargs): ...
    def register_enum(*args, **kwargs): ...
    def register_flags(*args, **kwargs): ...
    def register_type(*args, **kwargs): ...
    def set_name(*args, **kwargs): ...
    
    def do_load(self, *args, **kwargs): ...
    def do_unload(self, *args, **kwargs): ...
    

class TypePlugin:
    def complete_interface_info(*args, **kwargs): ...
    def complete_type_info(*args, **kwargs): ...
    def unuse(*args, **kwargs): ...
    def use(*args, **kwargs): ...
    

class TypeQuery:
    class_size = ...
    instance_size = ...
    type = ...
    type_name = ...
    

class TypeValueTable:
    collect_format = ...
    collect_value = ...
    lcopy_format = ...
    lcopy_value = ...
    value_copy = ...
    value_free = ...
    value_init = ...
    value_peek_pointer = ...
    

class Value:
    _Value__g_type = ...
    data = ...
    g_type = ...
    
    def dup_object(*args, **kwargs): ...
    def dup_string(*args, **kwargs): ...
    def dup_variant(*args, **kwargs): ...
    def fits_pointer(*args, **kwargs): ...
    def get_boolean(self) -> bool: ...
    def get_boxed(*args, **kwargs): ...
    def get_char(*args, **kwargs): ...
    def get_double(self) -> float: ...
    def get_enum(self) -> int: ...
    def get_flags(self) -> int: ...
    def get_float(self) -> float: ...
    def get_gtype(*args, **kwargs): ...
    def get_int(self) -> int: ...
    def get_int64(*args, **kwargs): ...
    def get_long(*args, **kwargs): ...
    def get_object(self) -> Object: ...
    def get_param(self) -> ParamSpec: ...
    def get_pointer(*args, **kwargs): ...
    def get_schar(self) -> int: ...
    def get_string(self) -> str: ...
    def get_uchar(*args, **kwargs): ...
    def get_uint(*args, **kwargs): ...
    def get_uint64(*args, **kwargs): ...
    def get_ulong(*args, **kwargs): ...
    def get_value(*args, **kwargs): ...
    def get_variant(self) -> Optional[GLib.Variant]: ...
    def init(*args, **kwargs): ...
    def init_from_instance(*args, **kwargs): ...
    def peek_pointer(*args, **kwargs): ...
    def reset(*args, **kwargs): ...
    def set_boolean(*args, **kwargs): ...
    def set_boxed(*args, **kwargs): ...
    def set_boxed_take_ownership(*args, **kwargs): ...
    def set_char(*args, **kwargs): ...
    def set_double(*args, **kwargs): ...
    def set_enum(*args, **kwargs): ...
    def set_flags(*args, **kwargs): ...
    def set_float(*args, **kwargs): ...
    def set_gtype(*args, **kwargs): ...
    def set_instance(*args, **kwargs): ...
    def set_int(*args, **kwargs): ...
    def set_int64(*args, **kwargs): ...
    def set_interned_string(*args, **kwargs): ...
    def set_long(*args, **kwargs): ...
    def set_object(*args, **kwargs): ...
    def set_param(*args, **kwargs): ...
    def set_pointer(*args, **kwargs): ...
    def set_schar(*args, **kwargs): ...
    def set_static_boxed(*args, **kwargs): ...
    def set_static_string(*args, **kwargs): ...
    def set_string(*args, **kwargs): ...
    def set_string_take_ownership(*args, **kwargs): ...
    def set_uchar(*args, **kwargs): ...
    def set_uint(*args, **kwargs): ...
    def set_uint64(*args, **kwargs): ...
    def set_ulong(*args, **kwargs): ...
    def set_value(*args, **kwargs): ...
    def set_variant(*args, **kwargs): ...
    def take_boxed(*args, **kwargs): ...
    def take_string(*args, **kwargs): ...
    def take_variant(*args, **kwargs): ...
    def transform(*args, **kwargs): ...
    def type_compatible(*args, **kwargs): ...
    def type_transformable(*args, **kwargs): ...
    def unset(*args, **kwargs): ...
    

class ValueArray:
    n_prealloced = ...
    n_values = ...
    values = ...
    
    def append(*args, **kwargs): ...
    def get_nth(*args, **kwargs): ...
    def insert(*args, **kwargs): ...
    def new(*args, **kwargs): ...
    def prepend(*args, **kwargs): ...
    def remove(*args, **kwargs): ...
    def sort(*args, **kwargs): ...
    

class Warning:
    args = ...
    
    def with_traceback(self, *args, **kwargs): ...
    

class WeakRef: ...


# IntFlag is close enough to whatever GFlags does
class GFlags(int, Flag):
    __gtype__: GType
    first_value_name: str
    first_value_nick: str
    value_names: list[str]
    value_nicks: list[str]

    def __new__(cls: Type[_T], value: int | _T) -> _T: ...
    def __or__(self: _T, other: int | _T) -> _T: ...
    def __and__(self: _T, other: int | _T) -> _T: ...
    def __xor__(self: _T, other: int | _T) -> _T: ...
    def __ror__(self: _T, n: int | _T) -> _T: ...
    def __rand__(self: _T, n: int | _T) -> _T: ...
    def __rxor__(self: _T, n: int | _T) -> _T: ...

# IntEnum is close enough to whatever GEnum does
class GEnum(int, Enum):
    __gtype__: GType
    value_name: str
    value_nick: str

class BindingFlags(GFlags):
    DEFAULT = ...
    BIDIRECTIONAL = ...
    SYNC_CREATE = ...
    INVERT_BOOLEAN = ...

class ConnectFlags(GFlags):
    AFTER = ...
    SWAPPED = ...


class ParamFlags(GFlags):
    READABLE = ...
    WRITABLE = ...
    READWRITE = ...
    CONSTRUCT = ...
    CONSTRUCT_ONLY = ...
    LAX_VALIDATION = ...
    STATIC_NAME = ...
    PRIVATE = ...
    STATIC_NICK = ...
    STATIC_BLURB = ...
    EXPLICIT_NOTIFY = ...
    DEPRECATED = ...

class SignalFlags(GFlags):
    RUN_FIRST = ...
    RUN_LAST = ...
    RUN_CLEANUP = ...
    NO_RECURSE = ...
    DETAILED = ...
    ACTION = ...
    NO_HOOKS = ...
    MUST_COLLECT = ...
    DEPRECATED = ...
    ACCUMULATOR_FIRST_RUN = ...

class SignalMatchType(GFlags):
    ID = ...
    DETAIL = ...
    CLOSURE = ...
    FUNC = ...
    DATA = ...
    UNBLOCKED = ...

class TypeDebugFlags(GFlags):
    NONE = ...
    OBJECTS = ...
    SIGNALS = ...
    INSTANCE_COUNT = ...
    MASK = ...

class TypeFlags(GFlags):
    ABSTRACT = ...
    VALUE_ABSTRACT = ...

class TypeFundamentalFlags(GFlags):
    CLASSED = ...
    INSTANTIATABLE = ...
    DERIVABLE = ...
    DEEP_DERIVABLE = ...
