/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

package android.healthfitness.api;

option java_outer_classname = "HealthConnectApiEnums";
option java_multiple_files = true;

enum ApiMethod {
  API_METHOD_UNKNOWN = 0;
  DELETE_DATA = 1;
  GET_CHANGES = 2;
  GET_CHANGES_TOKEN = 3;
  GET_GRANTED_PERMISSIONS = 4;
  INSERT_DATA = 5;
  READ_AGGREGATED_DATA = 6;
  READ_DATA = 7;
  REVOKE_ALL_PERMISSIONS = 8;
  UPDATE_DATA = 9;
  // PHR data source APIs
  CREATE_MEDICAL_DATA_SOURCE = 10;
  GET_MEDICAL_DATA_SOURCES_BY_IDS = 11;
  GET_MEDICAL_DATA_SOURCES_BY_REQUESTS = 12;
  DELETE_MEDICAL_DATA_SOURCE_WITH_DATA = 13;
  // PHR medical resource APIs
  UPSERT_MEDICAL_RESOURCES = 14;
  READ_MEDICAL_RESOURCES_BY_IDS = 15;
  READ_MEDICAL_RESOURCES_BY_REQUESTS = 16;
  DELETE_MEDICAL_RESOURCES_BY_IDS = 17;
  DELETE_MEDICAL_RESOURCES_BY_REQUESTS = 18;
  // Matchmaking APIs
  CAN_CONNECT_MATCHING_APPS = 19;
  CREATE_CONNECT_MATCHING_APPS_INTENT = 20;
}

enum ApiStatus {
  STATUS_UNKNOWN = 0;
  SUCCESS = 1;
  ERROR = 2;
}

enum RateLimit {
  NOT_DEFINED = 0;
  NOT_USED = 1;

  RATE_LIMIT_FOREGROUND_15_MIN_UNDER_1000 = 2;
  RATE_LIMIT_FOREGROUND_15_MIN_BW_1000_TO_2000 = 3;
  RATE_LIMIT_FOREGROUND_15_MIN_BW_2000_TO_3000 = 4;
  RATE_LIMIT_FOREGROUND_15_MIN_BW_3000_TO_4000 = 5;
  RATE_LIMIT_FOREGROUND_15_MIN_ABOVE_4000 = 6;

  RATE_LIMIT_BACKGROUND_15_MIN_UNDER_500 = 7;
  RATE_LIMIT_BACKGROUND_15_MIN_BW_500_TO_1000 = 8;
  RATE_LIMIT_BACKGROUND_15_MIN_BW_1000_TO_2000 = 9;
  RATE_LIMIT_BACKGROUND_15_MIN_BW_2000_TO_3000 = 10;
  RATE_LIMIT_BACKGROUND_15_MIN_ABOVE_3000 = 11;

  RATE_LIMIT_FOREGROUND_24_HRS_UNDER_2000 = 12;
  RATE_LIMIT_FOREGROUND_24_HRS_BW_2000_TO_3000 = 13;
  RATE_LIMIT_FOREGROUND_24_HRS_BW_3000_TO_4000 = 14;
  RATE_LIMIT_FOREGROUND_24_HRS_BW_4000_TO_5000 = 15;
  RATE_LIMIT_FOREGROUND_24_HRS_BW_5000_TO_6000 = 16;
  RATE_LIMIT_FOREGROUND_24_HRS_ABOVE_6000 = 17;

  RATE_LIMIT_BACKGROUND_24_HRS_UNDER_1000 = 18;
  RATE_LIMIT_BACKGROUND_24_HRS_BW_1000_TO_2000 = 19;
  RATE_LIMIT_BACKGROUND_24_HRS_BW_2000_TO_3000 = 20;
  RATE_LIMIT_BACKGROUND_24_HRS_BW_3000_TO_4000 = 21;
  RATE_LIMIT_BACKGROUND_24_HRS_BW_4000_TO_5000 = 22;
  RATE_LIMIT_BACKGROUND_24_HRS_ABOVE_5000 = 23;

}

enum Operation {
  OPERATION_READ = 0;
  OPERATION_UPSERT = 1;
}

// Each of these represents a value in ExportStatus.java.
enum ExportStatus {
  EXPORT_STATUS_UNSPECIFIED = 0;

  EXPORT_STATUS_STARTED = 1;
  EXPORT_STATUS_ERROR_NONE = 2;
  EXPORT_STATUS_ERROR_UNKNOWN = 3;

  EXPORT_STATUS_ERROR_LOST_FILE_ACCESS = 4;
  EXPORT_STATUS_ERROR_OUT_OF_STORAGE = 5;
}

// Each of these represents a value in ImportStatus.java.
enum ImportStatus {
  IMPORT_STATUS_UNSPECIFIED = 0;

  IMPORT_STATUS_STARTED = 1;
  IMPORT_STATUS_ERROR_NONE = 2;
  IMPORT_STATUS_ERROR_UNKNOWN = 3;

  IMPORT_STATUS_ERROR_WRONG_FILE = 4;
  IMPORT_STATUS_ERROR_VERSION_MISMATCH = 5;
}

// START: Backup and Restore enums

// Each of these represents a value in DataBackupType.java.
enum DataBackupType {
  DATA_BACKUP_TYPE_UNSPECIFIED = 0;
  DATA_BACKUP_TYPE_FULL = 1;
  DATA_BACKUP_TYPE_INCREMENTAL = 2;
}

// Each of these represents a value in DataBackupStatus.java.
enum DataBackupStatus {
  DATA_BACKUP_STATUS_ERROR_UNSPECIFIED = 0;

  DATA_BACKUP_STATUS_ERROR_NONE = 1;
  DATA_BACKUP_STATUS_ERROR_UNKNOWN = 2;
  DATA_BACKUP_STATUS_ERROR_PARTIAL_BACKUP = 3;
  DATA_BACKUP_STATUS_STARTED = 4;
  DATA_BACKUP_STATUS_ERROR_INVALID_REQUEST = 5;
}

// Each of these represents a value in MetadataBackupStatus.java.
enum MetadataBackupStatus {
  METADATA_BACKUP_STATUS_ERROR_UNSPECIFIED = 0;

  METADATA_BACKUP_STATUS_ERROR_NONE = 1;
  METADATA_BACKUP_STATUS_ERROR_UNKNOWN = 2;
  METADATA_BACKUP_STATUS_ERROR_COLLATION_FAILED = 3;
  METADATA_BACKUP_STATUS_ERROR_PARTIAL_BACKUP = 4;
  METADATA_BACKUP_STATUS_STARTED = 5;
}

// Each of these represents a value in DataRestoreStatus.java.
enum DataRestoreStatus {
  DATA_RESTORE_STATUS_ERROR_UNSPECIFIED = 0;

  DATA_RESTORE_STATUS_ERROR_NONE = 1;
  DATA_RESTORE_STATUS_ERROR_UNKNOWN = 2;
  DATA_RESTORE_STATUS_ERROR_CONVERSION_FAILED = 3;
  DATA_RESTORE_STATUS_ERROR_PARTIAL_RESTORE = 4;
  DATA_RESTORE_STATUS_STARTED = 5;
}

// Each of these represents a value in MetadataRestoreStatus.java.
enum MetadataRestoreStatus {
  METADATA_RESTORE_STATUS_ERROR_UNSPECIFIED = 0;

  METADATA_RESTORE_STATUS_ERROR_NONE = 1;
  METADATA_RESTORE_STATUS_ERROR_UNKNOWN = 2;
  METADATA_RESTORE_STATUS_ERROR_CONVERSION_FAILED = 3;
  METADATA_RESTORE_STATUS_ERROR_PARTIAL_RESTORE = 4;
  METADATA_RESTORE_STATUS_STARTED = 5;
}

// END: Backup and Restore enums

enum DataType {
  DATA_TYPE_UNKNOWN = 0;
  DATA_TYPE_NOT_ASSIGNED = 1;

  ACTIVE_CALORIES_BURNED = 2;
  BASAL_BODY_TEMPERATURE = 3;
  BASAL_METABOLIC_RATE = 4;
  BLOOD_GLUCOSE = 5;
  BLOOD_PRESSURE = 6;
  BODY_FAT = 7;
  BODY_TEMPERATURE = 8;
  BONE_MASS = 9;
  CERVICAL_MUCUS = 10;
  CYCLING_PEDALING_CADENCE = 11;
  DISTANCE = 12;
  ELEVATION_GAINED = 13;
  EXERCISE_SESSION = 14;
  FLOORS_CLIMBED = 15;
  HEART_RATE = 16;
  HEIGHT = 17;
  HYDRATION = 18;
  LEAN_BODY_MASS = 19;
  MENSTRUATION_FLOW = 20;
  NUTRITION = 21;
  OVULATION_TEST = 22;
  OXYGEN_SATURATION = 23;
  POWER = 24;
  RESPIRATORY_RATE = 25;
  RESTING_HEART_RATE = 26;
  SEXUAL_ACTIVITY = 27;
  SPEED = 28;
  STEPS = 29;
  STEPS_CADENCE = 30;
  TOTAL_CALORIES_BURNED = 31;
  VO2_MAX = 32;
  WEIGHT = 33;
  WHEELCHAIR_PUSHES = 34;
  SKIN_TEMPERATURE =  35;
  PLANNED_EXERCISE_SESSION =  36;
  MINDFULNESS_SESSION = 37;
  BODY_WATER_MASS = 38;
  HEART_RATE_VARIABILITY_RMSSD = 39;
  INTERMENSTRUAL_BLEEDING = 40;
  MENSTRUATION_PERIOD = 41;
  SLEEP_SESSION = 42;
  ACTIVITY_INTENSITY = 43;
  NICOTINE_INTAKE = 44;
  ALCOHOL_CONSUMPTION = 45;
  SYMPTOMS = 46;
}

enum MedicalResourceType {
  MEDICAL_RESOURCE_TYPE_UNKNOWN = 0;
  MEDICAL_RESOURCE_TYPE_VACCINES = 1;
  MEDICAL_RESOURCE_TYPE_ALLERGIES_INTOLERANCES = 2;
  MEDICAL_RESOURCE_TYPE_PREGNANCY = 3;
  MEDICAL_RESOURCE_TYPE_SOCIAL_HISTORY = 4;
  MEDICAL_RESOURCE_TYPE_VITAL_SIGNS = 5;
  MEDICAL_RESOURCE_TYPE_LABORATORY_RESULTS = 6;
  MEDICAL_RESOURCE_TYPE_CONDITIONS = 7;
  MEDICAL_RESOURCE_TYPE_PROCEDURES = 8;
  MEDICAL_RESOURCE_TYPE_MEDICATIONS = 9;
  MEDICAL_RESOURCE_TYPE_PERSONAL_DETAILS = 10;
  MEDICAL_RESOURCE_TYPE_PRACTITIONER_DETAILS = 11;
  MEDICAL_RESOURCE_TYPE_VISITS = 12;
}

enum ForegroundState {
  UNSPECIFIED = 0;
  FOREGROUND = 1;
  BACKGROUND = 2;
}

enum MetricType {
  METRIC_TYPE_DIRECTIONAL_PAIRING_PER_DATA_TYPE = 0;
  METRIC_TYPE_DIRECTIONAL_PAIRING = 1;

  reserved 2;
}

enum SessionDataType {
  SESSION_DATA_TYPE_UNKNOWN = 0;

  SESSION_DATA_TYPE_EXERCISE = 1;
  SESSION_DATA_TYPE_SLEEP = 2;
}

// Data types that are supported in the native tracking module.
enum NativeTrackingDataType {
  NATIVE_TRACKING_DATA_TYPE_UNSPECIFIED = 0;
  NATIVE_TRACKING_DATA_TYPE_STEPS = 1;
}

// Errors encountered during tracker execution will be mapped to one of these.
enum NativeTrackingErrorCode {
  NATIVE_TRACKING_ERROR_CODE_UNSPECIFIED = 0;
  NATIVE_TRACKING_ERROR_CODE_NONE = 1;
}

enum RecordingMethod {
  RECORDING_METHOD_UNKNOWN = 0;
  RECORDING_METHOD_ACTIVE_RECORDED = 1;
  RECORDING_METHOD_PASSIVE_RECORDED = 2;
  RECORDING_METHOD_MANUAL = 3;
}

enum GranularityDataType {
  GRANULARITY_DATA_TYPE_UNKNOWN = 0;

  GRANULARITY_DATA_TYPE_HEART_RATE = 1;
  GRANULARITY_DATA_TYPE_SPEED = 2;
  GRANULARITY_DATA_TYPE_POWER = 3;
  GRANULARITY_DATA_TYPE_STEPS_CADENCE = 4;
  GRANULARITY_DATA_TYPE_CYCLING_CADENCE = 5;
  GRANULARITY_DATA_TYPE_SKIN_TEMPERATURE = 6;
  GRANULARITY_DATA_TYPE_STEPS = 7;
  GRANULARITY_DATA_TYPE_DISTANCE = 8;
  GRANULARITY_DATA_TYPE_ACTIVE_CALORIES_BURNED = 9;
  GRANULARITY_DATA_TYPE_TOTAL_CALORIES_BURNED = 10;
  GRANULARITY_DATA_TYPE_ELEVATION_GAINED = 11;
  GRANULARITY_DATA_TYPE_HRV_RMSSD = 12;
  GRANULARITY_DATA_TYPE_FLOORS_CLIMBED = 13;
  GRANULARITY_DATA_TYPE_RESPIRATORY_RATE = 14;
  GRANULARITY_DATA_TYPE_OXYGEN_SATURATION = 15;
}

enum DataState {
  DATA_STATE_UNKNOWN = 0;

  DATA_STATE_ACTIVE = 1;
  DATA_STATE_PASSIVE = 2;
}
