// DO NOT EDIT MANUALLY - Generated file
//
// Cluster metadata information for cluster EnergyEvse (cluster code: 153/0x99)
// based on src/controller/data_model/controller-clusters.matter
#pragma once

#include <app/data-model-provider/MetadataTypes.h>
#include <array>
#include <lib/core/DataModelTypes.h>

#include <cstdint>

#include <clusters/EnergyEvse/Ids.h>

namespace chip {
namespace app {
namespace Clusters {
namespace EnergyEvse {

inline constexpr uint32_t kRevision = 3;

namespace Attributes {

namespace State {
inline constexpr DataModel::AttributeEntry kMetadataEntry(State::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace State
namespace SupplyState {
inline constexpr DataModel::AttributeEntry kMetadataEntry(SupplyState::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace SupplyState
namespace FaultState {
inline constexpr DataModel::AttributeEntry kMetadataEntry(FaultState::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace FaultState
namespace ChargingEnabledUntil {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ChargingEnabledUntil::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace ChargingEnabledUntil
namespace DischargingEnabledUntil {
inline constexpr DataModel::AttributeEntry kMetadataEntry(DischargingEnabledUntil::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace DischargingEnabledUntil
namespace CircuitCapacity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(CircuitCapacity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace CircuitCapacity
namespace MinimumChargeCurrent {
inline constexpr DataModel::AttributeEntry kMetadataEntry(MinimumChargeCurrent::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace MinimumChargeCurrent
namespace MaximumChargeCurrent {
inline constexpr DataModel::AttributeEntry kMetadataEntry(MaximumChargeCurrent::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace MaximumChargeCurrent
namespace MaximumDischargeCurrent {
inline constexpr DataModel::AttributeEntry kMetadataEntry(MaximumDischargeCurrent::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace MaximumDischargeCurrent
namespace UserMaximumChargeCurrent {
inline constexpr DataModel::AttributeEntry kMetadataEntry(UserMaximumChargeCurrent::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace UserMaximumChargeCurrent
namespace RandomizationDelayWindow {
inline constexpr DataModel::AttributeEntry kMetadataEntry(RandomizationDelayWindow::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          Access::Privilege::kManage);
} // namespace RandomizationDelayWindow
namespace NextChargeStartTime {
inline constexpr DataModel::AttributeEntry kMetadataEntry(NextChargeStartTime::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace NextChargeStartTime
namespace NextChargeTargetTime {
inline constexpr DataModel::AttributeEntry kMetadataEntry(NextChargeTargetTime::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace NextChargeTargetTime
namespace NextChargeRequiredEnergy {
inline constexpr DataModel::AttributeEntry kMetadataEntry(NextChargeRequiredEnergy::Id,
                                                          BitFlags<DataModel::AttributeQualityFlags>(), Access::Privilege::kView,
                                                          std::nullopt);
} // namespace NextChargeRequiredEnergy
namespace NextChargeTargetSoC {
inline constexpr DataModel::AttributeEntry kMetadataEntry(NextChargeTargetSoC::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace NextChargeTargetSoC
namespace ApproximateEVEfficiency {
inline constexpr DataModel::AttributeEntry kMetadataEntry(ApproximateEVEfficiency::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, Access::Privilege::kManage);
} // namespace ApproximateEVEfficiency
namespace StateOfCharge {
inline constexpr DataModel::AttributeEntry kMetadataEntry(StateOfCharge::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace StateOfCharge
namespace BatteryCapacity {
inline constexpr DataModel::AttributeEntry kMetadataEntry(BatteryCapacity::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace BatteryCapacity
namespace VehicleID {
inline constexpr DataModel::AttributeEntry kMetadataEntry(VehicleID::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace VehicleID
namespace SessionID {
inline constexpr DataModel::AttributeEntry kMetadataEntry(SessionID::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace SessionID
namespace SessionDuration {
inline constexpr DataModel::AttributeEntry kMetadataEntry(SessionDuration::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace SessionDuration
namespace SessionEnergyCharged {
inline constexpr DataModel::AttributeEntry kMetadataEntry(SessionEnergyCharged::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace SessionEnergyCharged
namespace SessionEnergyDischarged {
inline constexpr DataModel::AttributeEntry kMetadataEntry(SessionEnergyDischarged::Id, BitFlags<DataModel::AttributeQualityFlags>(),
                                                          Access::Privilege::kView, std::nullopt);
} // namespace SessionEnergyDischarged
constexpr std::array<DataModel::AttributeEntry, 10> kMandatoryMetadata = {
    State::kMetadataEntry,
    SupplyState::kMetadataEntry,
    FaultState::kMetadataEntry,
    ChargingEnabledUntil::kMetadataEntry,
    CircuitCapacity::kMetadataEntry,
    MinimumChargeCurrent::kMetadataEntry,
    MaximumChargeCurrent::kMetadataEntry,
    SessionID::kMetadataEntry,
    SessionDuration::kMetadataEntry,
    SessionEnergyCharged::kMetadataEntry,

};

} // namespace Attributes

namespace Commands {

namespace Disable {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(Disable::Id, BitFlags<DataModel::CommandQualityFlags>(DataModel::CommandQualityFlags::kTimed),
                   Access::Privilege::kOperate);
} // namespace Disable
namespace EnableCharging {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(EnableCharging::Id, BitFlags<DataModel::CommandQualityFlags>(DataModel::CommandQualityFlags::kTimed),
                   Access::Privilege::kOperate);
} // namespace EnableCharging
namespace EnableDischarging {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(EnableDischarging::Id, BitFlags<DataModel::CommandQualityFlags>(DataModel::CommandQualityFlags::kTimed),
                   Access::Privilege::kOperate);
} // namespace EnableDischarging
namespace StartDiagnostics {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(StartDiagnostics::Id, BitFlags<DataModel::CommandQualityFlags>(DataModel::CommandQualityFlags::kTimed),
                   Access::Privilege::kOperate);
} // namespace StartDiagnostics
namespace SetTargets {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(SetTargets::Id, BitFlags<DataModel::CommandQualityFlags>(DataModel::CommandQualityFlags::kTimed),
                   Access::Privilege::kOperate);
} // namespace SetTargets
namespace GetTargets {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(GetTargets::Id, BitFlags<DataModel::CommandQualityFlags>(DataModel::CommandQualityFlags::kTimed),
                   Access::Privilege::kOperate);
} // namespace GetTargets
namespace ClearTargets {
inline constexpr DataModel::AcceptedCommandEntry
    kMetadataEntry(ClearTargets::Id, BitFlags<DataModel::CommandQualityFlags>(DataModel::CommandQualityFlags::kTimed),
                   Access::Privilege::kOperate);
} // namespace ClearTargets

} // namespace Commands

namespace Events {
namespace EVConnected {
inline constexpr DataModel::EventEntry kMetadataEntry{ Access::Privilege::kView };
} // namespace EVConnected
namespace EVNotDetected {
inline constexpr DataModel::EventEntry kMetadataEntry{ Access::Privilege::kView };
} // namespace EVNotDetected
namespace EnergyTransferStarted {
inline constexpr DataModel::EventEntry kMetadataEntry{ Access::Privilege::kView };
} // namespace EnergyTransferStarted
namespace EnergyTransferStopped {
inline constexpr DataModel::EventEntry kMetadataEntry{ Access::Privilege::kView };
} // namespace EnergyTransferStopped
namespace Fault {
inline constexpr DataModel::EventEntry kMetadataEntry{ Access::Privilege::kView };
} // namespace Fault
namespace RFID {
inline constexpr DataModel::EventEntry kMetadataEntry{ Access::Privilege::kView };
} // namespace RFID

} // namespace Events
} // namespace EnergyEvse
} // namespace Clusters
} // namespace app
} // namespace chip
