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

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

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

global___ServiceTarget = ServiceTarget

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

    SERVICE_FIELD_NUMBER: builtins.int
    @property
    def service(self) -> global___ServiceTarget: ...
    def __init__(
        self,
        *,
        service: global___ServiceTarget | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["service", b"service", "target", b"target"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["service", b"service", "target", b"target"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["target", b"target"]) -> typing_extensions.Literal["service"] | None: ...

global___Target = Target

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

    TARGETS_FIELD_NUMBER: builtins.int
    @property
    def targets(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Target]: ...
    def __init__(
        self,
        *,
        targets: collections.abc.Iterable[global___Target] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["targets", b"targets"]) -> None: ...

global___RecipeStage = RecipeStage

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

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

    class _StrategyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[RecipeConfig._Strategy.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: RecipeConfig._Strategy.ValueType  # 0
        BY_SERVICE: RecipeConfig._Strategy.ValueType  # 1
        """Complete stages for entire services before moving to the next stage."""
        BY_RELEASE_CHANNEL: RecipeConfig._Strategy.ValueType  # 2
        """Stages are used as per-release channel configuration. Different release channels can be in different stages."""

    class Strategy(_Strategy, metaclass=_StrategyEnumTypeWrapper): ...
    UNKNOWN: RecipeConfig.Strategy.ValueType  # 0
    BY_SERVICE: RecipeConfig.Strategy.ValueType  # 1
    """Complete stages for entire services before moving to the next stage."""
    BY_RELEASE_CHANNEL: RecipeConfig.Strategy.ValueType  # 2
    """Stages are used as per-release channel configuration. Different release channels can be in different stages."""

    NAME_FIELD_NUMBER: builtins.int
    APPLICATION_FIELD_NUMBER: builtins.int
    STAGES_FIELD_NUMBER: builtins.int
    STRATEGY_FIELD_NUMBER: builtins.int
    name: builtins.str
    application: builtins.str
    """Optional application name. If unset, application name will need to be explicitly set within recipe stages."""
    @property
    def stages(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RecipeStage]:
        """Sequential stages of the recipe."""
    strategy: global___RecipeConfig.Strategy.ValueType
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        application: builtins.str = ...,
        stages: collections.abc.Iterable[global___RecipeStage] | None = ...,
        strategy: global___RecipeConfig.Strategy.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "name", b"name", "stages", b"stages", "strategy", b"strategy"]) -> None: ...

global___RecipeConfig = RecipeConfig
