"""
@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.task_pb2
import prodvana.proto.prodvana.runtimes.runtimes_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 _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
    FAKE: _ClusterType.ValueType  # 3
    EXTENSION: _ClusterType.ValueType  # 4

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

UNKNOWN: ClusterType.ValueType  # 0
K8S: ClusterType.ValueType  # 1
ECS: ClusterType.ValueType  # 2
FAKE: ClusterType.ValueType  # 3
EXTENSION: ClusterType.ValueType  # 4
global___ClusterType = ClusterType

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
        @property
        def agent_env(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
        def __init__(
            self,
            *,
            agent_env: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["agent_env", b"agent_env"]) -> None: ...

    ENDPOINT_FIELD_NUMBER: builtins.int
    CA_CERT_FIELD_NUMBER: builtins.int
    TOKEN_FIELD_NUMBER: builtins.int
    SERVICE_ACCOUNT_FIELD_NUMBER: builtins.int
    ECS_FIELD_NUMBER: builtins.int
    K8S_FIELD_NUMBER: builtins.int
    K8S_AGENT_AUTH_FIELD_NUMBER: builtins.int
    endpoint: builtins.str
    ca_cert: builtins.str
    token: builtins.str
    service_account: builtins.str
    @property
    def ecs(self) -> global___ClusterAuth.ECSAuth: ...
    @property
    def k8s(self) -> global___ClusterAuth.K8sAuth: ...
    k8s_agent_auth: builtins.bool
    def __init__(
        self,
        *,
        endpoint: builtins.str = ...,
        ca_cert: builtins.str = ...,
        token: builtins.str = ...,
        service_account: builtins.str = ...,
        ecs: global___ClusterAuth.ECSAuth | None = ...,
        k8s: global___ClusterAuth.K8sAuth | None = ...,
        k8s_agent_auth: builtins.bool = ...,
    ) -> 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", "ca_cert", b"ca_cert", "ecs", b"ecs", "endpoint", b"endpoint", "k8s", b"k8s", "k8s_agent_auth", b"k8s_agent_auth", "service_account", b"service_account", "token", b"token"]) -> 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

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

    class _OriginEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[Cluster._Origin.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        UNKNOWN: Cluster._Origin.ValueType  # 0
        PRODVANA: Cluster._Origin.ValueType  # 1
        """our infra created it"""
        EXTERNAL: Cluster._Origin.ValueType  # 2
        """created externally and added"""

    class Origin(_Origin, metaclass=_OriginEnumTypeWrapper):
        """Origin specifies where the cluster came from."""

    UNKNOWN: Cluster.Origin.ValueType  # 0
    PRODVANA: Cluster.Origin.ValueType  # 1
    """our infra created it"""
    EXTERNAL: Cluster.Origin.ValueType  # 2
    """created externally and added"""

    NAME_FIELD_NUMBER: builtins.int
    CLUSTER_ID_FIELD_NUMBER: builtins.int
    ORIGIN_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
    origin: global___Cluster.Origin.ValueType
    @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 = ...,
        origin: global___Cluster.Origin.ValueType = ...,
        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", "origin", b"origin", "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 ExtensionCommand(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TASK_CONFIG_FIELD_NUMBER: builtins.int
    KUBERNETES_CONFIG_FIELD_NUMBER: builtins.int
    POLL_INTERVAL_FIELD_NUMBER: builtins.int
    TIMEOUT_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 timeout(self) -> google.protobuf.duration_pb2.Duration:
        """how long after a run has started to try another run if it has not completed yet"""
    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 = ...,
        timeout: google.protobuf.duration_pb2.Duration | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "poll_interval", b"poll_interval", "task_config", b"task_config", "timeout", b"timeout"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["exec_config", b"exec_config", "kubernetes_config", b"kubernetes_config", "poll_interval", b"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___ExtensionCommand = ExtensionCommand

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

    APPLY_FIELD_NUMBER: builtins.int
    FETCH_FIELD_NUMBER: builtins.int
    PARAMETERS_FIELD_NUMBER: builtins.int
    PROXY_RUNTIME_FIELD_NUMBER: builtins.int
    @property
    def apply(self) -> global___ExtensionCommand: ...
    @property
    def fetch(self) -> global___ExtensionCommand: ...
    @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: ...
    def __init__(
        self,
        *,
        apply: global___ExtensionCommand | None = ...,
        fetch: global___ExtensionCommand | 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 = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["apply", b"apply", "fetch", b"fetch", "proxy_runtime", b"proxy_runtime"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["apply", b"apply", "fetch", b"fetch", "parameters", b"parameters", "proxy_runtime", b"proxy_runtime"]) -> None: ...

global___ExtensionClusterConfig = ExtensionClusterConfig

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

    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___ExtensionCommand: ...
    @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___ExtensionCommand | 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 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
        MANAGED_FIELD_NUMBER: builtins.int
        KUBECOST_NAMESPACE_FIELD_NUMBER: builtins.int
        enabled: builtins.bool
        managed: builtins.bool
        kubecost_namespace: builtins.str
        def __init__(
            self,
            *,
            enabled: builtins.bool = ...,
            managed: builtins.bool = ...,
            kubecost_namespace: builtins.str = ...,
        ) -> 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
        MANAGED_FIELD_NUMBER: builtins.int
        DATADOG_NAMESPACE_FIELD_NUMBER: builtins.int
        API_KEY_FIELD_NUMBER: builtins.int
        SITE_FIELD_NUMBER: builtins.int
        enabled: builtins.bool
        managed: builtins.bool
        datadog_namespace: builtins.str
        api_key: builtins.str
        site: builtins.str
        def __init__(
            self,
            *,
            enabled: builtins.bool = ...,
            managed: builtins.bool = ...,
            datadog_namespace: builtins.str = ...,
            api_key: builtins.str = ...,
            site: builtins.str = ...,
        ) -> 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):
            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]: ...
        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
    DISABLE_FLAGGER_FIELD_NUMBER: builtins.int
    DISABLE_ISTIO_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
    FAKE_FIELD_NUMBER: builtins.int
    EXTENSION_FIELD_NUMBER: builtins.int
    name: builtins.str
    disable_flagger: builtins.bool
    disable_istio: builtins.bool
    @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 fake(self) -> global___FakeClusterConfig:
        """only used for fake runtimes"""
    @property
    def extension(self) -> global___ExtensionClusterConfig: ...
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        disable_flagger: builtins.bool = ...,
        disable_istio: builtins.bool = ...,
        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 = ...,
        fake: global___FakeClusterConfig | None = ...,
        extension: global___ExtensionClusterConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["alb_ingress", b"alb_ingress", "argo_rollouts", b"argo_rollouts", "cluster_oneof", b"cluster_oneof", "datadog", b"datadog", "extension", b"extension", "fake", b"fake", "gke_ingress", b"gke_ingress", "kubecost", b"kubecost", "self_managed_gke_ingress", b"self_managed_gke_ingress"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["alb_ingress", b"alb_ingress", "argo_rollouts", b"argo_rollouts", "cloud_provider", b"cloud_provider", "cluster_oneof", b"cluster_oneof", "datadog", b"datadog", "disable_flagger", b"disable_flagger", "disable_istio", b"disable_istio", "extension", b"extension", "fake", b"fake", "gke_ingress", b"gke_ingress", "kubecost", b"kubecost", "name", b"name", "self_managed_gke_ingress", b"self_managed_gke_ingress"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["cluster_oneof", b"cluster_oneof"]) -> typing_extensions.Literal["fake", "extension"] | None: ...

global___ClusterConfig = ClusterConfig
