"""
@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.internal.enum_type_wrapper
import google.protobuf.message
import prodvana.proto.prodvana.common_config.external_link_pb2
import prodvana.proto.prodvana.runtimes.debug_event_pb2
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _FetchMode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _FetchModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FetchMode.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    UNKNOWN_FETCH_MODE: _FetchMode.ValueType  # 0
    EXIT_CODE: _FetchMode.ValueType  # 1
    """fetch will either exit 0 or 2 to indicate drift"""
    STRUCTURED_OUTPUT: _FetchMode.ValueType  # 2
    """fetch will return structured output via stdout"""

class FetchMode(_FetchMode, metaclass=_FetchModeEnumTypeWrapper): ...

UNKNOWN_FETCH_MODE: FetchMode.ValueType  # 0
EXIT_CODE: FetchMode.ValueType  # 1
"""fetch will either exit 0 or 2 to indicate drift"""
STRUCTURED_OUTPUT: FetchMode.ValueType  # 2
"""fetch will return structured output via stdout"""
global___FetchMode = FetchMode

class ExternalObjectVersion(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VERSION_FIELD_NUMBER: builtins.int
    REPLICAS_FIELD_NUMBER: builtins.int
    AVAILABLE_REPLICAS_FIELD_NUMBER: builtins.int
    TARGET_REPLICAS_FIELD_NUMBER: builtins.int
    ACTIVE_FIELD_NUMBER: builtins.int
    DRIFTED_FIELD_NUMBER: builtins.int
    version: builtins.str
    replicas: builtins.int
    """Created/running replicas, can be in any state"""
    available_replicas: builtins.int
    """Replicas which have passed healthchecks for required duration."""
    target_replicas: builtins.int
    """How many replicas are supposed to be spun up, if known"""
    active: builtins.bool
    drifted: builtins.bool
    """next tag: 7"""
    def __init__(
        self,
        *,
        version: builtins.str = ...,
        replicas: builtins.int = ...,
        available_replicas: builtins.int = ...,
        target_replicas: builtins.int = ...,
        active: builtins.bool = ...,
        drifted: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "available_replicas", b"available_replicas", "drifted", b"drifted", "replicas", b"replicas", "target_replicas", b"target_replicas", "version", b"version"]) -> None: ...

global___ExternalObjectVersion = ExternalObjectVersion

class ExternalObject(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class _Status:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ExternalObject._Status.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        PENDING: ExternalObject._Status.ValueType  # 0
        SUCCEEDED: ExternalObject._Status.ValueType  # 1
        FAILED: ExternalObject._Status.ValueType  # 2

    class Status(_Status, metaclass=_StatusEnumTypeWrapper): ...
    PENDING: ExternalObject.Status.ValueType  # 0
    SUCCEEDED: ExternalObject.Status.ValueType  # 1
    FAILED: ExternalObject.Status.ValueType  # 2

    NAME_FIELD_NUMBER: builtins.int
    OBJECT_TYPE_FIELD_NUMBER: builtins.int
    VERSIONS_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    EXTERNAL_LINKS_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    DEBUG_EVENTS_FIELD_NUMBER: builtins.int
    name: builtins.str
    object_type: builtins.str
    @property
    def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ExternalObjectVersion]: ...
    status: global___ExternalObject.Status.ValueType
    @property
    def external_links(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.external_link_pb2.ExternalLink]: ...
    message: builtins.str
    """freeform message explaining the status, for example, error message"""
    @property
    def debug_events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.runtimes.debug_event_pb2.DebugEvent]: ...
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        object_type: builtins.str = ...,
        versions: collections.abc.Iterable[global___ExternalObjectVersion] | None = ...,
        status: global___ExternalObject.Status.ValueType = ...,
        external_links: collections.abc.Iterable[prodvana.proto.prodvana.common_config.external_link_pb2.ExternalLink] | None = ...,
        message: builtins.str = ...,
        debug_events: collections.abc.Iterable[prodvana.proto.prodvana.runtimes.debug_event_pb2.DebugEvent] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["debug_events", b"debug_events", "external_links", b"external_links", "message", b"message", "name", b"name", "object_type", b"object_type", "status", b"status", "versions", b"versions"]) -> None: ...

global___ExternalObject = ExternalObject

class FetchOutput(google.protobuf.message.Message):
    """output format for the fetch command, in json format
    optional. Fetch commands can choose to implement the output, or exit 0 or 2.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    OBJECTS_FIELD_NUMBER: builtins.int
    @property
    def objects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ExternalObject]: ...
    def __init__(
        self,
        *,
        objects: collections.abc.Iterable[global___ExternalObject] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["objects", b"objects"]) -> None: ...

global___FetchOutput = FetchOutput
