# mypy: disable-error-code="misc, override, attr-defined, no-redef, assignment"

import NodeGraphView as NodeGraphView
import NodegraphAPI as NodegraphAPI
import UI4.KatanaPrefs.PrefNames as PrefNames
import QT4GLLayerStack as QT4GLLayerStack
import QT4GLLayerStack.LayerStack
import QT4Widgets as QT4Widgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import RenderingAPI as RenderingAPI
import UI4 as UI4
import Utils as Utils
import typing
from PyUtilModule.VirtualKatana import LayeredMenuAPI as LayeredMenuAPI
from UI4.KatanaPrefs.KatanaPrefsObject import Prefs as Prefs
from UI4.Tabs.NodeGraphTab.Layers.BookmarkJumpMenuLayer import BookmarkJumpMenuLayer as BookmarkJumpMenuLayer
from UI4.Tabs.NodeGraphTab.Layers.CustomMenuLayer import CustomMenuLayer as CustomMenuLayer
from UI4.Tabs.NodeGraphTab.Layers.MenuLayer import MenuLayer as MenuLayer
from UI4.Tabs.NodeGraphTab.Layers.StickyNoteInteractionLayer import EditBackdropNodeDialog as EditBackdropNodeDialog
from _typeshed import Incomplete
from typing import Callable, Set, Tuple

_KeyboardShortcuts: list
g_entries: list

class CallbackTransientLayer(QT4GLLayerStack.LayerStack.Layer):
    def __init__(self, callback, eventTrigger: Incomplete | None = ..., *args, **kwargs) -> None: ...
    def processEvent(self, event: QEvent) -> bool: ...

class NodeGraphViewInteractionLayer(QT4GLLayerStack.LayerStack.Layer):
    def __init__(self, *args, **kwargs) -> None: ...
    def _NodeGraphViewInteractionLayer__currentNodeViewChanged(self, previousNodeView, currentNodeView): ...
    def _NodeGraphViewInteractionLayer__deleteNodes(self, nodeList): ...
    def _NodeGraphViewInteractionLayer__getUnicodeCharacter(self, event): ...
    def _NodeGraphViewInteractionLayer__isAncestorHash(self, node: NodegraphAPI.Node, cmpHash): ...
    def _NodeGraphViewInteractionLayer__launchLayeredMenuLayer(self): ...
    def _NodeGraphViewInteractionLayer__onNetworkMaterialEditGenerated(self, _eventType, eventID, node: typing.Optional[NodegraphAPI.Node] = ...): ...
    def _NodeGraphViewInteractionLayer__onNetworkMaterialEditInvalidate(self, _eventType, eventID, invalidateAll: bool = ...): ...
    def _NodeGraphViewInteractionLayer__previewBackdropShapeAttrs(self, node: NodegraphAPI.Node, attrDict): ...
    def _NodeGraphViewInteractionLayer__processKeyPress(self, event): ...
    def _NodeGraphViewInteractionLayer__processKeyRelease(self, event): ...
    def _NodeGraphViewInteractionLayer__processMouseButtonDown(self, event): ...
    def _NodeGraphViewInteractionLayer__processMouseButtonUp(self, event): ...
    def _NodeGraphViewInteractionLayer__processMouseMove(self, event): ...
    def _NodeGraphViewInteractionLayer__processMouseWheel(self, event): ...
    def changeNodesInputConnectionsVisibility(self, nodes: list[NodegraphAPI.Node], visibiltyFunc: Callable = ..., setLocalOnly: Incomplete | None = ...): ...
    def changeSelectedNodesInputConnectionsVisibility(self, visibiltyFunc, setLocalOnly: Incomplete | None = ...): ...
    def frameSelection(self, zoom: bool = ...): ...
    def launchEditBackdropDialogCB(self, _eventName, _eventID, node: typing.Optional[NodegraphAPI.Node] = ...): ...
    def popupNodeContextMenu(self, node: NodegraphAPI.Node): ...
    def popupPortContextMenu(self, port: NodegraphAPI.Port, portCoords): ...
    def processEvent(self, event): ...
    def setLayerStack(self, layerStack): ...
    def setNodesInputConnectionsVisibility(self, nodes: list[NodegraphAPI.Node], inputConnectionsVisible: bool, setLocalOnly: Incomplete | None = ...): ...
    def setNodesViewState(self, nodes: list[NodegraphAPI.Node], viewState: int | float): ...
    def setSelectedNodesInputConnectionsVisibility(self, inputConnectionsVisible: bool, setLocalOnly: Incomplete | None = ...): ...
    def setSelectedNodesViewState(self, viewState: int | float): ...
    def showLayeredMenu(self, menu): ...
    def startDrag(self): ...
    def startNodeGraphViewDrag(self, obj: NodegraphAPI.Node | NodegraphAPI.Port) -> bool: ...
    def toggleNodesInputConnectionsVisibility(self, nodes: list[NodegraphAPI.Node], setLocalOnly: Incomplete | None = ...): ...
    def toggleSelectedNodesInputConnectionsVisibility(self, setLocalOnly: Incomplete | None = ...): ...
    def toggleShowFilterBoxState(self, nodes: list[NodegraphAPI.Node]): ...

def RegisterNodeGraphViewKeyboardShortcuts(nodegraphPanel): ...
def _OnToggleShowFilterBox(tab): ...
def _OnViewStateKeyboardShortcut(tab, viewState): ...
def _PressInputConnectionsVisibilityKeyboardShortcut(tab): ...
def _ReleaseInputConnectionsVisibilityKeyboardShortcut(tab): ...
def _getInputConnectionsVisible(node: NodegraphAPI.Node, interactionLayer): ...
def _sanitizeInputConnectionsVisible(icv): ...
