"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.duration_pb2
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.timestamp_pb2
import prodvana.proto.prodvana.common_config.parameters_pb2
import prodvana.proto.prodvana.common_config.program_pb2
import prodvana.proto.prodvana.common_config.retry_pb2
import prodvana.proto.prodvana.common_config.task_pb2
import prodvana.proto.prodvana.environment.clusters_pb2
import prodvana.proto.prodvana.protection.protection_reference_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 _Type:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Type.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    UNKNOWN: _Type.ValueType  # 0
    SERVICE: _Type.ValueType  # 1
    SERVICE_INSTANCE: _Type.ValueType  # 2
    SERVICE_GROUP: _Type.ValueType  # 3
    RUNTIME_OBJECT: _Type.ValueType  # 4
    MANUAL_APPROVAL: _Type.ValueType  # 5
    CUSTOM_TASK: _Type.ValueType  # 6
    PROTECTION_ATTACHMENT: _Type.ValueType  # 7
    PROTECTION_LINK: _Type.ValueType  # 8
    DELIVERY_EXTENSION: _Type.ValueType  # 9

class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...

UNKNOWN: Type.ValueType  # 0
SERVICE: Type.ValueType  # 1
SERVICE_INSTANCE: Type.ValueType  # 2
SERVICE_GROUP: Type.ValueType  # 3
RUNTIME_OBJECT: Type.ValueType  # 4
MANUAL_APPROVAL: Type.ValueType  # 5
CUSTOM_TASK: Type.ValueType  # 6
PROTECTION_ATTACHMENT: Type.ValueType  # 7
PROTECTION_LINK: Type.ValueType  # 8
DELIVERY_EXTENSION: Type.ValueType  # 9
global___Type = Type

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

class _CustomTaskTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CustomTaskType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CUSTOM_TASK_TYPE_UNKNOWN: _CustomTaskType.ValueType  # 0
    PRE_APPROVAL_TASK: _CustomTaskType.ValueType  # 1
    """Runs before everything else. May wait for any dependent RCs to be stable."""
    APPROVAL: _CustomTaskType.ValueType  # 2
    """Approval tasks, manual or automated. Must wait for all PRE_APPROVAL_TASK to be satisfied."""
    POST_APPROVAL_TASK: _CustomTaskType.ValueType  # 3
    """Runs after approval, just before service push."""
    DEPLOYMENT_TASK: _CustomTaskType.ValueType  # 4
    """Runs as long as service push is in progress."""
    POST_DEPLOYMENT_TASK: _CustomTaskType.ValueType  # 5
    """Runs after service push succeeds (pods are replaced and healthy, ...), before declaring the service CONVERGED."""

class CustomTaskType(_CustomTaskType, metaclass=_CustomTaskTypeEnumTypeWrapper): ...

CUSTOM_TASK_TYPE_UNKNOWN: CustomTaskType.ValueType  # 0
PRE_APPROVAL_TASK: CustomTaskType.ValueType  # 1
"""Runs before everything else. May wait for any dependent RCs to be stable."""
APPROVAL: CustomTaskType.ValueType  # 2
"""Approval tasks, manual or automated. Must wait for all PRE_APPROVAL_TASK to be satisfied."""
POST_APPROVAL_TASK: CustomTaskType.ValueType  # 3
"""Runs after approval, just before service push."""
DEPLOYMENT_TASK: CustomTaskType.ValueType  # 4
"""Runs as long as service push is in progress."""
POST_DEPLOYMENT_TASK: CustomTaskType.ValueType  # 5
"""Runs after service push succeeds (pods are replaced and healthy, ...), before declaring the service CONVERGED."""
global___CustomTaskType = CustomTaskType

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

class _StatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Status.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    UNKNOWN_STATUS: _Status.ValueType  # 0
    CONVERGING: _Status.ValueType  # 1
    CONVERGED: _Status.ValueType  # 2
    FAILED: _Status.ValueType  # 3
    ROLLING_BACK: _Status.ValueType  # 4
    ROLLED_BACK: _Status.ValueType  # 5
    FAILED_ROLLBACK: _Status.ValueType  # 12
    PAUSED: _Status.ValueType  # 6
    CHILD_PAUSED: _Status.ValueType  # 7
    """entity itself not paused, but one of its children is paused, so it is not making any progress"""
    WAITING_PRECONDITIONS: _Status.ValueType  # 8
    """Waiting for non-manual approval preconditions"""
    REPLACED: _Status.ValueType  # 9
    WAITING_MANUAL_APPROVAL: _Status.ValueType  # 10
    """Waiting only for manual approval"""
    DELETED: _Status.ValueType  # 11
    PREVIEW: _Status.ValueType  # 13
    """status for all entities in a preview desired state. will never show up in a real desired state."""
    PENDING_SET_DESIRED_STATE: _Status.ValueType  # 14
    """next tag: 15"""

class Status(_Status, metaclass=_StatusEnumTypeWrapper): ...

UNKNOWN_STATUS: Status.ValueType  # 0
CONVERGING: Status.ValueType  # 1
CONVERGED: Status.ValueType  # 2
FAILED: Status.ValueType  # 3
ROLLING_BACK: Status.ValueType  # 4
ROLLED_BACK: Status.ValueType  # 5
FAILED_ROLLBACK: Status.ValueType  # 12
PAUSED: Status.ValueType  # 6
CHILD_PAUSED: Status.ValueType  # 7
"""entity itself not paused, but one of its children is paused, so it is not making any progress"""
WAITING_PRECONDITIONS: Status.ValueType  # 8
"""Waiting for non-manual approval preconditions"""
REPLACED: Status.ValueType  # 9
WAITING_MANUAL_APPROVAL: Status.ValueType  # 10
"""Waiting only for manual approval"""
DELETED: Status.ValueType  # 11
PREVIEW: Status.ValueType  # 13
"""status for all entities in a preview desired state. will never show up in a real desired state."""
PENDING_SET_DESIRED_STATE: Status.ValueType  # 14
"""next tag: 15"""
global___Status = Status

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

class _SimpleStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SimpleStatus.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SS_UNKNOWN: _SimpleStatus.ValueType  # 0
    SS_CONVERGING: _SimpleStatus.ValueType  # 1
    SS_CONVERGED: _SimpleStatus.ValueType  # 2
    SS_FAILED: _SimpleStatus.ValueType  # 3
    SS_WAITING_FOR_APPROVAL: _SimpleStatus.ValueType  # 4

class SimpleStatus(_SimpleStatus, metaclass=_SimpleStatusEnumTypeWrapper): ...

SS_UNKNOWN: SimpleStatus.ValueType  # 0
SS_CONVERGING: SimpleStatus.ValueType  # 1
SS_CONVERGED: SimpleStatus.ValueType  # 2
SS_FAILED: SimpleStatus.ValueType  # 3
SS_WAITING_FOR_APPROVAL: SimpleStatus.ValueType  # 4
global___SimpleStatus = SimpleStatus

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

class _StatusReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_StatusReason.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    REASON_UNKNOWN: _StatusReason.ValueType  # 0
    NO_CURRENT_STATE: _StatusReason.ValueType  # 1
    """Prodvana has not fetched the data it needs to act on the entity"""
    APPLY_FAILED: _StatusReason.ValueType  # 2
    """the command to apply target state failed"""
    UNHEALTHY_PODS: _StatusReason.ValueType  # 3
    """unhealthy pods detected"""
    UPDATING_PODS: _StatusReason.ValueType  # 4
    """pods are being updated"""
    VERSION_MISMATCH: _StatusReason.ValueType  # 5
    """no update in progress, but there are pods on the wrong version. This could be a transient state with the runtime, or something was updated out of band"""
    RUNTIME_OBJECT_FAILED: _StatusReason.ValueType  # 6
    """after applying successfully, the object arrived at a failed state"""
    PRECONDITIONS_FAILED: _StatusReason.ValueType  # 7
    """a precondition failed in an unrecoverable way"""
    MANUAL_APPROVAL_REJECTED: _StatusReason.ValueType  # 8
    STUCK_ENTITY: _StatusReason.ValueType  # 9
    """Entity has not been updated in a long time"""
    VERSION_DIRTY: _StatusReason.ValueType  # 10
    """the active version is explicitly marked as dirty"""

class StatusReason(_StatusReason, metaclass=_StatusReasonEnumTypeWrapper): ...

REASON_UNKNOWN: StatusReason.ValueType  # 0
NO_CURRENT_STATE: StatusReason.ValueType  # 1
"""Prodvana has not fetched the data it needs to act on the entity"""
APPLY_FAILED: StatusReason.ValueType  # 2
"""the command to apply target state failed"""
UNHEALTHY_PODS: StatusReason.ValueType  # 3
"""unhealthy pods detected"""
UPDATING_PODS: StatusReason.ValueType  # 4
"""pods are being updated"""
VERSION_MISMATCH: StatusReason.ValueType  # 5
"""no update in progress, but there are pods on the wrong version. This could be a transient state with the runtime, or something was updated out of band"""
RUNTIME_OBJECT_FAILED: StatusReason.ValueType  # 6
"""after applying successfully, the object arrived at a failed state"""
PRECONDITIONS_FAILED: StatusReason.ValueType  # 7
"""a precondition failed in an unrecoverable way"""
MANUAL_APPROVAL_REJECTED: StatusReason.ValueType  # 8
STUCK_ENTITY: StatusReason.ValueType  # 9
"""Entity has not been updated in a long time"""
VERSION_DIRTY: StatusReason.ValueType  # 10
"""the active version is explicitly marked as dirty"""
global___StatusReason = StatusReason

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

class _ActionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ActionType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ACTION_TYPE_UNKNOWN: _ActionType.ValueType  # 0
    ACTION_TYPE_APPLYING: _ActionType.ValueType  # 1
    """DD is currently apply target state - if its doing this for too long, probably means apply is stuck."""
    ACTION_TYPE_APPLIED: _ActionType.ValueType  # 2
    """DD has applied target state - waiting for object to converge."""
    ACTION_TYPE_COMPLETE: _ActionType.ValueType  # 3
    """Reached terminal state - DD is doing nothing further."""

class ActionType(_ActionType, metaclass=_ActionTypeEnumTypeWrapper): ...

ACTION_TYPE_UNKNOWN: ActionType.ValueType  # 0
ACTION_TYPE_APPLYING: ActionType.ValueType  # 1
"""DD is currently apply target state - if its doing this for too long, probably means apply is stuck."""
ACTION_TYPE_APPLIED: ActionType.ValueType  # 2
"""DD has applied target state - waiting for object to converge."""
ACTION_TYPE_COMPLETE: ActionType.ValueType  # 3
"""Reached terminal state - DD is doing nothing further."""
global___ActionType = ActionType

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

class _ConditionStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ConditionStatus.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CONDITION_UNKNOWN_STATUS: _ConditionStatus.ValueType  # 0
    CONDITION_PENDING: _ConditionStatus.ValueType  # 1
    CONDITION_SATISFIED: _ConditionStatus.ValueType  # 2
    CONDITION_MANUALLY_BYPASSED: _ConditionStatus.ValueType  # 3
    CONDITION_FAILED: _ConditionStatus.ValueType  # 4

class ConditionStatus(_ConditionStatus, metaclass=_ConditionStatusEnumTypeWrapper): ...

CONDITION_UNKNOWN_STATUS: ConditionStatus.ValueType  # 0
CONDITION_PENDING: ConditionStatus.ValueType  # 1
CONDITION_SATISFIED: ConditionStatus.ValueType  # 2
CONDITION_MANUALLY_BYPASSED: ConditionStatus.ValueType  # 3
CONDITION_FAILED: ConditionStatus.ValueType  # 4
global___ConditionStatus = ConditionStatus

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

class _ManualApprovalStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ManualApprovalStatus.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PENDING: _ManualApprovalStatus.ValueType  # 0
    APPROVED: _ManualApprovalStatus.ValueType  # 1
    REJECTED: _ManualApprovalStatus.ValueType  # 2

class ManualApprovalStatus(_ManualApprovalStatus, metaclass=_ManualApprovalStatusEnumTypeWrapper): ...

PENDING: ManualApprovalStatus.ValueType  # 0
APPROVED: ManualApprovalStatus.ValueType  # 1
REJECTED: ManualApprovalStatus.ValueType  # 2
global___ManualApprovalStatus = ManualApprovalStatus

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

class _CustomTaskStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_CustomTaskStatus.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    CUSTOM_TASK_PENDING: _CustomTaskStatus.ValueType  # 0
    CUSTOM_TASK_SUCCESSFUL: _CustomTaskStatus.ValueType  # 1
    CUSTOM_TASK_RETRIES_EXHAUSTED: _CustomTaskStatus.ValueType  # 2
    CUSTOM_TASK_TIMED_OUT: _CustomTaskStatus.ValueType  # 3

class CustomTaskStatus(_CustomTaskStatus, metaclass=_CustomTaskStatusEnumTypeWrapper): ...

CUSTOM_TASK_PENDING: CustomTaskStatus.ValueType  # 0
CUSTOM_TASK_SUCCESSFUL: CustomTaskStatus.ValueType  # 1
CUSTOM_TASK_RETRIES_EXHAUSTED: CustomTaskStatus.ValueType  # 2
CUSTOM_TASK_TIMED_OUT: CustomTaskStatus.ValueType  # 3
global___CustomTaskStatus = CustomTaskStatus

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

class _SignalTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SignalType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SIGNAL_UNKNOWN: _SignalType.ValueType  # 0
    DELIVERY_PROMOTION: _SignalType.ValueType  # 1
    PROTECTION_BYPASS: _SignalType.ValueType  # 2
    RUNTIME_EXTENSION_APPROVAL: _SignalType.ValueType  # 3
    SIGNAL_MANUAL_APPROVAL: _SignalType.ValueType  # 4

class SignalType(_SignalType, metaclass=_SignalTypeEnumTypeWrapper): ...

SIGNAL_UNKNOWN: SignalType.ValueType  # 0
DELIVERY_PROMOTION: SignalType.ValueType  # 1
PROTECTION_BYPASS: SignalType.ValueType  # 2
RUNTIME_EXTENSION_APPROVAL: SignalType.ValueType  # 3
SIGNAL_MANUAL_APPROVAL: SignalType.ValueType  # 4
global___SignalType = SignalType

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

    LIFECYCLE_FIELD_NUMBER: builtins.int
    ATTACHMENT_ID_FIELD_NUMBER: builtins.int
    @property
    def lifecycle(self) -> prodvana.proto.prodvana.protection.protection_reference_pb2.ProtectionLifecycle: ...
    attachment_id: builtins.str
    def __init__(
        self,
        *,
        lifecycle: prodvana.proto.prodvana.protection.protection_reference_pb2.ProtectionLifecycle | None = ...,
        attachment_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["lifecycle", b"lifecycle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["attachment_id", b"attachment_id", "lifecycle", b"lifecycle"]) -> None: ...

global___ProtectionLink = ProtectionLink

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

    class ReleaseChannelStableCondition(google.protobuf.message.Message):
        """TODO(naphat) conditions need health"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        APPLICATION_FIELD_NUMBER: builtins.int
        SERVICE_FIELD_NUMBER: builtins.int
        SERVICE_ID_FIELD_NUMBER: builtins.int
        RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
        RELEASE_CHANNEL_ID_FIELD_NUMBER: builtins.int
        SERVICE_VERSION_FIELD_NUMBER: builtins.int
        application: builtins.str
        service: builtins.str
        """service name or id"""
        service_id: builtins.str
        """service id, normalized. Set internally by Prodvana"""
        release_channel: builtins.str
        """release channel name or id"""
        release_channel_id: builtins.str
        """release channel id, normalized. Set internally by Prodvana"""
        service_version: builtins.str
        def __init__(
            self,
            *,
            application: builtins.str = ...,
            service: builtins.str = ...,
            service_id: builtins.str = ...,
            release_channel: builtins.str = ...,
            release_channel_id: builtins.str = ...,
            service_version: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "release_channel", b"release_channel", "release_channel_id", b"release_channel_id", "service", b"service", "service_id", b"service_id", "service_version", b"service_version"]) -> None: ...

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

        TOPIC_FIELD_NUMBER: builtins.int
        DESCRIPTION_FIELD_NUMBER: builtins.int
        topic: builtins.str
        description: builtins.str
        def __init__(
            self,
            *,
            topic: builtins.str = ...,
            description: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "topic", b"topic"]) -> None: ...

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

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

            NAME_FIELD_NUMBER: builtins.int
            TASK_TYPE_FIELD_NUMBER: builtins.int
            name: builtins.str
            task_type: global___CustomTaskType.ValueType
            def __init__(
                self,
                *,
                name: builtins.str = ...,
                task_type: global___CustomTaskType.ValueType = ...,
            ) -> None: ...
            def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "task_type", b"task_type"]) -> None: ...

        CUSTOM_TASK_NAME_FIELD_NUMBER: builtins.int
        PROTECTION_FIELD_NUMBER: builtins.int
        custom_task_name: builtins.str
        @property
        def protection(self) -> global___Condition.CustomTaskSuccessfulCondition.Protection: ...
        def __init__(
            self,
            *,
            custom_task_name: builtins.str = ...,
            protection: global___Condition.CustomTaskSuccessfulCondition.Protection | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["protection", b"protection", "source", b"source"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["custom_task_name", b"custom_task_name", "protection", b"protection", "source", b"source"]) -> None: ...
        def WhichOneof(self, oneof_group: typing_extensions.Literal["source", b"source"]) -> typing_extensions.Literal["protection"] | None: ...

    RC_COND_FIELD_NUMBER: builtins.int
    MANUAL_APPROVAL_FIELD_NUMBER: builtins.int
    CUSTOM_TASK_FIELD_NUMBER: builtins.int
    DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    @property
    def rc_cond(self) -> global___Condition.ReleaseChannelStableCondition: ...
    @property
    def manual_approval(self) -> global___Condition.ManualApproval: ...
    @property
    def custom_task(self) -> global___Condition.CustomTaskSuccessfulCondition: ...
    desired_state_id: builtins.str
    """Generated during SetDesiredState.
    Do not set as part of input unless reusing an existing precondition, e.g., patching an existing desired state without regenerating some preconditions.
    """
    def __init__(
        self,
        *,
        rc_cond: global___Condition.ReleaseChannelStableCondition | None = ...,
        manual_approval: global___Condition.ManualApproval | None = ...,
        custom_task: global___Condition.CustomTaskSuccessfulCondition | None = ...,
        desired_state_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["condition", b"condition", "custom_task", b"custom_task", "manual_approval", b"manual_approval", "rc_cond", b"rc_cond"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["condition", b"condition", "custom_task", b"custom_task", "desired_state_id", b"desired_state_id", "manual_approval", b"manual_approval", "rc_cond", b"rc_cond"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["condition", b"condition"]) -> typing_extensions.Literal["rc_cond", "manual_approval", "custom_task"] | None: ...

global___Condition = Condition

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

    INSTANCE_ID_FIELD_NUMBER: builtins.int
    LIFECYCLE_FIELD_NUMBER: builtins.int
    REFERENCES_FIELD_NUMBER: builtins.int
    instance_id: builtins.str
    lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType
    @property
    def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Identifier]: ...
    def __init__(
        self,
        *,
        instance_id: builtins.str = ...,
        lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType = ...,
        references: collections.abc.Iterable[global___Identifier] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["instance_id", b"instance_id", "lifecycle", b"lifecycle", "references", b"references"]) -> None: ...

global___DeliveryExtension = DeliveryExtension

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

    TYPE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    type: global___Type.ValueType
    name: builtins.str
    """globally unique identifier"""
    def __init__(
        self,
        *,
        type: global___Type.ValueType = ...,
        name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "type", b"type"]) -> None: ...

global___Identifier = Identifier

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

    PRECONDITIONS_FIELD_NUMBER: builtins.int
    INVARIANTS_FIELD_NUMBER: builtins.int
    SELF_FIELD_NUMBER: builtins.int
    DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    ROOT_DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    PROTECTION_LINKS_FIELD_NUMBER: builtins.int
    DELIVERY_EXTENSIONS_FIELD_NUMBER: builtins.int
    TARGET_STATE_SET_BY_PARENT_FIELD_NUMBER: builtins.int
    REQUIRE_APPROVAL_BEFORE_APPLY_FIELD_NUMBER: builtins.int
    APPLIES_IN_OBSERVER_MODE_FIELD_NUMBER: builtins.int
    CONVERGENCE_GRACE_PERIOD_FIELD_NUMBER: builtins.int
    @property
    def preconditions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Condition]: ...
    @property
    def invariants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Condition]: ...
    @property
    def self(self) -> global___Identifier: ...
    desired_state_id: builtins.str
    root_desired_state_id: builtins.str
    @property
    def protection_links(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ProtectionLink]: ...
    @property
    def delivery_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtension]: ...
    target_state_set_by_parent: builtins.bool
    """if true, the entity does not set its own target state. instead, the target state will be set when the parent decides to set target state."""
    require_approval_before_apply: builtins.bool
    applies_in_observer_mode: builtins.bool
    @property
    def convergence_grace_period(self) -> google.protobuf.duration_pb2.Duration:
        """How long after apply ran the first time should it be restarted if the entity still has not converged.
        This duration is computed from the *start* of apply run.
        """
    def __init__(
        # pyright: reportSelfClsParameterName=false
        self_,
        *,
        preconditions: collections.abc.Iterable[global___Condition] | None = ...,
        invariants: collections.abc.Iterable[global___Condition] | None = ...,
        self: global___Identifier | None = ...,
        desired_state_id: builtins.str = ...,
        root_desired_state_id: builtins.str = ...,
        protection_links: collections.abc.Iterable[global___ProtectionLink] | None = ...,
        delivery_extensions: collections.abc.Iterable[global___DeliveryExtension] | None = ...,
        target_state_set_by_parent: builtins.bool = ...,
        require_approval_before_apply: builtins.bool = ...,
        applies_in_observer_mode: builtins.bool = ...,
        convergence_grace_period: google.protobuf.duration_pb2.Duration | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["convergence_grace_period", b"convergence_grace_period", "self", b"self"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["applies_in_observer_mode", b"applies_in_observer_mode", "convergence_grace_period", b"convergence_grace_period", "delivery_extensions", b"delivery_extensions", "desired_state_id", b"desired_state_id", "invariants", b"invariants", "preconditions", b"preconditions", "protection_links", b"protection_links", "require_approval_before_apply", b"require_approval_before_apply", "root_desired_state_id", b"root_desired_state_id", "self", b"self", "target_state_set_by_parent", b"target_state_set_by_parent"]) -> None: ...

global___Metadata = Metadata

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

    SUBJECT_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    MESSAGES_FIELD_NUMBER: builtins.int
    @property
    def subject(self) -> global___Identifier:
        """the id of the object that resulted in this status. In the case of parent entities, this may be one of the child entities, or itself."""
    reason: global___StatusReason.ValueType
    message: builtins.str
    """Optional freeform message to be shown to the user alongside reason.
    only one of the two will be set
    """
    @property
    def messages(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        subject: global___Identifier | None = ...,
        reason: global___StatusReason.ValueType = ...,
        message: builtins.str = ...,
        messages: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["subject", b"subject"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["message", b"message", "messages", b"messages", "reason", b"reason", "subject", b"subject"]) -> None: ...

global___StatusExplanation = StatusExplanation

class ActionExplanation(google.protobuf.message.Message):
    """What action is DD taking now?"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TS_FIELD_NUMBER: builtins.int
    ACTION_TYPE_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    @property
    def ts(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    action_type: global___ActionType.ValueType
    message: builtins.str
    def __init__(
        self,
        *,
        ts: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        action_type: global___ActionType.ValueType = ...,
        message: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["ts", b"ts"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["action_type", b"action_type", "message", b"message", "ts", b"ts"]) -> None: ...

global___ActionExplanation = ActionExplanation

class Version(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
    PUSH_TIMESTAMP_FIELD_NUMBER: builtins.int
    ACTIVE_FIELD_NUMBER: builtins.int
    TARGET_REPLICAS_FIELD_NUMBER: builtins.int
    DIRTY_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."""
    @property
    def push_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    active: builtins.bool
    """A version is active if it is the version in which the underlying object is converging to.
    A runtime object will have exactly one active version, while a service instance may have one or more
    depending on if it maps to more than one runtime object.
    """
    target_replicas: builtins.int
    dirty: builtins.bool
    """A version is dirty if its state no longer matches desired state and must be fixed by a redeploy.
    For example, a terraform version is dirty if its plan output returns differences.
    DD will only take action on dirty if the version is also active.
    """
    def __init__(
        self,
        *,
        version: builtins.str = ...,
        replicas: builtins.int = ...,
        available_replicas: builtins.int = ...,
        push_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        active: builtins.bool = ...,
        target_replicas: builtins.int = ...,
        dirty: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["push_timestamp", b"push_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["active", b"active", "available_replicas", b"available_replicas", "dirty", b"dirty", "push_timestamp", b"push_timestamp", "replicas", b"replicas", "target_replicas", b"target_replicas", "version", b"version"]) -> None: ...

global___Version = Version

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

    META_FIELD_NUMBER: builtins.int
    APPLICATION_FIELD_NUMBER: builtins.int
    SERVICE_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    SERVICE_ID_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_ID_FIELD_NUMBER: builtins.int
    VERSIONS_FIELD_NUMBER: builtins.int
    ROLLBACK_VERSION_FIELD_NUMBER: builtins.int
    COMPUTE_ROLLBACK_VERSION_FIELD_NUMBER: builtins.int
    ROLLBACK_FIELD_NUMBER: builtins.int
    DELIVERY_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    application: builtins.str
    service: builtins.str
    release_channel: builtins.str
    service_id: builtins.str
    """set internally by prodvana"""
    release_channel_id: builtins.str
    """set internally by prodvana"""
    @property
    def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Version]: ...
    @property
    def rollback_version(self) -> global___Version:
        """set an explicit auto rollback version"""
    compute_rollback_version: builtins.bool
    """use the last converged version as the auto rollback version
    will not do anything if the *latest* service config has auto rollback disabled
    """
    rollback: builtins.bool
    @property
    def delivery(self) -> global___DeliveryState: ...
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        application: builtins.str = ...,
        service: builtins.str = ...,
        release_channel: builtins.str = ...,
        service_id: builtins.str = ...,
        release_channel_id: builtins.str = ...,
        versions: collections.abc.Iterable[global___Version] | None = ...,
        rollback_version: global___Version | None = ...,
        compute_rollback_version: builtins.bool = ...,
        rollback: builtins.bool = ...,
        delivery: global___DeliveryState | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["autorollback_oneof", b"autorollback_oneof", "compute_rollback_version", b"compute_rollback_version", "delivery", b"delivery", "meta", b"meta", "rollback_version", b"rollback_version"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "autorollback_oneof", b"autorollback_oneof", "compute_rollback_version", b"compute_rollback_version", "delivery", b"delivery", "meta", b"meta", "release_channel", b"release_channel", "release_channel_id", b"release_channel_id", "rollback", b"rollback", "rollback_version", b"rollback_version", "service", b"service", "service_id", b"service_id", "versions", b"versions"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["autorollback_oneof", b"autorollback_oneof"]) -> typing_extensions.Literal["rollback_version", "compute_rollback_version"] | None: ...

global___ServiceInstanceState = ServiceInstanceState

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

    META_FIELD_NUMBER: builtins.int
    APPLICATION_FIELD_NUMBER: builtins.int
    SERVICE_FIELD_NUMBER: builtins.int
    SERVICE_ID_FIELD_NUMBER: builtins.int
    RELEASE_CHANNELS_FIELD_NUMBER: builtins.int
    CUSTOM_TASKS_FIELD_NUMBER: builtins.int
    DELIVERY_EXTENSIONS_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_LABEL_SELECTORS_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    application: builtins.str
    service: builtins.str
    service_id: builtins.str
    """set internally by prodvana"""
    @property
    def release_channels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ServiceInstanceState]: ...
    @property
    def custom_tasks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CustomTaskState]:
        """Definitions for custom tasks used by this service. Must be empty if part of service group."""
    @property
    def delivery_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionState]: ...
    @property
    def release_channel_label_selectors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ServiceInstanceLabelSelector]:
        """in leau of listing out individual release channels, specify versions for release channels using label selectors instead.
        This can only be used as input to SetDesiredState and will never be returned as output from a convergence summary.
        """
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        application: builtins.str = ...,
        service: builtins.str = ...,
        service_id: builtins.str = ...,
        release_channels: collections.abc.Iterable[global___ServiceInstanceState] | None = ...,
        custom_tasks: collections.abc.Iterable[global___CustomTaskState] | None = ...,
        delivery_extensions: collections.abc.Iterable[global___DeliveryExtensionState] | None = ...,
        release_channel_label_selectors: collections.abc.Iterable[global___ServiceInstanceLabelSelector] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["meta", b"meta"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "custom_tasks", b"custom_tasks", "delivery_extensions", b"delivery_extensions", "meta", b"meta", "release_channel_label_selectors", b"release_channel_label_selectors", "release_channels", b"release_channels", "service", b"service", "service_id", b"service_id"]) -> None: ...

global___ServiceState = ServiceState

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

    RELEASE_CHANNEL_SELECTOR_FIELD_NUMBER: builtins.int
    ALL_FIELD_NUMBER: builtins.int
    VERSIONS_FIELD_NUMBER: builtins.int
    ROLLBACK_VERSION_FIELD_NUMBER: builtins.int
    COMPUTE_ROLLBACK_VERSION_FIELD_NUMBER: builtins.int
    MATERIALIZED_RELEASE_CHANNELS_FIELD_NUMBER: builtins.int
    release_channel_selector: builtins.str
    """release channel selector, automatically scoped to `@type=release-channel @application=<app>`"""
    all: builtins.bool
    """target all release channels"""
    @property
    def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Version]: ...
    @property
    def rollback_version(self) -> global___Version:
        """set an explicit auto rollback version"""
    compute_rollback_version: builtins.bool
    """use the last converged version as the auto rollback version"""
    @property
    def materialized_release_channels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """set internally by Prodvana in compiled desired state to track what this selector evaluated to. This includes all release channels,
        including ones that would be overridden by something else.
        """
    def __init__(
        self,
        *,
        release_channel_selector: builtins.str = ...,
        all: builtins.bool = ...,
        versions: collections.abc.Iterable[global___Version] | None = ...,
        rollback_version: global___Version | None = ...,
        compute_rollback_version: builtins.bool = ...,
        materialized_release_channels: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["all", b"all", "autorollback_oneof", b"autorollback_oneof", "compute_rollback_version", b"compute_rollback_version", "release_channel_selector", b"release_channel_selector", "rollback_version", b"rollback_version", "selector_oneof", b"selector_oneof"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["all", b"all", "autorollback_oneof", b"autorollback_oneof", "compute_rollback_version", b"compute_rollback_version", "materialized_release_channels", b"materialized_release_channels", "release_channel_selector", b"release_channel_selector", "rollback_version", b"rollback_version", "selector_oneof", b"selector_oneof", "versions", b"versions"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing_extensions.Literal["autorollback_oneof", b"autorollback_oneof"]) -> typing_extensions.Literal["rollback_version", "compute_rollback_version"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing_extensions.Literal["selector_oneof", b"selector_oneof"]) -> typing_extensions.Literal["release_channel_selector", "all"] | None: ...

global___ServiceInstanceLabelSelector = ServiceInstanceLabelSelector

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

    META_FIELD_NUMBER: builtins.int
    SERVICES_FIELD_NUMBER: builtins.int
    CUSTOM_TASKS_FIELD_NUMBER: builtins.int
    DELIVERY_EXTENSIONS_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    @property
    def services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ServiceState]: ...
    @property
    def custom_tasks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CustomTaskState]:
        """Definitions for custom tasks used by this service group."""
    @property
    def delivery_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionState]: ...
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        services: collections.abc.Iterable[global___ServiceState] | None = ...,
        custom_tasks: collections.abc.Iterable[global___CustomTaskState] | None = ...,
        delivery_extensions: collections.abc.Iterable[global___DeliveryExtensionState] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["meta", b"meta"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["custom_tasks", b"custom_tasks", "delivery_extensions", b"delivery_extensions", "meta", b"meta", "services", b"services"]) -> None: ...

global___ServiceGroupState = ServiceGroupState

class CanaryProgressState(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[CanaryProgressState._Status.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: CanaryProgressState._Status.ValueType  # 0
        PENDING: CanaryProgressState._Status.ValueType  # 1
        PAUSED: CanaryProgressState._Status.ValueType  # 2
        COMPLETED: CanaryProgressState._Status.ValueType  # 3

    class Status(_Status, metaclass=_StatusEnumTypeWrapper): ...
    UNKNOWN: CanaryProgressState.Status.ValueType  # 0
    PENDING: CanaryProgressState.Status.ValueType  # 1
    PAUSED: CanaryProgressState.Status.ValueType  # 2
    COMPLETED: CanaryProgressState.Status.ValueType  # 3

    STATUS_FIELD_NUMBER: builtins.int
    CANARY_WEIGHT_FIELD_NUMBER: builtins.int
    DURATION_FIELD_NUMBER: builtins.int
    PAUSE_START_TIMESTAMP_FIELD_NUMBER: builtins.int
    status: global___CanaryProgressState.Status.ValueType
    canary_weight: builtins.int
    """current canary weight"""
    @property
    def duration(self) -> google.protobuf.duration_pb2.Duration:
        """pause duration at this weight before advancing"""
    @property
    def pause_start_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when status = PAUSED this indicates when the pause started"""
    def __init__(
        self,
        *,
        status: global___CanaryProgressState.Status.ValueType = ...,
        canary_weight: builtins.int = ...,
        duration: google.protobuf.duration_pb2.Duration | None = ...,
        pause_start_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["duration", b"duration", "pause_start_timestamp", b"pause_start_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["canary_weight", b"canary_weight", "duration", b"duration", "pause_start_timestamp", b"pause_start_timestamp", "status", b"status"]) -> None: ...

global___CanaryProgressState = CanaryProgressState

class DeliveryState(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[DeliveryState._Status.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        STATUS_UNKNOWN: DeliveryState._Status.ValueType  # 0
        STATUS_PROGRESSING: DeliveryState._Status.ValueType  # 1
        STATUS_PAUSED: DeliveryState._Status.ValueType  # 2
        STATUS_HEALTHY: DeliveryState._Status.ValueType  # 3
        STATUS_UNHEALTHY: DeliveryState._Status.ValueType  # 4

    class Status(_Status, metaclass=_StatusEnumTypeWrapper): ...
    STATUS_UNKNOWN: DeliveryState.Status.ValueType  # 0
    STATUS_PROGRESSING: DeliveryState.Status.ValueType  # 1
    STATUS_PAUSED: DeliveryState.Status.ValueType  # 2
    STATUS_HEALTHY: DeliveryState.Status.ValueType  # 3
    STATUS_UNHEALTHY: DeliveryState.Status.ValueType  # 4

    DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    CANARY_PROGRESS_FIELD_NUMBER: builtins.int
    FIRST_RUN_FIELD_NUMBER: builtins.int
    GENERATION_FIELD_NUMBER: builtins.int
    desired_state_id: builtins.str
    status: global___DeliveryState.Status.ValueType
    """overall delivery status"""
    message: builtins.str
    """human readable message from the delivery controller"""
    @property
    def canary_progress(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CanaryProgressState]:
        """current state of all Canary progression"""
    first_run: builtins.bool
    generation: builtins.str
    """string unique to each PD controller convergence,
    e.g. when Argo Rollouts starts a new rollout, this will change.
    """
    def __init__(
        self,
        *,
        desired_state_id: builtins.str = ...,
        status: global___DeliveryState.Status.ValueType = ...,
        message: builtins.str = ...,
        canary_progress: collections.abc.Iterable[global___CanaryProgressState] | None = ...,
        first_run: builtins.bool = ...,
        generation: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["canary_progress", b"canary_progress", "desired_state_id", b"desired_state_id", "first_run", b"first_run", "generation", b"generation", "message", b"message", "status", b"status"]) -> None: ...

global___DeliveryState = DeliveryState

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

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

    class _FetchStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[FetchDetails._FetchStatus.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: FetchDetails._FetchStatus.ValueType  # 0
        DRIFTED: FetchDetails._FetchStatus.ValueType  # 1
        CONVERGED: FetchDetails._FetchStatus.ValueType  # 2
        FAILED: FetchDetails._FetchStatus.ValueType  # 3

    class FetchStatus(_FetchStatus, metaclass=_FetchStatusEnumTypeWrapper): ...
    UNKNOWN: FetchDetails.FetchStatus.ValueType  # 0
    DRIFTED: FetchDetails.FetchStatus.ValueType  # 1
    CONVERGED: FetchDetails.FetchStatus.ValueType  # 2
    FAILED: FetchDetails.FetchStatus.ValueType  # 3

    STARTED_TIMESTAMP_FIELD_NUMBER: builtins.int
    COMPLETED_TIMESTAMP_FIELD_NUMBER: builtins.int
    FETCH_PLAN_BLOB_ID_FIELD_NUMBER: builtins.int
    FETCH_PLAN_EXPLANATION_BLOB_ID_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    FETCH_STATUS_FIELD_NUMBER: builtins.int
    FETCHER_DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    @property
    def started_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when the fetch job started"""
    @property
    def completed_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when the fetch job completed"""
    fetch_plan_blob_id: builtins.str
    """for fetch commands that return a plan, this is the plan blob id
    optional
    """
    fetch_plan_explanation_blob_id: builtins.str
    """additionally, for fetch commands that return a plan with a separate explanation text, this is the explanation blob id
    optional
    """
    version: builtins.str
    """the version of the service associated with this fetch run"""
    fetch_status: global___FetchDetails.FetchStatus.ValueType
    fetcher_desired_state_id: builtins.str
    message: builtins.str
    """freeform message from the convergence engine explaining the fetch result"""
    def __init__(
        self,
        *,
        started_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        completed_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        fetch_plan_blob_id: builtins.str = ...,
        fetch_plan_explanation_blob_id: builtins.str = ...,
        version: builtins.str = ...,
        fetch_status: global___FetchDetails.FetchStatus.ValueType = ...,
        fetcher_desired_state_id: builtins.str = ...,
        message: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["completed_timestamp", b"completed_timestamp", "started_timestamp", b"started_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["completed_timestamp", b"completed_timestamp", "fetch_plan_blob_id", b"fetch_plan_blob_id", "fetch_plan_explanation_blob_id", b"fetch_plan_explanation_blob_id", "fetch_status", b"fetch_status", "fetcher_desired_state_id", b"fetcher_desired_state_id", "message", b"message", "started_timestamp", b"started_timestamp", "version", b"version"]) -> None: ...

global___FetchDetails = FetchDetails

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

    ONGOING_FETCH_FIELD_NUMBER: builtins.int
    LAST_SUCCESSFUL_FETCH_FIELD_NUMBER: builtins.int
    LAST_FAILED_FETCH_FIELD_NUMBER: builtins.int
    @property
    def ongoing_fetch(self) -> global___FetchDetails:
        """details of an actively executing fetch, may be null if no fetch is currently executing"""
    @property
    def last_successful_fetch(self) -> global___FetchDetails:
        """details of the last fetch that completed successfully (as in, either DRIFTED or CONVERGED), may be null if no fetch has ever executed"""
    @property
    def last_failed_fetch(self) -> global___FetchDetails:
        """if the latest completed fetch is FAILED, then it is stored here.
        if the latest completed fetch is not FAILED, then this is null.
        """
    def __init__(
        self,
        *,
        ongoing_fetch: global___FetchDetails | None = ...,
        last_successful_fetch: global___FetchDetails | None = ...,
        last_failed_fetch: global___FetchDetails | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["last_failed_fetch", b"last_failed_fetch", "last_successful_fetch", b"last_successful_fetch", "ongoing_fetch", b"ongoing_fetch"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["last_failed_fetch", b"last_failed_fetch", "last_successful_fetch", b"last_successful_fetch", "ongoing_fetch", b"ongoing_fetch"]) -> None: ...

global___RuntimeExtensionFetchOutput = RuntimeExtensionFetchOutput

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

    NAME_FIELD_NUMBER: builtins.int
    BLOB_ID_FIELD_NUMBER: builtins.int
    name: builtins.str
    blob_id: builtins.str
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        blob_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["blob_id", b"blob_id", "name", b"name"]) -> None: ...

global___RuntimeExtensionGetInfoOutputContent = RuntimeExtensionGetInfoOutputContent

class RuntimeExtensionGetInfoDetails(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[RuntimeExtensionGetInfoDetails._Status.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: RuntimeExtensionGetInfoDetails._Status.ValueType  # 0
        CONVERGED: RuntimeExtensionGetInfoDetails._Status.ValueType  # 1
        FAILED: RuntimeExtensionGetInfoDetails._Status.ValueType  # 2

    class Status(_Status, metaclass=_StatusEnumTypeWrapper): ...
    UNKNOWN: RuntimeExtensionGetInfoDetails.Status.ValueType  # 0
    CONVERGED: RuntimeExtensionGetInfoDetails.Status.ValueType  # 1
    FAILED: RuntimeExtensionGetInfoDetails.Status.ValueType  # 2

    SYSTEM_MESSAGE_FIELD_NUMBER: builtins.int
    CONTENTS_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    STARTED_TIMESTAMP_FIELD_NUMBER: builtins.int
    COMPLETED_TIMESTAMP_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    system_message: builtins.str
    """system message generated by prodvana"""
    @property
    def contents(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RuntimeExtensionGetInfoOutputContent]:
        """output from user process"""
    status: global___RuntimeExtensionGetInfoDetails.Status.ValueType
    @property
    def started_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when the debug job started"""
    @property
    def completed_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when the debug job completed"""
    version: builtins.str
    """the version of the service associated with this debug run"""
    def __init__(
        self,
        *,
        system_message: builtins.str = ...,
        contents: collections.abc.Iterable[global___RuntimeExtensionGetInfoOutputContent] | None = ...,
        status: global___RuntimeExtensionGetInfoDetails.Status.ValueType = ...,
        started_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        completed_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        version: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["completed_timestamp", b"completed_timestamp", "started_timestamp", b"started_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["completed_timestamp", b"completed_timestamp", "contents", b"contents", "started_timestamp", b"started_timestamp", "status", b"status", "system_message", b"system_message", "version", b"version"]) -> None: ...

global___RuntimeExtensionGetInfoDetails = RuntimeExtensionGetInfoDetails

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

    GET_INFO_DETAILS_FIELD_NUMBER: builtins.int
    @property
    def get_info_details(self) -> global___RuntimeExtensionGetInfoDetails: ...
    def __init__(
        self,
        *,
        get_info_details: global___RuntimeExtensionGetInfoDetails | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["get_info_details", b"get_info_details"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["get_info_details", b"get_info_details"]) -> None: ...

global___RuntimeExtensionGetInfoOutput = RuntimeExtensionGetInfoOutput

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

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

    class _ApplyStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ApplyDetails._ApplyStatus.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: ApplyDetails._ApplyStatus.ValueType  # 0
        CONVERGED: ApplyDetails._ApplyStatus.ValueType  # 1
        FAILED: ApplyDetails._ApplyStatus.ValueType  # 2
        RETRYABLE: ApplyDetails._ApplyStatus.ValueType  # 3

    class ApplyStatus(_ApplyStatus, metaclass=_ApplyStatusEnumTypeWrapper): ...
    UNKNOWN: ApplyDetails.ApplyStatus.ValueType  # 0
    CONVERGED: ApplyDetails.ApplyStatus.ValueType  # 1
    FAILED: ApplyDetails.ApplyStatus.ValueType  # 2
    RETRYABLE: ApplyDetails.ApplyStatus.ValueType  # 3

    STARTED_TIMESTAMP_FIELD_NUMBER: builtins.int
    COMPLETED_TIMESTAMP_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    APPLY_STATUS_FIELD_NUMBER: builtins.int
    FETCH_DETAILS_FIELD_NUMBER: builtins.int
    @property
    def started_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when the apply job started"""
    @property
    def completed_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when the apply job completed"""
    version: builtins.str
    """the version of the service associated with this apply run"""
    apply_status: global___ApplyDetails.ApplyStatus.ValueType
    @property
    def fetch_details(self) -> global___FetchDetails:
        """the fetch details used for this particular apply, including any plan id"""
    def __init__(
        self,
        *,
        started_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        completed_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        version: builtins.str = ...,
        apply_status: global___ApplyDetails.ApplyStatus.ValueType = ...,
        fetch_details: global___FetchDetails | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["completed_timestamp", b"completed_timestamp", "fetch_details", b"fetch_details", "started_timestamp", b"started_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["apply_status", b"apply_status", "completed_timestamp", b"completed_timestamp", "fetch_details", b"fetch_details", "started_timestamp", b"started_timestamp", "version", b"version"]) -> None: ...

global___ApplyDetails = ApplyDetails

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

    ONGOING_APPLY_FIELD_NUMBER: builtins.int
    LAST_APPLY_FIELD_NUMBER: builtins.int
    @property
    def ongoing_apply(self) -> global___ApplyDetails:
        """details of an actively executing apply, may be null if no apply is currently executing"""
    @property
    def last_apply(self) -> global___ApplyDetails:
        """details of the last apply that completed, may be null if no apply has ever executed"""
    def __init__(
        self,
        *,
        ongoing_apply: global___ApplyDetails | None = ...,
        last_apply: global___ApplyDetails | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["last_apply", b"last_apply", "ongoing_apply", b"ongoing_apply"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["last_apply", b"last_apply", "ongoing_apply", b"ongoing_apply"]) -> None: ...

global___RuntimeExtensionApplyOutput = RuntimeExtensionApplyOutput

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

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

    class _LinkTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ExternalLink._LinkType.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: ExternalLink._LinkType.ValueType  # 0
        DETAIL: ExternalLink._LinkType.ValueType  # 1
        LOG: ExternalLink._LinkType.ValueType  # 2

    class LinkType(_LinkType, metaclass=_LinkTypeEnumTypeWrapper): ...
    UNKNOWN: ExternalLink.LinkType.ValueType  # 0
    DETAIL: ExternalLink.LinkType.ValueType  # 1
    LOG: ExternalLink.LinkType.ValueType  # 2

    TYPE_FIELD_NUMBER: builtins.int
    URL_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    type: global___ExternalLink.LinkType.ValueType
    url: builtins.str
    name: builtins.str
    def __init__(
        self,
        *,
        type: global___ExternalLink.LinkType.ValueType = ...,
        url: builtins.str = ...,
        name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "type", b"type", "url", b"url"]) -> None: ...

global___ExternalLink = ExternalLink

class RuntimeObject(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[RuntimeObject._Status.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        PENDING: RuntimeObject._Status.ValueType  # 0
        SUCCEEDED: RuntimeObject._Status.ValueType  # 1
        FAILED: RuntimeObject._Status.ValueType  # 2

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

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

    class _ManagementStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[RuntimeObject._ManagementStatus.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        PVN_MANAGED: RuntimeObject._ManagementStatus.ValueType  # 0
        UNMANAGED: RuntimeObject._ManagementStatus.ValueType  # 1

    class ManagementStatus(_ManagementStatus, metaclass=_ManagementStatusEnumTypeWrapper): ...
    PVN_MANAGED: RuntimeObject.ManagementStatus.ValueType  # 0
    UNMANAGED: RuntimeObject.ManagementStatus.ValueType  # 1

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

        APPLY_FIELD_NUMBER: builtins.int
        FETCH_FIELD_NUMBER: builtins.int
        GET_INFO_FIELD_NUMBER: builtins.int
        FETCH_INTERVAL_FIELD_NUMBER: builtins.int
        FETCH_STEADY_STATE_INTERVAL_FIELD_NUMBER: builtins.int
        GET_INFO_INTERVAL_FIELD_NUMBER: builtins.int
        SERVICE_ID_FIELD_NUMBER: builtins.int
        RELEASE_CHANNEL_ID_FIELD_NUMBER: builtins.int
        PARAMETERS_FIELD_NUMBER: builtins.int
        PARAMETER_VALUES_FIELD_NUMBER: builtins.int
        TYPE_FIELD_NUMBER: builtins.int
        FETCH_OUTPUT_FIELD_NUMBER: builtins.int
        GET_INFO_OUTPUT_FIELD_NUMBER: builtins.int
        APPLY_OUTPUT_FIELD_NUMBER: builtins.int
        FETCH_RETRY_POLICY_FIELD_NUMBER: builtins.int
        APPLY_RETRY_POLICY_FIELD_NUMBER: builtins.int
        GET_INFO_RETRY_POLICY_FIELD_NUMBER: builtins.int
        APPLY_RETRYABLE_EXIT_CODES_FIELD_NUMBER: builtins.int
        @property
        def apply(self) -> prodvana.proto.prodvana.environment.clusters_pb2.CompiledExtensionCommand:
            """aggregate object will have all commands set. fetch and get_info will only have appropriate commands set."""
        @property
        def fetch(self) -> prodvana.proto.prodvana.environment.clusters_pb2.CompiledExtensionCommand: ...
        @property
        def get_info(self) -> prodvana.proto.prodvana.environment.clusters_pb2.CompiledExtensionCommand: ...
        @property
        def fetch_interval(self) -> google.protobuf.duration_pb2.Duration: ...
        @property
        def fetch_steady_state_interval(self) -> google.protobuf.duration_pb2.Duration: ...
        @property
        def get_info_interval(self) -> google.protobuf.duration_pb2.Duration: ...
        service_id: builtins.str
        release_channel_id: builtins.str
        @property
        def parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition]: ...
        @property
        def parameter_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterValue]: ...
        type: prodvana.proto.prodvana.environment.clusters_pb2.ExtensionType.ValueType
        @property
        def fetch_output(self) -> global___RuntimeExtensionFetchOutput: ...
        @property
        def get_info_output(self) -> global___RuntimeExtensionGetInfoOutput: ...
        @property
        def apply_output(self) -> global___RuntimeExtensionApplyOutput: ...
        @property
        def fetch_retry_policy(self) -> prodvana.proto.prodvana.environment.clusters_pb2.RetryPolicy: ...
        @property
        def apply_retry_policy(self) -> prodvana.proto.prodvana.environment.clusters_pb2.RetryPolicy: ...
        @property
        def get_info_retry_policy(self) -> prodvana.proto.prodvana.environment.clusters_pb2.RetryPolicy: ...
        @property
        def apply_retryable_exit_codes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
        def __init__(
            self,
            *,
            apply: prodvana.proto.prodvana.environment.clusters_pb2.CompiledExtensionCommand | None = ...,
            fetch: prodvana.proto.prodvana.environment.clusters_pb2.CompiledExtensionCommand | None = ...,
            get_info: prodvana.proto.prodvana.environment.clusters_pb2.CompiledExtensionCommand | None = ...,
            fetch_interval: google.protobuf.duration_pb2.Duration | None = ...,
            fetch_steady_state_interval: google.protobuf.duration_pb2.Duration | None = ...,
            get_info_interval: google.protobuf.duration_pb2.Duration | None = ...,
            service_id: builtins.str = ...,
            release_channel_id: builtins.str = ...,
            parameters: collections.abc.Iterable[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition] | None = ...,
            parameter_values: collections.abc.Iterable[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterValue] | None = ...,
            type: prodvana.proto.prodvana.environment.clusters_pb2.ExtensionType.ValueType = ...,
            fetch_output: global___RuntimeExtensionFetchOutput | None = ...,
            get_info_output: global___RuntimeExtensionGetInfoOutput | None = ...,
            apply_output: global___RuntimeExtensionApplyOutput | None = ...,
            fetch_retry_policy: prodvana.proto.prodvana.environment.clusters_pb2.RetryPolicy | None = ...,
            apply_retry_policy: prodvana.proto.prodvana.environment.clusters_pb2.RetryPolicy | None = ...,
            get_info_retry_policy: prodvana.proto.prodvana.environment.clusters_pb2.RetryPolicy | None = ...,
            apply_retryable_exit_codes: collections.abc.Iterable[builtins.int] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["apply", b"apply", "apply_output", b"apply_output", "apply_retry_policy", b"apply_retry_policy", "fetch", b"fetch", "fetch_interval", b"fetch_interval", "fetch_output", b"fetch_output", "fetch_retry_policy", b"fetch_retry_policy", "fetch_steady_state_interval", b"fetch_steady_state_interval", "get_info", b"get_info", "get_info_interval", b"get_info_interval", "get_info_output", b"get_info_output", "get_info_retry_policy", b"get_info_retry_policy"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["apply", b"apply", "apply_output", b"apply_output", "apply_retry_policy", b"apply_retry_policy", "apply_retryable_exit_codes", b"apply_retryable_exit_codes", "fetch", b"fetch", "fetch_interval", b"fetch_interval", "fetch_output", b"fetch_output", "fetch_retry_policy", b"fetch_retry_policy", "fetch_steady_state_interval", b"fetch_steady_state_interval", "get_info", b"get_info", "get_info_interval", b"get_info_interval", "get_info_output", b"get_info_output", "get_info_retry_policy", b"get_info_retry_policy", "parameter_values", b"parameter_values", "parameters", b"parameters", "release_channel_id", b"release_channel_id", "service_id", b"service_id", "type", b"type"]) -> None: ...

    META_FIELD_NUMBER: builtins.int
    OBJECT_TYPE_FIELD_NUMBER: builtins.int
    NAMESPACE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    GENERATE_NAME_FIELD_NUMBER: builtins.int
    VERSIONS_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    ROLLBACK_VERSION_FIELD_NUMBER: builtins.int
    DELIVERY_FIELD_NUMBER: builtins.int
    VERSION_AGNOSTIC_FIELD_NUMBER: builtins.int
    DESIRED_VERSION_DIRTY_ONLY_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    RUNTIME_EXTENSION_FIELD_NUMBER: builtins.int
    INTERVAL_FIELD_NUMBER: builtins.int
    STEADY_STATE_INTERVAL_FIELD_NUMBER: builtins.int
    OUTPUT_BLOB_IDS_FIELD_NUMBER: builtins.int
    EXIT_CODES_FIELD_NUMBER: builtins.int
    REQUIRE_APPROVAL_BEFORE_APPLY_FIELD_NUMBER: builtins.int
    RAW_CONFIG_FIELD_NUMBER: builtins.int
    MANAGEMENT_STATUS_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_TASK_RUN_FIELD_NUMBER: builtins.int
    EXTERNAL_LINKS_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    object_type: builtins.str
    namespace: builtins.str
    name: builtins.str
    generate_name: builtins.str
    """if set, this runtime object will have a name that is generated at creation time, by the runtime implementation"""
    @property
    def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Version]: ...
    status: global___RuntimeObject.Status.ValueType
    @property
    def rollback_version(self) -> global___Version: ...
    @property
    def delivery(self) -> global___DeliveryState: ...
    version_agnostic: builtins.bool
    """This object just needs to exist - it doesn't change from version to version"""
    desired_version_dirty_only: builtins.bool
    """when checking for whether or not to apply, only use the desired version and check if it's active and not dirty. that is, active && at desired version && dirty = hasWork, no work otherwise."""
    message: builtins.str
    """Human readable message (typically for errors)."""
    @property
    def runtime_extension(self) -> global___RuntimeObject.RuntimeExtension:
        """additional config if this runtime object belongs to a runtime extension"""
    @property
    def interval(self) -> google.protobuf.duration_pb2.Duration:
        """if set, runtime object is continuously applied instead of being done once when there is a version mismatch"""
    @property
    def steady_state_interval(self) -> google.protobuf.duration_pb2.Duration: ...
    @property
    def output_blob_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """output_blob_ids and exit_codes are in the same order, assuming output is saved
        if output is saved, this is the ID of the blob to retrieve it, only for run-to-completion objects.
        """
    @property
    def exit_codes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """exit codes, only for run-to-completion objects like jobs"""
    require_approval_before_apply: builtins.bool
    raw_config: builtins.str
    """raw runtime-specific config, e.g. k8s yaml"""
    management_status: global___RuntimeObject.ManagementStatus.ValueType
    @property
    def last_completed_task_run(self) -> global___TaskRun:
        """For entities that run jobs/tasks multiple times, what is the most recent status we have?"""
    @property
    def external_links(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ExternalLink]: ...
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        object_type: builtins.str = ...,
        namespace: builtins.str = ...,
        name: builtins.str = ...,
        generate_name: builtins.str = ...,
        versions: collections.abc.Iterable[global___Version] | None = ...,
        status: global___RuntimeObject.Status.ValueType = ...,
        rollback_version: global___Version | None = ...,
        delivery: global___DeliveryState | None = ...,
        version_agnostic: builtins.bool = ...,
        desired_version_dirty_only: builtins.bool = ...,
        message: builtins.str = ...,
        runtime_extension: global___RuntimeObject.RuntimeExtension | None = ...,
        interval: google.protobuf.duration_pb2.Duration | None = ...,
        steady_state_interval: google.protobuf.duration_pb2.Duration | None = ...,
        output_blob_ids: collections.abc.Iterable[builtins.str] | None = ...,
        exit_codes: collections.abc.Iterable[builtins.int] | None = ...,
        require_approval_before_apply: builtins.bool = ...,
        raw_config: builtins.str = ...,
        management_status: global___RuntimeObject.ManagementStatus.ValueType = ...,
        last_completed_task_run: global___TaskRun | None = ...,
        external_links: collections.abc.Iterable[global___ExternalLink] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["delivery", b"delivery", "interval", b"interval", "last_completed_task_run", b"last_completed_task_run", "meta", b"meta", "rollback_version", b"rollback_version", "runtime_extension", b"runtime_extension", "steady_state_interval", b"steady_state_interval"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["delivery", b"delivery", "desired_version_dirty_only", b"desired_version_dirty_only", "exit_codes", b"exit_codes", "external_links", b"external_links", "generate_name", b"generate_name", "interval", b"interval", "last_completed_task_run", b"last_completed_task_run", "management_status", b"management_status", "message", b"message", "meta", b"meta", "name", b"name", "namespace", b"namespace", "object_type", b"object_type", "output_blob_ids", b"output_blob_ids", "raw_config", b"raw_config", "require_approval_before_apply", b"require_approval_before_apply", "rollback_version", b"rollback_version", "runtime_extension", b"runtime_extension", "status", b"status", "steady_state_interval", b"steady_state_interval", "version_agnostic", b"version_agnostic", "versions", b"versions"]) -> None: ...

global___RuntimeObject = RuntimeObject

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

    STATUS_FIELD_NUMBER: builtins.int
    status: global___ConditionStatus.ValueType
    def __init__(
        self,
        *,
        status: global___ConditionStatus.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ...

global___ConditionState = ConditionState

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

    ROLLBACK_FIELD_NUMBER: builtins.int
    PRECONDITION_STATES_FIELD_NUMBER: builtins.int
    INVARIANT_STATES_FIELD_NUMBER: builtins.int
    PAUSED_FIELD_NUMBER: builtins.int
    STATUS_EXPLANATIONS_FIELD_NUMBER: builtins.int
    ACTION_EXPLANATION_FIELD_NUMBER: builtins.int
    LAST_FETCHED_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_APPLIED_TIMESTAMP_FIELD_NUMBER: builtins.int
    MISSING_APPROVAL_FIELD_NUMBER: builtins.int
    OBSERVER_MODE_FIELD_NUMBER: builtins.int
    rollback: builtins.bool
    @property
    def precondition_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConditionState]: ...
    @property
    def invariant_states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConditionState]: ...
    paused: builtins.bool
    """An entity is paused if itself or any of its ancestors have paused field set.
    Unlike rollback, this field does not get propagated to children.
    Doing so would make to differentiate unpausing vs. the field not being set,
    especially if pausing can happen at any layer.
    """
    @property
    def status_explanations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StatusExplanation]:
        """explanation for current status, will have more than one in the event multiple children have the same status"""
    @property
    def action_explanation(self) -> global___ActionExplanation:
        """What is DD doing now?"""
    @property
    def last_fetched_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def last_applied_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def missing_approval(self) -> global___MissingApproval: ...
    observer_mode: builtins.bool
    def __init__(
        self,
        *,
        rollback: builtins.bool = ...,
        precondition_states: collections.abc.Iterable[global___ConditionState] | None = ...,
        invariant_states: collections.abc.Iterable[global___ConditionState] | None = ...,
        paused: builtins.bool = ...,
        status_explanations: collections.abc.Iterable[global___StatusExplanation] | None = ...,
        action_explanation: global___ActionExplanation | None = ...,
        last_fetched_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_applied_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        missing_approval: global___MissingApproval | None = ...,
        observer_mode: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["action_explanation", b"action_explanation", "last_applied_timestamp", b"last_applied_timestamp", "last_fetched_timestamp", b"last_fetched_timestamp", "missing_approval", b"missing_approval"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["action_explanation", b"action_explanation", "invariant_states", b"invariant_states", "last_applied_timestamp", b"last_applied_timestamp", "last_fetched_timestamp", b"last_fetched_timestamp", "missing_approval", b"missing_approval", "observer_mode", b"observer_mode", "paused", b"paused", "precondition_states", b"precondition_states", "rollback", b"rollback", "status_explanations", b"status_explanations"]) -> None: ...

global___ControlState = ControlState

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

    META_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    TOPIC_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    status: global___ManualApprovalStatus.ValueType
    topic: builtins.str
    description: builtins.str
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        status: global___ManualApprovalStatus.ValueType = ...,
        topic: builtins.str = ...,
        description: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["meta", b"meta"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "meta", b"meta", "status", b"status", "topic", b"topic"]) -> None: ...

global___ManualApprovalState = ManualApprovalState

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

    SERVICE_FIELD_NUMBER: builtins.int
    SERVICE_INSTANCE_FIELD_NUMBER: builtins.int
    SERVICE_GROUP_FIELD_NUMBER: builtins.int
    RUNTIME_OBJECT_FIELD_NUMBER: builtins.int
    MANUAL_APPROVAL_FIELD_NUMBER: builtins.int
    CUSTOM_TASK_FIELD_NUMBER: builtins.int
    PROTECTION_ATTACHMENT_FIELD_NUMBER: builtins.int
    PROTECTION_LINK_FIELD_NUMBER: builtins.int
    DELIVERY_EXTENSION_FIELD_NUMBER: builtins.int
    @property
    def service(self) -> global___ServiceState: ...
    @property
    def service_instance(self) -> global___ServiceInstanceState: ...
    @property
    def service_group(self) -> global___ServiceGroupState: ...
    @property
    def runtime_object(self) -> global___RuntimeObject: ...
    @property
    def manual_approval(self) -> global___ManualApprovalState: ...
    @property
    def custom_task(self) -> global___CustomTaskState: ...
    @property
    def protection_attachment(self) -> global___ProtectionAttachment: ...
    @property
    def protection_link(self) -> global___ProtectionLinkState: ...
    @property
    def delivery_extension(self) -> global___DeliveryExtensionState: ...
    def __init__(
        self,
        *,
        service: global___ServiceState | None = ...,
        service_instance: global___ServiceInstanceState | None = ...,
        service_group: global___ServiceGroupState | None = ...,
        runtime_object: global___RuntimeObject | None = ...,
        manual_approval: global___ManualApprovalState | None = ...,
        custom_task: global___CustomTaskState | None = ...,
        protection_attachment: global___ProtectionAttachment | None = ...,
        protection_link: global___ProtectionLinkState | None = ...,
        delivery_extension: global___DeliveryExtensionState | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["custom_task", b"custom_task", "delivery_extension", b"delivery_extension", "manual_approval", b"manual_approval", "protection_attachment", b"protection_attachment", "protection_link", b"protection_link", "runtime_object", b"runtime_object", "service", b"service", "service_group", b"service_group", "service_instance", b"service_instance", "state_oneof", b"state_oneof"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["custom_task", b"custom_task", "delivery_extension", b"delivery_extension", "manual_approval", b"manual_approval", "protection_attachment", b"protection_attachment", "protection_link", b"protection_link", "runtime_object", b"runtime_object", "service", b"service", "service_group", b"service_group", "service_instance", b"service_instance", "state_oneof", b"state_oneof"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["state_oneof", b"state_oneof"]) -> typing_extensions.Literal["service", "service_instance", "service_group", "runtime_object", "manual_approval", "custom_task", "protection_attachment", "protection_link", "delivery_extension"] | None: ...

global___State = State

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

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

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

global___Annotations = Annotations

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

    STATUS_FIELD_NUMBER: builtins.int
    ATTEMPTS_FIELD_NUMBER: builtins.int
    LATEST_ATTEMPT_END_TIMESTAMP_FIELD_NUMBER: builtins.int
    status: global___CustomTaskStatus.ValueType
    attempts: builtins.int
    @property
    def latest_attempt_end_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        status: global___CustomTaskStatus.ValueType = ...,
        attempts: builtins.int = ...,
        latest_attempt_end_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["latest_attempt_end_timestamp", b"latest_attempt_end_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["attempts", b"attempts", "latest_attempt_end_timestamp", b"latest_attempt_end_timestamp", "status", b"status"]) -> None: ...

global___CustomTaskExecutionState = CustomTaskExecutionState

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

    META_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    APPLICATION_FIELD_NUMBER: builtins.int
    APPLICATION_ID_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_ID_FIELD_NUMBER: builtins.int
    PROGRAM_FIELD_NUMBER: builtins.int
    TASK_STATE_FIELD_NUMBER: builtins.int
    RETRY_CONFIG_FIELD_NUMBER: builtins.int
    SERVICE_IDS_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    name: builtins.str
    description: builtins.str
    application: builtins.str
    application_id: builtins.str
    release_channel: builtins.str
    release_channel_id: builtins.str
    @property
    def program(self) -> prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig: ...
    @property
    def task_state(self) -> global___CustomTaskExecutionState: ...
    @property
    def retry_config(self) -> prodvana.proto.prodvana.common_config.retry_pb2.RetryConfig:
        """if not set, the custom task will not be retried once it starts executing once."""
    @property
    def service_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        name: builtins.str = ...,
        description: builtins.str = ...,
        application: builtins.str = ...,
        application_id: builtins.str = ...,
        release_channel: builtins.str = ...,
        release_channel_id: builtins.str = ...,
        program: prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig | None = ...,
        task_state: global___CustomTaskExecutionState | None = ...,
        retry_config: prodvana.proto.prodvana.common_config.retry_pb2.RetryConfig | None = ...,
        service_ids: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "program", b"program", "retry_config", b"retry_config", "task_state", b"task_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "application_id", b"application_id", "description", b"description", "meta", b"meta", "name", b"name", "program", b"program", "release_channel", b"release_channel", "release_channel_id", b"release_channel_id", "retry_config", b"retry_config", "service_ids", b"service_ids", "task_state", b"task_state"]) -> None: ...

global___CustomTaskState = CustomTaskState

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

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

    class _StopReasonEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ProtectionLinkState._StopReason.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: ProtectionLinkState._StopReason.ValueType  # 0
        LIFECYCLE_COMPLETED: ProtectionLinkState._StopReason.ValueType  # 1
        SUCCEEDED_ONCE: ProtectionLinkState._StopReason.ValueType  # 2
        SUCCEEDED_FOR_DURATION: ProtectionLinkState._StopReason.ValueType  # 3
        TIMED_OUT: ProtectionLinkState._StopReason.ValueType  # 4
        FAILED: ProtectionLinkState._StopReason.ValueType  # 5
        DELETED: ProtectionLinkState._StopReason.ValueType  # 6
        MANUALLY_BYPASSED: ProtectionLinkState._StopReason.ValueType  # 7

    class StopReason(_StopReason, metaclass=_StopReasonEnumTypeWrapper): ...
    UNKNOWN: ProtectionLinkState.StopReason.ValueType  # 0
    LIFECYCLE_COMPLETED: ProtectionLinkState.StopReason.ValueType  # 1
    SUCCEEDED_ONCE: ProtectionLinkState.StopReason.ValueType  # 2
    SUCCEEDED_FOR_DURATION: ProtectionLinkState.StopReason.ValueType  # 3
    TIMED_OUT: ProtectionLinkState.StopReason.ValueType  # 4
    FAILED: ProtectionLinkState.StopReason.ValueType  # 5
    DELETED: ProtectionLinkState.StopReason.ValueType  # 6
    MANUALLY_BYPASSED: ProtectionLinkState.StopReason.ValueType  # 7

    META_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    LINK_FIELD_NUMBER: builtins.int
    STARTED_TIMESTAMP_FIELD_NUMBER: builtins.int
    STOPPED_TIMESTAMP_FIELD_NUMBER: builtins.int
    STOPPED_REASON_FIELD_NUMBER: builtins.int
    FIRST_SUCCESS_TIMESTAMP_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    status: global___ConditionStatus.ValueType
    @property
    def link(self) -> global___ProtectionLink:
        """Copy of ProtectionLink description. Used in FetchState to know retries, durations etc."""
    @property
    def started_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """When did we start polling this protection? If not set, this protection has not started polling."""
    @property
    def stopped_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """When did we stop polling this protection? If set, this protection will no longer change status (except to be manually bypassed)."""
    stopped_reason: global___ProtectionLinkState.StopReason.ValueType
    @property
    def first_success_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Will be set the first time this attachment returned success.
        Useful for time-based protections (post-push - check X succeeds for N mins). We make the ProtectionLink return CONVERGING till time expires.
        """
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        status: global___ConditionStatus.ValueType = ...,
        link: global___ProtectionLink | None = ...,
        started_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        stopped_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        stopped_reason: global___ProtectionLinkState.StopReason.ValueType = ...,
        first_success_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["first_success_timestamp", b"first_success_timestamp", "link", b"link", "meta", b"meta", "started_timestamp", b"started_timestamp", "stopped_timestamp", b"stopped_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["first_success_timestamp", b"first_success_timestamp", "link", b"link", "meta", b"meta", "started_timestamp", b"started_timestamp", "status", b"status", "stopped_reason", b"stopped_reason", "stopped_timestamp", b"stopped_timestamp"]) -> None: ...

global___ProtectionLinkState = ProtectionLinkState

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

    META_FIELD_NUMBER: builtins.int
    VERSIONS_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_VERSIONS_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_STATUS_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_STATUS_EXPLANATIONS_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_APPLIED_VERSION_FIELD_NUMBER: builtins.int
    PROTECTION_ID_FIELD_NUMBER: builtins.int
    ATTACHMENT_ID_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    @property
    def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Version]: ...
    @property
    def last_completed_versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Version]: ...
    @property
    def last_completed_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    last_completed_status: global___SimpleStatus.ValueType
    @property
    def last_completed_status_explanations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StatusExplanation]: ...
    last_completed_applied_version: builtins.str
    protection_id: builtins.str
    attachment_id: builtins.str
    """next tag: 9"""
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        versions: collections.abc.Iterable[global___Version] | None = ...,
        last_completed_versions: collections.abc.Iterable[global___Version] | None = ...,
        last_completed_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_completed_status: global___SimpleStatus.ValueType = ...,
        last_completed_status_explanations: collections.abc.Iterable[global___StatusExplanation] | None = ...,
        last_completed_applied_version: builtins.str = ...,
        protection_id: builtins.str = ...,
        attachment_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["last_completed_timestamp", b"last_completed_timestamp", "meta", b"meta"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["attachment_id", b"attachment_id", "last_completed_applied_version", b"last_completed_applied_version", "last_completed_status", b"last_completed_status", "last_completed_status_explanations", b"last_completed_status_explanations", "last_completed_timestamp", b"last_completed_timestamp", "last_completed_versions", b"last_completed_versions", "meta", b"meta", "protection_id", b"protection_id", "versions", b"versions"]) -> None: ...

global___ProtectionAttachment = ProtectionAttachment

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

    META_FIELD_NUMBER: builtins.int
    VERSIONS_FIELD_NUMBER: builtins.int
    EXTENSION_ID_FIELD_NUMBER: builtins.int
    EXTENSION_INSTANCE_ID_FIELD_NUMBER: builtins.int
    LIFECYCLE_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_STATUS_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_STATUS_EXPLANATIONS_FIELD_NUMBER: builtins.int
    LAST_COMPLETED_APPLIED_VERSION_FIELD_NUMBER: builtins.int
    REFERENCES_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> global___Metadata: ...
    @property
    def versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Version]: ...
    extension_id: builtins.str
    extension_instance_id: builtins.str
    lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType
    @property
    def last_completed_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    last_completed_status: global___SimpleStatus.ValueType
    @property
    def last_completed_status_explanations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StatusExplanation]: ...
    last_completed_applied_version: builtins.str
    @property
    def references(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Identifier]: ...
    status: global___ConditionStatus.ValueType
    """next tag: 14"""
    def __init__(
        self,
        *,
        meta: global___Metadata | None = ...,
        versions: collections.abc.Iterable[global___Version] | None = ...,
        extension_id: builtins.str = ...,
        extension_instance_id: builtins.str = ...,
        lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType = ...,
        last_completed_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_completed_status: global___SimpleStatus.ValueType = ...,
        last_completed_status_explanations: collections.abc.Iterable[global___StatusExplanation] | None = ...,
        last_completed_applied_version: builtins.str = ...,
        references: collections.abc.Iterable[global___Identifier] | None = ...,
        status: global___ConditionStatus.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["last_completed_timestamp", b"last_completed_timestamp", "meta", b"meta"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["extension_id", b"extension_id", "extension_instance_id", b"extension_instance_id", "last_completed_applied_version", b"last_completed_applied_version", "last_completed_status", b"last_completed_status", "last_completed_status_explanations", b"last_completed_status_explanations", "last_completed_timestamp", b"last_completed_timestamp", "lifecycle", b"lifecycle", "meta", b"meta", "references", b"references", "status", b"status", "versions", b"versions"]) -> None: ...

global___DeliveryExtensionState = DeliveryExtensionState

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

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

        STAGE_FIELD_NUMBER: builtins.int
        FULL_FIELD_NUMBER: builtins.int
        stage: builtins.int
        """which canary progress stage to promote"""
        full: builtins.bool
        """when true, indicates delivery should be promoted fully, e.g. 100%"""
        def __init__(
            self,
            *,
            stage: builtins.int = ...,
            full: builtins.bool = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["full", b"full", "stage", b"stage"]) -> None: ...

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

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

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

        TIMESTAMP_FIELD_NUMBER: builtins.int
        REJECT_FIELD_NUMBER: builtins.int
        PLAN_BLOB_ID_FIELD_NUMBER: builtins.int
        @property
        def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
            """When was the approval issued?
            If this is after last run timestamp, apply can proceed.
            """
        reject: builtins.bool
        plan_blob_id: builtins.str
        """if set, approve specifically for this plan"""
        def __init__(
            self,
            *,
            timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
            reject: builtins.bool = ...,
            plan_blob_id: builtins.str = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["timestamp", b"timestamp"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["plan_blob_id", b"plan_blob_id", "reject", b"reject", "timestamp", b"timestamp"]) -> None: ...

    TYPE_FIELD_NUMBER: builtins.int
    DELIVERY_PROMOTION_FIELD_NUMBER: builtins.int
    PROTECTION_BYPASS_FIELD_NUMBER: builtins.int
    RUNTIME_EXTENSION_APPROVAL_FIELD_NUMBER: builtins.int
    type: global___SignalType.ValueType
    @property
    def delivery_promotion(self) -> global___Signal.DeliveryPromotionConfig: ...
    @property
    def protection_bypass(self) -> global___Signal.ProtectionBypass: ...
    @property
    def runtime_extension_approval(self) -> global___Signal.RuntimeExtensionApproval: ...
    def __init__(
        self,
        *,
        type: global___SignalType.ValueType = ...,
        delivery_promotion: global___Signal.DeliveryPromotionConfig | None = ...,
        protection_bypass: global___Signal.ProtectionBypass | None = ...,
        runtime_extension_approval: global___Signal.RuntimeExtensionApproval | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config", "delivery_promotion", b"delivery_promotion", "protection_bypass", b"protection_bypass", "runtime_extension_approval", b"runtime_extension_approval"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "delivery_promotion", b"delivery_promotion", "protection_bypass", b"protection_bypass", "runtime_extension_approval", b"runtime_extension_approval", "type", b"type"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["config", b"config"]) -> typing_extensions.Literal["delivery_promotion", "protection_bypass", "runtime_extension_approval"] | None: ...

global___Signal = Signal

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

    TS_FIELD_NUMBER: builtins.int
    LOG_FIELD_NUMBER: builtins.int
    @property
    def ts(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    log: builtins.str
    def __init__(
        self,
        *,
        ts: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        log: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["ts", b"ts"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["log", b"log", "ts", b"ts"]) -> None: ...

global___DebugLog = DebugLog

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

    OUTPUT_FIELD_NUMBER: builtins.int
    APPLY_DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    @property
    def output(self) -> global___RuntimeExtensionFetchOutput:
        """the plan this approval is for, if any"""
    apply_desired_state_id: builtins.str
    def __init__(
        self,
        *,
        output: global___RuntimeExtensionFetchOutput | None = ...,
        apply_desired_state_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["output", b"output"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["apply_desired_state_id", b"apply_desired_state_id", "output", b"output"]) -> None: ...

global___RuntimeExtensionMetadata = RuntimeExtensionMetadata

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

    RUNTIME_EXTENSION_FIELD_NUMBER: builtins.int
    @property
    def runtime_extension(self) -> global___RuntimeExtensionMetadata: ...
    def __init__(
        self,
        *,
        runtime_extension: global___RuntimeExtensionMetadata | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config", "runtime_extension", b"runtime_extension"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "runtime_extension", b"runtime_extension"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["config", b"config"]) -> typing_extensions.Literal["runtime_extension"] | None: ...

global___ManualApprovalConfig = ManualApprovalConfig

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

    DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    SIGNAL_TYPE_FIELD_NUMBER: builtins.int
    TOPIC_FIELD_NUMBER: builtins.int
    RUNTIME_EXTENSION_FIELD_NUMBER: builtins.int
    CURRENT_FIELD_NUMBER: builtins.int
    desired_state_id: builtins.str
    signal_type: global___SignalType.ValueType
    topic: builtins.str
    @property
    def runtime_extension(self) -> global___RuntimeExtensionMetadata: ...
    current: builtins.bool
    def __init__(
        self,
        *,
        desired_state_id: builtins.str = ...,
        signal_type: global___SignalType.ValueType = ...,
        topic: builtins.str = ...,
        runtime_extension: global___RuntimeExtensionMetadata | None = ...,
        current: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["runtime_extension", b"runtime_extension"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["current", b"current", "desired_state_id", b"desired_state_id", "runtime_extension", b"runtime_extension", "signal_type", b"signal_type", "topic", b"topic"]) -> None: ...

global___MissingApproval = MissingApproval

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

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

        DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
        SIGNAL_TYPE_FIELD_NUMBER: builtins.int
        TOPIC_FIELD_NUMBER: builtins.int
        RUNTIME_EXTENSION_FIELD_NUMBER: builtins.int
        GENERATOR_DESIRED_STATE_IDS_FIELD_NUMBER: builtins.int
        desired_state_id: builtins.str
        signal_type: global___SignalType.ValueType
        topic: builtins.str
        @property
        def runtime_extension(self) -> global___RuntimeExtensionMetadata: ...
        @property
        def generator_desired_state_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
            """What created this missing approval?
            If any of these desired state ids have been superseded,
            this approval should be considered not current.
            """
        def __init__(
            self,
            *,
            desired_state_id: builtins.str = ...,
            signal_type: global___SignalType.ValueType = ...,
            topic: builtins.str = ...,
            runtime_extension: global___RuntimeExtensionMetadata | None = ...,
            generator_desired_state_ids: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["runtime_extension", b"runtime_extension"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["desired_state_id", b"desired_state_id", "generator_desired_state_ids", b"generator_desired_state_ids", "runtime_extension", b"runtime_extension", "signal_type", b"signal_type", "topic", b"topic"]) -> None: ...

    MISSING_APPROVAL_FIELD_NUMBER: builtins.int
    @property
    def missing_approval(self) -> global___ApplyConditionUnsatisfied.InternalMissingApproval:
        """Cannot apply because this entity requires additional approval.
        TODO: Add reasons like paused entities.
        """
    def __init__(
        self,
        *,
        missing_approval: global___ApplyConditionUnsatisfied.InternalMissingApproval | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["missing_approval", b"missing_approval", "reason", b"reason"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["missing_approval", b"missing_approval", "reason", b"reason"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["reason", b"reason"]) -> typing_extensions.Literal["missing_approval"] | None: ...

global___ApplyConditionUnsatisfied = ApplyConditionUnsatisfied

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

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

    class _PhaseEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[TaskRun._Phase.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        RUNNING: TaskRun._Phase.ValueType  # 0
        NOT_STARTED: TaskRun._Phase.ValueType  # 1

    class Phase(_Phase, metaclass=_PhaseEnumTypeWrapper): ...
    RUNNING: TaskRun.Phase.ValueType  # 0
    NOT_STARTED: TaskRun.Phase.ValueType  # 1

    STATUS_FIELD_NUMBER: builtins.int
    STATUS_EXPLANATIONS_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    SEEN_VERSIONS_FIELD_NUMBER: builtins.int
    STARTED_TIMESTAMP_FIELD_NUMBER: builtins.int
    COMPLETED_TIMESTAMP_FIELD_NUMBER: builtins.int
    OUTPUT_BLOB_IDS_FIELD_NUMBER: builtins.int
    EXIT_CODES_FIELD_NUMBER: builtins.int
    TASK_ENTITIES_FIELD_NUMBER: builtins.int
    FETCH_DETAILS_FIELD_NUMBER: builtins.int
    RETRYABLE_EXIT_CODES_FIELD_NUMBER: builtins.int
    RETRYABLE_FIELD_NUMBER: builtins.int
    PHASE_FIELD_NUMBER: builtins.int
    status: global___SimpleStatus.ValueType
    @property
    def status_explanations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___StatusExplanation]: ...
    version: builtins.str
    @property
    def seen_versions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Version]: ...
    @property
    def started_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def completed_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def output_blob_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """these fields are only populated for completed tasks"""
    @property
    def exit_codes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ...
    @property
    def task_entities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Identifier]:
        """all entities that make up the task"""
    @property
    def fetch_details(self) -> global___FetchDetails:
        """for runtime extension aggregate objects only, the fetch details used to start the task (will contain plan id)"""
    @property
    def retryable_exit_codes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """if there is any intersection between these and exit_codes, and the status is FAILED, then the retryable bit below will be
        set to true.
        """
    retryable: builtins.bool
    phase: global___TaskRun.Phase.ValueType
    """tasks are created first in the NOT_STARTED phase"""
    def __init__(
        self,
        *,
        status: global___SimpleStatus.ValueType = ...,
        status_explanations: collections.abc.Iterable[global___StatusExplanation] | None = ...,
        version: builtins.str = ...,
        seen_versions: collections.abc.Iterable[global___Version] | None = ...,
        started_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        completed_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        output_blob_ids: collections.abc.Iterable[builtins.str] | None = ...,
        exit_codes: collections.abc.Iterable[builtins.int] | None = ...,
        task_entities: collections.abc.Iterable[global___Identifier] | None = ...,
        fetch_details: global___FetchDetails | None = ...,
        retryable_exit_codes: collections.abc.Iterable[builtins.int] | None = ...,
        retryable: builtins.bool = ...,
        phase: global___TaskRun.Phase.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["completed_timestamp", b"completed_timestamp", "fetch_details", b"fetch_details", "started_timestamp", b"started_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["completed_timestamp", b"completed_timestamp", "exit_codes", b"exit_codes", "fetch_details", b"fetch_details", "output_blob_ids", b"output_blob_ids", "phase", b"phase", "retryable", b"retryable", "retryable_exit_codes", b"retryable_exit_codes", "seen_versions", b"seen_versions", "started_timestamp", b"started_timestamp", "status", b"status", "status_explanations", b"status_explanations", "task_entities", b"task_entities", "version", b"version"]) -> None: ...

global___TaskRun = TaskRun

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

    LAST_COMPLETED_RUN_FIELD_NUMBER: builtins.int
    LAST_RUN_FIELD_NUMBER: builtins.int
    IS_ACTIVE_FIELD_NUMBER: builtins.int
    @property
    def last_completed_run(self) -> global___TaskRun: ...
    @property
    def last_run(self) -> global___TaskRun: ...
    is_active: builtins.bool
    """Can this task be run, ignoring retry limits?
    This is used to prevent a task from starting to run in certain scenarios.
    """
    def __init__(
        self,
        *,
        last_completed_run: global___TaskRun | None = ...,
        last_run: global___TaskRun | None = ...,
        is_active: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["last_completed_run", b"last_completed_run", "last_run", b"last_run"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["is_active", b"is_active", "last_completed_run", b"last_completed_run", "last_run", b"last_run"]) -> None: ...

global___TaskEntityContext = TaskEntityContext
