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

import PyFnAttribute as FnAttribute
import NodegraphAPI as NodegraphAPI
import PyFnAttribute
import collections
import enum
import typing
from Nodes3DAPI_cmodule import BuildAttrListFromDynamicParameterGroup as BuildAttrListFromDynamicParameterGroup, BuildGroupAttrFromParam as BuildGroupAttrFromParam
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

class LayoutAttributesMixin:
    def __init__(self) -> None: ...
    def _LayoutAttributesMixin__generateLayoutAttributes(self, nodeNames, graphState: NodegraphAPI.GraphState): ...
    def _getExcludedNodes(self): ...
    def _isLayoutAttributesValid(self): ...
    def getContentsLayoutAttributes(self, nodeNames: Incomplete | None = ..., graphState: typing.Optional[NodegraphAPI.GraphState] = ...) -> NodegraphAPI.PyFnAttribute.GroupAttribute: ...
    def invalidateLayout(self): ...
    def polish(self): ...

class NodeType(enum.Enum):
    Backdrop: ClassVar[NodeType] = ...
    DotNode: ClassVar[NodeType] = ...
    NetworkMaterial: ClassVar[NodeType] = ...
    Other: ClassVar[NodeType] = ...
    ShadingGroup: ClassVar[NodeType] = ...
    ShadingNode: ClassVar[NodeType] = ...
    ShadingNodeArrayConnector: ClassVar[NodeType] = ...
    Switch: ClassVar[NodeType] = ...
    VariableSwitch: ClassVar[NodeType] = ...
    _member_map_: ClassVar[collections.OrderedDict] = ...
    _member_names_: ClassVar[list] = ...
    _member_type_: ClassVar[type[object]] = ...
    _value2member_map_: ClassVar[dict] = ...
    @classmethod
    def __init__(cls, value) -> None: ...
    def _generate_next_value_(self, name, start, count, last_values): ...

class _LayoutAttributesFactory:
    def __init__(self, nodeNames: dict[NodegraphAPI.Node, str], graphState: NodegraphAPI.GraphState) -> None: ...
    def _LayoutAttributesFactory__generateConnectionStringAttr(self, ports): ...
    @staticmethod
    def _LayoutAttributesFactory__getBackdropAttributes(node: NodegraphAPI.Node, nodeShapeAttrs: dict) -> PyFnAttribute.GroupAttribute: ...
    @staticmethod
    def _LayoutAttributesFactory__getDotNodeAttributes(node: NodegraphAPI.Node, nodeShapeAttrs: dict) -> PyFnAttribute.GroupAttribute: ...
    def _LayoutAttributesFactory__getNodeName(self, node: NodegraphAPI.Node): ...
    @staticmethod
    def _LayoutAttributesFactory__getNodeType(node: NodegraphAPI.Node) -> NodeType: ...
    @staticmethod
    def _LayoutAttributesFactory__getReturnPorts(node: NodegraphAPI.Node): ...
    def _LayoutAttributesFactory__getShadingGroupAttributes(self, node: NodegraphAPI.GroupNode, nodeShapeAttrs: dict) -> PyFnAttribute.GroupAttribute: ...
    @classmethod
    def _LayoutAttributesFactory__getShadingNodeArrayConnectorNodeAttributes(cls, node: NodegraphAPI.Node, _nodeShapeAttrs: dict) -> PyFnAttribute.GroupAttribute: ...
    def _LayoutAttributesFactory__getShadingNodeAttributes(self, node: NodegraphAPI.Node, nodeShapeAttrs: dict) -> PyFnAttribute.GroupAttribute: ...
    @classmethod
    def _LayoutAttributesFactory__getSwitchNodeAttributes(cls, node: NodegraphAPI.Node, _nodeShapeAttrs: dict) -> PyFnAttribute.GroupAttribute: ...
    @classmethod
    def _LayoutAttributesFactory__getVariableSwitchNodeAttributes(cls, node: NodegraphAPI.Node, _nodeShapeAttrs: dict) -> PyFnAttribute.GroupAttribute: ...
    @staticmethod
    def _LayoutAttributesFactory__writeColorAttribute(groupBuilder: PyFnAttribute.GroupBuilder, nodeShapeAttrs: dict): ...
    def _LayoutAttributesFactory__writeCommonAttributes(self, groupBuilder: PyFnAttribute.GroupBuilder, node: NodegraphAPI.Node, nodeShapeAttrs: dict): ...
    def _LayoutAttributesFactory__writeConnectionsAttribute(self, groupBuilder: PyFnAttribute.GroupAttributes, node: NodegraphAPI.Node): ...
    @staticmethod
    def _LayoutAttributesFactory__writeInputPorts(groupBuilder: PyFnAttribute.GroupBuilder, node: NodegraphAPI.Node): ...
    def _LayoutAttributesFactory__writeNodeParameters(self, groupBuilder, node: NodegraphAPI.Node): ...
    def _LayoutAttributesFactory__writeNodeShapeAttributes(self, groupBuilder, node: NodegraphAPI.Node): ...
    @staticmethod
    def _LayoutAttributesFactory__writePagesAttribute(groupBuilder: PyFnAttribute.GroupAttributes, attrsDict: dict): ...
    @staticmethod
    def _LayoutAttributesFactory__writePublicInterfaceConfigParams(groupBuilder: PyFnAttribute.GroupBuilder, node: NodegraphAPI.Node): ...
    @staticmethod
    def _LayoutAttributesFactory__writeShadingGroupInputPorts(groupBuilder, node: NodegraphAPI.Node): ...
    def _LayoutAttributesFactory__writeShadingGroupReturnConnections(self, groupBuilder, node: NodegraphAPI.Node): ...
    @staticmethod
    def _LayoutAttributesFactory__writeShadingGroupReturnPorts(groupBuilder, node: NodegraphAPI.Node): ...
    @classmethod
    def _LayoutAttributesFactory__writeSidebarAttributes(cls, groupBuilder: PyFnAttribute.GroupBuilder, barName: str, nodeShapeAttrs: dict): ...
    def _LayoutAttributesFactory__writeUserParameters(self, groupBuilder, node: NodegraphAPI.Node): ...
    @classmethod
    def _LayoutAttributesFactory__writeUserParametersGroup(cls, groupBuilder, node: NodegraphAPI.Node, parameter, graphState: NodegraphAPI.GraphState): ...
    @staticmethod
    def _LayoutAttributesFactory__writeViewState(groupBuilder: PyFnAttribute.GroupBuilder, nodeShapeAttrs: dict): ...
    def build(self, node: NodegraphAPI.Node) -> PyFnAttribute.GroupAttribute: ...

def GetContentsLayoutAttributes(node: NodegraphAPI.GroupNode, excludedNodes: Incomplete | None = ...) -> PyFnAttribute.GroupAttribute: ...
