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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class Region(str, enum.Enum):
    """
    An enumeration.
    """

    US = "us"
    EU = "eu"
    SG = "sg"
    DE = "de"
    AU = "au"
    BR = "br"
    NL = "nl"
    FR = "fr"
    CA = "ca"

    def visit(
        self,
        us: typing.Callable[[], T_Result],
        eu: typing.Callable[[], T_Result],
        sg: typing.Callable[[], T_Result],
        de: typing.Callable[[], T_Result],
        au: typing.Callable[[], T_Result],
        br: typing.Callable[[], T_Result],
        nl: typing.Callable[[], T_Result],
        fr: typing.Callable[[], T_Result],
        ca: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is Region.US:
            return us()
        if self is Region.EU:
            return eu()
        if self is Region.SG:
            return sg()
        if self is Region.DE:
            return de()
        if self is Region.AU:
            return au()
        if self is Region.BR:
            return br()
        if self is Region.NL:
            return nl()
        if self is Region.FR:
            return fr()
        if self is Region.CA:
            return ca()
