"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.duration_pb2
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import prodvana.proto.prodvana.capability.capability_pb2
import prodvana.proto.prodvana.common_config.constants_pb2
import prodvana.proto.prodvana.common_config.env_pb2
import prodvana.proto.prodvana.common_config.helm_pb2
import prodvana.proto.prodvana.common_config.kubernetes_config_pb2
import prodvana.proto.prodvana.common_config.maturity_pb2
import prodvana.proto.prodvana.common_config.parameters_pb2
import prodvana.proto.prodvana.common_config.program_pb2
import prodvana.proto.prodvana.common_config.retry_pb2
import prodvana.proto.prodvana.common_config.rollback_pb2
import prodvana.proto.prodvana.common_config.task_pb2
import prodvana.proto.prodvana.delivery.delivery_config_pb2
import prodvana.proto.prodvana.delivery_extension.config_pb2
import prodvana.proto.prodvana.desired_state.maestro.maestro_pb2
import prodvana.proto.prodvana.protection.attachments_pb2
import prodvana.proto.prodvana.protection.protection_reference_pb2
import prodvana.proto.prodvana.release_channel.release_channel_config_pb2
import prodvana.proto.prodvana.runtimes.runtimes_config_pb2
import prodvana.proto.prodvana.service.parameters_pb2
import prodvana.proto.prodvana.volumes.volumes_pb2
import prodvana.proto.prodvana.workflow.integration_config_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 ReplicasConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FIXED_FIELD_NUMBER: builtins.int
    fixed: builtins.int
    """no validations, server side has defaults"""
    def __init__(
        self,
        *,
        fixed: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["config_oneof", b"config_oneof", "fixed", b"fixed"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["config_oneof", b"config_oneof", "fixed", b"fixed"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["config_oneof", b"config_oneof"]) -> typing_extensions.Literal["fixed"] | None: ...

global___ReplicasConfig = ReplicasConfig

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

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

        MIN_THRESHOLD_PERCENT_FIELD_NUMBER: builtins.int
        min_threshold_percent: builtins.float
        def __init__(
            self,
            *,
            min_threshold_percent: builtins.float = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["min_threshold_percent", b"min_threshold_percent"]) -> None: ...

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

        MAX_LATENCY_FIELD_NUMBER: builtins.int
        @property
        def max_latency(self) -> google.protobuf.duration_pb2.Duration: ...
        def __init__(
            self,
            *,
            max_latency: google.protobuf.duration_pb2.Duration | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["max_latency", b"max_latency"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["max_latency", b"max_latency"]) -> None: ...

    SUCCESS_RATE_FIELD_NUMBER: builtins.int
    LATENCY_P95_FIELD_NUMBER: builtins.int
    @property
    def success_rate(self) -> global___MetricAnalysis.SuccessRateConfig: ...
    @property
    def latency_p95(self) -> global___MetricAnalysis.LatencyConfig: ...
    def __init__(
        self,
        *,
        success_rate: global___MetricAnalysis.SuccessRateConfig | None = ...,
        latency_p95: global___MetricAnalysis.LatencyConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["analysis_oneof", b"analysis_oneof", "latency_p95", b"latency_p95", "success_rate", b"success_rate"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["analysis_oneof", b"analysis_oneof", "latency_p95", b"latency_p95", "success_rate", b"success_rate"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["analysis_oneof", b"analysis_oneof"]) -> typing_extensions.Literal["success_rate", "latency_p95"] | None: ...

global___MetricAnalysis = MetricAnalysis

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

    INDIVIDUAL_STAGE_DEADLINE_FIELD_NUMBER: builtins.int
    AUTOMATED_TESTING_DURATION_FIELD_NUMBER: builtins.int
    METRICS_ANALYSIS_FIELD_NUMBER: builtins.int
    MANUAL_APPROVAL_FIELD_NUMBER: builtins.int
    CHECK_INTERVAL_FIELD_NUMBER: builtins.int
    FAILURE_THRESHOLD_FIELD_NUMBER: builtins.int
    @property
    def individual_stage_deadline(self) -> google.protobuf.duration_pb2.Duration:
        """deadline in each stage before the push is rolled back. Includes the time it takes for pods to be healthy. Defaults to 10 minutes."""
    @property
    def automated_testing_duration(self) -> google.protobuf.duration_pb2.Duration:
        """duration of the automated testing phase, before manual approval. Defaults to 30m."""
    @property
    def metrics_analysis(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MetricAnalysis]: ...
    manual_approval: builtins.bool
    @property
    def check_interval(self) -> google.protobuf.duration_pb2.Duration:
        """advanced settings that do not typically need to be set. Exposed mainly for testing purposes.
        defaults to 30s
        """
    failure_threshold: builtins.int
    """defaults to 5"""
    def __init__(
        self,
        *,
        individual_stage_deadline: google.protobuf.duration_pb2.Duration | None = ...,
        automated_testing_duration: google.protobuf.duration_pb2.Duration | None = ...,
        metrics_analysis: collections.abc.Iterable[global___MetricAnalysis] | None = ...,
        manual_approval: builtins.bool = ...,
        check_interval: google.protobuf.duration_pb2.Duration | None = ...,
        failure_threshold: builtins.int = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["automated_testing_duration", b"automated_testing_duration", "check_interval", b"check_interval", "individual_stage_deadline", b"individual_stage_deadline"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["automated_testing_duration", b"automated_testing_duration", "check_interval", b"check_interval", "failure_threshold", b"failure_threshold", "individual_stage_deadline", b"individual_stage_deadline", "manual_approval", b"manual_approval", "metrics_analysis", b"metrics_analysis"]) -> None: ...

global___ReleaseStrategyConfig = ReleaseStrategyConfig

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

    RAW_SECRET_FIELD_NUMBER: builtins.int
    SECRET_FIELD_NUMBER: builtins.int
    raw_secret: builtins.str
    """Raw secret value to be used for user-editable YAML and RPC calls."""
    @property
    def secret(self) -> prodvana.proto.prodvana.common_config.env_pb2.Secret:
        """Externally stored secret."""
    def __init__(
        self,
        *,
        raw_secret: builtins.str = ...,
        secret: prodvana.proto.prodvana.common_config.env_pb2.Secret | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["raw_secret", b"raw_secret", "secret", b"secret", "tls_secret", b"tls_secret"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["raw_secret", b"raw_secret", "secret", b"secret", "tls_secret", b"tls_secret"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["tls_secret", b"tls_secret"]) -> typing_extensions.Literal["raw_secret", "secret"] | None: ...

global___TLSSecret = TLSSecret

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

    TLS_CERT_FIELD_NUMBER: builtins.int
    TLS_KEY_FIELD_NUMBER: builtins.int
    @property
    def tls_cert(self) -> global___TLSSecret: ...
    @property
    def tls_key(self) -> global___TLSSecret: ...
    def __init__(
        self,
        *,
        tls_cert: global___TLSSecret | None = ...,
        tls_key: global___TLSSecret | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["tls_cert", b"tls_cert", "tls_key", b"tls_key"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["tls_cert", b"tls_cert", "tls_key", b"tls_key"]) -> None: ...

global___TLSCertificate = TLSCertificate

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

    TLS_FIELD_NUMBER: builtins.int
    AWS_ACM_CERT_FIELD_NUMBER: builtins.int
    @property
    def tls(self) -> global___TLSCertificate: ...
    aws_acm_cert: builtins.str
    def __init__(
        self,
        *,
        tls: global___TLSCertificate | None = ...,
        aws_acm_cert: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["aws_acm_cert", b"aws_acm_cert", "certificate", b"certificate", "tls", b"tls"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["aws_acm_cert", b"aws_acm_cert", "certificate", b"certificate", "tls", b"tls"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["certificate", b"certificate"]) -> typing_extensions.Literal["tls", "aws_acm_cert"] | None: ...

global___Certificate = Certificate

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

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> prodvana.proto.prodvana.common_config.env_pb2.EnvValue: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: prodvana.proto.prodvana.common_config.env_pb2.EnvValue | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    CUSTOM_HOSTNAMES_FIELD_NUMBER: builtins.int
    PROGRAMS_FIELD_NUMBER: builtins.int
    CERT_FIELD_NUMBER: builtins.int
    DELIVERY_CONFIG_FIELD_NUMBER: builtins.int
    VOLUMES_FIELD_NUMBER: builtins.int
    REPLICAS_FIELD_NUMBER: builtins.int
    PRE_PUSH_TASKS_FIELD_NUMBER: builtins.int
    DELIVERY_EXTENSIONS_FIELD_NUMBER: builtins.int
    CONVERGENCE_EXTENSIONS_FIELD_NUMBER: builtins.int
    RUNTIME_SPECIFIC_FIELD_NUMBER: builtins.int
    RUNTIME_CONNECTION_FIELD_NUMBER: builtins.int
    RUNTIME_EXTENSION_FIELD_NUMBER: builtins.int
    CUSTOM_RUNTIME_FIELD_NUMBER: builtins.int
    KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
    EXTERNAL_CONFIG_FIELD_NUMBER: builtins.int
    HELM_FIELD_NUMBER: builtins.int
    AWS_ECS_FIELD_NUMBER: builtins.int
    GOOGLE_CLOUD_RUN_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    CONSTANTS_FIELD_NUMBER: builtins.int
    PROTECTIONS_FIELD_NUMBER: builtins.int
    CONVERGENCE_PROTECTIONS_FIELD_NUMBER: builtins.int
    release_channel: builtins.str
    @property
    def custom_hostnames(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def programs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.program_pb2.PerReleaseChannelProgramConfig]: ...
    @property
    def cert(self) -> global___Certificate: ...
    @property
    def delivery_config(self) -> prodvana.proto.prodvana.delivery.delivery_config_pb2.DeliveryConfig: ...
    @property
    def volumes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.volumes.volumes_pb2.Volume]: ...
    @property
    def replicas(self) -> global___ReplicasConfig: ...
    @property
    def pre_push_tasks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TaskConfig]:
        """DEPRECATED: use convergence_extensions"""
    @property
    def delivery_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionConfig]:
        """DEPRECATED: use convergence_extensions"""
    @property
    def convergence_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionConfig]: ...
    @property
    def runtime_specific(self) -> global___RuntimeSpecificConfig: ...
    runtime_connection: builtins.str
    """which runtime connection to use in each release channel.
    optional if only one runtime makes sense for the service config.
    """
    @property
    def runtime_extension(self) -> global___RuntimeExtensionConfig:
        """deprecated, use custom_runtime"""
    @property
    def custom_runtime(self) -> global___RuntimeExtensionConfig: ...
    @property
    def kubernetes_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig: ...
    @property
    def external_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig:
        """deprecated, pass this as kubernetes_config instead"""
    @property
    def helm(self) -> prodvana.proto.prodvana.common_config.helm_pb2.HelmConfig: ...
    @property
    def aws_ecs(self) -> global___AwsEcsConfig: ...
    @property
    def google_cloud_run(self) -> global___GoogleCloudRunConfig: ...
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]:
        """Additional env variables that are injected to the service.
        This can be useful for injecting and/or overriding env variables from release channel
        configs for Kubernetes and runtime extension configs.
        Not supported for helm configs.
        """
    @property
    def constants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.constants_pb2.Constant]:
        """constants made available in template substitutions"""
    @property
    def protections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig]: ...
    @property
    def convergence_protections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig]:
        """TODO: unused today, but will be used for per-service per-RC convergence protections in the future"""
    def __init__(
        self,
        *,
        release_channel: builtins.str = ...,
        custom_hostnames: collections.abc.Iterable[builtins.str] | None = ...,
        programs: collections.abc.Iterable[prodvana.proto.prodvana.common_config.program_pb2.PerReleaseChannelProgramConfig] | None = ...,
        cert: global___Certificate | None = ...,
        delivery_config: prodvana.proto.prodvana.delivery.delivery_config_pb2.DeliveryConfig | None = ...,
        volumes: collections.abc.Iterable[prodvana.proto.prodvana.volumes.volumes_pb2.Volume] | None = ...,
        replicas: global___ReplicasConfig | None = ...,
        pre_push_tasks: collections.abc.Iterable[global___TaskConfig] | None = ...,
        delivery_extensions: collections.abc.Iterable[global___DeliveryExtensionConfig] | None = ...,
        convergence_extensions: collections.abc.Iterable[global___DeliveryExtensionConfig] | None = ...,
        runtime_specific: global___RuntimeSpecificConfig | None = ...,
        runtime_connection: builtins.str = ...,
        runtime_extension: global___RuntimeExtensionConfig | None = ...,
        custom_runtime: global___RuntimeExtensionConfig | None = ...,
        kubernetes_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        external_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        helm: prodvana.proto.prodvana.common_config.helm_pb2.HelmConfig | None = ...,
        aws_ecs: global___AwsEcsConfig | None = ...,
        google_cloud_run: global___GoogleCloudRunConfig | None = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
        constants: collections.abc.Iterable[prodvana.proto.prodvana.common_config.constants_pb2.Constant] | None = ...,
        protections: collections.abc.Iterable[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig] | None = ...,
        convergence_protections: collections.abc.Iterable[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["aws_ecs", b"aws_ecs", "cert", b"cert", "config_oneof", b"config_oneof", "custom_runtime", b"custom_runtime", "delivery_config", b"delivery_config", "external_config", b"external_config", "google_cloud_run", b"google_cloud_run", "helm", b"helm", "kubernetes_config", b"kubernetes_config", "replicas", b"replicas", "runtime_extension", b"runtime_extension", "runtime_specific", b"runtime_specific"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["aws_ecs", b"aws_ecs", "cert", b"cert", "config_oneof", b"config_oneof", "constants", b"constants", "convergence_extensions", b"convergence_extensions", "convergence_protections", b"convergence_protections", "custom_hostnames", b"custom_hostnames", "custom_runtime", b"custom_runtime", "delivery_config", b"delivery_config", "delivery_extensions", b"delivery_extensions", "env", b"env", "external_config", b"external_config", "google_cloud_run", b"google_cloud_run", "helm", b"helm", "kubernetes_config", b"kubernetes_config", "pre_push_tasks", b"pre_push_tasks", "programs", b"programs", "protections", b"protections", "release_channel", b"release_channel", "replicas", b"replicas", "runtime_connection", b"runtime_connection", "runtime_extension", b"runtime_extension", "runtime_specific", b"runtime_specific", "volumes", b"volumes"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["config_oneof", b"config_oneof"]) -> typing_extensions.Literal["runtime_extension", "custom_runtime", "kubernetes_config", "external_config", "helm", "aws_ecs", "google_cloud_run"] | None: ...

global___PerReleaseChannelConfig = PerReleaseChannelConfig

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

    NAME_FIELD_NUMBER: builtins.int
    name: builtins.str
    def __init__(
        self,
        *,
        name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["name", b"name"]) -> None: ...

global___CapabilityReference = CapabilityReference

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

    CAPABILITY_FIELD_NUMBER: builtins.int
    @property
    def capability(self) -> prodvana.proto.prodvana.capability.capability_pb2.CapabilityConfig: ...
    def __init__(
        self,
        *,
        capability: prodvana.proto.prodvana.capability.capability_pb2.CapabilityConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["capability", b"capability"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["capability", b"capability"]) -> None: ...

global___CompiledCapabilityConfig = CompiledCapabilityConfig

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

    NAME_FIELD_NUMBER: builtins.int
    name: builtins.str
    def __init__(
        self,
        *,
        name: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["name", b"name", "ref", b"ref"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "ref", b"ref"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["ref", b"ref"]) -> typing_extensions.Literal["name"] | None: ...

global___ProgramReference = ProgramReference

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

    RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    release_channel: builtins.str
    def __init__(
        self,
        *,
        release_channel: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["ref", b"ref", "release_channel", b"release_channel"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["ref", b"ref", "release_channel", b"release_channel"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["ref", b"ref"]) -> typing_extensions.Literal["release_channel"] | None: ...

global___TaskReference = TaskReference

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

    PROGRAM_FIELD_NUMBER: builtins.int
    BASE_PROGRAM_FIELD_NUMBER: builtins.int
    RETRY_CONFIG_FIELD_NUMBER: builtins.int
    REF_FIELD_NUMBER: builtins.int
    @property
    def program(self) -> prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig: ...
    @property
    def base_program(self) -> global___ProgramReference:
        """optional base program to take configs from. If specified, `program` field will act
        like an override instead.
        """
    @property
    def retry_config(self) -> prodvana.proto.prodvana.common_config.retry_pb2.RetryConfig:
        """if not set, the task will not be retried once it starts executing once."""
    @property
    def ref(self) -> global___TaskReference:
        """Instead of defining a new task, reference an existing custom task and use that. This is meant
        to be used in conjunection with per_release_channel to allow multiple release channels to use
        a single custom task. If set, the program definition is ignored except for program name.
        """
    def __init__(
        self,
        *,
        program: prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig | None = ...,
        base_program: global___ProgramReference | None = ...,
        retry_config: prodvana.proto.prodvana.common_config.retry_pb2.RetryConfig | None = ...,
        ref: global___TaskReference | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["base_program", b"base_program", "program", b"program", "ref", b"ref", "retry_config", b"retry_config"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["base_program", b"base_program", "program", b"program", "ref", b"ref", "retry_config", b"retry_config"]) -> None: ...

global___TaskConfig = TaskConfig

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

    LIFECYCLE_FIELD_NUMBER: builtins.int
    ATTACHMENT_ID_FIELD_NUMBER: builtins.int
    @property
    def lifecycle(self) -> prodvana.proto.prodvana.protection.protection_reference_pb2.ProtectionLifecycle: ...
    attachment_id: builtins.str
    def __init__(
        self,
        *,
        lifecycle: prodvana.proto.prodvana.protection.protection_reference_pb2.ProtectionLifecycle | None = ...,
        attachment_id: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["lifecycle", b"lifecycle"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["attachment_id", b"attachment_id", "lifecycle", b"lifecycle"]) -> None: ...

global___ProtectionLink = ProtectionLink

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

    INLINED_FIELD_NUMBER: builtins.int
    INSTANCE_FIELD_NUMBER: builtins.int
    REF_FIELD_NUMBER: builtins.int
    LIFECYCLE_FIELD_NUMBER: builtins.int
    @property
    def inlined(self) -> prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionConfig:
        """Inline definition of a delivery extension."""
    instance: builtins.str
    """A delivery instance defined in this service config."""
    @property
    def ref(self) -> prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionInstanceRef:
        """Reference to a delivery extension defined externally."""
    lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType
    def __init__(
        self,
        *,
        inlined: prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionConfig | None = ...,
        instance: builtins.str = ...,
        ref: prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionInstanceRef | None = ...,
        lifecycle: prodvana.proto.prodvana.common_config.task_pb2.TaskLifecycle.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["definition", b"definition", "inlined", b"inlined", "instance", b"instance", "ref", b"ref"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["definition", b"definition", "inlined", b"inlined", "instance", b"instance", "lifecycle", b"lifecycle", "ref", b"ref"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["definition", b"definition"]) -> typing_extensions.Literal["inlined", "instance", "ref"] | None: ...

global___DeliveryExtensionConfig = DeliveryExtensionConfig

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

    INLINED_FIELD_NUMBER: builtins.int
    REF_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    @property
    def inlined(self) -> prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionConfig:
        """Inline definition of the delivery extension."""
    @property
    def ref(self) -> prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionInstanceRef:
        """Reference to a delivery extension defined externally."""
    name: builtins.str
    def __init__(
        self,
        *,
        inlined: prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionConfig | None = ...,
        ref: prodvana.proto.prodvana.delivery_extension.config_pb2.DeliveryExtensionInstanceRef | None = ...,
        name: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["definition", b"definition", "inlined", b"inlined", "ref", b"ref"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["definition", b"definition", "inlined", b"inlined", "name", b"name", "ref", b"ref"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["definition", b"definition"]) -> typing_extensions.Literal["inlined", "ref"] | None: ...

global___DeliveryExtensionInstance = DeliveryExtensionInstance

class RuntimeSpecificConfig(google.protobuf.message.Message):
    """RuntimeSpecificConfig contains Service level configuration options that only make sense for a
    specific Runtime type. Configuration added here should only apply to a single Service; if the
    Runtime specific configuration relates to all services, it should be configured as at the
    Runtime cluster level (or as a runtime extension).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

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

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            value: builtins.str
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: builtins.str = ...,
            ) -> None: ...
            def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

        SERVICE_ANNOTATIONS_FIELD_NUMBER: builtins.int
        @property
        def service_annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
            """Annotations to add to the Kubernetes Service object"""
        def __init__(
            self,
            *,
            service_annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["service_annotations", b"service_annotations"]) -> None: ...

    K8S_FIELD_NUMBER: builtins.int
    @property
    def k8s(self) -> global___RuntimeSpecificConfig.K8SConfig: ...
    def __init__(
        self,
        *,
        k8s: global___RuntimeSpecificConfig.K8SConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["k8s", b"k8s", "runtime_config", b"runtime_config"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["k8s", b"k8s", "runtime_config", b"runtime_config"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["runtime_config", b"runtime_config"]) -> typing_extensions.Literal["k8s"] | None: ...

global___RuntimeSpecificConfig = RuntimeSpecificConfig

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

    PARAMETER_VALUES_FIELD_NUMBER: builtins.int
    CLEAR_ON_PER_RELEASE_CHANNEL_MERGE_FIELD_NUMBER: builtins.int
    @property
    def parameter_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterValue]: ...
    clear_on_per_release_channel_merge: builtins.bool
    """can only be set on a PerReleaseChannel config. If set, parameter values will be replaced instead of joined."""
    def __init__(
        self,
        *,
        parameter_values: collections.abc.Iterable[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterValue] | None = ...,
        clear_on_per_release_channel_merge: builtins.bool = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["clear_on_per_release_channel_merge", b"clear_on_per_release_channel_merge", "parameter_values", b"parameter_values"]) -> None: ...

global___RuntimeExtensionConfig = RuntimeExtensionConfig

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

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

        INLINED_FIELD_NUMBER: builtins.int
        LOCAL_FIELD_NUMBER: builtins.int
        REMOTE_FIELD_NUMBER: builtins.int
        inlined: builtins.str
        @property
        def local(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.LocalConfig: ...
        @property
        def remote(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.RemoteConfig: ...
        def __init__(
            self,
            *,
            inlined: builtins.str = ...,
            local: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.LocalConfig | None = ...,
            remote: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.RemoteConfig | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["inlined", b"inlined", "local", b"local", "remote", b"remote", "spec_oneof", b"spec_oneof"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["inlined", b"inlined", "local", b"local", "remote", b"remote", "spec_oneof", b"spec_oneof"]) -> None: ...
        def WhichOneof(self, oneof_group: typing_extensions.Literal["spec_oneof", b"spec_oneof"]) -> typing_extensions.Literal["inlined", "local", "remote"] | None: ...

    ECS_SERVICE_NAME_OVERRIDE_FIELD_NUMBER: builtins.int
    TASK_DEFINITION_FIELD_NUMBER: builtins.int
    SERVICE_DEFINITION_FIELD_NUMBER: builtins.int
    UPDATE_TASK_DEFINITION_ONLY_FIELD_NUMBER: builtins.int
    ecs_service_name_override: builtins.str
    """optional, defaults to Prodvana service name"""
    @property
    def task_definition(self) -> global___AwsEcsConfig.Spec: ...
    @property
    def service_definition(self) -> global___AwsEcsConfig.Spec: ...
    update_task_definition_only: builtins.bool
    """Only update service's task definition, but do not try to update anything else about the service.
    This means that something else is responsible for creating the service.
    if set, network_configuration cannot be set
    """
    def __init__(
        self,
        *,
        ecs_service_name_override: builtins.str = ...,
        task_definition: global___AwsEcsConfig.Spec | None = ...,
        service_definition: global___AwsEcsConfig.Spec | None = ...,
        update_task_definition_only: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["service_definition", b"service_definition", "task_definition", b"task_definition"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["ecs_service_name_override", b"ecs_service_name_override", "service_definition", b"service_definition", "task_definition", b"task_definition", "update_task_definition_only", b"update_task_definition_only"]) -> None: ...

global___AwsEcsConfig = AwsEcsConfig

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

    INLINED_FIELD_NUMBER: builtins.int
    LOCAL_FIELD_NUMBER: builtins.int
    REMOTE_FIELD_NUMBER: builtins.int
    inlined: builtins.str
    @property
    def local(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.LocalConfig: ...
    @property
    def remote(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.RemoteConfig: ...
    def __init__(
        self,
        *,
        inlined: builtins.str = ...,
        local: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.LocalConfig | None = ...,
        remote: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.RemoteConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["inlined", b"inlined", "local", b"local", "remote", b"remote", "spec_oneof", b"spec_oneof"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["inlined", b"inlined", "local", b"local", "remote", b"remote", "spec_oneof", b"spec_oneof"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["spec_oneof", b"spec_oneof"]) -> typing_extensions.Literal["inlined", "local", "remote"] | None: ...

global___GoogleCloudRunConfig = GoogleCloudRunConfig

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

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

    class _ParametersAutogenEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ServiceConfig._ParametersAutogen.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: ServiceConfig._ParametersAutogen.ValueType  # 0
        NONE: ServiceConfig._ParametersAutogen.ValueType  # 1
        """no autogen"""
        IMAGE: ServiceConfig._ParametersAutogen.ValueType  # 2
        """autogen one parameter per program for the image"""
        IMAGE_AND_REPLICAS: ServiceConfig._ParametersAutogen.ValueType  # 3
        """IMAGE + autogen a parameter for replicas count"""

    class ParametersAutogen(_ParametersAutogen, metaclass=_ParametersAutogenEnumTypeWrapper): ...
    UNKNOWN: ServiceConfig.ParametersAutogen.ValueType  # 0
    NONE: ServiceConfig.ParametersAutogen.ValueType  # 1
    """no autogen"""
    IMAGE: ServiceConfig.ParametersAutogen.ValueType  # 2
    """autogen one parameter per program for the image"""
    IMAGE_AND_REPLICAS: ServiceConfig.ParametersAutogen.ValueType  # 3
    """IMAGE + autogen a parameter for replicas count"""

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> prodvana.proto.prodvana.common_config.env_pb2.EnvValue: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: prodvana.proto.prodvana.common_config.env_pb2.EnvValue | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    NAME_FIELD_NUMBER: builtins.int
    APPLICATION_FIELD_NUMBER: builtins.int
    PROGRAMS_FIELD_NUMBER: builtins.int
    REPLICAS_FIELD_NUMBER: builtins.int
    RELEASE_STRATEGY_FIELD_NUMBER: builtins.int
    PER_RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    CAPABILITIES_FIELD_NUMBER: builtins.int
    DELIVERY_CONFIG_FIELD_NUMBER: builtins.int
    VOLUMES_FIELD_NUMBER: builtins.int
    DEPLOY_ANNOTATIONS_FIELD_NUMBER: builtins.int
    PRE_PUSH_TASKS_FIELD_NUMBER: builtins.int
    DELIVERY_EXTENSIONS_FIELD_NUMBER: builtins.int
    DELIVERY_EXTENSION_INSTANCES_FIELD_NUMBER: builtins.int
    CONVERGENCE_EXTENSIONS_FIELD_NUMBER: builtins.int
    CONVERGENCE_EXTENSION_INSTANCES_FIELD_NUMBER: builtins.int
    CONVERGENCE_PROTECTIONS_FIELD_NUMBER: builtins.int
    RUNTIME_SPECIFIC_FIELD_NUMBER: builtins.int
    RUNTIME_CONNECTION_FIELD_NUMBER: builtins.int
    PARAMETERS_FIELD_NUMBER: builtins.int
    PARAMETER_VALUES_FIELD_NUMBER: builtins.int
    CONSTANTS_FIELD_NUMBER: builtins.int
    PROGRESS_DEADLINE_FIELD_NUMBER: builtins.int
    RUNTIME_EXTENSION_FIELD_NUMBER: builtins.int
    CUSTOM_RUNTIME_FIELD_NUMBER: builtins.int
    KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
    EXTERNAL_CONFIG_FIELD_NUMBER: builtins.int
    HELM_FIELD_NUMBER: builtins.int
    AWS_ECS_FIELD_NUMBER: builtins.int
    GOOGLE_CLOUD_RUN_FIELD_NUMBER: builtins.int
    PARAMETERS_AUTOGEN_FIELD_NUMBER: builtins.int
    AUTO_ROLLBACK_FIELD_NUMBER: builtins.int
    NO_CLEANUP_ON_DELETE_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    ASYNC_SET_DESIRED_STATE_FIELD_NUMBER: builtins.int
    MAESTRO_FIELD_NUMBER: builtins.int
    BUNDLE_NAME_FIELD_NUMBER: builtins.int
    name: builtins.str
    application: builtins.str
    @property
    def programs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig]: ...
    @property
    def replicas(self) -> global___ReplicasConfig: ...
    @property
    def release_strategy(self) -> global___ReleaseStrategyConfig: ...
    @property
    def per_release_channel(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PerReleaseChannelConfig]: ...
    @property
    def capabilities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CapabilityReference]:
        """deprecated"""
    @property
    def delivery_config(self) -> prodvana.proto.prodvana.delivery.delivery_config_pb2.DeliveryConfig: ...
    @property
    def volumes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.volumes.volumes_pb2.Volume]: ...
    @property
    def deploy_annotations(self) -> prodvana.proto.prodvana.workflow.integration_config_pb2.AnnotationsConfig: ...
    @property
    def pre_push_tasks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TaskConfig]:
        """DEPRECATED: Replace with convergence_extensions"""
    @property
    def delivery_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionConfig]:
        """DEPRECATED: use convergence_extensions"""
    @property
    def delivery_extension_instances(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionInstance]: ...
    @property
    def convergence_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionConfig]: ...
    @property
    def convergence_extension_instances(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionInstance]: ...
    @property
    def convergence_protections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig]:
        """Convergence protections applied to all release channels."""
    @property
    def runtime_specific(self) -> global___RuntimeSpecificConfig: ...
    runtime_connection: builtins.str
    """which runtime connection to use in each release channel.
    optional if only one runtime makes sense for the service config.
    """
    @property
    def parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition]: ...
    @property
    def parameter_values(self) -> prodvana.proto.prodvana.service.parameters_pb2.ServiceParameterValues:
        """only valid to set in compiled configs by Prodvana"""
    @property
    def constants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.constants_pb2.Constant]:
        """constants made available in template substitutions"""
    @property
    def progress_deadline(self) -> google.protobuf.duration_pb2.Duration:
        """how long to wait before marking deployment as failed"""
    @property
    def runtime_extension(self) -> global___RuntimeExtensionConfig:
        """deprecated, use custom_runtime below"""
    @property
    def custom_runtime(self) -> global___RuntimeExtensionConfig: ...
    @property
    def kubernetes_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig: ...
    @property
    def external_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig:
        """deprecated, pass this as kubernetes_config instead"""
    @property
    def helm(self) -> prodvana.proto.prodvana.common_config.helm_pb2.HelmConfig: ...
    @property
    def aws_ecs(self) -> global___AwsEcsConfig: ...
    @property
    def google_cloud_run(self) -> global___GoogleCloudRunConfig: ...
    parameters_autogen: global___ServiceConfig.ParametersAutogen.ValueType
    """How to autogenerate parameters, defaults to IMAGE. Ignored for Kubernetes or Helm configs."""
    @property
    def auto_rollback(self) -> prodvana.proto.prodvana.common_config.rollback_pb2.AutoRollbackConfig: ...
    no_cleanup_on_delete: builtins.bool
    """if set, do not attempt to delete the underlying runtime objects when deleting a service"""
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]:
        """Additional env variables that are injected to the service.
        This can be useful for injecting and/or overriding env variables from release channel
        configs for Kubernetes and runtime extension configs.
        Not supported for helm configs.
        """
    async_set_desired_state: builtins.bool
    """internal use"""
    @property
    def maestro(self) -> prodvana.proto.prodvana.desired_state.maestro.maestro_pb2.MaestroConfig: ...
    bundle_name: builtins.str
    """optional, customize the name of the bundle that will be created for this service.
    By default, the bundle name is generated based on input parameters, such as commit hash.
    The bundle name cannot be different per Release Channel. Doing so is an error.
    If the generated bundle name already exists, a number will be appended to resolve conflict.
    """
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        application: builtins.str = ...,
        programs: collections.abc.Iterable[prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig] | None = ...,
        replicas: global___ReplicasConfig | None = ...,
        release_strategy: global___ReleaseStrategyConfig | None = ...,
        per_release_channel: collections.abc.Iterable[global___PerReleaseChannelConfig] | None = ...,
        capabilities: collections.abc.Iterable[global___CapabilityReference] | None = ...,
        delivery_config: prodvana.proto.prodvana.delivery.delivery_config_pb2.DeliveryConfig | None = ...,
        volumes: collections.abc.Iterable[prodvana.proto.prodvana.volumes.volumes_pb2.Volume] | None = ...,
        deploy_annotations: prodvana.proto.prodvana.workflow.integration_config_pb2.AnnotationsConfig | None = ...,
        pre_push_tasks: collections.abc.Iterable[global___TaskConfig] | None = ...,
        delivery_extensions: collections.abc.Iterable[global___DeliveryExtensionConfig] | None = ...,
        delivery_extension_instances: collections.abc.Iterable[global___DeliveryExtensionInstance] | None = ...,
        convergence_extensions: collections.abc.Iterable[global___DeliveryExtensionConfig] | None = ...,
        convergence_extension_instances: collections.abc.Iterable[global___DeliveryExtensionInstance] | None = ...,
        convergence_protections: collections.abc.Iterable[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig] | None = ...,
        runtime_specific: global___RuntimeSpecificConfig | None = ...,
        runtime_connection: builtins.str = ...,
        parameters: collections.abc.Iterable[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition] | None = ...,
        parameter_values: prodvana.proto.prodvana.service.parameters_pb2.ServiceParameterValues | None = ...,
        constants: collections.abc.Iterable[prodvana.proto.prodvana.common_config.constants_pb2.Constant] | None = ...,
        progress_deadline: google.protobuf.duration_pb2.Duration | None = ...,
        runtime_extension: global___RuntimeExtensionConfig | None = ...,
        custom_runtime: global___RuntimeExtensionConfig | None = ...,
        kubernetes_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        external_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        helm: prodvana.proto.prodvana.common_config.helm_pb2.HelmConfig | None = ...,
        aws_ecs: global___AwsEcsConfig | None = ...,
        google_cloud_run: global___GoogleCloudRunConfig | None = ...,
        parameters_autogen: global___ServiceConfig.ParametersAutogen.ValueType = ...,
        auto_rollback: prodvana.proto.prodvana.common_config.rollback_pb2.AutoRollbackConfig | None = ...,
        no_cleanup_on_delete: builtins.bool = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
        async_set_desired_state: builtins.bool = ...,
        maestro: prodvana.proto.prodvana.desired_state.maestro.maestro_pb2.MaestroConfig | None = ...,
        bundle_name: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["auto_rollback", b"auto_rollback", "aws_ecs", b"aws_ecs", "config_oneof", b"config_oneof", "custom_runtime", b"custom_runtime", "delivery_config", b"delivery_config", "deploy_annotations", b"deploy_annotations", "external_config", b"external_config", "google_cloud_run", b"google_cloud_run", "helm", b"helm", "kubernetes_config", b"kubernetes_config", "maestro", b"maestro", "parameter_values", b"parameter_values", "progress_deadline", b"progress_deadline", "release_strategy", b"release_strategy", "replicas", b"replicas", "runtime_extension", b"runtime_extension", "runtime_specific", b"runtime_specific"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "async_set_desired_state", b"async_set_desired_state", "auto_rollback", b"auto_rollback", "aws_ecs", b"aws_ecs", "bundle_name", b"bundle_name", "capabilities", b"capabilities", "config_oneof", b"config_oneof", "constants", b"constants", "convergence_extension_instances", b"convergence_extension_instances", "convergence_extensions", b"convergence_extensions", "convergence_protections", b"convergence_protections", "custom_runtime", b"custom_runtime", "delivery_config", b"delivery_config", "delivery_extension_instances", b"delivery_extension_instances", "delivery_extensions", b"delivery_extensions", "deploy_annotations", b"deploy_annotations", "env", b"env", "external_config", b"external_config", "google_cloud_run", b"google_cloud_run", "helm", b"helm", "kubernetes_config", b"kubernetes_config", "maestro", b"maestro", "name", b"name", "no_cleanup_on_delete", b"no_cleanup_on_delete", "parameter_values", b"parameter_values", "parameters", b"parameters", "parameters_autogen", b"parameters_autogen", "per_release_channel", b"per_release_channel", "pre_push_tasks", b"pre_push_tasks", "programs", b"programs", "progress_deadline", b"progress_deadline", "release_strategy", b"release_strategy", "replicas", b"replicas", "runtime_connection", b"runtime_connection", "runtime_extension", b"runtime_extension", "runtime_specific", b"runtime_specific", "volumes", b"volumes"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["config_oneof", b"config_oneof"]) -> typing_extensions.Literal["runtime_extension", "custom_runtime", "kubernetes_config", "external_config", "helm", "aws_ecs", "google_cloud_run"] | None: ...

global___ServiceConfig = ServiceConfig

class CompiledServiceInstanceConfig(google.protobuf.message.Message):
    """a compiled version of ServiceConfig specific to a service instance, with release-channel configs applied"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        @property
        def value(self) -> prodvana.proto.prodvana.common_config.env_pb2.EnvValue: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: prodvana.proto.prodvana.common_config.env_pb2.EnvValue | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    SERVICE_FIELD_NUMBER: builtins.int
    APPLICATION_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    PROGRAMS_FIELD_NUMBER: builtins.int
    REPLICAS_FIELD_NUMBER: builtins.int
    MATURITY_FIELD_NUMBER: builtins.int
    RELEASE_STRATEGY_FIELD_NUMBER: builtins.int
    CUSTOM_HOSTNAMES_FIELD_NUMBER: builtins.int
    CERT_FIELD_NUMBER: builtins.int
    RUNTIME_FIELD_NUMBER: builtins.int
    RUNTIME_EXECUTION_FIELD_NUMBER: builtins.int
    CAPABILITIES_FIELD_NUMBER: builtins.int
    DELIVERY_CONFIG_FIELD_NUMBER: builtins.int
    VOLUMES_FIELD_NUMBER: builtins.int
    DEPLOY_ANNOTATIONS_FIELD_NUMBER: builtins.int
    PRE_PUSH_TASKS_FIELD_NUMBER: builtins.int
    CONVERGENCE_EXTENSIONS_FIELD_NUMBER: builtins.int
    CONVERGENCE_EXTENSION_INSTANCES_FIELD_NUMBER: builtins.int
    RUNTIME_SPECIFIC_FIELD_NUMBER: builtins.int
    PARAMETERS_FIELD_NUMBER: builtins.int
    PARAMETER_VALUES_FIELD_NUMBER: builtins.int
    CONSTANTS_FIELD_NUMBER: builtins.int
    PROGRESS_DEADLINE_FIELD_NUMBER: builtins.int
    CUSTOM_RUNTIME_FIELD_NUMBER: builtins.int
    KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
    HELM_FIELD_NUMBER: builtins.int
    AWS_ECS_FIELD_NUMBER: builtins.int
    GOOGLE_CLOUD_RUN_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    NO_CLEANUP_ON_DELETE_FIELD_NUMBER: builtins.int
    PROTECTIONS_FIELD_NUMBER: builtins.int
    CONVERGENCE_PROTECTIONS_FIELD_NUMBER: builtins.int
    BUNDLE_NAME_FIELD_NUMBER: builtins.int
    service: builtins.str
    application: builtins.str
    release_channel: builtins.str
    @property
    def programs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig]: ...
    @property
    def replicas(self) -> global___ReplicasConfig: ...
    maturity: prodvana.proto.prodvana.common_config.maturity_pb2.Maturity.ValueType
    @property
    def release_strategy(self) -> global___ReleaseStrategyConfig: ...
    @property
    def custom_hostnames(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def cert(self) -> global___Certificate: ...
    @property
    def runtime(self) -> prodvana.proto.prodvana.release_channel.release_channel_config_pb2.ReleaseChannelRuntimeConfig: ...
    @property
    def runtime_execution(self) -> prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig: ...
    @property
    def capabilities(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CompiledCapabilityConfig]: ...
    @property
    def delivery_config(self) -> prodvana.proto.prodvana.delivery.delivery_config_pb2.DeliveryConfig: ...
    @property
    def volumes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.volumes.volumes_pb2.Volume]: ...
    @property
    def deploy_annotations(self) -> prodvana.proto.prodvana.workflow.integration_config_pb2.AnnotationsConfig: ...
    @property
    def pre_push_tasks(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TaskConfig]:
        """DEPRECATED: use convergence_extensions"""
    @property
    def convergence_extensions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionConfig]: ...
    @property
    def convergence_extension_instances(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeliveryExtensionInstance]: ...
    @property
    def runtime_specific(self) -> global___RuntimeSpecificConfig: ...
    @property
    def parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition]: ...
    @property
    def parameter_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterValue]: ...
    @property
    def constants(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.constants_pb2.Constant]:
        """constants made available in template substitutions"""
    @property
    def progress_deadline(self) -> google.protobuf.duration_pb2.Duration:
        """how long to wait before marking deployment as failed"""
    @property
    def custom_runtime(self) -> global___RuntimeExtensionConfig: ...
    @property
    def kubernetes_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig: ...
    @property
    def helm(self) -> prodvana.proto.prodvana.common_config.helm_pb2.HelmConfig: ...
    @property
    def aws_ecs(self) -> global___AwsEcsConfig: ...
    @property
    def google_cloud_run(self) -> global___GoogleCloudRunConfig: ...
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]:
        """The compiled environment for this instance's context, e.g.  Release Channel.
        This is used to inject these values into external configs.
        """
    no_cleanup_on_delete: builtins.bool
    @property
    def protections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig]: ...
    @property
    def convergence_protections(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig]: ...
    bundle_name: builtins.str
    def __init__(
        self,
        *,
        service: builtins.str = ...,
        application: builtins.str = ...,
        release_channel: builtins.str = ...,
        programs: collections.abc.Iterable[prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig] | None = ...,
        replicas: global___ReplicasConfig | None = ...,
        maturity: prodvana.proto.prodvana.common_config.maturity_pb2.Maturity.ValueType = ...,
        release_strategy: global___ReleaseStrategyConfig | None = ...,
        custom_hostnames: collections.abc.Iterable[builtins.str] | None = ...,
        cert: global___Certificate | None = ...,
        runtime: prodvana.proto.prodvana.release_channel.release_channel_config_pb2.ReleaseChannelRuntimeConfig | None = ...,
        runtime_execution: prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig | None = ...,
        capabilities: collections.abc.Iterable[global___CompiledCapabilityConfig] | None = ...,
        delivery_config: prodvana.proto.prodvana.delivery.delivery_config_pb2.DeliveryConfig | None = ...,
        volumes: collections.abc.Iterable[prodvana.proto.prodvana.volumes.volumes_pb2.Volume] | None = ...,
        deploy_annotations: prodvana.proto.prodvana.workflow.integration_config_pb2.AnnotationsConfig | None = ...,
        pre_push_tasks: collections.abc.Iterable[global___TaskConfig] | None = ...,
        convergence_extensions: collections.abc.Iterable[global___DeliveryExtensionConfig] | None = ...,
        convergence_extension_instances: collections.abc.Iterable[global___DeliveryExtensionInstance] | None = ...,
        runtime_specific: global___RuntimeSpecificConfig | None = ...,
        parameters: collections.abc.Iterable[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition] | None = ...,
        parameter_values: collections.abc.Iterable[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterValue] | None = ...,
        constants: collections.abc.Iterable[prodvana.proto.prodvana.common_config.constants_pb2.Constant] | None = ...,
        progress_deadline: google.protobuf.duration_pb2.Duration | None = ...,
        custom_runtime: global___RuntimeExtensionConfig | None = ...,
        kubernetes_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        helm: prodvana.proto.prodvana.common_config.helm_pb2.HelmConfig | None = ...,
        aws_ecs: global___AwsEcsConfig | None = ...,
        google_cloud_run: global___GoogleCloudRunConfig | None = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
        no_cleanup_on_delete: builtins.bool = ...,
        protections: collections.abc.Iterable[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig] | None = ...,
        convergence_protections: collections.abc.Iterable[prodvana.proto.prodvana.protection.attachments_pb2.ProtectionAttachmentConfig] | None = ...,
        bundle_name: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["aws_ecs", b"aws_ecs", "cert", b"cert", "config_oneof", b"config_oneof", "custom_runtime", b"custom_runtime", "delivery_config", b"delivery_config", "deploy_annotations", b"deploy_annotations", "google_cloud_run", b"google_cloud_run", "helm", b"helm", "kubernetes_config", b"kubernetes_config", "progress_deadline", b"progress_deadline", "release_strategy", b"release_strategy", "replicas", b"replicas", "runtime", b"runtime", "runtime_execution", b"runtime_execution", "runtime_specific", b"runtime_specific"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["application", b"application", "aws_ecs", b"aws_ecs", "bundle_name", b"bundle_name", "capabilities", b"capabilities", "cert", b"cert", "config_oneof", b"config_oneof", "constants", b"constants", "convergence_extension_instances", b"convergence_extension_instances", "convergence_extensions", b"convergence_extensions", "convergence_protections", b"convergence_protections", "custom_hostnames", b"custom_hostnames", "custom_runtime", b"custom_runtime", "delivery_config", b"delivery_config", "deploy_annotations", b"deploy_annotations", "env", b"env", "google_cloud_run", b"google_cloud_run", "helm", b"helm", "kubernetes_config", b"kubernetes_config", "maturity", b"maturity", "no_cleanup_on_delete", b"no_cleanup_on_delete", "parameter_values", b"parameter_values", "parameters", b"parameters", "pre_push_tasks", b"pre_push_tasks", "programs", b"programs", "progress_deadline", b"progress_deadline", "protections", b"protections", "release_channel", b"release_channel", "release_strategy", b"release_strategy", "replicas", b"replicas", "runtime", b"runtime", "runtime_execution", b"runtime_execution", "runtime_specific", b"runtime_specific", "service", b"service", "volumes", b"volumes"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["config_oneof", b"config_oneof"]) -> typing_extensions.Literal["custom_runtime", "kubernetes_config", "helm", "aws_ecs", "google_cloud_run"] | None: ...

global___CompiledServiceInstanceConfig = CompiledServiceInstanceConfig

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

    NAME_PREFIX_FIELD_NUMBER: builtins.int
    RELEASE_CHANNEL_FIELD_NUMBER: builtins.int
    PROGRAMS_FIELD_NUMBER: builtins.int
    RUNTIME_FIELD_NUMBER: builtins.int
    RUNTIME_EXECUTION_FIELD_NUMBER: builtins.int
    name_prefix: builtins.str
    release_channel: builtins.str
    @property
    def programs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig]: ...
    @property
    def runtime(self) -> prodvana.proto.prodvana.release_channel.release_channel_config_pb2.ReleaseChannelRuntimeConfig: ...
    @property
    def runtime_execution(self) -> prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig: ...
    def __init__(
        self,
        *,
        name_prefix: builtins.str = ...,
        release_channel: builtins.str = ...,
        programs: collections.abc.Iterable[prodvana.proto.prodvana.common_config.program_pb2.ProgramConfig] | None = ...,
        runtime: prodvana.proto.prodvana.release_channel.release_channel_config_pb2.ReleaseChannelRuntimeConfig | None = ...,
        runtime_execution: prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["runtime", b"runtime", "runtime_execution", b"runtime_execution"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["name_prefix", b"name_prefix", "programs", b"programs", "release_channel", b"release_channel", "runtime", b"runtime", "runtime_execution", b"runtime_execution"]) -> None: ...

global___CompiledJobConfig = CompiledJobConfig
