/*
 * 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.app.wearservices;

option java_multiple_files = true;
option java_outer_classname = "WearServicesEnums";

// This enum depicts the state of the session.
// Next ID: 5
enum SessionStateEnum {
  // Depicts unknown session state.
  STATE_UNKNOWN = 0;

  // Depicts start state of the session.
  STATE_START = 1;

  // Depicts end state of the session.
  STATE_END = 2;

  // Depicts aborted state of the session.
  STATE_ABORTED = 3;

  // Depicts failed state of the session.
  STATE_FAILED = 4;
}

// This enum depicts the action taken.
// Next ID: 4
enum ActionEnum {
  // Depicts unknown action.
  ACTION_UNKNOWN = 0;

  // Depicts an ADD action.
  ACTION_ADD = 1;

  // Depicts a REMOVE action.
  ACTION_REMOVE = 2;

  reserved 3;
}

// This enum depicts the possible result of watchface set
// action.
// Next ID: 4
enum SetResultEnum {
  // Depicts unknown result.
  SET_UNKNOWN = 0;

  // Depicts if the same WF is set.
  SET_SAME = 1;

  // Depicts if a fallback WF is set.
  SET_FALLBACK = 2;

  // Depicst if the favorite WF is set.
  SET_FAVORITE = 3;
}

// This enum depicts the source of request.
// Next ID: 3
enum RequestSource {
  // Depicts the source as unknown.
  SOURCE_UNKNOWN = 0;

  // Depicts source as Android phone.
  SOURCE_PHONE_ANDROID = 1;

  // Depicts source as iOS phone.
  SOURCE_PHONE_IOS = 2;

  // Depicts the source as watch.
  SOURCE_WATCH = 3;
}

// This enum depicts an action taken during a backup attempt
// Next ID: 4
enum BackupAction {
  // Depicts an unknown backup action
  BACKUP_UNKNOWN_ACTION = 0;

  // Depicts that a backup attempt has begun
  BACKUP_STARTED = 1;

  // Depicts that a backup attempt succeeded
  BACKUP_SUCCEEDED = 2;

  // Depicts that a backup attempt did not succeed
  BACKUP_FAILED = 3;
}

// This enum depicts an action taken during a restore attempt
// Next ID: 4
enum RestoreAction {
  // Depicts an unknown restore action
  RESTORE_UNKNOWN_ACTION = 0;

  // Depicts that a restore attempt has begun
  RESTORE_STARTED = 1;

  // Depicts that a restore attempt succeeded
  RESTORE_SUCCEEDED = 2;

  // Depicts that a restore attempt did not succeed
  RESTORE_FAILED = 3;
}

// Describes an action triggered by a notification update.
// Next ID: 4
enum NotificationUpdateAction {
  // Unknown notification action
  NOTIFICATION_ACTION_UNKNOWN = 0;

  // Notification posted
  NOTIFICATION_ACTION_POST = 1;

  // Notification dismissed by the user
  NOTIFICATION_ACTION_DISMISS = 2;

  // Notification removed by the source
  NOTIFICATION_ACTION_REMOVE = 3;
}

// Describes which transport channel is this notification coming from.
// Next ID: 3
enum NotificationTransportChannel {
  // Unknown notification transport channel
  NOTIFICATION_TRANSPORT_UNKNOWN = 0;

  // Notification comes from wearable API
  NOTIFICATION_TRANSPORT_WEARABLE = 1;

  // Notification comes from MCU (only exists on device supported offloading)
  NOTIFICATION_TRANSPORT_MCU = 2;
}

// Importance of the notification after this update.
// Next ID: 8
enum NotificationImportance {
  // Importance not known
  NOTIFICATION_IMPORTANCE_UNKNOWN = 0;

  // Importance set as NotificationManager#IMPORTANCE_UNSPECIFIED
  NOTIFICATION_IMPORTANCE_UNSPECIFIED = 1;

  // Importance set as NotificationManager#IMPORTANCE_NONE
  NOTIFICATION_IMPORTANCE_NONE = 2;

  // Importance set as NotificationManager#IMPORTANCE_MIN
  NOTIFICATION_IMPORTANCE_MIN = 3;

  // Importance set as NotificationManager#IMPORTANCE_LOW
  NOTIFICATION_IMPORTANCE_LOW = 4;

  // Importance set as NotificationManager#IMPORTANCE_DEFAULT
  NOTIFICATION_IMPORTANCE_DEFAULT = 5;

  // Importance set as NotificationManager#IMPORTANCE_HIGH
  NOTIFICATION_IMPORTANCE_HIGH = 6;

  // Importance set as NotificationManager#IMPORTANCE_MAX
  NOTIFICATION_IMPORTANCE_MAX = 7;
}

// The alerting effect of the notification.
// Next ID: 5
enum NotificationAlertingEffect {
  // Unknown value.
  NOTIFICATION_ALERTING_EFFECT_UNKNOWN = 0;

  // No alerting effect.
  NOTIFICATION_ALERTING_EFFECT_NONE = 1;

  // Alerting effect is HAPTICS.
  NOTIFICATION_ALERTING_EFFECT_HAPTICS = 2;

  // Alerting effect is SOUND.
  NOTIFICATION_ALERTING_EFFECT_SOUND = 3;

  // Alerting effect is HAPTICS together with SOUND.
  NOTIFICATION_ALERTING_EFFECT_HAPTICS_AND_SOUND = 4;
}

// The group alert behavior of the notification.
//
// Note: In the Wear SysUI. Alerts will always happen on the child, for example,
// 1). If summary is set to alert, but the first child is muted, the alert will
// happen on the child item.
// 2). If summary and first child both set to alert, there will be only 1 alerts
// happening on the first child.
// Therefore, we will overcount if we count alerting summary items, and we will
// undercount if we skip alerting summary items. And unfortunately we can not
// avoid this inaccuracy in the metrics.
// Next ID: 4
enum NotificationGroupAlertBehavior {
  // Unknown value.
  NOTIFICATION_GROUP_ALERT_BEHAVIOR_UNKNOWN = 0;

  // The alert behavior set to ALL, or notification is not grouped, or the group
  // type matches the alert behavior (e.g. group child, while the alert behavior
  // is also set to child.)
  // We collapsed these non-critical cases to reduce cardinality.
  NOTIFICATION_GROUP_ALERT_BEHAVIOR_ALERT_ALLOWED = 1;

  // The alert behavior is set to ALERT_SUMMARY, but the current notification is
  // a child.
  NOTIFICATION_GROUP_ALERT_BEHAVIOR_DELEGATED_TO_SUMMARY = 2;

  // The alert behavior is set to ALERT_CHILD, but the current notification is a
  // summary.
  NOTIFICATION_GROUP_ALERT_BEHAVIOR_DELEGATED_TO_CHILD = 3;
}

// The alert behavior controlled by the ALERT_ONLY_ONCE flag.
// Next ID: 4
enum NotificationAlertOnlyOnce {
  // Unknown value.
  NOTIFICATION_ALERT_ONLY_ONCE_UNKNOWN = 0;

  // The flag not set.
  NOTIFICATION_ALERT_ONLY_ONCE_NOT_SET = 1;

  // The flag set, and current item is the first update.
  NOTIFICATION_ALERT_ONLY_ONCE_ALERT_ON_FIRST = 2;

  // The flag set, and current item is not the first update.
  NOTIFICATION_ALERT_ONLY_ONCE_MUTE_ON_UPDATES = 3;
}

// The group type of the notification.
// Next ID: 4
enum NotificationGroupType {
  // Unknown value.
  NOTIFICATION_GROUP_TYPE_UNKNOWN = 0;

  // No group assigneed
  NOTIFICATION_GROUP_TYPE_NO_GROUP = 1;

  // This notification is a group summary
  NOTIFICATION_GROUP_TYPE_GROUP_SUMMARY = 2;

  // This notification is a group child
  NOTIFICATION_GROUP_TYPE_GROUP_CHILD = 3;
}

// The style of the notification.
// Next ID: 9
enum NotificationStyle {
  // Unknown value.
  NOTIFICATION_STYLE_UNKNOWN = 0;

  // The notification has not specific any style.
  NOTIFICATION_STYLE_UNSPECIFIED = 1;

  // All other notification styles not listed by this enum.
  NOTIFICATION_STYLE_OTHER = 8;

  // The notification is InboxStyle.
  NOTIFICATION_STYLE_INBOX = 2;

  // The notification is BigTextStyle.
  NOTIFICATION_STYLE_BIG_TEXT = 3;

  // The notification is BigPictureStyle.
  NOTIFICATION_STYLE_BIG_PICTURE = 4;

  // The notification is MessagingStyle.
  NOTIFICATION_STYLE_MESSAGING = 5;

  // The notification is MediaStyle.
  NOTIFICATION_STYLE_MEDIA = 6;

  // The notification is ProgressStyle.
  NOTIFICATION_STYLE_PROGRESS = 7;
}

// The categories for the notification.
// Next ID: 7
enum NotificationCategory {
  // Unknown value.
  NOTIFICATION_CATEGORY_UNKNOWN = 0;

  // No category set for the notificatioin.
  NOTIFICATION_CATEGORY_NONE = 1;

  // Notification set with other categories
  NOTIFICATION_CATEGORY_OTHERS = 2;

  // Notification set with CATEGORY_CALL.
  NOTIFICATION_CATEGORY_CALL = 3;

  // Notification set with CATEGORY_ALARM.
  NOTIFICATION_CATEGORY_ALARM = 4;

  // Notification set with CATEGORY_REMINDER.
  NOTIFICATION_CATEGORY_REMINDER = 5;

  // Notification set with CATEGORY_EVENT.
  NOTIFICATION_CATEGORY_EVENT = 6;
}

// The ongoing type for the notification.
// Next ID: 7
enum NotificationHiddenReason {
  // Unknown value.
  NOTIFICATION_HIDDEN_REASON_UNKNOWN = 0;

  // The notification is not hidden.
  NOTIFICATION_HIDDEN_REASON_NONE = 1;

  // The notification hidden with other reasons.
  NOTIFICATION_HIDDEN_REASON_OTHERS = 2;

  // The notification has set with ongoing activity. Which means it is hidden.
  NOTIFICATION_HIDDEN_REASON_ONGOING_ACTIVITY = 3;

  // The notification is media style.
  NOTIFICATION_HIDDEN_REASON_MEDIA_STYLE = 4;

  // The notification is bound with foreground service.
  NOTIFICATION_HIDDEN_REASON_FOREGROUND_SERVICE = 5;

  // The notification is hidden by dismissal id flow.
  NOTIFICATION_HIDDEN_REASON_MANAGED_DISMISSAL = 6;
}

// The content intent button settings for the notification.
// Next ID: 5
enum NotificationContentIntent {
  // Unknown value.
  NOTIFICATION_CONTENT_INTENT_UNKNOWN = 0;

  // No content intent set.
  NOTIFICATION_CONTENT_INTENT_NONE = 1;

  // Content intent set with OPEN_ON_WATCH.
  NOTIFICATION_CONTENT_INTENT_OPEN_ON_WATCH = 2;

  // Content intent set with OPEN_ON_PHONE.
  NOTIFICATION_CONTENT_INTENT_OPEN_ON_PHONE = 3;

  // Content intent set with BOTH actions.
  NOTIFICATION_CONTENT_INTENT_BOTH = 4;
}

// Defines on which device the notification blocked state is changed for an application.
// Next ID: 4
enum DeviceLocation {
  // Unknown value.
  DEVICE_LOCATION_UNKNOWN = 0;

  // The notification is blocked on the watch.
  DEVICE_LOCATION_WATCH = 1;

  // The notification is blocked on the phone.
  DEVICE_LOCATION_PHONE = 2;

  // The notification is blocked both on the watch and the phone.
  DEVICE_LOCATION_WATCH_AND_PHONE = 3;
}

// Defines in which profile the application is installed.
// Next ID: 3
enum Profile {
  // Unknown value.
  PROFILE_UNKNOWN = 0;

  // The application is installed in the personal profile.
  PROFILE_PERSONAL = 1;

  // The application is installed in the work profile.
  PROFILE_WORK = 2;
}

// Defines the blocking status of the application for notifications.
// Next ID: 3
enum NotificationBlockingStatus {
  // Unknown value.
  NOTIFICATION_BLOCKING_STATUS_UNKNOWN = 0;

  // The notifications for the applications are blocked on the device.
  NOTIFICATION_BLOCKING_STATUS_BLOCKED = 1;

  // The notifications for the applications are unblocked on the device.
  NOTIFICATION_BLOCKING_STATUS_UNBLOCKED = 2;
}

// Defines the bridge configuration type.
// Next ID: 3
enum BridgeConfig {
  // Unknown value
  BRIDGE_CONFIG_UNKNOWN = 0;

  // The bridge configuration type is defined as static.
  BRIDGE_CONFIG_STATIC = 1;

  // The bridge configuration type is defined as dynamic.
  BRIDGE_CONFIG_DYNAMIC = 2;
}

// Represents the number of excluded tags added.
// Next ID: 7
enum ExcludedTagsCount {
  // Unknown value
  EXCLUDED_TAGS_COUNT_UNKNOWN = 0;

  // The count of excluded tags added is one.
  EXCLUDED_TAGS_COUNT_ONE = 1;

  // The count of excluded tags added is two.
  EXCLUDED_TAGS_COUNT_TWO= 2;

  // The count of excluded tags added is three.
  EXCLUDED_TAGS_COUNT_THREE= 3;

  // The count of excluded tags added is four.
  EXCLUDED_TAGS_COUNT_FOUR= 4;

  // The count of excluded tags added is five and above.
  EXCLUDED_TAGS_COUNT_FIVE_AND_ABOVE = 5;

  // The count of excluded tags added is ten and above.
  EXCLUDED_TAGS_COUNT_TEN_AND_ABOVE= 6;
}

// Representing string for the notification action title for the action pressed.
// Next ID: 21
enum NotificationActionTitle {
  // Unknown value
  NOTIFICATION_ACTION_TITLE_UNKNOWN = 0;

  // The performed action title is any other than the above specified action titles.
  NOTIFICATION_ACTION_TITLE_OTHERS= 1;

  // The performed action title is Archive.
  NOTIFICATION_ACTION_TITLE_ARCHIVE = 2;

  // The performed action title is Call.
  NOTIFICATION_ACTION_TITLE_CALL = 3;

  // The performed action title is Delete.
  NOTIFICATION_ACTION_TITLE_DELETE = 4;

  // The performed action title is Smart Reply.
  NOTIFICATION_ACTION_TITLE_SMART_REPLY = 5;

  // The performed action title is Like This.
  NOTIFICATION_ACTION_TITLE_FEWER_LIKE_THIS = 6;

  // The performed action title is Join.
  NOTIFICATION_ACTION_TITLE_JOIN = 7;

  // The performed action title is Like.
  NOTIFICATION_ACTION_TITLE_LIKE = 8;

  // The performed action title is Map.
  NOTIFICATION_ACTION_TITLE_MAP = 9;

  // The performed action title is Mark As Read.
  NOTIFICATION_ACTION_TITLE_MARK_AS_READ = 10;

  // The performed action title is Message.
  NOTIFICATION_ACTION_TITLE_MESSAGE = 11;

  // The performed action title is Reply.
  NOTIFICATION_ACTION_TITLE_REPLY = 12;

  // The performed action title is Save.
  NOTIFICATION_ACTION_TITLE_SAVE = 13;

  // The performed action title is Share.
  NOTIFICATION_ACTION_TITLE_SHARE = 14;

  // The performed action title is Snooze.
  NOTIFICATION_ACTION_TITLE_SNOOZE = 15;

  // The performed action title is View Pass.
  NOTIFICATION_ACTION_TITLE_VIEW_PASS= 16;

  // The performed action title is Mute Chat.
  NOTIFICATION_ACTION_TITLE_MUTE_CHAT= 17;

  // The performed action title is Open.
  NOTIFICATION_ACTION_TITLE_OPEN= 18;

  // The performed action title is Open.
  NOTIFICATION_ACTION_TITLE_OPEN_ON_PHONE= 19;

  // The performed action title is Open.
  NOTIFICATION_ACTION_TITLE_OPEN_ON_WATCH= 20;
}

// Defining the actions for notification to be dismissed.
// Next ID: 6
enum NotificationDismissAction {
  // Unknown value.
  NOTIFICATION_DISMISS_ACTION_UNKNOWN = 0;

  // Notification in the stream is dismissed.
  NOTIFICATION_DISMISS_ACTION_STREAM_DISMISS = 1;

  // ALl notifications in the stream are dismissed.
  NOTIFICATION_DISMISS_ACTION_STREAM_DISMISS_ALL = 2;

  // Multiple notifications in the stream are dismissed.
  NOTIFICATION_DISMISS_ACTION_STREAM_DISMISS_MULTIPLE = 3;

  // Notification in the stream is dismissed by swipe.
  NOTIFICATION_DISMISS_ACTION_STREAM_DISMISS_FROM_SWIPE = 4;

  // Notification in the stream is dismissed from MCU UI.
  NOTIFICATION_DISMISS_ACTION_STREAM_DISMISS_FROM_MCU_UI = 5;
}

// Supported notification cancellation reasons for which the notification is being dismissed.
// Next ID: 4
enum NotificationCancelReason {
  // Unknown value.
  NOTIFICATION_CANCEL_REASON_UNKNOWN = 0;

  // Notification was cancelled by the status bar reporting a notification click.
  NOTIFICATION_CANCEL_REASON_CLICK = 1;

  // Notification was cancelled by the status bar reporting a user dismissal.
  NOTIFICATION_CANCEL_REASON_CANCEL = 2;

  // Notification was cancelled by the status bar reporting a user dismiss all.
  NOTIFICATION_CANCEL_REASON_CANCEL_ALL = 3;
}

// Defines the action for a particular update.
// Next ID: 4
enum NotificationActionType {
  // Unknown value.
  NOTIFICATION_ACTION_TYPE_UNKNOWN = 0;

  // Notification action for open on watch.
  NOTIFICATION_ACTION_TYPE_OPEN_ON_WATCH = 1;

  // Notification action for open on phone.
  NOTIFICATION_ACTION_TYPE_OPEN_ON_PHONE= 2;

  // Notification action for other actions.
  NOTIFICATION_ACTION_TYPE_OTHERS = 3;
}

// Defines the notification flow component for which the latency is to be calculated.
// Next ID: 4
enum NotificationFlowComponent {
  // Unknown value.
  NOTIFICATION_FLOW_COMPONENT_UNKNOWN = 0;

  // Notification flow representing flow when a notification is posted.
  NOTIFICATION_FLOW_COMPONENT_POST_NOTIFICATION = 1;

  // Notification flow representing flow when a notification is dismissed.
  NOTIFICATION_FLOW_COMPONENT_DISMISS_NOTIFICATION = 2;

  // Notification flow representing flow when an action was executed.
  NOTIFICATION_FLOW_COMPONENT_ACTION_EXECUTION = 3;
}

/** Defines the name for Notification API usage reported.
 *
 * API names are based on:
 * vendor/google_clockwork_partners/packages/WearServices/src/com/google/wear/services/notification/api/NotificationApiImpl.java
 *
 * Next ID: 20
 */
enum NotificationApiName {
  // Unknown value for backward compatibility
  NOTIFICATION_API_NAME_UNKNOWN = 0;

  NOTIFICATION_API_NAME_REGISTER_NOTIFICATION_EVENT_LISTENER = 1;
  NOTIFICATION_API_NAME_UNREGISTER_NOTIFICATION_EVENT_LISTENER = 2;

  NOTIFICATION_API_NAME_GET_ACTIVE_NOTIFICATIONS = 3;
  NOTIFICATION_API_NAME_GET_ACTIVE_NOTIFICATIONS_BY_IDS = 4;

  NOTIFICATION_API_NAME_GET_CURRENT_INTERRUPTION_FILTER = 5;
  NOTIFICATION_API_NAME_REQUEST_INTERRUPTION_FILTER_UPDATE = 6;

  NOTIFICATION_API_NAME_GET_CURRENT_LISTENER_HINTS = 7;
  NOTIFICATION_API_NAME_REQUEST_LISTENER_HINTS_UPDATE = 8;

  NOTIFICATION_API_NAME_GET_CURRENT_RANKING = 9;

  NOTIFICATION_API_NAME_GET_NOTIFICATION_COUNT_DATA = 10;

  NOTIFICATION_API_NAME_CANCEL_ALL = 18;
  NOTIFICATION_API_NAME_DISMISS_ALL = 11;
  NOTIFICATION_API_NAME_DISMISS_MULTIPLE_FROM_UI = 12;
  NOTIFICATION_API_NAME_MARK_ITEMS_READ = 19;

  NOTIFICATION_API_NAME_IS_APP_MUTED = 13;
  NOTIFICATION_API_NAME_GET_MUTED_APPS = 14;
  NOTIFICATION_API_NAME_MUTE_APP = 15;
  NOTIFICATION_API_NAME_UNMUTE_APP = 16;
  NOTIFICATION_API_NAME_CAN_MUTE_APP = 17;
}


// Defines the notification api status for api usage reported.
// Next ID: 3
enum NotificationApiStatus {
  // Unknown value for backward compatibility
  NOTIFICATION_API_STATUS_UNKNOWN = 0;

  // Notification status when API call is invoked
  NOTIFICATION_API_STATUS_START = 1;

  // Notification status when API call completes successfully
  NOTIFICATION_API_STATUS_SUCCESS = 2;
}


// Defines which component the latency is being calculated for.
// Next ID: 7
enum ComponentName {
  // Unknown value.
  COMPONENT_NAME_UNKNOWN = 0;

  // The component is WearServices.
  COMPONENT_NAME_WEAR_SERVICES = 1;

  // The component is Companion.
  COMPONENT_NAME_COMPANION = 2;

  // The component is SysUI.
  COMPONENT_NAME_SYSUI = 3;

  // The component is Framework.
  COMPONENT_NAME_FRAMEWORK = 4;

  // Components in one way RPC transfer.
  COMPONENT_NAME_TRANSFER_ONE_WAY = 5;

  // Components in a roundtrip RPC transfer.
  COMPONENT_NAME_TRANSFER_ROUNDTRIP = 6;
}

// This enum depicts an action taken on a call
// Next ID: 4
enum CallAction {
  // Depicts an unknown call action
  CALL_ACTION_UNKNOWN = 0;

  // Depicts an accept call action
  CALL_ACTION_ACCEPTED = 1;

  // Depicts a reject call action
  CALL_ACTION_REJECTED = 2;

  // Depicts a silence call action
  CALL_ACTION_SILENCED = 3;
}

// This enum depicts the different type of calls
// Next ID: 3
enum CallType {
  // Depicts an unknown call type
  CALL_TYPE_UNKNOWN = 0;

  // Depicts an incoming call
  CALL_TYPE_INCOMING = 1;

  // Depicts an outgoing call
  CALL_TYPE_OUTGOING = 2;
}

// This enum depicts the original source of the call
// Next ID: 4
enum CallSource {
  // Depicts an unknown call source
  CALL_SOURCE_UNKNOWN = 0;

  // Depicts a call originating on the watch
  CALL_SOURCE_WATCH = 1;

  // Depicts a call originating on the phone and bridged using HFP
  CALL_SOURCE_PHONE_HFP = 2;

  // Depicts a call originating on the phone and bridged using the companion
  CALL_SOURCE_PHONE_COMPANION = 3;
}

// This enum depicts the initial user interaction with the call
// Next ID: 5
enum CallResult {
  // Depicts an unknown interaction
  CALL_RESULT_UNKNOWN = 0;

  // Depicts no interaction with the watch
  CALL_RESULT_NO_INTERACTION_ON_WATCH = 1;

  // Depicts that the call was accepted using the watch
  CALL_RESULT_ACCEPTED_ON_WATCH = 2;

  // Depicts that the call was rejected using the watch
  CALL_RESULT_REJECTED_ON_WATCH = 3;

  // Depicts that the call was dialed using the watch
  CALL_RESULT_DIALED_ON_WATCH = 4;
}

// This enum depicts a user interaction during the call
// Next ID: 4
enum CallInteraction {
  // Depicts an unknown interaction
  CALL_INTERACTION_UNKNOWN = 0;

  // Depicts an increase in volume
  CALL_INTERACTION_VOLUME_INCREASE = 1;

  // Depicts a decrease in volume
  CALL_INTERACTION_VOLUME_DECREASE = 2;

  // Depicts a mute action
  CALL_INTERACTION_MUTE = 3;
}

// This enum depicts the different stages of call where latency should be
// measured.
// Next ID: 6
enum LatencyAction {
  // Depicts an unknown latency measurement
  LATENCY_ACTION_UNKNOWN = 0;

  // Depicts the latency for creating a call
  LATENCY_ACTION_CALL_CREATION = 1;

  // Depicts the latency to ring for the call
  LATENCY_ACTION_RING = 2;

  // Depicts the latency for answering the call
  LATENCY_ACTION_PICKED_CALL = 3;

  // Depicts the latency for changing the audio output for the call
  LATENCY_ACTION_AUDIO_OUTPUT_SWITCH = 4;

  // Depicts the latency to dial a call
  LATENCY_ACTION_DIAL = 5;
}

// This enum depicts all the reasons that can cause a call to be disconnected.
// Please see
// https://developer.android.com/reference/android/telecom/DisconnectCause.
// Next ID: 13
enum DisconnectionReason {
  // Disconnected because of an unknown or unspecified reason.
  DISCONNECT_REASON_UNKNOWN = 0;

  // Disconnected because there was an error, such as a problem with the
  // network.
  DISCONNECT_REASON_ERROR = 1;

  // Disconnected because of a local user-initiated action, such as hanging up.
  DISCONNECT_REASON_LOCAL = 2;

  // Disconnected because of a remote user-initiated action, such as the other
  // party hanging up up.
  DISCONNECT_REASON_REMOTE = 3;

  // Disconnected because it has been canceled.
  DISCONNECT_REASON_CANCELLED = 4;

  // Disconnected because there was no response to an incoming call.
  DISCONNECT_REASON_MISSED = 5;

  // Disconnected because the user rejected an incoming call.
  DISCONNECT_REASON_REJECTED = 6;

  // Disconnected because the other party was busy.
  DISCONNECT_REASON_BUSY = 7;

  // Disconnected because of a restriction on placing the call, such as dialing
  // in airplane mode.
  DISCONNECT_REASON_RESTRICTED = 8;

  // Disconnected for reason not described by other disconnect codes.
  DISCONNECT_REASON_OTHER = 9;

  // Disconnected because the connection manager did not support the call.
  DISCONNECT_REASON_CONNECTION_MANAGER_NOT_SUPPORTED = 10;

  // Disconnected because the user did not locally answer the incoming call, but
  // it was answered on another device where the call was ringing.
  DISCONNECT_REASON_ANSWERED_ELSEWHERE = 11;

  // Disconnected because the call was pulled from the current device to another
  // device.
  DISCONNECT_REASON_CALL_PULLED = 12;
}

// This enum depicts the error code where a disconnection happened due to an
// error.
// Next ID: 6
enum DisconnectionErrorCode {
  // Depicts an unknown error code
  DISCONNECTION_ERROR_CODE_UNKNOWN = 0;

  // Depicts no error
  DISCONNECTION_ERROR_CODE_NONE = 1;

  // Depicts an error from the phone
  DISCONNECTION_ERROR_CODE_PHONE = 2;

  // Depicts an error from dialer
  DISCONNECTION_ERROR_CODE_DIALER = 3;

  // Depicts an error from a disconnect where this was a bridged call
  DISCONNECTION_ERROR_CODE_PHONE_DISCONNECTED = 4;

  // Depicts an error where creating an outgoing call failed
  DISCONNECTION_ERROR_CODE_OUTGOING_CALL_FAILURE = 5;
}

// This enum depicts the tether mode of certain watches, they are corresponding
// to vendor/google_clockwork/sdk/lib/src/com/google/wear/tether/TetherConfigurationClient.java
// Next ID: 4
enum TetherConfigurationStatus {
  // Depicts an unknown tether status
  TETHER_CONFIGURATION_UNKNOWN = 0;

  // Depicts the watch is in standalone mode
  TETHER_CONFIGURATION_STANDALONE = 1;

  // Depicts the watch is in tethered mode
  TETHER_CONFIGURATION_TETHERED = 2;

  // Depicts the watch is in restricted connection mode
  TETHER_CONFIGURATION_RESTRICTED = 3;
}

// This enum represents if watch is worn: is it on body, off body or state is unknown
enum OnBodyState {
  ON_BODY_STATE_UNKNOWN = 0;
  ON_BODY_STATE_ON = 1;
  ON_BODY_STATE_OFF = 2;
}

// Describes the watch face type.
// Next ID: 4
enum WatchFaceType {
  // Unknown type.
  WATCH_FACE_TYPE_UNKNOWN = 0;

  // Wear support library compiled watch face type.
  WATCH_FACE_TYPE_WSL = 1;

  // Androidx compiled watch face type.
  WATCH_FACE_TYPE_ANDROIDX = 2;

  // Declarative watch face type.
  WATCH_FACE_TYPE_DWF = 3;
}

// Contains types for photo selection for the photos watch face feature.
enum PhotoSelectionType {
  // Unknown value, maps to MULTIPLE in Companion if not specified
  PHOTO_SELECTION_NOT_SPECIFIED = 0;

  // Single image supported
  PHOTO_SELECTION_SELECT_SINGLE = 1;

  // Multiple images supported
  PHOTO_SELECTION_SELECT_MULTIPLE = 2;
}

// This enum represents the type of remote event that is being reported, they
// are corresponding to
// vendor/google_clockwork/libs/contract/companion/remoteevent/remoteeventtype.proto
// Next ID: 8
enum RemoteEventType {
  EVENT_TYPE_UNKNOWN = 0;
  EVENT_TYPE_ACCOUNT_DEEPLINK = 1;
  EVENT_TYPE_OTA_NOTIFICATION = 2;
  EVENT_TYPE_PHOTO_PICKER_DEEPLINK = 3;
  EVENT_TYPE_BATTERY_FULLY_CHARGED = 4;
  EVENT_TYPE_WATCH_OFF_CHARGER = 5;
  EVENT_TYPE_SEND_SMS = 6;
  EVENT_TYPE_LOCALE_SETTINGS_DEEPLINK = 7;
}

// This enum depicts the state of the remote event.
// Next ID: 13
enum RemoteEventState {
  // Depicts an unknown remote event state.
  REMOTE_EVENT_STATE_UNKNOWN = 0;

  // Depicts total number of times remote event API is invoked.
  REMOTE_EVENT_API_INVOKED = 1;

  // Depicts a successful remote event response.
  REMOTE_EVENT_RESPONSE_SUCCESS = 2;

  // Remote event with generic failure condition response which doesn't fall into any other
  // condition.
  REMOTE_EVENT_RESPONSE_FAILURE = 3;

  // Remote event with failure response caused by caused by exceeding max message size.
  REMOTE_EVENT_RESPONSE_MAX_SIZE_EXCEEDED = 4;

  // Remote event with response caused by WearServices not being able to communicate with
  // the Companion.
  REMOTE_EVENT_RESPONSE_REMOTE_NOT_REACHABLE = 5;

  // Remote event with response not being received within the timeout period.
  REMOTE_EVENT_RESPONSE_TIMEOUT = 6;

  // Remote event with response caused by a caller not having necessary permissions or signature
  // to trigger this remote event.
  REMOTE_EVENT_RESPONSE_SECURITY_EXCEPTION = 7;

  // The RemoteEvent triggered by the caller is not recognized/supported by the Companion.
  REMOTE_EVENT_RESPONSE_INVALID_REMOTE_EVENT_TYPE = 8;

  // Failure when trying to execute the RemoteEvent on the phone.
  REMOTE_EVENT_RESPONSE_REMOTE_EXECUTION_EXCEPTION = 9;

  // Calling app exceeded the maximum number of allowed triggers for this remote event type.
  REMOTE_EVENT_RESPONSE_MAX_REMOTE_EVENT_TRIGGERS_EXCEEDED = 10;

  // Companion failed to deserialize the RemoteEvent object.
  REMOTE_EVENT_RESPONSE_DESERIALIZATION_EXCEPTION = 11;

  // Remote event with no connected Companion supports RemoteEvents response.
  REMOTE_EVENT_RESPONSE_REMOTE_NOT_SUPPORTED = 12;
}

// This enum depicts the state of the remote interactions.
enum RemoteInteractionsState {
  // Depicts an unknown remote interactions state.
  REMOTE_INTERACTIONS_RESPONSE_UNKNOWN = 0;

  // Depicts total number of times remote interactions API is invoked.
  REMOTE_INTERACTIONS_API_INVOKED = 1;

  // Depicts a successful remote interactions response.
  REMOTE_INTERACTIONS_RESPONSE_SUCCESS = 2;

  // Remote interactions coming from a background service are disallowed.
  REMOTE_INTERACTIONS_RESPONSE_BACKGROUND_REQUEST_DISALLOWED = 3;

  // Remote interactions with response not being received within the timeout period.
  REMOTE_INTERACTIONS_RESPONSE_TIMEOUT = 4;

  // Remote interactions with generic failure condition response which doesn't fall into any other
  // condition.
  REMOTE_INTERACTIONS_RESPONSE_FAILURE = 5;
}

// This enum depicts different components of the bugreport flow
// Next ID: 5
enum BugreportComponent {
  // Depicts an unknown component
  BUGREPORT_COMPONENT_UNKNOWN = 0;

  // Depicts the companion app
  BUGREPORT_COMPONENT_COMPANION_APP = 1;

  // Depicts the watch UI
  BUGREPORT_COMPONENT_WATCH_UI = 2;

  // Depicts when the component is not set
  BUGREPORT_COMPONENT_UNSET = 3;

  // Atoms created by WCS auto upload feature
  BUGREPORT_COMPONENT_WCS_AUTO_UPLOAD = 4;
}

// This enum depicts the result of the bugreport
// Next ID: 4
enum BugreportResult {
  // Depicts an unknown bugreport result
  BUGREPORT_RESULT_UNKNOWN = 0;

  // Depicts a successful bugreport result
  BUGREPORT_RESULT_SUCCESS = 1;

  // Depicts a failure bugreport result
  BUGREPORT_RESULT_FAILURE = 2;

  // Depicts an empty bugreport result
  BUGREPORT_RESULT_UNSET = 3;
}

// This enum depicts a bugreport event
// Next ID: 12
enum BugreportEvent {
  EVENT_BUGREPORT_UNKNOWN = 0;
  EVENT_BUGREPORT_REQUESTED = 1;
  EVENT_BUGREPORT_TRIGGERED = 2;
  EVENT_BUGREPORT_FINISHED = 3;
  EVENT_BUGREPORT_RESULT_RECEIVED = 4;
  // User consent is requested to upload a bug report.
  // Only logged by WCS_AUTO_UPLOAD component.
  EVENT_BUGREPORT_UPLOAD_CONSENT_REQUESTED = 5;
  // Result of the user consent request is received.
  // Only logged by WCS_AUTO_UPLOAD component.
  EVENT_BUGREPORT_UPLOAD_CONSENT_RESULT_RECEIVED = 6;
  // Bug report upload started.
  // Only logged by WCS_AUTO_UPLOAD component.
  EVENT_BUGREPORT_UPLOAD_STARTED = 7;
  // Bug report upload finished.
  // Only logged by WCS_AUTO_UPLOAD component.
  EVENT_BUGREPORT_UPLOAD_FINISHED = 8;
  // A stale bug report file is discarded without being uploaded.
  // Only logged by WCS_AUTO_UPLOAD component.
  EVENT_BUGREPORT_DISCARDED = 9;
  // Companion's cross stack logs are requested to be included in the bugreport,
  // when the bugreport is triggered via BugreportManager.
  EVENT_BUGREPORT_CROSS_STACK_LOGS_REQUESTED = 10;
  // Companion's cross stack logs are received by WearServices,
  // when the bugreport is triggered via BugreportManager.
  EVENT_BUGREPORT_CROSS_STACK_LOGS_RECEIVED = 11;

}

// This enum depicts a bugreport failure reason
// Only logged by WCS_AUTO_UPLOAD component.
// Next ID: 13
enum BugreportFailureReason {
  // The failure reason is not specified.
  BUGREPORT_FAILURE_REASON_UNKNOWN = 0;
  // The event does not contain any failure.
  BUGREPORT_FAILURE_REASON_EMPTY = 1;
  // The request is rejected due to rate limiting.
  BUGREPORT_FAILURE_REASON_TOO_MANY_REQUESTS = 2;
  // The event failed because it is not possible to create an authentication
  // token.
  BUGREPORT_FAILURE_REASON_AUTHENTICATION_FAILED = 3;
  // The event failed because the app does not have the required permission to
  // use BugreportManager APIs.
  BUGREPORT_FAILURE_REASON_PERMISSION_ERROR = 4;
  // BugreportManager APIs failed while generating the bug report.
  BUGREPORT_FAILURE_REASON_REPORT_GENERATION_ERROR = 5;
  // BugreportManager APIs failed to generate or retrieve the bug report as
  // another report generation is in progress.
  BUGREPORT_FAILURE_REASON_ANOTHER_REPORT_GENERATION_IN_PROGRESS = 6;
  // The user denied the consent to upload the bug report.
  BUGREPORT_FAILURE_REASON_USER_DENIED_CONSENT = 7;
  // The user didn't respond to the consent request in time.
  BUGREPORT_FAILURE_REASON_USER_CONSENT_TIMED_OUT = 8;
  // Bug report file to retrieve was not found.
  BUGREPORT_FAILURE_REASON_FILE_NOT_FOUND = 9;
  // Creating a Buganizer issue failed.
  BUGREPORT_FAILURE_REASON_BUG_CREATION_FAILED = 10;
  // Attaching the bug report file to Buganizer failed.
  BUGREPORT_FAILURE_REASON_ATTACHMENT_UPLOAD_FAILED = 11;
  // The bug report upload was canceled before it finished.
  BUGREPORT_FAILURE_REASON_CANCELED = 12;
}
