from typing import Union, List, Tuple, Callable, Any, TypeAlias 
from PySide6 import QtCore
from enum import Enum, auto


class Events(Enum):
    action_event: QtCore.QEvent = auto()
    change_event: QtCore.QEvent = auto()
    child_event: QtCore.QEvent = auto()
    close_event: QtCore.QEvent = auto()
    context_menu_event: QtCore.QEvent = auto()
    custom_event: QtCore.QEvent = auto()
    drag_enter_event: QtCore.QEvent = auto()
    drag_leave_event: QtCore.QEvent = auto()
    drag_move_event: QtCore.QEvent = auto()
    drop_event: QtCore.QEvent = auto()
    editor_event: QtCore.QEvent = auto()
    enter_event: QtCore.QEvent = auto()
    focus_in_event: QtCore.QEvent = auto()
    focus_out_event: QtCore.QEvent = auto()
    grab_keyboard_event: QtCore.QEvent = auto()
    grab_mouse_event: QtCore.QEvent = auto()
    help_event: QtCore.QEvent = auto()
    hide_event: QtCore.QEvent = auto()
    hover_enter_event: QtCore.QEvent = auto()
    hover_leave_event: QtCore.QEvent = auto()
    hover_move_event: QtCore.QEvent = auto()
    input_method_event: QtCore.QEvent = auto()
    is_input_event: QtCore.QEvent = auto()
    is_pointer_event: QtCore.QEvent = auto()
    is_single_point_event: QtCore.QEvent = auto()
    key_press_event: QtCore.QEvent = auto()
    key_release_event: QtCore.QEvent = auto()
    leave_event: QtCore.QEvent = auto()
    mouse_double_click_event: QtCore.QEvent = auto()
    mouse_move_event: QtCore.QEvent = auto()
    mouse_press_event: QtCore.QEvent = auto()
    mouse_release_event: QtCore.QEvent = auto()
    move_event: QtCore.QEvent = auto()
    native_event: QtCore.QEvent = auto()
    paint_event: QtCore.QEvent = auto()
    polish_event: QtCore.QEvent = auto()
    resend_prepare_event: QtCore.QEvent = auto()
    resize_event: QtCore.QEvent = auto()
    scene_event: QtCore.QEvent = auto()
    send_event: QtCore.QEvent = auto()
    show_event: QtCore.QEvent = auto()
    tablet_event: QtCore.QEvent = auto()
    timer_event: QtCore.QEvent = auto()
    ungrab_keyboard_event: QtCore.QEvent = auto()
    ungrab_mouse_event: QtCore.QEvent = auto()
    viewport_event: QtCore.QEvent = auto()
    wheel_event: QtCore.QEvent = auto()
    widget_event: QtCore.QEvent = auto()
    window_frame_event: QtCore.QEvent = auto()

EventTypeVar: TypeAlias = List[Tuple[Union[Events, str], Callable[..., Any]]]
