"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.timestamp_pb2
import prodvana.proto.prodvana.common_config.task_pb2
import prodvana.proto.prodvana.desired_state.model.desired_state_pb2
import sys

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    ID_FIELD_NUMBER: builtins.int
    DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    ROOT_DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    ANNOTATIONS_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    SIMPLE_STATUS_FIELD_NUMBER: builtins.int
    STARTING_STATE_FIELD_NUMBER: builtins.int
    LAST_SEEN_STATE_FIELD_NUMBER: builtins.int
    DESIRED_STATE_FIELD_NUMBER: builtins.int
    TARGET_STATE_FIELD_NUMBER: builtins.int
    PRECONDITION_STATUSES_FIELD_NUMBER: builtins.int
    STATUS_EXPLANATIONS_FIELD_NUMBER: builtins.int
    LOGS_FIELD_NUMBER: builtins.int
    ACTION_EXPLANATION_FIELD_NUMBER: builtins.int
    LAST_UPDATE_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_FETCHED_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_APPLIED_TIMESTAMP_FIELD_NUMBER: builtins.int
    DEPENDENCIES_FIELD_NUMBER: builtins.int
    LIFECYCLE_FIELD_NUMBER: builtins.int
    MISSING_APPROVAL_FIELD_NUMBER: builtins.int
    @property
    def id(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Identifier: ...
    desired_state_id: builtins.str
    root_desired_state_id: builtins.str
    @property
    def annotations(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Annotations: ...
    status: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Status.ValueType
    simple_status: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.SimpleStatus.ValueType
    @property
    def starting_state(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State: ...
    @property
    def last_seen_state(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State: ...
    @property
    def desired_state(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State:
        """the state we want to get to before calling convergence complete"""
    @property
    def target_state(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State:
        """the state we are actually going to apply. when preconditions are met, target state = desired state, otherwise, target state = previous desired state"""
    @property
    def precondition_statuses(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.ConditionState]: ...
    @property
    def status_explanations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.StatusExplanation]: ...
    @property
    def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.DebugLog]: ...
    @property
    def action_explanation(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.ActionExplanation: ...
    @property
    def last_update_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when the entity state last changed"""
    @property
    def last_fetched_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when prodvana last fetched entity state, best effort"""
    @property
    def last_applied_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """when prodvana last applied state for this entity, best effort"""
    @property
    def dependencies(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Identifier]: ...
    lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType
    @property
    def missing_approval(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.MissingApproval:
        """next tag: 21"""
    def __init__(
        self,
        *,
        id: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Identifier | None = ...,
        desired_state_id: builtins.str = ...,
        root_desired_state_id: builtins.str = ...,
        annotations: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Annotations | None = ...,
        status: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Status.ValueType = ...,
        simple_status: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.SimpleStatus.ValueType = ...,
        starting_state: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State | None = ...,
        last_seen_state: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State | None = ...,
        desired_state: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State | None = ...,
        target_state: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.State | None = ...,
        precondition_statuses: collections.abc.Iterable[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.ConditionState] | None = ...,
        status_explanations: collections.abc.Iterable[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.StatusExplanation] | None = ...,
        logs: collections.abc.Iterable[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.DebugLog] | None = ...,
        action_explanation: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.ActionExplanation | None = ...,
        last_update_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_fetched_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_applied_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        dependencies: collections.abc.Iterable[prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Identifier] | None = ...,
        lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType = ...,
        missing_approval: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.MissingApproval | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["action_explanation", b"action_explanation", "annotations", b"annotations", "desired_state", b"desired_state", "id", b"id", "last_applied_timestamp", b"last_applied_timestamp", "last_fetched_timestamp", b"last_fetched_timestamp", "last_seen_state", b"last_seen_state", "last_update_timestamp", b"last_update_timestamp", "missing_approval", b"missing_approval", "starting_state", b"starting_state", "target_state", b"target_state"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["action_explanation", b"action_explanation", "annotations", b"annotations", "dependencies", b"dependencies", "desired_state", b"desired_state", "desired_state_id", b"desired_state_id", "id", b"id", "last_applied_timestamp", b"last_applied_timestamp", "last_fetched_timestamp", b"last_fetched_timestamp", "last_seen_state", b"last_seen_state", "last_update_timestamp", b"last_update_timestamp", "lifecycle", b"lifecycle", "logs", b"logs", "missing_approval", b"missing_approval", "precondition_statuses", b"precondition_statuses", "root_desired_state_id", b"root_desired_state_id", "simple_status", b"simple_status", "starting_state", b"starting_state", "status", b"status", "status_explanations", b"status_explanations", "target_state", b"target_state"]) -> None: ...

global___Entity = Entity

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

    ROOT_FIELD_NUMBER: builtins.int
    ENTITIES_FIELD_NUMBER: builtins.int
    @property
    def root(self) -> prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Identifier: ...
    @property
    def entities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Entity]: ...
    def __init__(
        self,
        *,
        root: prodvana.proto.prodvana.desired_state.model.desired_state_pb2.Identifier | None = ...,
        entities: collections.abc.Iterable[global___Entity] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["root", b"root"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["entities", b"entities", "root", b"root"]) -> None: ...

global___EntityGraph = EntityGraph
