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

#pragma once

#include <app/ConcreteAttributePath.h>
#include <app/data-model/DecodableList.h>
#include <app/data-model/List.h>
#include <app/data-model/Nullable.h>
#include <app/util/basic-types.h>
#include <lib/core/TLV.h>
#include <lib/support/BitMask.h>

#include <clusters/shared/Attributes.h>
#include <clusters/shared/Enums.h>
#include <clusters/shared/Structs.h>

#include <clusters/CameraAvStreamManagement/AttributeIds.h>
#include <clusters/CameraAvStreamManagement/ClusterId.h>
#include <clusters/CameraAvStreamManagement/Enums.h>
#include <clusters/CameraAvStreamManagement/Structs.h>

namespace chip {
namespace app {
namespace Clusters {
namespace CameraAvStreamManagement {
namespace Attributes {

namespace MaxConcurrentEncoders {
struct TypeInfo
{
    using Type             = uint8_t;
    using DecodableType    = uint8_t;
    using DecodableArgType = uint8_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MaxConcurrentEncoders::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MaxConcurrentEncoders
namespace MaxEncodedPixelRate {
struct TypeInfo
{
    using Type             = uint32_t;
    using DecodableType    = uint32_t;
    using DecodableArgType = uint32_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MaxEncodedPixelRate::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MaxEncodedPixelRate
namespace VideoSensorParams {
struct TypeInfo
{
    using Type             = chip::app::Clusters::CameraAvStreamManagement::Structs::VideoSensorParamsStruct::Type;
    using DecodableType    = chip::app::Clusters::CameraAvStreamManagement::Structs::VideoSensorParamsStruct::DecodableType;
    using DecodableArgType = const chip::app::Clusters::CameraAvStreamManagement::Structs::VideoSensorParamsStruct::DecodableType &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::VideoSensorParams::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace VideoSensorParams
namespace NightVisionUsesInfrared {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::NightVisionUsesInfrared::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace NightVisionUsesInfrared
namespace MinViewportResolution {
struct TypeInfo
{
    using Type             = chip::app::Clusters::CameraAvStreamManagement::Structs::VideoResolutionStruct::Type;
    using DecodableType    = chip::app::Clusters::CameraAvStreamManagement::Structs::VideoResolutionStruct::DecodableType;
    using DecodableArgType = const chip::app::Clusters::CameraAvStreamManagement::Structs::VideoResolutionStruct::DecodableType &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MinViewportResolution::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MinViewportResolution
namespace RateDistortionTradeOffPoints {
struct TypeInfo
{
    using Type = chip::app::DataModel::List<
        const chip::app::Clusters::CameraAvStreamManagement::Structs::RateDistortionTradeOffPointsStruct::Type>;
    using DecodableType = chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::RateDistortionTradeOffPointsStruct::DecodableType>;
    using DecodableArgType = const chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::RateDistortionTradeOffPointsStruct::DecodableType> &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::RateDistortionTradeOffPoints::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace RateDistortionTradeOffPoints
namespace MaxContentBufferSize {
struct TypeInfo
{
    using Type             = uint32_t;
    using DecodableType    = uint32_t;
    using DecodableArgType = uint32_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MaxContentBufferSize::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MaxContentBufferSize
namespace MicrophoneCapabilities {
struct TypeInfo
{
    using Type             = chip::app::Clusters::CameraAvStreamManagement::Structs::AudioCapabilitiesStruct::Type;
    using DecodableType    = chip::app::Clusters::CameraAvStreamManagement::Structs::AudioCapabilitiesStruct::DecodableType;
    using DecodableArgType = const chip::app::Clusters::CameraAvStreamManagement::Structs::AudioCapabilitiesStruct::DecodableType &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MicrophoneCapabilities::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MicrophoneCapabilities
namespace SpeakerCapabilities {
struct TypeInfo
{
    using Type             = chip::app::Clusters::CameraAvStreamManagement::Structs::AudioCapabilitiesStruct::Type;
    using DecodableType    = chip::app::Clusters::CameraAvStreamManagement::Structs::AudioCapabilitiesStruct::DecodableType;
    using DecodableArgType = const chip::app::Clusters::CameraAvStreamManagement::Structs::AudioCapabilitiesStruct::DecodableType &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SpeakerCapabilities::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SpeakerCapabilities
namespace TwoWayTalkSupport {
struct TypeInfo
{
    using Type             = chip::app::Clusters::CameraAvStreamManagement::TwoWayTalkSupportTypeEnum;
    using DecodableType    = chip::app::Clusters::CameraAvStreamManagement::TwoWayTalkSupportTypeEnum;
    using DecodableArgType = chip::app::Clusters::CameraAvStreamManagement::TwoWayTalkSupportTypeEnum;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::TwoWayTalkSupport::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace TwoWayTalkSupport
namespace SnapshotCapabilities {
struct TypeInfo
{
    using Type =
        chip::app::DataModel::List<const chip::app::Clusters::CameraAvStreamManagement::Structs::SnapshotCapabilitiesStruct::Type>;
    using DecodableType = chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::SnapshotCapabilitiesStruct::DecodableType>;
    using DecodableArgType = const chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::SnapshotCapabilitiesStruct::DecodableType> &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SnapshotCapabilities::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SnapshotCapabilities
namespace MaxNetworkBandwidth {
struct TypeInfo
{
    using Type             = uint32_t;
    using DecodableType    = uint32_t;
    using DecodableArgType = uint32_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MaxNetworkBandwidth::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MaxNetworkBandwidth
namespace CurrentFrameRate {
struct TypeInfo
{
    using Type             = uint16_t;
    using DecodableType    = uint16_t;
    using DecodableArgType = uint16_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::CurrentFrameRate::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace CurrentFrameRate
namespace HDRModeEnabled {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::HDRModeEnabled::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace HDRModeEnabled
namespace SupportedStreamUsages {
struct TypeInfo
{
    using Type             = chip::app::DataModel::List<const chip::app::Clusters::Globals::StreamUsageEnum>;
    using DecodableType    = chip::app::DataModel::DecodableList<chip::app::Clusters::Globals::StreamUsageEnum>;
    using DecodableArgType = const chip::app::DataModel::DecodableList<chip::app::Clusters::Globals::StreamUsageEnum> &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SupportedStreamUsages::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SupportedStreamUsages
namespace AllocatedVideoStreams {
struct TypeInfo
{
    using Type = chip::app::DataModel::List<const chip::app::Clusters::CameraAvStreamManagement::Structs::VideoStreamStruct::Type>;
    using DecodableType = chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::VideoStreamStruct::DecodableType>;
    using DecodableArgType = const chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::VideoStreamStruct::DecodableType> &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::AllocatedVideoStreams::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace AllocatedVideoStreams
namespace AllocatedAudioStreams {
struct TypeInfo
{
    using Type = chip::app::DataModel::List<const chip::app::Clusters::CameraAvStreamManagement::Structs::AudioStreamStruct::Type>;
    using DecodableType = chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::AudioStreamStruct::DecodableType>;
    using DecodableArgType = const chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::AudioStreamStruct::DecodableType> &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::AllocatedAudioStreams::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace AllocatedAudioStreams
namespace AllocatedSnapshotStreams {
struct TypeInfo
{
    using Type =
        chip::app::DataModel::List<const chip::app::Clusters::CameraAvStreamManagement::Structs::SnapshotStreamStruct::Type>;
    using DecodableType = chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::SnapshotStreamStruct::DecodableType>;
    using DecodableArgType = const chip::app::DataModel::DecodableList<
        chip::app::Clusters::CameraAvStreamManagement::Structs::SnapshotStreamStruct::DecodableType> &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::AllocatedSnapshotStreams::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace AllocatedSnapshotStreams
namespace StreamUsagePriorities {
struct TypeInfo
{
    using Type             = chip::app::DataModel::List<const chip::app::Clusters::Globals::StreamUsageEnum>;
    using DecodableType    = chip::app::DataModel::DecodableList<chip::app::Clusters::Globals::StreamUsageEnum>;
    using DecodableArgType = const chip::app::DataModel::DecodableList<chip::app::Clusters::Globals::StreamUsageEnum> &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::StreamUsagePriorities::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace StreamUsagePriorities
namespace SoftRecordingPrivacyModeEnabled {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SoftRecordingPrivacyModeEnabled::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SoftRecordingPrivacyModeEnabled
namespace SoftLivestreamPrivacyModeEnabled {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SoftLivestreamPrivacyModeEnabled::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SoftLivestreamPrivacyModeEnabled
namespace HardPrivacyModeOn {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::HardPrivacyModeOn::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace HardPrivacyModeOn
namespace NightVision {
struct TypeInfo
{
    using Type             = chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum;
    using DecodableType    = chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum;
    using DecodableArgType = chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::NightVision::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace NightVision
namespace NightVisionIllum {
struct TypeInfo
{
    using Type             = chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum;
    using DecodableType    = chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum;
    using DecodableArgType = chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::NightVisionIllum::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace NightVisionIllum
namespace Viewport {
struct TypeInfo
{
    using Type             = chip::app::Clusters::Globals::Structs::ViewportStruct::Type;
    using DecodableType    = chip::app::Clusters::Globals::Structs::ViewportStruct::DecodableType;
    using DecodableArgType = const chip::app::Clusters::Globals::Structs::ViewportStruct::DecodableType &;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::Viewport::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace Viewport
namespace SpeakerMuted {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SpeakerMuted::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SpeakerMuted
namespace SpeakerVolumeLevel {
struct TypeInfo
{
    using Type             = uint8_t;
    using DecodableType    = uint8_t;
    using DecodableArgType = uint8_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SpeakerVolumeLevel::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SpeakerVolumeLevel
namespace SpeakerMaxLevel {
struct TypeInfo
{
    using Type             = uint8_t;
    using DecodableType    = uint8_t;
    using DecodableArgType = uint8_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SpeakerMaxLevel::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SpeakerMaxLevel
namespace SpeakerMinLevel {
struct TypeInfo
{
    using Type             = uint8_t;
    using DecodableType    = uint8_t;
    using DecodableArgType = uint8_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::SpeakerMinLevel::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace SpeakerMinLevel
namespace MicrophoneMuted {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MicrophoneMuted::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MicrophoneMuted
namespace MicrophoneVolumeLevel {
struct TypeInfo
{
    using Type             = uint8_t;
    using DecodableType    = uint8_t;
    using DecodableArgType = uint8_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MicrophoneVolumeLevel::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MicrophoneVolumeLevel
namespace MicrophoneMaxLevel {
struct TypeInfo
{
    using Type             = uint8_t;
    using DecodableType    = uint8_t;
    using DecodableArgType = uint8_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MicrophoneMaxLevel::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MicrophoneMaxLevel
namespace MicrophoneMinLevel {
struct TypeInfo
{
    using Type             = uint8_t;
    using DecodableType    = uint8_t;
    using DecodableArgType = uint8_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MicrophoneMinLevel::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MicrophoneMinLevel
namespace MicrophoneAGCEnabled {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::MicrophoneAGCEnabled::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace MicrophoneAGCEnabled
namespace ImageRotation {
struct TypeInfo
{
    using Type             = uint16_t;
    using DecodableType    = uint16_t;
    using DecodableArgType = uint16_t;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::ImageRotation::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace ImageRotation
namespace ImageFlipHorizontal {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::ImageFlipHorizontal::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace ImageFlipHorizontal
namespace ImageFlipVertical {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::ImageFlipVertical::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace ImageFlipVertical
namespace LocalVideoRecordingEnabled {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::LocalVideoRecordingEnabled::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace LocalVideoRecordingEnabled
namespace LocalSnapshotRecordingEnabled {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::LocalSnapshotRecordingEnabled::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace LocalSnapshotRecordingEnabled
namespace StatusLightEnabled {
struct TypeInfo
{
    using Type             = bool;
    using DecodableType    = bool;
    using DecodableArgType = bool;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::StatusLightEnabled::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace StatusLightEnabled
namespace StatusLightBrightness {
struct TypeInfo
{
    using Type             = chip::app::Clusters::Globals::ThreeLevelAutoEnum;
    using DecodableType    = chip::app::Clusters::Globals::ThreeLevelAutoEnum;
    using DecodableArgType = chip::app::Clusters::Globals::ThreeLevelAutoEnum;

    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
    static constexpr AttributeId GetAttributeId() { return Attributes::StatusLightBrightness::Id; }
    static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace StatusLightBrightness
namespace GeneratedCommandList {
struct TypeInfo : public Clusters::Globals::Attributes::GeneratedCommandList::TypeInfo
{
    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
};
} // namespace GeneratedCommandList
namespace AcceptedCommandList {
struct TypeInfo : public Clusters::Globals::Attributes::AcceptedCommandList::TypeInfo
{
    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
};
} // namespace AcceptedCommandList
namespace AttributeList {
struct TypeInfo : public Clusters::Globals::Attributes::AttributeList::TypeInfo
{
    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
};
} // namespace AttributeList
namespace FeatureMap {
struct TypeInfo : public Clusters::Globals::Attributes::FeatureMap::TypeInfo
{
    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
};
} // namespace FeatureMap
namespace ClusterRevision {
struct TypeInfo : public Clusters::Globals::Attributes::ClusterRevision::TypeInfo
{
    static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }
};
} // namespace ClusterRevision

struct TypeInfo
{
    struct DecodableType
    {
        static constexpr ClusterId GetClusterId() { return Clusters::CameraAvStreamManagement::Id; }

        CHIP_ERROR Decode(TLV::TLVReader & reader, const ConcreteAttributePath & path);

        Attributes::MaxConcurrentEncoders::TypeInfo::DecodableType maxConcurrentEncoders = static_cast<uint8_t>(0);
        Attributes::MaxEncodedPixelRate::TypeInfo::DecodableType maxEncodedPixelRate     = static_cast<uint32_t>(0);
        Attributes::VideoSensorParams::TypeInfo::DecodableType videoSensorParams;
        Attributes::NightVisionUsesInfrared::TypeInfo::DecodableType nightVisionUsesInfrared = static_cast<bool>(0);
        Attributes::MinViewportResolution::TypeInfo::DecodableType minViewportResolution;
        Attributes::RateDistortionTradeOffPoints::TypeInfo::DecodableType rateDistortionTradeOffPoints;
        Attributes::MaxContentBufferSize::TypeInfo::DecodableType maxContentBufferSize = static_cast<uint32_t>(0);
        Attributes::MicrophoneCapabilities::TypeInfo::DecodableType microphoneCapabilities;
        Attributes::SpeakerCapabilities::TypeInfo::DecodableType speakerCapabilities;
        Attributes::TwoWayTalkSupport::TypeInfo::DecodableType twoWayTalkSupport =
            static_cast<chip::app::Clusters::CameraAvStreamManagement::TwoWayTalkSupportTypeEnum>(0);
        Attributes::SnapshotCapabilities::TypeInfo::DecodableType snapshotCapabilities;
        Attributes::MaxNetworkBandwidth::TypeInfo::DecodableType maxNetworkBandwidth = static_cast<uint32_t>(0);
        Attributes::CurrentFrameRate::TypeInfo::DecodableType currentFrameRate       = static_cast<uint16_t>(0);
        Attributes::HDRModeEnabled::TypeInfo::DecodableType HDRModeEnabled           = static_cast<bool>(0);
        Attributes::SupportedStreamUsages::TypeInfo::DecodableType supportedStreamUsages;
        Attributes::AllocatedVideoStreams::TypeInfo::DecodableType allocatedVideoStreams;
        Attributes::AllocatedAudioStreams::TypeInfo::DecodableType allocatedAudioStreams;
        Attributes::AllocatedSnapshotStreams::TypeInfo::DecodableType allocatedSnapshotStreams;
        Attributes::StreamUsagePriorities::TypeInfo::DecodableType streamUsagePriorities;
        Attributes::SoftRecordingPrivacyModeEnabled::TypeInfo::DecodableType softRecordingPrivacyModeEnabled = static_cast<bool>(0);
        Attributes::SoftLivestreamPrivacyModeEnabled::TypeInfo::DecodableType softLivestreamPrivacyModeEnabled =
            static_cast<bool>(0);
        Attributes::HardPrivacyModeOn::TypeInfo::DecodableType hardPrivacyModeOn = static_cast<bool>(0);
        Attributes::NightVision::TypeInfo::DecodableType nightVision =
            static_cast<chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum>(0);
        Attributes::NightVisionIllum::TypeInfo::DecodableType nightVisionIllum =
            static_cast<chip::app::Clusters::CameraAvStreamManagement::TriStateAutoEnum>(0);
        Attributes::Viewport::TypeInfo::DecodableType viewport;
        Attributes::SpeakerMuted::TypeInfo::DecodableType speakerMuted                                   = static_cast<bool>(0);
        Attributes::SpeakerVolumeLevel::TypeInfo::DecodableType speakerVolumeLevel                       = static_cast<uint8_t>(0);
        Attributes::SpeakerMaxLevel::TypeInfo::DecodableType speakerMaxLevel                             = static_cast<uint8_t>(0);
        Attributes::SpeakerMinLevel::TypeInfo::DecodableType speakerMinLevel                             = static_cast<uint8_t>(0);
        Attributes::MicrophoneMuted::TypeInfo::DecodableType microphoneMuted                             = static_cast<bool>(0);
        Attributes::MicrophoneVolumeLevel::TypeInfo::DecodableType microphoneVolumeLevel                 = static_cast<uint8_t>(0);
        Attributes::MicrophoneMaxLevel::TypeInfo::DecodableType microphoneMaxLevel                       = static_cast<uint8_t>(0);
        Attributes::MicrophoneMinLevel::TypeInfo::DecodableType microphoneMinLevel                       = static_cast<uint8_t>(0);
        Attributes::MicrophoneAGCEnabled::TypeInfo::DecodableType microphoneAGCEnabled                   = static_cast<bool>(0);
        Attributes::ImageRotation::TypeInfo::DecodableType imageRotation                                 = static_cast<uint16_t>(0);
        Attributes::ImageFlipHorizontal::TypeInfo::DecodableType imageFlipHorizontal                     = static_cast<bool>(0);
        Attributes::ImageFlipVertical::TypeInfo::DecodableType imageFlipVertical                         = static_cast<bool>(0);
        Attributes::LocalVideoRecordingEnabled::TypeInfo::DecodableType localVideoRecordingEnabled       = static_cast<bool>(0);
        Attributes::LocalSnapshotRecordingEnabled::TypeInfo::DecodableType localSnapshotRecordingEnabled = static_cast<bool>(0);
        Attributes::StatusLightEnabled::TypeInfo::DecodableType statusLightEnabled                       = static_cast<bool>(0);
        Attributes::StatusLightBrightness::TypeInfo::DecodableType statusLightBrightness =
            static_cast<chip::app::Clusters::Globals::ThreeLevelAutoEnum>(0);
        Attributes::GeneratedCommandList::TypeInfo::DecodableType generatedCommandList;
        Attributes::AcceptedCommandList::TypeInfo::DecodableType acceptedCommandList;
        Attributes::AttributeList::TypeInfo::DecodableType attributeList;
        Attributes::FeatureMap::TypeInfo::DecodableType featureMap           = static_cast<uint32_t>(0);
        Attributes::ClusterRevision::TypeInfo::DecodableType clusterRevision = static_cast<uint16_t>(0);
    };
};
} // namespace Attributes
} // namespace CameraAvStreamManagement
} // namespace Clusters
} // namespace app
} // namespace chip
