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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class SandboxMcpServer(str, enum.Enum):
    """
    Supported MCP servers for sandboxing
    """

    JIRA = "jira"
    GITHUB = "github"
    SALESFORCE = "salesforce"
    HUBSPOT = "hubspot"
    NOTION = "notion"
    AIRTABLE = "airtable"
    LINEAR = "linear"
    ASANA = "asana"
    GOOGLE_SHEETS = "google_sheets"
    GOOGLE_DRIVE = "google_drive"
    GOOGLE_DOCS = "google_docs"
    GMAIL = "gmail"
    GOOGLE_CALENDAR = "google_calendar"
    GOOGLE_FORMS = "google_forms"
    CLICKUP = "clickup"
    CLOSE = "close"
    MONDAY = "monday"
    ONEDRIVE = "onedrive"
    MICROSOFT_TEAMS = "microsoft_teams"
    OUTLOOK_MAIL = "outlook_mail"
    CAL_COM = "Cal.com"
    QUICKBOOKS = "quickbooks"
    MONEYBIRD = "moneybird"
    DROPBOX = "dropbox"
    SHOPIFY = "shopify"
    OUTLOOK_CALENDAR = "outlook_calendar"
    RESEND = "resend"
    WORDPRESS = "wordpress"
    MEM0 = "mem0"
    SUPABASE = "supabase"
    SLACK = "slack"
    CONFLUENCE = "confluence"
    DISCORD = "discord"
    SNOWFLAKE = "snowflake"
    GOOGLE_CLOUD = "google_cloud"

    def visit(
        self,
        jira: typing.Callable[[], T_Result],
        github: typing.Callable[[], T_Result],
        salesforce: typing.Callable[[], T_Result],
        hubspot: typing.Callable[[], T_Result],
        notion: typing.Callable[[], T_Result],
        airtable: typing.Callable[[], T_Result],
        linear: typing.Callable[[], T_Result],
        asana: typing.Callable[[], T_Result],
        google_sheets: typing.Callable[[], T_Result],
        google_drive: typing.Callable[[], T_Result],
        google_docs: typing.Callable[[], T_Result],
        gmail: typing.Callable[[], T_Result],
        google_calendar: typing.Callable[[], T_Result],
        google_forms: typing.Callable[[], T_Result],
        clickup: typing.Callable[[], T_Result],
        close: typing.Callable[[], T_Result],
        monday: typing.Callable[[], T_Result],
        onedrive: typing.Callable[[], T_Result],
        microsoft_teams: typing.Callable[[], T_Result],
        outlook_mail: typing.Callable[[], T_Result],
        cal_com: typing.Callable[[], T_Result],
        quickbooks: typing.Callable[[], T_Result],
        moneybird: typing.Callable[[], T_Result],
        dropbox: typing.Callable[[], T_Result],
        shopify: typing.Callable[[], T_Result],
        outlook_calendar: typing.Callable[[], T_Result],
        resend: typing.Callable[[], T_Result],
        wordpress: typing.Callable[[], T_Result],
        mem0: typing.Callable[[], T_Result],
        supabase: typing.Callable[[], T_Result],
        slack: typing.Callable[[], T_Result],
        confluence: typing.Callable[[], T_Result],
        discord: typing.Callable[[], T_Result],
        snowflake: typing.Callable[[], T_Result],
        google_cloud: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is SandboxMcpServer.JIRA:
            return jira()
        if self is SandboxMcpServer.GITHUB:
            return github()
        if self is SandboxMcpServer.SALESFORCE:
            return salesforce()
        if self is SandboxMcpServer.HUBSPOT:
            return hubspot()
        if self is SandboxMcpServer.NOTION:
            return notion()
        if self is SandboxMcpServer.AIRTABLE:
            return airtable()
        if self is SandboxMcpServer.LINEAR:
            return linear()
        if self is SandboxMcpServer.ASANA:
            return asana()
        if self is SandboxMcpServer.GOOGLE_SHEETS:
            return google_sheets()
        if self is SandboxMcpServer.GOOGLE_DRIVE:
            return google_drive()
        if self is SandboxMcpServer.GOOGLE_DOCS:
            return google_docs()
        if self is SandboxMcpServer.GMAIL:
            return gmail()
        if self is SandboxMcpServer.GOOGLE_CALENDAR:
            return google_calendar()
        if self is SandboxMcpServer.GOOGLE_FORMS:
            return google_forms()
        if self is SandboxMcpServer.CLICKUP:
            return clickup()
        if self is SandboxMcpServer.CLOSE:
            return close()
        if self is SandboxMcpServer.MONDAY:
            return monday()
        if self is SandboxMcpServer.ONEDRIVE:
            return onedrive()
        if self is SandboxMcpServer.MICROSOFT_TEAMS:
            return microsoft_teams()
        if self is SandboxMcpServer.OUTLOOK_MAIL:
            return outlook_mail()
        if self is SandboxMcpServer.CAL_COM:
            return cal_com()
        if self is SandboxMcpServer.QUICKBOOKS:
            return quickbooks()
        if self is SandboxMcpServer.MONEYBIRD:
            return moneybird()
        if self is SandboxMcpServer.DROPBOX:
            return dropbox()
        if self is SandboxMcpServer.SHOPIFY:
            return shopify()
        if self is SandboxMcpServer.OUTLOOK_CALENDAR:
            return outlook_calendar()
        if self is SandboxMcpServer.RESEND:
            return resend()
        if self is SandboxMcpServer.WORDPRESS:
            return wordpress()
        if self is SandboxMcpServer.MEM0:
            return mem0()
        if self is SandboxMcpServer.SUPABASE:
            return supabase()
        if self is SandboxMcpServer.SLACK:
            return slack()
        if self is SandboxMcpServer.CONFLUENCE:
            return confluence()
        if self is SandboxMcpServer.DISCORD:
            return discord()
        if self is SandboxMcpServer.SNOWFLAKE:
            return snowflake()
        if self is SandboxMcpServer.GOOGLE_CLOUD:
            return google_cloud()
