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

import Utils.EventModule as EventModule
import PyFCurve as PyFCurve
import PyQt5.QtCore
import PyQt5.QtWidgets
import QT4FormWidgets as QT4FormWidgets
import QT4Widgets as QT4Widgets
import QTFCurve as QTFCurve
import PyQt5.QtCore as QtCore
import PyQt5.QtGui as QtGui
import PyQt5.QtWidgets as QtWidgets
import UI4 as UI4
import UI4.Widgets.GradientLayer
import Utils as Utils
from QT4FormWidgets.GroupFormWidget import GroupFormWidget
from QTFCurve.FCurveListView import FCurveListView
from typing import ClassVar, Set, Tuple

class ContextMenuFCurveListView(FCurveListView):
    curveContextMenu: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    curveStateToggle: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, *args) -> None: ...
    def contextMenuEvent(self, event): ...
    def mousePressEvent(self, event): ...

class CurvesFormWidget(GroupFormWidget, UI4.Widgets.GradientLayer.GradientLayerBundleManager):
    def __init__(self, parent, policy, factory) -> None: ...
    def _CurvesFormWidget__actionBegin_CB(self, qstringName): ...
    def _CurvesFormWidget__actionEnd_CB(self): ...
    def _CurvesFormWidget__actuallyReloadCurves(self): ...
    def _CurvesFormWidget__addFCurveKeyNondisruptive(self, curve, x): ...
    def _CurvesFormWidget__curveChanged(self, curve, final): ...
    def _CurvesFormWidget__curveContextMenu(self, curve, pos): ...
    def _CurvesFormWidget__curveCopy(self): ...
    def _CurvesFormWidget__curvePaste(self): ...
    def _CurvesFormWidget__curvePropertyChanged(self, curve, key, value): ...
    def _CurvesFormWidget__curveSetDefault(self, curve, policy): ...
    def _CurvesFormWidget__curveSetLocal(self, curve, policy): ...
    def _CurvesFormWidget__curveStateToggle(self, curve): ...
    def _CurvesFormWidget__curveUndo_CB(self, eventType, eventID, **kwargs): ...
    def _CurvesFormWidget__homeButton_clicked_callback(self): ...
    def _CurvesFormWidget__makeAnimated(self): ...
    def _CurvesFormWidget__makeConstant(self): ...
    def _CurvesFormWidget__setCurveStateColor(self, curve, rgb, state, brightness): ...
    def _CurvesFormWidget__setupEventHandlers(self, enabled): ...
    def _CurvesFormWidget__timeChangedCB(self, args): ...
    def _CurvesFormWidget__toggleKeyframe(self): ...
    def _buildControlWidget(self, hbox): ...
    def _freeze(self): ...
    def _popdownCreated(self, popdown): ...
    def _registerCurve(self, curveName, curveAndLayerInfo): ...
    def _reloadCurves(self): ...
    def _setCurveColors(self, curve, rgb): ...
    def _setCurveKey(self, value): ...
    def _thaw(self): ...
    def _unloadCurves(self): ...
    def _updateGraphView(self): ...
    def contextMenuEvent(self, event): ...
    def fitToViewport(self): ...
    def getCurvesToLoad(self): ...
    def getEditor(self): ...
    def getPolicyForCurve(self, curve): ...

class FCurveMaster(PyQt5.QtWidgets.QWidget):
    def __init__(self, parent, policyForCurveCallbackObject) -> None: ...
    def _FCurveMaster__itemClicked_CB(self, item, column): ...
    def addCustomColumn(self, name, defaultValue, valueList: list = ...): ...
    def event(self, event): ...
    def getCurves(self): ...
    def getGraphView(self): ...
    def getListView(self): ...
    def getValueEdit(self): ...

class StateBadgeItemDelegate(PyQt5.QtWidgets.QItemDelegate):
    def __init__(self, parent, policyForCurveCallbackObject, autoKeyColumn) -> None: ...
    def paint(self, painter, option, index): ...
    def paintAutoKeyColumn(self, painter, option, index): ...
    def paintNameColumn(self, painter, option, index): ...
    def sizeHint(self, option, index): ...

class _SimpleObserver(PyFCurve.FCurveObserver):
    def __init__(self) -> None: ...
    def beginValueChange(self, curve): ...
    def curveChanged(self, curve): ...
    def curvePropertyChanged(self, curve, key, value): ...
    def emitter(self): ...
    def endValueChange(self, curve): ...
    def keyframePropertyChanged(self, *args, **kwargs): ...
    def mute(self, muteFlag): ...
    def segmentPropertyChanged(self, *args, **kwargs): ...
    def tangentPropertyChanged(self, *args, **kwargs): ...
