"""
@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 google.protobuf.timestamp_pb2
import prodvana.proto.prodvana.common_config.env_pb2
import prodvana.proto.prodvana.common_config.kubernetes_config_pb2
import prodvana.proto.prodvana.common_config.parameters_pb2
import prodvana.proto.prodvana.common_config.rollback_pb2
import prodvana.proto.prodvana.common_config.task_pb2
import prodvana.proto.prodvana.labels.labels_pb2
import prodvana.proto.prodvana.runtimes.extensions.fetch_pb2
import prodvana.proto.prodvana.runtimes.runtimes_config_pb2
import prodvana.proto.prodvana.volumes.volumes_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 _ClusterType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _ClusterTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ClusterType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    UNKNOWN: _ClusterType.ValueType  # 0
    K8S: _ClusterType.ValueType  # 1
    ECS: _ClusterType.ValueType  # 2
    """TODO(naphat) remove, this is legacy ecs implementation not based on runtime extension"""
    FAKE: _ClusterType.ValueType  # 3
    EXTENSION: _ClusterType.ValueType  # 4
    TERRAFORM_RUNNER: _ClusterType.ValueType  # 5
    PULUMI_RUNNER: _ClusterType.ValueType  # 6
    AWS_ECS: _ClusterType.ValueType  # 7
    GOOGLE_CLOUD_RUN: _ClusterType.ValueType  # 8

class ClusterType(_ClusterType, metaclass=_ClusterTypeEnumTypeWrapper): ...

UNKNOWN: ClusterType.ValueType  # 0
K8S: ClusterType.ValueType  # 1
ECS: ClusterType.ValueType  # 2
"""TODO(naphat) remove, this is legacy ecs implementation not based on runtime extension"""
FAKE: ClusterType.ValueType  # 3
EXTENSION: ClusterType.ValueType  # 4
TERRAFORM_RUNNER: ClusterType.ValueType  # 5
PULUMI_RUNNER: ClusterType.ValueType  # 6
AWS_ECS: ClusterType.ValueType  # 7
GOOGLE_CLOUD_RUN: ClusterType.ValueType  # 8
global___ClusterType = ClusterType

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

class _ExtensionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ExtensionType.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    GENERIC: _ExtensionType.ValueType  # 0
    TERRAFORM: _ExtensionType.ValueType  # 1
    PULUMI: _ExtensionType.ValueType  # 2
    AWS_ECS_EXTENSION: _ExtensionType.ValueType  # 3
    GOOGLE_CLOUD_RUN_EXTENSION: _ExtensionType.ValueType  # 4

class ExtensionType(_ExtensionType, metaclass=_ExtensionTypeEnumTypeWrapper): ...

GENERIC: ExtensionType.ValueType  # 0
TERRAFORM: ExtensionType.ValueType  # 1
PULUMI: ExtensionType.ValueType  # 2
AWS_ECS_EXTENSION: ExtensionType.ValueType  # 3
GOOGLE_CLOUD_RUN_EXTENSION: ExtensionType.ValueType  # 4
global___ExtensionType = ExtensionType

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

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

        ACCESS_KEY_FIELD_NUMBER: builtins.int
        SECRET_KEY_FIELD_NUMBER: builtins.int
        REGION_FIELD_NUMBER: builtins.int
        ASSUME_ROLE_ARN_FIELD_NUMBER: builtins.int
        CLUSTER_ARN_FIELD_NUMBER: builtins.int
        access_key: builtins.str
        secret_key: builtins.str
        region: builtins.str
        assume_role_arn: builtins.str
        cluster_arn: builtins.str
        def __init__(
            self,
            *,
            access_key: builtins.str = ...,
            secret_key: builtins.str = ...,
            region: builtins.str = ...,
            assume_role_arn: builtins.str = ...,
            cluster_arn: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["access_key", b"access_key", "assume_role_arn", b"assume_role_arn", "cluster_arn", b"cluster_arn", "region", b"region", "secret_key", b"secret_key"]) -> None: ...

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

        class AgentEnvEntry(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: ...

        AGENT_ENV_FIELD_NUMBER: builtins.int
        AGENT_EXTERNALLY_MANAGED_FIELD_NUMBER: builtins.int
        @property
        def agent_env(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
        agent_externally_managed: builtins.bool
        """The Prodvana agent lifecycle is handled by the user -- Prodvana will not install or update the agent."""
        def __init__(
            self,
            *,
            agent_env: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
            agent_externally_managed: builtins.bool = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["agent_env", b"agent_env", "agent_externally_managed", b"agent_externally_managed"]) -> None: ...

    ECS_FIELD_NUMBER: builtins.int
    K8S_FIELD_NUMBER: builtins.int
    @property
    def ecs(self) -> global___ClusterAuth.ECSAuth: ...
    @property
    def k8s(self) -> global___ClusterAuth.K8sAuth: ...
    def __init__(
        self,
        *,
        ecs: global___ClusterAuth.ECSAuth | None = ...,
        k8s: global___ClusterAuth.K8sAuth | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["auth_oneof", b"auth_oneof", "ecs", b"ecs", "k8s", b"k8s"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["auth_oneof", b"auth_oneof", "ecs", b"ecs", "k8s", b"k8s"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["auth_oneof", b"auth_oneof"]) -> typing_extensions.Literal["ecs", "k8s"] | None: ...

global___ClusterAuth = ClusterAuth

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

    NAME_FIELD_NUMBER: builtins.int
    CLUSTER_ID_FIELD_NUMBER: builtins.int
    AUTH_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    CONFIG_FIELD_NUMBER: builtins.int
    LAST_HEARTBEAT_TIMESTAMP_FIELD_NUMBER: builtins.int
    name: builtins.str
    cluster_id: builtins.str
    @property
    def auth(self) -> global___ClusterAuth: ...
    type: global___ClusterType.ValueType
    @property
    def config(self) -> global___ClusterConfig: ...
    @property
    def last_heartbeat_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        cluster_id: builtins.str = ...,
        auth: global___ClusterAuth | None = ...,
        type: global___ClusterType.ValueType = ...,
        config: global___ClusterConfig | None = ...,
        last_heartbeat_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["auth", b"auth", "config", b"config", "last_heartbeat_timestamp", b"last_heartbeat_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["auth", b"auth", "cluster_id", b"cluster_id", "config", b"config", "last_heartbeat_timestamp", b"last_heartbeat_timestamp", "name", b"name", "type", b"type"]) -> None: ...

global___Cluster = Cluster

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

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

        IMAGE_REGEX_FIELD_NUMBER: builtins.int
        CMD_REGEX_FIELD_NUMBER: builtins.int
        LOG_OUTPUT_FIELD_NUMBER: builtins.int
        image_regex: builtins.str
        cmd_regex: builtins.str
        log_output: builtins.str
        def __init__(
            self,
            *,
            image_regex: builtins.str = ...,
            cmd_regex: builtins.str = ...,
            log_output: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["cmd_regex", b"cmd_regex", "image_regex", b"image_regex", "log_output", b"log_output"]) -> None: ...

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

global___FakeClusterConfig = FakeClusterConfig

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

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

global___RetryPolicy = RetryPolicy

class ExtensionFetchCommand(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: ...

    TASK_CONFIG_FIELD_NUMBER: builtins.int
    KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
    POLL_INTERVAL_FIELD_NUMBER: builtins.int
    STEADY_STATE_POLL_INTERVAL_FIELD_NUMBER: builtins.int
    TIMEOUT_FIELD_NUMBER: builtins.int
    RETRY_POLICY_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    FETCH_MODE_FIELD_NUMBER: builtins.int
    @property
    def task_config(self) -> prodvana.proto.prodvana.common_config.task_pb2.TaskConfig: ...
    @property
    def kubernetes_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig: ...
    @property
    def poll_interval(self) -> google.protobuf.duration_pb2.Duration:
        """customize intervals instead of using Prodvana default
        only used for fetch
        how often to run command after it succeeds
        """
    @property
    def steady_state_poll_interval(self) -> google.protobuf.duration_pb2.Duration:
        """how often to fetch when in steady state (after the extension has converged)"""
    @property
    def timeout(self) -> google.protobuf.duration_pb2.Duration:
        """deprecated, not used"""
    @property
    def retry_policy(self) -> global___RetryPolicy:
        """retry policy for unexpected failures (this means exits other than 0 or 2 when fetch_mode = EXIT_CODE, or other than 0 for STRUCTURED_OUTPUT).
        if not set, regular, non-steady-state poll interval is used for fetches.
        """
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]:
        """optional env variables to inject and override from exec_config"""
    fetch_mode: prodvana.proto.prodvana.runtimes.extensions.fetch_pb2.FetchMode.ValueType
    """how to interpret the output of the command"""
    def __init__(
        self,
        *,
        task_config: prodvana.proto.prodvana.common_config.task_pb2.TaskConfig | None = ...,
        kubernetes_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        poll_interval: google.protobuf.duration_pb2.Duration | None = ...,
        steady_state_poll_interval: google.protobuf.duration_pb2.Duration | None = ...,
        timeout: google.protobuf.duration_pb2.Duration | None = ...,
        retry_policy: global___RetryPolicy | None = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
        fetch_mode: prodvana.proto.prodvana.runtimes.extensions.fetch_pb2.FetchMode.ValueType = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "poll_interval", b"poll_interval", "retry_policy", b"retry_policy", "steady_state_poll_interval", b"steady_state_poll_interval", "task_config", b"task_config", "timeout", b"timeout"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["env", b"env", "exec_config", b"exec_config", "fetch_mode", b"fetch_mode", "kubernetes_config", b"kubernetes_config", "poll_interval", b"poll_interval", "retry_policy", b"retry_policy", "steady_state_poll_interval", b"steady_state_poll_interval", "task_config", b"task_config", "timeout", b"timeout"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["exec_config", b"exec_config"]) -> typing_extensions.Literal["task_config", "kubernetes_config"] | None: ...

global___ExtensionFetchCommand = ExtensionFetchCommand

class ExtensionGetInfoCommand(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: ...

    TASK_CONFIG_FIELD_NUMBER: builtins.int
    KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
    POLL_INTERVAL_FIELD_NUMBER: builtins.int
    RETRY_POLICY_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    TEST_ONLY_DO_NOT_REQUIRE_PVN_WRAPPER_FIELD_NUMBER: builtins.int
    @property
    def task_config(self) -> prodvana.proto.prodvana.common_config.task_pb2.TaskConfig: ...
    @property
    def kubernetes_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig: ...
    @property
    def poll_interval(self) -> google.protobuf.duration_pb2.Duration:
        """customize intervals instead of using Prodvana default
        defaults to 5 minutes
        """
    @property
    def retry_policy(self) -> global___RetryPolicy:
        """retry policy for unexpected failures.
        defaults to fast retrying after 30s then backing off to 10 minutes
        """
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]:
        """optional env variables to inject and override from exec_config"""
    test_only_do_not_require_pvn_wrapper: builtins.bool
    """exposed for internal testing. do not set"""
    def __init__(
        self,
        *,
        task_config: prodvana.proto.prodvana.common_config.task_pb2.TaskConfig | None = ...,
        kubernetes_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        poll_interval: google.protobuf.duration_pb2.Duration | None = ...,
        retry_policy: global___RetryPolicy | None = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
        test_only_do_not_require_pvn_wrapper: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "poll_interval", b"poll_interval", "retry_policy", b"retry_policy", "task_config", b"task_config"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["env", b"env", "exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "poll_interval", b"poll_interval", "retry_policy", b"retry_policy", "task_config", b"task_config", "test_only_do_not_require_pvn_wrapper", b"test_only_do_not_require_pvn_wrapper"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["exec_config", b"exec_config"]) -> typing_extensions.Literal["task_config", "kubernetes_config"] | None: ...

global___ExtensionGetInfoCommand = ExtensionGetInfoCommand

class ExtensionApplyCommand(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: ...

    TASK_CONFIG_FIELD_NUMBER: builtins.int
    KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
    TIMEOUT_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    RETRY_POLICY_FIELD_NUMBER: builtins.int
    RETRYABLE_EXIT_CODES_FIELD_NUMBER: builtins.int
    @property
    def task_config(self) -> prodvana.proto.prodvana.common_config.task_pb2.TaskConfig: ...
    @property
    def kubernetes_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig: ...
    @property
    def timeout(self) -> google.protobuf.duration_pb2.Duration:
        """deprecated, not used"""
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]:
        """optional env variables to inject and override from exec_config"""
    @property
    def retry_policy(self) -> global___RetryPolicy:
        """used in conjunction with retryable_exit_codes, defaults to the convergence grace period"""
    @property
    def retryable_exit_codes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """if set and the apply command returns these exit codes, retry the command without marking the result as failing."""
    def __init__(
        self,
        *,
        task_config: prodvana.proto.prodvana.common_config.task_pb2.TaskConfig | None = ...,
        kubernetes_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        timeout: google.protobuf.duration_pb2.Duration | None = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
        retry_policy: global___RetryPolicy | None = ...,
        retryable_exit_codes: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "retry_policy", b"retry_policy", "task_config", b"task_config", "timeout", b"timeout"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["env", b"env", "exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "retry_policy", b"retry_policy", "retryable_exit_codes", b"retryable_exit_codes", "task_config", b"task_config", "timeout", b"timeout"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["exec_config", b"exec_config"]) -> typing_extensions.Literal["task_config", "kubernetes_config"] | None: ...

global___ExtensionApplyCommand = ExtensionApplyCommand

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

    APPLY_FIELD_NUMBER: builtins.int
    FETCH_FIELD_NUMBER: builtins.int
    DEBUG_FIELD_NUMBER: builtins.int
    GET_INFO_FIELD_NUMBER: builtins.int
    PARAMETERS_FIELD_NUMBER: builtins.int
    PROXY_RUNTIME_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    REQUIRE_APPROVAL_BEFORE_APPLY_FIELD_NUMBER: builtins.int
    CONVERGENCE_GRACE_PERIOD_FIELD_NUMBER: builtins.int
    @property
    def apply(self) -> global___ExtensionApplyCommand: ...
    @property
    def fetch(self) -> global___ExtensionFetchCommand: ...
    @property
    def debug(self) -> global___ExtensionGetInfoCommand:
        """deprecated, set this as get_info instead"""
    @property
    def get_info(self) -> global___ExtensionGetInfoCommand: ...
    @property
    def parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition]: ...
    @property
    def proxy_runtime(self) -> prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig: ...
    type: global___ExtensionType.ValueType
    require_approval_before_apply: builtins.bool
    """Apply is potentially dangerous - require approval before each apply"""
    @property
    def convergence_grace_period(self) -> google.protobuf.duration_pb2.Duration:
        """How long after apply ran the first time should it be restarted if the service still has not converged.
        This duration is computed from the *start* of apply run.
        Defaults to 10m.
        next tag: 10
        """
    def __init__(
        self,
        *,
        apply: global___ExtensionApplyCommand | None = ...,
        fetch: global___ExtensionFetchCommand | None = ...,
        debug: global___ExtensionGetInfoCommand | None = ...,
        get_info: global___ExtensionGetInfoCommand | None = ...,
        parameters: collections.abc.Iterable[prodvana.proto.prodvana.common_config.parameters_pb2.ParameterDefinition] | None = ...,
        proxy_runtime: prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig | None = ...,
        type: global___ExtensionType.ValueType = ...,
        require_approval_before_apply: builtins.bool = ...,
        convergence_grace_period: google.protobuf.duration_pb2.Duration | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["apply", b"apply", "convergence_grace_period", b"convergence_grace_period", "debug", b"debug", "fetch", b"fetch", "get_info", b"get_info", "proxy_runtime", b"proxy_runtime"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["apply", b"apply", "convergence_grace_period", b"convergence_grace_period", "debug", b"debug", "fetch", b"fetch", "get_info", b"get_info", "parameters", b"parameters", "proxy_runtime", b"proxy_runtime", "require_approval_before_apply", b"require_approval_before_apply", "type", b"type"]) -> None: ...

global___ExtensionClusterConfig = ExtensionClusterConfig

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

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

        TASK_CONFIG_FIELD_NUMBER: builtins.int
        KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
        @property
        def task_config(self) -> prodvana.proto.prodvana.common_config.task_pb2.TaskConfig: ...
        @property
        def kubernetes_config(self) -> prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig: ...
        def __init__(
            self,
            *,
            task_config: prodvana.proto.prodvana.common_config.task_pb2.TaskConfig | None = ...,
            kubernetes_config: prodvana.proto.prodvana.common_config.kubernetes_config_pb2.KubernetesConfig | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "task_config", b"task_config"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "task_config", b"task_config"]) -> None: ...
        def WhichOneof(self, oneof_group: typing_extensions.Literal["exec_config", b"exec_config"]) -> typing_extensions.Literal["task_config", "kubernetes_config"] | None: ...

    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_PREFIX_FIELD_NUMBER: builtins.int
    COMMAND_FIELD_NUMBER: builtins.int
    RUNTIME_EXECUTION_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    name_prefix: builtins.str
    @property
    def command(self) -> global___CompiledExtensionCommand.CompiledExtensionCommandExec:
        """weird nesting for compatibility reasons, from before fetch and apply definitions were split"""
    @property
    def runtime_execution(self) -> prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig: ...
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]: ...
    def __init__(
        self,
        *,
        name_prefix: builtins.str = ...,
        command: global___CompiledExtensionCommand.CompiledExtensionCommandExec | None = ...,
        runtime_execution: prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig | None = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["command", b"command", "runtime_execution", b"runtime_execution"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["command", b"command", "env", b"env", "name_prefix", b"name_prefix", "runtime_execution", b"runtime_execution"]) -> None: ...

global___CompiledExtensionCommand = CompiledExtensionCommand

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

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

global___IacRunnerCommand = IacRunnerCommand

class TerraformRunnerConfig(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: ...

    PROXY_RUNTIME_FIELD_NUMBER: builtins.int
    ENV_FIELD_NUMBER: builtins.int
    VOLUMES_FIELD_NUMBER: builtins.int
    PRE_RUN_FIELD_NUMBER: builtins.int
    POLL_INTERVAL_FIELD_NUMBER: builtins.int
    STEADY_STATE_POLL_INTERVAL_FIELD_NUMBER: builtins.int
    REQUIRE_APPROVAL_BEFORE_APPLY_FIELD_NUMBER: builtins.int
    CONVERGENCE_GRACE_PERIOD_FIELD_NUMBER: builtins.int
    FETCH_RETRY_POLICY_FIELD_NUMBER: builtins.int
    APPLY_RETRY_POLICY_FIELD_NUMBER: builtins.int
    DISABLE_DRIFT_DETECTION_FIELD_NUMBER: builtins.int
    @property
    def proxy_runtime(self) -> prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig: ...
    @property
    def env(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue]:
        """optional env variables to pass to terraform commands, can be useful for passing secrets"""
    @property
    def volumes(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.volumes.volumes_pb2.Volume]:
        """optional volumes to mount into terraform containers"""
    @property
    def pre_run(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___IacRunnerCommand]:
        """commands that must run before terraform can run, e.g. gcloud auth login"""
    @property
    def poll_interval(self) -> google.protobuf.duration_pb2.Duration:
        """Poll interval for terraform plan when not converged, defaults to 5 minutes. Polling takes a lock on terraform state file, so increase this if you run terraform plan locally often."""
    @property
    def steady_state_poll_interval(self) -> google.protobuf.duration_pb2.Duration:
        """Poll interval for terraform plan in steady state (after it has converged), defaults to 1 hour. During steady state, polling is used for drift detection.
        This is the min duration of time for which drift not being detected is OK.
        """
    require_approval_before_apply: builtins.bool
    """Require approval before every apply operation - this is on top of any release channel-level approvals."""
    @property
    def convergence_grace_period(self) -> google.protobuf.duration_pb2.Duration: ...
    @property
    def fetch_retry_policy(self) -> global___RetryPolicy:
        """override default retry policy. Default is min = 1m, max = 15m."""
    @property
    def apply_retry_policy(self) -> global___RetryPolicy:
        """override apply retry policy. Default is min = 30s, max = 5m."""
    disable_drift_detection: builtins.bool
    """Skip drift detection. This is useful for faster convergence on updates, but can lead to drift going undetected.
    When enabled, steady state polling is turned off.
    NOTE: Only supported in Pulumi today.
    next tag: 12
    """
    def __init__(
        self,
        *,
        proxy_runtime: prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig | None = ...,
        env: collections.abc.Mapping[builtins.str, prodvana.proto.prodvana.common_config.env_pb2.EnvValue] | None = ...,
        volumes: collections.abc.Iterable[prodvana.proto.prodvana.volumes.volumes_pb2.Volume] | None = ...,
        pre_run: collections.abc.Iterable[global___IacRunnerCommand] | None = ...,
        poll_interval: google.protobuf.duration_pb2.Duration | None = ...,
        steady_state_poll_interval: google.protobuf.duration_pb2.Duration | None = ...,
        require_approval_before_apply: builtins.bool = ...,
        convergence_grace_period: google.protobuf.duration_pb2.Duration | None = ...,
        fetch_retry_policy: global___RetryPolicy | None = ...,
        apply_retry_policy: global___RetryPolicy | None = ...,
        disable_drift_detection: builtins.bool = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["apply_retry_policy", b"apply_retry_policy", "convergence_grace_period", b"convergence_grace_period", "fetch_retry_policy", b"fetch_retry_policy", "poll_interval", b"poll_interval", "proxy_runtime", b"proxy_runtime", "steady_state_poll_interval", b"steady_state_poll_interval"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["apply_retry_policy", b"apply_retry_policy", "convergence_grace_period", b"convergence_grace_period", "disable_drift_detection", b"disable_drift_detection", "env", b"env", "fetch_retry_policy", b"fetch_retry_policy", "poll_interval", b"poll_interval", "pre_run", b"pre_run", "proxy_runtime", b"proxy_runtime", "require_approval_before_apply", b"require_approval_before_apply", "steady_state_poll_interval", b"steady_state_poll_interval", "volumes", b"volumes"]) -> None: ...

global___TerraformRunnerConfig = TerraformRunnerConfig

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

    PROJECT_NAME_FIELD_NUMBER: builtins.int
    CLUSTER_LOCATION_FIELD_NUMBER: builtins.int
    CLUSTER_NAME_FIELD_NUMBER: builtins.int
    project_name: builtins.str
    cluster_location: builtins.str
    cluster_name: builtins.str
    def __init__(
        self,
        *,
        project_name: builtins.str = ...,
        cluster_location: builtins.str = ...,
        cluster_name: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["cluster_location", b"cluster_location", "cluster_name", b"cluster_name", "project_name", b"project_name"]) -> None: ...

global___GKEClusterMetadata = GKEClusterMetadata

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

    GKE_FIELD_NUMBER: builtins.int
    @property
    def gke(self) -> global___GKEClusterMetadata: ...
    def __init__(
        self,
        *,
        gke: global___GKEClusterMetadata | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["cluster_metadata", b"cluster_metadata", "gke", b"gke"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["cluster_metadata", b"cluster_metadata", "gke", b"gke"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["cluster_metadata", b"cluster_metadata"]) -> typing_extensions.Literal["gke"] | None: ...

global___ClusterMetadata = ClusterMetadata

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

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

        AWS_ACCESS_KEY_ID_FIELD_NUMBER: builtins.int
        AWS_SECRET_ACCESS_KEY_FIELD_NUMBER: builtins.int
        aws_access_key_id: builtins.str
        @property
        def aws_secret_access_key(self) -> prodvana.proto.prodvana.common_config.env_pb2.SecretReferenceValue: ...
        def __init__(
            self,
            *,
            aws_access_key_id: builtins.str = ...,
            aws_secret_access_key: prodvana.proto.prodvana.common_config.env_pb2.SecretReferenceValue | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal["aws_secret_access_key", b"aws_secret_access_key"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal["aws_access_key_id", b"aws_access_key_id", "aws_secret_access_key", b"aws_secret_access_key"]) -> None: ...

    PROXY_RUNTIME_FIELD_NUMBER: builtins.int
    ACCESS_KEY_FIELD_NUMBER: builtins.int
    REGION_FIELD_NUMBER: builtins.int
    ECS_CLUSTER_FIELD_NUMBER: builtins.int
    @property
    def proxy_runtime(self) -> prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig: ...
    @property
    def access_key(self) -> global___AwsEcsConfig.AccessKey:
        """TODO(naphat) assumeRole support"""
    region: builtins.str
    ecs_cluster: builtins.str
    def __init__(
        self,
        *,
        proxy_runtime: prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig | None = ...,
        access_key: global___AwsEcsConfig.AccessKey | None = ...,
        region: builtins.str = ...,
        ecs_cluster: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["access_key", b"access_key", "credentials", b"credentials", "proxy_runtime", b"proxy_runtime"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["access_key", b"access_key", "credentials", b"credentials", "ecs_cluster", b"ecs_cluster", "proxy_runtime", b"proxy_runtime", "region", b"region"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["credentials", b"credentials"]) -> typing_extensions.Literal["access_key"] | None: ...

global___AwsEcsConfig = AwsEcsConfig

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

    PROXY_RUNTIME_FIELD_NUMBER: builtins.int
    SERVICE_ACCOUNT_JSON_FIELD_NUMBER: builtins.int
    PROJECT_FIELD_NUMBER: builtins.int
    REGION_FIELD_NUMBER: builtins.int
    @property
    def proxy_runtime(self) -> prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig: ...
    @property
    def service_account_json(self) -> prodvana.proto.prodvana.common_config.env_pb2.SecretReferenceValue:
        """TODO(naphat) support for job service account name"""
    project: builtins.str
    region: builtins.str
    """next tag: 5"""
    def __init__(
        self,
        *,
        proxy_runtime: prodvana.proto.prodvana.runtimes.runtimes_config_pb2.RuntimeExecutionConfig | None = ...,
        service_account_json: prodvana.proto.prodvana.common_config.env_pb2.SecretReferenceValue | None = ...,
        project: builtins.str = ...,
        region: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["credentials", b"credentials", "proxy_runtime", b"proxy_runtime", "service_account_json", b"service_account_json"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["credentials", b"credentials", "project", b"project", "proxy_runtime", b"proxy_runtime", "region", b"region", "service_account_json", b"service_account_json"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["credentials", b"credentials"]) -> typing_extensions.Literal["service_account_json"] | None: ...

global___GoogleCloudRunConfig = GoogleCloudRunConfig

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

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

    class _CloudProviderEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClusterConfig._CloudProvider.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: ClusterConfig._CloudProvider.ValueType  # 0
        EKS: ClusterConfig._CloudProvider.ValueType  # 1
        GKE: ClusterConfig._CloudProvider.ValueType  # 2
        AKS: ClusterConfig._CloudProvider.ValueType  # 3
        ONPREM: ClusterConfig._CloudProvider.ValueType  # 4
        OTHER_CLOUD: ClusterConfig._CloudProvider.ValueType  # 5

    class CloudProvider(_CloudProvider, metaclass=_CloudProviderEnumTypeWrapper): ...
    UNKNOWN: ClusterConfig.CloudProvider.ValueType  # 0
    EKS: ClusterConfig.CloudProvider.ValueType  # 1
    GKE: ClusterConfig.CloudProvider.ValueType  # 2
    AKS: ClusterConfig.CloudProvider.ValueType  # 3
    ONPREM: ClusterConfig.CloudProvider.ValueType  # 4
    OTHER_CLOUD: ClusterConfig.CloudProvider.ValueType  # 5

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

        ENABLED_FIELD_NUMBER: builtins.int
        KUBECOST_NAMESPACE_FIELD_NUMBER: builtins.int
        MANAGED_FIELD_NUMBER: builtins.int
        enabled: builtins.bool
        kubecost_namespace: builtins.str
        managed: builtins.bool
        """deprecated"""
        def __init__(
            self,
            *,
            enabled: builtins.bool = ...,
            kubecost_namespace: builtins.str = ...,
            managed: builtins.bool = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "kubecost_namespace", b"kubecost_namespace", "managed", b"managed"]) -> None: ...

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

        ENABLED_FIELD_NUMBER: builtins.int
        DATADOG_NAMESPACE_FIELD_NUMBER: builtins.int
        API_KEY_FIELD_NUMBER: builtins.int
        SITE_FIELD_NUMBER: builtins.int
        MANAGED_FIELD_NUMBER: builtins.int
        enabled: builtins.bool
        datadog_namespace: builtins.str
        api_key: builtins.str
        site: builtins.str
        managed: builtins.bool
        """deprecated"""
        def __init__(
            self,
            *,
            enabled: builtins.bool = ...,
            datadog_namespace: builtins.str = ...,
            api_key: builtins.str = ...,
            site: builtins.str = ...,
            managed: builtins.bool = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["api_key", b"api_key", "datadog_namespace", b"datadog_namespace", "enabled", b"enabled", "managed", b"managed", "site", b"site"]) -> None: ...

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

        ENABLED_FIELD_NUMBER: builtins.int
        INGRESS_CLASS_FIELD_NUMBER: builtins.int
        DEFAULT_BALANCER_ATTRIBUTES_FIELD_NUMBER: builtins.int
        enabled: builtins.bool
        ingress_class: builtins.str
        @property
        def default_balancer_attributes(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
            """Attributes from https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#load-balancer-attributes
            that are added to all Ingresses/LBs created in this runtime.
            """
        def __init__(
            self,
            *,
            enabled: builtins.bool = ...,
            ingress_class: builtins.str = ...,
            default_balancer_attributes: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["default_balancer_attributes", b"default_balancer_attributes", "enabled", b"enabled", "ingress_class", b"ingress_class"]) -> None: ...

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

        class AnalysisTemplate(google.protobuf.message.Message):
            """deprecated"""

            DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

            class _ArgValueEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ClusterConfig.ArgoRollouts.AnalysisTemplate._ArgValue.ValueType], builtins.type):  # noqa: F821
                DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
                UNKNOWN: ClusterConfig.ArgoRollouts.AnalysisTemplate._ArgValue.ValueType  # 0
                SERVICE: ClusterConfig.ArgoRollouts.AnalysisTemplate._ArgValue.ValueType  # 1
                RELEASE_CHANNEL: ClusterConfig.ArgoRollouts.AnalysisTemplate._ArgValue.ValueType  # 2

            class ArgValue(_ArgValue, metaclass=_ArgValueEnumTypeWrapper): ...
            UNKNOWN: ClusterConfig.ArgoRollouts.AnalysisTemplate.ArgValue.ValueType  # 0
            SERVICE: ClusterConfig.ArgoRollouts.AnalysisTemplate.ArgValue.ValueType  # 1
            RELEASE_CHANNEL: ClusterConfig.ArgoRollouts.AnalysisTemplate.ArgValue.ValueType  # 2

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

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

            NAME_FIELD_NUMBER: builtins.int
            ARG_MAPPING_FIELD_NUMBER: builtins.int
            name: builtins.str
            @property
            def arg_mapping(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, global___ClusterConfig.ArgoRollouts.AnalysisTemplate.ArgValue.ValueType]:
                """template argument name to prodvana value to inject"""
            def __init__(
                self,
                *,
                name: builtins.str = ...,
                arg_mapping: collections.abc.Mapping[builtins.str, global___ClusterConfig.ArgoRollouts.AnalysisTemplate.ArgValue.ValueType] | None = ...,
            ) -> None: ...
            def ClearField(self, field_name: typing_extensions.Literal["arg_mapping", b"arg_mapping", "name", b"name"]) -> None: ...

        ENABLED_FIELD_NUMBER: builtins.int
        TEMPLATES_FIELD_NUMBER: builtins.int
        enabled: builtins.bool
        @property
        def templates(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ClusterConfig.ArgoRollouts.AnalysisTemplate]:
            """deprecated"""
        def __init__(
            self,
            *,
            enabled: builtins.bool = ...,
            templates: collections.abc.Iterable[global___ClusterConfig.ArgoRollouts.AnalysisTemplate] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "templates", b"templates"]) -> None: ...

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

        ENABLED_FIELD_NUMBER: builtins.int
        CONTAINER_NATIVE_FIELD_NUMBER: builtins.int
        enabled: builtins.bool
        container_native: builtins.bool
        """Enables container native load balancing, allowing GCP LBs to target k8s pods directly.
        See: https://cloud.google.com/kubernetes-engine/docs/how-to/container-native-load-balancing
        """
        def __init__(
            self,
            *,
            enabled: builtins.bool = ...,
            container_native: builtins.bool = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["container_native", b"container_native", "enabled", b"enabled"]) -> None: ...

    NAME_FIELD_NUMBER: builtins.int
    KUBECOST_FIELD_NUMBER: builtins.int
    DATADOG_FIELD_NUMBER: builtins.int
    ALB_INGRESS_FIELD_NUMBER: builtins.int
    ARGO_ROLLOUTS_FIELD_NUMBER: builtins.int
    GKE_INGRESS_FIELD_NUMBER: builtins.int
    SELF_MANAGED_GKE_INGRESS_FIELD_NUMBER: builtins.int
    CLOUD_PROVIDER_FIELD_NUMBER: builtins.int
    DETECTED_CLUSTER_METADATA_FIELD_NUMBER: builtins.int
    USER_SUPPLIED_CLUSTER_METADATA_FIELD_NUMBER: builtins.int
    FAKE_FIELD_NUMBER: builtins.int
    EXTENSION_FIELD_NUMBER: builtins.int
    TERRAFORM_RUNNER_FIELD_NUMBER: builtins.int
    PULUMI_RUNNER_FIELD_NUMBER: builtins.int
    AWS_ECS_FIELD_NUMBER: builtins.int
    GOOGLE_CLOUD_RUN_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    AUTO_ROLLBACK_FIELD_NUMBER: builtins.int
    name: builtins.str
    @property
    def kubecost(self) -> global___ClusterConfig.Kubecost: ...
    @property
    def datadog(self) -> global___ClusterConfig.Datadog: ...
    @property
    def alb_ingress(self) -> global___ClusterConfig.ALBIngress: ...
    @property
    def argo_rollouts(self) -> global___ClusterConfig.ArgoRollouts: ...
    @property
    def gke_ingress(self) -> global___ClusterConfig.GKEIngress: ...
    @property
    def self_managed_gke_ingress(self) -> global___ClusterConfig.GKEIngress:
        """Self-Managed GKE Ingress - exposes configuration options for GKE Ingress
        but does not create an ingress object for you
        """
    cloud_provider: global___ClusterConfig.CloudProvider.ValueType
    @property
    def detected_cluster_metadata(self) -> global___ClusterMetadata: ...
    @property
    def user_supplied_cluster_metadata(self) -> global___ClusterMetadata: ...
    @property
    def fake(self) -> global___FakeClusterConfig:
        """only used for fake runtimes"""
    @property
    def extension(self) -> global___ExtensionClusterConfig: ...
    @property
    def terraform_runner(self) -> global___TerraformRunnerConfig:
        """terraform runner is a runtime that runs terraform via k8s jobs"""
    @property
    def pulumi_runner(self) -> global___TerraformRunnerConfig:
        """pulumi runner is a runtime that runs pulumi via k8s jobs"""
    @property
    def aws_ecs(self) -> global___AwsEcsConfig: ...
    @property
    def google_cloud_run(self) -> global___GoogleCloudRunConfig: ...
    @property
    def labels(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[prodvana.proto.prodvana.labels.labels_pb2.LabelDefinition]: ...
    @property
    def auto_rollback(self) -> prodvana.proto.prodvana.common_config.rollback_pb2.AutoRollbackConfig: ...
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        kubecost: global___ClusterConfig.Kubecost | None = ...,
        datadog: global___ClusterConfig.Datadog | None = ...,
        alb_ingress: global___ClusterConfig.ALBIngress | None = ...,
        argo_rollouts: global___ClusterConfig.ArgoRollouts | None = ...,
        gke_ingress: global___ClusterConfig.GKEIngress | None = ...,
        self_managed_gke_ingress: global___ClusterConfig.GKEIngress | None = ...,
        cloud_provider: global___ClusterConfig.CloudProvider.ValueType = ...,
        detected_cluster_metadata: global___ClusterMetadata | None = ...,
        user_supplied_cluster_metadata: global___ClusterMetadata | None = ...,
        fake: global___FakeClusterConfig | None = ...,
        extension: global___ExtensionClusterConfig | None = ...,
        terraform_runner: global___TerraformRunnerConfig | None = ...,
        pulumi_runner: global___TerraformRunnerConfig | None = ...,
        aws_ecs: global___AwsEcsConfig | None = ...,
        google_cloud_run: global___GoogleCloudRunConfig | None = ...,
        labels: collections.abc.Iterable[prodvana.proto.prodvana.labels.labels_pb2.LabelDefinition] | None = ...,
        auto_rollback: prodvana.proto.prodvana.common_config.rollback_pb2.AutoRollbackConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["alb_ingress", b"alb_ingress", "argo_rollouts", b"argo_rollouts", "auto_rollback", b"auto_rollback", "aws_ecs", b"aws_ecs", "cluster_oneof", b"cluster_oneof", "datadog", b"datadog", "detected_cluster_metadata", b"detected_cluster_metadata", "extension", b"extension", "fake", b"fake", "gke_ingress", b"gke_ingress", "google_cloud_run", b"google_cloud_run", "kubecost", b"kubecost", "pulumi_runner", b"pulumi_runner", "self_managed_gke_ingress", b"self_managed_gke_ingress", "terraform_runner", b"terraform_runner", "user_supplied_cluster_metadata", b"user_supplied_cluster_metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["alb_ingress", b"alb_ingress", "argo_rollouts", b"argo_rollouts", "auto_rollback", b"auto_rollback", "aws_ecs", b"aws_ecs", "cloud_provider", b"cloud_provider", "cluster_oneof", b"cluster_oneof", "datadog", b"datadog", "detected_cluster_metadata", b"detected_cluster_metadata", "extension", b"extension", "fake", b"fake", "gke_ingress", b"gke_ingress", "google_cloud_run", b"google_cloud_run", "kubecost", b"kubecost", "labels", b"labels", "name", b"name", "pulumi_runner", b"pulumi_runner", "self_managed_gke_ingress", b"self_managed_gke_ingress", "terraform_runner", b"terraform_runner", "user_supplied_cluster_metadata", b"user_supplied_cluster_metadata"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["cluster_oneof", b"cluster_oneof"]) -> typing_extensions.Literal["fake", "extension", "terraform_runner", "pulumi_runner", "aws_ecs", "google_cloud_run"] | None: ...

global___ClusterConfig = ClusterConfig
