/*
 *
 *    Copyright (c) 2021 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

// Prevent multiple inclusion
#pragma once

#include <app-common/zap-generated/af-structs.h>
#include <app-common/zap-generated/cluster-objects.h>
#include <app/util/af-types.h>
#include <app/util/basic-types.h>

#include <app/Command.h>
#include <app/CommandHandler.h>
#include <app/CommandSender.h>
#include <app/ConcreteAttributePath.h>
#include <app/ConcreteCommandPath.h>
#include <lib/support/Span.h>
#include <protocols/interaction_model/Constants.h>

/** @brief Cluster Init
 *
 * This function is called when a specific cluster is initialized. It gives the
 * application an opportunity to take care of cluster initialization procedures.
 * It is called exactly once for each endpoint where cluster is present.
 *
 * @param endpoint   Ver.: always
 * @param clusterId   Ver.: always
 */
void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clusterId);

// Cluster Init Functions

/** @brief Power Configuration Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerConfigurationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Device Temperature Configuration Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDeviceTemperatureConfigurationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Identify Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIdentifyClusterInitCallback(chip::EndpointId endpoint);

/** @brief Groups Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGroupsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Scenes Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfScenesClusterInitCallback(chip::EndpointId endpoint);

/** @brief On/Off Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOnOffClusterInitCallback(chip::EndpointId endpoint);

/** @brief On/off Switch Configuration Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOnOffSwitchConfigurationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Level Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLevelControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Alarms Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAlarmsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Time Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTimeClusterInitCallback(chip::EndpointId endpoint);

/** @brief Binary Input (Basic) Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBinaryInputBasicClusterInitCallback(chip::EndpointId endpoint);

/** @brief Power Profile Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerProfileClusterInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Descriptor Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDescriptorClusterInitCallback(chip::EndpointId endpoint);

/** @brief Poll Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPollControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Basic Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBasicClusterInitCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Provider Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOtaSoftwareUpdateProviderClusterInitCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Requestor Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOtaSoftwareUpdateRequestorClusterInitCallback(chip::EndpointId endpoint);

/** @brief Power Source Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerSourceClusterInitCallback(chip::EndpointId endpoint);

/** @brief General Commissioning Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGeneralCommissioningClusterInitCallback(chip::EndpointId endpoint);

/** @brief Network Commissioning Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNetworkCommissioningClusterInitCallback(chip::EndpointId endpoint);

/** @brief Diagnostic Logs Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDiagnosticLogsClusterInitCallback(chip::EndpointId endpoint);

/** @brief General Diagnostics Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGeneralDiagnosticsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Software Diagnostics Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSoftwareDiagnosticsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Thread Network Diagnostics Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThreadNetworkDiagnosticsClusterInitCallback(chip::EndpointId endpoint);

/** @brief WiFi Network Diagnostics Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWiFiNetworkDiagnosticsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Ethernet Network Diagnostics Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthernetNetworkDiagnosticsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Bridged Device Basic Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBridgedDeviceBasicClusterInitCallback(chip::EndpointId endpoint);

/** @brief Switch Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSwitchClusterInitCallback(chip::EndpointId endpoint);

/** @brief AdministratorCommissioning Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAdministratorCommissioningClusterInitCallback(chip::EndpointId endpoint);

/** @brief Operational Credentials Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOperationalCredentialsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Fixed Label Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFixedLabelClusterInitCallback(chip::EndpointId endpoint);

/** @brief Shade Configuration Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfShadeConfigurationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Door Lock Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDoorLockClusterInitCallback(chip::EndpointId endpoint);

/** @brief Window Covering Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWindowCoveringClusterInitCallback(chip::EndpointId endpoint);

/** @brief Barrier Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBarrierControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Pump Configuration and Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPumpConfigurationAndControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Thermostat Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThermostatClusterInitCallback(chip::EndpointId endpoint);

/** @brief Fan Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFanControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Dehumidification Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDehumidificationControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Thermostat User Interface Configuration Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThermostatUserInterfaceConfigurationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Color Control Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfColorControlClusterInitCallback(chip::EndpointId endpoint);

/** @brief Ballast Configuration Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBallastConfigurationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Illuminance Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIlluminanceMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Illuminance Level Sensing Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIlluminanceLevelSensingClusterInitCallback(chip::EndpointId endpoint);

/** @brief Temperature Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTemperatureMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Pressure Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPressureMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Flow Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFlowMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Relative Humidity Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfRelativeHumidityMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Occupancy Sensing Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOccupancySensingClusterInitCallback(chip::EndpointId endpoint);

/** @brief Carbon Monoxide Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCarbonMonoxideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Carbon Dioxide Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCarbonDioxideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Ethylene Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthyleneConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Ethylene Oxide Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthyleneOxideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHydrogenConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHydrogenSulphideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Nitric Oxide Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNitricOxideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNitrogenDioxideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Oxygen Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOxygenConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Ozone Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOzoneConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSulfurDioxideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDissolvedOxygenConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Bromate Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromateConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Chloramines Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChloraminesConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Chlorine Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChlorineConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFecalColiformAndEColiConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Fluoride Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFluorideConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Haloacetic Acids Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHaloaceticAcidsConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTotalTrihalomethanesConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTotalColiformBacteriaConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Turbidity Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTurbidityConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Copper Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCopperConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Lead Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLeadConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Manganese Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfManganeseConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Sulfate Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSulfateConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Bromodichloromethane Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromodichloromethaneConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Bromoform Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromoformConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChlorodibromomethaneConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Chloroform Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChloroformConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Sodium Concentration Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSodiumConcentrationMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief IAS Zone Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasZoneClusterInitCallback(chip::EndpointId endpoint);

/** @brief IAS ACE Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasAceClusterInitCallback(chip::EndpointId endpoint);

/** @brief IAS WD Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasWdClusterInitCallback(chip::EndpointId endpoint);

/** @brief Wake on LAN Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWakeOnLanClusterInitCallback(chip::EndpointId endpoint);

/** @brief TV Channel Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTvChannelClusterInitCallback(chip::EndpointId endpoint);

/** @brief Target Navigator Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTargetNavigatorClusterInitCallback(chip::EndpointId endpoint);

/** @brief Media Playback Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMediaPlaybackClusterInitCallback(chip::EndpointId endpoint);

/** @brief Media Input Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMediaInputClusterInitCallback(chip::EndpointId endpoint);

/** @brief Low Power Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLowPowerClusterInitCallback(chip::EndpointId endpoint);

/** @brief Keypad Input Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfKeypadInputClusterInitCallback(chip::EndpointId endpoint);

/** @brief Content Launcher Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfContentLauncherClusterInitCallback(chip::EndpointId endpoint);

/** @brief Audio Output Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAudioOutputClusterInitCallback(chip::EndpointId endpoint);

/** @brief Application Launcher Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplicationLauncherClusterInitCallback(chip::EndpointId endpoint);

/** @brief Application Basic Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplicationBasicClusterInitCallback(chip::EndpointId endpoint);

/** @brief Account Login Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAccountLoginClusterInitCallback(chip::EndpointId endpoint);

/** @brief Test Cluster Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTestClusterClusterInitCallback(chip::EndpointId endpoint);

/** @brief Messaging Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMessagingClusterInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Identification Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceIdentificationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Meter Identification Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMeterIdentificationClusterInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Events and Alert Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceEventsAndAlertClusterInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Statistics Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceStatisticsClusterInitCallback(chip::EndpointId endpoint);

/** @brief Electrical Measurement Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfElectricalMeasurementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Binding Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBindingClusterInitCallback(chip::EndpointId endpoint);

/** @brief Group Key Management Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGroupKeyManagementClusterInitCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSampleMfgSpecificClusterClusterInitCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster 2 Cluster Init
 *
 * Cluster Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSampleMfgSpecificCluster2ClusterInitCallback(chip::EndpointId endpoint);

// Cluster Server/Client Init Functions

//
// Power Configuration Cluster
//

/** @brief Power Configuration Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerConfigurationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Power Configuration Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerConfigurationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Power Configuration Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPowerConfigurationClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Power Configuration Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPowerConfigurationClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Power Configuration Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPowerConfigurationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Power Configuration Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPowerConfigurationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Power Configuration Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterPowerConfigurationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Power Configuration Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterPowerConfigurationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Power Configuration Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPowerConfigurationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Power Configuration Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPowerConfigurationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Device Temperature Configuration Cluster
//

/** @brief Device Temperature Configuration Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDeviceTemperatureConfigurationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Device Temperature Configuration Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDeviceTemperatureConfigurationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Device Temperature Configuration Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDeviceTemperatureConfigurationClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Device Temperature Configuration Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDeviceTemperatureConfigurationClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Device Temperature Configuration Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDeviceTemperatureConfigurationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Device Temperature Configuration Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDeviceTemperatureConfigurationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Device Temperature Configuration Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterDeviceTemperatureConfigurationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Device Temperature Configuration Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterDeviceTemperatureConfigurationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Device Temperature Configuration Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDeviceTemperatureConfigurationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Device Temperature Configuration Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDeviceTemperatureConfigurationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Identify Cluster
//

/** @brief Identify Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIdentifyClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Identify Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIdentifyClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Identify Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIdentifyClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Identify Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIdentifyClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Identify Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIdentifyClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                     uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Identify Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIdentifyClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                     uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Identify Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIdentifyClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                       EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Identify Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIdentifyClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                       EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Identify Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIdentifyClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Identify Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIdentifyClusterClientTickCallback(chip::EndpointId endpoint);

//
// Groups Cluster
//

/** @brief Groups Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGroupsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Groups Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGroupsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Groups Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGroupsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Groups Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGroupsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Groups Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGroupsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Groups Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGroupsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Groups Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterGroupsClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Groups Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterGroupsClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Groups Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGroupsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Groups Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGroupsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Scenes Cluster
//

/** @brief Scenes Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfScenesClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Scenes Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfScenesClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Scenes Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterScenesClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Scenes Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterScenesClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Scenes Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfScenesClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Scenes Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfScenesClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Scenes Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterScenesClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Scenes Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterScenesClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Scenes Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfScenesClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Scenes Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfScenesClusterClientTickCallback(chip::EndpointId endpoint);

//
// On/Off Cluster
//

/** @brief On/Off Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOnOffClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief On/Off Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOnOffClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief On/Off Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOnOffClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief On/Off Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOnOffClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief On/Off Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOnOffClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief On/Off Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOnOffClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief On/Off Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterOnOffClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief On/Off Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterOnOffClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief On/Off Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOnOffClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief On/Off Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOnOffClusterClientTickCallback(chip::EndpointId endpoint);

//
// On/off Switch Configuration Cluster
//

/** @brief On/off Switch Configuration Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOnOffSwitchConfigurationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief On/off Switch Configuration Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOnOffSwitchConfigurationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief On/off Switch Configuration Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOnOffSwitchConfigurationClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief On/off Switch Configuration Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOnOffSwitchConfigurationClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief On/off Switch Configuration Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOnOffSwitchConfigurationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                     EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                     EmberStatus status);

/** @brief On/off Switch Configuration Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOnOffSwitchConfigurationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                     EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                     EmberStatus status);

/** @brief On/off Switch Configuration Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOnOffSwitchConfigurationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief On/off Switch Configuration Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOnOffSwitchConfigurationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief On/off Switch Configuration Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOnOffSwitchConfigurationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief On/off Switch Configuration Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOnOffSwitchConfigurationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Level Control Cluster
//

/** @brief Level Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLevelControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Level Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLevelControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Level Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterLevelControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Level Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterLevelControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Level Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfLevelControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Level Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfLevelControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Level Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterLevelControlClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Level Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterLevelControlClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Level Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfLevelControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Level Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Alarms Cluster
//

/** @brief Alarms Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAlarmsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Alarms Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAlarmsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Alarms Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAlarmsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Alarms Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAlarmsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Alarms Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAlarmsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Alarms Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAlarmsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Alarms Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterAlarmsClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Alarms Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterAlarmsClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Alarms Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAlarmsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Alarms Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAlarmsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Time Cluster
//

/** @brief Time Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTimeClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Time Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTimeClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Time Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTimeClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Time Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTimeClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Time Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTimeClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                 uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Time Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTimeClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                 uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Time Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTimeClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                   EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Time Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTimeClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                   EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Time Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTimeClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Time Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTimeClusterClientTickCallback(chip::EndpointId endpoint);

//
// Binary Input (Basic) Cluster
//

/** @brief Binary Input (Basic) Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBinaryInputBasicClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Binary Input (Basic) Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBinaryInputBasicClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Binary Input (Basic) Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBinaryInputBasicClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Binary Input (Basic) Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBinaryInputBasicClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Binary Input (Basic) Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBinaryInputBasicClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Binary Input (Basic) Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBinaryInputBasicClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Binary Input (Basic) Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBinaryInputBasicClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Binary Input (Basic) Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBinaryInputBasicClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Binary Input (Basic) Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBinaryInputBasicClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Binary Input (Basic) Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBinaryInputBasicClusterClientTickCallback(chip::EndpointId endpoint);

//
// Power Profile Cluster
//

/** @brief Power Profile Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerProfileClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Power Profile Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerProfileClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Power Profile Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPowerProfileClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Power Profile Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPowerProfileClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Power Profile Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPowerProfileClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Power Profile Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPowerProfileClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Power Profile Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterPowerProfileClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Power Profile Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterPowerProfileClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Power Profile Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPowerProfileClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Power Profile Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPowerProfileClusterClientTickCallback(chip::EndpointId endpoint);

//
// Appliance Control Cluster
//

/** @brief Appliance Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Appliance Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Appliance Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterApplianceControlClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterApplianceControlClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Appliance Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Descriptor Cluster
//

/** @brief Descriptor Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDescriptorClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Descriptor Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDescriptorClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Descriptor Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDescriptorClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Descriptor Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDescriptorClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Descriptor Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDescriptorClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Descriptor Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDescriptorClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Descriptor Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterDescriptorClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Descriptor Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterDescriptorClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Descriptor Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDescriptorClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Descriptor Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDescriptorClusterClientTickCallback(chip::EndpointId endpoint);

//
// Poll Control Cluster
//

/** @brief Poll Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPollControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Poll Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPollControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Poll Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPollControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Poll Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPollControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Poll Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPollControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Poll Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPollControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Poll Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterPollControlClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Poll Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterPollControlClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Poll Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPollControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Poll Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPollControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Basic Cluster
//

/** @brief Basic Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBasicClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Basic Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBasicClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Basic Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBasicClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Basic Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBasicClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Basic Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBasicClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Basic Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBasicClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Basic Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBasicClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Basic Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBasicClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Basic Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBasicClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Basic Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBasicClusterClientTickCallback(chip::EndpointId endpoint);

//
// OTA Software Update Provider Cluster
//

/** @brief OTA Software Update Provider Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOtaSoftwareUpdateProviderClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Provider Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOtaSoftwareUpdateProviderClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Provider Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOtaSoftwareUpdateProviderClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief OTA Software Update Provider Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOtaSoftwareUpdateProviderClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief OTA Software Update Provider Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOtaSoftwareUpdateProviderClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                      EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                      EmberStatus status);

/** @brief OTA Software Update Provider Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOtaSoftwareUpdateProviderClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                      EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                      EmberStatus status);

/** @brief OTA Software Update Provider Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOtaSoftwareUpdateProviderClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief OTA Software Update Provider Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOtaSoftwareUpdateProviderClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief OTA Software Update Provider Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOtaSoftwareUpdateProviderClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Provider Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOtaSoftwareUpdateProviderClusterClientTickCallback(chip::EndpointId endpoint);

//
// OTA Software Update Requestor Cluster
//

/** @brief OTA Software Update Requestor Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOtaSoftwareUpdateRequestorClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Requestor Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOtaSoftwareUpdateRequestorClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Requestor Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOtaSoftwareUpdateRequestorClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief OTA Software Update Requestor Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOtaSoftwareUpdateRequestorClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief OTA Software Update Requestor Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOtaSoftwareUpdateRequestorClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                       EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                       EmberStatus status);

/** @brief OTA Software Update Requestor Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOtaSoftwareUpdateRequestorClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                       EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                       EmberStatus status);

/** @brief OTA Software Update Requestor Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOtaSoftwareUpdateRequestorClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief OTA Software Update Requestor Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOtaSoftwareUpdateRequestorClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief OTA Software Update Requestor Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOtaSoftwareUpdateRequestorClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief OTA Software Update Requestor Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOtaSoftwareUpdateRequestorClusterClientTickCallback(chip::EndpointId endpoint);

//
// Power Source Cluster
//

/** @brief Power Source Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerSourceClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Power Source Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPowerSourceClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Power Source Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPowerSourceClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Power Source Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPowerSourceClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Power Source Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPowerSourceClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Power Source Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPowerSourceClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Power Source Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterPowerSourceClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Power Source Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterPowerSourceClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Power Source Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPowerSourceClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Power Source Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPowerSourceClusterClientTickCallback(chip::EndpointId endpoint);

//
// General Commissioning Cluster
//

/** @brief General Commissioning Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGeneralCommissioningClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief General Commissioning Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGeneralCommissioningClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief General Commissioning Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGeneralCommissioningClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief General Commissioning Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGeneralCommissioningClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief General Commissioning Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGeneralCommissioningClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                 EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                 EmberStatus status);

/** @brief General Commissioning Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGeneralCommissioningClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                 EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                 EmberStatus status);

/** @brief General Commissioning Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterGeneralCommissioningClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief General Commissioning Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterGeneralCommissioningClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief General Commissioning Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGeneralCommissioningClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief General Commissioning Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGeneralCommissioningClusterClientTickCallback(chip::EndpointId endpoint);

//
// Network Commissioning Cluster
//

/** @brief Network Commissioning Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNetworkCommissioningClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Network Commissioning Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNetworkCommissioningClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Network Commissioning Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterNetworkCommissioningClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Network Commissioning Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterNetworkCommissioningClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Network Commissioning Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfNetworkCommissioningClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                 EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                 EmberStatus status);

/** @brief Network Commissioning Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfNetworkCommissioningClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                 EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                 EmberStatus status);

/** @brief Network Commissioning Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterNetworkCommissioningClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Network Commissioning Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterNetworkCommissioningClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Network Commissioning Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfNetworkCommissioningClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Network Commissioning Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfNetworkCommissioningClusterClientTickCallback(chip::EndpointId endpoint);

//
// Diagnostic Logs Cluster
//

/** @brief Diagnostic Logs Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDiagnosticLogsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Diagnostic Logs Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDiagnosticLogsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Diagnostic Logs Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDiagnosticLogsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Diagnostic Logs Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDiagnosticLogsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Diagnostic Logs Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDiagnosticLogsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                           EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                           EmberStatus status);

/** @brief Diagnostic Logs Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDiagnosticLogsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                           EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                           EmberStatus status);

/** @brief Diagnostic Logs Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterDiagnosticLogsClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                             EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Diagnostic Logs Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterDiagnosticLogsClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                             EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Diagnostic Logs Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDiagnosticLogsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Diagnostic Logs Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDiagnosticLogsClusterClientTickCallback(chip::EndpointId endpoint);

//
// General Diagnostics Cluster
//

/** @brief General Diagnostics Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGeneralDiagnosticsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief General Diagnostics Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGeneralDiagnosticsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief General Diagnostics Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGeneralDiagnosticsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief General Diagnostics Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGeneralDiagnosticsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief General Diagnostics Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGeneralDiagnosticsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief General Diagnostics Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGeneralDiagnosticsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief General Diagnostics Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterGeneralDiagnosticsClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief General Diagnostics Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterGeneralDiagnosticsClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief General Diagnostics Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGeneralDiagnosticsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief General Diagnostics Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGeneralDiagnosticsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Software Diagnostics Cluster
//

/** @brief Software Diagnostics Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSoftwareDiagnosticsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Software Diagnostics Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSoftwareDiagnosticsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Software Diagnostics Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSoftwareDiagnosticsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Software Diagnostics Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSoftwareDiagnosticsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Software Diagnostics Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSoftwareDiagnosticsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Software Diagnostics Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSoftwareDiagnosticsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Software Diagnostics Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSoftwareDiagnosticsClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Software Diagnostics Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSoftwareDiagnosticsClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Software Diagnostics Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSoftwareDiagnosticsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Software Diagnostics Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSoftwareDiagnosticsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Thread Network Diagnostics Cluster
//

/** @brief Thread Network Diagnostics Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThreadNetworkDiagnosticsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Thread Network Diagnostics Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThreadNetworkDiagnosticsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Thread Network Diagnostics Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterThreadNetworkDiagnosticsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Thread Network Diagnostics Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterThreadNetworkDiagnosticsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Thread Network Diagnostics Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfThreadNetworkDiagnosticsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                     EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                     EmberStatus status);

/** @brief Thread Network Diagnostics Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfThreadNetworkDiagnosticsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                     EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                     EmberStatus status);

/** @brief Thread Network Diagnostics Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterThreadNetworkDiagnosticsClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Thread Network Diagnostics Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterThreadNetworkDiagnosticsClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Thread Network Diagnostics Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfThreadNetworkDiagnosticsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Thread Network Diagnostics Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfThreadNetworkDiagnosticsClusterClientTickCallback(chip::EndpointId endpoint);

//
// WiFi Network Diagnostics Cluster
//

/** @brief WiFi Network Diagnostics Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWiFiNetworkDiagnosticsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief WiFi Network Diagnostics Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWiFiNetworkDiagnosticsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief WiFi Network Diagnostics Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterWiFiNetworkDiagnosticsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief WiFi Network Diagnostics Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterWiFiNetworkDiagnosticsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief WiFi Network Diagnostics Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfWiFiNetworkDiagnosticsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief WiFi Network Diagnostics Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfWiFiNetworkDiagnosticsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief WiFi Network Diagnostics Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterWiFiNetworkDiagnosticsClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief WiFi Network Diagnostics Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterWiFiNetworkDiagnosticsClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief WiFi Network Diagnostics Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfWiFiNetworkDiagnosticsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief WiFi Network Diagnostics Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfWiFiNetworkDiagnosticsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Ethernet Network Diagnostics Cluster
//

/** @brief Ethernet Network Diagnostics Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthernetNetworkDiagnosticsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Ethernet Network Diagnostics Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthernetNetworkDiagnosticsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Ethernet Network Diagnostics Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterEthernetNetworkDiagnosticsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ethernet Network Diagnostics Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterEthernetNetworkDiagnosticsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ethernet Network Diagnostics Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfEthernetNetworkDiagnosticsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                       EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                       EmberStatus status);

/** @brief Ethernet Network Diagnostics Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfEthernetNetworkDiagnosticsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                       EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                       EmberStatus status);

/** @brief Ethernet Network Diagnostics Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterEthernetNetworkDiagnosticsClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ethernet Network Diagnostics Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterEthernetNetworkDiagnosticsClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ethernet Network Diagnostics Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfEthernetNetworkDiagnosticsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Ethernet Network Diagnostics Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfEthernetNetworkDiagnosticsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Bridged Device Basic Cluster
//

/** @brief Bridged Device Basic Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBridgedDeviceBasicClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Bridged Device Basic Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBridgedDeviceBasicClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Bridged Device Basic Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBridgedDeviceBasicClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bridged Device Basic Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBridgedDeviceBasicClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bridged Device Basic Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBridgedDeviceBasicClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Bridged Device Basic Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBridgedDeviceBasicClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Bridged Device Basic Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBridgedDeviceBasicClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bridged Device Basic Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBridgedDeviceBasicClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bridged Device Basic Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBridgedDeviceBasicClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Bridged Device Basic Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBridgedDeviceBasicClusterClientTickCallback(chip::EndpointId endpoint);

//
// Switch Cluster
//

/** @brief Switch Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSwitchClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Switch Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSwitchClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Switch Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSwitchClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Switch Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSwitchClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Switch Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSwitchClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Switch Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSwitchClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Switch Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterSwitchClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Switch Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterSwitchClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Switch Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSwitchClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Switch Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSwitchClusterClientTickCallback(chip::EndpointId endpoint);

//
// AdministratorCommissioning Cluster
//

/** @brief AdministratorCommissioning Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAdministratorCommissioningClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief AdministratorCommissioning Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAdministratorCommissioningClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief AdministratorCommissioning Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAdministratorCommissioningClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief AdministratorCommissioning Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAdministratorCommissioningClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief AdministratorCommissioning Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAdministratorCommissioningClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                       EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                       EmberStatus status);

/** @brief AdministratorCommissioning Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAdministratorCommissioningClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                       EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                       EmberStatus status);

/** @brief AdministratorCommissioning Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterAdministratorCommissioningClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief AdministratorCommissioning Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterAdministratorCommissioningClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief AdministratorCommissioning Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAdministratorCommissioningClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief AdministratorCommissioning Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAdministratorCommissioningClusterClientTickCallback(chip::EndpointId endpoint);

//
// Operational Credentials Cluster
//

/** @brief Operational Credentials Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOperationalCredentialsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Operational Credentials Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOperationalCredentialsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Operational Credentials Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOperationalCredentialsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Operational Credentials Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOperationalCredentialsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Operational Credentials Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOperationalCredentialsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief Operational Credentials Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOperationalCredentialsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief Operational Credentials Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOperationalCredentialsClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Operational Credentials Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOperationalCredentialsClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Operational Credentials Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOperationalCredentialsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Operational Credentials Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOperationalCredentialsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Fixed Label Cluster
//

/** @brief Fixed Label Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFixedLabelClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Fixed Label Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFixedLabelClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Fixed Label Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFixedLabelClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fixed Label Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFixedLabelClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fixed Label Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFixedLabelClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Fixed Label Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFixedLabelClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Fixed Label Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFixedLabelClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fixed Label Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFixedLabelClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fixed Label Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFixedLabelClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Fixed Label Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFixedLabelClusterClientTickCallback(chip::EndpointId endpoint);

//
// Shade Configuration Cluster
//

/** @brief Shade Configuration Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfShadeConfigurationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Shade Configuration Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfShadeConfigurationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Shade Configuration Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterShadeConfigurationClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Shade Configuration Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterShadeConfigurationClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Shade Configuration Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfShadeConfigurationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Shade Configuration Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfShadeConfigurationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Shade Configuration Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterShadeConfigurationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Shade Configuration Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterShadeConfigurationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Shade Configuration Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfShadeConfigurationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Shade Configuration Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfShadeConfigurationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Door Lock Cluster
//

/** @brief Door Lock Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDoorLockClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Door Lock Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDoorLockClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Door Lock Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDoorLockClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Door Lock Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDoorLockClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Door Lock Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDoorLockClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                     uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Door Lock Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDoorLockClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                     uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Door Lock Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterDoorLockClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                       EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Door Lock Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterDoorLockClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                       EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Door Lock Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDoorLockClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Door Lock Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDoorLockClusterClientTickCallback(chip::EndpointId endpoint);

//
// Window Covering Cluster
//

/** @brief Window Covering Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWindowCoveringClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Window Covering Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWindowCoveringClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Window Covering Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterWindowCoveringClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Window Covering Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterWindowCoveringClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Window Covering Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfWindowCoveringClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                           EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                           EmberStatus status);

/** @brief Window Covering Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfWindowCoveringClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                           EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                           EmberStatus status);

/** @brief Window Covering Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterWindowCoveringClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                             EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Window Covering Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterWindowCoveringClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                             EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Window Covering Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfWindowCoveringClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Window Covering Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfWindowCoveringClusterClientTickCallback(chip::EndpointId endpoint);

//
// Barrier Control Cluster
//

/** @brief Barrier Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBarrierControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Barrier Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBarrierControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Barrier Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBarrierControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Barrier Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBarrierControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Barrier Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBarrierControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                           EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                           EmberStatus status);

/** @brief Barrier Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBarrierControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                           EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                           EmberStatus status);

/** @brief Barrier Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBarrierControlClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                             EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Barrier Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBarrierControlClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                             EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Barrier Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBarrierControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Barrier Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBarrierControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Pump Configuration and Control Cluster
//

/** @brief Pump Configuration and Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPumpConfigurationAndControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Pump Configuration and Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPumpConfigurationAndControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Pump Configuration and Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPumpConfigurationAndControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Pump Configuration and Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPumpConfigurationAndControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Pump Configuration and Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPumpConfigurationAndControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                        EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                        uint8_t * message, EmberStatus status);

/** @brief Pump Configuration and Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPumpConfigurationAndControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                        EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                        uint8_t * message, EmberStatus status);

/** @brief Pump Configuration and Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterPumpConfigurationAndControlClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Pump Configuration and Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterPumpConfigurationAndControlClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Pump Configuration and Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPumpConfigurationAndControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Pump Configuration and Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPumpConfigurationAndControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Thermostat Cluster
//

/** @brief Thermostat Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThermostatClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Thermostat Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThermostatClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Thermostat Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterThermostatClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Thermostat Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterThermostatClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Thermostat Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfThermostatClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Thermostat Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfThermostatClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Thermostat Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterThermostatClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Thermostat Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterThermostatClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Thermostat Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfThermostatClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Thermostat Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfThermostatClusterClientTickCallback(chip::EndpointId endpoint);

//
// Fan Control Cluster
//

/** @brief Fan Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFanControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Fan Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFanControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Fan Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFanControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fan Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFanControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fan Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFanControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Fan Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFanControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Fan Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFanControlClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fan Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFanControlClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fan Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFanControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Fan Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFanControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Dehumidification Control Cluster
//

/** @brief Dehumidification Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDehumidificationControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Dehumidification Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDehumidificationControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Dehumidification Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDehumidificationControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Dehumidification Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDehumidificationControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Dehumidification Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDehumidificationControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Dehumidification Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDehumidificationControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Dehumidification Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterDehumidificationControlClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Dehumidification Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterDehumidificationControlClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Dehumidification Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDehumidificationControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Dehumidification Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDehumidificationControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Thermostat User Interface Configuration Cluster
//

/** @brief Thermostat User Interface Configuration Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThermostatUserInterfaceConfigurationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Thermostat User Interface Configuration Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfThermostatUserInterfaceConfigurationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Thermostat User Interface Configuration Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterThermostatUserInterfaceConfigurationClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Thermostat User Interface Configuration Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterThermostatUserInterfaceConfigurationClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Thermostat User Interface Configuration Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfThermostatUserInterfaceConfigurationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                 EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                 uint8_t * message, EmberStatus status);

/** @brief Thermostat User Interface Configuration Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfThermostatUserInterfaceConfigurationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                 EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                 uint8_t * message, EmberStatus status);

/** @brief Thermostat User Interface Configuration Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterThermostatUserInterfaceConfigurationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Thermostat User Interface Configuration Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterThermostatUserInterfaceConfigurationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Thermostat User Interface Configuration Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfThermostatUserInterfaceConfigurationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Thermostat User Interface Configuration Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfThermostatUserInterfaceConfigurationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Color Control Cluster
//

/** @brief Color Control Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfColorControlClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Color Control Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfColorControlClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Color Control Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterColorControlClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Color Control Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterColorControlClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Color Control Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfColorControlClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Color Control Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfColorControlClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Color Control Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterColorControlClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Color Control Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterColorControlClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Color Control Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfColorControlClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Color Control Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfColorControlClusterClientTickCallback(chip::EndpointId endpoint);

//
// Ballast Configuration Cluster
//

/** @brief Ballast Configuration Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBallastConfigurationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Ballast Configuration Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBallastConfigurationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Ballast Configuration Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBallastConfigurationClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ballast Configuration Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBallastConfigurationClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ballast Configuration Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBallastConfigurationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                 EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                 EmberStatus status);

/** @brief Ballast Configuration Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBallastConfigurationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                 EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                 EmberStatus status);

/** @brief Ballast Configuration Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBallastConfigurationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ballast Configuration Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBallastConfigurationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ballast Configuration Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBallastConfigurationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Ballast Configuration Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBallastConfigurationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Illuminance Measurement Cluster
//

/** @brief Illuminance Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIlluminanceMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Illuminance Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIlluminanceMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Illuminance Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIlluminanceMeasurementClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Illuminance Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIlluminanceMeasurementClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Illuminance Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIlluminanceMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief Illuminance Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIlluminanceMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief Illuminance Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterIlluminanceMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Illuminance Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterIlluminanceMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Illuminance Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIlluminanceMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Illuminance Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIlluminanceMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Illuminance Level Sensing Cluster
//

/** @brief Illuminance Level Sensing Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIlluminanceLevelSensingClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Illuminance Level Sensing Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIlluminanceLevelSensingClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Illuminance Level Sensing Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIlluminanceLevelSensingClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Illuminance Level Sensing Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIlluminanceLevelSensingClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Illuminance Level Sensing Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIlluminanceLevelSensingClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Illuminance Level Sensing Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIlluminanceLevelSensingClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Illuminance Level Sensing Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterIlluminanceLevelSensingClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Illuminance Level Sensing Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterIlluminanceLevelSensingClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Illuminance Level Sensing Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIlluminanceLevelSensingClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Illuminance Level Sensing Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIlluminanceLevelSensingClusterClientTickCallback(chip::EndpointId endpoint);

//
// Temperature Measurement Cluster
//

/** @brief Temperature Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTemperatureMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Temperature Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTemperatureMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Temperature Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTemperatureMeasurementClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Temperature Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTemperatureMeasurementClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Temperature Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTemperatureMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief Temperature Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTemperatureMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                   EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                   EmberStatus status);

/** @brief Temperature Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterTemperatureMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Temperature Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterTemperatureMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Temperature Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTemperatureMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Temperature Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTemperatureMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Pressure Measurement Cluster
//

/** @brief Pressure Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPressureMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Pressure Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfPressureMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Pressure Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPressureMeasurementClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Pressure Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterPressureMeasurementClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Pressure Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPressureMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Pressure Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfPressureMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Pressure Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterPressureMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Pressure Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterPressureMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Pressure Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPressureMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Pressure Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfPressureMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Flow Measurement Cluster
//

/** @brief Flow Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFlowMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Flow Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFlowMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Flow Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFlowMeasurementClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Flow Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFlowMeasurementClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Flow Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFlowMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                            EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                            EmberStatus status);

/** @brief Flow Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFlowMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                            EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                            EmberStatus status);

/** @brief Flow Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFlowMeasurementClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                              EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Flow Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFlowMeasurementClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                              EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Flow Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFlowMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Flow Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFlowMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Relative Humidity Measurement Cluster
//

/** @brief Relative Humidity Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfRelativeHumidityMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Relative Humidity Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfRelativeHumidityMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Relative Humidity Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterRelativeHumidityMeasurementClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Relative Humidity Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterRelativeHumidityMeasurementClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Relative Humidity Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfRelativeHumidityMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                        EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                        uint8_t * message, EmberStatus status);

/** @brief Relative Humidity Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfRelativeHumidityMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                        EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                        uint8_t * message, EmberStatus status);

/** @brief Relative Humidity Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterRelativeHumidityMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Relative Humidity Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterRelativeHumidityMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Relative Humidity Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfRelativeHumidityMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Relative Humidity Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfRelativeHumidityMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Occupancy Sensing Cluster
//

/** @brief Occupancy Sensing Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOccupancySensingClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Occupancy Sensing Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOccupancySensingClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Occupancy Sensing Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOccupancySensingClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Occupancy Sensing Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOccupancySensingClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Occupancy Sensing Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOccupancySensingClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Occupancy Sensing Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOccupancySensingClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Occupancy Sensing Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterOccupancySensingClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Occupancy Sensing Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterOccupancySensingClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Occupancy Sensing Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOccupancySensingClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Occupancy Sensing Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOccupancySensingClusterClientTickCallback(chip::EndpointId endpoint);

//
// Carbon Monoxide Concentration Measurement Cluster
//

/** @brief Carbon Monoxide Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCarbonMonoxideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Carbon Monoxide Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCarbonMonoxideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Carbon Monoxide Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterCarbonMonoxideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Carbon Monoxide Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterCarbonMonoxideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Carbon Monoxide Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfCarbonMonoxideConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                   EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                   uint8_t * message, EmberStatus status);

/** @brief Carbon Monoxide Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfCarbonMonoxideConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                   EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                   uint8_t * message, EmberStatus status);

/** @brief Carbon Monoxide Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterCarbonMonoxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Carbon Monoxide Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterCarbonMonoxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Carbon Monoxide Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfCarbonMonoxideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Carbon Monoxide Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfCarbonMonoxideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Carbon Dioxide Concentration Measurement Cluster
//

/** @brief Carbon Dioxide Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCarbonDioxideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Carbon Dioxide Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCarbonDioxideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Carbon Dioxide Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterCarbonDioxideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Carbon Dioxide Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterCarbonDioxideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Carbon Dioxide Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfCarbonDioxideConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                  EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                  uint8_t * message, EmberStatus status);

/** @brief Carbon Dioxide Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfCarbonDioxideConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                  EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                  uint8_t * message, EmberStatus status);

/** @brief Carbon Dioxide Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterCarbonDioxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Carbon Dioxide Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterCarbonDioxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Carbon Dioxide Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfCarbonDioxideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Carbon Dioxide Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfCarbonDioxideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Ethylene Concentration Measurement Cluster
//

/** @brief Ethylene Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthyleneConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Ethylene Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthyleneConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Ethylene Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterEthyleneConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ethylene Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterEthyleneConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ethylene Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfEthyleneConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Ethylene Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfEthyleneConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Ethylene Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterEthyleneConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ethylene Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterEthyleneConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ethylene Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfEthyleneConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Ethylene Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfEthyleneConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Ethylene Oxide Concentration Measurement Cluster
//

/** @brief Ethylene Oxide Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthyleneOxideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Ethylene Oxide Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfEthyleneOxideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Ethylene Oxide Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterEthyleneOxideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ethylene Oxide Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterEthyleneOxideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ethylene Oxide Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfEthyleneOxideConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                  EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                  uint8_t * message, EmberStatus status);

/** @brief Ethylene Oxide Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfEthyleneOxideConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                  EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                  uint8_t * message, EmberStatus status);

/** @brief Ethylene Oxide Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterEthyleneOxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ethylene Oxide Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterEthyleneOxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ethylene Oxide Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfEthyleneOxideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Ethylene Oxide Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfEthyleneOxideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Hydrogen Concentration Measurement Cluster
//

/** @brief Hydrogen Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHydrogenConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHydrogenConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterHydrogenConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Hydrogen Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterHydrogenConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Hydrogen Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfHydrogenConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Hydrogen Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfHydrogenConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Hydrogen Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterHydrogenConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Hydrogen Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterHydrogenConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Hydrogen Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfHydrogenConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfHydrogenConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Hydrogen Sulphide Concentration Measurement Cluster
//

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHydrogenSulphideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHydrogenSulphideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterHydrogenSulphideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterHydrogenSulphideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfHydrogenSulphideConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfHydrogenSulphideConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterHydrogenSulphideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterHydrogenSulphideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfHydrogenSulphideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfHydrogenSulphideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Nitric Oxide Concentration Measurement Cluster
//

/** @brief Nitric Oxide Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNitricOxideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Nitric Oxide Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNitricOxideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Nitric Oxide Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterNitricOxideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Nitric Oxide Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterNitricOxideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Nitric Oxide Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfNitricOxideConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                uint8_t * message, EmberStatus status);

/** @brief Nitric Oxide Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfNitricOxideConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                uint8_t * message, EmberStatus status);

/** @brief Nitric Oxide Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterNitricOxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Nitric Oxide Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterNitricOxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Nitric Oxide Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfNitricOxideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Nitric Oxide Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfNitricOxideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Nitrogen Dioxide Concentration Measurement Cluster
//

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNitrogenDioxideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfNitrogenDioxideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterNitrogenDioxideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterNitrogenDioxideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfNitrogenDioxideConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfNitrogenDioxideConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterNitrogenDioxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterNitrogenDioxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfNitrogenDioxideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfNitrogenDioxideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Oxygen Concentration Measurement Cluster
//

/** @brief Oxygen Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOxygenConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Oxygen Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOxygenConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Oxygen Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOxygenConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Oxygen Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOxygenConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Oxygen Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOxygenConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Oxygen Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOxygenConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Oxygen Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOxygenConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Oxygen Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOxygenConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Oxygen Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOxygenConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Oxygen Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOxygenConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Ozone Concentration Measurement Cluster
//

/** @brief Ozone Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOzoneConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Ozone Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfOzoneConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Ozone Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOzoneConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ozone Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterOzoneConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Ozone Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOzoneConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                          EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                          uint8_t * message, EmberStatus status);

/** @brief Ozone Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfOzoneConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                          EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                          uint8_t * message, EmberStatus status);

/** @brief Ozone Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOzoneConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ozone Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterOzoneConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Ozone Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOzoneConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Ozone Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfOzoneConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Sulfur Dioxide Concentration Measurement Cluster
//

/** @brief Sulfur Dioxide Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSulfurDioxideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSulfurDioxideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSulfurDioxideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSulfurDioxideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSulfurDioxideConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                  EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                  uint8_t * message, EmberStatus status);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSulfurDioxideConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                  EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                  uint8_t * message, EmberStatus status);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSulfurDioxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSulfurDioxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSulfurDioxideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Sulfur Dioxide Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSulfurDioxideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Dissolved Oxygen Concentration Measurement Cluster
//

/** @brief Dissolved Oxygen Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDissolvedOxygenConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfDissolvedOxygenConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDissolvedOxygenConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterDissolvedOxygenConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDissolvedOxygenConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfDissolvedOxygenConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterDissolvedOxygenConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterDissolvedOxygenConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDissolvedOxygenConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Dissolved Oxygen Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfDissolvedOxygenConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Bromate Concentration Measurement Cluster
//

/** @brief Bromate Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromateConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Bromate Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromateConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Bromate Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBromateConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bromate Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBromateConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bromate Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBromateConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                            EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                            uint8_t * message, EmberStatus status);

/** @brief Bromate Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBromateConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                            EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                            uint8_t * message, EmberStatus status);

/** @brief Bromate Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBromateConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bromate Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBromateConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bromate Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBromateConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Bromate Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBromateConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Chloramines Concentration Measurement Cluster
//

/** @brief Chloramines Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChloraminesConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Chloramines Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChloraminesConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Chloramines Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChloraminesConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chloramines Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChloraminesConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chloramines Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChloraminesConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                uint8_t * message, EmberStatus status);

/** @brief Chloramines Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChloraminesConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                                EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                                uint8_t * message, EmberStatus status);

/** @brief Chloramines Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterChloraminesConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chloramines Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterChloraminesConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chloramines Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChloraminesConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Chloramines Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChloraminesConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Chlorine Concentration Measurement Cluster
//

/** @brief Chlorine Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChlorineConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Chlorine Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChlorineConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Chlorine Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChlorineConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chlorine Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChlorineConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chlorine Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChlorineConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Chlorine Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChlorineConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Chlorine Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterChlorineConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chlorine Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterChlorineConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chlorine Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChlorineConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Chlorine Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChlorineConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Fecal coliform and E. Coli Concentration Measurement Cluster
//

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFecalColiformAndEColiConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFecalColiformAndEColiConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFecalColiformAndEColiConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFecalColiformAndEColiConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFecalColiformAndEColiConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFecalColiformAndEColiConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFecalColiformAndEColiConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterFecalColiformAndEColiConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFecalColiformAndEColiConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFecalColiformAndEColiConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Fluoride Concentration Measurement Cluster
//

/** @brief Fluoride Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFluorideConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Fluoride Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfFluorideConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Fluoride Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFluorideConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fluoride Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterFluorideConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Fluoride Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFluorideConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Fluoride Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfFluorideConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                             EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                             uint8_t * message, EmberStatus status);

/** @brief Fluoride Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterFluorideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fluoride Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterFluorideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Fluoride Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFluorideConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Fluoride Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfFluorideConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Haloacetic Acids Concentration Measurement Cluster
//

/** @brief Haloacetic Acids Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHaloaceticAcidsConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Haloacetic Acids Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfHaloaceticAcidsConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Haloacetic Acids Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterHaloaceticAcidsConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Haloacetic Acids Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterHaloaceticAcidsConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Haloacetic Acids Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfHaloaceticAcidsConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Haloacetic Acids Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfHaloaceticAcidsConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Haloacetic Acids Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterHaloaceticAcidsConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Haloacetic Acids Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterHaloaceticAcidsConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Haloacetic Acids Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfHaloaceticAcidsConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Haloacetic Acids Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfHaloaceticAcidsConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Total Trihalomethanes Concentration Measurement Cluster
//

/** @brief Total Trihalomethanes Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTotalTrihalomethanesConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTotalTrihalomethanesConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTotalTrihalomethanesConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTotalTrihalomethanesConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTotalTrihalomethanesConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTotalTrihalomethanesConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTotalTrihalomethanesConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTotalTrihalomethanesConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTotalTrihalomethanesConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Total Trihalomethanes Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTotalTrihalomethanesConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Total Coliform Bacteria Concentration Measurement Cluster
//

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTotalColiformBacteriaConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTotalColiformBacteriaConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTotalColiformBacteriaConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTotalColiformBacteriaConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTotalColiformBacteriaConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTotalColiformBacteriaConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTotalColiformBacteriaConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTotalColiformBacteriaConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTotalColiformBacteriaConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTotalColiformBacteriaConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Turbidity Concentration Measurement Cluster
//

/** @brief Turbidity Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTurbidityConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Turbidity Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTurbidityConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Turbidity Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTurbidityConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Turbidity Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTurbidityConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Turbidity Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTurbidityConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                              EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                              uint8_t * message, EmberStatus status);

/** @brief Turbidity Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTurbidityConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                              EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                              uint8_t * message, EmberStatus status);

/** @brief Turbidity Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterTurbidityConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Turbidity Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterTurbidityConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Turbidity Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTurbidityConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Turbidity Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTurbidityConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Copper Concentration Measurement Cluster
//

/** @brief Copper Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCopperConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Copper Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfCopperConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Copper Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterCopperConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Copper Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterCopperConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Copper Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfCopperConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Copper Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfCopperConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Copper Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterCopperConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Copper Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterCopperConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Copper Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfCopperConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Copper Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfCopperConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Lead Concentration Measurement Cluster
//

/** @brief Lead Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLeadConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Lead Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLeadConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Lead Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterLeadConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Lead Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterLeadConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Lead Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfLeadConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                         EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                         uint8_t * message, EmberStatus status);

/** @brief Lead Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfLeadConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                         EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                         uint8_t * message, EmberStatus status);

/** @brief Lead Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterLeadConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Lead Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterLeadConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Lead Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfLeadConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Lead Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfLeadConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Manganese Concentration Measurement Cluster
//

/** @brief Manganese Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfManganeseConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Manganese Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfManganeseConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Manganese Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterManganeseConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Manganese Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterManganeseConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Manganese Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfManganeseConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                              EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                              uint8_t * message, EmberStatus status);

/** @brief Manganese Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfManganeseConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                              EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                              uint8_t * message, EmberStatus status);

/** @brief Manganese Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterManganeseConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Manganese Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterManganeseConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Manganese Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfManganeseConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Manganese Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfManganeseConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Sulfate Concentration Measurement Cluster
//

/** @brief Sulfate Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSulfateConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Sulfate Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSulfateConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Sulfate Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSulfateConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sulfate Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSulfateConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sulfate Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSulfateConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                            EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                            uint8_t * message, EmberStatus status);

/** @brief Sulfate Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSulfateConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                            EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                            uint8_t * message, EmberStatus status);

/** @brief Sulfate Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSulfateConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sulfate Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSulfateConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sulfate Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSulfateConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Sulfate Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSulfateConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Bromodichloromethane Concentration Measurement Cluster
//

/** @brief Bromodichloromethane Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromodichloromethaneConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Bromodichloromethane Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromodichloromethaneConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Bromodichloromethane Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBromodichloromethaneConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bromodichloromethane Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBromodichloromethaneConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bromodichloromethane Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBromodichloromethaneConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Bromodichloromethane Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBromodichloromethaneConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Bromodichloromethane Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBromodichloromethaneConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bromodichloromethane Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBromodichloromethaneConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bromodichloromethane Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBromodichloromethaneConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Bromodichloromethane Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBromodichloromethaneConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Bromoform Concentration Measurement Cluster
//

/** @brief Bromoform Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromoformConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Bromoform Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBromoformConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Bromoform Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBromoformConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bromoform Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBromoformConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Bromoform Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBromoformConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                              EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                              uint8_t * message, EmberStatus status);

/** @brief Bromoform Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBromoformConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                              EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                              uint8_t * message, EmberStatus status);

/** @brief Bromoform Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBromoformConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bromoform Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterBromoformConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Bromoform Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBromoformConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Bromoform Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBromoformConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Chlorodibromomethane Concentration Measurement Cluster
//

/** @brief Chlorodibromomethane Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChlorodibromomethaneConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChlorodibromomethaneConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChlorodibromomethaneConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChlorodibromomethaneConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChlorodibromomethaneConcentrationMeasurementClusterServerMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChlorodibromomethaneConcentrationMeasurementClusterClientMessageSentCallback(
    const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
    EmberStatus status);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterChlorodibromomethaneConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterChlorodibromomethaneConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChlorodibromomethaneConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Chlorodibromomethane Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChlorodibromomethaneConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Chloroform Concentration Measurement Cluster
//

/** @brief Chloroform Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChloroformConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Chloroform Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfChloroformConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Chloroform Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChloroformConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chloroform Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterChloroformConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Chloroform Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChloroformConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                               EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                               uint8_t * message, EmberStatus status);

/** @brief Chloroform Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfChloroformConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                               EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                               uint8_t * message, EmberStatus status);

/** @brief Chloroform Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterChloroformConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chloroform Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterChloroformConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Chloroform Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChloroformConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Chloroform Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfChloroformConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Sodium Concentration Measurement Cluster
//

/** @brief Sodium Concentration Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSodiumConcentrationMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Sodium Concentration Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSodiumConcentrationMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Sodium Concentration Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSodiumConcentrationMeasurementClusterServerAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sodium Concentration Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSodiumConcentrationMeasurementClusterClientAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sodium Concentration Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSodiumConcentrationMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Sodium Concentration Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSodiumConcentrationMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                           EmberApsFrame * apsFrame, uint16_t msgLen,
                                                                           uint8_t * message, EmberStatus status);

/** @brief Sodium Concentration Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSodiumConcentrationMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sodium Concentration Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSodiumConcentrationMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sodium Concentration Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSodiumConcentrationMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Sodium Concentration Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSodiumConcentrationMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// IAS Zone Cluster
//

/** @brief IAS Zone Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasZoneClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief IAS Zone Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasZoneClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief IAS Zone Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIasZoneClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief IAS Zone Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIasZoneClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief IAS Zone Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIasZoneClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                    uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief IAS Zone Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIasZoneClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                    uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief IAS Zone Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIasZoneClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                      EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief IAS Zone Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIasZoneClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                      EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief IAS Zone Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIasZoneClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief IAS Zone Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIasZoneClusterClientTickCallback(chip::EndpointId endpoint);

//
// IAS ACE Cluster
//

/** @brief IAS ACE Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasAceClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief IAS ACE Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasAceClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief IAS ACE Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIasAceClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief IAS ACE Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIasAceClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief IAS ACE Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIasAceClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief IAS ACE Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIasAceClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                   uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief IAS ACE Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIasAceClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief IAS ACE Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIasAceClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                     EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief IAS ACE Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIasAceClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief IAS ACE Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIasAceClusterClientTickCallback(chip::EndpointId endpoint);

//
// IAS WD Cluster
//

/** @brief IAS WD Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasWdClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief IAS WD Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfIasWdClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief IAS WD Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIasWdClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief IAS WD Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterIasWdClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief IAS WD Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIasWdClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief IAS WD Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfIasWdClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                  uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief IAS WD Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIasWdClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief IAS WD Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterIasWdClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                    EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief IAS WD Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIasWdClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief IAS WD Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfIasWdClusterClientTickCallback(chip::EndpointId endpoint);

//
// Wake on LAN Cluster
//

/** @brief Wake on LAN Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWakeOnLanClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Wake on LAN Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfWakeOnLanClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Wake on LAN Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterWakeOnLanClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Wake on LAN Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterWakeOnLanClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Wake on LAN Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfWakeOnLanClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                      uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Wake on LAN Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfWakeOnLanClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                      uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Wake on LAN Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterWakeOnLanClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                        EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Wake on LAN Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterWakeOnLanClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                        EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Wake on LAN Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfWakeOnLanClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Wake on LAN Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfWakeOnLanClusterClientTickCallback(chip::EndpointId endpoint);

//
// TV Channel Cluster
//

/** @brief TV Channel Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTvChannelClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief TV Channel Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTvChannelClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief TV Channel Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTvChannelClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief TV Channel Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTvChannelClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief TV Channel Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTvChannelClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                      uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief TV Channel Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTvChannelClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                      uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief TV Channel Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTvChannelClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                        EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief TV Channel Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTvChannelClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                        EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief TV Channel Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTvChannelClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief TV Channel Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTvChannelClusterClientTickCallback(chip::EndpointId endpoint);

//
// Target Navigator Cluster
//

/** @brief Target Navigator Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTargetNavigatorClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Target Navigator Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTargetNavigatorClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Target Navigator Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTargetNavigatorClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Target Navigator Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTargetNavigatorClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Target Navigator Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTargetNavigatorClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                            EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                            EmberStatus status);

/** @brief Target Navigator Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTargetNavigatorClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                            EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                            EmberStatus status);

/** @brief Target Navigator Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTargetNavigatorClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                              EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Target Navigator Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTargetNavigatorClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                              EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Target Navigator Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTargetNavigatorClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Target Navigator Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTargetNavigatorClusterClientTickCallback(chip::EndpointId endpoint);

//
// Media Playback Cluster
//

/** @brief Media Playback Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMediaPlaybackClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Media Playback Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMediaPlaybackClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Media Playback Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMediaPlaybackClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Media Playback Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMediaPlaybackClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Media Playback Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMediaPlaybackClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                          EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                          EmberStatus status);

/** @brief Media Playback Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMediaPlaybackClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                          EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                          EmberStatus status);

/** @brief Media Playback Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterMediaPlaybackClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                            EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Media Playback Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterMediaPlaybackClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                            EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Media Playback Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMediaPlaybackClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Media Playback Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMediaPlaybackClusterClientTickCallback(chip::EndpointId endpoint);

//
// Media Input Cluster
//

/** @brief Media Input Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMediaInputClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Media Input Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMediaInputClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Media Input Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMediaInputClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Media Input Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMediaInputClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Media Input Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMediaInputClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Media Input Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMediaInputClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                       uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Media Input Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterMediaInputClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Media Input Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterMediaInputClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                         EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Media Input Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMediaInputClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Media Input Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMediaInputClusterClientTickCallback(chip::EndpointId endpoint);

//
// Low Power Cluster
//

/** @brief Low Power Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLowPowerClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Low Power Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfLowPowerClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Low Power Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterLowPowerClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Low Power Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterLowPowerClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Low Power Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfLowPowerClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                     uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Low Power Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfLowPowerClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                     uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Low Power Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterLowPowerClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                       EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Low Power Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterLowPowerClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                       EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Low Power Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfLowPowerClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Low Power Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfLowPowerClusterClientTickCallback(chip::EndpointId endpoint);

//
// Keypad Input Cluster
//

/** @brief Keypad Input Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfKeypadInputClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Keypad Input Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfKeypadInputClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Keypad Input Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterKeypadInputClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Keypad Input Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterKeypadInputClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Keypad Input Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfKeypadInputClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Keypad Input Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfKeypadInputClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Keypad Input Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterKeypadInputClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Keypad Input Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterKeypadInputClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Keypad Input Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfKeypadInputClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Keypad Input Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfKeypadInputClusterClientTickCallback(chip::EndpointId endpoint);

//
// Content Launcher Cluster
//

/** @brief Content Launcher Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfContentLauncherClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Content Launcher Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfContentLauncherClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Content Launcher Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterContentLauncherClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Content Launcher Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterContentLauncherClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Content Launcher Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfContentLauncherClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                            EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                            EmberStatus status);

/** @brief Content Launcher Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfContentLauncherClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                            EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                            EmberStatus status);

/** @brief Content Launcher Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterContentLauncherClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                              EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Content Launcher Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterContentLauncherClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                              EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Content Launcher Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfContentLauncherClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Content Launcher Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfContentLauncherClusterClientTickCallback(chip::EndpointId endpoint);

//
// Audio Output Cluster
//

/** @brief Audio Output Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAudioOutputClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Audio Output Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAudioOutputClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Audio Output Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAudioOutputClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Audio Output Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAudioOutputClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Audio Output Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAudioOutputClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Audio Output Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAudioOutputClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Audio Output Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterAudioOutputClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Audio Output Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterAudioOutputClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Audio Output Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAudioOutputClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Audio Output Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAudioOutputClusterClientTickCallback(chip::EndpointId endpoint);

//
// Application Launcher Cluster
//

/** @brief Application Launcher Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplicationLauncherClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Application Launcher Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplicationLauncherClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Application Launcher Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplicationLauncherClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Application Launcher Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplicationLauncherClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Application Launcher Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplicationLauncherClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Application Launcher Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplicationLauncherClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Application Launcher Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplicationLauncherClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Application Launcher Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplicationLauncherClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Application Launcher Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplicationLauncherClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Application Launcher Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplicationLauncherClusterClientTickCallback(chip::EndpointId endpoint);

//
// Application Basic Cluster
//

/** @brief Application Basic Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplicationBasicClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Application Basic Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplicationBasicClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Application Basic Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplicationBasicClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Application Basic Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplicationBasicClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Application Basic Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplicationBasicClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Application Basic Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplicationBasicClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                             EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                             EmberStatus status);

/** @brief Application Basic Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterApplicationBasicClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Application Basic Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterApplicationBasicClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                               EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Application Basic Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplicationBasicClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Application Basic Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplicationBasicClusterClientTickCallback(chip::EndpointId endpoint);

//
// Account Login Cluster
//

/** @brief Account Login Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAccountLoginClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Account Login Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfAccountLoginClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Account Login Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAccountLoginClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Account Login Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterAccountLoginClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Account Login Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAccountLoginClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Account Login Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfAccountLoginClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                         uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Account Login Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterAccountLoginClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Account Login Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterAccountLoginClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                           EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Account Login Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAccountLoginClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Account Login Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfAccountLoginClusterClientTickCallback(chip::EndpointId endpoint);

//
// Test Cluster Cluster
//

/** @brief Test Cluster Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTestClusterClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Test Cluster Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfTestClusterClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Test Cluster Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTestClusterClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Test Cluster Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterTestClusterClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Test Cluster Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTestClusterClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Test Cluster Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfTestClusterClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                        uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Test Cluster Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTestClusterClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Test Cluster Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterTestClusterClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                          EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Test Cluster Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTestClusterClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Test Cluster Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfTestClusterClusterClientTickCallback(chip::EndpointId endpoint);

//
// Messaging Cluster
//

/** @brief Messaging Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMessagingClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Messaging Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMessagingClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Messaging Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMessagingClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Messaging Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMessagingClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Messaging Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMessagingClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                      uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Messaging Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMessagingClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                      uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Messaging Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterMessagingClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                        EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Messaging Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterMessagingClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                        EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Messaging Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMessagingClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Messaging Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMessagingClusterClientTickCallback(chip::EndpointId endpoint);

//
// Appliance Identification Cluster
//

/** @brief Appliance Identification Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceIdentificationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Identification Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceIdentificationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Identification Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceIdentificationClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Identification Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceIdentificationClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Identification Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceIdentificationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Appliance Identification Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceIdentificationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Appliance Identification Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplianceIdentificationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Identification Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplianceIdentificationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Identification Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceIdentificationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Appliance Identification Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceIdentificationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Meter Identification Cluster
//

/** @brief Meter Identification Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMeterIdentificationClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Meter Identification Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfMeterIdentificationClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Meter Identification Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMeterIdentificationClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Meter Identification Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterMeterIdentificationClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Meter Identification Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMeterIdentificationClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Meter Identification Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfMeterIdentificationClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Meter Identification Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterMeterIdentificationClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Meter Identification Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterMeterIdentificationClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Meter Identification Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMeterIdentificationClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Meter Identification Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfMeterIdentificationClusterClientTickCallback(chip::EndpointId endpoint);

//
// Appliance Events and Alert Cluster
//

/** @brief Appliance Events and Alert Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceEventsAndAlertClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Events and Alert Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceEventsAndAlertClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Events and Alert Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceEventsAndAlertClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Events and Alert Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceEventsAndAlertClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Events and Alert Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceEventsAndAlertClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Appliance Events and Alert Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceEventsAndAlertClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                    EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                    EmberStatus status);

/** @brief Appliance Events and Alert Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplianceEventsAndAlertClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Events and Alert Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplianceEventsAndAlertClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Events and Alert Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceEventsAndAlertClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Appliance Events and Alert Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceEventsAndAlertClusterClientTickCallback(chip::EndpointId endpoint);

//
// Appliance Statistics Cluster
//

/** @brief Appliance Statistics Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceStatisticsClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Statistics Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfApplianceStatisticsClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Appliance Statistics Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceStatisticsClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Statistics Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterApplianceStatisticsClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Appliance Statistics Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceStatisticsClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Appliance Statistics Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfApplianceStatisticsClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                EmberStatus status);

/** @brief Appliance Statistics Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplianceStatisticsClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Statistics Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterApplianceStatisticsClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Appliance Statistics Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceStatisticsClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Appliance Statistics Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfApplianceStatisticsClusterClientTickCallback(chip::EndpointId endpoint);

//
// Electrical Measurement Cluster
//

/** @brief Electrical Measurement Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfElectricalMeasurementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Electrical Measurement Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfElectricalMeasurementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Electrical Measurement Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterElectricalMeasurementClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Electrical Measurement Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterElectricalMeasurementClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Electrical Measurement Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfElectricalMeasurementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                  EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                  EmberStatus status);

/** @brief Electrical Measurement Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfElectricalMeasurementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                  EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                  EmberStatus status);

/** @brief Electrical Measurement Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterElectricalMeasurementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Electrical Measurement Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterElectricalMeasurementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Electrical Measurement Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfElectricalMeasurementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Electrical Measurement Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfElectricalMeasurementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Binding Cluster
//

/** @brief Binding Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBindingClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Binding Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfBindingClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Binding Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBindingClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Binding Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterBindingClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Binding Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBindingClusterServerMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                    uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Binding Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfBindingClusterClientMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame,
                                                    uint16_t msgLen, uint8_t * message, EmberStatus status);

/** @brief Binding Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBindingClusterServerPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                      EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Binding Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status
MatterBindingClusterClientPreAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                      EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Binding Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBindingClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Binding Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfBindingClusterClientTickCallback(chip::EndpointId endpoint);

//
// Group Key Management Cluster
//

/** @brief Group Key Management Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGroupKeyManagementClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Group Key Management Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfGroupKeyManagementClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Group Key Management Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGroupKeyManagementClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Group Key Management Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterGroupKeyManagementClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Group Key Management Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGroupKeyManagementClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Group Key Management Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfGroupKeyManagementClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                               EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                               EmberStatus status);

/** @brief Group Key Management Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterGroupKeyManagementClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Group Key Management Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterGroupKeyManagementClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Group Key Management Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGroupKeyManagementClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Group Key Management Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfGroupKeyManagementClusterClientTickCallback(chip::EndpointId endpoint);

//
// Sample Mfg Specific Cluster Cluster
//

/** @brief Sample Mfg Specific Cluster Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSampleMfgSpecificClusterClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSampleMfgSpecificClusterClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSampleMfgSpecificClusterClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sample Mfg Specific Cluster Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSampleMfgSpecificClusterClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sample Mfg Specific Cluster Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSampleMfgSpecificClusterClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                     EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                     EmberStatus status);

/** @brief Sample Mfg Specific Cluster Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSampleMfgSpecificClusterClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                     EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                     EmberStatus status);

/** @brief Sample Mfg Specific Cluster Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSampleMfgSpecificClusterClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sample Mfg Specific Cluster Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSampleMfgSpecificClusterClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sample Mfg Specific Cluster Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSampleMfgSpecificClusterClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSampleMfgSpecificClusterClusterClientTickCallback(chip::EndpointId endpoint);

//
// Sample Mfg Specific Cluster 2 Cluster
//

/** @brief Sample Mfg Specific Cluster 2 Cluster Server Init
 *
 * Server Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSampleMfgSpecificCluster2ClusterServerInitCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster 2 Cluster Client Init
 *
 * Client Init
 *
 * @param endpoint    Endpoint that is being initialized
 */
void emberAfSampleMfgSpecificCluster2ClusterClientInitCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster 2 Cluster Server Attribute Changed
 *
 * Server Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSampleMfgSpecificCluster2ClusterServerAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sample Mfg Specific Cluster 2 Cluster Client Attribute Changed
 *
 * Client Attribute Changed
 *
 * @param attributePath Concrete attribute path that changed
 */
void MatterSampleMfgSpecificCluster2ClusterClientAttributeChangedCallback(const chip::app::ConcreteAttributePath & attributePath);

/** @brief Sample Mfg Specific Cluster 2 Cluster Server Message Sent
 *
 * Server Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSampleMfgSpecificCluster2ClusterServerMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                      EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                      EmberStatus status);

/** @brief Sample Mfg Specific Cluster 2 Cluster Client Message Sent
 *
 * Client Message Sent
 *
 * @param destination        The destination to which the message was sent
 * @param apsFrame           The APS frame for the message
 * @param msgLen             The length of the message
 * @param message            The message that was sent
 * @param status             The status of the sent message
 */
void emberAfSampleMfgSpecificCluster2ClusterClientMessageSentCallback(const chip::MessageSendDestination & destination,
                                                                      EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message,
                                                                      EmberStatus status);

/** @brief Sample Mfg Specific Cluster 2 Cluster Server Pre Attribute Changed
 *
 * Server Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSampleMfgSpecificCluster2ClusterServerPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sample Mfg Specific Cluster 2 Cluster Client Pre Attribute Changed
 *
 * Client Pre Attribute Changed
 *
 * @param attributePath Concrete attribute path to be changed
 * @param attributeType Attribute type
 * @param size          Attribute size
 * @param value         Attribute value
 */
chip::Protocols::InteractionModel::Status MatterSampleMfgSpecificCluster2ClusterClientPreAttributeChangedCallback(
    const chip::app::ConcreteAttributePath & attributePath, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);

/** @brief Sample Mfg Specific Cluster 2 Cluster Server Tick
 *
 * Server Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSampleMfgSpecificCluster2ClusterServerTickCallback(chip::EndpointId endpoint);

/** @brief Sample Mfg Specific Cluster 2 Cluster Client Tick
 *
 * Client Tick
 *
 * @param endpoint  Endpoint that is being served
 */
void emberAfSampleMfgSpecificCluster2ClusterClientTickCallback(chip::EndpointId endpoint);

// Cluster Commands Callback

/**
 * @brief Identify Cluster Identify Command callback (from client)
 */
bool emberAfIdentifyClusterIdentifyCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::Identify::Commands::Identify::DecodableType & commandData);
/**
 * @brief Identify Cluster IdentifyQueryResponse Command callback (from server)
 */
bool emberAfIdentifyClusterIdentifyQueryResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint16_t timeout);
/**
 * @brief Identify Cluster IdentifyQuery Command callback (from client)
 */
bool emberAfIdentifyClusterIdentifyQueryCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Identify::Commands::IdentifyQuery::DecodableType & commandData);
/**
 * @brief Identify Cluster TriggerEffect Command callback (from client)
 */
bool emberAfIdentifyClusterTriggerEffectCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Identify::Commands::TriggerEffect::DecodableType & commandData);
/**
 * @brief Groups Cluster AddGroup Command callback (from client)
 */
bool emberAfGroupsClusterAddGroupCallback(chip::app::CommandHandler * commandObj,
                                          const chip::app::ConcreteCommandPath & commandPath,
                                          const chip::app::Clusters::Groups::Commands::AddGroup::DecodableType & commandData);
/**
 * @brief Groups Cluster AddGroupResponse Command callback (from server)
 */
bool emberAfGroupsClusterAddGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status,
                                                  uint16_t groupId);
/**
 * @brief Groups Cluster ViewGroup Command callback (from client)
 */
bool emberAfGroupsClusterViewGroupCallback(chip::app::CommandHandler * commandObj,
                                           const chip::app::ConcreteCommandPath & commandPath,
                                           const chip::app::Clusters::Groups::Commands::ViewGroup::DecodableType & commandData);
/**
 * @brief Groups Cluster ViewGroupResponse Command callback (from server)
 */
bool emberAfGroupsClusterViewGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status,
                                                   uint16_t groupId, uint8_t * groupName);
/**
 * @brief Groups Cluster GetGroupMembership Command callback (from client)
 */
bool emberAfGroupsClusterGetGroupMembershipCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Groups::Commands::GetGroupMembership::DecodableType & commandData);
/**
 * @brief Groups Cluster GetGroupMembershipResponse Command callback (from server)
 */
bool emberAfGroupsClusterGetGroupMembershipResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t capacity, uint8_t groupCount,
                                                            /* TYPE WARNING: array array defaults to */ uint8_t * groupList);
/**
 * @brief Groups Cluster RemoveGroup Command callback (from client)
 */
bool emberAfGroupsClusterRemoveGroupCallback(chip::app::CommandHandler * commandObj,
                                             const chip::app::ConcreteCommandPath & commandPath,
                                             const chip::app::Clusters::Groups::Commands::RemoveGroup::DecodableType & commandData);
/**
 * @brief Groups Cluster RemoveGroupResponse Command callback (from server)
 */
bool emberAfGroupsClusterRemoveGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                     uint8_t status, uint16_t groupId);
/**
 * @brief Groups Cluster RemoveAllGroups Command callback (from client)
 */
bool emberAfGroupsClusterRemoveAllGroupsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Groups::Commands::RemoveAllGroups::DecodableType & commandData);
/**
 * @brief Groups Cluster AddGroupIfIdentifying Command callback (from client)
 */
bool emberAfGroupsClusterAddGroupIfIdentifyingCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Groups::Commands::AddGroupIfIdentifying::DecodableType & commandData);
/**
 * @brief Scenes Cluster AddScene Command callback (from client)
 */
bool emberAfScenesClusterAddSceneCallback(chip::app::CommandHandler * commandObj,
                                          const chip::app::ConcreteCommandPath & commandPath,
                                          const chip::app::Clusters::Scenes::Commands::AddScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster AddSceneResponse Command callback (from server)
 */
bool emberAfScenesClusterAddSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status,
                                                  uint16_t groupId, uint8_t sceneId);
/**
 * @brief Scenes Cluster ViewScene Command callback (from client)
 */
bool emberAfScenesClusterViewSceneCallback(chip::app::CommandHandler * commandObj,
                                           const chip::app::ConcreteCommandPath & commandPath,
                                           const chip::app::Clusters::Scenes::Commands::ViewScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster ViewSceneResponse Command callback (from server)
 */
bool emberAfScenesClusterViewSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status,
                                                   uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName,
                                                   /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
/**
 * @brief Scenes Cluster RemoveScene Command callback (from client)
 */
bool emberAfScenesClusterRemoveSceneCallback(chip::app::CommandHandler * commandObj,
                                             const chip::app::ConcreteCommandPath & commandPath,
                                             const chip::app::Clusters::Scenes::Commands::RemoveScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster RemoveSceneResponse Command callback (from server)
 */
bool emberAfScenesClusterRemoveSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                     uint8_t status, uint16_t groupId, uint8_t sceneId);
/**
 * @brief Scenes Cluster RemoveAllScenes Command callback (from client)
 */
bool emberAfScenesClusterRemoveAllScenesCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Scenes::Commands::RemoveAllScenes::DecodableType & commandData);
/**
 * @brief Scenes Cluster RemoveAllScenesResponse Command callback (from server)
 */
bool emberAfScenesClusterRemoveAllScenesResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint8_t status, uint16_t groupId);
/**
 * @brief Scenes Cluster StoreScene Command callback (from client)
 */
bool emberAfScenesClusterStoreSceneCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::Scenes::Commands::StoreScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster StoreSceneResponse Command callback (from server)
 */
bool emberAfScenesClusterStoreSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                    uint8_t status, uint16_t groupId, uint8_t sceneId);
/**
 * @brief Scenes Cluster RecallScene Command callback (from client)
 */
bool emberAfScenesClusterRecallSceneCallback(chip::app::CommandHandler * commandObj,
                                             const chip::app::ConcreteCommandPath & commandPath,
                                             const chip::app::Clusters::Scenes::Commands::RecallScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster GetSceneMembership Command callback (from client)
 */
bool emberAfScenesClusterGetSceneMembershipCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Scenes::Commands::GetSceneMembership::DecodableType & commandData);
/**
 * @brief Scenes Cluster GetSceneMembershipResponse Command callback (from server)
 */
bool emberAfScenesClusterGetSceneMembershipResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t status, uint8_t capacity, uint16_t groupId, uint8_t sceneCount,
                                                            /* TYPE WARNING: array array defaults to */ uint8_t * sceneList);
/**
 * @brief Scenes Cluster EnhancedAddScene Command callback (from client)
 */
bool emberAfScenesClusterEnhancedAddSceneCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Scenes::Commands::EnhancedAddScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster EnhancedAddSceneResponse Command callback (from server)
 */
bool emberAfScenesClusterEnhancedAddSceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          uint8_t status, uint16_t groupId, uint8_t sceneId);
/**
 * @brief Scenes Cluster EnhancedViewScene Command callback (from client)
 */
bool emberAfScenesClusterEnhancedViewSceneCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Scenes::Commands::EnhancedViewScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster EnhancedViewSceneResponse Command callback (from server)
 */
bool emberAfScenesClusterEnhancedViewSceneResponseCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status, uint16_t groupId, uint8_t sceneId,
    uint16_t transitionTime, uint8_t * sceneName, /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
/**
 * @brief Scenes Cluster CopyScene Command callback (from client)
 */
bool emberAfScenesClusterCopySceneCallback(chip::app::CommandHandler * commandObj,
                                           const chip::app::ConcreteCommandPath & commandPath,
                                           const chip::app::Clusters::Scenes::Commands::CopyScene::DecodableType & commandData);
/**
 * @brief Scenes Cluster CopySceneResponse Command callback (from server)
 */
bool emberAfScenesClusterCopySceneResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status,
                                                   uint16_t groupIdFrom, uint8_t sceneIdFrom);
/**
 * @brief On/Off Cluster Off Command callback (from client)
 */
bool emberAfOnOffClusterOffCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                    const chip::app::Clusters::OnOff::Commands::Off::DecodableType & commandData);
/**
 * @brief On/Off Cluster SampleMfgSpecificOffWithTransition Command callback (from client)
 */
bool emberAfOnOffClusterSampleMfgSpecificOffWithTransitionCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::SampleMfgSpecificOffWithTransition::DecodableType & commandData);
/**
 * @brief On/Off Cluster On Command callback (from client)
 */
bool emberAfOnOffClusterOnCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                   const chip::app::Clusters::OnOff::Commands::On::DecodableType & commandData);
/**
 * @brief On/Off Cluster SampleMfgSpecificOnWithTransition Command callback (from client)
 */
bool emberAfOnOffClusterSampleMfgSpecificOnWithTransitionCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::SampleMfgSpecificOnWithTransition::DecodableType & commandData);
/**
 * @brief On/Off Cluster SampleMfgSpecificOnWithTransition2 Command callback (from client)
 */
bool emberAfOnOffClusterSampleMfgSpecificOnWithTransition2Callback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::SampleMfgSpecificOnWithTransition2::DecodableType & commandData);
/**
 * @brief On/Off Cluster Toggle Command callback (from client)
 */
bool emberAfOnOffClusterToggleCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                       const chip::app::Clusters::OnOff::Commands::Toggle::DecodableType & commandData);
/**
 * @brief On/Off Cluster SampleMfgSpecificToggleWithTransition Command callback (from client)
 */
bool emberAfOnOffClusterSampleMfgSpecificToggleWithTransitionCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::SampleMfgSpecificToggleWithTransition::DecodableType & commandData);
/**
 * @brief On/Off Cluster SampleMfgSpecificToggleWithTransition2 Command callback (from client)
 */
bool emberAfOnOffClusterSampleMfgSpecificToggleWithTransition2Callback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::SampleMfgSpecificToggleWithTransition2::DecodableType & commandData);
/**
 * @brief On/Off Cluster OffWithEffect Command callback (from client)
 */
bool emberAfOnOffClusterOffWithEffectCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::OffWithEffect::DecodableType & commandData);
/**
 * @brief On/Off Cluster OnWithRecallGlobalScene Command callback (from client)
 */
bool emberAfOnOffClusterOnWithRecallGlobalSceneCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::OnWithRecallGlobalScene::DecodableType & commandData);
/**
 * @brief On/Off Cluster OnWithTimedOff Command callback (from client)
 */
bool emberAfOnOffClusterOnWithTimedOffCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OnOff::Commands::OnWithTimedOff::DecodableType & commandData);
/**
 * @brief Level Control Cluster MoveToLevel Command callback (from client)
 */
bool emberAfLevelControlClusterMoveToLevelCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::LevelControl::Commands::MoveToLevel::DecodableType & commandData);
/**
 * @brief Level Control Cluster Move Command callback (from client)
 */
bool emberAfLevelControlClusterMoveCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::LevelControl::Commands::Move::DecodableType & commandData);
/**
 * @brief Level Control Cluster Step Command callback (from client)
 */
bool emberAfLevelControlClusterStepCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::LevelControl::Commands::Step::DecodableType & commandData);
/**
 * @brief Level Control Cluster Stop Command callback (from client)
 */
bool emberAfLevelControlClusterStopCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::LevelControl::Commands::Stop::DecodableType & commandData);
/**
 * @brief Level Control Cluster MoveToLevelWithOnOff Command callback (from client)
 */
bool emberAfLevelControlClusterMoveToLevelWithOnOffCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::LevelControl::Commands::MoveToLevelWithOnOff::DecodableType & commandData);
/**
 * @brief Level Control Cluster MoveWithOnOff Command callback (from client)
 */
bool emberAfLevelControlClusterMoveWithOnOffCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::LevelControl::Commands::MoveWithOnOff::DecodableType & commandData);
/**
 * @brief Level Control Cluster StepWithOnOff Command callback (from client)
 */
bool emberAfLevelControlClusterStepWithOnOffCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::LevelControl::Commands::StepWithOnOff::DecodableType & commandData);
/**
 * @brief Level Control Cluster StopWithOnOff Command callback (from client)
 */
bool emberAfLevelControlClusterStopWithOnOffCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::LevelControl::Commands::StopWithOnOff::DecodableType & commandData);
/**
 * @brief Alarms Cluster ResetAlarm Command callback (from client)
 */
bool emberAfAlarmsClusterResetAlarmCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::Alarms::Commands::ResetAlarm::DecodableType & commandData);
/**
 * @brief Alarms Cluster Alarm Command callback (from server)
 */
bool emberAfAlarmsClusterAlarmCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t alarmCode,
                                       chip::ClusterId clusterId);
/**
 * @brief Alarms Cluster ResetAllAlarms Command callback (from client)
 */
bool emberAfAlarmsClusterResetAllAlarmsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Alarms::Commands::ResetAllAlarms::DecodableType & commandData);
/**
 * @brief Alarms Cluster GetAlarmResponse Command callback (from server)
 */
bool emberAfAlarmsClusterGetAlarmResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status,
                                                  uint8_t alarmCode, chip::ClusterId clusterId, uint32_t timeStamp);
/**
 * @brief Alarms Cluster GetAlarm Command callback (from client)
 */
bool emberAfAlarmsClusterGetAlarmCallback(chip::app::CommandHandler * commandObj,
                                          const chip::app::ConcreteCommandPath & commandPath,
                                          const chip::app::Clusters::Alarms::Commands::GetAlarm::DecodableType & commandData);
/**
 * @brief Alarms Cluster ResetAlarmLog Command callback (from client)
 */
bool emberAfAlarmsClusterResetAlarmLogCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Alarms::Commands::ResetAlarmLog::DecodableType & commandData);
/**
 * @brief Power Profile Cluster PowerProfileRequest Command callback (from client)
 */
bool emberAfPowerProfileClusterPowerProfileRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::PowerProfileRequest::DecodableType & commandData);
/**
 * @brief Power Profile Cluster PowerProfileNotification Command callback (from server)
 */
bool emberAfPowerProfileClusterPowerProfileNotificationCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t totalProfileNum, uint8_t powerProfileId,
    uint8_t numOfTransferredPhases, /* TYPE WARNING: array array defaults to */ uint8_t * transferredPhases);
/**
 * @brief Power Profile Cluster PowerProfileStateRequest Command callback (from client)
 */
bool emberAfPowerProfileClusterPowerProfileStateRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::PowerProfileStateRequest::DecodableType & commandData);
/**
 * @brief Power Profile Cluster PowerProfileResponse Command callback (from server)
 */
bool emberAfPowerProfileClusterPowerProfileResponseCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t totalProfileNum, uint8_t powerProfileId,
    uint8_t numOfTransferredPhases, /* TYPE WARNING: array array defaults to */ uint8_t * transferredPhases);
/**
 * @brief Power Profile Cluster GetPowerProfilePriceResponse Command callback (from client)
 */
bool emberAfPowerProfileClusterGetPowerProfilePriceResponseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::GetPowerProfilePriceResponse::DecodableType & commandData);
/**
 * @brief Power Profile Cluster PowerProfileStateResponse Command callback (from server)
 */
bool emberAfPowerProfileClusterPowerProfileStateResponseCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t powerProfileCount,
    /* TYPE WARNING: array array defaults to */ uint8_t * powerProfileRecords);
/**
 * @brief Power Profile Cluster GetOverallSchedulePriceResponse Command callback (from client)
 */
bool emberAfPowerProfileClusterGetOverallSchedulePriceResponseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::GetOverallSchedulePriceResponse::DecodableType & commandData);
/**
 * @brief Power Profile Cluster GetPowerProfilePrice Command callback (from server)
 */
bool emberAfPowerProfileClusterGetPowerProfilePriceCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t powerProfileId);
/**
 * @brief Power Profile Cluster EnergyPhasesScheduleNotification Command callback (from client)
 */
bool emberAfPowerProfileClusterEnergyPhasesScheduleNotificationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::EnergyPhasesScheduleNotification::DecodableType & commandData);
/**
 * @brief Power Profile Cluster PowerProfilesStateNotification Command callback (from server)
 */
bool emberAfPowerProfileClusterPowerProfilesStateNotificationCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t powerProfileCount,
    /* TYPE WARNING: array array defaults to */ uint8_t * powerProfileRecords);
/**
 * @brief Power Profile Cluster EnergyPhasesScheduleResponse Command callback (from client)
 */
bool emberAfPowerProfileClusterEnergyPhasesScheduleResponseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::EnergyPhasesScheduleResponse::DecodableType & commandData);
/**
 * @brief Power Profile Cluster GetOverallSchedulePrice Command callback (from server)
 */
bool emberAfPowerProfileClusterGetOverallSchedulePriceCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief Power Profile Cluster PowerProfileScheduleConstraintsRequest Command callback (from client)
 */
bool emberAfPowerProfileClusterPowerProfileScheduleConstraintsRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::PowerProfileScheduleConstraintsRequest::DecodableType & commandData);
/**
 * @brief Power Profile Cluster EnergyPhasesScheduleRequest Command callback (from server)
 */
bool emberAfPowerProfileClusterEnergyPhasesScheduleRequestCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                   uint8_t powerProfileId);
/**
 * @brief Power Profile Cluster EnergyPhasesScheduleStateRequest Command callback (from client)
 */
bool emberAfPowerProfileClusterEnergyPhasesScheduleStateRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::EnergyPhasesScheduleStateRequest::DecodableType & commandData);
/**
 * @brief Power Profile Cluster EnergyPhasesScheduleStateResponse Command callback (from server)
 */
bool emberAfPowerProfileClusterEnergyPhasesScheduleStateResponseCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t powerProfileId, uint8_t numOfScheduledPhases,
    /* TYPE WARNING: array array defaults to */ uint8_t * scheduledPhases);
/**
 * @brief Power Profile Cluster GetPowerProfilePriceExtendedResponse Command callback (from client)
 */
bool emberAfPowerProfileClusterGetPowerProfilePriceExtendedResponseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PowerProfile::Commands::GetPowerProfilePriceExtendedResponse::DecodableType & commandData);
/**
 * @brief Power Profile Cluster EnergyPhasesScheduleStateNotification Command callback (from server)
 */
bool emberAfPowerProfileClusterEnergyPhasesScheduleStateNotificationCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t powerProfileId, uint8_t numOfScheduledPhases,
    /* TYPE WARNING: array array defaults to */ uint8_t * scheduledPhases);
/**
 * @brief Power Profile Cluster PowerProfileScheduleConstraintsNotification Command callback (from server)
 */
bool emberAfPowerProfileClusterPowerProfileScheduleConstraintsNotificationCallback(chip::EndpointId endpoint,
                                                                                   chip::app::CommandSender * commandObj,
                                                                                   uint8_t powerProfileId, uint16_t startAfter,
                                                                                   uint16_t stopBefore);
/**
 * @brief Power Profile Cluster PowerProfileScheduleConstraintsResponse Command callback (from server)
 */
bool emberAfPowerProfileClusterPowerProfileScheduleConstraintsResponseCallback(chip::EndpointId endpoint,
                                                                               chip::app::CommandSender * commandObj,
                                                                               uint8_t powerProfileId, uint16_t startAfter,
                                                                               uint16_t stopBefore);
/**
 * @brief Power Profile Cluster GetPowerProfilePriceExtended Command callback (from server)
 */
bool emberAfPowerProfileClusterGetPowerProfilePriceExtendedCallback(chip::EndpointId endpoint,
                                                                    chip::app::CommandSender * commandObj, uint8_t options,
                                                                    uint8_t powerProfileId, uint16_t powerProfileStartTime);
/**
 * @brief Appliance Control Cluster ExecutionOfACommand Command callback (from client)
 */
bool emberAfApplianceControlClusterExecutionOfACommandCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceControl::Commands::ExecutionOfACommand::DecodableType & commandData);
/**
 * @brief Appliance Control Cluster SignalStateResponse Command callback (from server)
 */
bool emberAfApplianceControlClusterSignalStateResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                               uint8_t applianceStatus, uint8_t remoteEnableFlagsAndDeviceStatus2,
                                                               uint8_t applianceStatus2);
/**
 * @brief Appliance Control Cluster SignalState Command callback (from client)
 */
bool emberAfApplianceControlClusterSignalStateCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceControl::Commands::SignalState::DecodableType & commandData);
/**
 * @brief Appliance Control Cluster SignalStateNotification Command callback (from server)
 */
bool emberAfApplianceControlClusterSignalStateNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                   uint8_t applianceStatus,
                                                                   uint8_t remoteEnableFlagsAndDeviceStatus2,
                                                                   uint8_t applianceStatus2);
/**
 * @brief Appliance Control Cluster WriteFunctions Command callback (from client)
 */
bool emberAfApplianceControlClusterWriteFunctionsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceControl::Commands::WriteFunctions::DecodableType & commandData);
/**
 * @brief Appliance Control Cluster OverloadPauseResume Command callback (from client)
 */
bool emberAfApplianceControlClusterOverloadPauseResumeCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceControl::Commands::OverloadPauseResume::DecodableType & commandData);
/**
 * @brief Appliance Control Cluster OverloadPause Command callback (from client)
 */
bool emberAfApplianceControlClusterOverloadPauseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceControl::Commands::OverloadPause::DecodableType & commandData);
/**
 * @brief Appliance Control Cluster OverloadWarning Command callback (from client)
 */
bool emberAfApplianceControlClusterOverloadWarningCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceControl::Commands::OverloadWarning::DecodableType & commandData);
/**
 * @brief Poll Control Cluster CheckIn Command callback (from server)
 */
bool emberAfPollControlClusterCheckInCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief Poll Control Cluster CheckInResponse Command callback (from client)
 */
bool emberAfPollControlClusterCheckInResponseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PollControl::Commands::CheckInResponse::DecodableType & commandData);
/**
 * @brief Poll Control Cluster FastPollStop Command callback (from client)
 */
bool emberAfPollControlClusterFastPollStopCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PollControl::Commands::FastPollStop::DecodableType & commandData);
/**
 * @brief Poll Control Cluster SetLongPollInterval Command callback (from client)
 */
bool emberAfPollControlClusterSetLongPollIntervalCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PollControl::Commands::SetLongPollInterval::DecodableType & commandData);
/**
 * @brief Poll Control Cluster SetShortPollInterval Command callback (from client)
 */
bool emberAfPollControlClusterSetShortPollIntervalCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::PollControl::Commands::SetShortPollInterval::DecodableType & commandData);
/**
 * @brief Basic Cluster StartUp Command callback (from server)
 */
bool emberAfBasicClusterStartUpCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief Basic Cluster MfgSpecificPing Command callback (from client)
 */
bool emberAfBasicClusterMfgSpecificPingCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Basic::Commands::MfgSpecificPing::DecodableType & commandData);
/**
 * @brief Basic Cluster ShutDown Command callback (from server)
 */
bool emberAfBasicClusterShutDownCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief Basic Cluster Leave Command callback (from server)
 */
bool emberAfBasicClusterLeaveCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief OTA Software Update Provider Cluster QueryImage Command callback (from client)
 */
bool emberAfOtaSoftwareUpdateProviderClusterQueryImageCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OtaSoftwareUpdateProvider::Commands::QueryImage::DecodableType & commandData);
/**
 * @brief OTA Software Update Provider Cluster ApplyUpdateRequest Command callback (from client)
 */
bool emberAfOtaSoftwareUpdateProviderClusterApplyUpdateRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OtaSoftwareUpdateProvider::Commands::ApplyUpdateRequest::DecodableType & commandData);
/**
 * @brief OTA Software Update Provider Cluster NotifyUpdateApplied Command callback (from client)
 */
bool emberAfOtaSoftwareUpdateProviderClusterNotifyUpdateAppliedCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OtaSoftwareUpdateProvider::Commands::NotifyUpdateApplied::DecodableType & commandData);
/**
 * @brief OTA Software Update Provider Cluster QueryImageResponse Command callback (from server)
 */
bool emberAfOtaSoftwareUpdateProviderClusterQueryImageResponseCallback(chip::EndpointId endpoint,
                                                                       chip::app::CommandSender * commandObj, uint8_t status,
                                                                       uint32_t delayedActionTime, uint8_t * imageURI,
                                                                       uint32_t softwareVersion, uint8_t * softwareVersionString,
                                                                       chip::ByteSpan updateToken, bool userConsentNeeded,
                                                                       chip::ByteSpan metadataForRequestor);
/**
 * @brief OTA Software Update Provider Cluster ApplyUpdateRequestResponse Command callback (from server)
 */
bool emberAfOtaSoftwareUpdateProviderClusterApplyUpdateRequestResponseCallback(chip::EndpointId endpoint,
                                                                               chip::app::CommandSender * commandObj,
                                                                               uint8_t action, uint32_t delayedActionTime);
/**
 * @brief OTA Software Update Requestor Cluster AnnounceOtaProvider Command callback (from client)
 */
bool emberAfOtaSoftwareUpdateRequestorClusterAnnounceOtaProviderCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OtaSoftwareUpdateRequestor::Commands::AnnounceOtaProvider::DecodableType & commandData);
/**
 * @brief General Commissioning Cluster ArmFailSafe Command callback (from client)
 */
bool emberAfGeneralCommissioningClusterArmFailSafeCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::GeneralCommissioning::Commands::ArmFailSafe::DecodableType & commandData);
/**
 * @brief General Commissioning Cluster ArmFailSafeResponse Command callback (from server)
 */
bool emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                   uint8_t errorCode, uint8_t * debugText);
/**
 * @brief General Commissioning Cluster SetRegulatoryConfig Command callback (from client)
 */
bool emberAfGeneralCommissioningClusterSetRegulatoryConfigCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::GeneralCommissioning::Commands::SetRegulatoryConfig::DecodableType & commandData);
/**
 * @brief General Commissioning Cluster SetRegulatoryConfigResponse Command callback (from server)
 */
bool emberAfGeneralCommissioningClusterSetRegulatoryConfigResponseCallback(chip::EndpointId endpoint,
                                                                           chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                           uint8_t * debugText);
/**
 * @brief General Commissioning Cluster CommissioningComplete Command callback (from client)
 */
bool emberAfGeneralCommissioningClusterCommissioningCompleteCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::GeneralCommissioning::Commands::CommissioningComplete::DecodableType & commandData);
/**
 * @brief General Commissioning Cluster CommissioningCompleteResponse Command callback (from server)
 */
bool emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(chip::EndpointId endpoint,
                                                                             chip::app::CommandSender * commandObj,
                                                                             uint8_t errorCode, uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster ScanNetworks Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterScanNetworksCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::ScanNetworks::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster ScanNetworksResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterScanNetworksResponseCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t errorCode, uint8_t * debugText,
    /* TYPE WARNING: array array defaults to */ uint8_t * wifiScanResults,
    /* TYPE WARNING: array array defaults to */ uint8_t * threadScanResults);
/**
 * @brief Network Commissioning Cluster AddWiFiNetwork Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterAddWiFiNetworkCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::AddWiFiNetwork::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster AddWiFiNetworkResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterAddWiFiNetworkResponseCallback(chip::EndpointId endpoint,
                                                                      chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                      uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster UpdateWiFiNetwork Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterUpdateWiFiNetworkCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::UpdateWiFiNetwork::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster UpdateWiFiNetworkResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterUpdateWiFiNetworkResponseCallback(chip::EndpointId endpoint,
                                                                         chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                         uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster AddThreadNetwork Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterAddThreadNetworkCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::AddThreadNetwork::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster AddThreadNetworkResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterAddThreadNetworkResponseCallback(chip::EndpointId endpoint,
                                                                        chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                        uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster UpdateThreadNetwork Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterUpdateThreadNetworkCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::UpdateThreadNetwork::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster UpdateThreadNetworkResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterUpdateThreadNetworkResponseCallback(chip::EndpointId endpoint,
                                                                           chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                           uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster RemoveNetwork Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterRemoveNetworkCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::RemoveNetwork::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster RemoveNetworkResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterRemoveNetworkResponseCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                     uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster EnableNetwork Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterEnableNetworkCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::EnableNetwork::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster EnableNetworkResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterEnableNetworkResponseCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                     uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster DisableNetwork Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterDisableNetworkCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::DisableNetwork::DecodableType & commandData);
/**
 * @brief Network Commissioning Cluster DisableNetworkResponse Command callback (from server)
 */
bool emberAfNetworkCommissioningClusterDisableNetworkResponseCallback(chip::EndpointId endpoint,
                                                                      chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                      uint8_t * debugText);
/**
 * @brief Network Commissioning Cluster GetLastNetworkCommissioningResult Command callback (from client)
 */
bool emberAfNetworkCommissioningClusterGetLastNetworkCommissioningResultCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::NetworkCommissioning::Commands::GetLastNetworkCommissioningResult::DecodableType & commandData);
/**
 * @brief Diagnostic Logs Cluster RetrieveLogsRequest Command callback (from client)
 */
bool emberAfDiagnosticLogsClusterRetrieveLogsRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DiagnosticLogs::Commands::RetrieveLogsRequest::DecodableType & commandData);
/**
 * @brief Diagnostic Logs Cluster RetrieveLogsResponse Command callback (from server)
 */
bool emberAfDiagnosticLogsClusterRetrieveLogsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t status, chip::ByteSpan content, uint32_t timeStamp,
                                                              uint32_t timeSinceBoot);
/**
 * @brief Software Diagnostics Cluster ResetWatermarks Command callback (from client)
 */
bool emberAfSoftwareDiagnosticsClusterResetWatermarksCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::SoftwareDiagnostics::Commands::ResetWatermarks::DecodableType & commandData);
/**
 * @brief Thread Network Diagnostics Cluster ResetCounts Command callback (from client)
 */
bool emberAfThreadNetworkDiagnosticsClusterResetCountsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ThreadNetworkDiagnostics::Commands::ResetCounts::DecodableType & commandData);
/**
 * @brief WiFi Network Diagnostics Cluster ResetCounts Command callback (from client)
 */
bool emberAfWiFiNetworkDiagnosticsClusterResetCountsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WiFiNetworkDiagnostics::Commands::ResetCounts::DecodableType & commandData);
/**
 * @brief Ethernet Network Diagnostics Cluster ResetCounts Command callback (from client)
 */
bool emberAfEthernetNetworkDiagnosticsClusterResetCountsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::EthernetNetworkDiagnostics::Commands::ResetCounts::DecodableType & commandData);
/**
 * @brief Bridged Device Basic Cluster StartUp Command callback (from server)
 */
bool emberAfBridgedDeviceBasicClusterStartUpCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief Bridged Device Basic Cluster ShutDown Command callback (from server)
 */
bool emberAfBridgedDeviceBasicClusterShutDownCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief Bridged Device Basic Cluster Leave Command callback (from server)
 */
bool emberAfBridgedDeviceBasicClusterLeaveCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief Bridged Device Basic Cluster ReachableChanged Command callback (from server)
 */
bool emberAfBridgedDeviceBasicClusterReachableChangedCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief AdministratorCommissioning Cluster OpenCommissioningWindow Command callback (from client)
 */
bool emberAfAdministratorCommissioningClusterOpenCommissioningWindowCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::AdministratorCommissioning::Commands::OpenCommissioningWindow::DecodableType & commandData);
/**
 * @brief AdministratorCommissioning Cluster OpenBasicCommissioningWindow Command callback (from client)
 */
bool emberAfAdministratorCommissioningClusterOpenBasicCommissioningWindowCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::AdministratorCommissioning::Commands::OpenBasicCommissioningWindow::DecodableType & commandData);
/**
 * @brief AdministratorCommissioning Cluster RevokeCommissioning Command callback (from client)
 */
bool emberAfAdministratorCommissioningClusterRevokeCommissioningCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster AttestationRequest Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterAttestationRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::AttestationRequest::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster AttestationResponse Command callback (from server)
 */
bool emberAfOperationalCredentialsClusterAttestationResponseCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandSender * commandObj,
                                                                     chip::ByteSpan AttestationElements, chip::ByteSpan Signature);
/**
 * @brief Operational Credentials Cluster CertificateChainRequest Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterCertificateChainRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::CertificateChainRequest::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster CertificateChainResponse Command callback (from server)
 */
bool emberAfOperationalCredentialsClusterCertificateChainResponseCallback(chip::EndpointId endpoint,
                                                                          chip::app::CommandSender * commandObj,
                                                                          chip::ByteSpan Certificate);
/**
 * @brief Operational Credentials Cluster OpCSRRequest Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterOpCSRRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::OpCSRRequest::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster OpCSRResponse Command callback (from server)
 */
bool emberAfOperationalCredentialsClusterOpCSRResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                               chip::ByteSpan NOCSRElements, chip::ByteSpan AttestationSignature);
/**
 * @brief Operational Credentials Cluster AddNOC Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterAddNOCCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::AddNOC::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster UpdateNOC Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterUpdateNOCCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::UpdateNOC::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster NOCResponse Command callback (from server)
 */
bool emberAfOperationalCredentialsClusterNOCResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                             uint8_t StatusCode, uint8_t FabricIndex, chip::ByteSpan DebugText);
/**
 * @brief Operational Credentials Cluster UpdateFabricLabel Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterUpdateFabricLabelCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::UpdateFabricLabel::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster RemoveFabric Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterRemoveFabricCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::RemoveFabric::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster AddTrustedRootCertificate Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterAddTrustedRootCertificateCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::AddTrustedRootCertificate::DecodableType & commandData);
/**
 * @brief Operational Credentials Cluster RemoveTrustedRootCertificate Command callback (from client)
 */
bool emberAfOperationalCredentialsClusterRemoveTrustedRootCertificateCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::OperationalCredentials::Commands::RemoveTrustedRootCertificate::DecodableType & commandData);
/**
 * @brief Door Lock Cluster LockDoor Command callback (from client)
 */
bool emberAfDoorLockClusterLockDoorCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::DoorLock::Commands::LockDoor::DecodableType & commandData);
/**
 * @brief Door Lock Cluster LockDoorResponse Command callback (from server)
 */
bool emberAfDoorLockClusterLockDoorResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                    uint8_t status);
/**
 * @brief Door Lock Cluster UnlockDoor Command callback (from client)
 */
bool emberAfDoorLockClusterUnlockDoorCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::UnlockDoor::DecodableType & commandData);
/**
 * @brief Door Lock Cluster UnlockDoorResponse Command callback (from server)
 */
bool emberAfDoorLockClusterUnlockDoorResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                      uint8_t status);
/**
 * @brief Door Lock Cluster Toggle Command callback (from client)
 */
bool emberAfDoorLockClusterToggleCallback(chip::app::CommandHandler * commandObj,
                                          const chip::app::ConcreteCommandPath & commandPath,
                                          const chip::app::Clusters::DoorLock::Commands::Toggle::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ToggleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterToggleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status);
/**
 * @brief Door Lock Cluster UnlockWithTimeout Command callback (from client)
 */
bool emberAfDoorLockClusterUnlockWithTimeoutCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::UnlockWithTimeout::DecodableType & commandData);
/**
 * @brief Door Lock Cluster UnlockWithTimeoutResponse Command callback (from server)
 */
bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                             uint8_t status);
/**
 * @brief Door Lock Cluster GetLogRecord Command callback (from client)
 */
bool emberAfDoorLockClusterGetLogRecordCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::GetLogRecord::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetLogRecordResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetLogRecordResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                        uint16_t logEntryId, uint32_t timestamp, uint8_t eventType, uint8_t source,
                                                        uint8_t eventIdOrAlarmCode, uint16_t userId, chip::ByteSpan pin);
/**
 * @brief Door Lock Cluster SetPin Command callback (from client)
 */
bool emberAfDoorLockClusterSetPinCallback(chip::app::CommandHandler * commandObj,
                                          const chip::app::ConcreteCommandPath & commandPath,
                                          const chip::app::Clusters::DoorLock::Commands::SetPin::DecodableType & commandData);
/**
 * @brief Door Lock Cluster SetPinResponse Command callback (from server)
 */
bool emberAfDoorLockClusterSetPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status);
/**
 * @brief Door Lock Cluster GetPin Command callback (from client)
 */
bool emberAfDoorLockClusterGetPinCallback(chip::app::CommandHandler * commandObj,
                                          const chip::app::ConcreteCommandPath & commandPath,
                                          const chip::app::Clusters::DoorLock::Commands::GetPin::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetPinResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint16_t userId,
                                                  uint8_t userStatus, uint8_t userType, chip::ByteSpan pin);
/**
 * @brief Door Lock Cluster ClearPin Command callback (from client)
 */
bool emberAfDoorLockClusterClearPinCallback(chip::app::CommandHandler * commandObj,
                                            const chip::app::ConcreteCommandPath & commandPath,
                                            const chip::app::Clusters::DoorLock::Commands::ClearPin::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ClearPinResponse Command callback (from server)
 */
bool emberAfDoorLockClusterClearPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                    uint8_t status);
/**
 * @brief Door Lock Cluster ClearAllPins Command callback (from client)
 */
bool emberAfDoorLockClusterClearAllPinsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::ClearAllPins::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ClearAllPinsResponse Command callback (from server)
 */
bool emberAfDoorLockClusterClearAllPinsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                        uint8_t status);
/**
 * @brief Door Lock Cluster SetUserStatus Command callback (from client)
 */
bool emberAfDoorLockClusterSetUserStatusCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::SetUserStatus::DecodableType & commandData);
/**
 * @brief Door Lock Cluster SetUserStatusResponse Command callback (from server)
 */
bool emberAfDoorLockClusterSetUserStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint8_t status);
/**
 * @brief Door Lock Cluster GetUserStatus Command callback (from client)
 */
bool emberAfDoorLockClusterGetUserStatusCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::GetUserStatus::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetUserStatusResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetUserStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint16_t userId, uint8_t status);
/**
 * @brief Door Lock Cluster SetWeekdaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterSetWeekdayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::SetWeekdaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster SetWeekdayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t status);
/**
 * @brief Door Lock Cluster GetWeekdaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterGetWeekdayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::GetWeekdaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetWeekdayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t scheduleId, uint16_t userId, uint8_t status, uint8_t daysMask,
                                                              uint8_t startHour, uint8_t startMinute, uint8_t endHour,
                                                              uint8_t endMinute);
/**
 * @brief Door Lock Cluster ClearWeekdaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterClearWeekdayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::ClearWeekdaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ClearWeekdayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status);
/**
 * @brief Door Lock Cluster SetYeardaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterSetYeardayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::SetYeardaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster SetYeardayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t status);
/**
 * @brief Door Lock Cluster GetYeardaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterGetYeardayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::GetYeardaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetYeardayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t scheduleId, uint16_t userId, uint8_t status,
                                                              uint32_t localStartTime, uint32_t localEndTime);
/**
 * @brief Door Lock Cluster ClearYeardaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterClearYeardayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::ClearYeardaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ClearYeardayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status);
/**
 * @brief Door Lock Cluster SetHolidaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterSetHolidayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::SetHolidaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster SetHolidayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t status);
/**
 * @brief Door Lock Cluster GetHolidaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterGetHolidayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::GetHolidaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetHolidayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t scheduleId, uint8_t status, uint32_t localStartTime,
                                                              uint32_t localEndTime, uint8_t operatingModeDuringHoliday);
/**
 * @brief Door Lock Cluster ClearHolidaySchedule Command callback (from client)
 */
bool emberAfDoorLockClusterClearHolidayScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::ClearHolidaySchedule::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ClearHolidayScheduleResponse Command callback (from server)
 */
bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status);
/**
 * @brief Door Lock Cluster SetUserType Command callback (from client)
 */
bool emberAfDoorLockClusterSetUserTypeCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::SetUserType::DecodableType & commandData);
/**
 * @brief Door Lock Cluster SetUserTypeResponse Command callback (from server)
 */
bool emberAfDoorLockClusterSetUserTypeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                       uint8_t status);
/**
 * @brief Door Lock Cluster GetUserType Command callback (from client)
 */
bool emberAfDoorLockClusterGetUserTypeCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::GetUserType::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetUserTypeResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetUserTypeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                       uint16_t userId, uint8_t userType);
/**
 * @brief Door Lock Cluster SetRfid Command callback (from client)
 */
bool emberAfDoorLockClusterSetRfidCallback(chip::app::CommandHandler * commandObj,
                                           const chip::app::ConcreteCommandPath & commandPath,
                                           const chip::app::Clusters::DoorLock::Commands::SetRfid::DecodableType & commandData);
/**
 * @brief Door Lock Cluster SetRfidResponse Command callback (from server)
 */
bool emberAfDoorLockClusterSetRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                   uint8_t status);
/**
 * @brief Door Lock Cluster GetRfid Command callback (from client)
 */
bool emberAfDoorLockClusterGetRfidCallback(chip::app::CommandHandler * commandObj,
                                           const chip::app::ConcreteCommandPath & commandPath,
                                           const chip::app::Clusters::DoorLock::Commands::GetRfid::DecodableType & commandData);
/**
 * @brief Door Lock Cluster GetRfidResponse Command callback (from server)
 */
bool emberAfDoorLockClusterGetRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                   uint16_t userId, uint8_t userStatus, uint8_t userType, chip::ByteSpan rfid);
/**
 * @brief Door Lock Cluster ClearRfid Command callback (from client)
 */
bool emberAfDoorLockClusterClearRfidCallback(chip::app::CommandHandler * commandObj,
                                             const chip::app::ConcreteCommandPath & commandPath,
                                             const chip::app::Clusters::DoorLock::Commands::ClearRfid::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ClearRfidResponse Command callback (from server)
 */
bool emberAfDoorLockClusterClearRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                     uint8_t status);
/**
 * @brief Door Lock Cluster ClearAllRfids Command callback (from client)
 */
bool emberAfDoorLockClusterClearAllRfidsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::DoorLock::Commands::ClearAllRfids::DecodableType & commandData);
/**
 * @brief Door Lock Cluster ClearAllRfidsResponse Command callback (from server)
 */
bool emberAfDoorLockClusterClearAllRfidsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint8_t status);
/**
 * @brief Door Lock Cluster OperationEventNotification Command callback (from server)
 */
bool emberAfDoorLockClusterOperationEventNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t source, uint8_t eventCode, uint16_t userId,
                                                              chip::ByteSpan pin, uint32_t timeStamp, uint8_t * data);
/**
 * @brief Door Lock Cluster ProgrammingEventNotification Command callback (from server)
 */
bool emberAfDoorLockClusterProgrammingEventNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t source, uint8_t eventCode, uint16_t userId,
                                                                chip::ByteSpan pin, uint8_t userType, uint8_t userStatus,
                                                                uint32_t timeStamp, uint8_t * data);
/**
 * @brief Window Covering Cluster UpOrOpen Command callback (from client)
 */
bool emberAfWindowCoveringClusterUpOrOpenCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WindowCovering::Commands::UpOrOpen::DecodableType & commandData);
/**
 * @brief Window Covering Cluster DownOrClose Command callback (from client)
 */
bool emberAfWindowCoveringClusterDownOrCloseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WindowCovering::Commands::DownOrClose::DecodableType & commandData);
/**
 * @brief Window Covering Cluster StopMotion Command callback (from client)
 */
bool emberAfWindowCoveringClusterStopMotionCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WindowCovering::Commands::StopMotion::DecodableType & commandData);
/**
 * @brief Window Covering Cluster GoToLiftValue Command callback (from client)
 */
bool emberAfWindowCoveringClusterGoToLiftValueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WindowCovering::Commands::GoToLiftValue::DecodableType & commandData);
/**
 * @brief Window Covering Cluster GoToLiftPercentage Command callback (from client)
 */
bool emberAfWindowCoveringClusterGoToLiftPercentageCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WindowCovering::Commands::GoToLiftPercentage::DecodableType & commandData);
/**
 * @brief Window Covering Cluster GoToTiltValue Command callback (from client)
 */
bool emberAfWindowCoveringClusterGoToTiltValueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WindowCovering::Commands::GoToTiltValue::DecodableType & commandData);
/**
 * @brief Window Covering Cluster GoToTiltPercentage Command callback (from client)
 */
bool emberAfWindowCoveringClusterGoToTiltPercentageCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::WindowCovering::Commands::GoToTiltPercentage::DecodableType & commandData);
/**
 * @brief Barrier Control Cluster BarrierControlGoToPercent Command callback (from client)
 */
bool emberAfBarrierControlClusterBarrierControlGoToPercentCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::BarrierControl::Commands::BarrierControlGoToPercent::DecodableType & commandData);
/**
 * @brief Barrier Control Cluster BarrierControlStop Command callback (from client)
 */
bool emberAfBarrierControlClusterBarrierControlStopCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::BarrierControl::Commands::BarrierControlStop::DecodableType & commandData);
/**
 * @brief Thermostat Cluster SetpointRaiseLower Command callback (from client)
 */
bool emberAfThermostatClusterSetpointRaiseLowerCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Thermostat::Commands::SetpointRaiseLower::DecodableType & commandData);
/**
 * @brief Thermostat Cluster CurrentWeeklySchedule Command callback (from server)
 */
bool emberAfThermostatClusterCurrentWeeklyScheduleCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint8_t numberOfTransitionsForSequence, uint8_t dayOfWeekForSequence,
                                                           uint8_t modeForSequence,
                                                           /* TYPE WARNING: array array defaults to */ uint8_t * payload);
/**
 * @brief Thermostat Cluster SetWeeklySchedule Command callback (from client)
 */
bool emberAfThermostatClusterSetWeeklyScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Thermostat::Commands::SetWeeklySchedule::DecodableType & commandData);
/**
 * @brief Thermostat Cluster RelayStatusLog Command callback (from server)
 */
bool emberAfThermostatClusterRelayStatusLogCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                    uint16_t timeOfDay, uint16_t relayStatus, int16_t localTemperature,
                                                    uint8_t humidityInPercentage, int16_t setpoint, uint16_t unreadEntries);
/**
 * @brief Thermostat Cluster GetWeeklySchedule Command callback (from client)
 */
bool emberAfThermostatClusterGetWeeklyScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Thermostat::Commands::GetWeeklySchedule::DecodableType & commandData);
/**
 * @brief Thermostat Cluster ClearWeeklySchedule Command callback (from client)
 */
bool emberAfThermostatClusterClearWeeklyScheduleCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Thermostat::Commands::ClearWeeklySchedule::DecodableType & commandData);
/**
 * @brief Thermostat Cluster GetRelayStatusLog Command callback (from client)
 */
bool emberAfThermostatClusterGetRelayStatusLogCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Thermostat::Commands::GetRelayStatusLog::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveToHue Command callback (from client)
 */
bool emberAfColorControlClusterMoveToHueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveToHue::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveHue Command callback (from client)
 */
bool emberAfColorControlClusterMoveHueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveHue::DecodableType & commandData);
/**
 * @brief Color Control Cluster StepHue Command callback (from client)
 */
bool emberAfColorControlClusterStepHueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::StepHue::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveToSaturation Command callback (from client)
 */
bool emberAfColorControlClusterMoveToSaturationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveToSaturation::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveSaturation Command callback (from client)
 */
bool emberAfColorControlClusterMoveSaturationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveSaturation::DecodableType & commandData);
/**
 * @brief Color Control Cluster StepSaturation Command callback (from client)
 */
bool emberAfColorControlClusterStepSaturationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::StepSaturation::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveToHueAndSaturation Command callback (from client)
 */
bool emberAfColorControlClusterMoveToHueAndSaturationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveToHueAndSaturation::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveToColor Command callback (from client)
 */
bool emberAfColorControlClusterMoveToColorCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveToColor::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveColor Command callback (from client)
 */
bool emberAfColorControlClusterMoveColorCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveColor::DecodableType & commandData);
/**
 * @brief Color Control Cluster StepColor Command callback (from client)
 */
bool emberAfColorControlClusterStepColorCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::StepColor::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveToColorTemperature Command callback (from client)
 */
bool emberAfColorControlClusterMoveToColorTemperatureCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveToColorTemperature::DecodableType & commandData);
/**
 * @brief Color Control Cluster EnhancedMoveToHue Command callback (from client)
 */
bool emberAfColorControlClusterEnhancedMoveToHueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHue::DecodableType & commandData);
/**
 * @brief Color Control Cluster EnhancedMoveHue Command callback (from client)
 */
bool emberAfColorControlClusterEnhancedMoveHueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::EnhancedMoveHue::DecodableType & commandData);
/**
 * @brief Color Control Cluster EnhancedStepHue Command callback (from client)
 */
bool emberAfColorControlClusterEnhancedStepHueCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::EnhancedStepHue::DecodableType & commandData);
/**
 * @brief Color Control Cluster EnhancedMoveToHueAndSaturation Command callback (from client)
 */
bool emberAfColorControlClusterEnhancedMoveToHueAndSaturationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::EnhancedMoveToHueAndSaturation::DecodableType & commandData);
/**
 * @brief Color Control Cluster ColorLoopSet Command callback (from client)
 */
bool emberAfColorControlClusterColorLoopSetCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::ColorLoopSet::DecodableType & commandData);
/**
 * @brief Color Control Cluster StopMoveStep Command callback (from client)
 */
bool emberAfColorControlClusterStopMoveStepCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::StopMoveStep::DecodableType & commandData);
/**
 * @brief Color Control Cluster MoveColorTemperature Command callback (from client)
 */
bool emberAfColorControlClusterMoveColorTemperatureCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::MoveColorTemperature::DecodableType & commandData);
/**
 * @brief Color Control Cluster StepColorTemperature Command callback (from client)
 */
bool emberAfColorControlClusterStepColorTemperatureCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ColorControl::Commands::StepColorTemperature::DecodableType & commandData);
/**
 * @brief IAS Zone Cluster ZoneEnrollResponse Command callback (from client)
 */
bool emberAfIasZoneClusterZoneEnrollResponseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasZone::Commands::ZoneEnrollResponse::DecodableType & commandData);
/**
 * @brief IAS Zone Cluster ZoneStatusChangeNotification Command callback (from server)
 */
bool emberAfIasZoneClusterZoneStatusChangeNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                               uint16_t zoneStatus, uint8_t extendedStatus, uint8_t zoneId,
                                                               uint16_t delay);
/**
 * @brief IAS Zone Cluster InitiateNormalOperationMode Command callback (from client)
 */
bool emberAfIasZoneClusterInitiateNormalOperationModeCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasZone::Commands::InitiateNormalOperationMode::DecodableType & commandData);
/**
 * @brief IAS Zone Cluster ZoneEnrollRequest Command callback (from server)
 */
bool emberAfIasZoneClusterZoneEnrollRequestCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                    uint16_t zoneType, uint16_t manufacturerCode);
/**
 * @brief IAS Zone Cluster InitiateTestMode Command callback (from client)
 */
bool emberAfIasZoneClusterInitiateTestModeCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasZone::Commands::InitiateTestMode::DecodableType & commandData);
/**
 * @brief IAS Zone Cluster InitiateNormalOperationModeResponse Command callback (from server)
 */
bool emberAfIasZoneClusterInitiateNormalOperationModeResponseCallback(chip::EndpointId endpoint,
                                                                      chip::app::CommandSender * commandObj);
/**
 * @brief IAS Zone Cluster InitiateTestModeResponse Command callback (from server)
 */
bool emberAfIasZoneClusterInitiateTestModeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
/**
 * @brief IAS ACE Cluster Arm Command callback (from client)
 */
bool emberAfIasAceClusterArmCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                     const chip::app::Clusters::IasAce::Commands::Arm::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster ArmResponse Command callback (from server)
 */
bool emberAfIasAceClusterArmResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                             uint8_t armNotification);
/**
 * @brief IAS ACE Cluster Bypass Command callback (from client)
 */
bool emberAfIasAceClusterBypassCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                        const chip::app::Clusters::IasAce::Commands::Bypass::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster GetZoneIdMapResponse Command callback (from server)
 */
bool emberAfIasAceClusterGetZoneIdMapResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                      uint16_t section0, uint16_t section1, uint16_t section2, uint16_t section3,
                                                      uint16_t section4, uint16_t section5, uint16_t section6, uint16_t section7,
                                                      uint16_t section8, uint16_t section9, uint16_t section10, uint16_t section11,
                                                      uint16_t section12, uint16_t section13, uint16_t section14,
                                                      uint16_t section15);
/**
 * @brief IAS ACE Cluster Emergency Command callback (from client)
 */
bool emberAfIasAceClusterEmergencyCallback(chip::app::CommandHandler * commandObj,
                                           const chip::app::ConcreteCommandPath & commandPath,
                                           const chip::app::Clusters::IasAce::Commands::Emergency::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster GetZoneInformationResponse Command callback (from server)
 */
bool emberAfIasAceClusterGetZoneInformationResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t zoneId, uint16_t zoneType, chip::NodeId ieeeAddress,
                                                            uint8_t * zoneLabel);
/**
 * @brief IAS ACE Cluster Fire Command callback (from client)
 */
bool emberAfIasAceClusterFireCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                      const chip::app::Clusters::IasAce::Commands::Fire::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster ZoneStatusChanged Command callback (from server)
 */
bool emberAfIasAceClusterZoneStatusChangedCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t zoneId,
                                                   uint16_t zoneStatus, uint8_t audibleNotification, uint8_t * zoneLabel);
/**
 * @brief IAS ACE Cluster Panic Command callback (from client)
 */
bool emberAfIasAceClusterPanicCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                       const chip::app::Clusters::IasAce::Commands::Panic::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster PanelStatusChanged Command callback (from server)
 */
bool emberAfIasAceClusterPanelStatusChangedCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                    uint8_t panelStatus, uint8_t secondsRemaining, uint8_t audibleNotification,
                                                    uint8_t alarmStatus);
/**
 * @brief IAS ACE Cluster GetZoneIdMap Command callback (from client)
 */
bool emberAfIasAceClusterGetZoneIdMapCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasAce::Commands::GetZoneIdMap::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster GetPanelStatusResponse Command callback (from server)
 */
bool emberAfIasAceClusterGetPanelStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                        uint8_t panelStatus, uint8_t secondsRemaining, uint8_t audibleNotification,
                                                        uint8_t alarmStatus);
/**
 * @brief IAS ACE Cluster GetZoneInformation Command callback (from client)
 */
bool emberAfIasAceClusterGetZoneInformationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasAce::Commands::GetZoneInformation::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster SetBypassedZoneList Command callback (from server)
 */
bool emberAfIasAceClusterSetBypassedZoneListCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                     uint8_t numberOfZones,
                                                     /* TYPE WARNING: array array defaults to */ uint8_t * zoneIds);
/**
 * @brief IAS ACE Cluster GetPanelStatus Command callback (from client)
 */
bool emberAfIasAceClusterGetPanelStatusCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasAce::Commands::GetPanelStatus::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster BypassResponse Command callback (from server)
 */
bool emberAfIasAceClusterBypassResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                uint8_t numberOfZones,
                                                /* TYPE WARNING: array array defaults to */ uint8_t * bypassResult);
/**
 * @brief IAS ACE Cluster GetBypassedZoneList Command callback (from client)
 */
bool emberAfIasAceClusterGetBypassedZoneListCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasAce::Commands::GetBypassedZoneList::DecodableType & commandData);
/**
 * @brief IAS ACE Cluster GetZoneStatusResponse Command callback (from server)
 */
bool emberAfIasAceClusterGetZoneStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                       bool zoneStatusComplete, uint8_t numberOfZones,
                                                       /* TYPE WARNING: array array defaults to */ uint8_t * zoneStatusResult);
/**
 * @brief IAS ACE Cluster GetZoneStatus Command callback (from client)
 */
bool emberAfIasAceClusterGetZoneStatusCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::IasAce::Commands::GetZoneStatus::DecodableType & commandData);
/**
 * @brief IAS WD Cluster StartWarning Command callback (from client)
 */
bool emberAfIasWdClusterStartWarningCallback(chip::app::CommandHandler * commandObj,
                                             const chip::app::ConcreteCommandPath & commandPath,
                                             const chip::app::Clusters::IasWd::Commands::StartWarning::DecodableType & commandData);
/**
 * @brief IAS WD Cluster Squawk Command callback (from client)
 */
bool emberAfIasWdClusterSquawkCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                       const chip::app::Clusters::IasWd::Commands::Squawk::DecodableType & commandData);
/**
 * @brief TV Channel Cluster ChangeChannel Command callback (from client)
 */
bool emberAfTvChannelClusterChangeChannelCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TvChannel::Commands::ChangeChannel::DecodableType & commandData);
/**
 * @brief TV Channel Cluster ChangeChannelResponse Command callback (from server)
 */
bool emberAfTvChannelClusterChangeChannelResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch,
                                                          uint8_t ErrorType);
/**
 * @brief TV Channel Cluster ChangeChannelByNumber Command callback (from client)
 */
bool emberAfTvChannelClusterChangeChannelByNumberCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TvChannel::Commands::ChangeChannelByNumber::DecodableType & commandData);
/**
 * @brief TV Channel Cluster SkipChannel Command callback (from client)
 */
bool emberAfTvChannelClusterSkipChannelCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TvChannel::Commands::SkipChannel::DecodableType & commandData);
/**
 * @brief Target Navigator Cluster NavigateTarget Command callback (from client)
 */
bool emberAfTargetNavigatorClusterNavigateTargetCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TargetNavigator::Commands::NavigateTarget::DecodableType & commandData);
/**
 * @brief Target Navigator Cluster NavigateTargetResponse Command callback (from server)
 */
bool emberAfTargetNavigatorClusterNavigateTargetResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 uint8_t status, uint8_t * data);
/**
 * @brief Media Playback Cluster MediaPlay Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaPlayCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaPlay::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaPlayResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaPlayResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaPause Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaPauseCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaPause::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaPauseResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaPauseResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaStop Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaStopCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaStop::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaStopResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaStopResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaStartOver Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaStartOverCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaStartOver::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaStartOverResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaStartOverResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                               uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaPrevious Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaPreviousCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaPrevious::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaPreviousResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaPreviousResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaNext Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaNextCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaNext::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaNextResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaNextResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaRewind Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaRewindCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaRewind::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaRewindResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaRewindResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaFastForward Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaFastForwardCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaFastForward::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaFastForwardResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaSkipForward Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaSkipForwardCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaSkipForward::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaSkipForwardResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaSkipBackward Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaSkipBackwardCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaSkipBackward::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaSkipBackwardResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t mediaPlaybackStatus);
/**
 * @brief Media Playback Cluster MediaSeek Command callback (from client)
 */
bool emberAfMediaPlaybackClusterMediaSeekCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaPlayback::Commands::MediaSeek::DecodableType & commandData);
/**
 * @brief Media Playback Cluster MediaSeekResponse Command callback (from server)
 */
bool emberAfMediaPlaybackClusterMediaSeekResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          uint8_t mediaPlaybackStatus);
/**
 * @brief Media Input Cluster SelectInput Command callback (from client)
 */
bool emberAfMediaInputClusterSelectInputCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaInput::Commands::SelectInput::DecodableType & commandData);
/**
 * @brief Media Input Cluster ShowInputStatus Command callback (from client)
 */
bool emberAfMediaInputClusterShowInputStatusCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaInput::Commands::ShowInputStatus::DecodableType & commandData);
/**
 * @brief Media Input Cluster HideInputStatus Command callback (from client)
 */
bool emberAfMediaInputClusterHideInputStatusCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaInput::Commands::HideInputStatus::DecodableType & commandData);
/**
 * @brief Media Input Cluster RenameInput Command callback (from client)
 */
bool emberAfMediaInputClusterRenameInputCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::MediaInput::Commands::RenameInput::DecodableType & commandData);
/**
 * @brief Low Power Cluster Sleep Command callback (from client)
 */
bool emberAfLowPowerClusterSleepCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                         const chip::app::Clusters::LowPower::Commands::Sleep::DecodableType & commandData);
/**
 * @brief Keypad Input Cluster SendKey Command callback (from client)
 */
bool emberAfKeypadInputClusterSendKeyCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::KeypadInput::Commands::SendKey::DecodableType & commandData);
/**
 * @brief Keypad Input Cluster SendKeyResponse Command callback (from server)
 */
bool emberAfKeypadInputClusterSendKeyResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                      uint8_t status);
/**
 * @brief Content Launcher Cluster LaunchContent Command callback (from client)
 */
bool emberAfContentLauncherClusterLaunchContentCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ContentLauncher::Commands::LaunchContent::DecodableType & commandData);
/**
 * @brief Content Launcher Cluster LaunchContentResponse Command callback (from server)
 */
bool emberAfContentLauncherClusterLaunchContentResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t * data, uint8_t contentLaunchStatus);
/**
 * @brief Content Launcher Cluster LaunchURL Command callback (from client)
 */
bool emberAfContentLauncherClusterLaunchURLCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ContentLauncher::Commands::LaunchURL::DecodableType & commandData);
/**
 * @brief Content Launcher Cluster LaunchURLResponse Command callback (from server)
 */
bool emberAfContentLauncherClusterLaunchURLResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t * data, uint8_t contentLaunchStatus);
/**
 * @brief Audio Output Cluster SelectOutput Command callback (from client)
 */
bool emberAfAudioOutputClusterSelectOutputCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::AudioOutput::Commands::SelectOutput::DecodableType & commandData);
/**
 * @brief Audio Output Cluster RenameOutput Command callback (from client)
 */
bool emberAfAudioOutputClusterRenameOutputCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::AudioOutput::Commands::RenameOutput::DecodableType & commandData);
/**
 * @brief Application Launcher Cluster LaunchApp Command callback (from client)
 */
bool emberAfApplicationLauncherClusterLaunchAppCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplicationLauncher::Commands::LaunchApp::DecodableType & commandData);
/**
 * @brief Application Launcher Cluster LaunchAppResponse Command callback (from server)
 */
bool emberAfApplicationLauncherClusterLaunchAppResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status, uint8_t * data);
/**
 * @brief Application Basic Cluster ChangeStatus Command callback (from client)
 */
bool emberAfApplicationBasicClusterChangeStatusCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplicationBasic::Commands::ChangeStatus::DecodableType & commandData);
/**
 * @brief Account Login Cluster GetSetupPIN Command callback (from client)
 */
bool emberAfAccountLoginClusterGetSetupPINCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::AccountLogin::Commands::GetSetupPIN::DecodableType & commandData);
/**
 * @brief Account Login Cluster GetSetupPINResponse Command callback (from server)
 */
bool emberAfAccountLoginClusterGetSetupPINResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint8_t * setupPIN);
/**
 * @brief Account Login Cluster Login Command callback (from client)
 */
bool emberAfAccountLoginClusterLoginCallback(chip::app::CommandHandler * commandObj,
                                             const chip::app::ConcreteCommandPath & commandPath,
                                             const chip::app::Clusters::AccountLogin::Commands::Login::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster Test Command callback (from client)
 */
bool emberAfTestClusterClusterTestCallback(chip::app::CommandHandler * commandObj,
                                           const chip::app::ConcreteCommandPath & commandPath,
                                           const chip::app::Clusters::TestCluster::Commands::Test::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestSpecificResponse Command callback (from server)
 */
bool emberAfTestClusterClusterTestSpecificResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint8_t returnValue);
/**
 * @brief Test Cluster Cluster TestNotHandled Command callback (from client)
 */
bool emberAfTestClusterClusterTestNotHandledCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestNotHandled::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestAddArgumentsResponse Command callback (from server)
 */
bool emberAfTestClusterClusterTestAddArgumentsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                               uint8_t returnValue);
/**
 * @brief Test Cluster Cluster TestSpecific Command callback (from client)
 */
bool emberAfTestClusterClusterTestSpecificCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestSpecific::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestSimpleArgumentResponse Command callback (from server)
 */
bool emberAfTestClusterClusterTestSimpleArgumentResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 bool returnValue);
/**
 * @brief Test Cluster Cluster TestUnknownCommand Command callback (from client)
 */
bool emberAfTestClusterClusterTestUnknownCommandCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestUnknownCommand::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestStructArrayArgumentResponse Command callback (from server)
 */
bool emberAfTestClusterClusterTestStructArrayArgumentResponseCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, /* TYPE WARNING: array array defaults to */ uint8_t * arg1,
    /* TYPE WARNING: array array defaults to */ uint8_t * arg2, /* TYPE WARNING: array array defaults to */ uint8_t * arg3,
    /* TYPE WARNING: array array defaults to */ uint8_t * arg4, uint8_t arg5, bool arg6);
/**
 * @brief Test Cluster Cluster TestAddArguments Command callback (from client)
 */
bool emberAfTestClusterClusterTestAddArgumentsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestAddArguments::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestListInt8UReverseResponse Command callback (from server)
 */
bool emberAfTestClusterClusterTestListInt8UReverseResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                   /* TYPE WARNING: array array defaults to */ uint8_t * arg1);
/**
 * @brief Test Cluster Cluster TestSimpleArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestSimpleArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestSimpleArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestStructArrayArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestStructArrayArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestStructArrayArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestStructArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestStructArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestStructArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestNestedStructArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestNestedStructArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestNestedStructArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestListStructArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestListStructArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestListStructArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestListInt8UArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestListInt8UArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestListInt8UArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestNestedStructListArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestNestedStructListArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestNestedStructListArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestListNestedStructListArgumentRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestListNestedStructListArgumentRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestListNestedStructListArgumentRequest::DecodableType & commandData);
/**
 * @brief Test Cluster Cluster TestListInt8UReverseRequest Command callback (from client)
 */
bool emberAfTestClusterClusterTestListInt8UReverseRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::TestCluster::Commands::TestListInt8UReverseRequest::DecodableType & commandData);
/**
 * @brief Messaging Cluster DisplayMessage Command callback (from server)
 */
bool emberAfMessagingClusterDisplayMessageCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                   uint32_t messageId, uint8_t messageControl, uint32_t startTime,
                                                   uint16_t durationInMinutes, uint8_t * message,
                                                   uint8_t optionalExtendedMessageControl);
/**
 * @brief Messaging Cluster GetLastMessage Command callback (from client)
 */
bool emberAfMessagingClusterGetLastMessageCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Messaging::Commands::GetLastMessage::DecodableType & commandData);
/**
 * @brief Messaging Cluster CancelMessage Command callback (from server)
 */
bool emberAfMessagingClusterCancelMessageCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                  uint32_t messageId, uint8_t messageControl);
/**
 * @brief Messaging Cluster MessageConfirmation Command callback (from client)
 */
bool emberAfMessagingClusterMessageConfirmationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Messaging::Commands::MessageConfirmation::DecodableType & commandData);
/**
 * @brief Messaging Cluster DisplayProtectedMessage Command callback (from server)
 */
bool emberAfMessagingClusterDisplayProtectedMessageCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint32_t messageId, uint8_t messageControl, uint32_t startTime,
                                                            uint16_t durationInMinutes, uint8_t * message,
                                                            uint8_t optionalExtendedMessageControl);
/**
 * @brief Messaging Cluster GetMessageCancellation Command callback (from client)
 */
bool emberAfMessagingClusterGetMessageCancellationCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::Messaging::Commands::GetMessageCancellation::DecodableType & commandData);
/**
 * @brief Messaging Cluster CancelAllMessages Command callback (from server)
 */
bool emberAfMessagingClusterCancelAllMessagesCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                      uint32_t implementationDateTime);
/**
 * @brief Appliance Events and Alert Cluster GetAlerts Command callback (from client)
 */
bool emberAfApplianceEventsAndAlertClusterGetAlertsCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceEventsAndAlert::Commands::GetAlerts::DecodableType & commandData);
/**
 * @brief Appliance Events and Alert Cluster GetAlertsResponse Command callback (from server)
 */
bool emberAfApplianceEventsAndAlertClusterGetAlertsResponseCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t alertsCount,
    /* TYPE WARNING: array array defaults to */ uint8_t * alertStructures);
/**
 * @brief Appliance Events and Alert Cluster AlertsNotification Command callback (from server)
 */
bool emberAfApplianceEventsAndAlertClusterAlertsNotificationCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t alertsCount,
    /* TYPE WARNING: array array defaults to */ uint8_t * alertStructures);
/**
 * @brief Appliance Events and Alert Cluster EventsNotification Command callback (from server)
 */
bool emberAfApplianceEventsAndAlertClusterEventsNotificationCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandSender * commandObj, uint8_t eventHeader,
                                                                     uint8_t eventId);
/**
 * @brief Appliance Statistics Cluster LogNotification Command callback (from server)
 */
bool emberAfApplianceStatisticsClusterLogNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint32_t timeStamp, uint32_t logId, uint32_t logLength,
                                                              /* TYPE WARNING: array array defaults to */ uint8_t * logPayload);
/**
 * @brief Appliance Statistics Cluster LogRequest Command callback (from client)
 */
bool emberAfApplianceStatisticsClusterLogRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceStatistics::Commands::LogRequest::DecodableType & commandData);
/**
 * @brief Appliance Statistics Cluster LogResponse Command callback (from server)
 */
bool emberAfApplianceStatisticsClusterLogResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          uint32_t timeStamp, uint32_t logId, uint32_t logLength,
                                                          /* TYPE WARNING: array array defaults to */ uint8_t * logPayload);
/**
 * @brief Appliance Statistics Cluster LogQueueRequest Command callback (from client)
 */
bool emberAfApplianceStatisticsClusterLogQueueRequestCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ApplianceStatistics::Commands::LogQueueRequest::DecodableType & commandData);
/**
 * @brief Appliance Statistics Cluster LogQueueResponse Command callback (from server)
 */
bool emberAfApplianceStatisticsClusterLogQueueResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                               uint8_t logQueueSize,
                                                               /* TYPE WARNING: array array defaults to */ uint8_t * logIds);
/**
 * @brief Appliance Statistics Cluster StatisticsAvailable Command callback (from server)
 */
bool emberAfApplianceStatisticsClusterStatisticsAvailableCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t logQueueSize,
                                                                  /* TYPE WARNING: array array defaults to */ uint8_t * logIds);
/**
 * @brief Electrical Measurement Cluster GetProfileInfoResponseCommand Command callback (from server)
 */
bool emberAfElectricalMeasurementClusterGetProfileInfoResponseCommandCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t profileCount, uint8_t profileIntervalPeriod,
    uint8_t maxNumberOfIntervals, /* TYPE WARNING: array array defaults to */ uint8_t * listOfAttributes);
/**
 * @brief Electrical Measurement Cluster GetProfileInfoCommand Command callback (from client)
 */
bool emberAfElectricalMeasurementClusterGetProfileInfoCommandCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ElectricalMeasurement::Commands::GetProfileInfoCommand::DecodableType & commandData);
/**
 * @brief Electrical Measurement Cluster GetMeasurementProfileResponseCommand Command callback (from server)
 */
bool emberAfElectricalMeasurementClusterGetMeasurementProfileResponseCommandCallback(
    chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint32_t startTime, uint8_t status,
    uint8_t profileIntervalPeriod, uint8_t numberOfIntervalsDelivered, uint16_t attributeId,
    /* TYPE WARNING: array array defaults to */ uint8_t * intervals);
/**
 * @brief Electrical Measurement Cluster GetMeasurementProfileCommand Command callback (from client)
 */
bool emberAfElectricalMeasurementClusterGetMeasurementProfileCommandCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::ElectricalMeasurement::Commands::GetMeasurementProfileCommand::DecodableType & commandData);
/**
 * @brief Binding Cluster Bind Command callback (from client)
 */
bool emberAfBindingClusterBindCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                       const chip::app::Clusters::Binding::Commands::Bind::DecodableType & commandData);
/**
 * @brief Binding Cluster Unbind Command callback (from client)
 */
bool emberAfBindingClusterUnbindCallback(chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
                                         const chip::app::Clusters::Binding::Commands::Unbind::DecodableType & commandData);
/**
 * @brief Sample Mfg Specific Cluster Cluster CommandOne Command callback (from client)
 */
bool emberAfSampleMfgSpecificClusterClusterCommandOneCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::SampleMfgSpecificCluster::Commands::CommandOne::DecodableType & commandData);
/**
 * @brief Sample Mfg Specific Cluster 2 Cluster CommandTwo Command callback (from client)
 */
bool emberAfSampleMfgSpecificCluster2ClusterCommandTwoCallback(
    chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
    const chip::app::Clusters::SampleMfgSpecificCluster2::Commands::CommandTwo::DecodableType & commandData);

/** @brief Add To Current App Tasks
 *
 * This function is only useful to sleepy end devices.  This function will note
 * the passed item as part of a set of tasks the application has outstanding
 * (e.g. message sent requiring APS acknwoledgement).  This will affect how the
 * application behaves with regard to sleeping and polling.  Until the
 * outstanding task is completed, the device may poll more frequently and sleep
 * less often.
 *
 * @param tasks   Ver.: always
 */
void emberAfAddToCurrentAppTasksCallback(EmberAfApplicationTask tasks);

/** @brief Remove From Current App Tasks
 *
 * This function is only useful to sleepy end devices.  This function will
 * remove the passed item from the set of tasks the application has outstanding
 * (e.g. message sent requiring APS acknwoledgement).  This will affect how the
 * application behaves with regard to sleeping and polling.  Removing the item
 * from the list of outstanding tasks may allow the device to sleep longer and
 * poll less frequently.  If there are other outstanding tasks the system may
 * still have to stay away and poll more often.
 *
 * @param tasks   Ver.: always
 */
void emberAfRemoveFromCurrentAppTasksCallback(EmberAfApplicationTask tasks);

/** @brief Allow Network Write Attribute
 *
 * This function is called by the application framework before it writes an
 * attribute in response to a write attribute request from an external device.
 * The value passed into this callback is the value to which the attribute is to
 * be set by the framework.
        Example:	In mirroring simple metering data
 * on an Energy Services Interface (ESI) (formerly called Energy Service Portal
 * (ESP) in SE 1.0).), a mirrored simple meter needs to write read-only
 * attributes on its mirror. The-meter-mirror sample application, located in
 * app/framework/sample-apps, uses this callback to allow the mirrored device to
 * write simple metering attributes on the mirror regardless of the fact that
 * most simple metering attributes are defined as read-only by the ZigBee
 * specification.
        Note:	The ZCL specification does not (as of this
 * writing) specify any permission-level security for writing writeable
 * attributes. As far as the ZCL specification is concerned, if an attribute is
 * writeable, any device that has a link key for the device should be able to
 * write that attribute. Furthermore if an attribute is read only, it should not
 * be written over the air. Thus, if you implement permissions for writing
 * attributes as a feature, you MAY be operating outside the specification. This
 * is unlikely to be a problem for writing read-only attributes, but it may be a
 * problem for attributes that are writeable according to the specification but
 * restricted by the application implementing this callback.
 *
 * @param endpoint   Ver.: always
 * @param clusterId   Ver.: always
 * @param attributeId   Ver.: always
 * @param mask   Ver.: always
 * @param manufacturerCode   Ver.: always
 * @param value   Ver.: always
 * @param type   Ver.: always
 */
EmberAfAttributeWritePermission emberAfAllowNetworkWriteAttributeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
                                                                          chip::AttributeId attributeId, uint8_t mask,
                                                                          uint16_t manufacturerCode, uint8_t * value, uint8_t type);

/** @brief Attribute Read Access
 *
 * This function is called whenever the Application Framework needs to check
 * access permission for an attribute read.
 *
 * @param endpoint   Ver.: always
 * @param clusterId   Ver.: always
 * @param manufacturerCode   Ver.: always
 * @param attributeId   Ver.: always
 */
bool emberAfAttributeReadAccessCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, uint16_t manufacturerCode,
                                        chip::AttributeId attributeId);

/** @brief Attribute Write Access
 *
 * This function is called whenever the Application Framework needs to check
 * access permission for an attribute write.
 *
 * @param endpoint   Ver.: always
 * @param clusterId   Ver.: always
 * @param manufacturerCode   Ver.: always
 * @param attributeId   Ver.: always
 */
bool emberAfAttributeWriteAccessCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, uint16_t manufacturerCode,
                                         chip::AttributeId attributeId);

/** @brief Default Response
 *
 * This function is called by the application framework when a Default Response
 * command is received from an external device.  The application should return
 * true if the message was processed or false if it was not.
 *
 * @param clusterId The cluster identifier of this response.  Ver.: always
 * @param commandId The command identifier to which this is a response.  Ver.:
 * always
 * @param status Specifies either SUCCESS or the nature of the error that was
 * detected in the received command.  Ver.: always
 */
bool emberAfDefaultResponseCallback(chip::ClusterId clusterId, chip::CommandId commandId, EmberAfStatus status);

/** @brief Discover Attributes Response
 *
 * This function is called by the application framework when a Discover
 * Attributes Response or Discover Attributes Extended Response command is
 * received from an external device.  The Discover Attributes Response command
 * contains a bool indicating if discovery is complete and a list of zero or
 * more attribute identifier/type records. The final argument indicates whether
 * the response is in the extended format or not.  The application should return
 * true if the message was processed or false if it was not.
 *
 * @param clusterId The cluster identifier of this response.  Ver.: always
 * @param discoveryComplete Indicates whether there are more attributes to be
 * discovered.  true if there are no more attributes to be discovered.  Ver.:
 * always
 * @param buffer Buffer containing the list of attribute identifier/type
 * records.  Ver.: always
 * @param bufLen The length in bytes of the list.  Ver.: always
 * @param extended Indicates whether the response is in the extended format or
 * not.  Ver.: always
 */
bool emberAfDiscoverAttributesResponseCallback(chip::ClusterId clusterId, bool discoveryComplete, uint8_t * buffer, uint16_t bufLen,
                                               bool extended);

/** @brief Discover Commands Generated Response
 *
 * This function is called by the framework when Discover Commands Generated
 * Response is received.
 *
 * @param clusterId The cluster identifier of this response.  Ver.: always
 * @param manufacturerCode Manufacturer code  Ver.: always
 * @param discoveryComplete Indicates whether there are more commands to be
 * discovered.  Ver.: always
 * @param commandIds Buffer containing the list of command identifiers.  Ver.:
 * always
 * @param commandIdCount The length of bytes of the list, whish is the same as
 * the number of identifiers.  Ver.: always
 */
bool emberAfDiscoverCommandsGeneratedResponseCallback(chip::ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
                                                      chip::CommandId * commandIds, uint16_t commandIdCount);

/** @brief Discover Commands Received Response
 *
 * This function is called by the framework when Discover Commands Received
 * Response is received.
 *
 * @param clusterId The cluster identifier of this response.  Ver.: always
 * @param manufacturerCode Manufacturer code  Ver.: always
 * @param discoveryComplete Indicates whether there are more commands to be
 * discovered.  Ver.: always
 * @param commandIds Buffer containing the list of command identifiers.  Ver.:
 * always
 * @param commandIdCount The length of bytes of the list, whish is the same as
 * the number of identifiers.  Ver.: always
 */
bool emberAfDiscoverCommandsReceivedResponseCallback(chip::ClusterId clusterId, uint16_t manufacturerCode, bool discoveryComplete,
                                                     chip::CommandId * commandIds, uint16_t commandIdCount);

/** @brief Pre Command Received
 *
 * This callback is the second in the Application Framework's message processing
 * chain. At this point in the processing of incoming over-the-air messages, the
 * application has determined that the incoming message is a ZCL command. It
 * parses enough of the message to populate an EmberAfClusterCommand struct. The
 * Application Framework defines this struct value in a local scope to the
 * command processing but also makes it available through a global pointer
 * called emberAfCurrentCommand, in app/framework/util/util.c. When command
 * processing is complete, this pointer is cleared.
 *
 * @param cmd   Ver.: always
 */
bool emberAfPreCommandReceivedCallback(EmberAfClusterCommand * cmd);

/** @brief Pre Message Send
 *
 * This function is called by the framework when it is about to pass a message
 * to the stack primitives for sending.   This message may or may not be ZCL,
 * ZDO, or some other protocol.  This is called prior to
        any ZigBee
 * fragmentation that may be done.  If the function returns true it is assumed
 * the callback has consumed and processed the message.  The callback must also
 * set the EmberStatus status code to be passed back to the caller.  The
 * framework will do no further processing on the message.
        If the
 * function returns false then it is assumed that the callback has not processed
 * the mesasge and the framework will continue to process accordingly.
 *
 * @param messageStruct The structure containing the parameters of the APS
 * message to be sent.  Ver.: always
 * @param status A pointer to the status code value that will be returned to the
 * caller.  Ver.: always
 */
bool emberAfPreMessageSendCallback(EmberAfMessageStruct * messageStruct, EmberStatus * status);

/** @brief Message Sent
 *
 * This function is called by the application framework from the message sent
 * handler, when it is informed by the stack regarding the message sent status.
 * All of the values passed to the emberMessageSentHandler are passed on to this
 * callback. This provides an opportunity for the application to verify that its
 * message has been sent successfully and take the appropriate action. This
 * callback should return a bool value of true or false. A value of true
 * indicates that the message sent notification has been handled and should not
 * be handled by the application framework.
 *
 * @param destination   Ver.: always
 * @param apsFrame   Ver.: always
 * @param msgLen   Ver.: always
 * @param message   Ver.: always
 * @param status   Ver.: always
 */
bool emberAfMessageSentCallback(const chip::MessageSendDestination & destination, EmberApsFrame * apsFrame, uint16_t msgLen,
                                uint8_t * message, EmberStatus status);

/** @brief External Attribute Read
 *
 * Like emberAfExternalAttributeWriteCallback above, this function is called
 * when the framework needs to read an attribute that is not stored within the
 * Application Framework's data structures.
        All of the important
 * information about the attribute itself is passed as a pointer to an
 * EmberAfAttributeMetadata struct, which is stored within the application and
 * used to manage the attribute. A complete description of the
 * EmberAfAttributeMetadata struct is provided in
 * app/framework/include/af-types.h
        This function assumes that the
 * application is able to read the attribute, write it into the passed buffer,
 * and return immediately. Any attributes that require a state machine for
 * reading and writing are not really candidates for externalization at the
 * present time. The Application Framework does not currently include a state
 * machine for reading or writing attributes that must take place across a
 * series of application ticks. Attributes that cannot be read in a timely
 * manner should be stored within the Application Framework and updated
 * occasionally by the application code from within the
 * emberAfMainTickCallback.
        If the application was successfully able to
 * read the attribute and write it into the passed buffer, it should return a
 * value of EMBER_ZCL_STATUS_SUCCESS. Ensure that the size of the externally
 * managed attribute value is smaller than what the buffer can hold. In the case
 * of a buffer overflow throw an appropriate error such as
 * EMBER_ZCL_STATUS_INSUFFICIENT_SPACE. Any other return value indicates the
 * application was not able to read the attribute.
 *
 * @param endpoint   Ver.: always
 * @param clusterId   Ver.: always
 * @param attributeMetadata   Ver.: always
 * @param manufacturerCode   Ver.: always
 * @param buffer   Ver.: always
 * @param maxReadLength   Ver.: always
 * @param index   Ver.: always
 */
EmberAfStatus emberAfExternalAttributeReadCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
                                                   EmberAfAttributeMetadata * attributeMetadata, uint16_t manufacturerCode,
                                                   uint8_t * buffer, uint16_t maxReadLength, int32_t index = -1);

/** @brief External Attribute Write
 *
 * This function is called whenever the Application Framework needs to write an
 * attribute which is not stored within the data structures of the Application
 * Framework itself. One of the new features in Version 2 is the ability to
 * store attributes outside the Framework. This is particularly useful for
 * attributes that do not need to be stored because they can be read off the
 * hardware when they are needed, or are stored in some central location used by
 * many modules within the system. In this case, you can indicate that the
 * attribute is stored externally. When the framework needs to write an external
 * attribute, it makes a call to this callback.
        This callback is very
 * useful for host micros which need to store attributes in persistent memory.
 * Because each host micro (used with an Ember NCP) has its own type of
 * persistent memory storage, the Application Framework does not include the
 * ability to mark attributes as stored in flash the way that it does for Ember
 * SoCs like the EM35x. On a host micro, any attributes that need to be stored
 * in persistent memory should be marked as external and accessed through the
 * external read and write callbacks. Any host code associated with the
 * persistent storage should be implemented within this callback.
        All of
 * the important information about the attribute itself is passed as a pointer
 * to an EmberAfAttributeMetadata struct, which is stored within the application
 * and used to manage the attribute. A complete description of the
 * EmberAfAttributeMetadata struct is provided in
 * app/framework/include/af-types.h.
        This function assumes that the
 * application is able to write the attribute and return immediately. Any
 * attributes that require a state machine for reading and writing are not
 * candidates for externalization at the present time. The Application Framework
 * does not currently include a state machine for reading or writing attributes
 * that must take place across a series of application ticks. Attributes that
 * cannot be written immediately should be stored within the Application
 * Framework and updated occasionally by the application code from within the
 * emberAfMainTickCallback.
        If the application was successfully able to
 * write the attribute, it returns a value of EMBER_ZCL_STATUS_SUCCESS. Any
 * other return value indicates the application was not able to write the
 * attribute.
 *
 * @param endpoint   Ver.: always
 * @param clusterId   Ver.: always
 * @param attributeMetadata   Ver.: always
 * @param manufacturerCode   Ver.: always
 * @param buffer   Ver.: always
 * @param index   Ver.: always
 */
EmberAfStatus emberAfExternalAttributeWriteCallback(chip::EndpointId endpoint, chip::ClusterId clusterId,
                                                    EmberAfAttributeMetadata * attributeMetadata, uint16_t manufacturerCode,
                                                    uint8_t * buffer, int32_t index = -1);

/** @brief Get Current Time
 *
 * This callback is called when device attempts to get current time from the
 * hardware. If this device has means to retrieve exact time, then this method
 * should implement it. If the callback can't provide the exact time it should
 * return 0 to indicate failure. Default action is to return 0, which indicates
 * that device does not have access to real time.
 *
 */
uint32_t emberAfGetCurrentTimeCallback();

/** @brief Get Endpoint Info
 *
 * This function is a callback to an application implemented endpoint that
 * operates outside the normal application framework.  When the framework wishes
 * to perform operations with that endpoint it uses this callback to retrieve
 * the endpoint's information.  If the endpoint exists and the application can
 * provide data then true shall be returned.  Otherwise the callback must return
 * false.
 *
 * @param endpoint The endpoint to retrieve data for.  Ver.: always
 * @param returnNetworkIndex The index corresponding to the ZigBee network the
 * endpoint belongs to.  If not using a multi-network device, 0 must be
 * returned.  Otherwise on a multi-network device the stack will switch to this
 * network before sending the message.  Ver.: always
 * @param returnEndpointInfo A pointer to a data struct that will be written
 * with information about the endpoint.  Ver.: always
 */
bool emberAfGetEndpointInfoCallback(chip::EndpointId endpoint, uint8_t * returnNetworkIndex,
                                    EmberAfEndpointInfoStruct * returnEndpointInfo);

/** @brief Registration Abort
 *
 * This callback is called when the device should abort the registration
 * process.
 *
 */
void emberAfRegistrationAbortCallback();

/** @brief Interpan Send Message
 *
 * This function will send a raw MAC message with interpan frame format using
 * the passed parameters.
 *
 * @param header Interpan header info  Ver.: always
 * @param messageLength The length of the message received or to send  Ver.:
 * always
 * @param message The message data received or to send.  Ver.: always
 */
EmberStatus emberAfInterpanSendMessageCallback(EmberAfInterpanHeader * header, uint16_t messageLength, uint8_t * message);

/** @brief Start Move
 *
 * This function is called to initiate the process for a device to move (rejoin)
 * to a new parent.
 *
 */
bool emberAfStartMoveCallback();

/** @brief Pre Attribute Change
 *
 * This function is called by the application framework before it changes an
 * attribute value.  The value passed into this callback is the value to which
 * the attribute is to be set by the framework.  The application should return
 * chip::Protocols::InteractionModel::Status::Success to permit the change or
 * any other code to reject it.
 *
 * @param attributePath
 * @param mask
 * @param type
 * @param size
 * @param value
 */
chip::Protocols::InteractionModel::Status MatterPreAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath,
                                                                           uint8_t mask, uint8_t type, uint16_t size,
                                                                           uint8_t * value);

/** @brief Post Attribute Change
 *
 * This function is called by the application framework after it changes an
 * attribute value. The value passed into this callback is the value to which
 * the attribute was set by the framework.
 *
 * @param attributePath
 * @param mask
 * @param type
 * @param size
 * @param value
 */
void MatterPostAttributeChangeCallback(const chip::app::ConcreteAttributePath & attributePath, uint8_t mask, uint8_t type,
                                       uint16_t size, uint8_t * value);
