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

import PyFnGeolibServices.ArgsFile as ArgsFile
import GeoAPI.Util.ArgsFileUtil as ArgsFileUtil
import UI4.FormMaster.Editors.ConditionalHints as ConditionalHints
import PyUtilModule.Decorators as Decorators
import PyFnAttribute as FnAttribute
import UI4.FormMaster.GenericAssignParameterPolicy as GenericAssignParameterPolicy
import NodegraphAPI
import UI4.FormMaster.ParameterPolicy as ParameterPolicy
import PyQt5.QtCore
import PyQt5.QtWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
import UI4.FormMaster.GenericAssignParameterPolicy_geolib3
import UI4.FormMaster.Editors.UserParametersDialogs as UserParametersDialogs
import Utils as Utils
import UI4.FormMaster.States as ValueState
from Nodes3DAPI.Material import ShaderPathComponents as ShaderPathComponents
from UI4.FormMaster.GenericAssignParameterPolicy_geolib3 import ClientIncomingValueSource as ClientIncomingValueSource, Geolib3GenericAssignPolicyDelegate as Geolib3GenericAssignPolicyDelegate, NullValue as NullValue
from UI4.Util.UndoGrouping import UndoContextGuard as UndoContextGuard
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class MaterialClientIncomingValueSource(UI4.FormMaster.GenericAssignParameterPolicy_geolib3.ClientIncomingValueSource):
    class _WrenchMenuAction(PyQt5.QtWidgets.QAction):
        triggerWithData: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
        def __init__(self, text, parent, data) -> None: ...
        def _WrenchMenuAction__trigger(self): ...
    sActiveInterfaceEditors: ClassVar[set] = ...
    def __init__(self, port: NodegraphAPI.Port, attrRoot) -> None: ...
    def _MaterialClientIncomingValueSource__computeArgsFileEntriesForShaderOfType(self, shaderType): ...
    def _MaterialClientIncomingValueSource__editConditionalState(self, hintType, windowTitle, actionContext): ...
    def _MaterialClientIncomingValueSource__getDescriptionForShaderAttributeAtPath(self, attributePath): ...
    def _MaterialClientIncomingValueSource__getNameOfCurrentlySetShaderOfType(self, shaderType) -> str | None: ...
    def _MaterialClientIncomingValueSource__getRendererInfoPluginNameForShaderOfType(self, shaderType) -> str | None: ...
    def _MaterialClientIncomingValueSource__iterParameterNamesForShaderOfType(self, shaderType): ...
    def _MaterialClientIncomingValueSource__on_wrenchMenu_editConditionalLockingOptions(self, actionContext): ...
    def _MaterialClientIncomingValueSource__on_wrenchMenu_editConditionalVisibility(self, actionContext): ...
    def _MaterialClientIncomingValueSource__on_wrenchMenu_editHelpText(self, actionContext): ...
    def _MaterialClientIncomingValueSource__on_wrenchMenu_editWidgetOptions(self, actionContext): ...
    def _MaterialClientIncomingValueSource__on_wrenchMenu_exportArgsFile(self, actionContext): ...
    def _MaterialClientIncomingValueSource__on_wrenchMenu_renameCoshader(self, actionContext): ...
    def _MaterialClientIncomingValueSource__on_wrenchMenu_widgetTypeTriggered(self, action): ...
    def _MaterialClientIncomingValueSource__refreshUI(self): ...
    def _MaterialClientIncomingValueSource__toggleInterfaceState(self, attributePath): ...
    def _appendToWrenchMenu(self, policy, attributePath, menu, pagePath: Incomplete | None = ...): ...
    def _closeButtonClicked(self, attrPath): ...
    def getHints(self, attributePath): ...
    def getPageHints(self, attributePath, pagePath): ...
    def isCloseButtonEnabled(self, policy, attrPath): ...
    def shouldDisplayClose(self, policy, attrPath): ...
    def shouldDisplayWrench(self, policy, attributePath): ...

class MaterialPolicyDelegateGeolib3(UI4.FormMaster.GenericAssignParameterPolicy_geolib3.Geolib3GenericAssignPolicyDelegate):
    def createPolicy(self, parentPolicy, param, paths: type[UI4.FormMaster.GenericAssignParameterPolicy_geolib3.NullValue] = ...): ...
    def getParamAttrPath(self, param): ...

class _NonpersistentShaderHintStore(PyQt5.QtCore.QObject):
    sSharedInstance: ClassVar[None] = ...
    shaderHintsDidChangeSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, parent: Incomplete | None = ...) -> None: ...
    def getContainerHintsForShader(self, rendererInfoPluginName, shaderName, containerName): ...
    @classmethod
    def getInstance(cls): ...
    def getParameterHintsForShader(self, rendererInfoPluginName, shaderName, parameterName): ...
    def replaceHintsForShaderContainer(self, rendererInfoPluginName, shaderName, containerName, hints): ...
    def replaceHintsForShaderParameter(self, rendererInfoPluginName, shaderName, parameterName, hints): ...

def _ShaderParameterGroupNameForType(shaderType): ...
