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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class TimeseriesResource(str, enum.Enum):
    """
    ℹ️ This enum is non-exhaustive.
    """

    CALORIES_ACTIVE = "calories_active"
    CALORIES_BASAL = "calories_basal"
    DISTANCE = "distance"
    BLOOD_OXYGEN = "blood_oxygen"
    BLOOD_PRESSURE = "blood_pressure"
    BODY_FAT = "body_fat"
    BODY_WEIGHT = "body_weight"
    BODY_TEMPERATURE = "body_temperature"
    BODY_TEMPERATURE_DELTA = "body_temperature_delta"
    CHOLESTEROL = "cholesterol"
    CHOLESTEROL_LDL = "cholesterol/ldl"
    CHOLESTEROL_HDL = "cholesterol/hdl"
    CHOLESTEROL_TOTAL = "cholesterol/total"
    CHOLESTEROL_TRIGLYCERIDES = "cholesterol/triglycerides"
    ELECTROCARDIOGRAM_VOLTAGE = "electrocardiogram_voltage"
    FLOORS_CLIMBED = "floors_climbed"
    GLUCOSE = "glucose"
    HEARTRATE = "heartrate"
    HRV = "hrv"
    HYPNOGRAM = "hypnogram"
    IGE = "ige"
    IGG = "igg"
    RESPIRATORY_RATE = "respiratory_rate"
    STEPS = "steps"
    STRESS_LEVEL = "stress_level"
    VO_2_MAX = "vo2_max"
    WATER = "water"
    CAFFEINE = "caffeine"
    MINDFULNESS_MINUTES = "mindfulness_minutes"
    AFIB_BURDEN = "afib_burden"
    HEART_RATE_ALERT = "heart_rate_alert"
    STAND_HOUR = "stand_hour"
    STAND_DURATION = "stand_duration"
    SLEEP_APNEA_ALERT = "sleep_apnea_alert"
    SLEEP_BREATHING_DISTURBANCE = "sleep_breathing_disturbance"
    WHEELCHAIR_PUSH = "wheelchair_push"
    FORCED_EXPIRATORY_VOLUME_1 = "forced_expiratory_volume_1"
    FORCED_VITAL_CAPACITY = "forced_vital_capacity"
    PEAK_EXPIRATORY_FLOW_RATE = "peak_expiratory_flow_rate"
    INHALER_USAGE = "inhaler_usage"
    FALL = "fall"
    UV_EXPOSURE = "uv_exposure"
    DAYLIGHT_EXPOSURE = "daylight_exposure"
    HANDWASHING = "handwashing"
    BASAL_BODY_TEMPERATURE = "basal_body_temperature"
    BODY_MASS_INDEX = "body_mass_index"
    LEAN_BODY_MASS = "lean_body_mass"
    WAIST_CIRCUMFERENCE = "waist_circumference"
    HEART_RATE_RECOVERY_ONE_MINUTE = "heart_rate_recovery_one_minute"
    WORKOUT_DISTANCE = "workout_distance"
    WORKOUT_SWIMMING_STROKE = "workout_swimming_stroke"
    WORKOUT_DURATION = "workout_duration"
    INSULIN_INJECTION = "insulin_injection"
    CARBOHYDRATES = "carbohydrates"
    NOTE = "note"

    def visit(
        self,
        calories_active: typing.Callable[[], T_Result],
        calories_basal: typing.Callable[[], T_Result],
        distance: typing.Callable[[], T_Result],
        blood_oxygen: typing.Callable[[], T_Result],
        blood_pressure: typing.Callable[[], T_Result],
        body_fat: typing.Callable[[], T_Result],
        body_weight: typing.Callable[[], T_Result],
        body_temperature: typing.Callable[[], T_Result],
        body_temperature_delta: typing.Callable[[], T_Result],
        cholesterol: typing.Callable[[], T_Result],
        cholesterol_ldl: typing.Callable[[], T_Result],
        cholesterol_hdl: typing.Callable[[], T_Result],
        cholesterol_total: typing.Callable[[], T_Result],
        cholesterol_triglycerides: typing.Callable[[], T_Result],
        electrocardiogram_voltage: typing.Callable[[], T_Result],
        floors_climbed: typing.Callable[[], T_Result],
        glucose: typing.Callable[[], T_Result],
        heartrate: typing.Callable[[], T_Result],
        hrv: typing.Callable[[], T_Result],
        hypnogram: typing.Callable[[], T_Result],
        ige: typing.Callable[[], T_Result],
        igg: typing.Callable[[], T_Result],
        respiratory_rate: typing.Callable[[], T_Result],
        steps: typing.Callable[[], T_Result],
        stress_level: typing.Callable[[], T_Result],
        vo_2_max: typing.Callable[[], T_Result],
        water: typing.Callable[[], T_Result],
        caffeine: typing.Callable[[], T_Result],
        mindfulness_minutes: typing.Callable[[], T_Result],
        afib_burden: typing.Callable[[], T_Result],
        heart_rate_alert: typing.Callable[[], T_Result],
        stand_hour: typing.Callable[[], T_Result],
        stand_duration: typing.Callable[[], T_Result],
        sleep_apnea_alert: typing.Callable[[], T_Result],
        sleep_breathing_disturbance: typing.Callable[[], T_Result],
        wheelchair_push: typing.Callable[[], T_Result],
        forced_expiratory_volume_1: typing.Callable[[], T_Result],
        forced_vital_capacity: typing.Callable[[], T_Result],
        peak_expiratory_flow_rate: typing.Callable[[], T_Result],
        inhaler_usage: typing.Callable[[], T_Result],
        fall: typing.Callable[[], T_Result],
        uv_exposure: typing.Callable[[], T_Result],
        daylight_exposure: typing.Callable[[], T_Result],
        handwashing: typing.Callable[[], T_Result],
        basal_body_temperature: typing.Callable[[], T_Result],
        body_mass_index: typing.Callable[[], T_Result],
        lean_body_mass: typing.Callable[[], T_Result],
        waist_circumference: typing.Callable[[], T_Result],
        heart_rate_recovery_one_minute: typing.Callable[[], T_Result],
        workout_distance: typing.Callable[[], T_Result],
        workout_swimming_stroke: typing.Callable[[], T_Result],
        workout_duration: typing.Callable[[], T_Result],
        insulin_injection: typing.Callable[[], T_Result],
        carbohydrates: typing.Callable[[], T_Result],
        note: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is TimeseriesResource.CALORIES_ACTIVE:
            return calories_active()
        if self is TimeseriesResource.CALORIES_BASAL:
            return calories_basal()
        if self is TimeseriesResource.DISTANCE:
            return distance()
        if self is TimeseriesResource.BLOOD_OXYGEN:
            return blood_oxygen()
        if self is TimeseriesResource.BLOOD_PRESSURE:
            return blood_pressure()
        if self is TimeseriesResource.BODY_FAT:
            return body_fat()
        if self is TimeseriesResource.BODY_WEIGHT:
            return body_weight()
        if self is TimeseriesResource.BODY_TEMPERATURE:
            return body_temperature()
        if self is TimeseriesResource.BODY_TEMPERATURE_DELTA:
            return body_temperature_delta()
        if self is TimeseriesResource.CHOLESTEROL:
            return cholesterol()
        if self is TimeseriesResource.CHOLESTEROL_LDL:
            return cholesterol_ldl()
        if self is TimeseriesResource.CHOLESTEROL_HDL:
            return cholesterol_hdl()
        if self is TimeseriesResource.CHOLESTEROL_TOTAL:
            return cholesterol_total()
        if self is TimeseriesResource.CHOLESTEROL_TRIGLYCERIDES:
            return cholesterol_triglycerides()
        if self is TimeseriesResource.ELECTROCARDIOGRAM_VOLTAGE:
            return electrocardiogram_voltage()
        if self is TimeseriesResource.FLOORS_CLIMBED:
            return floors_climbed()
        if self is TimeseriesResource.GLUCOSE:
            return glucose()
        if self is TimeseriesResource.HEARTRATE:
            return heartrate()
        if self is TimeseriesResource.HRV:
            return hrv()
        if self is TimeseriesResource.HYPNOGRAM:
            return hypnogram()
        if self is TimeseriesResource.IGE:
            return ige()
        if self is TimeseriesResource.IGG:
            return igg()
        if self is TimeseriesResource.RESPIRATORY_RATE:
            return respiratory_rate()
        if self is TimeseriesResource.STEPS:
            return steps()
        if self is TimeseriesResource.STRESS_LEVEL:
            return stress_level()
        if self is TimeseriesResource.VO_2_MAX:
            return vo_2_max()
        if self is TimeseriesResource.WATER:
            return water()
        if self is TimeseriesResource.CAFFEINE:
            return caffeine()
        if self is TimeseriesResource.MINDFULNESS_MINUTES:
            return mindfulness_minutes()
        if self is TimeseriesResource.AFIB_BURDEN:
            return afib_burden()
        if self is TimeseriesResource.HEART_RATE_ALERT:
            return heart_rate_alert()
        if self is TimeseriesResource.STAND_HOUR:
            return stand_hour()
        if self is TimeseriesResource.STAND_DURATION:
            return stand_duration()
        if self is TimeseriesResource.SLEEP_APNEA_ALERT:
            return sleep_apnea_alert()
        if self is TimeseriesResource.SLEEP_BREATHING_DISTURBANCE:
            return sleep_breathing_disturbance()
        if self is TimeseriesResource.WHEELCHAIR_PUSH:
            return wheelchair_push()
        if self is TimeseriesResource.FORCED_EXPIRATORY_VOLUME_1:
            return forced_expiratory_volume_1()
        if self is TimeseriesResource.FORCED_VITAL_CAPACITY:
            return forced_vital_capacity()
        if self is TimeseriesResource.PEAK_EXPIRATORY_FLOW_RATE:
            return peak_expiratory_flow_rate()
        if self is TimeseriesResource.INHALER_USAGE:
            return inhaler_usage()
        if self is TimeseriesResource.FALL:
            return fall()
        if self is TimeseriesResource.UV_EXPOSURE:
            return uv_exposure()
        if self is TimeseriesResource.DAYLIGHT_EXPOSURE:
            return daylight_exposure()
        if self is TimeseriesResource.HANDWASHING:
            return handwashing()
        if self is TimeseriesResource.BASAL_BODY_TEMPERATURE:
            return basal_body_temperature()
        if self is TimeseriesResource.BODY_MASS_INDEX:
            return body_mass_index()
        if self is TimeseriesResource.LEAN_BODY_MASS:
            return lean_body_mass()
        if self is TimeseriesResource.WAIST_CIRCUMFERENCE:
            return waist_circumference()
        if self is TimeseriesResource.HEART_RATE_RECOVERY_ONE_MINUTE:
            return heart_rate_recovery_one_minute()
        if self is TimeseriesResource.WORKOUT_DISTANCE:
            return workout_distance()
        if self is TimeseriesResource.WORKOUT_SWIMMING_STROKE:
            return workout_swimming_stroke()
        if self is TimeseriesResource.WORKOUT_DURATION:
            return workout_duration()
        if self is TimeseriesResource.INSULIN_INJECTION:
            return insulin_injection()
        if self is TimeseriesResource.CARBOHYDRATES:
            return carbohydrates()
        if self is TimeseriesResource.NOTE:
            return note()
