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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ManualProviders(str, enum.Enum):
    BEURER_BLE = "beurer_ble"
    OMRON_BLE = "omron_ble"
    ACCUCHEK_BLE = "accuchek_ble"
    CONTOUR_BLE = "contour_ble"
    FREESTYLE_LIBRE_BLE = "freestyle_libre_ble"
    ONETOUCH_BLE = "onetouch_ble"
    APPLE_HEALTH_KIT = "apple_health_kit"
    MANUAL = "manual"
    HEALTH_CONNECT = "health_connect"

    def visit(
        self,
        beurer_ble: typing.Callable[[], T_Result],
        omron_ble: typing.Callable[[], T_Result],
        accuchek_ble: typing.Callable[[], T_Result],
        contour_ble: typing.Callable[[], T_Result],
        freestyle_libre_ble: typing.Callable[[], T_Result],
        onetouch_ble: typing.Callable[[], T_Result],
        apple_health_kit: typing.Callable[[], T_Result],
        manual: typing.Callable[[], T_Result],
        health_connect: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ManualProviders.BEURER_BLE:
            return beurer_ble()
        if self is ManualProviders.OMRON_BLE:
            return omron_ble()
        if self is ManualProviders.ACCUCHEK_BLE:
            return accuchek_ble()
        if self is ManualProviders.CONTOUR_BLE:
            return contour_ble()
        if self is ManualProviders.FREESTYLE_LIBRE_BLE:
            return freestyle_libre_ble()
        if self is ManualProviders.ONETOUCH_BLE:
            return onetouch_ble()
        if self is ManualProviders.APPLE_HEALTH_KIT:
            return apple_health_kit()
        if self is ManualProviders.MANUAL:
            return manual()
        if self is ManualProviders.HEALTH_CONNECT:
            return health_connect()
