# This file was auto-generated by Fern from our API Definition.

import typing

from ..core import enum

T_Result = typing.TypeVar("T_Result")


class ClusterManifestClusterType(enum.StrEnum):
    """
    The cluster type of this cluster
    """

    AWS_EKS = "aws-eks"
    GCP_GKE_STANDARD = "gcp-gke-standard"
    AZURE_AKS = "azure-aks"
    GENERIC = "generic"
    CIVO_TALOS = "civo-talos"

    def visit(
        self,
        aws_eks: typing.Callable[[], T_Result],
        gcp_gke_standard: typing.Callable[[], T_Result],
        azure_aks: typing.Callable[[], T_Result],
        generic: typing.Callable[[], T_Result],
        civo_talos: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ClusterManifestClusterType.AWS_EKS:
            return aws_eks()
        if self is ClusterManifestClusterType.GCP_GKE_STANDARD:
            return gcp_gke_standard()
        if self is ClusterManifestClusterType.AZURE_AKS:
            return azure_aks()
        if self is ClusterManifestClusterType.GENERIC:
            return generic()
        if self is ClusterManifestClusterType.CIVO_TALOS:
            return civo_talos()
