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

import PyFnAttribute as FnAttribute
import NodegraphAPI as NodegraphAPI
import UI4.FormMaster.Pages as Pages
import UI4.FormMaster.ParameterPolicy as ParameterPolicy
import PyQt5.QtCore
import PyQt5.QtWidgets
import QT4FormWidgets as QT4FormWidgets
import QT4FormWidgets.ValuePolicy
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
import UI4.FormMaster.States as States
import Utils as Utils
from UI4.FormMaster.BaseParameterPolicy import BaseParameterPolicy as BaseParameterPolicy
from UI4.FormMaster.GroupParameterPolicy import GroupParameterPolicy as GroupParameterPolicy
from UI4.Widgets.AttributeHistoryWidgets import AddAttributeHistoryActionsToMenu as AddAttributeHistoryActionsToMenu
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class DataStoreAction(PyQt5.QtWidgets.QAction):
    triggerWithData: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, text, parent, data) -> None: ...
    def _DataStoreAction__trigger(self): ...

class GenericArrayIndexValuePolicy(QT4FormWidgets.ValuePolicy.AbstractValuePolicy):
    def __init__(self, attr, index, parent) -> None: ...
    def _GenericArrayIndexValuePolicy__switchParentStateToLocal(self, parent): ...
    def canHaveCurve(self): ...
    def canHaveExpression(self): ...
    def getName(self): ...
    def getSceneGraphLocationPath(self) -> str | None: ...
    def getType(self): ...
    def getValue(self): ...
    def isLocked(self): ...
    def setAttr(self, attr): ...
    def setCurve(self, value): ...
    def setCurveAutoKey(self, autoKey): ...
    def setCurveEnabled(self, value): ...
    def setCurveXml(self, value): ...
    def setExpression(self, value): ...
    def setExpressionEnabled(self, value): ...
    def setValue(self, value, final: bool = ...): ...

class GenericAssignGroupParameterPolicy(GroupParameterPolicy):
    def __init__(self, param, parent, attrSource, attrPath) -> None: ...
    def _GenericAssignGroupParameterPolicy__checkForPages(self): ...
    def _GenericAssignGroupParameterPolicy__filterChildren(self, children): ...
    def _GenericAssignGroupParameterPolicy__getChildNames(self): ...
    def _GenericAssignGroupParameterPolicy__getChildPageHint(self, childName): ...
    def _GenericAssignGroupParameterPolicy__sourceAdditionalUpdate(self): ...
    def _GenericAssignGroupParameterPolicy__sourceUpdate(self): ...
    def _appendToWrenchMenu(self, menu): ...
    def _childPolicyRenamed(self, policy): ...
    def _closeButtonClicked(self): ...
    def _freeze(self): ...
    def _thaw(self): ...
    def _updateAttrPath(self, parentPath): ...
    def filterToSubset(self, paramNameWhitelist: list[str]) -> bool: ...
    def getAttrName(self) -> str | None: ...
    def getAttrSource(self): ...
    def getChildByName(self, name): ...
    def getChildren(self): ...
    def getName(self): ...
    def getWidgetHints(self): ...
    def isCloseButtonEnabled(self): ...
    def setName(self, title): ...
    def shouldDisplayClose(self): ...
    def shouldDisplayWrench(self): ...
    def waitForReady(self): ...
    @property
    def filteredParameterChildren(self): ...

class GenericAssignPagePolicy(GroupParameterPolicy):
    EMPTYPAGEHINTS: ClassVar[dict] = ...
    def __init__(self, param, parent, attrSource, attrPath, pageName, childNames, childPages: Incomplete | None = ..., pagePrefix: str = ...) -> None: ...
    def _GenericAssignPagePolicy__sourceUpdate(self): ...
    def _appendToWrenchMenu(self, menu): ...
    def _closeButtonClicked(self): ...
    def _updateAttrPath(self, parentPath): ...
    def getChildByName(self, name): ...
    def getChildren(self): ...
    def getName(self): ...
    def getWidgetHints(self): ...
    def shouldDisplayClose(self): ...
    def shouldDisplayWrench(self): ...
    def waitForReady(self): ...

class GenericAssignParameterPolicy(BaseParameterPolicy):
    def __init__(self, param, parent, attrSource: Incomplete | None = ..., attrPath: str = ...) -> None: ...
    def _GenericAssignParameterPolicy__childValueChanged(self, event): ...
    def _GenericAssignParameterPolicy__getActivePolicy(self): ...
    def _GenericAssignParameterPolicy__getArrayChildUnproxied(self, index): ...
    def _GenericAssignParameterPolicy__getMultiAssignParam(self): ...
    def _GenericAssignParameterPolicy__sourceUpdate(self): ...
    def _appendToContextMenu(self, menu: PyQt5.QtWidgets.QMenu): ...
    def _appendToWrenchMenu(self, menu): ...
    def _closeButtonClicked(self): ...
    def _freeze(self): ...
    def _getInternalArrayChildren(self): ...
    def _getValueParam(self): ...
    def _handleEnableParamValueChange(self): ...
    def _handleParamChanged(self, args): ...
    def _handleParamFinalized(self, args: list[tuple[str, object, dict]]): ...
    def _handleTimeChanged(self, final): ...
    def _handleValuePolicyChange(self, event: ValuePolicyEvent): ...
    def _thaw(self): ...
    def _updateAttrPath(self, parentPath): ...
    def bakeCurve(self, keys): ...
    def canHaveCurve(self): ...
    def canHaveExpression(self): ...
    def checkMimeData(self, mimeData): ...
    def forceLocal(self): ...
    def getArrayChild(self, index): ...
    def getArraySize(self): ...
    def getAttrName(self) -> str | None: ...
    def getAttrSource(self): ...
    def getAvailableStates(self): ...
    def getChildByName(self, name): ...
    def getChildren(self): ...
    def getCurve(self): ...
    def getCurveAutoKey(self): ...
    def getCurveKey(self): ...
    def getCurveXml(self): ...
    def getExpression(self): ...
    def getExpressionError(self): ...
    def getExpressionNamespace(self): ...
    def getExpressionReference(self): ...
    def getMimeData(self) -> PyQt5.QtCore.QMimeData: ...
    def getNumChildren(self): ...
    def getType(self): ...
    def getValue(self): ...
    def getValueState(self): ...
    def getWidgetHints(self): ...
    def hasFloatingCurve(self): ...
    def isCloseButtonEnabled(self): ...
    def isCurveEnabled(self): ...
    def isCurveViewed(self): ...
    def isExpressionEnabled(self): ...
    def loadCurveFromFile(self, path, curvename: str = ...): ...
    def removeArrayChild(self, index): ...
    def removeArrayChildren(self, index, count): ...
    def reorderArrayChild(self, oldIndex, newIndex): ...
    def reorderArrayChildren(self, oldIndex, newIndex, count): ...
    def setArraySize(self, size): ...
    def setCurve(self, curve): ...
    def setCurveAutoKey(self, autoKey): ...
    def setCurveEnabled(self, state): ...
    def setCurveKey(self, state): ...
    def setCurveViewed(self, state): ...
    def setCurveXml(self, xml): ...
    def setExpression(self, rawExpr): ...
    def setExpressionEnabled(self, flag): ...
    def setMimeData(self, mimeData, dropAction): ...
    def setValue(self, value, final: bool = ...): ...
    def setValueFromString(self, strValue, final: bool = ...): ...
    def setValueState(self, state): ...
    def shouldDisplayClose(self): ...
    def shouldDisplayState(self): ...
    def shouldDisplayWrench(self): ...
    def waitForReady(self): ...
    def writeCurveToFile(self, path): ...
