"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.struct_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class Tensor(google.protobuf.message.Message):
    """===== 通用张量结构 ====="""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DATA_FIELD_NUMBER: builtins.int
    SHAPE_FIELD_NUMBER: builtins.int
    DTYPE_FIELD_NUMBER: builtins.int
    data: builtins.bytes
    """numpy.tobytes() 序列化后的原始字节"""
    dtype: builtins.str
    """数据类型，如 "float32", "uint8", "int64" """
    @property
    def shape(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """张量维度，例如 [84, 84, 3]"""

    def __init__(
        self,
        *,
        data: builtins.bytes = ...,
        shape: collections.abc.Iterable[builtins.int] | None = ...,
        dtype: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["data", b"data", "dtype", b"dtype", "shape", b"shape"]) -> None: ...

global___Tensor = Tensor

@typing.final
class EnvRequest(google.protobuf.message.Message):
    """===== 客户端请求 ====="""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESET_FIELD_NUMBER: builtins.int
    STEP_FIELD_NUMBER: builtins.int
    CLOSE_FIELD_NUMBER: builtins.int
    @property
    def reset(self) -> global___Reset: ...
    @property
    def step(self) -> global___Step: ...
    @property
    def close(self) -> global___Close: ...
    def __init__(
        self,
        *,
        reset: global___Reset | None = ...,
        step: global___Step | None = ...,
        close: global___Close | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["close", b"close", "cmd", b"cmd", "reset", b"reset", "step", b"step"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["close", b"close", "cmd", b"cmd", "reset", b"reset", "step", b"step"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["cmd", b"cmd"]) -> typing.Literal["reset", "step", "close"] | None: ...

global___EnvRequest = EnvRequest

@typing.final
class EnvReply(google.protobuf.message.Message):
    """===== 服务端回复 ====="""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    RESET_FIELD_NUMBER: builtins.int
    STEP_FIELD_NUMBER: builtins.int
    CLOSE_FIELD_NUMBER: builtins.int
    @property
    def reset(self) -> global___ResetReply: ...
    @property
    def step(self) -> global___StepReply: ...
    @property
    def close(self) -> global___CloseReply: ...
    def __init__(
        self,
        *,
        reset: global___ResetReply | None = ...,
        step: global___StepReply | None = ...,
        close: global___CloseReply | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["close", b"close", "reset", b"reset", "result", b"result", "step", b"step"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["close", b"close", "reset", b"reset", "result", b"result", "step", b"step"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["result", b"result"]) -> typing.Literal["reset", "step", "close"] | None: ...

global___EnvReply = EnvReply

@typing.final
class Reset(google.protobuf.message.Message):
    """===== Reset ====="""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SEED_FIELD_NUMBER: builtins.int
    @property
    def seed(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    def __init__(
        self,
        *,
        seed: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["seed", b"seed"]) -> None: ...

global___Reset = Reset

@typing.final
class ResetReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    OBSERVATION_FIELD_NUMBER: builtins.int
    @property
    def observation(self) -> global___Tensor: ...
    def __init__(
        self,
        *,
        observation: global___Tensor | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["observation", b"observation"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["observation", b"observation"]) -> None: ...

global___ResetReply = ResetReply

@typing.final
class Step(google.protobuf.message.Message):
    """===== Step ====="""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ACTION_FIELD_NUMBER: builtins.int
    @property
    def action(self) -> global___Tensor: ...
    def __init__(
        self,
        *,
        action: global___Tensor | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["action", b"action"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["action", b"action"]) -> None: ...

global___Step = Step

@typing.final
class StepReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    OBSERVATION_FIELD_NUMBER: builtins.int
    REWARD_FIELD_NUMBER: builtins.int
    TERMINATED_FIELD_NUMBER: builtins.int
    TRUNCATED_FIELD_NUMBER: builtins.int
    INFO_FIELD_NUMBER: builtins.int
    @property
    def observation(self) -> global___Tensor: ...
    @property
    def reward(self) -> global___Tensor: ...
    @property
    def terminated(self) -> global___Tensor: ...
    @property
    def truncated(self) -> global___Tensor: ...
    @property
    def info(self) -> google.protobuf.struct_pb2.Struct: ...
    def __init__(
        self,
        *,
        observation: global___Tensor | None = ...,
        reward: global___Tensor | None = ...,
        terminated: global___Tensor | None = ...,
        truncated: global___Tensor | None = ...,
        info: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["info", b"info", "observation", b"observation", "reward", b"reward", "terminated", b"terminated", "truncated", b"truncated"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["info", b"info", "observation", b"observation", "reward", b"reward", "terminated", b"terminated", "truncated", b"truncated"]) -> None: ...

global___StepReply = StepReply

@typing.final
class Close(google.protobuf.message.Message):
    """===== Close ====="""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___Close = Close

@typing.final
class CloseReply(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___CloseReply = CloseReply
