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

import UI4.FormMaster.AttributePolicy as AP
import NodegraphAPI as NodegraphAPI
import UI4.FormMaster.ParameterPolicy as ParameterPolicy
import UI4.KatanaPrefs.PrefNames as PrefNames
import QT4FormWidgets as QT4FormWidgets
import UI4.FormMaster.States as States
import UI4.FormMaster.AttributePolicy
import Utils as Utils
import typing
from Callbacks.Callbacks import Callbacks as Callbacks
from UI4.KatanaPrefs.KatanaPrefsObject import Prefs as Prefs
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class ArrayLiveAttributePolicy(LiveAttributePolicyMixin, UI4.FormMaster.AttributePolicy.ArrayAttributePolicy):
    @classmethod
    def Upgrade(cls, policy): ...
    def getArrayChild(self, index): ...
    def getChildPolicyObjects(self): ...
    def getValueState(self): ...

class GroupLiveAttributePolicy(LiveAttributePolicyMixin, UI4.FormMaster.AttributePolicy.GroupAttributePolicy):
    def _buildChildren(self, childDict, childNames): ...

class LiveAttributePolicyManager:
    class CacheEntry:
        def __init__(self) -> None: ...
    _LiveAttributePolicyManager__instance: ClassVar[None] = ...
    def __init__(self) -> None: ...
    @staticmethod
    def Instance(): ...
    def _LiveAttributePolicyManager__finalize3DNodeChanges(self, **kwargs): ...
    def _LiveAttributePolicyManager__on_pref_changed(self, eventType: str | None, eventID: typing.Hashable, prefKey: str, prefValue: object): ...
    def addValueChangedCallback(self, callback): ...
    def clearCache(self): ...
    def flush(self): ...
    def getCacheUndoName(self): ...
    def getValue(self, path, attr, index, getFunction): ...
    def isArrayLive(self, path, attr): ...
    def isLive(self, path, attr, index): ...
    def pause(self): ...
    def registerPolicy(self, policy, doRegister: bool = ...): ...
    def removeValueChangedCallback(self, callback): ...
    def resetTimer(self): ...
    def setValue(self, path, attr, index, value, setFunction: Incomplete | None = ..., keepAlive: Incomplete | None = ...): ...
    def unpause(self): ...
    def valueChangedCallback(self, policy, **kwargs): ...

class LiveAttributePolicyMixin:
    @classmethod
    def Upgrade(cls, policy): ...
    def _freeze(self): ...
    def _thaw(self): ...
    def addLiveCallback(self, callback): ...
    def delCallback(self, callback): ...
    def forwardValueChangedEvent(self, policy, **kwargs): ...
    def getManager(self): ...
    def valueChanged(self, value: bool = ..., final: bool = ..., stateChanged: bool = ..., topologyChanged: bool = ..., nameChanged: bool = ...): ...

class PageGroupLiveAttributePolicy(LiveAttributePolicyMixin, UI4.FormMaster.AttributePolicy.PageGroupAttributePolicy):
    def _buildChildren(self, childDict, childNames): ...

class ScalarLiveAttributePolicy(LiveAttributePolicyMixin, UI4.FormMaster.AttributePolicy.ScalarAttributePolicy):
    def __init__(self, *args, **kwargs) -> None: ...
    def _forwardToEditableParameterPolicy(self, name, *args, **kwargs): ...
    def _forwardToParameterPolicy(self, name, *args, **kwargs): ...
    def _getParameterPolicy(self, editable: bool = ...): ...
    def canHaveCurve(self, *args, **kwargs): ...
    def canHaveExpression(self): ...
    def forwardValueChangedEvent(self, policy, **kwargs): ...
    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 getValue(self): ...
    def getValueState(self): ...
    def hasFloatingCurve(self): ...
    def isCurveEnabled(self): ...
    def isCurveViewed(self): ...
    def isExpressionEnabled(self): ...
    def setCurve(self, curve): ...
    def setCurveAutoKey(self, state): ...
    def setCurveEnabled(self, state): ...
    def setCurveKey(self, state): ...
    def setCurveViewed(self, state): ...
    def setCurveXml(self, xml): ...
    def setExpression(self, expr): ...
    def setExpressionEnabled(self, flag): ...
    def setValue(self, value, final: bool = ...): ...

def ClearCache(): ...
def ConvertAttributePolicyToLive(ap): ...
def CreateProducerLiveGroupPolicy(): ...
def Flush(): ...
def Pause(): ...
def RegisterLiveAttributeChangedCallback(callback, register: bool = ...): ...
def Unpause(): ...
