/*
 *
 *    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-Enums.h.zapt

#pragma once

#include <clusters/shared/Enums.h>
#include <cstdint>

namespace chip {
namespace app {
namespace Clusters {
namespace DoorLock {

// Enum for AlarmCodeEnum
enum class AlarmCodeEnum : uint8_t {
  kLockJammed = 0x00,
  kLockFactoryReset = 0x01,
  kLockRadioPowerCycled = 0x03,
  kWrongCodeEntryLimit = 0x04,
  kFrontEsceutcheonRemoved = 0x05,
  kDoorForcedOpen = 0x06,
  kDoorAjar = 0x07,
  kForcedUser = 0x08,
  // 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 CredentialRuleEnum
enum class CredentialRuleEnum : uint8_t {
  kSingle = 0x00,
  kDual = 0x01,
  kTri = 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 CredentialTypeEnum
enum class CredentialTypeEnum : uint8_t {
  kProgrammingPIN = 0x00,
  kPin = 0x01,
  kRfid = 0x02,
  kFingerprint = 0x03,
  kFingerVein = 0x04,
  kFace = 0x05,
  kAliroCredentialIssuerKey = 0x06,
  kAliroEvictableEndpointKey = 0x07,
  kAliroNonEvictableEndpointKey = 0x08,
  // 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 = 9,
};

// Enum for DataOperationTypeEnum
enum class DataOperationTypeEnum : uint8_t {
  kAdd = 0x00,
  kClear = 0x01,
  kModify = 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 DlLockState
enum class DlLockState : uint8_t {
  kNotFullyLocked = 0x00,
  kLocked = 0x01,
  kUnlocked = 0x02,
  kUnlatched = 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 DlLockType
enum class DlLockType : uint8_t {
  kDeadBolt = 0x00,
  kMagnetic = 0x01,
  kOther = 0x02,
  kMortise = 0x03,
  kRim = 0x04,
  kLatchBolt = 0x05,
  kCylindricalLock = 0x06,
  kTubularLock = 0x07,
  kInterconnectedLock = 0x08,
  kDeadLatch = 0x09,
  kDoorFurniture = 0x0A,
  kEurocylinder = 0x0B,
  // 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 = 12,
};

// Enum for DlStatus
enum class DlStatus : uint8_t {
  kSuccess = 0x00,
  kFailure = 0x01,
  kDuplicate = 0x02,
  kOccupied = 0x03,
  kInvalidField = 0x85,
  kResourceExhausted = 0x89,
  kNotFound = 0x8B,
  // 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 DoorLockOperationEventCode
enum class DoorLockOperationEventCode : uint8_t {
  kUnknownOrMfgSpecific = 0x00,
  kLock = 0x01,
  kUnlock = 0x02,
  kLockInvalidPinOrId = 0x03,
  kLockInvalidSchedule = 0x04,
  kUnlockInvalidPinOrId = 0x05,
  kUnlockInvalidSchedule = 0x06,
  kOneTouchLock = 0x07,
  kKeyLock = 0x08,
  kKeyUnlock = 0x09,
  kAutoLock = 0x0A,
  kScheduleLock = 0x0B,
  kScheduleUnlock = 0x0C,
  kManualLock = 0x0D,
  kManualUnlock = 0x0E,
  // 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 = 15,
};

// Enum for DoorLockProgrammingEventCode
enum class DoorLockProgrammingEventCode : uint8_t {
  kUnknownOrMfgSpecific = 0x00,
  kMasterCodeChanged = 0x01,
  kPinAdded = 0x02,
  kPinDeleted = 0x03,
  kPinChanged = 0x04,
  kIdAdded = 0x05,
  kIdDeleted = 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 DoorLockSetPinOrIdStatus
enum class DoorLockSetPinOrIdStatus : uint8_t {
  kSuccess = 0x00,
  kGeneralFailure = 0x01,
  kMemoryFull = 0x02,
  kDuplicateCodeError = 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 DoorLockUserStatus
enum class DoorLockUserStatus : uint8_t {
  kAvailable = 0x00,
  kOccupiedEnabled = 0x01,
  kOccupiedDisabled = 0x03,
  kNotSupported = 0xFF,
  // 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 DoorLockUserType
enum class DoorLockUserType : uint8_t {
  kUnrestricted = 0x00,
  kYearDayScheduleUser = 0x01,
  kWeekDayScheduleUser = 0x02,
  kMasterUser = 0x03,
  kNonAccessUser = 0x04,
  kNotSupported = 0xFF,
  // 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 DoorStateEnum
enum class DoorStateEnum : uint8_t {
  kDoorOpen = 0x00,
  kDoorClosed = 0x01,
  kDoorJammed = 0x02,
  kDoorForcedOpen = 0x03,
  kDoorUnspecifiedError = 0x04,
  kDoorAjar = 0x05,
  // 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 = 6,
};

// Enum for LockDataTypeEnum
enum class LockDataTypeEnum : uint8_t {
  kUnspecified = 0x00,
  kProgrammingCode = 0x01,
  kUserIndex = 0x02,
  kWeekDaySchedule = 0x03,
  kYearDaySchedule = 0x04,
  kHolidaySchedule = 0x05,
  kPin = 0x06,
  kRfid = 0x07,
  kFingerprint = 0x08,
  kFingerVein = 0x09,
  kFace = 0x0A,
  kAliroCredentialIssuerKey = 0x0B,
  kAliroEvictableEndpointKey = 0x0C,
  kAliroNonEvictableEndpointKey = 0x0D,
  // 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 = 14,
};

// Enum for LockOperationTypeEnum
enum class LockOperationTypeEnum : uint8_t {
  kLock = 0x00,
  kUnlock = 0x01,
  kNonAccessUserEvent = 0x02,
  kForcedUserEvent = 0x03,
  kUnlatch = 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 OperatingModeEnum
enum class OperatingModeEnum : uint8_t {
  kNormal = 0x00,
  kVacation = 0x01,
  kPrivacy = 0x02,
  kNoRemoteLockUnlock = 0x03,
  kPassage = 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 OperationErrorEnum
enum class OperationErrorEnum : uint8_t {
  kUnspecified = 0x00,
  kInvalidCredential = 0x01,
  kDisabledUserDenied = 0x02,
  kRestricted = 0x03,
  kInsufficientBattery = 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 OperationSourceEnum
enum class OperationSourceEnum : uint8_t {
  kUnspecified = 0x00,
  kManual = 0x01,
  kProprietaryRemote = 0x02,
  kKeypad = 0x03,
  kAuto = 0x04,
  kButton = 0x05,
  kSchedule = 0x06,
  kRemote = 0x07,
  kRfid = 0x08,
  kBiometric = 0x09,
  kAliro = 0x0A,
  // 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 = 11,
};

// Enum for UserStatusEnum
enum class UserStatusEnum : uint8_t {
  kAvailable = 0x00,
  kOccupiedEnabled = 0x01,
  kOccupiedDisabled = 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 = 2,
};

// Enum for UserTypeEnum
enum class UserTypeEnum : uint8_t {
  kUnrestrictedUser = 0x00,
  kYearDayScheduleUser = 0x01,
  kWeekDayScheduleUser = 0x02,
  kProgrammingUser = 0x03,
  kNonAccessUser = 0x04,
  kForcedUser = 0x05,
  kDisposableUser = 0x06,
  kExpiringUser = 0x07,
  kScheduleRestrictedUser = 0x08,
  kRemoteOnlyUser = 0x09,
  // 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 = 10,
};

// Bitmap for DaysMaskMap
enum class DaysMaskMap : uint8_t {
  kSunday = 0x1,
  kMonday = 0x2,
  kTuesday = 0x4,
  kWednesday = 0x8,
  kThursday = 0x10,
  kFriday = 0x20,
  kSaturday = 0x40,
};

// Bitmap for DlCredentialRuleMask
enum class DlCredentialRuleMask : uint8_t {
  kSingle = 0x1,
  kDual = 0x2,
  kTri = 0x4,
};

// Bitmap for DlCredentialRulesSupport
enum class DlCredentialRulesSupport : uint8_t {
  kSingle = 0x1,
  kDual = 0x2,
  kTri = 0x4,
};

// Bitmap for DlDefaultConfigurationRegister
enum class DlDefaultConfigurationRegister : uint16_t {
  kEnableLocalProgrammingEnabled = 0x1,
  kKeypadInterfaceDefaultAccessEnabled = 0x2,
  kRemoteInterfaceDefaultAccessIsEnabled = 0x4,
  kSoundEnabled = 0x20,
  kAutoRelockTimeSet = 0x40,
  kLEDSettingsSet = 0x80,
};

// Bitmap for DlKeypadOperationEventMask
enum class DlKeypadOperationEventMask : uint16_t {
  kUnknown = 0x1,
  kLock = 0x2,
  kUnlock = 0x4,
  kLockInvalidPIN = 0x8,
  kLockInvalidSchedule = 0x10,
  kUnlockInvalidCode = 0x20,
  kUnlockInvalidSchedule = 0x40,
  kNonAccessUserOpEvent = 0x80,
};

// Bitmap for DlKeypadProgrammingEventMask
enum class DlKeypadProgrammingEventMask : uint16_t {
  kUnknown = 0x1,
  kProgrammingPINChanged = 0x2,
  kPINAdded = 0x4,
  kPINCleared = 0x8,
  kPINChanged = 0x10,
};

// Bitmap for DlLocalProgrammingFeatures
enum class DlLocalProgrammingFeatures : uint8_t {
  kAddUsersCredentialsSchedulesLocally = 0x1,
  kModifyUsersCredentialsSchedulesLocally = 0x2,
  kClearUsersCredentialsSchedulesLocally = 0x4,
  kAdjustLockSettingsLocally = 0x8,
};

// Bitmap for DlManualOperationEventMask
enum class DlManualOperationEventMask : uint16_t {
  kUnknown = 0x1,
  kThumbturnLock = 0x2,
  kThumbturnUnlock = 0x4,
  kOneTouchLock = 0x8,
  kKeyLock = 0x10,
  kKeyUnlock = 0x20,
  kAutoLock = 0x40,
  kScheduleLock = 0x80,
  kScheduleUnlock = 0x100,
  kManualLock = 0x200,
  kManualUnlock = 0x400,
};

// Bitmap for DlRFIDOperationEventMask
enum class DlRFIDOperationEventMask : uint16_t {
  kUnknown = 0x1,
  kLock = 0x2,
  kUnlock = 0x4,
  kLockInvalidRFID = 0x8,
  kLockInvalidSchedule = 0x10,
  kUnlockInvalidRFID = 0x20,
  kUnlockInvalidSchedule = 0x40,
};

// Bitmap for DlRFIDProgrammingEventMask
enum class DlRFIDProgrammingEventMask : uint16_t {
  kUnknown = 0x1,
  kRFIDCodeAdded = 0x20,
  kRFIDCodeCleared = 0x40,
};

// Bitmap for DlRemoteOperationEventMask
enum class DlRemoteOperationEventMask : uint16_t {
  kUnknown = 0x1,
  kLock = 0x2,
  kUnlock = 0x4,
  kLockInvalidCode = 0x8,
  kLockInvalidSchedule = 0x10,
  kUnlockInvalidCode = 0x20,
  kUnlockInvalidSchedule = 0x40,
};

// Bitmap for DlRemoteProgrammingEventMask
enum class DlRemoteProgrammingEventMask : uint16_t {
  kUnknown = 0x1,
  kProgrammingPINChanged = 0x2,
  kPINAdded = 0x4,
  kPINCleared = 0x8,
  kPINChanged = 0x10,
  kRFIDCodeAdded = 0x20,
  kRFIDCodeCleared = 0x40,
};

// Bitmap for DlSupportedOperatingModes
enum class DlSupportedOperatingModes : uint16_t {
  kNormal = 0x1,
  kVacation = 0x2,
  kPrivacy = 0x4,
  kNoRemoteLockUnlock = 0x8,
  kPassage = 0x10,
};

// Bitmap for DoorLockDayOfWeek
enum class DoorLockDayOfWeek : uint8_t {
  kSunday = 0x1,
  kMonday = 0x2,
  kTuesday = 0x4,
  kWednesday = 0x8,
  kThursday = 0x10,
  kFriday = 0x20,
  kSaturday = 0x40,
};

// Bitmap for Feature
enum class Feature : uint32_t {
  kPinCredential = 0x1,
  kRfidCredential = 0x2,
  kFingerCredentials = 0x4,
  kLogging = 0x8,
  kWeekDayAccessSchedules = 0x10,
  kDoorPositionSensor = 0x20,
  kFaceCredentials = 0x40,
  kCredentialsOverTheAirAccess = 0x80,
  kUser = 0x100,
  kNotification = 0x200,
  kYearDayAccessSchedules = 0x400,
  kHolidaySchedules = 0x800,
  kUnbolt = 0x1000,
  kAliroProvisioning = 0x2000,
  kAliroBLEUWB = 0x4000,
};
} // namespace DoorLock
} // namespace Clusters
} // namespace app
} // namespace chip
