"""
@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 insightproto.proto.common.v1.common_pb2
import insightproto.proto.results.v1.results_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

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

    INVESTIGATION_ID_FIELD_NUMBER: builtins.int
    ORG_FIELD_NUMBER: builtins.int
    ALERT_FIELD_NUMBER: builtins.int
    investigation_id: builtins.str
    """The investigation ID that this update relates to."""
    @property
    def org(self) -> insightproto.proto.common.v1.common_pb2.Organisation:
        """The organization that owns the investigation."""

    @property
    def alert(self) -> insightproto.proto.results.v1.results_pb2.AlertExtraction:
        """The alert data that was extracted"""

    def __init__(
        self,
        *,
        investigation_id: builtins.str = ...,
        org: insightproto.proto.common.v1.common_pb2.Organisation | None = ...,
        alert: insightproto.proto.results.v1.results_pb2.AlertExtraction | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["alert", b"alert", "org", b"org"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["alert", b"alert", "investigation_id", b"investigation_id", "org", b"org"]) -> None: ...

Global___Phase1Update: typing_extensions.TypeAlias = Phase1Update

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

    INVESTIGATION_ID_FIELD_NUMBER: builtins.int
    ORG_FIELD_NUMBER: builtins.int
    HYPOTHESES_FIELD_NUMBER: builtins.int
    PRIORITY_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    investigation_id: builtins.str
    """The investigation ID that this update relates to."""
    priority: builtins.str
    """the investigation priority (low/medium/high/critical/pending)"""
    description: builtins.str
    """the description"""
    @property
    def org(self) -> insightproto.proto.common.v1.common_pb2.Organisation:
        """The organization that owns the investigation."""

    @property
    def hypotheses(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[insightproto.proto.results.v1.results_pb2.Hypothesis]:
        """the produced hypotheses"""

    def __init__(
        self,
        *,
        investigation_id: builtins.str = ...,
        org: insightproto.proto.common.v1.common_pb2.Organisation | None = ...,
        hypotheses: collections.abc.Iterable[insightproto.proto.results.v1.results_pb2.Hypothesis] | None = ...,
        priority: builtins.str = ...,
        description: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["org", b"org"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["description", b"description", "hypotheses", b"hypotheses", "investigation_id", b"investigation_id", "org", b"org", "priority", b"priority"]) -> None: ...

Global___Phase2Update: typing_extensions.TypeAlias = Phase2Update

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

    INVESTIGATION_ID_FIELD_NUMBER: builtins.int
    ORG_FIELD_NUMBER: builtins.int
    investigation_id: builtins.str
    """The investigation ID that this update relates to."""
    @property
    def org(self) -> insightproto.proto.common.v1.common_pb2.Organisation:
        """The organization that owns the investigation."""

    def __init__(
        self,
        *,
        investigation_id: builtins.str = ...,
        org: insightproto.proto.common.v1.common_pb2.Organisation | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["org", b"org"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["investigation_id", b"investigation_id", "org", b"org"]) -> None: ...

Global___Phase3Update: typing_extensions.TypeAlias = Phase3Update

@typing.final
class Thought(google.protobuf.message.Message):
    """a thought the agent has used to define it's next steps"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INVESTIGATION_ID_FIELD_NUMBER: builtins.int
    ORG_FIELD_NUMBER: builtins.int
    HYPOTHESIS_ID_FIELD_NUMBER: builtins.int
    THOUGHT_FIELD_NUMBER: builtins.int
    investigation_id: builtins.str
    """The investigation ID that this update relates to."""
    hypothesis_id: builtins.str
    """hypothesis_id is the id of the active hypothesis"""
    thought: builtins.str
    """the new thought being made"""
    @property
    def org(self) -> insightproto.proto.common.v1.common_pb2.Organisation:
        """The organization that owns the investigation."""

    def __init__(
        self,
        *,
        investigation_id: builtins.str = ...,
        org: insightproto.proto.common.v1.common_pb2.Organisation | None = ...,
        hypothesis_id: builtins.str = ...,
        thought: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["org", b"org"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["hypothesis_id", b"hypothesis_id", "investigation_id", b"investigation_id", "org", b"org", "thought", b"thought"]) -> None: ...

Global___Thought: typing_extensions.TypeAlias = Thought

@typing.final
class UpdateRequest(google.protobuf.message.Message):
    """UpdateRequest represents an incremental update sent by the agent during
    investigation processing.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INVESTIGATION_ID_FIELD_NUMBER: builtins.int
    ORG_FIELD_NUMBER: builtins.int
    EVENT_FIELD_NUMBER: builtins.int
    investigation_id: builtins.str
    """The investigation ID that this update relates to."""
    @property
    def org(self) -> insightproto.proto.common.v1.common_pb2.Organisation:
        """The organization that owns the investigation."""

    @property
    def event(self) -> insightproto.proto.results.v1.results_pb2.TimelineEvent:
        """The timeline event data for this update."""

    def __init__(
        self,
        *,
        investigation_id: builtins.str = ...,
        org: insightproto.proto.common.v1.common_pb2.Organisation | None = ...,
        event: insightproto.proto.results.v1.results_pb2.TimelineEvent | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["event", b"event", "org", b"org"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["event", b"event", "investigation_id", b"investigation_id", "org", b"org"]) -> None: ...

Global___UpdateRequest: typing_extensions.TypeAlias = UpdateRequest
