/*
 *
 *    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

#pragma once

#include <app/util/basic-types.h>

namespace chip {
namespace app {
namespace Clusters {

namespace AccessControl {
namespace Events {

namespace AccessControlEntryChanged {
static constexpr EventId Id = 0x00000000;
} // namespace AccessControlEntryChanged

namespace AccessControlExtensionChanged {
static constexpr EventId Id = 0x00000001;
} // namespace AccessControlExtensionChanged

} // namespace Events
} // namespace AccessControl

namespace Actions {
namespace Events {

namespace StateChanged {
static constexpr EventId Id = 0x00000000;
} // namespace StateChanged

namespace ActionFailed {
static constexpr EventId Id = 0x00000001;
} // namespace ActionFailed

} // namespace Events
} // namespace Actions

namespace Basic {
namespace Events {

namespace StartUp {
static constexpr EventId Id = 0x00000000;
} // namespace StartUp

namespace ShutDown {
static constexpr EventId Id = 0x00000001;
} // namespace ShutDown

namespace Leave {
static constexpr EventId Id = 0x00000002;
} // namespace Leave

namespace ReachableChanged {
static constexpr EventId Id = 0x00000003;
} // namespace ReachableChanged

} // namespace Events
} // namespace Basic

namespace OtaSoftwareUpdateRequestor {
namespace Events {

namespace StateTransition {
static constexpr EventId Id = 0x00000000;
} // namespace StateTransition

namespace VersionApplied {
static constexpr EventId Id = 0x00000001;
} // namespace VersionApplied

namespace DownloadError {
static constexpr EventId Id = 0x00000002;
} // namespace DownloadError

} // namespace Events
} // namespace OtaSoftwareUpdateRequestor

namespace GeneralDiagnostics {
namespace Events {

namespace HardwareFaultChange {
static constexpr EventId Id = 0x00000000;
} // namespace HardwareFaultChange

namespace RadioFaultChange {
static constexpr EventId Id = 0x00000001;
} // namespace RadioFaultChange

namespace NetworkFaultChange {
static constexpr EventId Id = 0x00000002;
} // namespace NetworkFaultChange

namespace BootReason {
static constexpr EventId Id = 0x00000003;
} // namespace BootReason

} // namespace Events
} // namespace GeneralDiagnostics

namespace SoftwareDiagnostics {
namespace Events {

namespace SoftwareFault {
static constexpr EventId Id = 0x00000000;
} // namespace SoftwareFault

} // namespace Events
} // namespace SoftwareDiagnostics

namespace ThreadNetworkDiagnostics {
namespace Events {

namespace ConnectionStatus {
static constexpr EventId Id = 0x00000000;
} // namespace ConnectionStatus

namespace NetworkFaultChange {
static constexpr EventId Id = 0x00000001;
} // namespace NetworkFaultChange

} // namespace Events
} // namespace ThreadNetworkDiagnostics

namespace WiFiNetworkDiagnostics {
namespace Events {

namespace Disconnection {
static constexpr EventId Id = 0x00000000;
} // namespace Disconnection

namespace AssociationFailure {
static constexpr EventId Id = 0x00000001;
} // namespace AssociationFailure

namespace ConnectionStatus {
static constexpr EventId Id = 0x00000002;
} // namespace ConnectionStatus

} // namespace Events
} // namespace WiFiNetworkDiagnostics

namespace BridgedDeviceBasic {
namespace Events {

namespace StartUp {
static constexpr EventId Id = 0x00000000;
} // namespace StartUp

namespace ShutDown {
static constexpr EventId Id = 0x00000001;
} // namespace ShutDown

namespace Leave {
static constexpr EventId Id = 0x00000002;
} // namespace Leave

namespace ReachableChanged {
static constexpr EventId Id = 0x00000003;
} // namespace ReachableChanged

} // namespace Events
} // namespace BridgedDeviceBasic

namespace Switch {
namespace Events {

namespace SwitchLatched {
static constexpr EventId Id = 0x00000000;
} // namespace SwitchLatched

namespace InitialPress {
static constexpr EventId Id = 0x00000001;
} // namespace InitialPress

namespace LongPress {
static constexpr EventId Id = 0x00000002;
} // namespace LongPress

namespace ShortRelease {
static constexpr EventId Id = 0x00000003;
} // namespace ShortRelease

namespace LongRelease {
static constexpr EventId Id = 0x00000004;
} // namespace LongRelease

namespace MultiPressOngoing {
static constexpr EventId Id = 0x00000005;
} // namespace MultiPressOngoing

namespace MultiPressComplete {
static constexpr EventId Id = 0x00000006;
} // namespace MultiPressComplete

} // namespace Events
} // namespace Switch

namespace BooleanState {
namespace Events {

namespace StateChange {
static constexpr EventId Id = 0x00000000;
} // namespace StateChange

} // namespace Events
} // namespace BooleanState

namespace DoorLock {
namespace Events {

namespace DoorLockAlarm {
static constexpr EventId Id = 0x00000000;
} // namespace DoorLockAlarm

namespace DoorStateChange {
static constexpr EventId Id = 0x00000001;
} // namespace DoorStateChange

namespace LockOperation {
static constexpr EventId Id = 0x00000002;
} // namespace LockOperation

namespace LockOperationError {
static constexpr EventId Id = 0x00000003;
} // namespace LockOperationError

namespace LockUserChange {
static constexpr EventId Id = 0x00000004;
} // namespace LockUserChange

} // namespace Events
} // namespace DoorLock

namespace PumpConfigurationAndControl {
namespace Events {

namespace SupplyVoltageLow {
static constexpr EventId Id = 0x00000000;
} // namespace SupplyVoltageLow

namespace SupplyVoltageHigh {
static constexpr EventId Id = 0x00000001;
} // namespace SupplyVoltageHigh

namespace PowerMissingPhase {
static constexpr EventId Id = 0x00000002;
} // namespace PowerMissingPhase

namespace SystemPressureLow {
static constexpr EventId Id = 0x00000003;
} // namespace SystemPressureLow

namespace SystemPressureHigh {
static constexpr EventId Id = 0x00000004;
} // namespace SystemPressureHigh

namespace DryRunning {
static constexpr EventId Id = 0x00000005;
} // namespace DryRunning

namespace MotorTemperatureHigh {
static constexpr EventId Id = 0x00000006;
} // namespace MotorTemperatureHigh

namespace PumpMotorFatalFailure {
static constexpr EventId Id = 0x00000007;
} // namespace PumpMotorFatalFailure

namespace ElectronicTemperatureHigh {
static constexpr EventId Id = 0x00000008;
} // namespace ElectronicTemperatureHigh

namespace PumpBlocked {
static constexpr EventId Id = 0x00000009;
} // namespace PumpBlocked

namespace SensorFailure {
static constexpr EventId Id = 0x0000000A;
} // namespace SensorFailure

namespace ElectronicNonFatalFailure {
static constexpr EventId Id = 0x0000000B;
} // namespace ElectronicNonFatalFailure

namespace ElectronicFatalFailure {
static constexpr EventId Id = 0x0000000C;
} // namespace ElectronicFatalFailure

namespace GeneralFault {
static constexpr EventId Id = 0x0000000D;
} // namespace GeneralFault

namespace Leakage {
static constexpr EventId Id = 0x0000000E;
} // namespace Leakage

namespace AirDetection {
static constexpr EventId Id = 0x0000000F;
} // namespace AirDetection

namespace TurbineOperation {
static constexpr EventId Id = 0x00000010;
} // namespace TurbineOperation

} // namespace Events
} // namespace PumpConfigurationAndControl

namespace UnitTesting {
namespace Events {

namespace TestEvent {
static constexpr EventId Id = 0x00000001;
} // namespace TestEvent

namespace TestFabricScopedEvent {
static constexpr EventId Id = 0x00000002;
} // namespace TestFabricScopedEvent

} // namespace Events
} // namespace UnitTesting

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