"""
@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.internal.enum_type_wrapper
import google.protobuf.message
import prodvana.proto.prodvana.object.meta_pb2
import prodvana.proto.prodvana.release.object_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 RecordReleaseReq(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONFIG_FIELD_NUMBER: builtins.int
    PENDING_FIELD_NUMBER: builtins.int
    @property
    def config(self) -> prodvana.proto.prodvana.release.object_pb2.ReleaseConfig: ...
    pending: builtins.bool
    """If true, create release with pending status that is meant to be updated later to either success or failure.
    By default, releases are created with status SUCCEEDED.
    """
    def __init__(
        self,
        *,
        config: prodvana.proto.prodvana.release.object_pb2.ReleaseConfig | None = ...,
        pending: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "pending", b"pending"]) -> None: ...

global___RecordReleaseReq = RecordReleaseReq

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

    META_FIELD_NUMBER: builtins.int
    @property
    def meta(self) -> prodvana.proto.prodvana.object.meta_pb2.ObjectMeta: ...
    def __init__(
        self,
        *,
        meta: prodvana.proto.prodvana.object.meta_pb2.ObjectMeta | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["meta", b"meta"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta"]) -> None: ...

global___RecordReleaseResp = RecordReleaseResp

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

    RELEASE_ID_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    release_id: builtins.str
    status: prodvana.proto.prodvana.release.object_pb2.ReleaseStatus.ValueType
    def __init__(
        self,
        *,
        release_id: builtins.str = ...,
        status: prodvana.proto.prodvana.release.object_pb2.ReleaseStatus.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["release_id", b"release_id", "status", b"status"]) -> None: ...

global___UpdateReleaseStatusReq = UpdateReleaseStatusReq

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

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

global___UpdateReleaseStatusResp = UpdateReleaseStatusResp

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

    SERVICES_FIELD_NUMBER: builtins.int
    RELEASE_CHANNELS_FIELD_NUMBER: builtins.int
    APPLICATION_FIELD_NUMBER: builtins.int
    DESIRED_STATE_ID_FIELD_NUMBER: builtins.int
    @property
    def services(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """filters to releases for join(join(services, OR), join(release_channels, OR), AND)"""
    @property
    def release_channels(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    application: builtins.str
    """if set, the filters on services and release channels above will be limited to this app.
    Otherwise, there is no app filter (so e.g. release_channels=['staging'] will select
    staging release channels across all apps.)
    """
    desired_state_id: builtins.str
    """desired_state_id filter is AND'ed with everything else in the same filter object"""
    def __init__(
        self,
        *,
        services: collections.abc.Iterable[builtins.str] | None = ...,
        release_channels: collections.abc.Iterable[builtins.str] | None = ...,
        application: builtins.str = ...,
        desired_state_id: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "desired_state_id", b"desired_state_id", "release_channels", b"release_channels", "services", b"services"]) -> None: ...

global___ReleaseFilter = ReleaseFilter

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

    FILTERS_FIELD_NUMBER: builtins.int
    FILTER_FIELD_NUMBER: builtins.int
    STARTING_RELEASE_ID_FIELD_NUMBER: builtins.int
    ENDING_RELEASE_ID_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    @property
    def filters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ReleaseFilter]:
        """filters for listing releases. Multiple filters are OR'ed together."""
    @property
    def filter(self) -> global___ReleaseFilter:
        """escape hatch to support openAPI, which cannot handle repeated list of messages on GET requests. This is joined to the filters list with an OR."""
    starting_release_id: builtins.str
    """newer release, inclusive"""
    ending_release_id: builtins.str
    """older release, exclusive"""
    page_token: builtins.str
    page_size: builtins.int
    def __init__(
        self,
        *,
        filters: collections.abc.Iterable[global___ReleaseFilter] | None = ...,
        filter: global___ReleaseFilter | None = ...,
        starting_release_id: builtins.str = ...,
        ending_release_id: builtins.str = ...,
        page_token: builtins.str = ...,
        page_size: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["filter", b"filter"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["ending_release_id", b"ending_release_id", "filter", b"filter", "filters", b"filters", "page_size", b"page_size", "page_token", b"page_token", "starting_release_id", b"starting_release_id"]) -> None: ...

global___ListReleasesReq = ListReleasesReq

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

    RELEASES_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    @property
    def releases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.release.object_pb2.Release]: ...
    next_page_token: builtins.str
    def __init__(
        self,
        *,
        releases: collections.abc.Iterable[prodvana.proto.prodvana.release.object_pb2.Release] | None = ...,
        next_page_token: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["next_page_token", b"next_page_token", "releases", b"releases"]) -> None: ...

global___ListReleasesResp = ListReleasesResp

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

    RELEASE_ID_FIELD_NUMBER: builtins.int
    CONFIG_FIELD_NUMBER: builtins.int
    release_id: builtins.str
    @property
    def config(self) -> prodvana.proto.prodvana.release.object_pb2.ReleaseConfig: ...
    def __init__(
        self,
        *,
        release_id: builtins.str = ...,
        config: prodvana.proto.prodvana.release.object_pb2.ReleaseConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config", "ref", b"ref", "release_id", b"release_id"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "ref", b"ref", "release_id", b"release_id"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["ref", b"ref"]) -> typing_extensions.Literal["release_id", "config"] | None: ...

global___ReleaseRef = ReleaseRef

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

    NEW_RELEASE_FIELD_NUMBER: builtins.int
    PREV_RELEASE_FIELD_NUMBER: builtins.int
    @property
    def new_release(self) -> global___ReleaseRef: ...
    @property
    def prev_release(self) -> global___ReleaseRef: ...
    def __init__(
        self,
        *,
        new_release: global___ReleaseRef | None = ...,
        prev_release: global___ReleaseRef | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["new_release", b"new_release", "prev_release", b"prev_release"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["new_release", b"new_release", "prev_release", b"prev_release"]) -> None: ...

global___CompareReleaseReq = CompareReleaseReq

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

    COMPARISON_FIELD_NUMBER: builtins.int
    @property
    def comparison(self) -> prodvana.proto.prodvana.release.object_pb2.ReleaseComparison: ...
    def __init__(
        self,
        *,
        comparison: prodvana.proto.prodvana.release.object_pb2.ReleaseComparison | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["comparison", b"comparison"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["comparison", b"comparison"]) -> None: ...

global___CompareReleaseResp = CompareReleaseResp

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

    CONFIG_FIELD_NUMBER: builtins.int
    PREV_RELEASE_FIELD_NUMBER: builtins.int
    @property
    def config(self) -> prodvana.proto.prodvana.release.object_pb2.ReleaseConfig: ...
    @property
    def prev_release(self) -> global___ReleaseRef:
        """omit to use latest release from the same app/service/release channel"""
    def __init__(
        self,
        *,
        config: prodvana.proto.prodvana.release.object_pb2.ReleaseConfig | None = ...,
        prev_release: global___ReleaseRef | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config", b"config", "prev_release", b"prev_release"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "prev_release", b"prev_release"]) -> None: ...

global___PreviewReleaseReq = PreviewReleaseReq

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

    RELEASE_FIELD_NUMBER: builtins.int
    @property
    def release(self) -> prodvana.proto.prodvana.release.object_pb2.Release: ...
    def __init__(
        self,
        *,
        release: prodvana.proto.prodvana.release.object_pb2.Release | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["release", b"release"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["release", b"release"]) -> None: ...

global___PreviewReleaseResp = PreviewReleaseResp

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

    FILTERS_FIELD_NUMBER: builtins.int
    FILTER_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    PAGE_TOKEN_FIELD_NUMBER: builtins.int
    PAGE_SIZE_FIELD_NUMBER: builtins.int
    @property
    def filters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ReleaseFilter]:
        """filters for listing releases. Multiple filters are OR'ed together."""
    @property
    def filter(self) -> global___ReleaseFilter:
        """escape hatch to support openAPI, which cannot handle repeated list of messages on GET requests. This is joined to the filters list with an OR."""
    status: prodvana.proto.prodvana.release.object_pb2.ReleaseStatus.ValueType
    """if set, only return releases with this status"""
    page_token: builtins.str
    page_size: builtins.int
    def __init__(
        self,
        *,
        filters: collections.abc.Iterable[global___ReleaseFilter] | None = ...,
        filter: global___ReleaseFilter | None = ...,
        status: prodvana.proto.prodvana.release.object_pb2.ReleaseStatus.ValueType = ...,
        page_token: builtins.str = ...,
        page_size: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["filter", b"filter"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["filter", b"filter", "filters", b"filters", "page_size", b"page_size", "page_token", b"page_token", "status", b"status"]) -> None: ...

global___GetLatestReleasesReq = GetLatestReleasesReq

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

    RELEASES_FIELD_NUMBER: builtins.int
    NEXT_PAGE_TOKEN_FIELD_NUMBER: builtins.int
    @property
    def releases(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.release.object_pb2.Release]: ...
    next_page_token: builtins.str
    def __init__(
        self,
        *,
        releases: collections.abc.Iterable[prodvana.proto.prodvana.release.object_pb2.Release] | None = ...,
        next_page_token: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["next_page_token", b"next_page_token", "releases", b"releases"]) -> None: ...

global___GetLatestReleasesResp = GetLatestReleasesResp

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

    APPLICATION_FIELD_NUMBER: builtins.int
    SERVICE_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    application: builtins.str
    service: builtins.str
    release_channel: builtins.str
    def __init__(
        self,
        *,
        application: builtins.str = ...,
        service: builtins.str = ...,
        release_channel: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "release_channel", b"release_channel", "service", b"service"]) -> None: ...

global___ReleaseServiceInstance = ReleaseServiceInstance

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

    RELEASE_ID_FIELD_NUMBER: builtins.int
    RELEASE_SERVICE_INSTANCE_FIELD_NUMBER: builtins.int
    REPOSITORY_FIELD_NUMBER: builtins.int
    COMMIT_FIELD_NUMBER: builtins.int
    release_id: builtins.str
    @property
    def release_service_instance(self) -> global___ReleaseServiceInstance:
        """will pick latest release"""
    repository: builtins.str
    commit: builtins.str
    def __init__(
        self,
        *,
        release_id: builtins.str = ...,
        release_service_instance: global___ReleaseServiceInstance | None = ...,
        repository: builtins.str = ...,
        commit: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["release_id", b"release_id", "release_oneof", b"release_oneof", "release_service_instance", b"release_service_instance"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["commit", b"commit", "release_id", b"release_id", "release_oneof", b"release_oneof", "release_service_instance", b"release_service_instance", "repository", b"repository"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["release_oneof", b"release_oneof"]) -> typing_extensions.Literal["release_id", "release_service_instance"] | None: ...

global___CheckCommitInReleaseReq = CheckCommitInReleaseReq

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

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

    class _ResultEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[CheckCommitInReleaseResp._Result.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: CheckCommitInReleaseResp._Result.ValueType  # 0
        INCLUDED: CheckCommitInReleaseResp._Result.ValueType  # 1
        NO_RELATION: CheckCommitInReleaseResp._Result.ValueType  # 2
        NOT_INCLUDED: CheckCommitInReleaseResp._Result.ValueType  # 3

    class Result(_Result, metaclass=_ResultEnumTypeWrapper): ...
    UNKNOWN: CheckCommitInReleaseResp.Result.ValueType  # 0
    INCLUDED: CheckCommitInReleaseResp.Result.ValueType  # 1
    NO_RELATION: CheckCommitInReleaseResp.Result.ValueType  # 2
    NOT_INCLUDED: CheckCommitInReleaseResp.Result.ValueType  # 3

    RESULT_FIELD_NUMBER: builtins.int
    result: global___CheckCommitInReleaseResp.Result.ValueType
    def __init__(
        self,
        *,
        result: global___CheckCommitInReleaseResp.Result.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["result", b"result"]) -> None: ...

global___CheckCommitInReleaseResp = CheckCommitInReleaseResp
