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

import Nodes3DAPI.DynamicParameterUtil as DynamicParameterUtil
import PyFnAttribute as FnAttribute
import PyFnGeolib as FnGeolib
import PyFnGeolibServices as FnGeolibServices
import PyUtilModule.Hints as Hints
import NodegraphAPI as NodegraphAPI
import Nodes3DAPI as Nodes3DAPI
import Nodes3DAPI_cmodule as Nodes3DAPI_cmodule
import RenderingAPI.RenderPlugins as RenderPlugins
import RenderingAPI_cmodule.RendererInfo as RendererInfo
import RenderingAPI as RenderingAPI
import NodegraphAPI.StructuredPorts as StructuredPorts
import Utils as Utils
import typing
from Nodes3DAPI.Node3D import Node3D as Node3D
from Nodes3DAPI.ShadingNodeUtil import GetConnectionNames as GetConnectionNames, ReportError as ReportError
from Nodes3DAPI_cmodule import BuildAttrListFromDynamicParameterGroup as BuildAttrListFromDynamicParameterGroup
from _typeshed import Incomplete
from typing import Set, Tuple

class ShadingNodeBase(Node3D):
    def __init__(self) -> None: ...
    def _ShadingNodeBase__buildOpArgs(self, graphState: NodegraphAPI.GraphState, inputNames, parentInputs, paramTracker): ...
    def _ShadingNodeBase__checkDynamicParametersInternal(self, paramsAttr, interfaceAttr, dynamicArrayAttrNames, getHintsFunction): ...
    def _ShadingNodeBase__getUpstreamMaterialParameterDefaultsOp(self, transaction, graphState: NodegraphAPI.GraphState, locationPath): ...
    def _ShadingNodeBase__on_parameter_setValue(self, eventName: str, eventId: str, param: Incomplete | None = ..., node: typing.Optional[NodegraphAPI.Node] = ..., **_kwargs): ...
    def _ShadingNodeBase__on_shadingNodeCreate(self, _eventName, _eventID, **_kwargs): ...
    def _ShadingNodeBase__setLeafAttrsInAttributeSet(self, sourceAttr, targetAttrPath, paramPath, opArgsGb, frameTime): ...
    def _assignPortIndexes(self): ...
    def _buildCoshaderInputPorts(self, hintDict): ...
    def _buildInputPorts(self, rendererInfoPlugin, hintDict, shader): ...
    def _buildOutputPorts(self, rendererInfoPlugin, hintDict, shader): ...
    def _buildPorts(self, shader, rendererInfoPlugin, inputsHintDict, outputsHintDict): ...
    def _cleanAllPorts(self, whitelist): ...
    def _getIncomingSceneOpAndLocation(self, port: NodegraphAPI.Port, graphState: NodegraphAPI.GraphState, transaction): ...
    def _getOp(self, port: NodegraphAPI.Port, graphState: NodegraphAPI.GraphState, visitedState, transaction): ...
    def _getShaderAttrKeys(self): ...
    def _getShadingNodeConnectionInfo(self, sourcePortName: str) -> tuple[str, str, bool]: ...
    def _getStaticAttrHintsForIncomingSceneQuery(self, attrPath): ...
    def _getUpdateParametersSupportedKeywords(self): ...
    def _updateCoshaderPortVisibility(self, hintDict: dict): ...
    def _updateParameters(self, groupAttr, force: bool = ..., defaultAttr: Incomplete | None = ..., getHintsFunction: Incomplete | None = ...): ...
    def _validateExistingPortConnections(self, port: NodegraphAPI.Port): ...
    def addInputPort(self, portName, label: Incomplete | None = ..., page: Incomplete | None = ..., hide: bool = ..., color: Incomplete | None = ...): ...
    def addOutputPort(self, portName): ...
    def addParameterHints(self, attrName, inputDict): ...
    def allowMismatchedConnection(self, myPort, incomingPort): ...
    def checkDynamicParameters(self, *args, **kwds): ...
    def clearParamHistory(self): ...
    def getAdjustedName(self, inputName, frameTime): ...
    def getAdjustedPageName(self, inputPage, frameTime): ...
    def getInfoString(self): ...
    def getOutputTags(self, outputName): ...
    def getRendererName(self) -> str: ...
    def setShowHiddenParameters(self, showHidden: bool): ...
    def showHiddenParameters(self) -> bool: ...
    def validateConnection(self, otherOutPort, myInPort, errorMessages: Incomplete | None = ...): ...

def AssignNodePortColors(nodes: Incomplete | None = ...): ...
def GetPortColor(hintsDict: Incomplete | None = ..., **kwargs) -> list: ...
def GetRegisteredNodeTypes(): ...
def InitializeShadingNode(nodeName, shadingNode, rendererInfoPluginName): ...
def RetargetExtraHints(nodeTypeName): ...
