import { HealthKitIdentifiers } from './HealthKitIdentifiers';
import { HealthKitUnits } from './HealthKitUnits';

// Enums para identificadores do HealthKit
export enum QuantityTypeIdentifier {
  // Activity & Fitness
  StepCount = 'HKQuantityTypeIdentifierStepCount',
  DistanceWalkingRunning = 'HKQuantityTypeIdentifierDistanceWalkingRunning',
  DistanceCycling = 'HKQuantityTypeIdentifierDistanceCycling',
  DistanceSwimming = 'HKQuantityTypeIdentifierDistanceSwimming',
  ActiveEnergyBurned = 'HKQuantityTypeIdentifierActiveEnergyBurned',
  BasalEnergyBurned = 'HKQuantityTypeIdentifierBasalEnergyBurned',
  AppleExerciseTime = 'HKQuantityTypeIdentifierAppleExerciseTime',
  FlightsClimbed = 'HKQuantityTypeIdentifierFlightsClimbed',
  SwimmingStrokeCount = 'HKQuantityTypeIdentifierSwimmingStrokeCount',
  ExerciseTime = 'HKQuantityTypeIdentifierExerciseTime',
  StandTime = 'HKQuantityTypeIdentifierStandTime',
  PushCount = 'HKQuantityTypeIdentifierPushCount',
  DistanceWheelchair = 'HKQuantityTypeIdentifierDistanceWheelchair',
  DistanceDownhillSnowSports = 'HKQuantityTypeIdentifierDistanceDownhillSnowSports',

  // Heart
  HeartRate = 'HKQuantityTypeIdentifierHeartRate',
  RestingHeartRate = 'HKQuantityTypeIdentifierRestingHeartRate',
  WalkingHeartRateAverage = 'HKQuantityTypeIdentifierWalkingHeartRateAverage',
  HeartRateVariabilitySDNN = 'HKQuantityTypeIdentifierHeartRateVariabilitySDNN',
  IrregularHeartRhythmEvent = 'HKQuantityTypeIdentifierIrregularHeartRhythmEvent',
  HighHeartRateEvent = 'HKQuantityTypeIdentifierHighHeartRateEvent',
  LowHeartRateEvent = 'HKQuantityTypeIdentifierLowHeartRateEvent',

  // Body Measurements
  Height = 'HKQuantityTypeIdentifierHeight',
  BodyMass = 'HKQuantityTypeIdentifierBodyMass',
  BodyFatPercentage = 'HKQuantityTypeIdentifierBodyFatPercentage',
  LeanBodyMass = 'HKQuantityTypeIdentifierLeanBodyMass',
  BodyTemperature = 'HKQuantityTypeIdentifierBodyTemperature',
  WaistCircumference = 'HKQuantityTypeIdentifierWaistCircumference',
  HipCircumference = 'HKQuantityTypeIdentifierHipCircumference',
  HeadCircumference = 'HKQuantityTypeIdentifierHeadCircumference',
  BodyMassIndex = 'HKQuantityTypeIdentifierBodyMassIndex',

  // Vitals
  BloodPressureSystolic = 'HKQuantityTypeIdentifierBloodPressureSystolic',
  BloodPressureDiastolic = 'HKQuantityTypeIdentifierBloodPressureDiastolic',
  OxygenSaturation = 'HKQuantityTypeIdentifierOxygenSaturation',
  RespiratoryRate = 'HKQuantityTypeIdentifierRespiratoryRate',
  PeripheralPerfusionIndex = 'HKQuantityTypeIdentifierPeripheralPerfusionIndex',

  // Lab Results
  BloodGlucose = 'HKQuantityTypeIdentifierBloodGlucose',
  VO2Max = 'HKQuantityTypeIdentifierVO2Max',
  BloodAlcoholContent = 'HKQuantityTypeIdentifierBloodAlcoholContent',
  BloodTypeA = 'HKQuantityTypeIdentifierBloodTypeA',
  BloodTypeB = 'HKQuantityTypeIdentifierBloodTypeB',
  BloodTypeAB = 'HKQuantityTypeIdentifierBloodTypeAB',
  BloodTypeO = 'HKQuantityTypeIdentifierBloodTypeO',
  InsulinDelivery = 'HKQuantityTypeIdentifierInsulinDelivery',
  NumberOfTimesFallen = 'HKQuantityTypeIdentifierNumberOfTimesFallen',
  ElectrodermalActivity = 'HKQuantityTypeIdentifierElectrodermalActivity',
  InhalerUsage = 'HKQuantityTypeIdentifierInhalerUsage',

  // Nutrition
  DietaryEnergy = 'HKQuantityTypeIdentifierDietaryEnergy',
  DietaryFatTotal = 'HKQuantityTypeIdentifierDietaryFatTotal',
  DietaryFatPolyunsaturated = 'HKQuantityTypeIdentifierDietaryFatPolyunsaturated',
  DietaryFatMonounsaturated = 'HKQuantityTypeIdentifierDietaryFatMonounsaturated',
  DietaryFatSaturated = 'HKQuantityTypeIdentifierDietaryFatSaturated',
  DietaryCholesterol = 'HKQuantityTypeIdentifierDietaryCholesterol',
  DietarySodium = 'HKQuantityTypeIdentifierDietarySodium',
  DietaryCarbohydrates = 'HKQuantityTypeIdentifierDietaryCarbohydrates',
  DietaryFiber = 'HKQuantityTypeIdentifierDietaryFiber',
  DietarySugar = 'HKQuantityTypeIdentifierDietarySugar',
  DietaryProtein = 'HKQuantityTypeIdentifierDietaryProtein',
  DietaryVitaminA = 'HKQuantityTypeIdentifierDietaryVitaminA',
  DietaryVitaminB6 = 'HKQuantityTypeIdentifierDietaryVitaminB6',
  DietaryVitaminB12 = 'HKQuantityTypeIdentifierDietaryVitaminB12',
  DietaryVitaminC = 'HKQuantityTypeIdentifierDietaryVitaminC',
  DietaryVitaminD = 'HKQuantityTypeIdentifierDietaryVitaminD',
  DietaryVitaminE = 'HKQuantityTypeIdentifierDietaryVitaminE',
  DietaryVitaminK = 'HKQuantityTypeIdentifierDietaryVitaminK',
  DietaryCalcium = 'HKQuantityTypeIdentifierDietaryCalcium',
  DietaryIron = 'HKQuantityTypeIdentifierDietaryIron',
  DietaryThiamin = 'HKQuantityTypeIdentifierDietaryThiamin',
  DietaryRiboflavin = 'HKQuantityTypeIdentifierDietaryRiboflavin',
  DietaryNiacin = 'HKQuantityTypeIdentifierDietaryNiacin',
  DietaryFolate = 'HKQuantityTypeIdentifierDietaryFolate',
  DietaryBiotin = 'HKQuantityTypeIdentifierDietaryBiotin',
  DietaryPantothenicAcid = 'HKQuantityTypeIdentifierDietaryPantothenicAcid',
  DietaryPhosphorus = 'HKQuantityTypeIdentifierDietaryPhosphorus',
  DietaryIodine = 'HKQuantityTypeIdentifierDietaryIodine',
  DietaryMagnesium = 'HKQuantityTypeIdentifierDietaryMagnesium',
  DietaryZinc = 'HKQuantityTypeIdentifierDietaryZinc',
  DietarySelenium = 'HKQuantityTypeIdentifierDietarySelenium',
  DietaryCopper = 'HKQuantityTypeIdentifierDietaryCopper',
  DietaryManganese = 'HKQuantityTypeIdentifierDietaryManganese',
  DietaryChromium = 'HKQuantityTypeIdentifierDietaryChromium',
  DietaryMolybdenum = 'HKQuantityTypeIdentifierDietaryMolybdenum',
  DietaryChloride = 'HKQuantityTypeIdentifierDietaryChloride',
  DietaryPotassium = 'HKQuantityTypeIdentifierDietaryPotassium',
  DietaryCaffeine = 'HKQuantityTypeIdentifierDietaryCaffeine',
  DietaryWater = 'HKQuantityTypeIdentifierDietaryWater',

  // Mobility
  WalkingSpeed = 'HKQuantityTypeIdentifierWalkingSpeed',
  WalkingStepLength = 'HKQuantityTypeIdentifierWalkingStepLength',
  WalkingAsymmetryPercentage = 'HKQuantityTypeIdentifierWalkingAsymmetryPercentage',
  WalkingDoubleSupportPercentage = 'HKQuantityTypeIdentifierWalkingDoubleSupportPercentage',
  StairAscentSpeed = 'HKQuantityTypeIdentifierStairAscentSpeed',
  StairDescentSpeed = 'HKQuantityTypeIdentifierStairDescentSpeed',
  SixMinuteWalkTestDistance = 'HKQuantityTypeIdentifierSixMinuteWalkTestDistance',

  // Hearing
  EnvironmentalAudioExposure = 'HKQuantityTypeIdentifierEnvironmentalAudioExposure',
  HeadphoneAudioExposure = 'HKQuantityTypeIdentifierHeadphoneAudioExposure'
}

export enum CategoryTypeIdentifier {
  // Activity
  AppleStandHour = 'HKCategoryTypeIdentifierAppleStandHour',
  AppleStandTime = 'HKCategoryTypeIdentifierAppleStandTime',
  Caffeine = 'HKCategoryTypeIdentifierCaffeine',
  WaterConsumed = 'HKCategoryTypeIdentifierWaterConsumed',

  // Sleep
  SleepAnalysis = 'HKCategoryTypeIdentifierSleepAnalysis',

  // Mindfulness
  MindfulSession = 'HKCategoryTypeIdentifierMindfulSession',

  // Reproductive Health
  MenstrualFlow = 'HKCategoryTypeIdentifierMenstrualFlow',
  IntermenstrualBleeding = 'HKCategoryTypeIdentifierIntermenstrualBleeding',
  SexualActivity = 'HKCategoryTypeIdentifierSexualActivity',
  CervicalMucusQuality = 'HKCategoryTypeIdentifierCervicalMucusQuality',
  OvulationTestResult = 'HKCategoryTypeIdentifierOvulationTestResult',
  Pregnancy = 'HKCategoryTypeIdentifierPregnancy',
  Lactation = 'HKCategoryTypeIdentifierLactation',
  Contraceptive = 'HKCategoryTypeIdentifierContraceptive',

  // Heart
  HighHeartRateEvent = 'HKCategoryTypeIdentifierHighHeartRateEvent',
  LowHeartRateEvent = 'HKCategoryTypeIdentifierLowHeartRateEvent',
  IrregularHeartRhythmEvent = 'HKCategoryTypeIdentifierIrregularHeartRhythmEvent',
  HeartRhythm = 'HKCategoryTypeIdentifierHeartRhythm',

  // Hearing
  AudioExposureEvent = 'HKCategoryTypeIdentifierAudioExposureEvent',

  // Mobility
  WalkingSteadiness = 'HKCategoryTypeIdentifierWalkingSteadiness',
  StairAscentEvent = 'HKCategoryTypeIdentifierStairAscentEvent',
  StairDescentEvent = 'HKCategoryTypeIdentifierStairDescentEvent',

  // Other
  ToothbrushingEvent = 'HKCategoryTypeIdentifierToothbrushingEvent',
  HandwashingEvent = 'HKCategoryTypeIdentifierHandwashingEvent',
  Dizziness = 'HKCategoryTypeIdentifierDizziness',
  Headache = 'HKCategoryTypeIdentifierHeadache',
  Acne = 'HKCategoryTypeIdentifierAcne',
  AppetiteChanges = 'HKCategoryTypeIdentifierAppetiteChanges',
  ChestTightnessOrPain = 'HKCategoryTypeIdentifierChestTightnessOrPain',
  Chills = 'HKCategoryTypeIdentifierChills',
  Constipation = 'HKCategoryTypeIdentifierConstipation',
  Coughing = 'HKCategoryTypeIdentifierCoughing',
  Diarrhea = 'HKCategoryTypeIdentifierDiarrhea',
  DrySkin = 'HKCategoryTypeIdentifierDrySkin',
  Fainting = 'HKCategoryTypeIdentifierFainting',
  Fatigue = 'HKCategoryTypeIdentifierFatigue',
  Fever = 'HKCategoryTypeIdentifierFever',
  GeneralChestDiscomfort = 'HKCategoryTypeIdentifierGeneralChestDiscomfort',
  HairLoss = 'HKCategoryTypeIdentifierHairLoss',
  HotFlashes = 'HKCategoryTypeIdentifierHotFlashes',
  LossOfSmell = 'HKCategoryTypeIdentifierLossOfSmell',
  LossOfTaste = 'HKCategoryTypeIdentifierLossOfTaste',
  LowerBackPain = 'HKCategoryTypeIdentifierLowerBackPain',
  MemoryLapse = 'HKCategoryTypeIdentifierMemoryLapse',
  MoodChanges = 'HKCategoryTypeIdentifierMoodChanges',
  Nausea = 'HKCategoryTypeIdentifierNausea',
  NightSweats = 'HKCategoryTypeIdentifierNightSweats',
  PelvicPain = 'HKCategoryTypeIdentifierPelvicPain',
  RapidPoundingOrFlutteringHeartbeat = 'HKCategoryTypeIdentifierRapidPoundingOrFlutteringHeartbeat',
  RunnyNose = 'HKCategoryTypeIdentifierRunnyNose',
  ShortnessOfBreath = 'HKCategoryTypeIdentifierShortnessOfBreath',
  SinusCongestion = 'HKCategoryTypeIdentifierSinusCongestion',
  SkippedHeartbeat = 'HKCategoryTypeIdentifierSkippedHeartbeat',
  SleepChanges = 'HKCategoryTypeIdentifierSleepChanges',
  SoreThroat = 'HKCategoryTypeIdentifierSoreThroat',
  VaginalDryness = 'HKCategoryTypeIdentifierVaginalDryness',
  Vomiting = 'HKCategoryTypeIdentifierVomiting',
  Wheezing = 'HKCategoryTypeIdentifierWheezing'
}

export enum CharacteristicTypeIdentifier {
  BiologicalSex = 'HKCharacteristicTypeIdentifierBiologicalSex',
  DateOfBirth = 'HKCharacteristicTypeIdentifierDateOfBirth',
  BloodType = 'HKCharacteristicTypeIdentifierBloodType',
  FitzpatrickSkinType = 'HKCharacteristicTypeIdentifierFitzpatrickSkinType'
}

export enum WorkoutTypeIdentifier {
  Workout = 'HKWorkoutTypeIdentifier'
}

// Enums para unidades do HealthKit
export enum HealthKitUnit {
  // Count
  count = 'count',

  // Distance
  meters = 'm',
  kilometers = 'km',
  millimeters = 'mm',
  centimeters = 'cm',
  feet = 'ft',
  inches = 'in',
  miles = 'mi',

  // Energy
  kilocalories = 'kcal',
  calories = 'cal',
  kilojoules = 'kJ',

  // Time
  seconds = 's',
  minutes = 'min',
  hours = 'hr',

  // Heart rate
  beatsPerMinute = 'bpm',

  // Mass
  kilograms = 'kg',
  grams = 'g',
  pounds = 'lb',
  ounces = 'oz',

  // Temperature
  celsius = '°C',
  fahrenheit = '°F',

  // Pressure
  millimetersOfMercury = 'mmHg',

  // Blood glucose
  milligramsPerDeciliter = 'mg/dL',
  millimolesPerLiter = 'mmol/L',

  // Percentage
  percent = '%',

  // Respiratory rate
  breathsPerMinute = 'breaths/min',

  // VO2 Max
  millilitersPerKilogramPerMinute = 'mL/kg·min',

  // Heart rate variability
  milliseconds = 'ms',

  // Volume
  liters = 'L',
  milliliters = 'mL',
  fluidOunces = 'fl_oz',
  cups = 'cup',

  // Speed
  metersPerSecond = 'm/s',
  milesPerHour = 'mi/hr',

  // Audio exposure
  decibels = 'dB',

  // Blood alcohol
  gramsPerDeciliter = 'g/dL',

  // Insulin
  internationalUnits = 'IU',

  // Electrodermal activity
  siemens = 'S',

  // Mobility
  countPerMinute = 'count/min'
}

// Tipos para mapeamento de identificadores para unidades
export type QuantityTypeToUnit = {
  // Activity & Fitness
  [QuantityTypeIdentifier.StepCount]: HealthKitUnit.count;
  [QuantityTypeIdentifier.FlightsClimbed]: HealthKitUnit.count;
  [QuantityTypeIdentifier.SwimmingStrokeCount]: HealthKitUnit.count;
  [QuantityTypeIdentifier.PushCount]: HealthKitUnit.count;
  [QuantityTypeIdentifier.NumberOfTimesFallen]: HealthKitUnit.count;
  
  [QuantityTypeIdentifier.DistanceWalkingRunning]: HealthKitUnit.meters;
  [QuantityTypeIdentifier.DistanceCycling]: HealthKitUnit.meters;
  [QuantityTypeIdentifier.DistanceSwimming]: HealthKitUnit.meters;
  [QuantityTypeIdentifier.DistanceWheelchair]: HealthKitUnit.meters;
  [QuantityTypeIdentifier.DistanceDownhillSnowSports]: HealthKitUnit.meters;
  
  [QuantityTypeIdentifier.ActiveEnergyBurned]: HealthKitUnit.kilocalories;
  [QuantityTypeIdentifier.BasalEnergyBurned]: HealthKitUnit.kilocalories;
  [QuantityTypeIdentifier.DietaryEnergy]: HealthKitUnit.kilocalories;
  
  [QuantityTypeIdentifier.AppleExerciseTime]: HealthKitUnit.minutes;
  [QuantityTypeIdentifier.ExerciseTime]: HealthKitUnit.minutes;
  [QuantityTypeIdentifier.StandTime]: HealthKitUnit.minutes;
  
  // Heart
  [QuantityTypeIdentifier.HeartRate]: HealthKitUnit.beatsPerMinute;
  [QuantityTypeIdentifier.RestingHeartRate]: HealthKitUnit.beatsPerMinute;
  [QuantityTypeIdentifier.WalkingHeartRateAverage]: HealthKitUnit.beatsPerMinute;
  
  [QuantityTypeIdentifier.HeartRateVariabilitySDNN]: HealthKitUnit.milliseconds;
  
  // Body Measurements
  [QuantityTypeIdentifier.BodyMass]: HealthKitUnit.kilograms;
  [QuantityTypeIdentifier.LeanBodyMass]: HealthKitUnit.kilograms;
  
  [QuantityTypeIdentifier.Height]: HealthKitUnit.centimeters;
  [QuantityTypeIdentifier.WaistCircumference]: HealthKitUnit.centimeters;
  [QuantityTypeIdentifier.HipCircumference]: HealthKitUnit.centimeters;
  [QuantityTypeIdentifier.HeadCircumference]: HealthKitUnit.centimeters;
  
  [QuantityTypeIdentifier.BodyTemperature]: HealthKitUnit.celsius;
  
  [QuantityTypeIdentifier.BloodPressureSystolic]: HealthKitUnit.millimetersOfMercury;
  [QuantityTypeIdentifier.BloodPressureDiastolic]: HealthKitUnit.millimetersOfMercury;
  
  [QuantityTypeIdentifier.BloodGlucose]: HealthKitUnit.milligramsPerDeciliter;
  [QuantityTypeIdentifier.BloodAlcoholContent]: HealthKitUnit.gramsPerDeciliter;
  
  [QuantityTypeIdentifier.OxygenSaturation]: HealthKitUnit.percent;
  [QuantityTypeIdentifier.BodyFatPercentage]: HealthKitUnit.percent;
  [QuantityTypeIdentifier.PeripheralPerfusionIndex]: HealthKitUnit.percent;
  
  [QuantityTypeIdentifier.RespiratoryRate]: HealthKitUnit.breathsPerMinute;
  
  [QuantityTypeIdentifier.VO2Max]: HealthKitUnit.millilitersPerKilogramPerMinute;
  
  [QuantityTypeIdentifier.InsulinDelivery]: HealthKitUnit.internationalUnits;
  
  [QuantityTypeIdentifier.ElectrodermalActivity]: HealthKitUnit.siemens;
  
  [QuantityTypeIdentifier.EnvironmentalAudioExposure]: HealthKitUnit.decibels;
  [QuantityTypeIdentifier.HeadphoneAudioExposure]: HealthKitUnit.decibels;
  
  // Mobility
  [QuantityTypeIdentifier.WalkingSpeed]: HealthKitUnit.metersPerSecond;
  [QuantityTypeIdentifier.WalkingStepLength]: HealthKitUnit.centimeters;
  [QuantityTypeIdentifier.WalkingAsymmetryPercentage]: HealthKitUnit.percent;
  [QuantityTypeIdentifier.WalkingDoubleSupportPercentage]: HealthKitUnit.percent;
  [QuantityTypeIdentifier.StairAscentSpeed]: HealthKitUnit.metersPerSecond;
  [QuantityTypeIdentifier.StairDescentSpeed]: HealthKitUnit.metersPerSecond;
  [QuantityTypeIdentifier.SixMinuteWalkTestDistance]: HealthKitUnit.meters;
  
  // Nutrition - Mass
  [QuantityTypeIdentifier.DietaryFatTotal]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryFatPolyunsaturated]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryFatMonounsaturated]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryFatSaturated]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryCholesterol]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryCarbohydrates]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryFiber]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietarySugar]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryProtein]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryCaffeine]: HealthKitUnit.grams;
  
  // Nutrition - Volume
  [QuantityTypeIdentifier.DietaryWater]: HealthKitUnit.liters;
  
  // Nutrition - Minerals
  [QuantityTypeIdentifier.DietarySodium]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryCalcium]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryIron]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryPhosphorus]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryIodine]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryMagnesium]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryZinc]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietarySelenium]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryCopper]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryManganese]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryChromium]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryMolybdenum]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryChloride]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryPotassium]: HealthKitUnit.grams;
  
  // Nutrition - Vitamins
  [QuantityTypeIdentifier.DietaryVitaminA]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryVitaminB6]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryVitaminB12]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryVitaminC]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryVitaminD]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryVitaminE]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryVitaminK]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryThiamin]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryRiboflavin]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryNiacin]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryFolate]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryBiotin]: HealthKitUnit.grams;
  [QuantityTypeIdentifier.DietaryPantothenicAcid]: HealthKitUnit.grams;
  
  // Blood Types
  [QuantityTypeIdentifier.BloodTypeA]: HealthKitUnit.count;
  [QuantityTypeIdentifier.BloodTypeB]: HealthKitUnit.count;
  [QuantityTypeIdentifier.BloodTypeAB]: HealthKitUnit.count;
  [QuantityTypeIdentifier.BloodTypeO]: HealthKitUnit.count;
  
  // Other
  [QuantityTypeIdentifier.InhalerUsage]: HealthKitUnit.count,
};

// Tipos para os dados retornados (compatíveis com o provider)
export interface HealthKitSample {
  value: number;
  startDate: string;
  endDate: string;
  uuid?: string;
  sourceRevision?: any;
}

export interface HealthKitWorkout {
  workoutActivityType: number;
  duration: number;
  startDate: string;
  endDate: string;
  uuid?: string;
  sourceRevision?: any;
}

export interface AuthorizationStatus {
  identifier: string;
  status: string;
}

export interface HealthKitTypeInfo {
  identifier: string;
  name: string;
  description: string;
  category: string;
  type: string;
}

// Interface para compatibilidade (versão atual)
export interface HealthKitBridgeAPICompat {
  // Autorização
  checkAvailability(): Promise<boolean>;
  
  // 1. Autorização completa (leitura e escrita de todos os dados)
  requestFullAuthorization(): Promise<boolean>;
  
  // 2. Obter tipos disponíveis para seleção do usuário
  getAvailableTypesForAuthorization(): Promise<HealthKitTypeInfo[]>;
  
  // 3. Autorização de leitura específica
  requestReadAuthorization(
    readTypes: Array<QuantityTypeIdentifier | CategoryTypeIdentifier | CharacteristicTypeIdentifier>
  ): Promise<boolean>;
  
  // 4. Autorização de escrita específica
  requestWriteAuthorization(
    writeTypes: Array<QuantityTypeIdentifier | CategoryTypeIdentifier>
  ): Promise<boolean>;
  
  // 5. Autorização seletiva (leitura e escrita)
  requestSelectiveAuthorization(
    readTypes: Array<QuantityTypeIdentifier | CategoryTypeIdentifier | CharacteristicTypeIdentifier>,
    writeTypes?: Array<QuantityTypeIdentifier | CategoryTypeIdentifier>
  ): Promise<boolean>;
  
  // 6. Método legado mantido para compatibilidade
  requestAuthorization(): Promise<boolean>;
  
  getAuthorizationStatus(
    identifiers: Array<QuantityTypeIdentifier | CategoryTypeIdentifier | CharacteristicTypeIdentifier>
  ): Promise<AuthorizationStatus[]>;

  // 7. Verificação de disponibilidade de tipos
  isTypeAvailable(identifiers: string[]): Promise<Record<string, boolean>>;
  
  // 8. Verificação de permissão de leitura
  canReadType(identifiers: string[]): Promise<Record<string, boolean>>;
  
  // 9. Verificação de permissão de escrita
  canWriteType(identifiers: string[]): Promise<Record<string, boolean>>;
  
  // 10. Status detalhado de autorização
  getDetailedAuthorizationStatus(identifiers: string[]): Promise<Array<{
    identifier: string;
    status: string;
    canRead: boolean;
    canWrite: boolean;
    isAvailable: boolean;
  }>>;

  /**
   * 🚀 NOVA FEATURE: Autorização Inteligente
   * Verifica quais tipos não estão autorizados e solicita apenas os necessários
   */
  requestSmartAuthorization(
    requiredTypes: Array<QuantityTypeIdentifier | CategoryTypeIdentifier | CharacteristicTypeIdentifier>
  ): Promise<{
    success: boolean;
    authorizedTypes: string[];
    deniedTypes: string[];
    notDeterminedTypes: string[];
    message: string;
  }>;

  /**
   * 🚀 NOVA FEATURE: Verificar e Solicitar Autorização para Dados Específicos
   * Verifica se um tipo específico está autorizado e solicita se necessário
   */
  ensureDataTypeAuthorization(
    dataType: QuantityTypeIdentifier | CategoryTypeIdentifier | CharacteristicTypeIdentifier
  ): Promise<{
    isAuthorized: boolean;
    wasRequested: boolean;
    message: string;
  }>;

  // Consultas por dias
  getQuantitySamplesForDays<T extends QuantityTypeIdentifier>(
    identifier: T,
    unit: string,
    days: number
  ): Promise<HealthKitSample[]>;

  getCategorySamplesForDays(
    identifier: CategoryTypeIdentifier,
    days: number
  ): Promise<HealthKitSample[]>;

  getWorkoutsForDays(days: number): Promise<HealthKitWorkout[]>;

  // Consultas por range
  getQuantitySamplesForRange<T extends QuantityTypeIdentifier>(
    identifier: T,
    unit: string,
    startDate: string,
    endDate: string
  ): Promise<HealthKitSample[]>;

  getCategorySamplesForRange(
    identifier: CategoryTypeIdentifier,
    startDate: string,
    endDate: string
  ): Promise<HealthKitSample[]>;

  // Informações de tipos
  getAvailableTypes(): Promise<HealthKitTypeInfo[]>;
  getTypeInfo(
    identifier: QuantityTypeIdentifier | CategoryTypeIdentifier | CharacteristicTypeIdentifier
  ): Promise<HealthKitTypeInfo>;
}

// Funções helper para type safety
export function getQuantityUnit(
  identifier: QuantityTypeIdentifier
): string {
  const unitMap: Record<string, string> = {
    // Activity & Fitness
    [QuantityTypeIdentifier.StepCount]: HealthKitUnit.count,
    [QuantityTypeIdentifier.FlightsClimbed]: HealthKitUnit.count,
    [QuantityTypeIdentifier.SwimmingStrokeCount]: HealthKitUnit.count,
    [QuantityTypeIdentifier.PushCount]: HealthKitUnit.count,
    [QuantityTypeIdentifier.NumberOfTimesFallen]: HealthKitUnit.count,
    
    [QuantityTypeIdentifier.DistanceWalkingRunning]: HealthKitUnit.meters,
    [QuantityTypeIdentifier.DistanceCycling]: HealthKitUnit.meters,
    [QuantityTypeIdentifier.DistanceSwimming]: HealthKitUnit.meters,
    [QuantityTypeIdentifier.DistanceWheelchair]: HealthKitUnit.meters,
    [QuantityTypeIdentifier.DistanceDownhillSnowSports]: HealthKitUnit.meters,
    
    [QuantityTypeIdentifier.ActiveEnergyBurned]: HealthKitUnit.kilocalories,
    [QuantityTypeIdentifier.BasalEnergyBurned]: HealthKitUnit.kilocalories,
    [QuantityTypeIdentifier.DietaryEnergy]: HealthKitUnit.kilocalories,
    
    [QuantityTypeIdentifier.AppleExerciseTime]: HealthKitUnit.minutes,
    [QuantityTypeIdentifier.ExerciseTime]: HealthKitUnit.minutes,
    [QuantityTypeIdentifier.StandTime]: HealthKitUnit.minutes,
    
    // Heart
    [QuantityTypeIdentifier.HeartRate]: HealthKitUnit.beatsPerMinute,
    [QuantityTypeIdentifier.RestingHeartRate]: HealthKitUnit.beatsPerMinute,
    [QuantityTypeIdentifier.WalkingHeartRateAverage]: HealthKitUnit.beatsPerMinute,
    
    [QuantityTypeIdentifier.HeartRateVariabilitySDNN]: HealthKitUnit.milliseconds,
    [QuantityTypeIdentifier.IrregularHeartRhythmEvent]: HealthKitUnit.count,
    [QuantityTypeIdentifier.HighHeartRateEvent]: HealthKitUnit.count,
    [QuantityTypeIdentifier.LowHeartRateEvent]: HealthKitUnit.count,
    
    // Body Measurements
    [QuantityTypeIdentifier.BodyMass]: HealthKitUnit.kilograms,
    [QuantityTypeIdentifier.LeanBodyMass]: HealthKitUnit.kilograms,
    
    [QuantityTypeIdentifier.Height]: HealthKitUnit.centimeters,
    [QuantityTypeIdentifier.WaistCircumference]: HealthKitUnit.centimeters,
    [QuantityTypeIdentifier.HipCircumference]: HealthKitUnit.centimeters,
    [QuantityTypeIdentifier.HeadCircumference]: HealthKitUnit.centimeters,
    
    [QuantityTypeIdentifier.BodyTemperature]: HealthKitUnit.celsius,
    
    [QuantityTypeIdentifier.BloodPressureSystolic]: HealthKitUnit.millimetersOfMercury,
    [QuantityTypeIdentifier.BloodPressureDiastolic]: HealthKitUnit.millimetersOfMercury,
    
    [QuantityTypeIdentifier.BloodGlucose]: HealthKitUnit.milligramsPerDeciliter,
    [QuantityTypeIdentifier.BloodAlcoholContent]: HealthKitUnit.gramsPerDeciliter,
    
    [QuantityTypeIdentifier.OxygenSaturation]: HealthKitUnit.percent,
    [QuantityTypeIdentifier.BodyFatPercentage]: HealthKitUnit.percent,
    [QuantityTypeIdentifier.PeripheralPerfusionIndex]: HealthKitUnit.percent,
    
    [QuantityTypeIdentifier.RespiratoryRate]: HealthKitUnit.breathsPerMinute,
    
    [QuantityTypeIdentifier.VO2Max]: HealthKitUnit.millilitersPerKilogramPerMinute,
    
    [QuantityTypeIdentifier.InsulinDelivery]: HealthKitUnit.internationalUnits,
    
    [QuantityTypeIdentifier.ElectrodermalActivity]: HealthKitUnit.siemens,
    
    [QuantityTypeIdentifier.EnvironmentalAudioExposure]: HealthKitUnit.decibels,
    [QuantityTypeIdentifier.HeadphoneAudioExposure]: HealthKitUnit.decibels,
    
    // Mobility
    [QuantityTypeIdentifier.WalkingSpeed]: HealthKitUnit.metersPerSecond,
    [QuantityTypeIdentifier.WalkingStepLength]: HealthKitUnit.centimeters,
    [QuantityTypeIdentifier.WalkingAsymmetryPercentage]: HealthKitUnit.percent,
    [QuantityTypeIdentifier.WalkingDoubleSupportPercentage]: HealthKitUnit.percent,
    [QuantityTypeIdentifier.StairAscentSpeed]: HealthKitUnit.metersPerSecond,
    [QuantityTypeIdentifier.StairDescentSpeed]: HealthKitUnit.metersPerSecond,
    [QuantityTypeIdentifier.SixMinuteWalkTestDistance]: HealthKitUnit.meters,
    
    // Nutrition - Mass
    [QuantityTypeIdentifier.DietaryFatTotal]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryFatPolyunsaturated]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryFatMonounsaturated]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryFatSaturated]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryCholesterol]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryCarbohydrates]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryFiber]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietarySugar]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryProtein]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryCaffeine]: HealthKitUnit.grams,
    
    // Nutrition - Volume
    [QuantityTypeIdentifier.DietaryWater]: HealthKitUnit.liters,
    
    // Nutrition - Minerals
    [QuantityTypeIdentifier.DietarySodium]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryCalcium]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryIron]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryPhosphorus]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryIodine]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryMagnesium]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryZinc]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietarySelenium]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryCopper]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryManganese]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryChromium]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryMolybdenum]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryChloride]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryPotassium]: HealthKitUnit.grams,
    
    // Nutrition - Vitamins
    [QuantityTypeIdentifier.DietaryVitaminA]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryVitaminB6]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryVitaminB12]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryVitaminC]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryVitaminD]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryVitaminE]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryVitaminK]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryThiamin]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryRiboflavin]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryNiacin]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryFolate]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryBiotin]: HealthKitUnit.grams,
    [QuantityTypeIdentifier.DietaryPantothenicAcid]: HealthKitUnit.grams,
    
    // Blood Types
    [QuantityTypeIdentifier.BloodTypeA]: HealthKitUnit.count,
    [QuantityTypeIdentifier.BloodTypeB]: HealthKitUnit.count,
    [QuantityTypeIdentifier.BloodTypeAB]: HealthKitUnit.count,
    [QuantityTypeIdentifier.BloodTypeO]: HealthKitUnit.count,
    
    // Other
    [QuantityTypeIdentifier.InhalerUsage]: HealthKitUnit.count,
  };
  
  return unitMap[identifier];
}



// Tipos utilitários
export type AllHealthKitIdentifiers = QuantityTypeIdentifier | CategoryTypeIdentifier | CharacteristicTypeIdentifier | WorkoutTypeIdentifier;

export type QuantityTypeIdentifiers = keyof typeof QuantityTypeIdentifier;
export type CategoryTypeIdentifiers = keyof typeof CategoryTypeIdentifier;
export type CharacteristicTypeIdentifiers = keyof typeof CharacteristicTypeIdentifier;
export type HealthKitUnits = keyof typeof HealthKitUnit;

// Constantes para facilitar o uso
export const HEALTHKIT_IDENTIFIERS = {
  ...QuantityTypeIdentifier,
  ...CategoryTypeIdentifier,
  ...CharacteristicTypeIdentifier,
  ...WorkoutTypeIdentifier
} as const;

export const HEALTHKIT_UNITS = HealthKitUnit; 