// HealthKit units organized by measurement type
export const HealthKitUnits = {
  // Count measurements
  Count: {
    count: 'count'
  },

  // Distance measurements
  Distance: {
    meters: 'm',
    kilometers: 'km',
    millimeters: 'mm',
    centimeters: 'cm',
    feet: 'ft',
    inches: 'in',
    miles: 'mi'
  },

  // Energy measurements
  Energy: {
    kilocalories: 'kcal',
    calories: 'cal',
    kilojoules: 'kJ'
  },

  // Time measurements
  Time: {
    seconds: 's',
    minutes: 'min',
    hours: 'hr'
  },

  // Heart rate measurements
  HeartRate: {
    beatsPerMinute: 'bpm'
  },

  // Mass measurements
  Mass: {
    kilograms: 'kg',
    grams: 'g',
    pounds: 'lb',
    ounces: 'oz'
  },

  // Temperature measurements
  Temperature: {
    celsius: '°C',
    fahrenheit: '°F'
  },

  // Pressure measurements
  Pressure: {
    millimetersOfMercury: 'mmHg'
  },

  // Blood glucose measurements
  BloodGlucose: {
    milligramsPerDeciliter: 'mg/dL',
    millimolesPerLiter: 'mmol/L'
  },

  // Percentage measurements
  Percentage: {
    percent: '%'
  },

  // Respiratory rate measurements
  RespiratoryRate: {
    breathsPerMinute: 'breaths/min'
  },

  // VO2 Max measurements
  VO2Max: {
    millilitersPerKilogramPerMinute: 'mL/kg·min'
  },

  // Heart rate variability measurements
  HeartRateVariability: {
    milliseconds: 'ms'
  }
} as const;

// Flatten all units for easy lookup
export const AllHealthKitUnits = Object.values(HealthKitUnits).reduce(
  (acc, category) => ({
    ...acc,
    ...category
  }),
  {}
) as Record<string, string>;

// Array of all units
export const HealthKitUnitsList = Object.values(AllHealthKitUnits);

// Unit mappings for specific data types
export const UnitMappings = {
  [HealthKitUnits.Count.count]: ['HKQuantityTypeIdentifierStepCount', 'HKQuantityTypeIdentifierFlightsClimbed', 'HKQuantityTypeIdentifierSwimmingStrokeCount'],
  [HealthKitUnits.Distance.meters]: ['HKQuantityTypeIdentifierDistanceWalkingRunning', 'HKQuantityTypeIdentifierDistanceCycling', 'HKQuantityTypeIdentifierDistanceSwimming'],
  [HealthKitUnits.Energy.kilocalories]: ['HKQuantityTypeIdentifierActiveEnergyBurned', 'HKQuantityTypeIdentifierBasalEnergyBurned'],
  [HealthKitUnits.Time.minutes]: ['HKQuantityTypeIdentifierAppleExerciseTime'],
  [HealthKitUnits.HeartRate.beatsPerMinute]: ['HKQuantityTypeIdentifierHeartRate', 'HKQuantityTypeIdentifierRestingHeartRate', 'HKQuantityTypeIdentifierWalkingHeartRateAverage'],
  [HealthKitUnits.Mass.kilograms]: ['HKQuantityTypeIdentifierBodyMass', 'HKQuantityTypeIdentifierLeanBodyMass'],
  [HealthKitUnits.Distance.centimeters]: ['HKQuantityTypeIdentifierHeight'],
  [HealthKitUnits.Temperature.celsius]: ['HKQuantityTypeIdentifierBodyTemperature'],
  [HealthKitUnits.Pressure.millimetersOfMercury]: ['HKQuantityTypeIdentifierBloodPressureSystolic', 'HKQuantityTypeIdentifierBloodPressureDiastolic'],
  [HealthKitUnits.BloodGlucose.milligramsPerDeciliter]: ['HKQuantityTypeIdentifierBloodGlucose'],
  [HealthKitUnits.Percentage.percent]: ['HKQuantityTypeIdentifierOxygenSaturation', 'HKQuantityTypeIdentifierBodyFatPercentage'],
  [HealthKitUnits.RespiratoryRate.breathsPerMinute]: ['HKQuantityTypeIdentifierRespiratoryRate'],
  [HealthKitUnits.VO2Max.millilitersPerKilogramPerMinute]: ['HKQuantityTypeIdentifierVO2Max'],
  [HealthKitUnits.HeartRateVariability.milliseconds]: ['HKQuantityTypeIdentifierHeartRateVariabilitySDNN']
} as const; 