from __future__ import annotations
import usdrt.UsdShade._UsdShade
import typing
import usdrt.Sdf._Sdf
import usdrt.Usd._Usd

__all__ = [
    "ConnectableAPI",
    "CoordSysAPI",
    "Material",
    "MaterialBindingAPI",
    "NodeDefAPI",
    "NodeGraph",
    "Shader",
    "Tokens"
]


class ConnectableAPI(usdrt.Usd._Usd.APISchemaBase, usdrt.Usd._Usd.SchemaBase):
    @staticmethod
    def GetSchemaTypeName() -> TfToken: ...
    def __bool__(self) -> bool: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.Prim) -> None: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.SchemaBase) -> None: ...
    def __repr__(self) -> str: ...
    pass
class CoordSysAPI(usdrt.Usd._Usd.APISchemaBase, usdrt.Usd._Usd.SchemaBase):
    @staticmethod
    def GetSchemaTypeName() -> TfToken: ...
    def __bool__(self) -> bool: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.Prim) -> None: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.SchemaBase) -> None: ...
    def __repr__(self) -> str: ...
    pass
class Material(NodeGraph, usdrt.Usd._Usd.Typed, usdrt.Usd._Usd.SchemaBase):
    def CreateDisplacementAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    def CreateSurfaceAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    def CreateVolumeAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    @staticmethod
    def Define(stage: usdrt.Usd._Usd.Stage, path: usdrt.Sdf._Sdf.Path) -> Material: ...
    def GetDisplacementAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    @staticmethod
    def GetSchemaTypeName() -> TfToken: ...
    def GetSurfaceAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    def GetVolumeAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    def __bool__(self) -> bool: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.Prim) -> None: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.SchemaBase) -> None: ...
    def __repr__(self) -> str: ...
    pass
class MaterialBindingAPI(usdrt.Usd._Usd.APISchemaBase, usdrt.Usd._Usd.SchemaBase):
    @staticmethod
    def GetSchemaTypeName() -> TfToken: ...
    def __bool__(self) -> bool: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.Prim) -> None: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.SchemaBase) -> None: ...
    def __repr__(self) -> str: ...
    pass
class NodeDefAPI(usdrt.Usd._Usd.APISchemaBase, usdrt.Usd._Usd.SchemaBase):
    def CreateIdAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    def CreateImplementationSourceAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    def GetIdAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    def GetImplementationSourceAttr(self) -> usdrt.Usd._Usd.Attribute: ...
    @staticmethod
    def GetSchemaTypeName() -> TfToken: ...
    def __bool__(self) -> bool: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.Prim) -> None: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.SchemaBase) -> None: ...
    def __repr__(self) -> str: ...
    pass
class NodeGraph(usdrt.Usd._Usd.Typed, usdrt.Usd._Usd.SchemaBase):
    @staticmethod
    def Define(stage: usdrt.Usd._Usd.Stage, path: usdrt.Sdf._Sdf.Path) -> NodeGraph: ...
    @staticmethod
    def GetSchemaTypeName() -> TfToken: ...
    def __bool__(self) -> bool: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.Prim) -> None: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.SchemaBase) -> None: ...
    def __repr__(self) -> str: ...
    pass
class Shader(usdrt.Usd._Usd.Typed, usdrt.Usd._Usd.SchemaBase):
    @staticmethod
    def Define(stage: usdrt.Usd._Usd.Stage, path: usdrt.Sdf._Sdf.Path) -> Shader: ...
    @staticmethod
    def GetSchemaTypeName() -> TfToken: ...
    def __bool__(self) -> bool: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.Prim) -> None: ...
    @typing.overload
    def __init__(self, arg0: usdrt.Usd._Usd.SchemaBase) -> None: ...
    def __repr__(self) -> str: ...
    pass
class Tokens():
    allPurpose = ''
    bindMaterialAs = 'bindMaterialAs'
    coordSys = 'coordSys:'
    displacement = 'displacement'
    fallbackStrength = 'fallbackStrength'
    full = 'full'
    id = 'id'
    infoId = 'info:id'
    infoImplementationSource = 'info:implementationSource'
    inputs = 'inputs:'
    interfaceOnly = 'interfaceOnly'
    materialBind = 'materialBind'
    materialBinding = 'material:binding'
    materialBindingCollection = 'material:binding:collection'
    materialVariant = 'materialVariant'
    outputs = 'outputs:'
    outputsDisplacement = 'outputs:displacement'
    outputsSurface = 'outputs:surface'
    outputsVolume = 'outputs:volume'
    preview = 'preview'
    sdrMetadata = 'sdrMetadata'
    sourceAsset = 'sourceAsset'
    sourceCode = 'sourceCode'
    strongerThanDescendants = 'strongerThanDescendants'
    subIdentifier = 'subIdentifier'
    surface = 'surface'
    universalRenderContext = ''
    universalSourceType = ''
    volume = 'volume'
    weakerThanDescendants = 'weakerThanDescendants'
    pass
