from typing import Any, Iterator, Optional, TypedDict
from typing_extensions import Unpack
from ._generated import *

class UfbxError(Exception):
    pass

class UnknownError(UfbxError):
    pass

class FileNotFoundError(UfbxError):
    pass

class EmptyFileError(UfbxError):
    pass

class ExternalFileNotFoundError(UfbxError):
    pass

class OutOfMemoryError(UfbxError):
    pass

class MemoryLimitError(UfbxError):
    pass

class AllocationLimitError(UfbxError):
    pass

class TruncatedFileError(UfbxError):
    pass

class IoError(UfbxError):
    pass

class CancelledError(UfbxError):
    pass

class UnrecognizedFileFormatError(UfbxError):
    pass

class UninitializedOptionsError(UfbxError):
    pass

class ZeroVertexSizeError(UfbxError):
    pass

class TruncatedVertexStreamError(UfbxError):
    pass

class InvalidUtf8Error(UfbxError):
    pass

class FeatureDisabledError(UfbxError):
    pass

class BadNurbsError(UfbxError):
    pass

class BadIndexError(UfbxError):
    pass

class NodeDepthLimitError(UfbxError):
    pass

class ThreadedAsciiParseError(UfbxError):
    pass

class UnsafeOptionsError(UfbxError):
    pass

class DuplicateOverrideError(UfbxError):
    pass

class UnsupportedVersionError(UfbxError):
    pass

class BoolList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> bool: ...
    def __iter__(self) -> Iterator[bool]: ...

class Uint32List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> int: ...
    def __iter__(self) -> Iterator[int]: ...

class RealList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> float: ...
    def __iter__(self) -> Iterator[float]: ...

class Vec2List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> Vec2: ...
    def __iter__(self) -> Iterator[Vec2]: ...

class Vec3List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> Vec3: ...
    def __iter__(self) -> Iterator[Vec3]: ...

class Vec4List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> Vec4: ...
    def __iter__(self) -> Iterator[Vec4]: ...

class StringList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> str: ...
    def __iter__(self) -> Iterator[str]: ...

class Int32List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> int: ...
    def __iter__(self) -> Iterator[int]: ...

class Int64List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> int: ...
    def __iter__(self) -> Iterator[int]: ...

class FloatList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> float: ...
    def __iter__(self) -> Iterator[float]: ...

class DoubleList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> float: ...
    def __iter__(self) -> Iterator[float]: ...

class BlobList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> bytes: ...
    def __iter__(self) -> Iterator[bytes]: ...

class DomNodeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "DomNode": ...
    def __iter__(self) -> Iterator["DomNode"]: ...

class DomValueList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "DomValue": ...
    def __iter__(self) -> Iterator["DomValue"]: ...

class PropList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Prop": ...
    def __iter__(self) -> Iterator["Prop"]: ...

class ElementList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Element": ...
    def __iter__(self) -> Iterator["Element"]: ...

class UnknownList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Unknown": ...
    def __iter__(self) -> Iterator["Unknown"]: ...

class NodeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Node": ...
    def __iter__(self) -> Iterator["Node"]: ...

class MeshList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Mesh": ...
    def __iter__(self) -> Iterator["Mesh"]: ...

class LightList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Light": ...
    def __iter__(self) -> Iterator["Light"]: ...

class CameraList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Camera": ...
    def __iter__(self) -> Iterator["Camera"]: ...

class BoneList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Bone": ...
    def __iter__(self) -> Iterator["Bone"]: ...

class EmptyList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Empty": ...
    def __iter__(self) -> Iterator["Empty"]: ...

class LineCurveList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "LineCurve": ...
    def __iter__(self) -> Iterator["LineCurve"]: ...

class NurbsCurveList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "NurbsCurve": ...
    def __iter__(self) -> Iterator["NurbsCurve"]: ...

class NurbsSurfaceList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "NurbsSurface": ...
    def __iter__(self) -> Iterator["NurbsSurface"]: ...

class NurbsTrimSurfaceList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "NurbsTrimSurface": ...
    def __iter__(self) -> Iterator["NurbsTrimSurface"]: ...

class NurbsTrimBoundaryList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "NurbsTrimBoundary": ...
    def __iter__(self) -> Iterator["NurbsTrimBoundary"]: ...

class ProceduralGeometryList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "ProceduralGeometry": ...
    def __iter__(self) -> Iterator["ProceduralGeometry"]: ...

class StereoCameraList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "StereoCamera": ...
    def __iter__(self) -> Iterator["StereoCamera"]: ...

class CameraSwitcherList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "CameraSwitcher": ...
    def __iter__(self) -> Iterator["CameraSwitcher"]: ...

class MarkerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Marker": ...
    def __iter__(self) -> Iterator["Marker"]: ...

class LodGroupList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "LodGroup": ...
    def __iter__(self) -> Iterator["LodGroup"]: ...

class SkinDeformerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "SkinDeformer": ...
    def __iter__(self) -> Iterator["SkinDeformer"]: ...

class SkinClusterList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "SkinCluster": ...
    def __iter__(self) -> Iterator["SkinCluster"]: ...

class BlendDeformerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BlendDeformer": ...
    def __iter__(self) -> Iterator["BlendDeformer"]: ...

class BlendChannelList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BlendChannel": ...
    def __iter__(self) -> Iterator["BlendChannel"]: ...

class BlendShapeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BlendShape": ...
    def __iter__(self) -> Iterator["BlendShape"]: ...

class CacheDeformerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "CacheDeformer": ...
    def __iter__(self) -> Iterator["CacheDeformer"]: ...

class CacheFileList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "CacheFile": ...
    def __iter__(self) -> Iterator["CacheFile"]: ...

class MaterialList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Material": ...
    def __iter__(self) -> Iterator["Material"]: ...

class TextureList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Texture": ...
    def __iter__(self) -> Iterator["Texture"]: ...

class VideoList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Video": ...
    def __iter__(self) -> Iterator["Video"]: ...

class ShaderList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Shader": ...
    def __iter__(self) -> Iterator["Shader"]: ...

class ShaderBindingList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "ShaderBinding": ...
    def __iter__(self) -> Iterator["ShaderBinding"]: ...

class AnimStackList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "AnimStack": ...
    def __iter__(self) -> Iterator["AnimStack"]: ...

class AnimLayerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "AnimLayer": ...
    def __iter__(self) -> Iterator["AnimLayer"]: ...

class AnimValueList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "AnimValue": ...
    def __iter__(self) -> Iterator["AnimValue"]: ...

class AnimCurveList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "AnimCurve": ...
    def __iter__(self) -> Iterator["AnimCurve"]: ...

class DisplayLayerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "DisplayLayer": ...
    def __iter__(self) -> Iterator["DisplayLayer"]: ...

class SelectionSetList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "SelectionSet": ...
    def __iter__(self) -> Iterator["SelectionSet"]: ...

class SelectionNodeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "SelectionNode": ...
    def __iter__(self) -> Iterator["SelectionNode"]: ...

class CharacterList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Character": ...
    def __iter__(self) -> Iterator["Character"]: ...

class ConstraintList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Constraint": ...
    def __iter__(self) -> Iterator["Constraint"]: ...

class AudioLayerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "AudioLayer": ...
    def __iter__(self) -> Iterator["AudioLayer"]: ...

class AudioClipList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "AudioClip": ...
    def __iter__(self) -> Iterator["AudioClip"]: ...

class PoseList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Pose": ...
    def __iter__(self) -> Iterator["Pose"]: ...

class MetadataObjectList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "MetadataObject": ...
    def __iter__(self) -> Iterator["MetadataObject"]: ...

class ConnectionList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Connection": ...
    def __iter__(self) -> Iterator["Connection"]: ...

class UvSetList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "UvSet": ...
    def __iter__(self) -> Iterator["UvSet"]: ...

class ColorSetList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "ColorSet": ...
    def __iter__(self) -> Iterator["ColorSet"]: ...

class EdgeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> Edge: ...
    def __iter__(self) -> Iterator[Edge]: ...

class FaceList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> Face: ...
    def __iter__(self) -> Iterator[Face]: ...

class MeshPartList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "MeshPart": ...
    def __iter__(self) -> Iterator["MeshPart"]: ...

class FaceGroupList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "FaceGroup": ...
    def __iter__(self) -> Iterator["FaceGroup"]: ...

class SubdivisionWeightRangeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "SubdivisionWeightRange": ...
    def __iter__(self) -> Iterator["SubdivisionWeightRange"]: ...

class SubdivisionWeightList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "SubdivisionWeight": ...
    def __iter__(self) -> Iterator["SubdivisionWeight"]: ...

class LineSegmentList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "LineSegment": ...
    def __iter__(self) -> Iterator["LineSegment"]: ...

class LodLevelList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> LodLevel: ...
    def __iter__(self) -> Iterator[LodLevel]: ...

class SkinVertexList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> SkinVertex: ...
    def __iter__(self) -> Iterator[SkinVertex]: ...

class SkinWeightList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> SkinWeight: ...
    def __iter__(self) -> Iterator[SkinWeight]: ...

class BlendKeyframeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BlendKeyframe": ...
    def __iter__(self) -> Iterator["BlendKeyframe"]: ...

class CacheFrameList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "CacheFrame": ...
    def __iter__(self) -> Iterator["CacheFrame"]: ...

class CacheChannelList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "CacheChannel": ...
    def __iter__(self) -> Iterator["CacheChannel"]: ...

class MaterialTextureList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "MaterialTexture": ...
    def __iter__(self) -> Iterator["MaterialTexture"]: ...

class TextureLayerList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "TextureLayer": ...
    def __iter__(self) -> Iterator["TextureLayer"]: ...

class ShaderTextureInputList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "ShaderTextureInput": ...
    def __iter__(self) -> Iterator["ShaderTextureInput"]: ...

class TextureFileList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "TextureFile": ...
    def __iter__(self) -> Iterator["TextureFile"]: ...

class ShaderPropBindingList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "ShaderPropBinding": ...
    def __iter__(self) -> Iterator["ShaderPropBinding"]: ...

class PropOverrideList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "PropOverride": ...
    def __iter__(self) -> Iterator["PropOverride"]: ...

class TransformOverrideList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> TransformOverride: ...
    def __iter__(self) -> Iterator[TransformOverride]: ...

class AnimPropList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "AnimProp": ...
    def __iter__(self) -> Iterator["AnimProp"]: ...

class KeyframeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> Keyframe: ...
    def __iter__(self) -> Iterator[Keyframe]: ...

class ConstraintTargetList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "ConstraintTarget": ...
    def __iter__(self) -> Iterator["ConstraintTarget"]: ...

class BonePoseList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BonePose": ...
    def __iter__(self) -> Iterator["BonePose"]: ...

class NameElementList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "NameElement": ...
    def __iter__(self) -> Iterator["NameElement"]: ...

class WarningList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "Warning": ...
    def __iter__(self) -> Iterator["Warning"]: ...

class BakedVec3List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BakedVec3": ...
    def __iter__(self) -> Iterator["BakedVec3"]: ...

class BakedQuatList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BakedQuat": ...
    def __iter__(self) -> Iterator["BakedQuat"]: ...

class BakedNodeList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BakedNode": ...
    def __iter__(self) -> Iterator["BakedNode"]: ...

class BakedPropList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BakedProp": ...
    def __iter__(self) -> Iterator["BakedProp"]: ...

class BakedElementList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> "BakedElement": ...
    def __iter__(self) -> Iterator["BakedElement"]: ...

class ConstUint32List:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> int: ...
    def __iter__(self) -> Iterator[int]: ...

class ConstRealList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> float: ...
    def __iter__(self) -> Iterator[float]: ...

class ConstPropOverrideDescList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> Any: ...
    def __iter__(self) -> Iterator[Any]: ...

class ConstTransformOverrideList:
    def __len__(self) -> int: ...
    def __getitem__(self, index: int) -> TransformOverride: ...
    def __iter__(self) -> Iterator[TransformOverride]: ...

class VoidList:
    @property
    def data(self) -> Any: ...
    @property
    def count(self) -> int: ...

class DomValue:
    @property
    def type(self) -> DomValueType: ...
    @property
    def value_str(self) -> str: ...
    @property
    def value_blob(self) -> bytes: ...
    @property
    def value_int(self) -> int: ...
    @property
    def value_float(self) -> float: ...

class DomNode:
    @property
    def name(self) -> str: ...
    @property
    def children(self) -> DomNodeList: ...
    @property
    def values(self) -> DomValueList: ...

    def dom_find(self, name: str) -> Optional[DomNode]:
        ...

    def dom_is_array(self) -> bool:
        ...

    def dom_array_size(self) -> int:
        ...

    def dom_as_int32_list(self) -> Int32List:
        ...

    def dom_as_int64_list(self) -> Int64List:
        ...

    def dom_as_float_list(self) -> FloatList:
        ...

    def dom_as_double_list(self) -> DoubleList:
        ...

    def dom_as_real_list(self) -> RealList:
        ...

    def dom_as_blob_list(self) -> BlobList:
        ...

class Prop:
    @property
    def name(self) -> str: ...
    @property
    def type(self) -> PropType: ...
    @property
    def flags(self) -> PropFlags: ...
    @property
    def value_str(self) -> str: ...
    @property
    def value_blob(self) -> bytes: ...
    @property
    def value_int(self) -> int: ...
    @property
    def value_vec4(self) -> Vec4: ...

class Props:
    @property
    def props(self) -> PropList: ...
    @property
    def num_animated(self) -> int: ...
    @property
    def defaults(self) -> Optional[Props]: ...

    def find_prop(self, name: str) -> Optional[Prop]:
        ...

    def find_real(self, name: str, default: float) -> float:
        ...

    def find_vec3(self, name: str, default: Vec3) -> Vec3:
        ...

    def find_int(self, name: str, default: int) -> int:
        ...

    def find_bool(self, name: str, default: bool) -> bool:
        ...

class Connection:
    @property
    def src(self) -> "Element": ...
    @property
    def dst(self) -> "Element": ...
    @property
    def src_prop(self) -> str: ...
    @property
    def dst_prop(self) -> str: ...

class Element:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def type(self) -> ElementType: ...
    @property
    def connections_src(self) -> ConnectionList: ...
    @property
    def connections_dst(self) -> ConnectionList: ...
    @property
    def dom_node(self) -> Optional[DomNode]: ...
    @property
    def scene(self) -> "Scene": ...

class Unknown:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def type(self) -> str: ...
    @property
    def super_type(self) -> str: ...
    @property
    def sub_type(self) -> str: ...

class Node:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def parent(self) -> Optional[Node]: ...
    @property
    def children(self) -> NodeList: ...
    @property
    def mesh(self) -> Optional["Mesh"]: ...
    @property
    def light(self) -> Optional["Light"]: ...
    @property
    def camera(self) -> Optional["Camera"]: ...
    @property
    def bone(self) -> Optional["Bone"]: ...
    @property
    def attrib(self) -> Optional[Element]: ...
    @property
    def geometry_transform_helper(self) -> Optional[Node]: ...
    @property
    def scale_helper(self) -> Optional[Node]: ...
    @property
    def attrib_type(self) -> ElementType: ...
    @property
    def all_attribs(self) -> ElementList: ...
    @property
    def inherit_mode(self) -> InheritMode: ...
    @property
    def original_inherit_mode(self) -> InheritMode: ...
    @property
    def local_transform(self) -> Transform: ...
    @property
    def geometry_transform(self) -> Transform: ...
    @property
    def inherit_scale(self) -> Vec3: ...
    @property
    def inherit_scale_node(self) -> Optional[Node]: ...
    @property
    def rotation_order(self) -> RotationOrder: ...
    @property
    def euler_rotation(self) -> Vec3: ...
    @property
    def node_to_parent(self) -> Matrix: ...
    @property
    def node_to_world(self) -> Matrix: ...
    @property
    def geometry_to_node(self) -> Matrix: ...
    @property
    def geometry_to_world(self) -> Matrix: ...
    @property
    def unscaled_node_to_world(self) -> Matrix: ...
    @property
    def adjust_pre_translation(self) -> Vec3: ...
    @property
    def adjust_pre_rotation(self) -> Quat: ...
    @property
    def adjust_pre_scale(self) -> float: ...
    @property
    def adjust_post_rotation(self) -> Quat: ...
    @property
    def adjust_post_scale(self) -> float: ...
    @property
    def adjust_translation_scale(self) -> float: ...
    @property
    def adjust_mirror_axis(self) -> MirrorAxis: ...
    @property
    def materials(self) -> MaterialList: ...
    @property
    def bind_pose(self) -> Optional["Pose"]: ...
    @property
    def visible(self) -> bool: ...
    @property
    def is_root(self) -> bool: ...
    @property
    def has_geometry_transform(self) -> bool: ...
    @property
    def has_adjust_transform(self) -> bool: ...
    @property
    def has_root_adjust_transform(self) -> bool: ...
    @property
    def is_geometry_transform_helper(self) -> bool: ...
    @property
    def is_scale_helper(self) -> bool: ...
    @property
    def is_scale_compensate_parent(self) -> bool: ...
    @property
    def node_depth(self) -> int: ...

    def get_compatible_matrix_for_normals(self) -> Matrix:
        ...

    def evaluate_transform(self, anim: Anim, time: float) -> Transform:
        ...

class VertexAttrib:
    @property
    def exists(self) -> bool: ...
    @property
    def values(self) -> VoidList: ...
    @property
    def indices(self) -> Uint32List: ...
    @property
    def value_reals(self) -> int: ...
    @property
    def unique_per_vertex(self) -> bool: ...
    @property
    def values_w(self) -> RealList: ...

class VertexReal:
    @property
    def exists(self) -> bool: ...
    @property
    def values(self) -> RealList: ...
    @property
    def indices(self) -> Uint32List: ...
    @property
    def value_reals(self) -> int: ...
    @property
    def unique_per_vertex(self) -> bool: ...
    @property
    def values_w(self) -> RealList: ...

class VertexVec2:
    @property
    def exists(self) -> bool: ...
    @property
    def values(self) -> Vec2List: ...
    @property
    def indices(self) -> Uint32List: ...
    @property
    def value_reals(self) -> int: ...
    @property
    def unique_per_vertex(self) -> bool: ...
    @property
    def values_w(self) -> RealList: ...

class VertexVec3:
    @property
    def exists(self) -> bool: ...
    @property
    def values(self) -> Vec3List: ...
    @property
    def indices(self) -> Uint32List: ...
    @property
    def value_reals(self) -> int: ...
    @property
    def unique_per_vertex(self) -> bool: ...
    @property
    def values_w(self) -> RealList: ...

class VertexVec4:
    @property
    def exists(self) -> bool: ...
    @property
    def values(self) -> Vec4List: ...
    @property
    def indices(self) -> Uint32List: ...
    @property
    def value_reals(self) -> int: ...
    @property
    def unique_per_vertex(self) -> bool: ...
    @property
    def values_w(self) -> RealList: ...

class UvSet:
    @property
    def name(self) -> str: ...
    @property
    def index(self) -> int: ...
    @property
    def vertex_uv(self) -> VertexVec2: ...
    @property
    def vertex_tangent(self) -> VertexVec3: ...
    @property
    def vertex_bitangent(self) -> VertexVec3: ...

class ColorSet:
    @property
    def name(self) -> str: ...
    @property
    def index(self) -> int: ...
    @property
    def vertex_color(self) -> VertexVec4: ...

class MeshPart:
    @property
    def index(self) -> int: ...
    @property
    def num_faces(self) -> int: ...
    @property
    def num_triangles(self) -> int: ...
    @property
    def num_empty_faces(self) -> int: ...
    @property
    def num_point_faces(self) -> int: ...
    @property
    def num_line_faces(self) -> int: ...
    @property
    def face_indices(self) -> Uint32List: ...

class FaceGroup:
    @property
    def id(self) -> int: ...
    @property
    def name(self) -> str: ...

class SubdivisionWeightRange:
    @property
    def weight_begin(self) -> int: ...
    @property
    def num_weights(self) -> int: ...

class SubdivisionWeight:
    @property
    def weight(self) -> float: ...
    @property
    def index(self) -> int: ...

class SubdivisionResult:
    @property
    def result_memory_used(self) -> int: ...
    @property
    def temp_memory_used(self) -> int: ...
    @property
    def result_allocs(self) -> int: ...
    @property
    def temp_allocs(self) -> int: ...
    @property
    def source_vertex_ranges(self) -> SubdivisionWeightRangeList: ...
    @property
    def source_vertex_weights(self) -> SubdivisionWeightList: ...
    @property
    def skin_cluster_ranges(self) -> SubdivisionWeightRangeList: ...
    @property
    def skin_cluster_weights(self) -> SubdivisionWeightList: ...

class Mesh:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def num_vertices(self) -> int: ...
    @property
    def num_indices(self) -> int: ...
    @property
    def num_faces(self) -> int: ...
    @property
    def num_triangles(self) -> int: ...
    @property
    def num_edges(self) -> int: ...
    @property
    def max_face_triangles(self) -> int: ...
    @property
    def num_empty_faces(self) -> int: ...
    @property
    def num_point_faces(self) -> int: ...
    @property
    def num_line_faces(self) -> int: ...
    @property
    def faces(self) -> FaceList: ...
    @property
    def face_smoothing(self) -> BoolList: ...
    @property
    def face_material(self) -> Uint32List: ...
    @property
    def face_group(self) -> Uint32List: ...
    @property
    def face_hole(self) -> BoolList: ...
    @property
    def edges(self) -> EdgeList: ...
    @property
    def edge_smoothing(self) -> BoolList: ...
    @property
    def edge_crease(self) -> RealList: ...
    @property
    def edge_visibility(self) -> BoolList: ...
    @property
    def vertex_indices(self) -> Uint32List: ...
    @property
    def vertices(self) -> Vec3List: ...
    @property
    def vertex_first_index(self) -> Uint32List: ...
    @property
    def vertex_position(self) -> VertexVec3: ...
    @property
    def vertex_normal(self) -> VertexVec3: ...
    @property
    def vertex_uv(self) -> VertexVec2: ...
    @property
    def vertex_tangent(self) -> VertexVec3: ...
    @property
    def vertex_bitangent(self) -> VertexVec3: ...
    @property
    def vertex_color(self) -> VertexVec4: ...
    @property
    def vertex_crease(self) -> VertexReal: ...
    @property
    def uv_sets(self) -> UvSetList: ...
    @property
    def color_sets(self) -> ColorSetList: ...
    @property
    def materials(self) -> MaterialList: ...
    @property
    def face_groups(self) -> FaceGroupList: ...
    @property
    def material_parts(self) -> MeshPartList: ...
    @property
    def face_group_parts(self) -> MeshPartList: ...
    @property
    def material_part_usage_order(self) -> Uint32List: ...
    @property
    def skinned_is_local(self) -> bool: ...
    @property
    def skinned_position(self) -> VertexVec3: ...
    @property
    def skinned_normal(self) -> VertexVec3: ...
    @property
    def skin_deformers(self) -> SkinDeformerList: ...
    @property
    def blend_deformers(self) -> BlendDeformerList: ...
    @property
    def cache_deformers(self) -> CacheDeformerList: ...
    @property
    def all_deformers(self) -> ElementList: ...
    @property
    def subdivision_preview_levels(self) -> int: ...
    @property
    def subdivision_render_levels(self) -> int: ...
    @property
    def subdivision_display_mode(self) -> SubdivisionDisplayMode: ...
    @property
    def subdivision_boundary(self) -> SubdivisionBoundary: ...
    @property
    def subdivision_uv_boundary(self) -> SubdivisionBoundary: ...
    @property
    def reversed_winding(self) -> bool: ...
    @property
    def generated_normals(self) -> bool: ...
    @property
    def subdivision_evaluated(self) -> bool: ...
    @property
    def subdivision_result(self) -> Optional[SubdivisionResult]: ...
    @property
    def from_tessellated_nurbs(self) -> bool: ...

class Light:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def color(self) -> Vec3: ...
    @property
    def intensity(self) -> float: ...
    @property
    def local_direction(self) -> Vec3: ...
    @property
    def type(self) -> LightType: ...
    @property
    def decay(self) -> LightDecay: ...
    @property
    def area_shape(self) -> LightAreaShape: ...
    @property
    def inner_angle(self) -> float: ...
    @property
    def outer_angle(self) -> float: ...
    @property
    def cast_light(self) -> bool: ...
    @property
    def cast_shadows(self) -> bool: ...

class Camera:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def projection_mode(self) -> ProjectionMode: ...
    @property
    def resolution_is_pixels(self) -> bool: ...
    @property
    def resolution(self) -> Vec2: ...
    @property
    def field_of_view_deg(self) -> Vec2: ...
    @property
    def field_of_view_tan(self) -> Vec2: ...
    @property
    def orthographic_extent(self) -> float: ...
    @property
    def orthographic_size(self) -> Vec2: ...
    @property
    def projection_plane(self) -> Vec2: ...
    @property
    def aspect_ratio(self) -> float: ...
    @property
    def near_plane(self) -> float: ...
    @property
    def far_plane(self) -> float: ...
    @property
    def projection_axes(self) -> CoordinateAxes: ...
    @property
    def aspect_mode(self) -> AspectMode: ...
    @property
    def aperture_mode(self) -> ApertureMode: ...
    @property
    def gate_fit(self) -> GateFit: ...
    @property
    def aperture_format(self) -> ApertureFormat: ...
    @property
    def focal_length_mm(self) -> float: ...
    @property
    def film_size_inch(self) -> Vec2: ...
    @property
    def aperture_size_inch(self) -> Vec2: ...
    @property
    def squeeze_ratio(self) -> float: ...

class Bone:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def radius(self) -> float: ...
    @property
    def relative_length(self) -> float: ...
    @property
    def is_root(self) -> bool: ...

class Empty:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...

class LineSegment:
    @property
    def index_begin(self) -> int: ...
    @property
    def num_indices(self) -> int: ...

class LineCurve:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def color(self) -> Vec3: ...
    @property
    def control_points(self) -> Vec3List: ...
    @property
    def point_indices(self) -> Uint32List: ...
    @property
    def segments(self) -> LineSegmentList: ...
    @property
    def from_tessellated_nurbs(self) -> bool: ...

class NurbsBasis:
    @property
    def order(self) -> int: ...
    @property
    def topology(self) -> NurbsTopology: ...
    @property
    def knot_vector(self) -> RealList: ...
    @property
    def t_min(self) -> float: ...
    @property
    def t_max(self) -> float: ...
    @property
    def spans(self) -> RealList: ...
    @property
    def is_2d(self) -> bool: ...
    @property
    def num_wrap_control_points(self) -> int: ...
    @property
    def valid(self) -> bool: ...

class NurbsCurve:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def basis(self) -> NurbsBasis: ...
    @property
    def control_points(self) -> Vec4List: ...

    def evaluate_nurbs_curve(self, u: float) -> CurvePoint:
        ...

class NurbsSurface:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def basis_u(self) -> NurbsBasis: ...
    @property
    def basis_v(self) -> NurbsBasis: ...
    @property
    def num_control_points_u(self) -> int: ...
    @property
    def num_control_points_v(self) -> int: ...
    @property
    def control_points(self) -> Vec4List: ...
    @property
    def span_subdivision_u(self) -> int: ...
    @property
    def span_subdivision_v(self) -> int: ...
    @property
    def flip_normals(self) -> bool: ...
    @property
    def material(self) -> Optional["Material"]: ...

    def evaluate_nurbs_surface(self, u: float, v: float) -> SurfacePoint:
        ...

class NurbsTrimSurface:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...

class NurbsTrimBoundary:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...

class ProceduralGeometry:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...

class StereoCamera:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def left(self) -> Optional[Camera]: ...
    @property
    def right(self) -> Optional[Camera]: ...

class CameraSwitcher:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...

class Marker:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def type(self) -> MarkerType: ...

class LodGroup:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def instances(self) -> NodeList: ...
    @property
    def relative_distances(self) -> bool: ...
    @property
    def lod_levels(self) -> LodLevelList: ...
    @property
    def ignore_parent_transform(self) -> bool: ...
    @property
    def use_distance_limit(self) -> bool: ...
    @property
    def distance_limit_min(self) -> float: ...
    @property
    def distance_limit_max(self) -> float: ...

class SkinDeformer:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def skinning_method(self) -> SkinningMethod: ...
    @property
    def clusters(self) -> SkinClusterList: ...
    @property
    def vertices(self) -> SkinVertexList: ...
    @property
    def weights(self) -> SkinWeightList: ...
    @property
    def max_weights_per_vertex(self) -> int: ...
    @property
    def num_dq_weights(self) -> int: ...
    @property
    def dq_vertices(self) -> Uint32List: ...
    @property
    def dq_weights(self) -> RealList: ...

class SkinCluster:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def bone_node(self) -> Optional[Node]: ...
    @property
    def geometry_to_bone(self) -> Matrix: ...
    @property
    def mesh_node_to_bone(self) -> Matrix: ...
    @property
    def bind_to_world(self) -> Matrix: ...
    @property
    def geometry_to_world(self) -> Matrix: ...
    @property
    def geometry_to_world_transform(self) -> Transform: ...
    @property
    def num_weights(self) -> int: ...
    @property
    def vertices(self) -> Uint32List: ...
    @property
    def weights(self) -> RealList: ...

class BlendDeformer:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def channels(self) -> BlendChannelList: ...

    def get_blend_vertex_offset(self, vertex: int) -> Vec3:
        ...

class BlendKeyframe:
    @property
    def shape(self) -> "BlendShape": ...
    @property
    def target_weight(self) -> float: ...
    @property
    def effective_weight(self) -> float: ...

class BlendChannel:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def weight(self) -> float: ...
    @property
    def keyframes(self) -> BlendKeyframeList: ...
    @property
    def target_shape(self) -> Optional["BlendShape"]: ...

    def evaluate_blend_weight(self, anim: Anim, time: float) -> float:
        ...

class BlendShape:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def num_offsets(self) -> int: ...
    @property
    def offset_vertices(self) -> Uint32List: ...
    @property
    def position_offsets(self) -> Vec3List: ...
    @property
    def normal_offsets(self) -> Vec3List: ...
    @property
    def offset_weights(self) -> RealList: ...

    def get_blend_shape_vertex_offset(self, vertex: int) -> Vec3:
        ...

class CacheFrame:
    @property
    def channel(self) -> str: ...
    @property
    def time(self) -> float: ...
    @property
    def filename(self) -> str: ...
    @property
    def file_format(self) -> CacheFileFormat: ...
    @property
    def mirror_axis(self) -> MirrorAxis: ...
    @property
    def scale_factor(self) -> float: ...
    @property
    def data_format(self) -> CacheDataFormat: ...
    @property
    def data_encoding(self) -> CacheDataEncoding: ...
    @property
    def data_offset(self) -> int: ...
    @property
    def data_count(self) -> int: ...
    @property
    def data_element_bytes(self) -> int: ...
    @property
    def data_total_bytes(self) -> int: ...

class CacheChannel:
    @property
    def name(self) -> str: ...
    @property
    def interpretation(self) -> CacheInterpretation: ...
    @property
    def interpretation_name(self) -> str: ...
    @property
    def frames(self) -> CacheFrameList: ...
    @property
    def mirror_axis(self) -> MirrorAxis: ...
    @property
    def scale_factor(self) -> float: ...

class GeometryCache:
    @property
    def root_filename(self) -> str: ...
    @property
    def channels(self) -> CacheChannelList: ...
    @property
    def frames(self) -> CacheFrameList: ...
    @property
    def extra_info(self) -> StringList: ...

class CacheDeformer:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def channel(self) -> str: ...
    @property
    def file(self) -> Optional["CacheFile"]: ...
    @property
    def external_cache(self) -> Optional[GeometryCache]: ...
    @property
    def external_channel(self) -> Optional[CacheChannel]: ...

class CacheFile:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def filename(self) -> str: ...
    @property
    def absolute_filename(self) -> str: ...
    @property
    def relative_filename(self) -> str: ...
    @property
    def raw_filename(self) -> bytes: ...
    @property
    def raw_absolute_filename(self) -> bytes: ...
    @property
    def raw_relative_filename(self) -> bytes: ...
    @property
    def format(self) -> CacheFileFormat: ...
    @property
    def external_cache(self) -> Optional[GeometryCache]: ...

class MaterialMap:
    @property
    def value_vec4(self) -> Vec4: ...
    @property
    def value_int(self) -> int: ...
    @property
    def texture(self) -> Optional["Texture"]: ...
    @property
    def has_value(self) -> bool: ...
    @property
    def texture_enabled(self) -> bool: ...
    @property
    def feature_disabled(self) -> bool: ...
    @property
    def value_components(self) -> int: ...

class MaterialFeatureInfo:
    @property
    def enabled(self) -> bool: ...
    @property
    def is_explicit(self) -> bool: ...

class MaterialTexture:
    @property
    def material_prop(self) -> str: ...
    @property
    def shader_prop(self) -> str: ...
    @property
    def texture(self) -> "Texture": ...

class MaterialFbxMaps:
    @property
    def diffuse_factor(self) -> MaterialMap: ...
    @property
    def diffuse_color(self) -> MaterialMap: ...
    @property
    def specular_factor(self) -> MaterialMap: ...
    @property
    def specular_color(self) -> MaterialMap: ...
    @property
    def specular_exponent(self) -> MaterialMap: ...
    @property
    def reflection_factor(self) -> MaterialMap: ...
    @property
    def reflection_color(self) -> MaterialMap: ...
    @property
    def transparency_factor(self) -> MaterialMap: ...
    @property
    def transparency_color(self) -> MaterialMap: ...
    @property
    def emission_factor(self) -> MaterialMap: ...
    @property
    def emission_color(self) -> MaterialMap: ...
    @property
    def ambient_factor(self) -> MaterialMap: ...
    @property
    def ambient_color(self) -> MaterialMap: ...
    @property
    def normal_map(self) -> MaterialMap: ...
    @property
    def bump(self) -> MaterialMap: ...
    @property
    def bump_factor(self) -> MaterialMap: ...
    @property
    def displacement_factor(self) -> MaterialMap: ...
    @property
    def displacement(self) -> MaterialMap: ...
    @property
    def vector_displacement_factor(self) -> MaterialMap: ...
    @property
    def vector_displacement(self) -> MaterialMap: ...

class MaterialPbrMaps:
    @property
    def base_factor(self) -> MaterialMap: ...
    @property
    def base_color(self) -> MaterialMap: ...
    @property
    def roughness(self) -> MaterialMap: ...
    @property
    def metalness(self) -> MaterialMap: ...
    @property
    def diffuse_roughness(self) -> MaterialMap: ...
    @property
    def specular_factor(self) -> MaterialMap: ...
    @property
    def specular_color(self) -> MaterialMap: ...
    @property
    def specular_ior(self) -> MaterialMap: ...
    @property
    def specular_anisotropy(self) -> MaterialMap: ...
    @property
    def specular_rotation(self) -> MaterialMap: ...
    @property
    def transmission_factor(self) -> MaterialMap: ...
    @property
    def transmission_color(self) -> MaterialMap: ...
    @property
    def transmission_depth(self) -> MaterialMap: ...
    @property
    def transmission_scatter(self) -> MaterialMap: ...
    @property
    def transmission_scatter_anisotropy(self) -> MaterialMap: ...
    @property
    def transmission_dispersion(self) -> MaterialMap: ...
    @property
    def transmission_roughness(self) -> MaterialMap: ...
    @property
    def transmission_extra_roughness(self) -> MaterialMap: ...
    @property
    def transmission_priority(self) -> MaterialMap: ...
    @property
    def transmission_enable_in_aov(self) -> MaterialMap: ...
    @property
    def subsurface_factor(self) -> MaterialMap: ...
    @property
    def subsurface_color(self) -> MaterialMap: ...
    @property
    def subsurface_radius(self) -> MaterialMap: ...
    @property
    def subsurface_scale(self) -> MaterialMap: ...
    @property
    def subsurface_anisotropy(self) -> MaterialMap: ...
    @property
    def subsurface_tint_color(self) -> MaterialMap: ...
    @property
    def subsurface_type(self) -> MaterialMap: ...
    @property
    def sheen_factor(self) -> MaterialMap: ...
    @property
    def sheen_color(self) -> MaterialMap: ...
    @property
    def sheen_roughness(self) -> MaterialMap: ...
    @property
    def coat_factor(self) -> MaterialMap: ...
    @property
    def coat_color(self) -> MaterialMap: ...
    @property
    def coat_roughness(self) -> MaterialMap: ...
    @property
    def coat_ior(self) -> MaterialMap: ...
    @property
    def coat_anisotropy(self) -> MaterialMap: ...
    @property
    def coat_rotation(self) -> MaterialMap: ...
    @property
    def coat_normal(self) -> MaterialMap: ...
    @property
    def coat_affect_base_color(self) -> MaterialMap: ...
    @property
    def coat_affect_base_roughness(self) -> MaterialMap: ...
    @property
    def thin_film_factor(self) -> MaterialMap: ...
    @property
    def thin_film_thickness(self) -> MaterialMap: ...
    @property
    def thin_film_ior(self) -> MaterialMap: ...
    @property
    def emission_factor(self) -> MaterialMap: ...
    @property
    def emission_color(self) -> MaterialMap: ...
    @property
    def opacity(self) -> MaterialMap: ...
    @property
    def indirect_diffuse(self) -> MaterialMap: ...
    @property
    def indirect_specular(self) -> MaterialMap: ...
    @property
    def normal_map(self) -> MaterialMap: ...
    @property
    def tangent_map(self) -> MaterialMap: ...
    @property
    def displacement_map(self) -> MaterialMap: ...
    @property
    def matte_factor(self) -> MaterialMap: ...
    @property
    def matte_color(self) -> MaterialMap: ...
    @property
    def ambient_occlusion(self) -> MaterialMap: ...
    @property
    def glossiness(self) -> MaterialMap: ...
    @property
    def coat_glossiness(self) -> MaterialMap: ...
    @property
    def transmission_glossiness(self) -> MaterialMap: ...

class MaterialFeatures:
    @property
    def pbr(self) -> MaterialFeatureInfo: ...
    @property
    def metalness(self) -> MaterialFeatureInfo: ...
    @property
    def diffuse(self) -> MaterialFeatureInfo: ...
    @property
    def specular(self) -> MaterialFeatureInfo: ...
    @property
    def emission(self) -> MaterialFeatureInfo: ...
    @property
    def transmission(self) -> MaterialFeatureInfo: ...
    @property
    def coat(self) -> MaterialFeatureInfo: ...
    @property
    def sheen(self) -> MaterialFeatureInfo: ...
    @property
    def opacity(self) -> MaterialFeatureInfo: ...
    @property
    def ambient_occlusion(self) -> MaterialFeatureInfo: ...
    @property
    def matte(self) -> MaterialFeatureInfo: ...
    @property
    def unlit(self) -> MaterialFeatureInfo: ...
    @property
    def ior(self) -> MaterialFeatureInfo: ...
    @property
    def diffuse_roughness(self) -> MaterialFeatureInfo: ...
    @property
    def transmission_roughness(self) -> MaterialFeatureInfo: ...
    @property
    def thin_walled(self) -> MaterialFeatureInfo: ...
    @property
    def caustics(self) -> MaterialFeatureInfo: ...
    @property
    def exit_to_background(self) -> MaterialFeatureInfo: ...
    @property
    def internal_reflections(self) -> MaterialFeatureInfo: ...
    @property
    def double_sided(self) -> MaterialFeatureInfo: ...
    @property
    def roughness_as_glossiness(self) -> MaterialFeatureInfo: ...
    @property
    def coat_roughness_as_glossiness(self) -> MaterialFeatureInfo: ...
    @property
    def transmission_roughness_as_glossiness(self) -> MaterialFeatureInfo: ...

class Material:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def fbx(self) -> MaterialFbxMaps: ...
    @property
    def pbr(self) -> MaterialPbrMaps: ...
    @property
    def features(self) -> MaterialFeatures: ...
    @property
    def shader_type(self) -> ShaderType: ...
    @property
    def shader(self) -> Optional["Shader"]: ...
    @property
    def shading_model_name(self) -> str: ...
    @property
    def shader_prop_prefix(self) -> str: ...
    @property
    def textures(self) -> MaterialTextureList: ...

    def find_prop_texture(self, name: str) -> Optional["Texture"]:
        ...

class TextureLayer:
    @property
    def texture(self) -> "Texture": ...
    @property
    def blend_mode(self) -> BlendMode: ...
    @property
    def alpha(self) -> float: ...

class ShaderTextureInput:
    @property
    def name(self) -> str: ...
    @property
    def value_vec4(self) -> Vec4: ...
    @property
    def value_int(self) -> int: ...
    @property
    def value_str(self) -> str: ...
    @property
    def value_blob(self) -> bytes: ...
    @property
    def texture(self) -> Optional["Texture"]: ...
    @property
    def texture_output_index(self) -> int: ...
    @property
    def texture_enabled(self) -> bool: ...
    @property
    def prop(self) -> Prop: ...
    @property
    def texture_prop(self) -> Optional[Prop]: ...
    @property
    def texture_enabled_prop(self) -> Optional[Prop]: ...

class ShaderTexture:
    @property
    def type(self) -> ShaderTextureType: ...
    @property
    def shader_name(self) -> str: ...
    @property
    def shader_type_id(self) -> int: ...
    @property
    def inputs(self) -> ShaderTextureInputList: ...
    @property
    def shader_source(self) -> str: ...
    @property
    def raw_shader_source(self) -> bytes: ...
    @property
    def main_texture(self) -> "Texture": ...
    @property
    def main_texture_output_index(self) -> int: ...
    @property
    def prop_prefix(self) -> str: ...

class TextureFile:
    @property
    def index(self) -> int: ...
    @property
    def filename(self) -> str: ...
    @property
    def absolute_filename(self) -> str: ...
    @property
    def relative_filename(self) -> str: ...
    @property
    def raw_filename(self) -> bytes: ...
    @property
    def raw_absolute_filename(self) -> bytes: ...
    @property
    def raw_relative_filename(self) -> bytes: ...
    @property
    def content(self) -> bytes: ...

class Texture:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def type(self) -> TextureType: ...
    @property
    def filename(self) -> str: ...
    @property
    def absolute_filename(self) -> str: ...
    @property
    def relative_filename(self) -> str: ...
    @property
    def raw_filename(self) -> bytes: ...
    @property
    def raw_absolute_filename(self) -> bytes: ...
    @property
    def raw_relative_filename(self) -> bytes: ...
    @property
    def content(self) -> bytes: ...
    @property
    def video(self) -> Optional["Video"]: ...
    @property
    def file_index(self) -> int: ...
    @property
    def has_file(self) -> bool: ...
    @property
    def layers(self) -> TextureLayerList: ...
    @property
    def shader(self) -> Optional[ShaderTexture]: ...
    @property
    def file_textures(self) -> TextureList: ...
    @property
    def uv_set(self) -> str: ...
    @property
    def wrap_u(self) -> WrapMode: ...
    @property
    def wrap_v(self) -> WrapMode: ...
    @property
    def has_uv_transform(self) -> bool: ...
    @property
    def uv_transform(self) -> Transform: ...
    @property
    def texture_to_uv(self) -> Matrix: ...
    @property
    def uv_to_texture(self) -> Matrix: ...

class Video:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def filename(self) -> str: ...
    @property
    def absolute_filename(self) -> str: ...
    @property
    def relative_filename(self) -> str: ...
    @property
    def raw_filename(self) -> bytes: ...
    @property
    def raw_absolute_filename(self) -> bytes: ...
    @property
    def raw_relative_filename(self) -> bytes: ...
    @property
    def content(self) -> bytes: ...

class Shader:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def type(self) -> ShaderType: ...
    @property
    def bindings(self) -> ShaderBindingList: ...

    def find_shader_prop(self, name: str) -> str:
        ...

class ShaderPropBinding:
    @property
    def shader_prop(self) -> str: ...
    @property
    def material_prop(self) -> str: ...

class ShaderBinding:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def prop_bindings(self) -> ShaderPropBindingList: ...

class PropOverride:
    @property
    def element_id(self) -> int: ...
    @property
    def prop_name(self) -> str: ...
    @property
    def value(self) -> Vec4: ...
    @property
    def value_str(self) -> str: ...
    @property
    def value_int(self) -> int: ...

class Anim:
    @property
    def time_begin(self) -> float: ...
    @property
    def time_end(self) -> float: ...
    @property
    def layers(self) -> AnimLayerList: ...
    @property
    def override_layer_weights(self) -> RealList: ...
    @property
    def prop_overrides(self) -> PropOverrideList: ...
    @property
    def transform_overrides(self) -> TransformOverrideList: ...
    @property
    def ignore_connections(self) -> bool: ...
    @property
    def custom(self) -> bool: ...

class AnimStack:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def time_begin(self) -> float: ...
    @property
    def time_end(self) -> float: ...
    @property
    def layers(self) -> AnimLayerList: ...
    @property
    def anim(self) -> Anim: ...

class AnimProp:
    @property
    def element(self) -> Element: ...
    @property
    def prop_name(self) -> str: ...
    @property
    def anim_value(self) -> "AnimValue": ...

class AnimLayer:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def weight(self) -> float: ...
    @property
    def weight_is_animated(self) -> bool: ...
    @property
    def blended(self) -> bool: ...
    @property
    def additive(self) -> bool: ...
    @property
    def compose_rotation(self) -> bool: ...
    @property
    def compose_scale(self) -> bool: ...
    @property
    def anim_values(self) -> AnimValueList: ...
    @property
    def anim_props(self) -> AnimPropList: ...
    @property
    def anim(self) -> Anim: ...

    def find_anim_prop(self, element: Element, prop: str) -> Optional[AnimProp]:
        ...

    def find_anim_props(self, element: Element) -> AnimPropList:
        ...

class AnimValue:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def default_value(self) -> Vec3: ...
    @property
    def curves(self) -> "AnimCurve": ...

    def evaluate_anim_value_real(self, time: float) -> float:
        ...

    def evaluate_anim_value_vec3(self, time: float) -> Vec3:
        ...

class Extrapolation:
    @property
    def mode(self) -> ExtrapolationMode: ...
    @property
    def repeat_count(self) -> int: ...

class AnimCurve:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def keyframes(self) -> KeyframeList: ...
    @property
    def pre_extrapolation(self) -> Extrapolation: ...
    @property
    def post_extrapolation(self) -> Extrapolation: ...
    @property
    def min_value(self) -> float: ...
    @property
    def max_value(self) -> float: ...
    @property
    def min_time(self) -> float: ...
    @property
    def max_time(self) -> float: ...

    def evaluate_curve(self, time: float, default_value: float) -> float:
        ...

class DisplayLayer:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def nodes(self) -> NodeList: ...
    @property
    def visible(self) -> bool: ...
    @property
    def frozen(self) -> bool: ...
    @property
    def ui_color(self) -> Vec3: ...

class SelectionSet:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def nodes(self) -> SelectionNodeList: ...

class SelectionNode:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def target_node(self) -> Optional[Node]: ...
    @property
    def target_mesh(self) -> Optional[Mesh]: ...
    @property
    def include_node(self) -> bool: ...
    @property
    def vertices(self) -> Uint32List: ...
    @property
    def edges(self) -> Uint32List: ...
    @property
    def faces(self) -> Uint32List: ...

class Character:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...

class ConstraintTarget:
    @property
    def node(self) -> Node: ...
    @property
    def weight(self) -> float: ...
    @property
    def transform(self) -> Transform: ...

class Constraint:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def type(self) -> ConstraintType: ...
    @property
    def type_name(self) -> str: ...
    @property
    def node(self) -> Optional[Node]: ...
    @property
    def targets(self) -> ConstraintTargetList: ...
    @property
    def weight(self) -> float: ...
    @property
    def active(self) -> bool: ...
    @property
    def constrain_translation(self) -> Any: ...
    @property
    def constrain_rotation(self) -> Any: ...
    @property
    def constrain_scale(self) -> Any: ...
    @property
    def transform_offset(self) -> Transform: ...
    @property
    def aim_vector(self) -> Vec3: ...
    @property
    def aim_up_type(self) -> ConstraintAimUpType: ...
    @property
    def aim_up_node(self) -> Optional[Node]: ...
    @property
    def aim_up_vector(self) -> Vec3: ...
    @property
    def ik_effector(self) -> Optional[Node]: ...
    @property
    def ik_end_node(self) -> Optional[Node]: ...
    @property
    def ik_pole_vector(self) -> Vec3: ...

class AudioLayer:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def clips(self) -> AudioClipList: ...

class AudioClip:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def filename(self) -> str: ...
    @property
    def absolute_filename(self) -> str: ...
    @property
    def relative_filename(self) -> str: ...
    @property
    def raw_filename(self) -> bytes: ...
    @property
    def raw_absolute_filename(self) -> bytes: ...
    @property
    def raw_relative_filename(self) -> bytes: ...
    @property
    def content(self) -> bytes: ...

class BonePose:
    @property
    def bone_node(self) -> Node: ...
    @property
    def bone_to_world(self) -> Matrix: ...
    @property
    def bone_to_parent(self) -> Matrix: ...

class Pose:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...
    @property
    def is_bind_pose(self) -> bool: ...
    @property
    def bone_poses(self) -> BonePoseList: ...

class MetadataObject:
    @property
    def name(self) -> str: ...
    @property
    def props(self) -> Props: ...
    @property
    def element_id(self) -> int: ...
    @property
    def typed_id(self) -> int: ...

class NameElement:
    @property
    def name(self) -> str: ...
    @property
    def type(self) -> ElementType: ...
    @property
    def element(self) -> Element: ...

class Application:
    @property
    def vendor(self) -> str: ...
    @property
    def name(self) -> str: ...
    @property
    def version(self) -> str: ...

class Warning:
    @property
    def type(self) -> WarningType: ...
    @property
    def description(self) -> str: ...
    @property
    def element_id(self) -> int: ...
    @property
    def count(self) -> int: ...

class Thumbnail:
    @property
    def props(self) -> Props: ...
    @property
    def width(self) -> int: ...
    @property
    def height(self) -> int: ...
    @property
    def format(self) -> ThumbnailFormat: ...
    @property
    def data(self) -> bytes: ...

class Metadata:
    @property
    def warnings(self) -> WarningList: ...
    @property
    def ascii(self) -> bool: ...
    @property
    def version(self) -> int: ...
    @property
    def file_format(self) -> FileFormat: ...
    @property
    def may_contain_no_index(self) -> bool: ...
    @property
    def may_contain_missing_vertex_position(self) -> bool: ...
    @property
    def may_contain_broken_elements(self) -> bool: ...
    @property
    def is_unsafe(self) -> bool: ...
    @property
    def has_warning(self) -> Any: ...
    @property
    def creator(self) -> str: ...
    @property
    def big_endian(self) -> bool: ...
    @property
    def filename(self) -> str: ...
    @property
    def relative_root(self) -> str: ...
    @property
    def raw_filename(self) -> bytes: ...
    @property
    def raw_relative_root(self) -> bytes: ...
    @property
    def exporter(self) -> Exporter: ...
    @property
    def exporter_version(self) -> int: ...
    @property
    def scene_props(self) -> Props: ...
    @property
    def original_application(self) -> Application: ...
    @property
    def latest_application(self) -> Application: ...
    @property
    def thumbnail(self) -> Thumbnail: ...
    @property
    def geometry_ignored(self) -> bool: ...
    @property
    def animation_ignored(self) -> bool: ...
    @property
    def embedded_ignored(self) -> bool: ...
    @property
    def max_face_triangles(self) -> int: ...
    @property
    def result_memory_used(self) -> int: ...
    @property
    def temp_memory_used(self) -> int: ...
    @property
    def result_allocs(self) -> int: ...
    @property
    def temp_allocs(self) -> int: ...
    @property
    def element_buffer_size(self) -> int: ...
    @property
    def num_shader_textures(self) -> int: ...
    @property
    def bone_prop_size_unit(self) -> float: ...
    @property
    def bone_prop_limb_length_relative(self) -> bool: ...
    @property
    def ortho_size_unit(self) -> float: ...
    @property
    def ktime_second(self) -> int: ...
    @property
    def original_file_path(self) -> str: ...
    @property
    def raw_original_file_path(self) -> bytes: ...
    @property
    def space_conversion(self) -> SpaceConversion: ...
    @property
    def geometry_transform_handling(self) -> GeometryTransformHandling: ...
    @property
    def inherit_mode_handling(self) -> InheritModeHandling: ...
    @property
    def pivot_handling(self) -> PivotHandling: ...
    @property
    def handedness_conversion_axis(self) -> MirrorAxis: ...
    @property
    def root_rotation(self) -> Quat: ...
    @property
    def root_scale(self) -> float: ...
    @property
    def mirror_axis(self) -> MirrorAxis: ...
    @property
    def geometry_scale(self) -> float: ...

class SceneSettings:
    @property
    def props(self) -> Props: ...
    @property
    def axes(self) -> CoordinateAxes: ...
    @property
    def unit_meters(self) -> float: ...
    @property
    def frames_per_second(self) -> float: ...
    @property
    def ambient_color(self) -> Vec3: ...
    @property
    def default_camera(self) -> str: ...
    @property
    def time_mode(self) -> TimeMode: ...
    @property
    def time_protocol(self) -> TimeProtocol: ...
    @property
    def snap_mode(self) -> SnapMode: ...
    @property
    def original_axis_up(self) -> CoordinateAxis: ...
    @property
    def original_unit_meters(self) -> float: ...

class Scene:
    @property
    def metadata(self) -> Metadata: ...
    @property
    def settings(self) -> SceneSettings: ...
    @property
    def root_node(self) -> Node: ...
    @property
    def anim(self) -> Anim: ...
    @property
    def unknowns(self) -> UnknownList: ...
    @property
    def nodes(self) -> NodeList: ...
    @property
    def meshes(self) -> MeshList: ...
    @property
    def lights(self) -> LightList: ...
    @property
    def cameras(self) -> CameraList: ...
    @property
    def bones(self) -> BoneList: ...
    @property
    def empties(self) -> EmptyList: ...
    @property
    def line_curves(self) -> LineCurveList: ...
    @property
    def nurbs_curves(self) -> NurbsCurveList: ...
    @property
    def nurbs_surfaces(self) -> NurbsSurfaceList: ...
    @property
    def nurbs_trim_surfaces(self) -> NurbsTrimSurfaceList: ...
    @property
    def nurbs_trim_boundaries(self) -> NurbsTrimBoundaryList: ...
    @property
    def procedural_geometries(self) -> ProceduralGeometryList: ...
    @property
    def stereo_cameras(self) -> StereoCameraList: ...
    @property
    def camera_switchers(self) -> CameraSwitcherList: ...
    @property
    def markers(self) -> MarkerList: ...
    @property
    def lod_groups(self) -> LodGroupList: ...
    @property
    def skin_deformers(self) -> SkinDeformerList: ...
    @property
    def skin_clusters(self) -> SkinClusterList: ...
    @property
    def blend_deformers(self) -> BlendDeformerList: ...
    @property
    def blend_channels(self) -> BlendChannelList: ...
    @property
    def blend_shapes(self) -> BlendShapeList: ...
    @property
    def cache_deformers(self) -> CacheDeformerList: ...
    @property
    def cache_files(self) -> CacheFileList: ...
    @property
    def materials(self) -> MaterialList: ...
    @property
    def textures(self) -> TextureList: ...
    @property
    def videos(self) -> VideoList: ...
    @property
    def shaders(self) -> ShaderList: ...
    @property
    def shader_bindings(self) -> ShaderBindingList: ...
    @property
    def anim_stacks(self) -> AnimStackList: ...
    @property
    def anim_layers(self) -> AnimLayerList: ...
    @property
    def anim_values(self) -> AnimValueList: ...
    @property
    def anim_curves(self) -> AnimCurveList: ...
    @property
    def display_layers(self) -> DisplayLayerList: ...
    @property
    def selection_sets(self) -> SelectionSetList: ...
    @property
    def selection_nodes(self) -> SelectionNodeList: ...
    @property
    def characters(self) -> CharacterList: ...
    @property
    def constraints(self) -> ConstraintList: ...
    @property
    def audio_layers(self) -> AudioLayerList: ...
    @property
    def audio_clips(self) -> AudioClipList: ...
    @property
    def poses(self) -> PoseList: ...
    @property
    def metadata_objects(self) -> MetadataObjectList: ...
    @property
    def texture_files(self) -> TextureFileList: ...
    @property
    def elements(self) -> ElementList: ...
    @property
    def connections_src(self) -> ConnectionList: ...
    @property
    def connections_dst(self) -> ConnectionList: ...
    @property
    def elements_by_name(self) -> NameElementList: ...
    @property
    def dom_root(self) -> Optional[DomNode]: ...

    def find_node(self, name: str) -> Optional[Node]:
        ...

    def find_anim_stack(self, name: str) -> Optional[AnimStack]:
        ...

    def evaluate_scene(self, anim: Anim, time: float, **kwargs: Unpack[EvaluateOpts]) -> Scene:
        ...

class VertexStream:
    @property
    def data(self) -> Any: ...
    @property
    def vertex_count(self) -> int: ...
    @property
    def vertex_size(self) -> int: ...

class OpenFileInfo:
    @property
    def context(self) -> Any: ...
    @property
    def type(self) -> OpenFileType: ...
    @property
    def original_filename(self) -> bytes: ...

class OpenFileOpts:
    @property
    def allocator(self) -> Any: ...
    @property
    def filename_null_terminated(self) -> Any: ...

class ErrorFrame:
    @property
    def source_line(self) -> int: ...
    @property
    def function(self) -> str: ...
    @property
    def description(self) -> str: ...

class Error:
    @property
    def type(self) -> ErrorType: ...
    @property
    def description(self) -> str: ...
    @property
    def stack_size(self) -> int: ...
    @property
    def stack(self) -> ErrorFrame: ...
    @property
    def info_length(self) -> int: ...
    @property
    def info(self) -> Any: ...

class Progress:
    @property
    def bytes_read(self) -> int: ...
    @property
    def bytes_total(self) -> int: ...

class InflateInput:
    @property
    def total_size(self) -> int: ...
    @property
    def data(self) -> Any: ...
    @property
    def data_size(self) -> int: ...
    @property
    def buffer(self) -> Any: ...
    @property
    def buffer_size(self) -> int: ...
    @property
    def read_fn(self) -> Any: ...
    @property
    def read_user(self) -> Any: ...
    @property
    def progress_cb(self) -> Any: ...
    @property
    def progress_interval_hint(self) -> int: ...
    @property
    def progress_size_before(self) -> int: ...
    @property
    def progress_size_after(self) -> int: ...
    @property
    def no_header(self) -> bool: ...
    @property
    def no_checksum(self) -> bool: ...
    @property
    def internal_fast_bits(self) -> int: ...

class InflateRetain:
    @property
    def initialized(self) -> bool: ...
    @property
    def data(self) -> Any: ...

class BakedVec3:
    @property
    def time(self) -> float: ...
    @property
    def value(self) -> Vec3: ...
    @property
    def flags(self) -> BakedKeyFlags: ...

class BakedQuat:
    @property
    def time(self) -> float: ...
    @property
    def value(self) -> Quat: ...
    @property
    def flags(self) -> BakedKeyFlags: ...

class BakedNode:
    @property
    def typed_id(self) -> int: ...
    @property
    def element_id(self) -> int: ...
    @property
    def constant_translation(self) -> bool: ...
    @property
    def constant_rotation(self) -> bool: ...
    @property
    def constant_scale(self) -> bool: ...
    @property
    def translation_keys(self) -> BakedVec3List: ...
    @property
    def rotation_keys(self) -> BakedQuatList: ...
    @property
    def scale_keys(self) -> BakedVec3List: ...

class BakedProp:
    @property
    def name(self) -> str: ...
    @property
    def constant_value(self) -> bool: ...
    @property
    def keys(self) -> BakedVec3List: ...

class BakedElement:
    @property
    def element_id(self) -> int: ...
    @property
    def props(self) -> BakedPropList: ...

class BakedAnimMetadata:
    @property
    def result_memory_used(self) -> int: ...
    @property
    def temp_memory_used(self) -> int: ...
    @property
    def result_allocs(self) -> int: ...
    @property
    def temp_allocs(self) -> int: ...

class BakedAnim:
    @property
    def nodes(self) -> BakedNodeList: ...
    @property
    def elements(self) -> BakedElementList: ...
    @property
    def playback_time_begin(self) -> float: ...
    @property
    def playback_time_end(self) -> float: ...
    @property
    def playback_duration(self) -> float: ...
    @property
    def key_time_min(self) -> float: ...
    @property
    def key_time_max(self) -> float: ...
    @property
    def metadata(self) -> BakedAnimMetadata: ...

class ThreadPoolInfo:
    @property
    def max_concurrent_tasks(self) -> int: ...

class Panic:
    @property
    def did_panic(self) -> bool: ...
    @property
    def message_length(self) -> int: ...
    @property
    def message(self) -> Any: ...

class AllocatorOpts(TypedDict, total=False):
    memory_limit: int
    allocation_limit: int
    huge_threshold: int
    max_chunk_size: int

class OpenMemoryOpts(TypedDict, total=False):
    pass

class ThreadOpts(TypedDict, total=False):
    num_tasks: int
    memory_limit: int

class LoadOpts(TypedDict, total=False):
    ignore_geometry: bool
    ignore_animation: bool
    ignore_embedded: bool
    ignore_all_content: bool
    evaluate_skinning: bool
    evaluate_caches: bool
    load_external_files: bool
    ignore_missing_external_files: bool
    skip_skin_vertices: bool
    skip_mesh_parts: bool
    clean_skin_weights: bool
    use_blender_pbr_material: bool
    disable_quirks: bool
    strict: bool
    force_single_thread_ascii_parsing: bool
    index_error_handling: IndexErrorHandling
    connect_broken_elements: bool
    allow_nodes_out_of_root: bool
    allow_missing_vertex_position: bool
    allow_empty_faces: bool
    generate_missing_normals: bool
    open_main_file_with_default: bool
    path_separator: int
    node_depth_limit: int
    file_size_estimate: int
    read_buffer_size: int
    progress_interval_hint: int
    geometry_transform_handling: GeometryTransformHandling
    inherit_mode_handling: InheritModeHandling
    space_conversion: SpaceConversion
    pivot_handling: PivotHandling
    pivot_handling_retain_empties: bool
    handedness_conversion_axis: MirrorAxis
    handedness_conversion_retain_winding: bool
    reverse_winding: bool
    target_axes: CoordinateAxes
    target_unit_meters: float
    target_camera_axes: CoordinateAxes
    target_light_axes: CoordinateAxes
    normalize_normals: bool
    normalize_tangents: bool
    use_root_transform: bool
    root_transform: Transform
    key_clamp_threshold: float
    unicode_error_handling: UnicodeErrorHandling
    retain_vertex_attrib_w: bool
    retain_dom: bool
    file_format: FileFormat
    file_format_lookahead: int
    no_format_from_content: bool
    no_format_from_extension: bool
    obj_search_mtl_by_filename: bool
    obj_merge_objects: bool
    obj_merge_groups: bool
    obj_split_groups: bool
    obj_unit_meters: float
    obj_axes: CoordinateAxes

class EvaluateOpts(TypedDict, total=False):
    evaluate_skinning: bool
    evaluate_caches: bool
    evaluate_flags: int
    load_external_files: bool

class PropOverrideDesc(TypedDict, total=False):
    element_id: int
    value: Vec4
    value_int: int

class AnimOpts(TypedDict, total=False):
    ignore_connections: bool

class BakeOpts(TypedDict, total=False):
    trim_start_time: bool
    resample_rate: float
    minimum_sample_rate: float
    maximum_sample_rate: float
    bake_transform_props: bool
    skip_node_transforms: bool
    no_resample_rotation: bool
    ignore_layer_weight_animation: bool
    max_keyframe_segments: int
    step_handling: BakeStepHandling
    step_custom_duration: float
    step_custom_epsilon: float
    evaluate_flags: int
    key_reduction_enabled: bool
    key_reduction_rotation: bool
    key_reduction_threshold: float
    key_reduction_passes: int

class TessellateCurveOpts(TypedDict, total=False):
    span_subdivision: int

class TessellateSurfaceOpts(TypedDict, total=False):
    span_subdivision_u: int
    span_subdivision_v: int
    skip_mesh_parts: bool

class SubdivideOpts(TypedDict, total=False):
    boundary: SubdivisionBoundary
    uv_boundary: SubdivisionBoundary
    ignore_normals: bool
    interpolate_normals: bool
    interpolate_tangents: bool
    evaluate_source_vertices: bool
    max_source_vertices: int
    evaluate_skin_weights: bool
    max_skin_weights: int
    skin_deformer_index: int

class GeometryCacheOpts(TypedDict, total=False):
    frames_per_second: float
    mirror_axis: MirrorAxis
    use_scale_factor: bool
    scale_factor: float

class GeometryCacheDataOpts(TypedDict, total=False):
    additive: bool
    use_weight: bool
    weight: float
    ignore_transform: bool

def is_thread_safe() -> bool:
    ...

def load_memory(data: bytes, **kwargs: Unpack[LoadOpts]) -> Scene:
    ...

def load_file(filename: str, **kwargs: Unpack[LoadOpts]) -> Scene:
    ...

def find_prop(props: Props, name: str) -> Optional[Prop]:
    ...

def find_real(props: Props, name: str, default: float) -> float:
    ...

def find_vec3(props: Props, name: str, default: Vec3) -> Vec3:
    ...

def find_int(props: Props, name: str, default: int) -> int:
    ...

def find_bool(props: Props, name: str, default: bool) -> bool:
    ...

def find_node(scene: Scene, name: str) -> Optional[Node]:
    ...

def find_anim_stack(scene: Scene, name: str) -> Optional[AnimStack]:
    ...

def find_material(scene: Scene, name: str) -> Optional[Material]:
    ...

def find_anim_prop(layer: AnimLayer, element: Element, prop: str) -> Optional[AnimProp]:
    ...

def find_anim_props(layer: AnimLayer, element: Element) -> AnimPropList:
    ...

def get_compatible_matrix_for_normals(node: Node) -> Matrix:
    ...

def evaluate_curve(curve: AnimCurve, time: float, default_value: float) -> float:
    ...

def evaluate_curve_flags(curve: AnimCurve, time: float, default_value: float, flags: int) -> float:
    ...

def evaluate_anim_value_real(anim_value: AnimValue, time: float) -> float:
    ...

def evaluate_anim_value_vec3(anim_value: AnimValue, time: float) -> Vec3:
    ...

def evaluate_anim_value_real_flags(anim_value: AnimValue, time: float, flags: int) -> float:
    ...

def evaluate_anim_value_vec3_flags(anim_value: AnimValue, time: float, flags: int) -> Vec3:
    ...

def evaluate_props_flags(anim: Anim, element: Element, time: float, buffer: Prop, buffer_size: int, flags: int) -> Props:
    ...

def evaluate_transform(anim: Anim, node: Node, time: float) -> Transform:
    ...

def evaluate_transform_flags(anim: Anim, node: Node, time: float, flags: int) -> Transform:
    ...

def evaluate_blend_weight(anim: Anim, channel: BlendChannel, time: float) -> float:
    ...

def evaluate_blend_weight_flags(anim: Anim, channel: BlendChannel, time: float, flags: int) -> float:
    ...

def evaluate_scene(scene: Scene, anim: Anim, time: float, **kwargs: Unpack[EvaluateOpts]) -> Scene:
    ...

def create_anim(scene: Scene, **kwargs: Unpack[AnimOpts]) -> Anim:
    ...

def bake_anim(scene: Scene, anim: Anim, **kwargs: Unpack[BakeOpts]) -> BakedAnim:
    ...

def find_baked_node_by_typed_id(bake: BakedAnim, typed_id: int) -> Optional[BakedNode]:
    ...

def find_baked_node(bake: BakedAnim, node: Node) -> Optional[BakedNode]:
    ...

def find_baked_element_by_element_id(bake: BakedAnim, element_id: int) -> Optional[BakedElement]:
    ...

def find_baked_element(bake: BakedAnim, element: Element) -> Optional[BakedElement]:
    ...

def get_bone_pose(pose: Pose, node: Node) -> Optional[BonePose]:
    ...

def find_prop_texture(material: Material, name: str) -> Optional[Texture]:
    ...

def find_shader_prop(shader: Shader, name: str) -> str:
    ...

def find_shader_prop_bindings(shader: Shader, name: str) -> ShaderPropBindingList:
    ...

def find_shader_texture_input(shader: ShaderTexture, name: str) -> Optional[ShaderTextureInput]:
    ...

def vec3_normalize(v: Vec3) -> Vec3:
    ...

def quat_dot(a: Quat, b: Quat) -> float:
    ...

def quat_mul(a: Quat, b: Quat) -> Quat:
    ...

def quat_normalize(q: Quat) -> Quat:
    ...

def quat_fix_antipodal(q: Quat, reference: Quat) -> Quat:
    ...

def quat_slerp(a: Quat, b: Quat, t: float) -> Quat:
    ...

def quat_rotate_vec3(q: Quat, v: Vec3) -> Vec3:
    ...

def get_blend_shape_offset_index(shape: BlendShape, vertex: int) -> int:
    ...

def get_blend_shape_vertex_offset(shape: BlendShape, vertex: int) -> Vec3:
    ...

def get_blend_vertex_offset(blend: BlendDeformer, vertex: int) -> Vec3:
    ...

def evaluate_nurbs_curve(curve: NurbsCurve, u: float) -> CurvePoint:
    ...

def evaluate_nurbs_surface(surface: NurbsSurface, u: float, v: float) -> SurfacePoint:
    ...

def find_face_index(mesh: Mesh, index: int) -> int:
    ...

def dom_find(parent: DomNode, name: str) -> Optional[DomNode]:
    ...

def get_vertex_real(v: VertexReal, index: int) -> float:
    ...

def get_vertex_vec2(v: VertexVec2, index: int) -> Vec2:
    ...

def get_vertex_vec3(v: VertexVec3, index: int) -> Vec3:
    ...

def get_vertex_vec4(v: VertexVec4, index: int) -> Vec4:
    ...

def get_vertex_w_vec3(v: VertexVec3, index: int) -> float:
    ...

def as_unknown(element: Element) -> Optional[Unknown]:
    ...

def as_node(element: Element) -> Optional[Node]:
    ...

def as_mesh(element: Element) -> Optional[Mesh]:
    ...

def as_light(element: Element) -> Optional[Light]:
    ...

def as_camera(element: Element) -> Optional[Camera]:
    ...

def as_bone(element: Element) -> Optional[Bone]:
    ...

def as_empty(element: Element) -> Optional[Empty]:
    ...

def as_line_curve(element: Element) -> Optional[LineCurve]:
    ...

def as_nurbs_curve(element: Element) -> Optional[NurbsCurve]:
    ...

def as_nurbs_surface(element: Element) -> Optional[NurbsSurface]:
    ...

def as_nurbs_trim_surface(element: Element) -> Optional[NurbsTrimSurface]:
    ...

def as_nurbs_trim_boundary(element: Element) -> Optional[NurbsTrimBoundary]:
    ...

def as_procedural_geometry(element: Element) -> Optional[ProceduralGeometry]:
    ...

def as_stereo_camera(element: Element) -> Optional[StereoCamera]:
    ...

def as_camera_switcher(element: Element) -> Optional[CameraSwitcher]:
    ...

def as_marker(element: Element) -> Optional[Marker]:
    ...

def as_lod_group(element: Element) -> Optional[LodGroup]:
    ...

def as_skin_deformer(element: Element) -> Optional[SkinDeformer]:
    ...

def as_skin_cluster(element: Element) -> Optional[SkinCluster]:
    ...

def as_blend_deformer(element: Element) -> Optional[BlendDeformer]:
    ...

def as_blend_channel(element: Element) -> Optional[BlendChannel]:
    ...

def as_blend_shape(element: Element) -> Optional[BlendShape]:
    ...

def as_cache_deformer(element: Element) -> Optional[CacheDeformer]:
    ...

def as_cache_file(element: Element) -> Optional[CacheFile]:
    ...

def as_material(element: Element) -> Optional[Material]:
    ...

def as_texture(element: Element) -> Optional[Texture]:
    ...

def as_video(element: Element) -> Optional[Video]:
    ...

def as_shader(element: Element) -> Optional[Shader]:
    ...

def as_shader_binding(element: Element) -> Optional[ShaderBinding]:
    ...

def as_anim_stack(element: Element) -> Optional[AnimStack]:
    ...

def as_anim_layer(element: Element) -> Optional[AnimLayer]:
    ...

def as_anim_value(element: Element) -> Optional[AnimValue]:
    ...

def as_anim_curve(element: Element) -> Optional[AnimCurve]:
    ...

def as_display_layer(element: Element) -> Optional[DisplayLayer]:
    ...

def as_selection_set(element: Element) -> Optional[SelectionSet]:
    ...

def as_selection_node(element: Element) -> Optional[SelectionNode]:
    ...

def as_character(element: Element) -> Optional[Character]:
    ...

def as_constraint(element: Element) -> Optional[Constraint]:
    ...

def as_audio_layer(element: Element) -> Optional[AudioLayer]:
    ...

def as_audio_clip(element: Element) -> Optional[AudioClip]:
    ...

def as_pose(element: Element) -> Optional[Pose]:
    ...

def as_metadata_object(element: Element) -> Optional[MetadataObject]:
    ...

def dom_is_array(node: DomNode) -> bool:
    ...

def dom_array_size(node: DomNode) -> int:
    ...

def dom_as_int32_list(node: DomNode) -> Int32List:
    ...

def dom_as_int64_list(node: DomNode) -> Int64List:
    ...

def dom_as_float_list(node: DomNode) -> FloatList:
    ...

def dom_as_double_list(node: DomNode) -> DoubleList:
    ...

def dom_as_real_list(node: DomNode) -> RealList:
    ...

def dom_as_blob_list(node: DomNode) -> BlobList:
    ...
