"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import google.protobuf.descriptor
import google.protobuf.message
import google.protobuf.timestamp_pb2
import insightproto.proto.common.v1.common_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    ID_FIELD_NUMBER: builtins.int
    ORG_FIELD_NUMBER: builtins.int
    AETHER_JOB_FIELD_NUMBER: builtins.int
    INSIGHT_JOB_FIELD_NUMBER: builtins.int
    id: builtins.str
    """the id of the job"""
    @property
    def org(self) -> insightproto.proto.common.v1.common_pb2.Organisation:
        """the organisation the job is for"""

    @property
    def aether_job(self) -> global___AetherJob: ...
    @property
    def insight_job(self) -> global___InsightJob: ...
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        org: insightproto.proto.common.v1.common_pb2.Organisation | None = ...,
        aether_job: global___AetherJob | None = ...,
        insight_job: global___InsightJob | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["aether_job", b"aether_job", "insight_job", b"insight_job", "job", b"job", "org", b"org"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["aether_job", b"aether_job", "id", b"id", "insight_job", b"insight_job", "job", b"job", "org", b"org"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["job", b"job"]) -> typing.Literal["aether_job", "insight_job"] | None: ...

global___JobMessage = JobMessage

@typing.final
class AetherJob(google.protobuf.message.Message):
    """AetherJob describes a job for aether to run e.g. a mr review"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    PROJECT_FIELD_NUMBER: builtins.int
    OPERATIONTYPE_FIELD_NUMBER: builtins.int
    ISSUEID_FIELD_NUMBER: builtins.int
    DISCUSSIONID_FIELD_NUMBER: builtins.int
    MERGEREQUESTID_FIELD_NUMBER: builtins.int
    JOBID_FIELD_NUMBER: builtins.int
    NOTEID_FIELD_NUMBER: builtins.int
    id: builtins.str
    """the id of the job"""
    OperationType: builtins.str
    """the type of job (e.g. mr review)"""
    IssueId: builtins.str
    """the issue id if available for this job"""
    DiscussionId: builtins.str
    """the discussion id if available for this job"""
    MergeRequestId: builtins.str
    """the mr id  if available for this job"""
    JobId: builtins.str
    """the job id  if available for this job"""
    NoteId: builtins.str
    """the note id  if available for this job"""
    @property
    def project(self) -> global___ProviderProject:
        """the provider (git) project info for the job"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        project: global___ProviderProject | None = ...,
        OperationType: builtins.str = ...,
        IssueId: builtins.str | None = ...,
        DiscussionId: builtins.str | None = ...,
        MergeRequestId: builtins.str | None = ...,
        JobId: builtins.str | None = ...,
        NoteId: builtins.str | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["DiscussionId", b"DiscussionId", "IssueId", b"IssueId", "JobId", b"JobId", "MergeRequestId", b"MergeRequestId", "NoteId", b"NoteId", "_DiscussionId", b"_DiscussionId", "_IssueId", b"_IssueId", "_JobId", b"_JobId", "_MergeRequestId", b"_MergeRequestId", "_NoteId", b"_NoteId", "project", b"project"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["DiscussionId", b"DiscussionId", "IssueId", b"IssueId", "JobId", b"JobId", "MergeRequestId", b"MergeRequestId", "NoteId", b"NoteId", "OperationType", b"OperationType", "_DiscussionId", b"_DiscussionId", "_IssueId", b"_IssueId", "_JobId", b"_JobId", "_MergeRequestId", b"_MergeRequestId", "_NoteId", b"_NoteId", "id", b"id", "project", b"project"]) -> None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_DiscussionId", b"_DiscussionId"]) -> typing.Literal["DiscussionId"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_IssueId", b"_IssueId"]) -> typing.Literal["IssueId"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_JobId", b"_JobId"]) -> typing.Literal["JobId"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_MergeRequestId", b"_MergeRequestId"]) -> typing.Literal["MergeRequestId"] | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: typing.Literal["_NoteId", b"_NoteId"]) -> typing.Literal["NoteId"] | None: ...

global___AetherJob = AetherJob

@typing.final
class ProviderProject(google.protobuf.message.Message):
    """ProviderProject describes the remote project source info, e.g. the gitlab project to use"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    PROVIDER_FIELD_NUMBER: builtins.int
    id: builtins.str
    """the provider project id to use in the api calls e.g. the gitlab id"""
    name: builtins.str
    """the name of the project"""
    @property
    def provider(self) -> global___Provider:
        """the provider info"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        name: builtins.str = ...,
        provider: global___Provider | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["provider", b"provider"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["id", b"id", "name", b"name", "provider", b"provider"]) -> None: ...

global___ProviderProject = ProviderProject

@typing.final
class Provider(google.protobuf.message.Message):
    """Provider describes the provider source info e.g. the gitlab integration id so we can look up the tokens"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    SOURCE_FIELD_NUMBER: builtins.int
    GITURL_FIELD_NUMBER: builtins.int
    id: builtins.str
    """the id of the integration used"""
    source: builtins.str
    """the type of the integration (e.g. gitlab/github)"""
    gitUrl: builtins.str
    """the https git url for the project"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        source: builtins.str = ...,
        gitUrl: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["gitUrl", b"gitUrl", "id", b"id", "source", b"source"]) -> None: ...

global___Provider = Provider

@typing.final
class InsightJob(google.protobuf.message.Message):
    """InsightJob describes a job for insight to investigate"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    TRIGGER_FIELD_NUMBER: builtins.int
    id: builtins.str
    """the job id"""
    @property
    def trigger(self) -> global___Trigger:
        """the job trigger"""

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        trigger: global___Trigger | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["trigger", b"trigger"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["id", b"id", "trigger", b"trigger"]) -> None: ...

global___InsightJob = InsightJob

@typing.final
class Trigger(google.protobuf.message.Message):
    """Trigger describes where the job has come from (e.g. slack message)"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SOURCE_FIELD_NUMBER: builtins.int
    TEXT_FIELD_NUMBER: builtins.int
    REFERENCE_ID_FIELD_NUMBER: builtins.int
    AUTHOR_FIELD_NUMBER: builtins.int
    TIMESTAMP_FIELD_NUMBER: builtins.int
    text: builtins.str
    """the text to feed as the initial input to the agent"""
    reference_id: builtins.str
    """the reference id (eg slack/teams/etc message id)"""
    @property
    def source(self) -> insightproto.proto.common.v1.common_pb2.Source:
        """the source type e.g. slack"""

    @property
    def author(self) -> global___Author:
        """the author information (name, id, avatar)"""

    @property
    def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """the timestamp of the trigger (e.g. the time of the slack message)"""

    def __init__(
        self,
        *,
        source: insightproto.proto.common.v1.common_pb2.Source | None = ...,
        text: builtins.str = ...,
        reference_id: builtins.str = ...,
        author: global___Author | None = ...,
        timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["author", b"author", "source", b"source", "timestamp", b"timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["author", b"author", "reference_id", b"reference_id", "source", b"source", "text", b"text", "timestamp", b"timestamp"]) -> None: ...

global___Trigger = Trigger

@typing.final
class Author(google.protobuf.message.Message):
    """Author is the person that authored the trigger"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    NAME_FIELD_NUMBER: builtins.int
    ID_FIELD_NUMBER: builtins.int
    AVATAR_FIELD_NUMBER: builtins.int
    name: builtins.str
    """display name of the author"""
    id: builtins.str
    """unique identifier for the author"""
    avatar: builtins.str
    """URL to the author's avatar/profile image"""
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        id: builtins.str = ...,
        avatar: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["avatar", b"avatar", "id", b"id", "name", b"name"]) -> None: ...

global___Author = Author
