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

import PyFCurve as PyFCurve
import PyQt5.QtWidgets
import QT4FormWidgets as QT4FormWidgets
import QT4Widgets as QT4Widgets
import QTFCurve as QTFCurve
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
import UI4 as UI4
import UI4.FormMaster.Editors.BaseRamp
import Utils as Utils
import collections
from UI4.FormMaster.Editors.BaseRamp import BaseRampFormWidget as BaseRampFormWidget
from UI4.FormMaster.Editors.SortableAttributeDropEditor import RegisterCoPolicyWidgetHintKey as RegisterCoPolicyWidgetHintKey
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class FloatRampFormWidget(UI4.FormMaster.Editors.BaseRamp.BaseRampFormWidget):
    DefaultMaxPosition: ClassVar[float] = ...
    DefaultMaxValue: ClassVar[float] = ...
    DefaultMinPosition: ClassVar[float] = ...
    DefaultMinValue: ClassVar[float] = ...
    Presets: ClassVar[collections.OrderedDict] = ...
    ValuesTypeString: ClassVar[str] = ...
    def __init__(self, parent, policy, factory) -> None: ...
    @staticmethod
    def Fit(value, inmin, inmax, outmin, outmax): ...
    def _FloatRampFormWidget__on_interpMenu_aboutToShow(self): ...
    def _FloatRampFormWidget__on_presetAction_triggered(self): ...
    def _FloatRampFormWidget__positionPolicyEvent(self, valuePolicyEvent): ...
    def _FloatRampFormWidget__updateUnderlyingParameters(self): ...
    def _FloatRampFormWidget__valuePolicyEvent(self, valuePolicyEvent): ...
    def _addControlWidgets(self, knots: list[tuple], interpolator: str, interpolatorOptions: list[str], layout: PyQt5.QtWidgets.QHBoxLayout): ...
    def _lockChanged(self, state: bool): ...
    def _updateControlWidgets(self, knots: list[tuple], interpolator: str): ...
    def rampChanged(self, final: bool = ...): ...
    def selectCurve(self): ...
    def selectedKeyframes(self) -> list[PyFCurve.Keyframe]: ...
    def updateInputWidgets(self): ...

class FloatRampWidget(PyQt5.QtWidgets.QWidget):
    def __init__(self, knots, interp, minX, maxX, minY, maxY, parent: Incomplete | None = ...) -> None: ...
    def contextMenuEvent(self, e): ...
    def getCurves(self): ...
    def getFcurve(self): ...
    def getGraphWidget(self): ...
    def getInterp(self): ...
    def getKeyframes(self): ...
    def replaceCurve(self, knots: list[tuple]): ...
    def selectCurve(self): ...
    def setInterp(self, value): ...

class SelectionObserver(PyFCurve.SelectionObserver):
    def __init__(self, parent) -> None: ...
    def deselected(self, obj: PyFCurve.FCurve | PyFCurve.Segment | PyFCurve.Keyframe | PyFCurve.Tangent): ...
    def selected(self, obj: PyFCurve.FCurve | PyFCurve.Segment | PyFCurve.Keyframe | PyFCurve.Tangent): ...

class SimpleObserver(PyFCurve.FCurveObserver):
    def __init__(self, parent) -> None: ...
    def endValueChange(self, curve): ...
    def intermediateValueChange(self, curve): ...
    def setMuted(self, muted): ...
