"""
@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.meta_pb2
import prodvana.proto.prodvana.convergence.convergence_mode_pb2
import prodvana.proto.prodvana.object.meta_pb2
import prodvana.proto.prodvana.service.service_config_pb2
import prodvana.proto.prodvana.service.user_metadata_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 ServiceInstanceProtectionAttachment(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PROTECTION_FIELD_NUMBER: builtins.int
    ATTACHMENT_FIELD_NUMBER: builtins.int
    DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    ATTACHMENT_ID_FIELD_NUMBER: builtins.int
    protection: builtins.str
    attachment: builtins.str
    desired_state_id: builtins.str
    attachment_id: builtins.str
    def __init__(
        self,
        *,
        protection: builtins.str = ...,
        attachment: builtins.str = ...,
        desired_state_id: builtins.str = ...,
        attachment_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["attachment", b"attachment", "attachment_id", b"attachment_id", "desired_state_id", b"desired_state_id", "protection", b"protection"]) -> None: ...

global___ServiceInstanceProtectionAttachment = ServiceInstanceProtectionAttachment

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

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

    class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ExternalAddr._Type.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: ExternalAddr._Type.ValueType  # 0
        AUTO: ExternalAddr._Type.ValueType  # 1
        EXTERNAL: ExternalAddr._Type.ValueType  # 2
        RAW_IP: ExternalAddr._Type.ValueType  # 3
        """RAW_* are generated by the underlying infrastructure, independent of Prodvana"""
        RAW_HOSTNAME: ExternalAddr._Type.ValueType  # 4

    class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
    UNKNOWN: ExternalAddr.Type.ValueType  # 0
    AUTO: ExternalAddr.Type.ValueType  # 1
    EXTERNAL: ExternalAddr.Type.ValueType  # 2
    RAW_IP: ExternalAddr.Type.ValueType  # 3
    """RAW_* are generated by the underlying infrastructure, independent of Prodvana"""
    RAW_HOSTNAME: ExternalAddr.Type.ValueType  # 4

    ADDR_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    addr: builtins.str
    type: global___ExternalAddr.Type.ValueType
    def __init__(
        self,
        *,
        addr: builtins.str = ...,
        type: global___ExternalAddr.Type.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["addr", b"addr", "type", b"type"]) -> None: ...

global___ExternalAddr = ExternalAddr

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

    CONVERGENCE_MODE_FIELD_NUMBER: builtins.int
    convergence_mode: prodvana.proto.prodvana.convergence.convergence_mode_pb2.ConvergenceMode.ValueType
    def __init__(
        self,
        *,
        convergence_mode: prodvana.proto.prodvana.convergence.convergence_mode_pb2.ConvergenceMode.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["convergence_mode", b"convergence_mode"]) -> None: ...

global___ServiceState = ServiceState

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

    META_FIELD_NUMBER: builtins.int
    CONFIG_FIELD_NUMBER: builtins.int
    STATE_FIELD_NUMBER: builtins.int
    USER_METADATA_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> prodvana.proto.prodvana.object.meta_pb2.ObjectMeta: ...
    @property
    def config(self) -> prodvana.proto.prodvana.service.service_config_pb2.ServiceConfig: ...
    @property
    def state(self) -> global___ServiceState: ...
    @property
    def user_metadata(self) -> prodvana.proto.prodvana.service.user_metadata_pb2.ServiceUserMetadata: ...
    def __init__(
        self,
        *,
        meta: prodvana.proto.prodvana.object.meta_pb2.ObjectMeta | None = ...,
        config: prodvana.proto.prodvana.service.service_config_pb2.ServiceConfig | None = ...,
        state: global___ServiceState | None = ...,
        user_metadata: prodvana.proto.prodvana.service.user_metadata_pb2.ServiceUserMetadata | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config", "meta", b"meta", "state", b"state", "user_metadata", b"user_metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "meta", b"meta", "state", b"state", "user_metadata", b"user_metadata"]) -> None: ...

global___Service = Service

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

    EXTERNAL_ADDRS_FIELD_NUMBER: builtins.int
    PROTECTION_ATTACHMENTS_FIELD_NUMBER: builtins.int
    @property
    def external_addrs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ExternalAddr]: ...
    @property
    def protection_attachments(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ServiceInstanceProtectionAttachment]: ...
    def __init__(
        self,
        *,
        external_addrs: collections.abc.Iterable[global___ExternalAddr] | None = ...,
        protection_attachments: collections.abc.Iterable[global___ServiceInstanceProtectionAttachment] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["external_addrs", b"external_addrs", "protection_attachments", b"protection_attachments"]) -> None: ...

global___ServiceInstanceState = ServiceInstanceState

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

    META_FIELD_NUMBER: builtins.int
    CONFIG_FIELD_NUMBER: builtins.int
    STATE_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> prodvana.proto.prodvana.common_config.meta_pb2.ServiceInstanceObjectMeta: ...
    @property
    def config(self) -> prodvana.proto.prodvana.service.service_config_pb2.CompiledServiceInstanceConfig:
        """will be empty if never pushed"""
    @property
    def state(self) -> global___ServiceInstanceState: ...
    def __init__(
        self,
        *,
        meta: prodvana.proto.prodvana.common_config.meta_pb2.ServiceInstanceObjectMeta | None = ...,
        config: prodvana.proto.prodvana.service.service_config_pb2.CompiledServiceInstanceConfig | None = ...,
        state: global___ServiceInstanceState | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config", "meta", b"meta", "state", b"state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "meta", b"meta", "state", b"state"]) -> None: ...

global___ServiceInstance = ServiceInstance
