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

from enum import Flag
from enum import Enum

_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(*args, **kwargs): ...
    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, *args, **kwargs): ...
    

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(*args, **kwargs): ...
    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, *args, **kwargs): ...
    

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(*args, **kwargs): ...
    def get_boxed(*args, **kwargs): ...
    def get_char(*args, **kwargs): ...
    def get_double(*args, **kwargs): ...
    def get_enum(*args, **kwargs): ...
    def get_flags(*args, **kwargs): ...
    def get_float(*args, **kwargs): ...
    def get_gtype(*args, **kwargs): ...
    def get_int(*args, **kwargs): ...
    def get_int64(*args, **kwargs): ...
    def get_long(*args, **kwargs): ...
    def get_object(*args, **kwargs): ...
    def get_param(*args, **kwargs): ...
    def get_pointer(*args, **kwargs): ...
    def get_schar(*args, **kwargs): ...
    def get_string(*args, **kwargs): ...
    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(*args, **kwargs): ...
    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 = ...
