/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    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.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from clusters-shared-Enums.h.zapt

#pragma once

#include <stdint.h>

namespace chip {
namespace app {
namespace Clusters {
namespace detail {
// Enums shared across multiple clusters.

// Enum for ChangeIndicationEnum
enum class ChangeIndicationEnum : uint8_t
{
    kOk       = 0x00,
    kWarning  = 0x01,
    kCritical = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for DegradationDirectionEnum
enum class DegradationDirectionEnum : uint8_t
{
    kUp   = 0x00,
    kDown = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for LevelValueEnum
enum class LevelValueEnum : uint8_t
{
    kUnknown  = 0x00,
    kLow      = 0x01,
    kMedium   = 0x02,
    kHigh     = 0x03,
    kCritical = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for MeasurementMediumEnum
enum class MeasurementMediumEnum : uint8_t
{
    kAir   = 0x00,
    kWater = 0x01,
    kSoil  = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for MeasurementTypeEnum
enum class MeasurementTypeEnum : uint16_t
{
    kUnspecified      = 0x00,
    kVoltage          = 0x01,
    kActiveCurrent    = 0x02,
    kReactiveCurrent  = 0x03,
    kApparentCurrent  = 0x04,
    kActivePower      = 0x05,
    kReactivePower    = 0x06,
    kApparentPower    = 0x07,
    kRMSVoltage       = 0x08,
    kRMSCurrent       = 0x09,
    kRMSPower         = 0x0A,
    kFrequency        = 0x0B,
    kPowerFactor      = 0x0C,
    kNeutralCurrent   = 0x0D,
    kElectricalEnergy = 0x0E,
    kReactiveEnergy   = 0x0F,
    kApparentEnergy   = 0x10,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 17,
};

// Enum for MeasurementUnitEnum
enum class MeasurementUnitEnum : uint8_t
{
    kPpm  = 0x00,
    kPpb  = 0x01,
    kPpt  = 0x02,
    kMgm3 = 0x03,
    kUgm3 = 0x04,
    kNgm3 = 0x05,
    kPm3  = 0x06,
    kBqm3 = 0x07,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 8,
};

// Enum for ProductIdentifierTypeEnum
enum class ProductIdentifierTypeEnum : uint8_t
{
    kUpc    = 0x00,
    kGtin8  = 0x01,
    kEan    = 0x02,
    kGtin14 = 0x03,
    kOem    = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Bitmaps shared across multiple clusters.

} // namespace detail

namespace Globals {
// Global enums.

// Enum for AreaTypeTag
enum class AreaTypeTag : uint8_t
{
    kAisle           = 0x00,
    kAttic           = 0x01,
    kBackDoor        = 0x02,
    kBackYard        = 0x03,
    kBalcony         = 0x04,
    kBallroom        = 0x05,
    kBathroom        = 0x06,
    kBedroom         = 0x07,
    kBorder          = 0x08,
    kBoxroom         = 0x09,
    kBreakfastRoom   = 0x0A,
    kCarport         = 0x0B,
    kCellar          = 0x0C,
    kCloakroom       = 0x0D,
    kCloset          = 0x0E,
    kConservatory    = 0x0F,
    kCorridor        = 0x10,
    kCraftRoom       = 0x11,
    kCupboard        = 0x12,
    kDeck            = 0x13,
    kDen             = 0x14,
    kDining          = 0x15,
    kDrawingRoom     = 0x16,
    kDressingRoom    = 0x17,
    kDriveway        = 0x18,
    kElevator        = 0x19,
    kEnsuite         = 0x1A,
    kEntrance        = 0x1B,
    kEntryway        = 0x1C,
    kFamilyRoom      = 0x1D,
    kFoyer           = 0x1E,
    kFrontDoor       = 0x1F,
    kFrontYard       = 0x20,
    kGameRoom        = 0x21,
    kGarage          = 0x22,
    kGarageDoor      = 0x23,
    kGarden          = 0x24,
    kGardenDoor      = 0x25,
    kGuestBathroom   = 0x26,
    kGuestBedroom    = 0x27,
    kGuestRoom       = 0x29,
    kGym             = 0x2A,
    kHallway         = 0x2B,
    kHearthRoom      = 0x2C,
    kKidsRoom        = 0x2D,
    kKidsBedroom     = 0x2E,
    kKitchen         = 0x2F,
    kLaundryRoom     = 0x31,
    kLawn            = 0x32,
    kLibrary         = 0x33,
    kLivingRoom      = 0x34,
    kLounge          = 0x35,
    kMediaTvRoom     = 0x36,
    kMudRoom         = 0x37,
    kMusicRoom       = 0x38,
    kNursery         = 0x39,
    kOffice          = 0x3A,
    kOutdoorKitchen  = 0x3B,
    kOutside         = 0x3C,
    kPantry          = 0x3D,
    kParkingLot      = 0x3E,
    kParlor          = 0x3F,
    kPatio           = 0x40,
    kPlayRoom        = 0x41,
    kPoolRoom        = 0x42,
    kPorch           = 0x43,
    kPrimaryBathroom = 0x44,
    kPrimaryBedroom  = 0x45,
    kRamp            = 0x46,
    kReceptionRoom   = 0x47,
    kRecreationRoom  = 0x48,
    kRoof            = 0x4A,
    kSauna           = 0x4B,
    kScullery        = 0x4C,
    kSewingRoom      = 0x4D,
    kShed            = 0x4E,
    kSideDoor        = 0x4F,
    kSideYard        = 0x50,
    kSittingRoom     = 0x51,
    kSnug            = 0x52,
    kSpa             = 0x53,
    kStaircase       = 0x54,
    kSteamRoom       = 0x55,
    kStorageRoom     = 0x56,
    kStudio          = 0x57,
    kStudy           = 0x58,
    kSunRoom         = 0x59,
    kSwimmingPool    = 0x5A,
    kTerrace         = 0x5B,
    kUtilityRoom     = 0x5C,
    kWard            = 0x5D,
    kWorkshop        = 0x5E,
    kToilet          = 0x5F,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 40,
};

// Enum for AtomicRequestTypeEnum
enum class AtomicRequestTypeEnum : uint8_t
{
    kBeginWrite    = 0x00,
    kCommitWrite   = 0x01,
    kRollbackWrite = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for LandmarkTag
enum class LandmarkTag : uint8_t
{
    kAirConditioner = 0x00,
    kAirPurifier    = 0x01,
    kBackDoor       = 0x02,
    kBarStool       = 0x03,
    kBathMat        = 0x04,
    kBathtub        = 0x05,
    kBed            = 0x06,
    kBookshelf      = 0x07,
    kChair          = 0x08,
    kChristmasTree  = 0x09,
    kCoatRack       = 0x0A,
    kCoffeeTable    = 0x0B,
    kCookingRange   = 0x0C,
    kCouch          = 0x0D,
    kCountertop     = 0x0E,
    kCradle         = 0x0F,
    kCrib           = 0x10,
    kDesk           = 0x11,
    kDiningTable    = 0x12,
    kDishwasher     = 0x13,
    kDoor           = 0x14,
    kDresser        = 0x15,
    kLaundryDryer   = 0x16,
    kFan            = 0x17,
    kFireplace      = 0x18,
    kFreezer        = 0x19,
    kFrontDoor      = 0x1A,
    kHighChair      = 0x1B,
    kKitchenIsland  = 0x1C,
    kLamp           = 0x1D,
    kLitterBox      = 0x1E,
    kMirror         = 0x1F,
    kNightstand     = 0x20,
    kOven           = 0x21,
    kPetBed         = 0x22,
    kPetBowl        = 0x23,
    kPetCrate       = 0x24,
    kRefrigerator   = 0x25,
    kScratchingPost = 0x26,
    kShoeRack       = 0x27,
    kShower         = 0x28,
    kSideDoor       = 0x29,
    kSink           = 0x2A,
    kSofa           = 0x2B,
    kStove          = 0x2C,
    kTable          = 0x2D,
    kToilet         = 0x2E,
    kTrashCan       = 0x2F,
    kLaundryWasher  = 0x30,
    kWindow         = 0x31,
    kWineCooler     = 0x32,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 51,
};

// Enum for LocationTag
enum class LocationTag : uint8_t
{
    kIndoor  = 0x00,
    kOutdoor = 0x01,
    kInside  = 0x02,
    kOutside = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for MeasurementTypeEnum
enum class MeasurementTypeEnum : uint16_t
{
    kUnspecified      = 0x00,
    kVoltage          = 0x01,
    kActiveCurrent    = 0x02,
    kReactiveCurrent  = 0x03,
    kApparentCurrent  = 0x04,
    kActivePower      = 0x05,
    kReactivePower    = 0x06,
    kApparentPower    = 0x07,
    kRMSVoltage       = 0x08,
    kRMSCurrent       = 0x09,
    kRMSPower         = 0x0A,
    kFrequency        = 0x0B,
    kPowerFactor      = 0x0C,
    kNeutralCurrent   = 0x0D,
    kElectricalEnergy = 0x0E,
    kReactiveEnergy   = 0x0F,
    kApparentEnergy   = 0x10,
    kSoilMoisture     = 0x11,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 18,
};

// Enum for PositionTag
enum class PositionTag : uint8_t
{
    kLeft   = 0x00,
    kRight  = 0x01,
    kTop    = 0x02,
    kBottom = 0x03,
    kMiddle = 0x04,
    kRow    = 0x05,
    kColumn = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for PowerThresholdSourceEnum
enum class PowerThresholdSourceEnum : uint8_t
{
    kContract  = 0x00,
    kRegulator = 0x01,
    kEquipment = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for RelativePositionTag
enum class RelativePositionTag : uint8_t
{
    kUnder   = 0x00,
    kNextTo  = 0x01,
    kAround  = 0x02,
    kOn      = 0x03,
    kAbove   = 0x04,
    kFrontOf = 0x05,
    kBehind  = 0x06,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 7,
};

// Enum for StreamUsageEnum
enum class StreamUsageEnum : uint8_t
{
    kInternal  = 0x00,
    kRecording = 0x01,
    kAnalysis  = 0x02,
    kLiveView  = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for TariffPriceTypeEnum
enum class TariffPriceTypeEnum : uint8_t
{
    kStandard        = 0x00,
    kCritical        = 0x01,
    kVirtual         = 0x02,
    kIncentive       = 0x03,
    kIncentiveSignal = 0x04,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 5,
};

// Enum for TariffUnitEnum
enum class TariffUnitEnum : uint8_t
{
    kKWh  = 0x00,
    kKVAh = 0x01,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 2,
};

// Enum for TestGlobalEnum
enum class TestGlobalEnum : uint8_t
{
    kSomeValue      = 0x00,
    kSomeOtherValue = 0x01,
    kFinalValue     = 0x02,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 3,
};

// Enum for ThreeLevelAutoEnum
enum class ThreeLevelAutoEnum : uint8_t
{
    kAuto   = 0x00,
    kLow    = 0x01,
    kMedium = 0x02,
    kHigh   = 0x03,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 4,
};

// Enum for WebRTCEndReasonEnum
enum class WebRTCEndReasonEnum : uint8_t
{
    kICEFailed         = 0x00,
    kICETimeout        = 0x01,
    kUserHangup        = 0x02,
    kUserBusy          = 0x03,
    kReplaced          = 0x04,
    kNoUserMedia       = 0x05,
    kInviteTimeout     = 0x06,
    kAnsweredElsewhere = 0x07,
    kOutOfResources    = 0x08,
    kMediaTimeout      = 0x09,
    kLowPower          = 0x0A,
    kPrivacyMode       = 0x0B,
    kUnknownReason     = 0x0C,
    // All received enum values that are not listed above will be mapped
    // to kUnknownEnumValue. This is a helper enum value that should only
    // be used by code to process how it handles receiving and unknown
    // enum value. This specific should never be transmitted.
    kUnknownEnumValue = 13,
};

// Global bitmaps.

// Bitmap for TestGlobalBitmap
enum class TestGlobalBitmap : uint32_t
{
    kFirstBit  = 0x1,
    kSecondBit = 0x2,
};

} // namespace Globals
} // namespace Clusters
} // namespace app
} // namespace chip
