from __future__ import annotations
import collections.abc
import mujoco._enums
import mujoco._structs
import numpy
import numpy.typing
import typing
__all__: list[str] = ['MjByteVec', 'MjCharVec', 'MjDoubleVec', 'MjFloatVec', 'MjIntVec', 'MjOption', 'MjSpec', 'MjStatistic', 'MjStringVec', 'MjVfs', 'MjVisual', 'MjVisualHeadlight', 'MjVisualRgba', 'MjsActuator', 'MjsAuthored', 'MjsBody', 'MjsCamera', 'MjsCompiler', 'MjsDefault', 'MjsElement', 'MjsEquality', 'MjsExclude', 'MjsFlex', 'MjsFrame', 'MjsGeom', 'MjsHField', 'MjsJoint', 'MjsKey', 'MjsLight', 'MjsMaterial', 'MjsMesh', 'MjsNumeric', 'MjsOrientation', 'MjsPair', 'MjsPlugin', 'MjsSensor', 'MjsSite', 'MjsSkin', 'MjsTendon', 'MjsTendonPath', 'MjsText', 'MjsTexture', 'MjsTuple', 'MjsWrap']
class MjByteVec:
    def __getitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex) -> ...:
        ...
    def __init__(self, arg0: ..., arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def __iter__(self) -> collections.abc.Iterator[...]:
        ...
    def __len__(self) -> int:
        ...
    def __setitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex, arg1: ...) -> None:
        ...
class MjCharVec:
    def __getitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex) -> str:
        ...
    def __init__(self, arg0: str, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def __iter__(self) -> collections.abc.Iterator[str]:
        ...
    def __len__(self) -> int:
        ...
    def __setitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex, arg1: str) -> None:
        ...
class MjDoubleVec:
    def __getitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex) -> float:
        ...
    def __init__(self, arg0: typing.SupportsFloat | typing.SupportsIndex, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def __iter__(self) -> collections.abc.Iterator[float]:
        ...
    def __len__(self) -> int:
        ...
    def __setitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
class MjFloatVec:
    def __getitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex) -> float:
        ...
    def __init__(self, arg0: typing.SupportsFloat | typing.SupportsIndex, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def __iter__(self) -> collections.abc.Iterator[float]:
        ...
    def __len__(self) -> int:
        ...
    def __setitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
class MjIntVec:
    def __getitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex) -> int:
        ...
    def __init__(self, arg0: typing.SupportsInt | typing.SupportsIndex, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def __iter__(self) -> collections.abc.Iterator[int]:
        ...
    def __len__(self) -> int:
        ...
    def __setitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
class MjOption:
    @property
    def ccd_iterations(self) -> int:
        ...
    @ccd_iterations.setter
    def ccd_iterations(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def ccd_tolerance(self) -> float:
        ...
    @ccd_tolerance.setter
    def ccd_tolerance(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def cone(self) -> int:
        ...
    @cone.setter
    def cone(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def density(self) -> float:
        ...
    @density.setter
    def density(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def disableactuator(self) -> int:
        ...
    @disableactuator.setter
    def disableactuator(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def disableflags(self) -> int:
        ...
    @disableflags.setter
    def disableflags(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def enableflags(self) -> int:
        ...
    @enableflags.setter
    def enableflags(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def gravity(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @gravity.setter
    def gravity(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def impratio(self) -> float:
        ...
    @impratio.setter
    def impratio(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def integrator(self) -> int:
        ...
    @integrator.setter
    def integrator(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def iterations(self) -> int:
        ...
    @iterations.setter
    def iterations(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def jacobian(self) -> int:
        ...
    @jacobian.setter
    def jacobian(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def ls_iterations(self) -> int:
        ...
    @ls_iterations.setter
    def ls_iterations(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def ls_tolerance(self) -> float:
        ...
    @ls_tolerance.setter
    def ls_tolerance(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def magnetic(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @magnetic.setter
    def magnetic(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def noslip_iterations(self) -> int:
        ...
    @noslip_iterations.setter
    def noslip_iterations(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def noslip_tolerance(self) -> float:
        ...
    @noslip_tolerance.setter
    def noslip_tolerance(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def o_friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @o_friction.setter
    def o_friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def o_margin(self) -> float:
        ...
    @o_margin.setter
    def o_margin(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def o_solimp(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @o_solimp.setter
    def o_solimp(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def o_solref(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @o_solref.setter
    def o_solref(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def sdf_initpoints(self) -> int:
        ...
    @sdf_initpoints.setter
    def sdf_initpoints(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def sdf_iterations(self) -> int:
        ...
    @sdf_iterations.setter
    def sdf_iterations(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def sleep_tolerance(self) -> float:
        ...
    @sleep_tolerance.setter
    def sleep_tolerance(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def solver(self) -> int:
        ...
    @solver.setter
    def solver(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def timestep(self) -> float:
        ...
    @timestep.setter
    def timestep(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def tolerance(self) -> float:
        ...
    @tolerance.setter
    def tolerance(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def viscosity(self) -> float:
        ...
    @viscosity.setter
    def viscosity(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def wind(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @wind.setter
    def wind(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
class MjSpec:
    assets: dict
    authored: MjsAuthored
    comment: str
    compiler: MjsCompiler
    hasImplicitPluginElem: bool
    meshdir: str
    modelfiledir: str
    modelname: str
    option: MjOption
    override_assets: bool
    stat: MjStatistic
    strippath: bool
    texturedir: str
    visual: MjVisual
    @staticmethod
    def from_file(filename: str, include: collections.abc.Mapping[str, bytes] | None = None, assets: dict | None = None, vfs: MjVfs = None) -> MjSpec:
        """
            Creates a spec from an XML file.
        
            Parameters
            ----------
            filename : str
                Path to the XML file.
            include : dict, optional
                A dictionary of xml files included by the model. The keys are file names
                and the values are file contents.
            assets : dict, optional
                A dictionary of assets to be used by the spec. The keys are asset names
                and the values are asset contents.
            vfs : MjVfs, optional
                A VFS to use for resolving includes and assets. Cannot be used with
                include or assets.
        """
    @staticmethod
    def from_string(xml: str, include: collections.abc.Mapping[str, bytes] | None = None, assets: dict | None = None, vfs: MjVfs = None) -> MjSpec:
        """
            Creates a spec from an XML string.
        
            Parameters
            ----------
            xml : str
                XML string.
            include : dict, optional
                A dictionary of xml files included by the model. The keys are file names
                and the values are file contents.
            assets : dict, optional
                A dictionary of assets to be used by the spec. The keys are asset names
                and the values are asset contents.
            vfs : MjVfs, optional
                A VFS to use for resolving includes and assets. Cannot be used with
                include or assets.
        """
    @staticmethod
    def from_zip(file: typing.Union[str, typing.IO[bytes]]) -> MjSpec:
        """
        Reads a zip file and returns an MjSpec.
        
        Args:
          file: The path to the file to read from or the file object to read from.
        Returns:
          An MjSpec object.
        """
    @staticmethod
    def resolve_orientation(degree: bool, sequence: MjCharVec = None, orientation: MjsOrientation) -> typing.Annotated[list[float], "FixedSize(4)"]:
        ...
    @staticmethod
    def to_zip(spec: MjSpec, file: typing.Union[str, typing.IO[bytes]]) -> None:
        """
        Converts an MjSpec to a zip file.
        
        Args:
          spec: The mjSpec to save to a file.
          file: The path to the file to save to or the file object to write to.
        """
    def __init__(self) -> None:
        ...
    def activate_plugin(self, name: str) -> None:
        ...
    def actuator(self, arg0: str) -> MjsActuator:
        ...
    def add_actuator(self, default: MjsDefault = None, name: str | None = None, gaintype: typing.SupportsInt | typing.SupportsIndex | None = None, gainprm: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, biastype: typing.SupportsInt | typing.SupportsIndex | None = None, biasprm: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, dyntype: typing.SupportsInt | typing.SupportsIndex | None = None, dynprm: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, actdim: typing.SupportsInt | typing.SupportsIndex | None = None, ctrlspec: typing.SupportsInt | typing.SupportsIndex | None = None, actearly: typing.SupportsInt | typing.SupportsIndex | None = None, trntype: typing.SupportsInt | typing.SupportsIndex | None = None, gear: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, target: str | None = None, refsite: str | None = None, slidersite: str | None = None, cranklength: typing.SupportsFloat | typing.SupportsIndex | None = None, lengthrange: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, inheritrange: typing.SupportsFloat | typing.SupportsIndex | None = None, damping: typing.Any | None = None, armature: typing.SupportsFloat | typing.SupportsIndex | None = None, ctrllimited: typing.SupportsInt | typing.SupportsIndex | None = None, ctrlrange: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, forcelimited: typing.SupportsInt | typing.SupportsIndex | None = None, forcerange: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, actlimited: typing.SupportsInt | typing.SupportsIndex | None = None, actrange: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, nsample: typing.SupportsInt | typing.SupportsIndex | None = None, interp: typing.SupportsInt | typing.SupportsIndex | None = None, delay: typing.SupportsFloat | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, plugin: mujoco._specs.MjsPlugin | None = None, info: str | None = None) -> MjsActuator:
        """
              Add actuator to spec.
        
              Args:
                name: str
                gaintype: int
                gainprm: list[float]
                biastype: int
                biasprm: list[float]
                dyntype: int
                dynprm: list[float]
                actdim: int
                ctrlspec: int
                actearly: int
                trntype: int
                gear: list[float]
                target: str
                refsite: str
                slidersite: str
                cranklength: float
                lengthrange: list[float]
                inheritrange: float
                damping: Optional[list[float]]
                armature: float
                ctrllimited: int
                ctrlrange: list[float]
                forcelimited: int
                forcerange: list[float]
                actlimited: int
                actrange: list[float]
                group: int
                nsample: int
                interp: int
                delay: float
                userdata: list[float]
                plugin: MjsPlugin
                info: str
        """
    def add_default(self, arg0: str, arg1: MjsDefault) -> MjsDefault:
        ...
    def add_equality(self, default: MjsDefault = None, name: str | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, data: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, active: typing.SupportsInt | typing.SupportsIndex | None = None, name1: str | None = None, name2: str | None = None, objtype: typing.SupportsInt | typing.SupportsIndex | None = None, solref: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsEquality:
        """
              Add equality to spec.
        
              Args:
                name: str
                type: int
                data: list[float]
                active: int
                name1: str
                name2: str
                objtype: int
                solref: list[float]
                solimp: list[float]
                info: str
        """
    def add_exclude(self, name: str | None = None, bodyname1: str | None = None, bodyname2: str | None = None, info: str | None = None) -> MjsExclude:
        """
              Add exclude to spec.
        
              Args:
                name: str
                bodyname1: str
                bodyname2: str
                info: str
        """
    def add_flex(self, name: str | None = None, contype: typing.SupportsInt | typing.SupportsIndex | None = None, conaffinity: typing.SupportsInt | typing.SupportsIndex | None = None, condim: typing.SupportsInt | typing.SupportsIndex | None = None, priority: typing.SupportsInt | typing.SupportsIndex | None = None, friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solmix: typing.SupportsFloat | typing.SupportsIndex | None = None, solref: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, margin: typing.SupportsFloat | typing.SupportsIndex | None = None, gap: typing.SupportsFloat | typing.SupportsIndex | None = None, dim: typing.SupportsInt | typing.SupportsIndex | None = None, radius: typing.SupportsFloat | typing.SupportsIndex | None = None, size: typing.Any | None = None, internal: typing.SupportsInt | typing.SupportsIndex | None = None, flatskin: typing.SupportsInt | typing.SupportsIndex | None = None, selfcollide: typing.SupportsInt | typing.SupportsIndex | None = None, passive: typing.SupportsInt | typing.SupportsIndex | None = None, activelayers: typing.SupportsInt | typing.SupportsIndex | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, edgestiffness: typing.SupportsFloat | typing.SupportsIndex | None = None, edgedamping: typing.SupportsFloat | typing.SupportsIndex | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, material: str | None = None, young: typing.SupportsFloat | typing.SupportsIndex | None = None, poisson: typing.SupportsFloat | typing.SupportsIndex | None = None, damping: typing.SupportsFloat | typing.SupportsIndex | None = None, thickness: typing.SupportsFloat | typing.SupportsIndex | None = None, elastic2d: typing.SupportsInt | typing.SupportsIndex | None = None, cellcount: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, order: typing.SupportsInt | typing.SupportsIndex | None = None, nodebody: collections.abc.Sequence[str] | None = None, vertbody: collections.abc.Sequence[str] | None = None, node: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, vert: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, elem: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, texcoord: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, elemtexcoord: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsFlex:
        """
              Add flex to spec.
        
              Args:
                name: str
                contype: int
                conaffinity: int
                condim: int
                priority: int
                friction: list[float]
                solmix: float
                solref: list[float]
                solimp: list[float]
                margin: float
                gap: float
                dim: int
                radius: float
                size: Optional[list[float]]
                internal: int
                flatskin: int
                selfcollide: int
                passive: int
                activelayers: int
                group: int
                edgestiffness: float
                edgedamping: float
                rgba: list[float]
                material: str
                young: float
                poisson: float
                damping: float
                thickness: float
                elastic2d: int
                cellcount: list[float]
                order: int
                nodebody: list[str]
                vertbody: list[str]
                node: list[float]
                vert: list[float]
                elem: list[int]
                texcoord: list[float]
                elemtexcoord: list[int]
                info: str
        """
    def add_hfield(self, name: str | None = None, content_type: str | None = None, file: str | None = None, size: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, nrow: typing.SupportsInt | typing.SupportsIndex | None = None, ncol: typing.SupportsInt | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsHField:
        """
              Add hfield to spec.
        
              Args:
                name: str
                content_type: str
                file: str
                size: list[float]
                nrow: int
                ncol: int
                userdata: list[float]
                info: str
        """
    def add_key(self, name: str | None = None, time: typing.SupportsFloat | typing.SupportsIndex | None = None, qpos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, qvel: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, act: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mpos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mquat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, ctrl: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsKey:
        """
              Add key to spec.
        
              Args:
                name: str
                time: float
                qpos: list[float]
                qvel: list[float]
                act: list[float]
                mpos: list[float]
                mquat: list[float]
                ctrl: list[float]
                info: str
        """
    def add_material(self, default: MjsDefault = None, name: str | None = None, textures: collections.abc.Sequence[str] | None = None, texuniform: typing.SupportsInt | typing.SupportsIndex | None = None, texrepeat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, emission: typing.SupportsFloat | typing.SupportsIndex | None = None, specular: typing.SupportsFloat | typing.SupportsIndex | None = None, shininess: typing.SupportsFloat | typing.SupportsIndex | None = None, reflectance: typing.SupportsFloat | typing.SupportsIndex | None = None, metallic: typing.SupportsFloat | typing.SupportsIndex | None = None, roughness: typing.SupportsFloat | typing.SupportsIndex | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsMaterial:
        """
              Add material to spec.
        
              Args:
                name: str
                textures: list[str]
                texuniform: int
                texrepeat: list[float]
                emission: float
                specular: float
                shininess: float
                reflectance: float
                metallic: float
                roughness: float
                rgba: list[float]
                info: str
        """
    def add_mesh(self, default: MjsDefault = None, name: str | None = None, content_type: str | None = None, file: str | None = None, refpos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, refquat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, scale: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, inertia: typing.SupportsInt | typing.SupportsIndex | None = None, smoothnormal: typing.SupportsInt | typing.SupportsIndex | None = None, needsdf: typing.SupportsInt | typing.SupportsIndex | None = None, maxhullvert: typing.SupportsInt | typing.SupportsIndex | None = None, uservert: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, usernormal: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, usertexcoord: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, userface: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, userfacenormal: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, userfacetexcoord: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, plugin: mujoco._specs.MjsPlugin | None = None, material: str | None = None, octree_maxdepth: typing.SupportsInt | typing.SupportsIndex | None = None, info: str | None = None) -> MjsMesh:
        """
              Add mesh to spec.
        
              Args:
                name: str
                content_type: str
                file: str
                refpos: list[float]
                refquat: list[float]
                scale: list[float]
                inertia: int
                smoothnormal: int
                needsdf: int
                maxhullvert: int
                uservert: list[float]
                usernormal: list[float]
                usertexcoord: list[float]
                userface: list[int]
                userfacenormal: list[int]
                userfacetexcoord: list[int]
                plugin: MjsPlugin
                material: str
                octree_maxdepth: int
                info: str
        """
    def add_numeric(self, name: str | None = None, data: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, size: typing.SupportsInt | typing.SupportsIndex | None = None, info: str | None = None) -> MjsNumeric:
        """
              Add numeric to spec.
        
              Args:
                name: str
                data: list[float]
                size: int
                info: str
        """
    def add_pair(self, default: MjsDefault = None, name: str | None = None, geomname1: str | None = None, geomname2: str | None = None, condim: typing.SupportsInt | typing.SupportsIndex | None = None, solref: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solreffriction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, margin: typing.SupportsFloat | typing.SupportsIndex | None = None, gap: typing.SupportsFloat | typing.SupportsIndex | None = None, adhesion: typing.SupportsFloat | typing.SupportsIndex | None = None, friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsPair:
        """
              Add pair to spec.
        
              Args:
                name: str
                geomname1: str
                geomname2: str
                condim: int
                solref: list[float]
                solreffriction: list[float]
                solimp: list[float]
                margin: float
                gap: float
                adhesion: float
                friction: list[float]
                info: str
        """
    def add_plugin(self, name: str | None = None, plugin_name: str | None = None, active: typing.SupportsInt | typing.SupportsIndex | None = None, info: str | None = None) -> MjsPlugin:
        """
              Add plugin to spec.
        
              Args:
                name: str
                plugin_name: str
                active: int
                info: str
        """
    def add_sensor(self, name: str | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, objtype: typing.SupportsInt | typing.SupportsIndex | None = None, objname: str | None = None, reftype: typing.SupportsInt | typing.SupportsIndex | None = None, refname: str | None = None, intprm: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, datatype: typing.SupportsInt | typing.SupportsIndex | None = None, needstage: typing.SupportsInt | typing.SupportsIndex | None = None, dim: typing.SupportsInt | typing.SupportsIndex | None = None, cutoff: typing.SupportsFloat | typing.SupportsIndex | None = None, noise: typing.SupportsFloat | typing.SupportsIndex | None = None, nsample: typing.SupportsInt | typing.SupportsIndex | None = None, interp: typing.SupportsInt | typing.SupportsIndex | None = None, delay: typing.SupportsFloat | typing.SupportsIndex | None = None, interval: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, plugin: mujoco._specs.MjsPlugin | None = None, info: str | None = None) -> MjsSensor:
        """
              Add sensor to spec.
        
              Args:
                name: str
                type: int
                objtype: int
                objname: str
                reftype: int
                refname: str
                intprm: list[float]
                datatype: int
                needstage: int
                dim: int
                cutoff: float
                noise: float
                nsample: int
                interp: int
                delay: float
                interval: list[float]
                userdata: list[float]
                plugin: MjsPlugin
                info: str
        """
    def add_skin(self, name: str | None = None, file: str | None = None, material: str | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, inflate: typing.SupportsFloat | typing.SupportsIndex | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, vert: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, texcoord: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, face: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, bodyname: collections.abc.Sequence[str] | None = None, bindpos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, bindquat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, vertid: collections.abc.Sequence[collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex]] | None = None, vertweight: collections.abc.Sequence[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex]] | None = None, info: str | None = None) -> MjsSkin:
        """
              Add skin to spec.
        
              Args:
                name: str
                file: str
                material: str
                rgba: list[float]
                inflate: float
                group: int
                vert: list[float]
                texcoord: list[float]
                face: list[int]
                bodyname: list[str]
                bindpos: list[float]
                bindquat: list[float]
                vertid: list[list[int]]
                vertweight: list[list[float]]
                info: str
        """
    def add_tendon(self, default: MjsDefault = None, name: str | None = None, stiffness: typing.Any | None = None, springlength: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, damping: typing.Any | None = None, frictionloss: typing.SupportsFloat | typing.SupportsIndex | None = None, solref_friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp_friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, armature: typing.SupportsFloat | typing.SupportsIndex | None = None, limited: typing.SupportsInt | typing.SupportsIndex | None = None, actfrclimited: typing.SupportsInt | typing.SupportsIndex | None = None, range: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, actfrcrange: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, margin: typing.SupportsFloat | typing.SupportsIndex | None = None, solref_limit: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp_limit: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, material: str | None = None, width: typing.SupportsFloat | typing.SupportsIndex | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsTendon:
        """
              Add tendon to spec.
        
              Args:
                name: str
                stiffness: Optional[list[float]]
                springlength: list[float]
                damping: Optional[list[float]]
                frictionloss: float
                solref_friction: list[float]
                solimp_friction: list[float]
                armature: float
                limited: int
                actfrclimited: int
                range: list[float]
                actfrcrange: list[float]
                margin: float
                solref_limit: list[float]
                solimp_limit: list[float]
                material: str
                width: float
                rgba: list[float]
                group: int
                userdata: list[float]
                info: str
        """
    def add_text(self, name: str | None = None, data: str | None = None, info: str | None = None) -> MjsText:
        """
              Add text to spec.
        
              Args:
                name: str
                data: str
                info: str
        """
    def add_texture(self, name: str | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, colorspace: typing.SupportsInt | typing.SupportsIndex | None = None, builtin: typing.SupportsInt | typing.SupportsIndex | None = None, mark: typing.SupportsInt | typing.SupportsIndex | None = None, rgb1: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, rgb2: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, markrgb: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, random: typing.SupportsFloat | typing.SupportsIndex | None = None, height: typing.SupportsInt | typing.SupportsIndex | None = None, width: typing.SupportsInt | typing.SupportsIndex | None = None, nchannel: typing.SupportsInt | typing.SupportsIndex | None = None, content_type: str | None = None, file: str | None = None, gridsize: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, gridlayout: typing.Any = None, cubefiles: collections.abc.Sequence[str] | None = None, data: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, hflip: typing.SupportsInt | typing.SupportsIndex | None = None, vflip: typing.SupportsInt | typing.SupportsIndex | None = None, info: str | None = None) -> MjsTexture:
        """
              Add texture to spec.
        
              Args:
                name: str
                type: int
                colorspace: int
                builtin: int
                mark: int
                rgb1: list[float]
                rgb2: list[float]
                markrgb: list[float]
                random: float
                height: int
                width: int
                nchannel: int
                content_type: str
                file: str
                gridsize: list[float]
                gridlayout: str | list[str]
                cubefiles: list[str]
                data: list[int]
                hflip: int
                vflip: int
                info: str
        """
    def add_tuple(self, name: str | None = None, objtype: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, objname: collections.abc.Sequence[str] | None = None, objprm: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsTuple:
        """
              Add tuple to spec.
        
              Args:
                name: str
                objtype: list[int]
                objname: list[str]
                objprm: list[float]
                info: str
        """
    def attach(self, child: MjSpec, prefix: str | None = None, suffix: str | None = None, site: typing.Any | None = None, frame: typing.Any | None = None) -> MjsFrame:
        ...
    def body(self, arg0: str) -> MjsBody:
        ...
    def camera(self, arg0: str) -> MjsCamera:
        ...
    def compile(self, vfs: mujoco._specs.MjVfs | None = None) -> typing.Any:
        ...
    def copy(self) -> MjSpec:
        ...
    @typing.overload
    def delete(self, arg0: MjsDefault) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsBody) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsFrame) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsGeom) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsJoint) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsSite) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsCamera) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsLight) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsMaterial) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsMesh) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsPair) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsEquality) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsActuator) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsTendon) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsSensor) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsFlex) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsHField) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsSkin) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsTexture) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsKey) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsText) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsNumeric) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsExclude) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsTuple) -> None:
        ...
    @typing.overload
    def delete(self, arg0: MjsPlugin) -> None:
        ...
    def encode(self, filename: str, model: typing.Any | None = None, content_type: str | None = None) -> int:
        ...
    def equality(self, arg0: str) -> MjsEquality:
        ...
    def exclude(self, arg0: str) -> MjsExclude:
        ...
    def find_default(self, arg0: str) -> MjsDefault:
        ...
    def flex(self, arg0: str) -> MjsFlex:
        ...
    def frame(self, arg0: str) -> MjsFrame:
        ...
    def geom(self, arg0: str) -> MjsGeom:
        ...
    def hfield(self, arg0: str) -> MjsHField:
        ...
    def joint(self, arg0: str) -> MjsJoint:
        ...
    def key(self, arg0: str) -> MjsKey:
        ...
    def light(self, arg0: str) -> MjsLight:
        ...
    def material(self, arg0: str) -> MjsMaterial:
        ...
    def mesh(self, arg0: str) -> MjsMesh:
        ...
    def numeric(self, arg0: str) -> MjsNumeric:
        ...
    def pair(self, arg0: str) -> MjsPair:
        ...
    def plugin(self, arg0: str) -> MjsPlugin:
        ...
    def recompile(self, arg0: typing.Any, arg1: typing.Any) -> typing.Any:
        ...
    def sensor(self, arg0: str) -> MjsSensor:
        ...
    def site(self, arg0: str) -> MjsSite:
        ...
    def skin(self, arg0: str) -> MjsSkin:
        ...
    def tendon(self, arg0: str) -> MjsTendon:
        ...
    def text(self, arg0: str) -> MjsText:
        ...
    def texture(self, arg0: str) -> MjsTexture:
        ...
    def to_file(self, arg0: str) -> None:
        ...
    def to_xml(self) -> str:
        ...
    def tuple(self, arg0: str) -> MjsTuple:
        ...
    @property
    def _address(self) -> int:
        ...
    @property
    def actuators(self) -> list:
        ...
    @property
    def bodies(self) -> list:
        ...
    @property
    def cameras(self) -> list:
        ...
    @property
    def copy_during_attach(self) -> None:
        ...
    @copy_during_attach.setter
    def copy_during_attach(self, arg1: bool) -> int:
        ...
    @property
    def default(self) -> MjsDefault:
        ...
    @property
    def equalities(self) -> list:
        ...
    @property
    def excludes(self) -> list:
        ...
    @property
    def flexes(self) -> list:
        ...
    @property
    def frames(self) -> list:
        ...
    @property
    def geoms(self) -> list:
        ...
    @property
    def hfields(self) -> list:
        ...
    @property
    def joints(self) -> list:
        ...
    @property
    def keys(self) -> list:
        ...
    @property
    def lights(self) -> list:
        ...
    @property
    def materials(self) -> list:
        ...
    @property
    def memory(self) -> int:
        ...
    @memory.setter
    def memory(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def meshes(self) -> list:
        ...
    @property
    def nconmax(self) -> int:
        ...
    @nconmax.setter
    def nconmax(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nemax(self) -> int:
        ...
    @nemax.setter
    def nemax(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def njmax(self) -> int:
        ...
    @njmax.setter
    def njmax(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nkey(self) -> int:
        ...
    @nkey.setter
    def nkey(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nstack(self) -> int:
        ...
    @nstack.setter
    def nstack(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def numerics(self) -> list:
        ...
    @property
    def nuser_actuator(self) -> int:
        ...
    @nuser_actuator.setter
    def nuser_actuator(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuser_body(self) -> int:
        ...
    @nuser_body.setter
    def nuser_body(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuser_cam(self) -> int:
        ...
    @nuser_cam.setter
    def nuser_cam(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuser_geom(self) -> int:
        ...
    @nuser_geom.setter
    def nuser_geom(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuser_jnt(self) -> int:
        ...
    @nuser_jnt.setter
    def nuser_jnt(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuser_sensor(self) -> int:
        ...
    @nuser_sensor.setter
    def nuser_sensor(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuser_site(self) -> int:
        ...
    @nuser_site.setter
    def nuser_site(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuser_tendon(self) -> int:
        ...
    @nuser_tendon.setter
    def nuser_tendon(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nuserdata(self) -> int:
        ...
    @nuserdata.setter
    def nuserdata(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def pairs(self) -> list:
        ...
    @property
    def parent(self) -> MjSpec:
        ...
    @property
    def plugins(self) -> list:
        ...
    @property
    def sensors(self) -> list:
        ...
    @property
    def sites(self) -> list:
        ...
    @property
    def skins(self) -> list:
        ...
    @property
    def tendons(self) -> list:
        ...
    @property
    def texts(self) -> list:
        ...
    @property
    def textures(self) -> list:
        ...
    @property
    def timer(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[9, 1]", "flags.writeable"]:
        ...
    @property
    def tuples(self) -> list:
        ...
    @property
    def worldbody(self) -> MjsBody:
        ...
class MjStatistic:
    @property
    def center(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @center.setter
    def center(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def extent(self) -> float:
        ...
    @extent.setter
    def extent(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def meaninertia(self) -> float:
        ...
    @meaninertia.setter
    def meaninertia(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def meanmass(self) -> float:
        ...
    @meanmass.setter
    def meanmass(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def meansize(self) -> float:
        ...
    @meansize.setter
    def meansize(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
class MjStringVec:
    def __getitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex) -> str:
        ...
    def __init__(self, arg0: str, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def __iter__(self) -> collections.abc.Iterator[str]:
        ...
    def __len__(self) -> int:
        ...
    def __setitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex, arg1: str) -> None:
        ...
class MjVfs:
    def __contains__(self, arg0: str) -> bool:
        ...
    def __delitem__(self, arg0: str) -> None:
        ...
    def __enter__(self) -> MjVfs:
        ...
    def __exit__(self, arg0: typing.Any, arg1: typing.Any, arg2: typing.Any) -> None:
        ...
    def __init__(self) -> None:
        ...
    def __setitem__(self, arg0: str, arg1: bytes) -> None:
        ...
    def close(self) -> None:
        ...
class MjVisual:
    global: mujoco._structs.MjVisual.Global
    global_: mujoco._structs.MjVisual.Global
    headlight: MjVisualHeadlight
    map: mujoco._structs.MjVisual.Map
    quality: mujoco._structs.MjVisual.Quality
    rgba: MjVisualRgba
    scale: mujoco._structs.MjVisual.Scale
class MjVisualHeadlight:
    @property
    def active(self) -> int:
        ...
    @active.setter
    def active(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def ambient(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]", "flags.writeable"]:
        ...
    @ambient.setter
    def ambient(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]"]) -> None:
        ...
    @property
    def diffuse(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]", "flags.writeable"]:
        ...
    @diffuse.setter
    def diffuse(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]"]) -> None:
        ...
    @property
    def specular(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]", "flags.writeable"]:
        ...
    @specular.setter
    def specular(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]"]) -> None:
        ...
class MjVisualRgba:
    @property
    def actuator(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @actuator.setter
    def actuator(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def actuatornegative(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @actuatornegative.setter
    def actuatornegative(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def actuatorpositive(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @actuatorpositive.setter
    def actuatorpositive(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def bv(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @bv.setter
    def bv(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def bvactive(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @bvactive.setter
    def bvactive(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def camera(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @camera.setter
    def camera(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def com(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @com.setter
    def com(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def connect(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @connect.setter
    def connect(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def constraint(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @constraint.setter
    def constraint(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def contactforce(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @contactforce.setter
    def contactforce(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def contactfriction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @contactfriction.setter
    def contactfriction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def contactgap(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @contactgap.setter
    def contactgap(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def contactpoint(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @contactpoint.setter
    def contactpoint(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def contacttorque(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @contacttorque.setter
    def contacttorque(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def crankbroken(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @crankbroken.setter
    def crankbroken(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def fog(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @fog.setter
    def fog(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def force(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @force.setter
    def force(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def frustum(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @frustum.setter
    def frustum(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def haze(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @haze.setter
    def haze(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def inertia(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @inertia.setter
    def inertia(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def joint(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @joint.setter
    def joint(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def light(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @light.setter
    def light(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def rangefinder(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @rangefinder.setter
    def rangefinder(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def selectpoint(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @selectpoint.setter
    def selectpoint(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def slidercrank(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @slidercrank.setter
    def slidercrank(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
class MjsActuator:
    actearly: bool
    classname: MjsDefault
    info: str
    name: str
    plugin: MjsPlugin
    refsite: str
    slidersite: str
    target: str
    def set_to_adhesion(self, gain: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    def set_to_cylinder(self, timeconst: typing.SupportsFloat | typing.SupportsIndex, bias: typing.SupportsFloat | typing.SupportsIndex, area: typing.SupportsFloat | typing.SupportsIndex, diameter: typing.SupportsFloat | typing.SupportsIndex = -1) -> None:
        ...
    def set_to_damper(self, kv: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    def set_to_dcmotor(self, motorconst: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(2)"], resistance: typing.SupportsFloat | typing.SupportsIndex, nominal: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(3)"] = [0.0, 0.0, 0.0], saturation: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(3)"] = [0.0, 0.0, 0.0], inductance: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(2)"] = [0.0, 0.0], cogging: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(3)"] = [0.0, 0.0, 0.0], controller: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(6)"] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], thermal: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(6)"] = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], lugre: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(5)"] = [0.0, 0.0, 0.0, 0.0, 0.0], input_mode: typing.SupportsInt | typing.SupportsIndex = 0) -> None:
        ...
    def set_to_intvelocity(self, kp: typing.SupportsFloat | typing.SupportsIndex, kv: typing.SupportsFloat | typing.SupportsIndex = -1, dampratio: typing.SupportsFloat | typing.SupportsIndex = -1, timeconst: typing.SupportsFloat | typing.SupportsIndex = -1, inheritrange: bool = False) -> None:
        ...
    def set_to_motor(self) -> None:
        ...
    def set_to_muscle(self, timeconst: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(2)"] = [-1.0, -1.0], tausmooth: typing.SupportsFloat | typing.SupportsIndex, range: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(2)"] = [-1.0, -1.0], force: typing.SupportsFloat | typing.SupportsIndex = -1, scale: typing.SupportsFloat | typing.SupportsIndex = -1, lmin: typing.SupportsFloat | typing.SupportsIndex = -1, lmax: typing.SupportsFloat | typing.SupportsIndex = -1, vmax: typing.SupportsFloat | typing.SupportsIndex = -1, fpmax: typing.SupportsFloat | typing.SupportsIndex = -1, fvmax: typing.SupportsFloat | typing.SupportsIndex = -1) -> None:
        ...
    def set_to_orientation(self, kp: typing.SupportsFloat | typing.SupportsIndex, kv: typing.SupportsFloat | typing.SupportsIndex = -1, dampratio: typing.SupportsFloat | typing.SupportsIndex = -1, ctrlspec: typing.SupportsInt | typing.SupportsIndex = 0) -> None:
        ...
    def set_to_position(self, kp: typing.SupportsFloat | typing.SupportsIndex, kv: typing.SupportsFloat | typing.SupportsIndex = -1, dampratio: typing.SupportsFloat | typing.SupportsIndex = -1, timeconst: typing.SupportsFloat | typing.SupportsIndex = -1, inheritrange: bool = False) -> None:
        ...
    def set_to_velocity(self, kv: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def actdim(self) -> int:
        ...
    @actdim.setter
    def actdim(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def actlimited(self) -> mujoco._enums.mjtLimited:
        ...
    @actlimited.setter
    def actlimited(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def actrange(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @actrange.setter
    def actrange(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def armature(self) -> float:
        ...
    @armature.setter
    def armature(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def biasprm(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[10, 1]", "flags.writeable"]:
        ...
    @biasprm.setter
    def biasprm(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[10, 1]"]) -> None:
        ...
    @property
    def biastype(self) -> mujoco._enums.mjtBias:
        ...
    @biastype.setter
    def biastype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def cranklength(self) -> float:
        ...
    @cranklength.setter
    def cranklength(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def ctrllimited(self) -> mujoco._enums.mjtLimited:
        ...
    @ctrllimited.setter
    def ctrllimited(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def ctrlrange(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @ctrlrange.setter
    def ctrlrange(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def ctrlspec(self) -> int:
        ...
    @ctrlspec.setter
    def ctrlspec(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def damping(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @damping.setter
    def damping(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def delay(self) -> float:
        ...
    @delay.setter
    def delay(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def dynprm(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[10, 1]", "flags.writeable"]:
        ...
    @dynprm.setter
    def dynprm(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[10, 1]"]) -> None:
        ...
    @property
    def dyntype(self) -> mujoco._enums.mjtDyn:
        ...
    @dyntype.setter
    def dyntype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def forcelimited(self) -> mujoco._enums.mjtLimited:
        ...
    @forcelimited.setter
    def forcelimited(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def forcerange(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @forcerange.setter
    def forcerange(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def gainprm(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[10, 1]", "flags.writeable"]:
        ...
    @gainprm.setter
    def gainprm(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[10, 1]"]) -> None:
        ...
    @property
    def gaintype(self) -> mujoco._enums.mjtGain:
        ...
    @gaintype.setter
    def gaintype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def gear(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]", "flags.writeable"]:
        ...
    @gear.setter
    def gear(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]"]) -> None:
        ...
    @property
    def group(self) -> int:
        ...
    @group.setter
    def group(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def inheritrange(self) -> float:
        ...
    @inheritrange.setter
    def inheritrange(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def interp(self) -> int:
        ...
    @interp.setter
    def interp(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def lengthrange(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @lengthrange.setter
    def lengthrange(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def nsample(self) -> int:
        ...
    @nsample.setter
    def nsample(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def trntype(self) -> mujoco._enums.mjtTrn:
        ...
    @trntype.setter
    def trntype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsAuthored:
    @property
    def disableactuator(self) -> int:
        ...
    @disableactuator.setter
    def disableactuator(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def disableflags(self) -> int:
        ...
    @disableflags.setter
    def disableflags(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def enableflags(self) -> int:
        ...
    @enableflags.setter
    def enableflags(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def option(self) -> int:
        ...
    @option.setter
    def option(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def visual_global(self) -> int:
        ...
    @visual_global.setter
    def visual_global(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def visual_headlight(self) -> int:
        ...
    @visual_headlight.setter
    def visual_headlight(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def visual_map(self) -> int:
        ...
    @visual_map.setter
    def visual_map(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def visual_quality(self) -> int:
        ...
    @visual_quality.setter
    def visual_quality(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def visual_rgba(self) -> int:
        ...
    @visual_rgba.setter
    def visual_rgba(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def visual_scale(self) -> int:
        ...
    @visual_scale.setter
    def visual_scale(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
class MjsBody:
    alt: MjsOrientation
    childclass: str
    classname: MjsDefault
    explicitinertial: bool
    ialt: MjsOrientation
    info: str
    mocap: bool
    name: str
    plugin: MjsPlugin
    def add_body(self, default: MjsDefault = None, name: str | None = None, childclass: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mass: typing.SupportsFloat | typing.SupportsIndex | None = None, ipos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, iquat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, inertia: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, iaxisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, ixyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, izaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, ieuler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, fullinertia: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mocap: typing.SupportsInt | typing.SupportsIndex | None = None, gravcomp: typing.SupportsFloat | typing.SupportsIndex | None = None, sleep: typing.SupportsInt | typing.SupportsIndex | None = None, simple: typing.SupportsInt | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, explicitinertial: typing.SupportsInt | typing.SupportsIndex | None = None, plugin: mujoco._specs.MjsPlugin | None = None, info: str | None = None) -> MjsBody:
        """
              Add body to spec.
        
              Args:
                name: str
                childclass: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                mass: float
                ipos: list[float]
                iquat: list[float]
                inertia: list[float]
                iaxisangle: list[float]
                ixyaxes: list[float]
                izaxis: list[float]
                ieuler: list[float]
                fullinertia: list[float]
                mocap: int
                gravcomp: float
                sleep: int
                simple: int
                userdata: list[float]
                explicitinertial: int
                plugin: MjsPlugin
                info: str
        """
    def add_camera(self, default: MjsDefault = None, name: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mode: typing.SupportsInt | typing.SupportsIndex | None = None, targetbody: str | None = None, proj: typing.SupportsInt | typing.SupportsIndex | None = None, resolution: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, output: typing.SupportsInt | typing.SupportsIndex | None = None, fovy: typing.SupportsFloat | typing.SupportsIndex | None = None, ipd: typing.SupportsFloat | typing.SupportsIndex | None = None, intrinsic: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, sensor_size: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, focal_length: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, focal_pixel: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, principal_length: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, principal_pixel: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsCamera:
        """
              Add camera to spec.
        
              Args:
                name: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                mode: int
                targetbody: str
                proj: int
                resolution: list[float]
                output: int
                fovy: float
                ipd: float
                intrinsic: list[float]
                sensor_size: list[float]
                focal_length: list[float]
                focal_pixel: list[float]
                principal_length: list[float]
                principal_pixel: list[float]
                userdata: list[float]
                info: str
        """
    def add_frame(self, default: MjsFrame = None, name: str | None = None, childclass: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsFrame:
        """
              Add frame to spec.
        
              Args:
                name: str
                childclass: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                info: str
        """
    def add_freejoint(self, **kwargs) -> MjsJoint:
        ...
    def add_geom(self, default: MjsDefault = None, name: str | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, fromto: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, size: typing.Any | None = None, contype: typing.SupportsInt | typing.SupportsIndex | None = None, conaffinity: typing.SupportsInt | typing.SupportsIndex | None = None, condim: typing.SupportsInt | typing.SupportsIndex | None = None, priority: typing.SupportsInt | typing.SupportsIndex | None = None, friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solmix: typing.SupportsFloat | typing.SupportsIndex | None = None, solref: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, margin: typing.SupportsFloat | typing.SupportsIndex | None = None, gap: typing.SupportsFloat | typing.SupportsIndex | None = None, surfacevel: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, adhesion: typing.SupportsFloat | typing.SupportsIndex | None = None, mass: typing.SupportsFloat | typing.SupportsIndex | None = None, density: typing.SupportsFloat | typing.SupportsIndex | None = None, typeinertia: typing.SupportsInt | typing.SupportsIndex | None = None, fluid_ellipsoid: typing.SupportsInt | typing.SupportsIndex | None = None, fluid_coefs: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, material: str | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, hfieldname: str | None = None, meshname: str | None = None, fitscale: typing.SupportsFloat | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, plugin: mujoco._specs.MjsPlugin | None = None, info: str | None = None) -> MjsGeom:
        """
              Add geom to spec.
        
              Args:
                name: str
                type: int
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                fromto: list[float]
                size: Optional[list[float]]
                contype: int
                conaffinity: int
                condim: int
                priority: int
                friction: list[float]
                solmix: float
                solref: list[float]
                solimp: list[float]
                margin: float
                gap: float
                surfacevel: list[float]
                adhesion: float
                mass: float
                density: float
                typeinertia: int
                fluid_ellipsoid: int
                fluid_coefs: list[float]
                material: str
                rgba: list[float]
                group: int
                hfieldname: str
                meshname: str
                fitscale: float
                userdata: list[float]
                plugin: MjsPlugin
                info: str
        """
    def add_joint(self, default: MjsDefault = None, name: str | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, ref: typing.SupportsFloat | typing.SupportsIndex | None = None, align: typing.SupportsInt | typing.SupportsIndex | None = None, stiffness: typing.Any | None = None, springref: typing.SupportsFloat | typing.SupportsIndex | None = None, springdamper: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, limited: typing.SupportsInt | typing.SupportsIndex | None = None, range: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, margin: typing.SupportsFloat | typing.SupportsIndex | None = None, solref_limit: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp_limit: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, actfrclimited: typing.SupportsInt | typing.SupportsIndex | None = None, actfrcrange: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, armature: typing.SupportsFloat | typing.SupportsIndex | None = None, damping: typing.Any | None = None, frictionloss: typing.SupportsFloat | typing.SupportsIndex | None = None, solref_friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp_friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, actgravcomp: typing.SupportsInt | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsJoint:
        """
              Add joint to spec.
        
              Args:
                name: str
                type: int
                pos: list[float]
                axis: list[float]
                ref: float
                align: int
                stiffness: Optional[list[float]]
                springref: float
                springdamper: list[float]
                limited: int
                range: list[float]
                margin: float
                solref_limit: list[float]
                solimp_limit: list[float]
                actfrclimited: int
                actfrcrange: list[float]
                armature: float
                damping: Optional[list[float]]
                frictionloss: float
                solref_friction: list[float]
                solimp_friction: list[float]
                group: int
                actgravcomp: int
                userdata: list[float]
                info: str
        """
    def add_light(self, default: MjsDefault = None, name: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, dir: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mode: typing.SupportsInt | typing.SupportsIndex | None = None, targetbody: str | None = None, active: typing.SupportsInt | typing.SupportsIndex | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, texture: str | None = None, castshadow: typing.SupportsInt | typing.SupportsIndex | None = None, bulbradius: typing.SupportsFloat | typing.SupportsIndex | None = None, intensity: typing.SupportsFloat | typing.SupportsIndex | None = None, range: typing.SupportsFloat | typing.SupportsIndex | None = None, attenuation: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, cutoff: typing.SupportsFloat | typing.SupportsIndex | None = None, exponent: typing.SupportsFloat | typing.SupportsIndex | None = None, ambient: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, diffuse: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, specular: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsLight:
        """
              Add light to spec.
        
              Args:
                name: str
                pos: list[float]
                dir: list[float]
                mode: int
                targetbody: str
                active: int
                type: int
                texture: str
                castshadow: int
                bulbradius: float
                intensity: float
                range: float
                attenuation: list[float]
                cutoff: float
                exponent: float
                ambient: list[float]
                diffuse: list[float]
                specular: list[float]
                info: str
        """
    def add_site(self, default: MjsDefault = None, name: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, fromto: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, size: typing.Any | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, material: str | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsSite:
        """
              Add site to spec.
        
              Args:
                name: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                fromto: list[float]
                size: Optional[list[float]]
                type: int
                material: str
                group: int
                rgba: list[float]
                userdata: list[float]
                info: str
        """
    def attach_frame(self, frame: MjsFrame, prefix: str | None = None, suffix: str | None = None) -> MjsFrame:
        ...
    @typing.overload
    def find_all(self, arg0: mujoco._enums.mjtObj) -> list:
        ...
    @typing.overload
    def find_all(self, arg0: str) -> list:
        ...
    def find_child(self, arg0: str) -> MjsBody:
        ...
    def first_body(self) -> MjsBody:
        ...
    def first_camera(self) -> MjsCamera:
        ...
    def first_frame(self) -> MjsFrame:
        ...
    def first_geom(self) -> MjsGeom:
        ...
    def first_joint(self) -> MjsJoint:
        ...
    def first_light(self) -> MjsLight:
        ...
    def first_site(self) -> MjsSite:
        ...
    def make_flex(self, name: str, type: str | None = None, dim: typing.SupportsInt | typing.SupportsIndex = 3, dof: str | None = None, count: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, cellcount: collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex] | None = None, spacing: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, scale: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, radius: typing.SupportsFloat | typing.SupportsIndex = 0.0, mass: typing.SupportsFloat | typing.SupportsIndex = 1.0, inertiabox: typing.SupportsFloat | typing.SupportsIndex = 0.005, equality: typing.SupportsInt | typing.SupportsIndex = 0, rigid: typing.SupportsInt | typing.SupportsIndex = 0, flatskin: typing.SupportsInt | typing.SupportsIndex = 0, elastic2d: typing.SupportsInt | typing.SupportsIndex = 0, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, origin: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, file: str | None = None, vfs: MjVfs = None) -> MjsFlex:
        ...
    def next_body(self, arg0: MjsBody) -> MjsBody:
        ...
    def next_camera(self, arg0: MjsCamera) -> MjsCamera:
        ...
    def next_frame(self, arg0: MjsFrame) -> MjsFrame:
        ...
    def next_geom(self, arg0: MjsGeom) -> MjsGeom:
        ...
    def next_joint(self, arg0: MjsJoint) -> MjsJoint:
        ...
    def next_light(self, arg0: MjsLight) -> MjsLight:
        ...
    def next_site(self, arg0: MjsSite) -> MjsSite:
        ...
    def set_frame(self, arg0: MjsFrame) -> None:
        ...
    def to_frame(self) -> MjsFrame:
        ...
    @property
    def bodies(self) -> list:
        ...
    @property
    def cameras(self) -> list:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def frame(self) -> MjsFrame:
        ...
    @property
    def frames(self) -> list:
        ...
    @property
    def fullinertia(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]", "flags.writeable"]:
        ...
    @fullinertia.setter
    def fullinertia(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]"]) -> None:
        ...
    @property
    def geoms(self) -> list:
        ...
    @property
    def gravcomp(self) -> float:
        ...
    @gravcomp.setter
    def gravcomp(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def inertia(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @inertia.setter
    def inertia(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def ipos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @ipos.setter
    def ipos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def iquat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @iquat.setter
    def iquat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def joints(self) -> list:
        ...
    @property
    def lights(self) -> list:
        ...
    @property
    def mass(self) -> float:
        ...
    @mass.setter
    def mass(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def parent(self) -> MjsBody:
        ...
    @property
    def pos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @pos.setter
    def pos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def quat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @quat.setter
    def quat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def simple(self) -> int:
        ...
    @simple.setter
    def simple(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def sites(self) -> list:
        ...
    @property
    def sleep(self) -> mujoco._enums.mjtSleepPolicy:
        ...
    @sleep.setter
    def sleep(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsCamera:
    alt: MjsOrientation
    classname: MjsDefault
    info: str
    name: str
    targetbody: str
    def set_frame(self, arg0: MjsFrame) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def focal_length(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]", "flags.writeable"]:
        ...
    @focal_length.setter
    def focal_length(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]"]) -> None:
        ...
    @property
    def focal_pixel(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]", "flags.writeable"]:
        ...
    @focal_pixel.setter
    def focal_pixel(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]"]) -> None:
        ...
    @property
    def fovy(self) -> float:
        ...
    @fovy.setter
    def fovy(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def frame(self) -> MjsFrame:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def intrinsic(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @intrinsic.setter
    def intrinsic(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def ipd(self) -> float:
        ...
    @ipd.setter
    def ipd(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def mode(self) -> mujoco._enums.mjtCamLight:
        ...
    @mode.setter
    def mode(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def output(self) -> int:
        ...
    @output.setter
    def output(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def parent(self) -> MjsBody:
        ...
    @property
    def pos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @pos.setter
    def pos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def principal_length(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]", "flags.writeable"]:
        ...
    @principal_length.setter
    def principal_length(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]"]) -> None:
        ...
    @property
    def principal_pixel(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]", "flags.writeable"]:
        ...
    @principal_pixel.setter
    def principal_pixel(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]"]) -> None:
        ...
    @property
    def proj(self) -> mujoco._enums.mjtProjection:
        ...
    @proj.setter
    def proj(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def quat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @quat.setter
    def quat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def resolution(self) -> typing.Annotated[numpy.typing.NDArray[numpy.int32], "[2, 1]", "flags.writeable"]:
        ...
    @resolution.setter
    def resolution(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.int32], "[2, 1]"]) -> None:
        ...
    @property
    def sensor_size(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]", "flags.writeable"]:
        ...
    @sensor_size.setter
    def sensor_size(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsCompiler:
    LRopt: mujoco._structs.MjLROpt
    alignfree: bool
    autolimits: bool
    balanceinertia: bool
    degree: bool
    discardvisual: bool
    fitaabb: bool
    fusestatic: bool
    meshdir: str
    saveinertial: bool
    texturedir: str
    usethread: bool
    @property
    def authored(self) -> int:
        ...
    @authored.setter
    def authored(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def boundinertia(self) -> float:
        ...
    @boundinertia.setter
    def boundinertia(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def boundmass(self) -> float:
        ...
    @boundmass.setter
    def boundmass(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def conflict(self) -> mujoco._enums.mjtConflict:
        ...
    @conflict.setter
    def conflict(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def eulerseq(self) -> MjCharVec:
        ...
    @eulerseq.setter
    def eulerseq(self, arg1: typing.Any) -> None:
        ...
    @property
    def inertiafromgeom(self) -> mujoco._enums.mjtInertiaFromGeom:
        ...
    @inertiafromgeom.setter
    def inertiafromgeom(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def inertiagrouprange(self) -> typing.Annotated[numpy.typing.NDArray[numpy.int32], "[2, 1]", "flags.writeable"]:
        ...
    @inertiagrouprange.setter
    def inertiagrouprange(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.int32], "[2, 1]"]) -> None:
        ...
    @property
    def settotalmass(self) -> float:
        ...
    @settotalmass.setter
    def settotalmass(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
class MjsDefault:
    actuator: MjsActuator
    camera: MjsCamera
    equality: MjsEquality
    flex: MjsFlex
    geom: MjsGeom
    joint: MjsJoint
    light: MjsLight
    material: MjsMaterial
    mesh: MjsMesh
    name: str
    pair: MjsPair
    site: MjsSite
    tendon: MjsTendon
class MjsElement:
    pass
class MjsEquality:
    active: bool
    classname: MjsDefault
    info: str
    name: str
    name1: str
    name2: str
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def data(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[11, 1]", "flags.writeable"]:
        ...
    @data.setter
    def data(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[11, 1]"]) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def objtype(self) -> mujoco._enums.mjtObj:
        ...
    @objtype.setter
    def objtype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def solimp(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp.setter
    def solimp(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solref(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref.setter
    def solref(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def type(self) -> mujoco._enums.mjtEq:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
class MjsExclude:
    bodyname1: str
    bodyname2: str
    info: str
    name: str
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def signature(self) -> int:
        ...
class MjsFlex:
    flatskin: bool
    info: str
    internal: bool
    material: str
    name: str
    @property
    def activelayers(self) -> int:
        ...
    @activelayers.setter
    def activelayers(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def cellcount(self) -> typing.Annotated[numpy.typing.NDArray[numpy.int32], "[3, 1]", "flags.writeable"]:
        ...
    @cellcount.setter
    def cellcount(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.int32], "[3, 1]"]) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def conaffinity(self) -> int:
        ...
    @conaffinity.setter
    def conaffinity(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def condim(self) -> int:
        ...
    @condim.setter
    def condim(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def contype(self) -> int:
        ...
    @contype.setter
    def contype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def damping(self) -> float:
        ...
    @damping.setter
    def damping(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def dim(self) -> int:
        ...
    @dim.setter
    def dim(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def edgedamping(self) -> float:
        ...
    @edgedamping.setter
    def edgedamping(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def edgestiffness(self) -> float:
        ...
    @edgestiffness.setter
    def edgestiffness(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def elastic2d(self) -> int:
        ...
    @elastic2d.setter
    def elastic2d(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def elem(self) -> MjIntVec:
        ...
    @elem.setter
    def elem(self, arg1: typing.Any) -> None:
        ...
    @property
    def elemtexcoord(self) -> MjIntVec:
        ...
    @elemtexcoord.setter
    def elemtexcoord(self, arg1: typing.Any) -> None:
        ...
    @property
    def friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @friction.setter
    def friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def gap(self) -> float:
        ...
    @gap.setter
    def gap(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def group(self) -> int:
        ...
    @group.setter
    def group(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def margin(self) -> float:
        ...
    @margin.setter
    def margin(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def node(self) -> MjDoubleVec:
        ...
    @node.setter
    def node(self, arg1: typing.Any) -> None:
        ...
    @property
    def nodebody(self) -> MjStringVec:
        ...
    @nodebody.setter
    def nodebody(self, arg1: typing.Any) -> None:
        ...
    @property
    def order(self) -> int:
        ...
    @order.setter
    def order(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def passive(self) -> int:
        ...
    @passive.setter
    def passive(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def poisson(self) -> float:
        ...
    @poisson.setter
    def poisson(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def priority(self) -> int:
        ...
    @priority.setter
    def priority(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def radius(self) -> float:
        ...
    @radius.setter
    def radius(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def rgba(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @rgba.setter
    def rgba(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def selfcollide(self) -> mujoco._enums.mjtFlexSelf:
        ...
    @selfcollide.setter
    def selfcollide(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def size(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @size.setter
    def size(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def solimp(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp.setter
    def solimp(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solmix(self) -> float:
        ...
    @solmix.setter
    def solmix(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def solref(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref.setter
    def solref(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def texcoord(self) -> MjFloatVec:
        ...
    @texcoord.setter
    def texcoord(self, arg1: typing.Any) -> None:
        ...
    @property
    def thickness(self) -> float:
        ...
    @thickness.setter
    def thickness(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def vert(self) -> MjDoubleVec:
        ...
    @vert.setter
    def vert(self, arg1: typing.Any) -> None:
        ...
    @property
    def vertbody(self) -> MjStringVec:
        ...
    @vertbody.setter
    def vertbody(self, arg1: typing.Any) -> None:
        ...
    @property
    def young(self) -> float:
        ...
    @young.setter
    def young(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
class MjsFrame:
    alt: MjsOrientation
    childclass: str
    info: str
    name: str
    def add_body(self, default: MjsDefault = None, name: str | None = None, childclass: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mass: typing.SupportsFloat | typing.SupportsIndex | None = None, ipos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, iquat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, inertia: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, iaxisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, ixyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, izaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, ieuler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, fullinertia: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mocap: typing.SupportsInt | typing.SupportsIndex | None = None, gravcomp: typing.SupportsFloat | typing.SupportsIndex | None = None, sleep: typing.SupportsInt | typing.SupportsIndex | None = None, simple: typing.SupportsInt | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, explicitinertial: typing.SupportsInt | typing.SupportsIndex | None = None, plugin: mujoco._specs.MjsPlugin | None = None, info: str | None = None) -> MjsBody:
        """
              Add body to spec.
        
              Args:
                name: str
                childclass: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                mass: float
                ipos: list[float]
                iquat: list[float]
                inertia: list[float]
                iaxisangle: list[float]
                ixyaxes: list[float]
                izaxis: list[float]
                ieuler: list[float]
                fullinertia: list[float]
                mocap: int
                gravcomp: float
                sleep: int
                simple: int
                userdata: list[float]
                explicitinertial: int
                plugin: MjsPlugin
                info: str
        """
    def add_camera(self, default: MjsDefault = None, name: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mode: typing.SupportsInt | typing.SupportsIndex | None = None, targetbody: str | None = None, proj: typing.SupportsInt | typing.SupportsIndex | None = None, resolution: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, output: typing.SupportsInt | typing.SupportsIndex | None = None, fovy: typing.SupportsFloat | typing.SupportsIndex | None = None, ipd: typing.SupportsFloat | typing.SupportsIndex | None = None, intrinsic: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, sensor_size: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, focal_length: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, focal_pixel: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, principal_length: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, principal_pixel: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsCamera:
        """
              Add camera to spec.
        
              Args:
                name: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                mode: int
                targetbody: str
                proj: int
                resolution: list[float]
                output: int
                fovy: float
                ipd: float
                intrinsic: list[float]
                sensor_size: list[float]
                focal_length: list[float]
                focal_pixel: list[float]
                principal_length: list[float]
                principal_pixel: list[float]
                userdata: list[float]
                info: str
        """
    def add_frame(self, default: MjsFrame = None, name: str | None = None, childclass: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsFrame:
        """
              Add frame to spec.
        
              Args:
                name: str
                childclass: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                info: str
        """
    def add_geom(self, default: MjsDefault = None, name: str | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, fromto: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, size: typing.Any | None = None, contype: typing.SupportsInt | typing.SupportsIndex | None = None, conaffinity: typing.SupportsInt | typing.SupportsIndex | None = None, condim: typing.SupportsInt | typing.SupportsIndex | None = None, priority: typing.SupportsInt | typing.SupportsIndex | None = None, friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solmix: typing.SupportsFloat | typing.SupportsIndex | None = None, solref: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, margin: typing.SupportsFloat | typing.SupportsIndex | None = None, gap: typing.SupportsFloat | typing.SupportsIndex | None = None, surfacevel: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, adhesion: typing.SupportsFloat | typing.SupportsIndex | None = None, mass: typing.SupportsFloat | typing.SupportsIndex | None = None, density: typing.SupportsFloat | typing.SupportsIndex | None = None, typeinertia: typing.SupportsInt | typing.SupportsIndex | None = None, fluid_ellipsoid: typing.SupportsInt | typing.SupportsIndex | None = None, fluid_coefs: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, material: str | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, hfieldname: str | None = None, meshname: str | None = None, fitscale: typing.SupportsFloat | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, plugin: mujoco._specs.MjsPlugin | None = None, info: str | None = None) -> MjsGeom:
        """
              Add geom to spec.
        
              Args:
                name: str
                type: int
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                fromto: list[float]
                size: Optional[list[float]]
                contype: int
                conaffinity: int
                condim: int
                priority: int
                friction: list[float]
                solmix: float
                solref: list[float]
                solimp: list[float]
                margin: float
                gap: float
                surfacevel: list[float]
                adhesion: float
                mass: float
                density: float
                typeinertia: int
                fluid_ellipsoid: int
                fluid_coefs: list[float]
                material: str
                rgba: list[float]
                group: int
                hfieldname: str
                meshname: str
                fitscale: float
                userdata: list[float]
                plugin: MjsPlugin
                info: str
        """
    def add_joint(self, default: MjsDefault = None, name: str | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, ref: typing.SupportsFloat | typing.SupportsIndex | None = None, align: typing.SupportsInt | typing.SupportsIndex | None = None, stiffness: typing.Any | None = None, springref: typing.SupportsFloat | typing.SupportsIndex | None = None, springdamper: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, limited: typing.SupportsInt | typing.SupportsIndex | None = None, range: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, margin: typing.SupportsFloat | typing.SupportsIndex | None = None, solref_limit: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp_limit: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, actfrclimited: typing.SupportsInt | typing.SupportsIndex | None = None, actfrcrange: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, armature: typing.SupportsFloat | typing.SupportsIndex | None = None, damping: typing.Any | None = None, frictionloss: typing.SupportsFloat | typing.SupportsIndex | None = None, solref_friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, solimp_friction: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, actgravcomp: typing.SupportsInt | typing.SupportsIndex | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsJoint:
        """
              Add joint to spec.
        
              Args:
                name: str
                type: int
                pos: list[float]
                axis: list[float]
                ref: float
                align: int
                stiffness: Optional[list[float]]
                springref: float
                springdamper: list[float]
                limited: int
                range: list[float]
                margin: float
                solref_limit: list[float]
                solimp_limit: list[float]
                actfrclimited: int
                actfrcrange: list[float]
                armature: float
                damping: Optional[list[float]]
                frictionloss: float
                solref_friction: list[float]
                solimp_friction: list[float]
                group: int
                actgravcomp: int
                userdata: list[float]
                info: str
        """
    def add_light(self, default: MjsDefault = None, name: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, dir: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, mode: typing.SupportsInt | typing.SupportsIndex | None = None, targetbody: str | None = None, active: typing.SupportsInt | typing.SupportsIndex | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, texture: str | None = None, castshadow: typing.SupportsInt | typing.SupportsIndex | None = None, bulbradius: typing.SupportsFloat | typing.SupportsIndex | None = None, intensity: typing.SupportsFloat | typing.SupportsIndex | None = None, range: typing.SupportsFloat | typing.SupportsIndex | None = None, attenuation: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, cutoff: typing.SupportsFloat | typing.SupportsIndex | None = None, exponent: typing.SupportsFloat | typing.SupportsIndex | None = None, ambient: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, diffuse: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, specular: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsLight:
        """
              Add light to spec.
        
              Args:
                name: str
                pos: list[float]
                dir: list[float]
                mode: int
                targetbody: str
                active: int
                type: int
                texture: str
                castshadow: int
                bulbradius: float
                intensity: float
                range: float
                attenuation: list[float]
                cutoff: float
                exponent: float
                ambient: list[float]
                diffuse: list[float]
                specular: list[float]
                info: str
        """
    def add_site(self, default: MjsDefault = None, name: str | None = None, pos: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, quat: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, axisangle: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, xyaxes: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, zaxis: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, euler: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, fromto: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, size: typing.Any | None = None, type: typing.SupportsInt | typing.SupportsIndex | None = None, material: str | None = None, group: typing.SupportsInt | typing.SupportsIndex | None = None, rgba: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, userdata: collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex] | None = None, info: str | None = None) -> MjsSite:
        """
              Add site to spec.
        
              Args:
                name: str
                pos: list[float]
                quat: list[float]
                axisangle: list[float]
                xyaxes: list[float]
                zaxis: list[float]
                euler: list[float]
                fromto: list[float]
                size: Optional[list[float]]
                type: int
                material: str
                group: int
                rgba: list[float]
                userdata: list[float]
                info: str
        """
    def attach_body(self, body: MjsBody, prefix: str | None = None, suffix: str | None = None) -> MjsBody:
        ...
    def set_frame(self, arg0: MjsFrame) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def frame(self) -> MjsFrame:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def parent(self) -> MjsBody:
        ...
    @property
    def pos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @pos.setter
    def pos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def quat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @quat.setter
    def quat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
class MjsGeom:
    alt: MjsOrientation
    classname: MjsDefault
    hfieldname: str
    info: str
    material: str
    meshname: str
    name: str
    plugin: MjsPlugin
    def set_frame(self, arg0: MjsFrame) -> None:
        ...
    @property
    def adhesion(self) -> float:
        ...
    @adhesion.setter
    def adhesion(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def conaffinity(self) -> int:
        ...
    @conaffinity.setter
    def conaffinity(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def condim(self) -> int:
        ...
    @condim.setter
    def condim(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def contype(self) -> int:
        ...
    @contype.setter
    def contype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def density(self) -> float:
        ...
    @density.setter
    def density(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def fitscale(self) -> float:
        ...
    @fitscale.setter
    def fitscale(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def fluid_coefs(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @fluid_coefs.setter
    def fluid_coefs(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def fluid_ellipsoid(self) -> float:
        ...
    @fluid_ellipsoid.setter
    def fluid_ellipsoid(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def frame(self) -> MjsFrame:
        ...
    @property
    def friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @friction.setter
    def friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def fromto(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]", "flags.writeable"]:
        ...
    @fromto.setter
    def fromto(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]"]) -> None:
        ...
    @property
    def gap(self) -> float:
        ...
    @gap.setter
    def gap(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def group(self) -> int:
        ...
    @group.setter
    def group(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def margin(self) -> float:
        ...
    @margin.setter
    def margin(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def mass(self) -> float:
        ...
    @mass.setter
    def mass(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def parent(self) -> MjsBody:
        ...
    @property
    def pos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @pos.setter
    def pos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def priority(self) -> int:
        ...
    @priority.setter
    def priority(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def quat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @quat.setter
    def quat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def rgba(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @rgba.setter
    def rgba(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def size(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @size.setter
    def size(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def solimp(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp.setter
    def solimp(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solmix(self) -> float:
        ...
    @solmix.setter
    def solmix(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def solref(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref.setter
    def solref(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def surfacevel(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]", "flags.writeable"]:
        ...
    @surfacevel.setter
    def surfacevel(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]"]) -> None:
        ...
    @property
    def type(self) -> mujoco._enums.mjtGeom:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def typeinertia(self) -> mujoco._enums.mjtGeomInertia:
        ...
    @typeinertia.setter
    def typeinertia(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsHField:
    content_type: str
    file: str
    info: str
    name: str
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def ncol(self) -> int:
        ...
    @ncol.setter
    def ncol(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def nrow(self) -> int:
        ...
    @nrow.setter
    def nrow(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def size(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @size.setter
    def size(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def userdata(self) -> MjFloatVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsJoint:
    actgravcomp: bool
    classname: MjsDefault
    info: str
    name: str
    def set_frame(self, arg0: MjsFrame) -> None:
        ...
    @property
    def actfrclimited(self) -> mujoco._enums.mjtLimited:
        ...
    @actfrclimited.setter
    def actfrclimited(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def actfrcrange(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @actfrcrange.setter
    def actfrcrange(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def align(self) -> mujoco._enums.mjtAlignFree:
        ...
    @align.setter
    def align(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def armature(self) -> float:
        ...
    @armature.setter
    def armature(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def axis(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @axis.setter
    def axis(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def damping(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @damping.setter
    def damping(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def frame(self) -> MjsFrame:
        ...
    @property
    def frictionloss(self) -> float:
        ...
    @frictionloss.setter
    def frictionloss(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def group(self) -> int:
        ...
    @group.setter
    def group(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def limited(self) -> mujoco._enums.mjtLimited:
        ...
    @limited.setter
    def limited(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def margin(self) -> float:
        ...
    @margin.setter
    def margin(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def parent(self) -> MjsBody:
        ...
    @property
    def pos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @pos.setter
    def pos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def range(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @range.setter
    def range(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def ref(self) -> float:
        ...
    @ref.setter
    def ref(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def solimp_friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp_friction.setter
    def solimp_friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solimp_limit(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp_limit.setter
    def solimp_limit(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solref_friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref_friction.setter
    def solref_friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def solref_limit(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref_limit.setter
    def solref_limit(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def springdamper(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @springdamper.setter
    def springdamper(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def springref(self) -> float:
        ...
    @springref.setter
    def springref(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def stiffness(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @stiffness.setter
    def stiffness(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def type(self) -> mujoco._enums.mjtJoint:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsKey:
    info: str
    name: str
    @property
    def act(self) -> MjDoubleVec:
        ...
    @act.setter
    def act(self, arg1: typing.Any) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def ctrl(self) -> MjDoubleVec:
        ...
    @ctrl.setter
    def ctrl(self, arg1: typing.Any) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def mpos(self) -> MjDoubleVec:
        ...
    @mpos.setter
    def mpos(self, arg1: typing.Any) -> None:
        ...
    @property
    def mquat(self) -> MjDoubleVec:
        ...
    @mquat.setter
    def mquat(self, arg1: typing.Any) -> None:
        ...
    @property
    def qpos(self) -> MjDoubleVec:
        ...
    @qpos.setter
    def qpos(self, arg1: typing.Any) -> None:
        ...
    @property
    def qvel(self) -> MjDoubleVec:
        ...
    @qvel.setter
    def qvel(self, arg1: typing.Any) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def time(self) -> float:
        ...
    @time.setter
    def time(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
class MjsLight:
    active: bool
    castshadow: bool
    classname: MjsDefault
    info: str
    name: str
    targetbody: str
    texture: str
    def set_frame(self, arg0: MjsFrame) -> None:
        ...
    @property
    def ambient(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]", "flags.writeable"]:
        ...
    @ambient.setter
    def ambient(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]"]) -> None:
        ...
    @property
    def attenuation(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]", "flags.writeable"]:
        ...
    @attenuation.setter
    def attenuation(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]"]) -> None:
        ...
    @property
    def bulbradius(self) -> float:
        ...
    @bulbradius.setter
    def bulbradius(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def cutoff(self) -> float:
        ...
    @cutoff.setter
    def cutoff(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def diffuse(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]", "flags.writeable"]:
        ...
    @diffuse.setter
    def diffuse(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]"]) -> None:
        ...
    @property
    def dir(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @dir.setter
    def dir(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def exponent(self) -> float:
        ...
    @exponent.setter
    def exponent(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def frame(self) -> MjsFrame:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def intensity(self) -> float:
        ...
    @intensity.setter
    def intensity(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def mode(self) -> mujoco._enums.mjtCamLight:
        ...
    @mode.setter
    def mode(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def parent(self) -> MjsBody:
        ...
    @property
    def pos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @pos.setter
    def pos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def range(self) -> float:
        ...
    @range.setter
    def range(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def specular(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]", "flags.writeable"]:
        ...
    @specular.setter
    def specular(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[3, 1]"]) -> None:
        ...
    @property
    def type(self) -> mujoco._enums.mjtLightType:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
class MjsMaterial:
    classname: MjsDefault
    info: str
    name: str
    texuniform: bool
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def emission(self) -> float:
        ...
    @emission.setter
    def emission(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def metallic(self) -> float:
        ...
    @metallic.setter
    def metallic(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def reflectance(self) -> float:
        ...
    @reflectance.setter
    def reflectance(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def rgba(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @rgba.setter
    def rgba(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def roughness(self) -> float:
        ...
    @roughness.setter
    def roughness(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def shininess(self) -> float:
        ...
    @shininess.setter
    def shininess(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def specular(self) -> float:
        ...
    @specular.setter
    def specular(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def texrepeat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]", "flags.writeable"]:
        ...
    @texrepeat.setter
    def texrepeat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[2, 1]"]) -> None:
        ...
    @property
    def textures(self) -> MjStringVec:
        ...
    @textures.setter
    def textures(self, arg1: typing.Any) -> None:
        ...
class MjsMesh:
    classname: MjsDefault
    content_type: str
    file: str
    info: str
    material: str
    name: str
    needsdf: bool
    plugin: MjsPlugin
    smoothnormal: bool
    def make_cone(self, nedge: typing.SupportsInt | typing.SupportsIndex, radius: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    def make_hemisphere(self, resolution: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def make_plate(self, resolution: typing.Annotated[collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex], "FixedSize(2)"] = [0, 0]) -> None:
        ...
    def make_sphere(self, subdivision: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    def make_supersphere(self, resolution: typing.SupportsInt | typing.SupportsIndex, e: typing.SupportsFloat | typing.SupportsIndex, n: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    def make_supertorus(self, resolution: typing.SupportsInt | typing.SupportsIndex, radius: typing.SupportsFloat | typing.SupportsIndex, s: typing.SupportsFloat | typing.SupportsIndex, t: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    def make_wedge(self, resolution: typing.Annotated[collections.abc.Sequence[typing.SupportsInt | typing.SupportsIndex], "FixedSize(2)"] = [0, 0], fov: typing.Annotated[collections.abc.Sequence[typing.SupportsFloat | typing.SupportsIndex], "FixedSize(2)"] = [0.0, 0.0], gamma: typing.SupportsFloat | typing.SupportsIndex = 0) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def inertia(self) -> mujoco._enums.mjtMeshInertia:
        ...
    @inertia.setter
    def inertia(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def maxhullvert(self) -> int:
        ...
    @maxhullvert.setter
    def maxhullvert(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def octree_maxdepth(self) -> int:
        ...
    @octree_maxdepth.setter
    def octree_maxdepth(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def refpos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @refpos.setter
    def refpos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def refquat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @refquat.setter
    def refquat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def scale(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @scale.setter
    def scale(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def userface(self) -> MjIntVec:
        ...
    @userface.setter
    def userface(self, arg1: typing.Any) -> None:
        ...
    @property
    def userfacenormal(self) -> MjIntVec:
        ...
    @userfacenormal.setter
    def userfacenormal(self, arg1: typing.Any) -> None:
        ...
    @property
    def userfacetexcoord(self) -> MjIntVec:
        ...
    @userfacetexcoord.setter
    def userfacetexcoord(self, arg1: typing.Any) -> None:
        ...
    @property
    def usernormal(self) -> MjFloatVec:
        ...
    @usernormal.setter
    def usernormal(self, arg1: typing.Any) -> None:
        ...
    @property
    def usertexcoord(self) -> MjFloatVec:
        ...
    @usertexcoord.setter
    def usertexcoord(self, arg1: typing.Any) -> None:
        ...
    @property
    def uservert(self) -> MjFloatVec:
        ...
    @uservert.setter
    def uservert(self, arg1: typing.Any) -> None:
        ...
class MjsNumeric:
    info: str
    name: str
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def data(self) -> MjDoubleVec:
        ...
    @data.setter
    def data(self, arg1: typing.Any) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def size(self) -> int:
        ...
    @size.setter
    def size(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
class MjsOrientation:
    @property
    def axisangle(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @axisangle.setter
    def axisangle(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def euler(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @euler.setter
    def euler(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def type(self) -> mujoco._enums.mjtOrientation:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def xyaxes(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]", "flags.writeable"]:
        ...
    @xyaxes.setter
    def xyaxes(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]"]) -> None:
        ...
    @property
    def zaxis(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @zaxis.setter
    def zaxis(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
class MjsPair:
    classname: MjsDefault
    geomname1: str
    geomname2: str
    info: str
    name: str
    @property
    def adhesion(self) -> float:
        ...
    @adhesion.setter
    def adhesion(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def condim(self) -> int:
        ...
    @condim.setter
    def condim(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @friction.setter
    def friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def gap(self) -> float:
        ...
    @gap.setter
    def gap(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def margin(self) -> float:
        ...
    @margin.setter
    def margin(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def solimp(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp.setter
    def solimp(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solref(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref.setter
    def solref(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def solreffriction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solreffriction.setter
    def solreffriction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
class MjsPlugin:
    active: bool
    config: dict
    info: str
    name: str
    plugin_name: str
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def id(self) -> int:
        ...
    @id.setter
    def id(self, arg1: MjsPlugin) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
class MjsSensor:
    info: str
    name: str
    objname: str
    plugin: MjsPlugin
    refname: str
    def get_data_size(self) -> int:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def cutoff(self) -> float:
        ...
    @cutoff.setter
    def cutoff(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def datatype(self) -> mujoco._enums.mjtDataType:
        ...
    @datatype.setter
    def datatype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def delay(self) -> float:
        ...
    @delay.setter
    def delay(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def dim(self) -> int:
        ...
    @dim.setter
    def dim(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def interp(self) -> int:
        ...
    @interp.setter
    def interp(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def interval(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @interval.setter
    def interval(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def intprm(self) -> typing.Annotated[numpy.typing.NDArray[numpy.int32], "[3, 1]", "flags.writeable"]:
        ...
    @intprm.setter
    def intprm(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.int32], "[3, 1]"]) -> None:
        ...
    @property
    def needstage(self) -> mujoco._enums.mjtStage:
        ...
    @needstage.setter
    def needstage(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def noise(self) -> float:
        ...
    @noise.setter
    def noise(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def nsample(self) -> int:
        ...
    @nsample.setter
    def nsample(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def objtype(self) -> mujoco._enums.mjtObj:
        ...
    @objtype.setter
    def objtype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def reftype(self) -> mujoco._enums.mjtObj:
        ...
    @reftype.setter
    def reftype(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def type(self) -> mujoco._enums.mjtSensor:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsSite:
    alt: MjsOrientation
    classname: MjsDefault
    info: str
    material: str
    name: str
    def attach_body(self, body: MjsBody, prefix: str | None = None, suffix: str | None = None) -> MjsBody:
        ...
    def set_frame(self, arg0: MjsFrame) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def frame(self) -> MjsFrame:
        ...
    @property
    def fromto(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]", "flags.writeable"]:
        ...
    @fromto.setter
    def fromto(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[6, 1]"]) -> None:
        ...
    @property
    def group(self) -> int:
        ...
    @group.setter
    def group(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def parent(self) -> MjsBody:
        ...
    @property
    def pos(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @pos.setter
    def pos(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def quat(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]", "flags.writeable"]:
        ...
    @quat.setter
    def quat(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[4, 1]"]) -> None:
        ...
    @property
    def rgba(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @rgba.setter
    def rgba(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def size(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @size.setter
    def size(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def type(self) -> mujoco._enums.mjtGeom:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
class MjsSkin:
    file: str
    info: str
    material: str
    name: str
    @property
    def bindpos(self) -> MjFloatVec:
        ...
    @bindpos.setter
    def bindpos(self, arg1: typing.Any) -> None:
        ...
    @property
    def bindquat(self) -> MjFloatVec:
        ...
    @bindquat.setter
    def bindquat(self, arg1: typing.Any) -> None:
        ...
    @property
    def bodyname(self) -> MjStringVec:
        ...
    @bodyname.setter
    def bodyname(self, arg1: typing.Any) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def face(self) -> MjIntVec:
        ...
    @face.setter
    def face(self, arg1: typing.Any) -> None:
        ...
    @property
    def group(self) -> int:
        ...
    @group.setter
    def group(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def inflate(self) -> float:
        ...
    @inflate.setter
    def inflate(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def rgba(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @rgba.setter
    def rgba(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def texcoord(self) -> MjFloatVec:
        ...
    @texcoord.setter
    def texcoord(self, arg1: typing.Any) -> None:
        ...
    @property
    def vert(self) -> MjFloatVec:
        ...
    @vert.setter
    def vert(self, arg1: typing.Any) -> None:
        ...
    @property
    def vertid(self) -> list:
        ...
    @vertid.setter
    def vertid(self, arg1: typing.Any) -> None:
        ...
    @property
    def vertweight(self) -> list:
        ...
    @vertweight.setter
    def vertweight(self, arg1: typing.Any) -> None:
        ...
class MjsTendon:
    info: str
    material: str
    name: str
    def default(self) -> MjsDefault:
        ...
    def wrap_geom(self, arg0: str, arg1: str) -> MjsWrap:
        ...
    def wrap_joint(self, arg0: str, arg1: typing.SupportsFloat | typing.SupportsIndex) -> MjsWrap:
        ...
    def wrap_pulley(self, arg0: typing.SupportsFloat | typing.SupportsIndex) -> MjsWrap:
        ...
    def wrap_site(self, arg0: str) -> MjsWrap:
        ...
    @property
    def actfrclimited(self) -> mujoco._enums.mjtLimited:
        ...
    @actfrclimited.setter
    def actfrclimited(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def actfrcrange(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @actfrcrange.setter
    def actfrcrange(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def armature(self) -> float:
        ...
    @armature.setter
    def armature(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def damping(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @damping.setter
    def damping(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def frictionloss(self) -> float:
        ...
    @frictionloss.setter
    def frictionloss(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def group(self) -> int:
        ...
    @group.setter
    def group(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def limited(self) -> mujoco._enums.mjtLimited:
        ...
    @limited.setter
    def limited(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def margin(self) -> float:
        ...
    @margin.setter
    def margin(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def path(self) -> MjsTendonPath:
        ...
    @property
    def range(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @range.setter
    def range(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def rgba(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]", "flags.writeable"]:
        ...
    @rgba.setter
    def rgba(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float32], "[4, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def solimp_friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp_friction.setter
    def solimp_friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solimp_limit(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]", "flags.writeable"]:
        ...
    @solimp_limit.setter
    def solimp_limit(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[5, 1]"]) -> None:
        ...
    @property
    def solref_friction(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref_friction.setter
    def solref_friction(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def solref_limit(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @solref_limit.setter
    def solref_limit(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def springlength(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]", "flags.writeable"]:
        ...
    @springlength.setter
    def springlength(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[2, 1]"]) -> None:
        ...
    @property
    def stiffness(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @stiffness.setter
    def stiffness(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def userdata(self) -> MjDoubleVec:
        ...
    @userdata.setter
    def userdata(self, arg1: typing.Any) -> None:
        ...
    @property
    def width(self) -> float:
        ...
    @width.setter
    def width(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
class MjsTendonPath:
    def __getitem__(self, arg0: typing.SupportsInt | typing.SupportsIndex) -> MjsWrap:
        ...
    def __len__(self) -> int:
        ...
class MjsText:
    data: str
    info: str
    name: str
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def signature(self) -> int:
        ...
class MjsTexture:
    content_type: str
    data: bytes
    file: str
    hflip: bool
    info: str
    name: str
    vflip: bool
    @property
    def builtin(self) -> mujoco._enums.mjtBuiltin:
        ...
    @builtin.setter
    def builtin(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def colorspace(self) -> mujoco._enums.mjtColorSpace:
        ...
    @colorspace.setter
    def colorspace(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def cubefiles(self) -> MjStringVec:
        ...
    @cubefiles.setter
    def cubefiles(self, arg1: typing.Any) -> None:
        ...
    @property
    def gridlayout(self) -> MjCharVec:
        ...
    @gridlayout.setter
    def gridlayout(self, arg1: typing.Any) -> None:
        ...
    @property
    def gridsize(self) -> typing.Annotated[numpy.typing.NDArray[numpy.int32], "[2, 1]", "flags.writeable"]:
        ...
    @gridsize.setter
    def gridsize(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.int32], "[2, 1]"]) -> None:
        ...
    @property
    def height(self) -> int:
        ...
    @height.setter
    def height(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def mark(self) -> mujoco._enums.mjtMark:
        ...
    @mark.setter
    def mark(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def markrgb(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @markrgb.setter
    def markrgb(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def nchannel(self) -> int:
        ...
    @nchannel.setter
    def nchannel(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def random(self) -> float:
        ...
    @random.setter
    def random(self, arg1: typing.SupportsFloat | typing.SupportsIndex) -> None:
        ...
    @property
    def rgb1(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @rgb1.setter
    def rgb1(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def rgb2(self) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]", "flags.writeable"]:
        ...
    @rgb2.setter
    def rgb2(self, arg1: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[3, 1]"]) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
    @property
    def type(self) -> mujoco._enums.mjtTexture:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
    @property
    def width(self) -> int:
        ...
    @width.setter
    def width(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
class MjsTuple:
    info: str
    name: str
    @property
    def compiler(self) -> MjsCompiler:
        ...
    @property
    def id(self) -> int:
        ...
    @property
    def objname(self) -> MjStringVec:
        ...
    @objname.setter
    def objname(self, arg1: typing.Any) -> None:
        ...
    @property
    def objprm(self) -> MjDoubleVec:
        ...
    @objprm.setter
    def objprm(self, arg1: typing.Any) -> None:
        ...
    @property
    def objtype(self) -> MjIntVec:
        ...
    @objtype.setter
    def objtype(self, arg1: typing.Any) -> None:
        ...
    @property
    def signature(self) -> int:
        ...
class MjsWrap:
    info: str
    @property
    def coef(self) -> typing.Any:
        ...
    @property
    def divisor(self) -> typing.Any:
        ...
    @property
    def sidesite(self) -> MjsSite:
        ...
    @property
    def target(self) -> typing.Any:
        ...
    @property
    def type(self) -> mujoco._enums.mjtWrap:
        ...
    @type.setter
    def type(self, arg1: typing.SupportsInt | typing.SupportsIndex) -> None:
        ...
