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

import PyQt5.QtCore
import PyQt5.QtGui
import PyQt5.QtWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import QT4Widgets.TreeWidgetUtil as TreeWidgetUtil
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class CallbackRecord:
    def __init__(self) -> None: ...
    def accept(self): ...
    def ignore(self): ...
    def isAccepted(self): ...

class SortableTreeWidget(PyQt5.QtWidgets.QTreeWidget):
    class _SortableTreeWidget__ContentsPosStore:
        def __init__(self, w, restoreOnDelete: bool = ...) -> None: ...
        def get(self): ...
        def restore(self): ...
        def __del__(self) -> None: ...
    aboutToDrag: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    contextMenuEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    dragEnterEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    dragMoveEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    dropEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    focusInEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    keyPressEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    mouseMoveEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    mousePressEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    mouseReleaseEventSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    rawDragMoveEvent: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    rawDropEvent: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, parent, delegate: Incomplete | None = ...) -> None: ...
    def _SortableTreeWidget__getExpandedAndSelectionTables(self, parentPath, delimiter, items, selectedTable, expandedTable): ...
    def _SortableTreeWidget__itemExpandedOrCollapsed(self, *args, **kwargs): ...
    def _SortableTreeWidget__lastItem(self) -> PyQt5.QtWidgets.QTreeWidgetItem | None: ...
    def _SortableTreeWidget__processDrag(self, event, handleScrolling: bool = ...): ...
    def _SortableTreeWidget__startDrag(self): ...
    def commitData(self, editor: PyQt5.QtWidgets.QWidget): ...
    def contextMenuEvent(self, event: PyQt5.QtGui.QContextMenuEvent): ...
    def customEvent(self, event): ...
    def dragEnterEvent(self, event): ...
    def dragLeaveEvent(self, event): ...
    def dragMoveEvent(self, event): ...
    def dropEvent(self, event): ...
    def edit(self, index: PyQt5.QtCore.QModelIndex, trigger: PyQt5.QtWidgets.QAbstractItemView.EditTrigger, event: PyQt5.QtCore.QEvent) -> bool: ...
    def findItemLocalIndex(self, item): ...
    def getContextMenuHelper(self, event): ...
    def getDragItems(self): ...
    def getExpandedAndSelectionTables(self, delimiter: str = ...): ...
    def getFullHeight(self): ...
    def getFullWidth(self): ...
    def getItemFromLocalIndex(self, parent, index): ...
    def getPositionStore(self, restoreOnDelete: bool = ...): ...
    def getUpdateSuppressor(self): ...
    def isDraggable(self): ...
    def isItemDraggable(self, item): ...
    def isMultiDragEnabled(self): ...
    def keyPressEvent(self, event: PyQt5.QtGui.QKeyEvent): ...
    def mouseMoveEvent(self, event: PyQt5.QtGui.QMouseEvent): ...
    def mousePressEvent(self, event): ...
    def mouseReleaseEvent(self, event): ...
    def setDraggable(self, state): ...
    def setMultiDragEnabled(self, state): ...

class SortableTreeWidgetItem(PyQt5.QtWidgets.QTreeWidgetItem):
    def __init__(self, parent, text: str = ..., data: Incomplete | None = ..., showFocus: bool = ...) -> None: ...
    def getHiliteColor(self): ...
    def getItemData(self): ...
    def indent(self): ...
    def isDraggable(self): ...
    def path(self, column: int = ...): ...
    def setExpanded(self, expand): ...
    def setHiliteColor(self, color): ...
    def setItemData(self, data): ...
    def __hash__(self) -> int: ...
    def __lt__(self, other) -> bool: ...

class SortableTreeWidgetItemDelegate(PyQt5.QtWidgets.QStyledItemDelegate):
    def initStyleOption(self, option: PyQt5.QtWidgets.QStyleOptionViewItem, index: PyQt5.QtCore.QModelIndex): ...
    def textColor(self, option: PyQt5.QtWidgets.QStyleOptionViewItem) -> PyQt5.QtGui.QColor: ...
