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

import DrawingModule as DrawingModule
import NodegraphAPI as NodegraphAPI
import PyQt5.QtCore
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 NodegraphAPI.StructuredPorts as StructuredPorts
import UI4 as UI4
import Utils as Utils
from PyUtilModule.VirtualKatana import Widgets as Widgets
from UI4.Tabs.NodeGraphTab.Layers.StructuredPortsNodeLinkConnectionLayer import StructuredPortsNodeLinkConnectionLayer as StructuredPortsNodeLinkConnectionLayer
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class StructuredPortsNodeInteractionLayer(QT4GLLayerStack.LayerStack.Layer):
    class PortMenuEntry:
        def __init__(self, port: NodegraphAPI.Port, children) -> None: ...
    PORT_CONNECTION_COLUMN: ClassVar[int] = ...
    PORT_NAME_COLUMN: ClassVar[int] = ...
    _StructuredPortsNodeInteractionLayer__pixmaps: ClassVar[dict] = ...
    linkConnectionPortChosen: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    linkMenuItemChosen: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, *args, **kwargs) -> None: ...
    def _StructuredPortsNodeInteractionLayer__linkMenuItemChosen(self, item, meta, nodeName): ...
    def _StructuredPortsNodeInteractionLayer__node_delete_cb(self, eventType, eventID, node: NodegraphAPI.Node, *args, **kwargs): ...
    def _StructuredPortsNodeInteractionLayer__on_menuPopup_show(self): ...
    def _StructuredPortsNodeInteractionLayer__portMenuItemChosen(self, item, meta): ...
    def _StructuredPortsNodeInteractionLayer__processMouseMove(self, event): ...
    def _StructuredPortsNodeInteractionLayer__processMousePress(self, event): ...
    def _StructuredPortsNodeInteractionLayer__showHiddenPortsCallback(self, value, name, meta): ...
    def _disablePortsMenuItem(self, item: SortableTreeWidgetItem): ...
    def _isPortConnectedToNode(self, rawPort: NodegraphAPI.Port, node: NodegraphAPI.Node): ...
    def _recursiveAddAllPortsToMenu(self, menu, ports, parentItem: Incomplete | None = ..., parentHasConnection: bool = ...): ...
    def _recursiveAddConnectedPorts(self, menu: FilterablePopupButton, portMenuEntries: list[PortMenuEntry], parentItem: Incomplete | None = ...): ...
    def _recursiveGetConnectedPorts(self, menu, ports, onlyConnectedToNode): ...
    def _setPortsMenuItemConnections(self, item: SortableTreeWidgetItem, rawPort: NodegraphAPI.Port): ...
    def _setPortsMenuItemTooltip(self, item: SortableTreeWidgetItem, rawPort: NodegraphAPI.Port): ...
    def addPortsMenuItem(self, menu: FilterablePopupButton, port: NodegraphAPI.Port, parentItem: SortableTreeWidgetItem): ...
    def fillPortMenu(self, menu, node: NodegraphAPI.Node, isInput, onlyConnectedToNode: Incomplete | None = ...): ...
    def getPortMenu(self): ...
    def paintGL(self): ...
    def processEvent(self, event): ...
    def showPortMenu(self, mousePos, node: NodegraphAPI.Node, action: Incomplete | None = ..., destinationNodeName: Incomplete | None = ...): ...
