"""
@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 typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    ORG_FIELD_NUMBER: builtins.int
    ALERT_EXTRACTION_FIELD_NUMBER: builtins.int
    TIMELINE_FIELD_NUMBER: builtins.int
    CHECKS_RUN_FIELD_NUMBER: builtins.int
    HYPOTHESES_FIELD_NUMBER: builtins.int
    PRIMARY_HYPOTHESIS_FIELD_NUMBER: builtins.int
    primary_hypothesis: builtins.str
    @property
    def org(self) -> insightproto.proto.common.v1.common_pb2.Organisation: ...
    @property
    def alert_extraction(self) -> global___AlertExtraction: ...
    @property
    def timeline(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TimelineEvent]: ...
    @property
    def checks_run(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def hypotheses(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Hypothesis]: ...
    def __init__(
        self,
        *,
        org: insightproto.proto.common.v1.common_pb2.Organisation | None = ...,
        alert_extraction: global___AlertExtraction | None = ...,
        timeline: collections.abc.Iterable[global___TimelineEvent] | None = ...,
        checks_run: collections.abc.Iterable[builtins.str] | None = ...,
        hypotheses: collections.abc.Iterable[global___Hypothesis] | None = ...,
        primary_hypothesis: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["alert_extraction", b"alert_extraction", "org", b"org"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["alert_extraction", b"alert_extraction", "checks_run", b"checks_run", "hypotheses", b"hypotheses", "org", b"org", "primary_hypothesis", b"primary_hypothesis", "timeline", b"timeline"]) -> None: ...

global___InvestigationResult = InvestigationResult

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

    TIMESTAMP_FIELD_NUMBER: builtins.int
    SUMMARY_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    timestamp: builtins.str
    summary: builtins.str
    @property
    def tags(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        timestamp: builtins.str = ...,
        summary: builtins.str = ...,
        tags: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["summary", b"summary", "tags", b"tags", "timestamp", b"timestamp"]) -> None: ...

global___AlertExtraction = AlertExtraction

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

    TIMESTAMP_FIELD_NUMBER: builtins.int
    SUMMARY_FIELD_NUMBER: builtins.int
    SOURCE_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    timestamp: builtins.str
    summary: builtins.str
    source: builtins.str
    @property
    def data(self) -> global___EventData: ...
    def __init__(
        self,
        *,
        timestamp: builtins.str = ...,
        summary: builtins.str = ...,
        source: builtins.str = ...,
        data: global___EventData | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["data", b"data"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["data", b"data", "source", b"source", "summary", b"summary", "timestamp", b"timestamp"]) -> None: ...

global___TimelineEvent = TimelineEvent

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

    USERNAME_FIELD_NUMBER: builtins.int
    SOURCE_IP_FIELD_NUMBER: builtins.int
    ACTION_FIELD_NUMBER: builtins.int
    SUCCESS_FIELD_NUMBER: builtins.int
    HOSTNAME_FIELD_NUMBER: builtins.int
    PROCESS_NAME_FIELD_NUMBER: builtins.int
    PID_FIELD_NUMBER: builtins.int
    COMMAND_LINE_FIELD_NUMBER: builtins.int
    USER_FIELD_NUMBER: builtins.int
    DESTINATION_IP_FIELD_NUMBER: builtins.int
    PROTOCOL_FIELD_NUMBER: builtins.int
    DESTINATION_PORT_FIELD_NUMBER: builtins.int
    BYTES_SENT_FIELD_NUMBER: builtins.int
    COMMAND_FIELD_NUMBER: builtins.int
    username: builtins.str
    source_ip: builtins.str
    action: builtins.str
    success: builtins.bool
    hostname: builtins.str
    process_name: builtins.str
    pid: builtins.int
    command_line: builtins.str
    user: builtins.str
    destination_ip: builtins.str
    protocol: builtins.str
    destination_port: builtins.int
    bytes_sent: builtins.int
    command: builtins.str
    def __init__(
        self,
        *,
        username: builtins.str | None = ...,
        source_ip: builtins.str | None = ...,
        action: builtins.str | None = ...,
        success: builtins.bool | None = ...,
        hostname: builtins.str | None = ...,
        process_name: builtins.str | None = ...,
        pid: builtins.int | None = ...,
        command_line: builtins.str | None = ...,
        user: builtins.str | None = ...,
        destination_ip: builtins.str | None = ...,
        protocol: builtins.str | None = ...,
        destination_port: builtins.int | None = ...,
        bytes_sent: builtins.int | None = ...,
        command: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["_action", b"_action", "_bytes_sent", b"_bytes_sent", "_command", b"_command", "_command_line", b"_command_line", "_destination_ip", b"_destination_ip", "_destination_port", b"_destination_port", "_hostname", b"_hostname", "_pid", b"_pid", "_process_name", b"_process_name", "_protocol", b"_protocol", "_source_ip", b"_source_ip", "_success", b"_success", "_user", b"_user", "_username", b"_username", "action", b"action", "bytes_sent", b"bytes_sent", "command", b"command", "command_line", b"command_line", "destination_ip", b"destination_ip", "destination_port", b"destination_port", "hostname", b"hostname", "pid", b"pid", "process_name", b"process_name", "protocol", b"protocol", "source_ip", b"source_ip", "success", b"success", "user", b"user", "username", b"username"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["_action", b"_action", "_bytes_sent", b"_bytes_sent", "_command", b"_command", "_command_line", b"_command_line", "_destination_ip", b"_destination_ip", "_destination_port", b"_destination_port", "_hostname", b"_hostname", "_pid", b"_pid", "_process_name", b"_process_name", "_protocol", b"_protocol", "_source_ip", b"_source_ip", "_success", b"_success", "_user", b"_user", "_username", b"_username", "action", b"action", "bytes_sent", b"bytes_sent", "command", b"command", "command_line", b"command_line", "destination_ip", b"destination_ip", "destination_port", b"destination_port", "hostname", b"hostname", "pid", b"pid", "process_name", b"process_name", "protocol", b"protocol", "source_ip", b"source_ip", "success", b"success", "user", b"user", "username", b"username"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_action", b"_action"]) -> typing.Literal["action"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_bytes_sent", b"_bytes_sent"]) -> typing.Literal["bytes_sent"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_command", b"_command"]) -> typing.Literal["command"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_command_line", b"_command_line"]) -> typing.Literal["command_line"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_destination_ip", b"_destination_ip"]) -> typing.Literal["destination_ip"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_destination_port", b"_destination_port"]) -> typing.Literal["destination_port"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_hostname", b"_hostname"]) -> typing.Literal["hostname"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_pid", b"_pid"]) -> typing.Literal["pid"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_process_name", b"_process_name"]) -> typing.Literal["process_name"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_protocol", b"_protocol"]) -> typing.Literal["protocol"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_source_ip", b"_source_ip"]) -> typing.Literal["source_ip"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_success", b"_success"]) -> typing.Literal["success"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_user", b"_user"]) -> typing.Literal["user"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_username", b"_username"]) -> typing.Literal["username"] | None: ...

global___EventData = EventData

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

    DESCRIPTION_FIELD_NUMBER: builtins.int
    CONFIDENCE_FIELD_NUMBER: builtins.int
    SUPPORTING_EVIDENCE_FIELD_NUMBER: builtins.int
    TIMELINE_CORRELATION_FIELD_NUMBER: builtins.int
    description: builtins.str
    confidence: builtins.float
    @property
    def supporting_evidence(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def timeline_correlation(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    def __init__(
        self,
        *,
        description: builtins.str = ...,
        confidence: builtins.float = ...,
        supporting_evidence: collections.abc.Iterable[builtins.str] | None = ...,
        timeline_correlation: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["confidence", b"confidence", "description", b"description", "supporting_evidence", b"supporting_evidence", "timeline_correlation", b"timeline_correlation"]) -> None: ...

global___Hypothesis = Hypothesis
