text: /*
   *
   *    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/gen/af-structs.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 <lib/support/Span.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 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 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPowerConfigurationClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Power Configuration Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPowerConfigurationClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Power Configuration Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPowerConfigurationClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Power Configuration Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPowerConfigurationClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Power Configuration Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPowerConfigurationClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  EmberAfAttributeType attributeType, uint16_t size,
                                                                                  uint8_t * value);
  
  /** @brief Power Configuration Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPowerConfigurationClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDeviceTemperatureConfigurationClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Device Temperature Configuration Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDeviceTemperatureConfigurationClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Device Temperature Configuration Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDeviceTemperatureConfigurationClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Device Temperature Configuration Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDeviceTemperatureConfigurationClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Device Temperature Configuration Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDeviceTemperatureConfigurationClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              EmberAfAttributeType attributeType,
                                                                                              uint16_t size, uint8_t * value);
  
  /** @brief Device Temperature Configuration Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDeviceTemperatureConfigurationClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIdentifyClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Identify Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIdentifyClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Identify Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIdentifyClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                uint16_t manufacturerCode);
  
  /** @brief Identify Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIdentifyClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                uint16_t manufacturerCode);
  
  /** @brief Identify Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIdentifyClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                        EmberAfAttributeType attributeType, uint16_t size,
                                                                        uint8_t * value);
  
  /** @brief Identify Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIdentifyClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                        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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGroupsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Groups Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGroupsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Groups Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGroupsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Groups Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGroupsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Groups Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGroupsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      EmberAfAttributeType attributeType, uint16_t size,
                                                                      uint8_t * value);
  
  /** @brief Groups Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGroupsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfScenesClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Scenes Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfScenesClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Scenes Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfScenesClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Scenes Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfScenesClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Scenes Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfScenesClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      EmberAfAttributeType attributeType, uint16_t size,
                                                                      uint8_t * value);
  
  /** @brief Scenes Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfScenesClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOnOffClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief On/off Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOnOffClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief On/off Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOnOffClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             uint16_t manufacturerCode);
  
  /** @brief On/off Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOnOffClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             uint16_t manufacturerCode);
  
  /** @brief On/off Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOnOffClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                     EmberAfAttributeType attributeType, uint16_t size,
                                                                     uint8_t * value);
  
  /** @brief On/off Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOnOffClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                     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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOnOffSwitchConfigurationClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief On/off Switch Configuration Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOnOffSwitchConfigurationClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief On/off Switch Configuration Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOnOffSwitchConfigurationClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                uint16_t manufacturerCode);
  
  /** @brief On/off Switch Configuration Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOnOffSwitchConfigurationClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                uint16_t manufacturerCode);
  
  /** @brief On/off Switch Configuration Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOnOffSwitchConfigurationClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        EmberAfAttributeType attributeType,
                                                                                        uint16_t size, uint8_t * value);
  
  /** @brief On/off Switch Configuration Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOnOffSwitchConfigurationClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfLevelControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Level Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfLevelControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Level Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfLevelControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Level Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfLevelControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Level Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfLevelControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            EmberAfAttributeType attributeType, uint16_t size,
                                                                            uint8_t * value);
  
  /** @brief Level Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfAlarmsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Alarms Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfAlarmsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Alarms Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfAlarmsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Alarms Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfAlarmsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Alarms Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfAlarmsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      EmberAfAttributeType attributeType, uint16_t size,
                                                                      uint8_t * value);
  
  /** @brief Alarms Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfAlarmsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTimeClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Time Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTimeClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Time Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTimeClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            uint16_t manufacturerCode);
  
  /** @brief Time Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTimeClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            uint16_t manufacturerCode);
  
  /** @brief Time Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTimeClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                    EmberAfAttributeType attributeType, uint16_t size,
                                                                    uint8_t * value);
  
  /** @brief Time Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTimeClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                    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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBinaryInputBasicClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Binary Input (Basic) Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBinaryInputBasicClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Binary Input (Basic) Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBinaryInputBasicClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Binary Input (Basic) Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBinaryInputBasicClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Binary Input (Basic) Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBinaryInputBasicClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                EmberAfAttributeType attributeType, uint16_t size,
                                                                                uint8_t * value);
  
  /** @brief Binary Input (Basic) Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBinaryInputBasicClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPowerProfileClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Power Profile Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPowerProfileClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Power Profile Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPowerProfileClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Power Profile Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPowerProfileClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Power Profile Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPowerProfileClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            EmberAfAttributeType attributeType, uint16_t size,
                                                                            uint8_t * value);
  
  /** @brief Power Profile Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPowerProfileClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Appliance Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Appliance Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                EmberAfAttributeType attributeType, uint16_t size,
                                                                                uint8_t * value);
  
  /** @brief Appliance Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDescriptorClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Descriptor Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDescriptorClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Descriptor Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDescriptorClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Descriptor Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDescriptorClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Descriptor Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDescriptorClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          EmberAfAttributeType attributeType, uint16_t size,
                                                                          uint8_t * value);
  
  /** @brief Descriptor Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDescriptorClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPollControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Poll Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPollControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Poll Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPollControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Poll Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPollControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Poll Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPollControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           EmberAfAttributeType attributeType, uint16_t size,
                                                                           uint8_t * value);
  
  /** @brief Poll Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPollControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBasicClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Basic Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBasicClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Basic Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBasicClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             uint16_t manufacturerCode);
  
  /** @brief Basic Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBasicClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             uint16_t manufacturerCode);
  
  /** @brief Basic Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBasicClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                     EmberAfAttributeType attributeType, uint16_t size,
                                                                     uint8_t * value);
  
  /** @brief Basic Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBasicClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                     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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOtaSoftwareUpdateProviderClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                             chip::AttributeId attributeId);
  
  /** @brief OTA Software Update Provider Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOtaSoftwareUpdateProviderClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                             chip::AttributeId attributeId);
  
  /** @brief OTA Software Update Provider Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOtaSoftwareUpdateProviderClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 uint16_t manufacturerCode);
  
  /** @brief OTA Software Update Provider Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOtaSoftwareUpdateProviderClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 uint16_t manufacturerCode);
  
  /** @brief OTA Software Update Provider Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOtaSoftwareUpdateProviderClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId,
                                                                                         EmberAfAttributeType attributeType,
                                                                                         uint16_t size, uint8_t * value);
  
  /** @brief OTA Software Update Provider Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOtaSoftwareUpdateProviderClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId,
                                                                                         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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOtaSoftwareUpdateRequestorClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId);
  
  /** @brief OTA Software Update Requestor Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOtaSoftwareUpdateRequestorClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId);
  
  /** @brief OTA Software Update Requestor Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOtaSoftwareUpdateRequestorClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                  chip::AttributeId attributeId,
                                                                                                  uint16_t manufacturerCode);
  
  /** @brief OTA Software Update Requestor Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOtaSoftwareUpdateRequestorClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                  chip::AttributeId attributeId,
                                                                                                  uint16_t manufacturerCode);
  
  /** @brief OTA Software Update Requestor Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOtaSoftwareUpdateRequestorClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          EmberAfAttributeType attributeType,
                                                                                          uint16_t size, uint8_t * value);
  
  /** @brief OTA Software Update Requestor Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOtaSoftwareUpdateRequestorClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          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);
  
  //
  // 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGeneralCommissioningClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief General Commissioning Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGeneralCommissioningClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief General Commissioning Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGeneralCommissioningClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            uint16_t manufacturerCode);
  
  /** @brief General Commissioning Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGeneralCommissioningClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            uint16_t manufacturerCode);
  
  /** @brief General Commissioning Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGeneralCommissioningClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    EmberAfAttributeType attributeType, uint16_t size,
                                                                                    uint8_t * value);
  
  /** @brief General Commissioning Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGeneralCommissioningClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfNetworkCommissioningClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Network Commissioning Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfNetworkCommissioningClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Network Commissioning Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfNetworkCommissioningClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            uint16_t manufacturerCode);
  
  /** @brief Network Commissioning Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfNetworkCommissioningClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            uint16_t manufacturerCode);
  
  /** @brief Network Commissioning Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfNetworkCommissioningClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    EmberAfAttributeType attributeType, uint16_t size,
                                                                                    uint8_t * value);
  
  /** @brief Network Commissioning Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfNetworkCommissioningClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDiagnosticLogsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Diagnostic Logs Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDiagnosticLogsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Diagnostic Logs Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDiagnosticLogsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      uint16_t manufacturerCode);
  
  /** @brief Diagnostic Logs Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDiagnosticLogsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      uint16_t manufacturerCode);
  
  /** @brief Diagnostic Logs Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDiagnosticLogsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              EmberAfAttributeType attributeType, uint16_t size,
                                                                              uint8_t * value);
  
  /** @brief Diagnostic Logs Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDiagnosticLogsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGeneralDiagnosticsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief General Diagnostics Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGeneralDiagnosticsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief General Diagnostics Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGeneralDiagnosticsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief General Diagnostics Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGeneralDiagnosticsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief General Diagnostics Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGeneralDiagnosticsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  EmberAfAttributeType attributeType, uint16_t size,
                                                                                  uint8_t * value);
  
  /** @brief General Diagnostics Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGeneralDiagnosticsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSoftwareDiagnosticsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Software Diagnostics Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSoftwareDiagnosticsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Software Diagnostics Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSoftwareDiagnosticsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Software Diagnostics Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSoftwareDiagnosticsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Software Diagnostics Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSoftwareDiagnosticsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   EmberAfAttributeType attributeType, uint16_t size,
                                                                                   uint8_t * value);
  
  /** @brief Software Diagnostics Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSoftwareDiagnosticsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfThreadNetworkDiagnosticsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Thread Network Diagnostics Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfThreadNetworkDiagnosticsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Thread Network Diagnostics Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfThreadNetworkDiagnosticsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                uint16_t manufacturerCode);
  
  /** @brief Thread Network Diagnostics Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfThreadNetworkDiagnosticsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                uint16_t manufacturerCode);
  
  /** @brief Thread Network Diagnostics Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfThreadNetworkDiagnosticsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        EmberAfAttributeType attributeType,
                                                                                        uint16_t size, uint8_t * value);
  
  /** @brief Thread Network Diagnostics Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfThreadNetworkDiagnosticsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfWiFiNetworkDiagnosticsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief WiFi Network Diagnostics Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfWiFiNetworkDiagnosticsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief WiFi Network Diagnostics Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfWiFiNetworkDiagnosticsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief WiFi Network Diagnostics Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfWiFiNetworkDiagnosticsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief WiFi Network Diagnostics Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfWiFiNetworkDiagnosticsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      EmberAfAttributeType attributeType,
                                                                                      uint16_t size, uint8_t * value);
  
  /** @brief WiFi Network Diagnostics Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfWiFiNetworkDiagnosticsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfEthernetNetworkDiagnosticsClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId);
  
  /** @brief Ethernet Network Diagnostics Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfEthernetNetworkDiagnosticsClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId);
  
  /** @brief Ethernet Network Diagnostics Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfEthernetNetworkDiagnosticsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                  chip::AttributeId attributeId,
                                                                                                  uint16_t manufacturerCode);
  
  /** @brief Ethernet Network Diagnostics Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfEthernetNetworkDiagnosticsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                  chip::AttributeId attributeId,
                                                                                                  uint16_t manufacturerCode);
  
  /** @brief Ethernet Network Diagnostics Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfEthernetNetworkDiagnosticsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          EmberAfAttributeType attributeType,
                                                                                          uint16_t size, uint8_t * value);
  
  /** @brief Ethernet Network Diagnostics Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfEthernetNetworkDiagnosticsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBridgedDeviceBasicClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Bridged Device Basic Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBridgedDeviceBasicClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Bridged Device Basic Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBridgedDeviceBasicClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Bridged Device Basic Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBridgedDeviceBasicClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Bridged Device Basic Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBridgedDeviceBasicClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  EmberAfAttributeType attributeType, uint16_t size,
                                                                                  uint8_t * value);
  
  /** @brief Bridged Device Basic Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBridgedDeviceBasicClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSwitchClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Switch Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSwitchClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Switch Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSwitchClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Switch Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSwitchClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief Switch Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSwitchClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      EmberAfAttributeType attributeType, uint16_t size,
                                                                      uint8_t * value);
  
  /** @brief Switch Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSwitchClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      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);
  
  //
  // 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOperationalCredentialsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Operational Credentials Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOperationalCredentialsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Operational Credentials Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOperationalCredentialsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief Operational Credentials Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOperationalCredentialsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief Operational Credentials Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOperationalCredentialsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      EmberAfAttributeType attributeType,
                                                                                      uint16_t size, uint8_t * value);
  
  /** @brief Operational Credentials Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOperationalCredentialsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFixedLabelClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Fixed Label Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFixedLabelClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Fixed Label Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFixedLabelClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Fixed Label Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFixedLabelClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Fixed Label Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFixedLabelClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          EmberAfAttributeType attributeType, uint16_t size,
                                                                          uint8_t * value);
  
  /** @brief Fixed Label Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFixedLabelClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfShadeConfigurationClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Shade Configuration Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfShadeConfigurationClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Shade Configuration Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfShadeConfigurationClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Shade Configuration Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfShadeConfigurationClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Shade Configuration Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfShadeConfigurationClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  EmberAfAttributeType attributeType, uint16_t size,
                                                                                  uint8_t * value);
  
  /** @brief Shade Configuration Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfShadeConfigurationClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDoorLockClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Door Lock Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDoorLockClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Door Lock Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDoorLockClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                uint16_t manufacturerCode);
  
  /** @brief Door Lock Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDoorLockClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                uint16_t manufacturerCode);
  
  /** @brief Door Lock Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDoorLockClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                        EmberAfAttributeType attributeType, uint16_t size,
                                                                        uint8_t * value);
  
  /** @brief Door Lock Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDoorLockClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                        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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfWindowCoveringClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Window Covering Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfWindowCoveringClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Window Covering Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfWindowCoveringClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      uint16_t manufacturerCode);
  
  /** @brief Window Covering Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfWindowCoveringClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      uint16_t manufacturerCode);
  
  /** @brief Window Covering Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfWindowCoveringClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              EmberAfAttributeType attributeType, uint16_t size,
                                                                              uint8_t * value);
  
  /** @brief Window Covering Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfWindowCoveringClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBarrierControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Barrier Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBarrierControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Barrier Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBarrierControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      uint16_t manufacturerCode);
  
  /** @brief Barrier Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBarrierControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      uint16_t manufacturerCode);
  
  /** @brief Barrier Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBarrierControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              EmberAfAttributeType attributeType, uint16_t size,
                                                                              uint8_t * value);
  
  /** @brief Barrier Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBarrierControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPumpConfigurationAndControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId);
  
  /** @brief Pump Configuration and Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPumpConfigurationAndControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId);
  
  /** @brief Pump Configuration and Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPumpConfigurationAndControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   uint16_t manufacturerCode);
  
  /** @brief Pump Configuration and Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPumpConfigurationAndControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   uint16_t manufacturerCode);
  
  /** @brief Pump Configuration and Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPumpConfigurationAndControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           EmberAfAttributeType attributeType,
                                                                                           uint16_t size, uint8_t * value);
  
  /** @brief Pump Configuration and Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPumpConfigurationAndControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfThermostatClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Thermostat Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfThermostatClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Thermostat Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfThermostatClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Thermostat Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfThermostatClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Thermostat Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfThermostatClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          EmberAfAttributeType attributeType, uint16_t size,
                                                                          uint8_t * value);
  
  /** @brief Thermostat Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfThermostatClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFanControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Fan Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFanControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Fan Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFanControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Fan Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFanControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Fan Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFanControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          EmberAfAttributeType attributeType, uint16_t size,
                                                                          uint8_t * value);
  
  /** @brief Fan Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFanControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDehumidificationControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Dehumidification Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDehumidificationControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Dehumidification Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDehumidificationControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Dehumidification Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDehumidificationControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Dehumidification Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDehumidificationControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       EmberAfAttributeType attributeType,
                                                                                       uint16_t size, uint8_t * value);
  
  /** @brief Dehumidification Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDehumidificationControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfThermostatUserInterfaceConfigurationClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId);
  
  /** @brief Thermostat User Interface Configuration Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfThermostatUserInterfaceConfigurationClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId);
  
  /** @brief Thermostat User Interface Configuration Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfThermostatUserInterfaceConfigurationClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Thermostat User Interface Configuration Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfThermostatUserInterfaceConfigurationClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Thermostat User Interface Configuration Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfThermostatUserInterfaceConfigurationClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Thermostat User Interface Configuration Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfThermostatUserInterfaceConfigurationClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfColorControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Color Control Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfColorControlClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Color Control Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfColorControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Color Control Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfColorControlClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Color Control Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfColorControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            EmberAfAttributeType attributeType, uint16_t size,
                                                                            uint8_t * value);
  
  /** @brief Color Control Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfColorControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBallastConfigurationClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Ballast Configuration Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBallastConfigurationClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Ballast Configuration Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBallastConfigurationClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            uint16_t manufacturerCode);
  
  /** @brief Ballast Configuration Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBallastConfigurationClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            uint16_t manufacturerCode);
  
  /** @brief Ballast Configuration Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBallastConfigurationClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    EmberAfAttributeType attributeType, uint16_t size,
                                                                                    uint8_t * value);
  
  /** @brief Ballast Configuration Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBallastConfigurationClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIlluminanceMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Illuminance Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIlluminanceMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Illuminance Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIlluminanceMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief Illuminance Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIlluminanceMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief Illuminance Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIlluminanceMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      EmberAfAttributeType attributeType,
                                                                                      uint16_t size, uint8_t * value);
  
  /** @brief Illuminance Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIlluminanceMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIlluminanceLevelSensingClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Illuminance Level Sensing Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIlluminanceLevelSensingClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Illuminance Level Sensing Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIlluminanceLevelSensingClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Illuminance Level Sensing Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIlluminanceLevelSensingClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Illuminance Level Sensing Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIlluminanceLevelSensingClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       EmberAfAttributeType attributeType,
                                                                                       uint16_t size, uint8_t * value);
  
  /** @brief Illuminance Level Sensing Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIlluminanceLevelSensingClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTemperatureMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Temperature Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTemperatureMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Temperature Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTemperatureMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief Temperature Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTemperatureMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              uint16_t manufacturerCode);
  
  /** @brief Temperature Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTemperatureMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      EmberAfAttributeType attributeType,
                                                                                      uint16_t size, uint8_t * value);
  
  /** @brief Temperature Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTemperatureMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId,
                                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPressureMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Pressure Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfPressureMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Pressure Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPressureMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Pressure Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfPressureMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Pressure Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPressureMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   EmberAfAttributeType attributeType, uint16_t size,
                                                                                   uint8_t * value);
  
  /** @brief Pressure Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfPressureMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFlowMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Flow Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFlowMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Flow Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFlowMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       uint16_t manufacturerCode);
  
  /** @brief Flow Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFlowMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       uint16_t manufacturerCode);
  
  /** @brief Flow Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFlowMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               EmberAfAttributeType attributeType, uint16_t size,
                                                                               uint8_t * value);
  
  /** @brief Flow Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFlowMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfRelativeHumidityMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId);
  
  /** @brief Relative Humidity Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfRelativeHumidityMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId);
  
  /** @brief Relative Humidity Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfRelativeHumidityMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   uint16_t manufacturerCode);
  
  /** @brief Relative Humidity Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfRelativeHumidityMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   uint16_t manufacturerCode);
  
  /** @brief Relative Humidity Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfRelativeHumidityMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           EmberAfAttributeType attributeType,
                                                                                           uint16_t size, uint8_t * value);
  
  /** @brief Relative Humidity Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfRelativeHumidityMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOccupancySensingClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Occupancy Sensing Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOccupancySensingClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Occupancy Sensing Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOccupancySensingClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Occupancy Sensing Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOccupancySensingClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Occupancy Sensing Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOccupancySensingClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                EmberAfAttributeType attributeType, uint16_t size,
                                                                                uint8_t * value);
  
  /** @brief Occupancy Sensing Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOccupancySensingClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfCarbonMonoxideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId);
  
  /** @brief Carbon Monoxide Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfCarbonMonoxideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId);
  
  /** @brief Carbon Monoxide Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfCarbonMonoxideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Carbon Monoxide Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfCarbonMonoxideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Carbon Monoxide Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfCarbonMonoxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Carbon Monoxide Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfCarbonMonoxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfCarbonDioxideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId);
  
  /** @brief Carbon Dioxide Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfCarbonDioxideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId);
  
  /** @brief Carbon Dioxide Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfCarbonDioxideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Carbon Dioxide Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfCarbonDioxideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Carbon Dioxide Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfCarbonDioxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Carbon Dioxide Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfCarbonDioxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfEthyleneConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Ethylene Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfEthyleneConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Ethylene Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfEthyleneConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Ethylene Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfEthyleneConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Ethylene Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfEthyleneConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                EmberAfAttributeType attributeType,
                                                                                                uint16_t size, uint8_t * value);
  
  /** @brief Ethylene Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfEthyleneConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfEthyleneOxideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId);
  
  /** @brief Ethylene Oxide Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfEthyleneOxideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId);
  
  /** @brief Ethylene Oxide Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfEthyleneOxideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Ethylene Oxide Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfEthyleneOxideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Ethylene Oxide Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfEthyleneOxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Ethylene Oxide Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfEthyleneOxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfHydrogenConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Hydrogen Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfHydrogenConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Hydrogen Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfHydrogenConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Hydrogen Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfHydrogenConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Hydrogen Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfHydrogenConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                EmberAfAttributeType attributeType,
                                                                                                uint16_t size, uint8_t * value);
  
  /** @brief Hydrogen Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfHydrogenConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfHydrogenSulphideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId);
  
  /** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfHydrogenSulphideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId);
  
  /** @brief Hydrogen Sulphide Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfHydrogenSulphideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfHydrogenSulphideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Hydrogen Sulphide Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfHydrogenSulphideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Hydrogen Sulphide Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfHydrogenSulphideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfNitricOxideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId);
  
  /** @brief Nitric Oxide Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfNitricOxideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId);
  
  /** @brief Nitric Oxide Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfNitricOxideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Nitric Oxide Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfNitricOxideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Nitric Oxide Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfNitricOxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   EmberAfAttributeType attributeType,
                                                                                                   uint16_t size, uint8_t * value);
  
  /** @brief Nitric Oxide Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfNitricOxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfNitrogenDioxideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId);
  
  /** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfNitrogenDioxideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId);
  
  /** @brief Nitrogen Dioxide Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfNitrogenDioxideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfNitrogenDioxideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Nitrogen Dioxide Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfNitrogenDioxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Nitrogen Dioxide Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfNitrogenDioxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOxygenConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Oxygen Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOxygenConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Oxygen Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOxygenConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Oxygen Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOxygenConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Oxygen Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOxygenConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              EmberAfAttributeType attributeType,
                                                                                              uint16_t size, uint8_t * value);
  
  /** @brief Oxygen Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOxygenConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOzoneConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId);
  
  /** @brief Ozone Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfOzoneConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId);
  
  /** @brief Ozone Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOzoneConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                     chip::AttributeId attributeId,
                                                                                                     uint16_t manufacturerCode);
  
  /** @brief Ozone Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfOzoneConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                     chip::AttributeId attributeId,
                                                                                                     uint16_t manufacturerCode);
  
  /** @brief Ozone Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOzoneConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                             chip::AttributeId attributeId,
                                                                                             EmberAfAttributeType attributeType,
                                                                                             uint16_t size, uint8_t * value);
  
  /** @brief Ozone Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfOzoneConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                             chip::AttributeId attributeId,
                                                                                             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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSulfurDioxideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId);
  
  /** @brief Sulfur Dioxide Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSulfurDioxideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId);
  
  /** @brief Sulfur Dioxide Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSulfurDioxideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Sulfur Dioxide Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSulfurDioxideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Sulfur Dioxide Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSulfurDioxideConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Sulfur Dioxide Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSulfurDioxideConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDissolvedOxygenConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId);
  
  /** @brief Dissolved Oxygen Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfDissolvedOxygenConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId);
  
  /** @brief Dissolved Oxygen Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDissolvedOxygenConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Dissolved Oxygen Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfDissolvedOxygenConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Dissolved Oxygen Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDissolvedOxygenConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Dissolved Oxygen Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfDissolvedOxygenConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBromateConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId);
  
  /** @brief Bromate Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBromateConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId);
  
  /** @brief Bromate Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBromateConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                       chip::AttributeId attributeId,
                                                                                                       uint16_t manufacturerCode);
  
  /** @brief Bromate Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBromateConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                       chip::AttributeId attributeId,
                                                                                                       uint16_t manufacturerCode);
  
  /** @brief Bromate Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBromateConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               EmberAfAttributeType attributeType,
                                                                                               uint16_t size, uint8_t * value);
  
  /** @brief Bromate Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBromateConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChloraminesConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId);
  
  /** @brief Chloramines Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChloraminesConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId);
  
  /** @brief Chloramines Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChloraminesConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Chloramines Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChloraminesConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Chloramines Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChloraminesConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   EmberAfAttributeType attributeType,
                                                                                                   uint16_t size, uint8_t * value);
  
  /** @brief Chloramines Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChloraminesConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                   chip::AttributeId attributeId,
                                                                                                   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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChlorineConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Chlorine Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChlorineConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Chlorine Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChlorineConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Chlorine Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChlorineConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Chlorine Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChlorineConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                EmberAfAttributeType attributeType,
                                                                                                uint16_t size, uint8_t * value);
  
  /** @brief Chlorine Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChlorineConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFecalColiformAndEColiConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId);
  
  /** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFecalColiformAndEColiConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId);
  
  /** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFecalColiformAndEColiConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFecalColiformAndEColiConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Fecal coliform and E. Coli Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFecalColiformAndEColiConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFecalColiformAndEColiConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFluorideConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Fluoride Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfFluorideConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId);
  
  /** @brief Fluoride Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFluorideConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Fluoride Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfFluorideConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                        chip::AttributeId attributeId,
                                                                                                        uint16_t manufacturerCode);
  
  /** @brief Fluoride Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFluorideConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                EmberAfAttributeType attributeType,
                                                                                                uint16_t size, uint8_t * value);
  
  /** @brief Fluoride Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfFluorideConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfHaloaceticAcidsConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId);
  
  /** @brief Haloacetic Acids Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfHaloaceticAcidsConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId);
  
  /** @brief Haloacetic Acids Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfHaloaceticAcidsConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Haloacetic Acids Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfHaloaceticAcidsConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Haloacetic Acids Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfHaloaceticAcidsConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Haloacetic Acids Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfHaloaceticAcidsConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTotalTrihalomethanesConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId);
  
  /** @brief Total Trihalomethanes Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTotalTrihalomethanesConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId);
  
  /** @brief Total Trihalomethanes Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTotalTrihalomethanesConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Total Trihalomethanes Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTotalTrihalomethanesConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Total Trihalomethanes Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTotalTrihalomethanesConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Total Trihalomethanes Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTotalTrihalomethanesConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTotalColiformBacteriaConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId);
  
  /** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTotalColiformBacteriaConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId);
  
  /** @brief Total Coliform Bacteria Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTotalColiformBacteriaConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTotalColiformBacteriaConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Total Coliform Bacteria Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTotalColiformBacteriaConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Total Coliform Bacteria Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTotalColiformBacteriaConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTurbidityConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId);
  
  /** @brief Turbidity Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTurbidityConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId);
  
  /** @brief Turbidity Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTurbidityConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Turbidity Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTurbidityConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Turbidity Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTurbidityConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 EmberAfAttributeType attributeType,
                                                                                                 uint16_t size, uint8_t * value);
  
  /** @brief Turbidity Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTurbidityConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfCopperConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Copper Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfCopperConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Copper Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfCopperConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Copper Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfCopperConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Copper Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfCopperConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              EmberAfAttributeType attributeType,
                                                                                              uint16_t size, uint8_t * value);
  
  /** @brief Copper Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfCopperConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfLeadConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId);
  
  /** @brief Lead Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfLeadConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId);
  
  /** @brief Lead Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfLeadConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                    chip::AttributeId attributeId,
                                                                                                    uint16_t manufacturerCode);
  
  /** @brief Lead Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfLeadConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                    chip::AttributeId attributeId,
                                                                                                    uint16_t manufacturerCode);
  
  /** @brief Lead Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfLeadConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            EmberAfAttributeType attributeType,
                                                                                            uint16_t size, uint8_t * value);
  
  /** @brief Lead Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfLeadConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                            chip::AttributeId attributeId,
                                                                                            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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfManganeseConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId);
  
  /** @brief Manganese Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfManganeseConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId);
  
  /** @brief Manganese Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfManganeseConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Manganese Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfManganeseConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Manganese Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfManganeseConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 EmberAfAttributeType attributeType,
                                                                                                 uint16_t size, uint8_t * value);
  
  /** @brief Manganese Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfManganeseConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSulfateConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId);
  
  /** @brief Sulfate Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSulfateConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId);
  
  /** @brief Sulfate Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSulfateConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                       chip::AttributeId attributeId,
                                                                                                       uint16_t manufacturerCode);
  
  /** @brief Sulfate Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSulfateConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                       chip::AttributeId attributeId,
                                                                                                       uint16_t manufacturerCode);
  
  /** @brief Sulfate Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSulfateConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               EmberAfAttributeType attributeType,
                                                                                               uint16_t size, uint8_t * value);
  
  /** @brief Sulfate Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSulfateConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBromodichloromethaneConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId);
  
  /** @brief Bromodichloromethane Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBromodichloromethaneConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId);
  
  /** @brief Bromodichloromethane Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBromodichloromethaneConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Bromodichloromethane Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBromodichloromethaneConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Bromodichloromethane Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBromodichloromethaneConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Bromodichloromethane Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBromodichloromethaneConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBromoformConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId);
  
  /** @brief Bromoform Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBromoformConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId);
  
  /** @brief Bromoform Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBromoformConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Bromoform Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBromoformConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Bromoform Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBromoformConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 EmberAfAttributeType attributeType,
                                                                                                 uint16_t size, uint8_t * value);
  
  /** @brief Bromoform Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBromoformConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChlorodibromomethaneConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId);
  
  /** @brief Chlorodibromomethane Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChlorodibromomethaneConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId);
  
  /** @brief Chlorodibromomethane Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChlorodibromomethaneConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Chlorodibromomethane Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChlorodibromomethaneConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Chlorodibromomethane Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChlorodibromomethaneConcentrationMeasurementClusterServerPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, EmberAfAttributeType attributeType, uint16_t size, uint8_t * value);
  
  /** @brief Chlorodibromomethane Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChlorodibromomethaneConcentrationMeasurementClusterClientPreAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, 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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChloroformConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId);
  
  /** @brief Chloroform Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfChloroformConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                      chip::AttributeId attributeId);
  
  /** @brief Chloroform Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChloroformConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Chloroform Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfChloroformConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(
      chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode);
  
  /** @brief Chloroform Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChloroformConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                  chip::AttributeId attributeId,
                                                                                                  EmberAfAttributeType attributeType,
                                                                                                  uint16_t size, uint8_t * value);
  
  /** @brief Chloroform Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfChloroformConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                  chip::AttributeId attributeId,
                                                                                                  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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSodiumConcentrationMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Sodium Concentration Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSodiumConcentrationMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId);
  
  /** @brief Sodium Concentration Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSodiumConcentrationMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Sodium Concentration Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSodiumConcentrationMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                      chip::AttributeId attributeId,
                                                                                                      uint16_t manufacturerCode);
  
  /** @brief Sodium Concentration Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSodiumConcentrationMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              EmberAfAttributeType attributeType,
                                                                                              uint16_t size, uint8_t * value);
  
  /** @brief Sodium Concentration Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSodiumConcentrationMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                              chip::AttributeId attributeId,
                                                                                              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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIasZoneClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief IAS Zone Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIasZoneClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief IAS Zone Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIasZoneClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               uint16_t manufacturerCode);
  
  /** @brief IAS Zone Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIasZoneClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               uint16_t manufacturerCode);
  
  /** @brief IAS Zone Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIasZoneClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                       EmberAfAttributeType attributeType, uint16_t size,
                                                                       uint8_t * value);
  
  /** @brief IAS Zone Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIasZoneClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                       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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIasAceClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief IAS ACE Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIasAceClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief IAS ACE Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIasAceClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief IAS ACE Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIasAceClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                              chip::AttributeId attributeId,
                                                                              uint16_t manufacturerCode);
  
  /** @brief IAS ACE Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIasAceClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      EmberAfAttributeType attributeType, uint16_t size,
                                                                      uint8_t * value);
  
  /** @brief IAS ACE Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIasAceClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                      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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIasWdClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief IAS WD Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfIasWdClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief IAS WD Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIasWdClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             uint16_t manufacturerCode);
  
  /** @brief IAS WD Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfIasWdClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             uint16_t manufacturerCode);
  
  /** @brief IAS WD Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIasWdClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                     EmberAfAttributeType attributeType, uint16_t size,
                                                                     uint8_t * value);
  
  /** @brief IAS WD Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfIasWdClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                     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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfWakeOnLanClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Wake on LAN Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfWakeOnLanClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Wake on LAN Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfWakeOnLanClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId,
                                                                                 uint16_t manufacturerCode);
  
  /** @brief Wake on LAN Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfWakeOnLanClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId,
                                                                                 uint16_t manufacturerCode);
  
  /** @brief Wake on LAN Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfWakeOnLanClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                         EmberAfAttributeType attributeType, uint16_t size,
                                                                         uint8_t * value);
  
  /** @brief Wake on LAN Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfWakeOnLanClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                         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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTvChannelClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief TV Channel Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTvChannelClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief TV Channel Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTvChannelClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId,
                                                                                 uint16_t manufacturerCode);
  
  /** @brief TV Channel Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTvChannelClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId,
                                                                                 uint16_t manufacturerCode);
  
  /** @brief TV Channel Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTvChannelClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                         EmberAfAttributeType attributeType, uint16_t size,
                                                                         uint8_t * value);
  
  /** @brief TV Channel Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTvChannelClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                         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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTargetNavigatorClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Target Navigator Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTargetNavigatorClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Target Navigator Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTargetNavigatorClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       uint16_t manufacturerCode);
  
  /** @brief Target Navigator Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTargetNavigatorClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       uint16_t manufacturerCode);
  
  /** @brief Target Navigator Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTargetNavigatorClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               EmberAfAttributeType attributeType, uint16_t size,
                                                                               uint8_t * value);
  
  /** @brief Target Navigator Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTargetNavigatorClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMediaPlaybackClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Media Playback Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMediaPlaybackClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Media Playback Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMediaPlaybackClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId,
                                                                                     uint16_t manufacturerCode);
  
  /** @brief Media Playback Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMediaPlaybackClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId,
                                                                                     uint16_t manufacturerCode);
  
  /** @brief Media Playback Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMediaPlaybackClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             EmberAfAttributeType attributeType, uint16_t size,
                                                                             uint8_t * value);
  
  /** @brief Media Playback Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMediaPlaybackClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                             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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMediaInputClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Media Input Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMediaInputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Media Input Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMediaInputClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Media Input Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMediaInputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  uint16_t manufacturerCode);
  
  /** @brief Media Input Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMediaInputClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          EmberAfAttributeType attributeType, uint16_t size,
                                                                          uint8_t * value);
  
  /** @brief Media Input Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMediaInputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                          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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfLowPowerClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Low Power Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfLowPowerClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Low Power Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfLowPowerClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                uint16_t manufacturerCode);
  
  /** @brief Low Power Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfLowPowerClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                uint16_t manufacturerCode);
  
  /** @brief Low Power Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfLowPowerClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                        EmberAfAttributeType attributeType, uint16_t size,
                                                                        uint8_t * value);
  
  /** @brief Low Power Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfLowPowerClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                        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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfKeypadInputClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Keypad Input Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfKeypadInputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Keypad Input Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfKeypadInputClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Keypad Input Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfKeypadInputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Keypad Input Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfKeypadInputClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           EmberAfAttributeType attributeType, uint16_t size,
                                                                           uint8_t * value);
  
  /** @brief Keypad Input Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfKeypadInputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfContentLauncherClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Content Launcher Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfContentLauncherClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Content Launcher Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfContentLauncherClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       uint16_t manufacturerCode);
  
  /** @brief Content Launcher Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfContentLauncherClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       uint16_t manufacturerCode);
  
  /** @brief Content Launcher Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfContentLauncherClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               EmberAfAttributeType attributeType, uint16_t size,
                                                                               uint8_t * value);
  
  /** @brief Content Launcher Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfContentLauncherClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfAudioOutputClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Audio Output Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfAudioOutputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Audio Output Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfAudioOutputClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Audio Output Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfAudioOutputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Audio Output Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfAudioOutputClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           EmberAfAttributeType attributeType, uint16_t size,
                                                                           uint8_t * value);
  
  /** @brief Audio Output Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfAudioOutputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplicationLauncherClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Application Launcher Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplicationLauncherClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Application Launcher Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplicationLauncherClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Application Launcher Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplicationLauncherClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Application Launcher Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplicationLauncherClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   EmberAfAttributeType attributeType, uint16_t size,
                                                                                   uint8_t * value);
  
  /** @brief Application Launcher Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplicationLauncherClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplicationBasicClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Application Basic Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplicationBasicClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Application Basic Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplicationBasicClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Application Basic Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplicationBasicClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        uint16_t manufacturerCode);
  
  /** @brief Application Basic Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplicationBasicClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                EmberAfAttributeType attributeType, uint16_t size,
                                                                                uint8_t * value);
  
  /** @brief Application Basic Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplicationBasicClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                chip::AttributeId attributeId,
                                                                                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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfAccountLoginClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Account Login Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfAccountLoginClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Account Login Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfAccountLoginClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Account Login Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfAccountLoginClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                    chip::AttributeId attributeId,
                                                                                    uint16_t manufacturerCode);
  
  /** @brief Account Login Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfAccountLoginClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            EmberAfAttributeType attributeType, uint16_t size,
                                                                            uint8_t * value);
  
  /** @brief Account Login Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfAccountLoginClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                            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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTestClusterClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Test Cluster Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfTestClusterClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Test Cluster Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTestClusterClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Test Cluster Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfTestClusterClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   uint16_t manufacturerCode);
  
  /** @brief Test Cluster Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTestClusterClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           EmberAfAttributeType attributeType, uint16_t size,
                                                                           uint8_t * value);
  
  /** @brief Test Cluster Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfTestClusterClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                           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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMessagingClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Messaging Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMessagingClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Messaging Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMessagingClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId,
                                                                                 uint16_t manufacturerCode);
  
  /** @brief Messaging Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMessagingClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                 chip::AttributeId attributeId,
                                                                                 uint16_t manufacturerCode);
  
  /** @brief Messaging Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMessagingClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                         EmberAfAttributeType attributeType, uint16_t size,
                                                                         uint8_t * value);
  
  /** @brief Messaging Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMessagingClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                         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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceIdentificationClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Identification Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceIdentificationClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Identification Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceIdentificationClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Appliance Identification Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceIdentificationClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Appliance Identification Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceIdentificationClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       EmberAfAttributeType attributeType,
                                                                                       uint16_t size, uint8_t * value);
  
  /** @brief Appliance Identification Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceIdentificationClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMeterIdentificationClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Meter Identification Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfMeterIdentificationClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Meter Identification Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMeterIdentificationClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Meter Identification Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfMeterIdentificationClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Meter Identification Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMeterIdentificationClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   EmberAfAttributeType attributeType, uint16_t size,
                                                                                   uint8_t * value);
  
  /** @brief Meter Identification Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfMeterIdentificationClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceEventsAndAlertClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Events and Alert Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceEventsAndAlertClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Events and Alert Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceEventsAndAlertClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Appliance Events and Alert Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceEventsAndAlertClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                               chip::AttributeId attributeId,
                                                                                               uint16_t manufacturerCode);
  
  /** @brief Appliance Events and Alert Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceEventsAndAlertClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       EmberAfAttributeType attributeType,
                                                                                       uint16_t size, uint8_t * value);
  
  /** @brief Appliance Events and Alert Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceEventsAndAlertClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                       chip::AttributeId attributeId,
                                                                                       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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceStatisticsClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Statistics Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfApplianceStatisticsClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Appliance Statistics Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceStatisticsClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Appliance Statistics Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfApplianceStatisticsClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                           chip::AttributeId attributeId,
                                                                                           uint16_t manufacturerCode);
  
  /** @brief Appliance Statistics Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceStatisticsClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   EmberAfAttributeType attributeType, uint16_t size,
                                                                                   uint8_t * value);
  
  /** @brief Appliance Statistics Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfApplianceStatisticsClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                   chip::AttributeId attributeId,
                                                                                   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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfElectricalMeasurementClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Electrical Measurement Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfElectricalMeasurementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Electrical Measurement Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfElectricalMeasurementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                             chip::AttributeId attributeId,
                                                                                             uint16_t manufacturerCode);
  
  /** @brief Electrical Measurement Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfElectricalMeasurementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                             chip::AttributeId attributeId,
                                                                                             uint16_t manufacturerCode);
  
  /** @brief Electrical Measurement Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfElectricalMeasurementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId,
                                                                                     EmberAfAttributeType attributeType,
                                                                                     uint16_t size, uint8_t * value);
  
  /** @brief Electrical Measurement Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfElectricalMeasurementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                     chip::AttributeId attributeId,
                                                                                     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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBindingClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Binding Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfBindingClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Binding Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBindingClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               uint16_t manufacturerCode);
  
  /** @brief Binding Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfBindingClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                               chip::AttributeId attributeId,
                                                                               uint16_t manufacturerCode);
  
  /** @brief Binding Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBindingClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                       EmberAfAttributeType attributeType, uint16_t size,
                                                                       uint8_t * value);
  
  /** @brief Binding Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfBindingClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId,
                                                                       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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGroupKeyManagementClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Group Key Management Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfGroupKeyManagementClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Group Key Management Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGroupKeyManagementClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Group Key Management Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfGroupKeyManagementClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                          chip::AttributeId attributeId,
                                                                                          uint16_t manufacturerCode);
  
  /** @brief Group Key Management Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGroupKeyManagementClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  EmberAfAttributeType attributeType, uint16_t size,
                                                                                  uint8_t * value);
  
  /** @brief Group Key Management Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfGroupKeyManagementClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                  chip::AttributeId attributeId,
                                                                                  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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSampleMfgSpecificClusterClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Sample Mfg Specific Cluster Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSampleMfgSpecificClusterClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId);
  
  /** @brief Sample Mfg Specific Cluster Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSampleMfgSpecificClusterClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                uint16_t manufacturerCode);
  
  /** @brief Sample Mfg Specific Cluster Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSampleMfgSpecificClusterClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                chip::AttributeId attributeId,
                                                                                                uint16_t manufacturerCode);
  
  /** @brief Sample Mfg Specific Cluster Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSampleMfgSpecificClusterClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        EmberAfAttributeType attributeType,
                                                                                        uint16_t size, uint8_t * value);
  
  /** @brief Sample Mfg Specific Cluster Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSampleMfgSpecificClusterClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                        chip::AttributeId attributeId,
                                                                                        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 endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSampleMfgSpecificCluster2ClusterServerAttributeChangedCallback(chip::EndpointId endpoint,
                                                                             chip::AttributeId attributeId);
  
  /** @brief Sample Mfg Specific Cluster 2 Cluster Client Attribute Changed
   *
   * Client Attribute Changed
   *
   * @param endpoint    Endpoint that is being initialized
   * @param attributeId Attribute that changed
   */
  void emberAfSampleMfgSpecificCluster2ClusterClientAttributeChangedCallback(chip::EndpointId endpoint,
                                                                             chip::AttributeId attributeId);
  
  /** @brief Sample Mfg Specific Cluster 2 Cluster Server Manufacturer Specific Attribute Changed
   *
   * Server Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSampleMfgSpecificCluster2ClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 uint16_t manufacturerCode);
  
  /** @brief Sample Mfg Specific Cluster 2 Cluster Client Manufacturer Specific Attribute Changed
   *
   * Client Manufacturer Specific Attribute Changed
   *
   * @param endpoint          Endpoint that is being initialized
   * @param attributeId       Attribute that changed
   * @param manufacturerCode  Manufacturer Code of the attribute that changed
   */
  void emberAfSampleMfgSpecificCluster2ClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                                 chip::AttributeId attributeId,
                                                                                                 uint16_t manufacturerCode);
  
  /** @brief Sample Mfg Specific Cluster 2 Cluster Server Message Sent
   *
   * Server Message Sent
   *
   * @param type               The type of 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 type               The type of 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 endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSampleMfgSpecificCluster2ClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId,
                                                                                         EmberAfAttributeType attributeType,
                                                                                         uint16_t size, uint8_t * value);
  
  /** @brief Sample Mfg Specific Cluster 2 Cluster Client Pre Attribute Changed
   *
   * Client Pre Attribute Changed
   *
   * @param endpoint      Endpoint that is being initialized
   * @param attributeId   Attribute to be changed
   * @param attributeType Attribute type
   * @param size          Attribute size
   * @param value         Attribute value
   */
  EmberAfStatus emberAfSampleMfgSpecificCluster2ClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint,
                                                                                         chip::AttributeId attributeId,
                                                                                         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  Cluster Identify Command callback (from client)
   */
  bool emberAfIdentifyClusterIdentifyCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                              uint16_t identifyTime);
  /**
   * @brief  Cluster IdentifyQueryResponse Command callback (from server)
   */
  bool emberAfIdentifyClusterIdentifyQueryResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint16_t timeout);
  /**
   * @brief  Cluster IdentifyQuery Command callback (from client)
   */
  bool emberAfIdentifyClusterIdentifyQueryCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster EZModeInvoke Command callback (from client)
   */
  bool emberAfIdentifyClusterEZModeInvokeCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t action);
  /**
   * @brief  Cluster UpdateCommissionState Command callback (from client)
   */
  bool emberAfIdentifyClusterUpdateCommissionStateCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                           uint8_t action, uint8_t commissionStateMask);
  /**
   * @brief  Cluster TriggerEffect Command callback (from client)
   */
  bool emberAfIdentifyClusterTriggerEffectCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                   uint8_t effectId, uint8_t effectVariant);
  /**
   * @brief  Cluster AddGroup Command callback (from client)
   */
  bool emberAfGroupsClusterAddGroupCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId,
                                            uint8_t * groupName);
  /**
   * @brief  Cluster AddGroupResponse Command callback (from server)
   */
  bool emberAfGroupsClusterAddGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status,
                                                    uint16_t groupId);
  /**
   * @brief  Cluster ViewGroup Command callback (from client)
   */
  bool emberAfGroupsClusterViewGroupCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId);
  /**
   * @brief  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  Cluster GetGroupMembership Command callback (from client)
   */
  bool emberAfGroupsClusterGetGroupMembershipCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                      uint8_t groupCount,
                                                      /* TYPE WARNING: array array defaults to */ uint8_t * groupList);
  /**
   * @brief  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  Cluster RemoveGroup Command callback (from client)
   */
  bool emberAfGroupsClusterRemoveGroupCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId);
  /**
   * @brief  Cluster RemoveGroupResponse Command callback (from server)
   */
  bool emberAfGroupsClusterRemoveGroupResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                       uint8_t status, uint16_t groupId);
  /**
   * @brief  Cluster RemoveAllGroups Command callback (from client)
   */
  bool emberAfGroupsClusterRemoveAllGroupsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster AddGroupIfIdentifying Command callback (from client)
   */
  bool emberAfGroupsClusterAddGroupIfIdentifyingCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint16_t groupId, uint8_t * groupName);
  /**
   * @brief  Cluster AddScene Command callback (from client)
   */
  bool emberAfScenesClusterAddSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId,
                                            uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName,
                                            /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
  /**
   * @brief  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  Cluster ViewScene Command callback (from client)
   */
  bool emberAfScenesClusterViewSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId,
                                             uint8_t sceneId);
  /**
   * @brief  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  Cluster RemoveScene Command callback (from client)
   */
  bool emberAfScenesClusterRemoveSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId,
                                               uint8_t sceneId);
  /**
   * @brief  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  Cluster RemoveAllScenes Command callback (from client)
   */
  bool emberAfScenesClusterRemoveAllScenesCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                   uint16_t groupId);
  /**
   * @brief  Cluster RemoveAllScenesResponse Command callback (from server)
   */
  bool emberAfScenesClusterRemoveAllScenesResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint8_t status, uint16_t groupId);
  /**
   * @brief  Cluster StoreScene Command callback (from client)
   */
  bool emberAfScenesClusterStoreSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId,
                                              uint8_t sceneId);
  /**
   * @brief  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  Cluster RecallScene Command callback (from client)
   */
  bool emberAfScenesClusterRecallSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t groupId,
                                               uint8_t sceneId, uint16_t transitionTime);
  /**
   * @brief  Cluster GetSceneMembership Command callback (from client)
   */
  bool emberAfScenesClusterGetSceneMembershipCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                      uint16_t groupId);
  /**
   * @brief  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  Cluster EnhancedAddScene Command callback (from client)
   */
  bool emberAfScenesClusterEnhancedAddSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                    uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName,
                                                    /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets);
  /**
   * @brief  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  Cluster EnhancedViewScene Command callback (from client)
   */
  bool emberAfScenesClusterEnhancedViewSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                     uint16_t groupId, uint8_t sceneId);
  /**
   * @brief  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  Cluster CopyScene Command callback (from client)
   */
  bool emberAfScenesClusterCopySceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t mode,
                                             uint16_t groupIdFrom, uint8_t sceneIdFrom, uint16_t groupIdTo, uint8_t sceneIdTo);
  /**
   * @brief  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  Cluster Off Command callback (from client)
   */
  bool emberAfOnOffClusterOffCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SampleMfgSpecificOffWithTransition Command callback (from client)
   */
  bool emberAfOnOffClusterSampleMfgSpecificOffWithTransitionCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster On Command callback (from client)
   */
  bool emberAfOnOffClusterOnCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SampleMfgSpecificOnWithTransition Command callback (from client)
   */
  bool emberAfOnOffClusterSampleMfgSpecificOnWithTransitionCallback(chip::EndpointId endpoint,
                                                                    chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SampleMfgSpecificOnWithTransition2 Command callback (from client)
   */
  bool emberAfOnOffClusterSampleMfgSpecificOnWithTransition2Callback(chip::EndpointId endpoint,
                                                                     chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster Toggle Command callback (from client)
   */
  bool emberAfOnOffClusterToggleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SampleMfgSpecificToggleWithTransition Command callback (from client)
   */
  bool emberAfOnOffClusterSampleMfgSpecificToggleWithTransitionCallback(chip::EndpointId endpoint,
                                                                        chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SampleMfgSpecificToggleWithTransition2 Command callback (from client)
   */
  bool emberAfOnOffClusterSampleMfgSpecificToggleWithTransition2Callback(chip::EndpointId endpoint,
                                                                         chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster OffWithEffect Command callback (from client)
   */
  bool emberAfOnOffClusterOffWithEffectCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t EffectId,
                                                uint8_t EffectVariant);
  /**
   * @brief  Cluster OnWithRecallGlobalScene Command callback (from client)
   */
  bool emberAfOnOffClusterOnWithRecallGlobalSceneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster OnWithTimedOff Command callback (from client)
   */
  bool emberAfOnOffClusterOnWithTimedOffCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                 uint8_t OnOffControl, uint16_t OnTime, uint16_t OffWaitTime);
  /**
   * @brief  Cluster MoveToLevel Command callback (from client)
   */
  bool emberAfLevelControlClusterMoveToLevelCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t level,
                                                     uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride);
  /**
   * @brief  Cluster Move Command callback (from client)
   */
  bool emberAfLevelControlClusterMoveCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t moveMode,
                                              uint8_t rate, uint8_t optionMask, uint8_t optionOverride);
  /**
   * @brief  Cluster Step Command callback (from client)
   */
  bool emberAfLevelControlClusterStepCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t stepMode,
                                              uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride);
  /**
   * @brief  Cluster Stop Command callback (from client)
   */
  bool emberAfLevelControlClusterStopCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t optionMask,
                                              uint8_t optionOverride);
  /**
   * @brief  Cluster MoveToLevelWithOnOff Command callback (from client)
   */
  bool emberAfLevelControlClusterMoveToLevelWithOnOffCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                              uint8_t level, uint16_t transitionTime);
  /**
   * @brief  Cluster MoveWithOnOff Command callback (from client)
   */
  bool emberAfLevelControlClusterMoveWithOnOffCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                       uint8_t moveMode, uint8_t rate);
  /**
   * @brief  Cluster StepWithOnOff Command callback (from client)
   */
  bool emberAfLevelControlClusterStepWithOnOffCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                       uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime);
  /**
   * @brief  Cluster StopWithOnOff Command callback (from client)
   */
  bool emberAfLevelControlClusterStopWithOnOffCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ResetAlarm Command callback (from client)
   */
  bool emberAfAlarmsClusterResetAlarmCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t alarmCode,
                                              chip::ClusterId clusterId);
  /**
   * @brief  Cluster Alarm Command callback (from server)
   */
  bool emberAfAlarmsClusterAlarmCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t alarmCode,
                                         chip::ClusterId clusterId);
  /**
   * @brief  Cluster ResetAllAlarms Command callback (from client)
   */
  bool emberAfAlarmsClusterResetAllAlarmsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster GetAlarm Command callback (from client)
   */
  bool emberAfAlarmsClusterGetAlarmCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ResetAlarmLog Command callback (from client)
   */
  bool emberAfAlarmsClusterResetAlarmLogCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster PowerProfileRequest Command callback (from client)
   */
  bool emberAfPowerProfileClusterPowerProfileRequestCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                             uint8_t powerProfileId);
  /**
   * @brief  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  Cluster PowerProfileStateRequest Command callback (from client)
   */
  bool emberAfPowerProfileClusterPowerProfileStateRequestCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster GetPowerProfilePriceResponse Command callback (from client)
   */
  bool emberAfPowerProfileClusterGetPowerProfilePriceResponseCallback(chip::EndpointId endpoint,
                                                                      chip::app::CommandHandler * commandObj, uint8_t powerProfileId,
                                                                      uint16_t currency, uint32_t price, uint8_t priceTrailingDigit);
  /**
   * @brief  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  Cluster GetOverallSchedulePriceResponse Command callback (from client)
   */
  bool emberAfPowerProfileClusterGetOverallSchedulePriceResponseCallback(chip::EndpointId endpoint,
                                                                         chip::app::CommandHandler * commandObj, uint16_t currency,
                                                                         uint32_t price, uint8_t priceTrailingDigit);
  /**
   * @brief  Cluster GetPowerProfilePrice Command callback (from server)
   */
  bool emberAfPowerProfileClusterGetPowerProfilePriceCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t powerProfileId);
  /**
   * @brief  Cluster EnergyPhasesScheduleNotification Command callback (from client)
   */
  bool emberAfPowerProfileClusterEnergyPhasesScheduleNotificationCallback(
      chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t powerProfileId, uint8_t numOfScheduledPhases,
      /* TYPE WARNING: array array defaults to */ uint8_t * scheduledPhases);
  /**
   * @brief  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  Cluster EnergyPhasesScheduleResponse Command callback (from client)
   */
  bool emberAfPowerProfileClusterEnergyPhasesScheduleResponseCallback(
      chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t powerProfileId, uint8_t numOfScheduledPhases,
      /* TYPE WARNING: array array defaults to */ uint8_t * scheduledPhases);
  /**
   * @brief  Cluster GetOverallSchedulePrice Command callback (from server)
   */
  bool emberAfPowerProfileClusterGetOverallSchedulePriceCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster PowerProfileScheduleConstraintsRequest Command callback (from client)
   */
  bool emberAfPowerProfileClusterPowerProfileScheduleConstraintsRequestCallback(chip::EndpointId endpoint,
                                                                                chip::app::CommandHandler * commandObj,
                                                                                uint8_t powerProfileId);
  /**
   * @brief  Cluster EnergyPhasesScheduleRequest Command callback (from server)
   */
  bool emberAfPowerProfileClusterEnergyPhasesScheduleRequestCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                     uint8_t powerProfileId);
  /**
   * @brief  Cluster EnergyPhasesScheduleStateRequest Command callback (from client)
   */
  bool emberAfPowerProfileClusterEnergyPhasesScheduleStateRequestCallback(chip::EndpointId endpoint,
                                                                          chip::app::CommandHandler * commandObj,
                                                                          uint8_t powerProfileId);
  /**
   * @brief  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  Cluster GetPowerProfilePriceExtendedResponse Command callback (from client)
   */
  bool emberAfPowerProfileClusterGetPowerProfilePriceExtendedResponseCallback(chip::EndpointId endpoint,
                                                                              chip::app::CommandHandler * commandObj,
                                                                              uint8_t powerProfileId, uint16_t currency,
                                                                              uint32_t price, uint8_t priceTrailingDigit);
  /**
   * @brief  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  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  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  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  Cluster ExecutionOfACommand Command callback (from client)
   */
  bool emberAfApplianceControlClusterExecutionOfACommandCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                 uint8_t commandId);
  /**
   * @brief  Cluster SignalStateResponse Command callback (from server)
   */
  bool emberAfApplianceControlClusterSignalStateResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 uint8_t applianceStatus, uint8_t remoteEnableFlagsAndDeviceStatus2,
                                                                 uint32_t applianceStatus2);
  /**
   * @brief  Cluster SignalState Command callback (from client)
   */
  bool emberAfApplianceControlClusterSignalStateCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SignalStateNotification Command callback (from server)
   */
  bool emberAfApplianceControlClusterSignalStateNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                     uint8_t applianceStatus,
                                                                     uint8_t remoteEnableFlagsAndDeviceStatus2,
                                                                     uint32_t applianceStatus2);
  /**
   * @brief  Cluster WriteFunctions Command callback (from client)
   */
  bool emberAfApplianceControlClusterWriteFunctionsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                            uint16_t functionId, uint8_t functionDataType,
                                                            /* TYPE WARNING: array array defaults to */ uint8_t * functionData);
  /**
   * @brief  Cluster OverloadPauseResume Command callback (from client)
   */
  bool emberAfApplianceControlClusterOverloadPauseResumeCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster OverloadPause Command callback (from client)
   */
  bool emberAfApplianceControlClusterOverloadPauseCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster OverloadWarning Command callback (from client)
   */
  bool emberAfApplianceControlClusterOverloadWarningCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                             uint8_t warningEvent);
  /**
   * @brief  Cluster CheckIn Command callback (from server)
   */
  bool emberAfPollControlClusterCheckInCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster CheckInResponse Command callback (from client)
   */
  bool emberAfPollControlClusterCheckInResponseCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t startFastPolling, uint16_t fastPollTimeout);
  /**
   * @brief  Cluster FastPollStop Command callback (from client)
   */
  bool emberAfPollControlClusterFastPollStopCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SetLongPollInterval Command callback (from client)
   */
  bool emberAfPollControlClusterSetLongPollIntervalCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                            uint32_t newLongPollInterval);
  /**
   * @brief  Cluster SetShortPollInterval Command callback (from client)
   */
  bool emberAfPollControlClusterSetShortPollIntervalCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                             uint16_t newShortPollInterval);
  /**
   * @brief  Cluster StartUp Command callback (from server)
   */
  bool emberAfBasicClusterStartUpCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster MfgSpecificPing Command callback (from client)
   */
  bool emberAfBasicClusterMfgSpecificPingCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ShutDown Command callback (from server)
   */
  bool emberAfBasicClusterShutDownCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster Leave Command callback (from server)
   */
  bool emberAfBasicClusterLeaveCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster QueryImage Command callback (from client)
   */
  bool emberAfOtaSoftwareUpdateProviderClusterQueryImageCallback(
      chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t vendorId, uint16_t productId, uint16_t imageType,
      uint16_t hardwareVersion, uint32_t currentVersion, /* TYPE WARNING: array array defaults to */ uint8_t * protocolsSupported,
      uint8_t * location, uint8_t requestorCanConsent, chip::ByteSpan metadataForProvider);
  /**
   * @brief  Cluster ApplyUpdateRequest Command callback (from client)
   */
  bool emberAfOtaSoftwareUpdateProviderClusterApplyUpdateRequestCallback(chip::EndpointId endpoint,
                                                                         chip::app::CommandHandler * commandObj,
                                                                         chip::ByteSpan updateToken, uint32_t newVersion);
  /**
   * @brief  Cluster NotifyUpdateApplied Command callback (from client)
   */
  bool emberAfOtaSoftwareUpdateProviderClusterNotifyUpdateAppliedCallback(chip::EndpointId endpoint,
                                                                          chip::app::CommandHandler * commandObj,
                                                                          chip::ByteSpan updateToken, uint32_t currentVersion);
  /**
   * @brief  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, chip::ByteSpan updateToken,
                                                                         uint8_t userConsentNeeded,
                                                                         chip::ByteSpan metadataForRequestor);
  /**
   * @brief  Cluster ApplyUpdateRequestResponse Command callback (from server)
   */
  bool emberAfOtaSoftwareUpdateProviderClusterApplyUpdateRequestResponseCallback(chip::EndpointId endpoint,
                                                                                 chip::app::CommandSender * commandObj,
                                                                                 uint8_t action, uint32_t delayedActionTime);
  /**
   * @brief  Cluster AnnounceOtaProvider Command callback (from client)
   */
  bool emberAfOtaSoftwareUpdateRequestorClusterAnnounceOtaProviderCallback(chip::EndpointId endpoint,
                                                                           chip::app::CommandHandler * commandObj,
                                                                           chip::ByteSpan serverLocation, uint16_t vendorId,
                                                                           uint8_t announcementReason,
                                                                           chip::ByteSpan metadataForNode);
  /**
   * @brief  Cluster ArmFailSafe Command callback (from client)
   */
  bool emberAfGeneralCommissioningClusterArmFailSafeCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                             uint16_t expiryLengthSeconds, uint64_t breadcrumb, uint32_t timeoutMs);
  /**
   * @brief  Cluster ArmFailSafeResponse Command callback (from server)
   */
  bool emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                     uint8_t errorCode, uint8_t * debugText);
  /**
   * @brief  Cluster SetRegulatoryConfig Command callback (from client)
   */
  bool emberAfGeneralCommissioningClusterSetRegulatoryConfigCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandHandler * commandObj, uint8_t location,
                                                                     uint8_t * countryCode, uint64_t breadcrumb, uint32_t timeoutMs);
  /**
   * @brief  Cluster SetRegulatoryConfigResponse Command callback (from server)
   */
  bool emberAfGeneralCommissioningClusterSetRegulatoryConfigResponseCallback(chip::EndpointId endpoint,
                                                                             chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                             uint8_t * debugText);
  /**
   * @brief  Cluster CommissioningComplete Command callback (from client)
   */
  bool emberAfGeneralCommissioningClusterCommissioningCompleteCallback(chip::EndpointId endpoint,
                                                                       chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster CommissioningCompleteResponse Command callback (from server)
   */
  bool emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(chip::EndpointId endpoint,
                                                                               chip::app::CommandSender * commandObj,
                                                                               uint8_t errorCode, uint8_t * debugText);
  /**
   * @brief  Cluster ScanNetworks Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterScanNetworksCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                              chip::ByteSpan ssid, uint64_t breadcrumb, uint32_t timeoutMs);
  /**
   * @brief  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  Cluster AddWiFiNetwork Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterAddWiFiNetworkCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                chip::ByteSpan ssid, chip::ByteSpan credentials, uint64_t breadcrumb,
                                                                uint32_t timeoutMs);
  /**
   * @brief  Cluster AddWiFiNetworkResponse Command callback (from server)
   */
  bool emberAfNetworkCommissioningClusterAddWiFiNetworkResponseCallback(chip::EndpointId endpoint,
                                                                        chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                        uint8_t * debugText);
  /**
   * @brief  Cluster UpdateWiFiNetwork Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterUpdateWiFiNetworkCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                   chip::ByteSpan ssid, chip::ByteSpan credentials,
                                                                   uint64_t breadcrumb, uint32_t timeoutMs);
  /**
   * @brief  Cluster UpdateWiFiNetworkResponse Command callback (from server)
   */
  bool emberAfNetworkCommissioningClusterUpdateWiFiNetworkResponseCallback(chip::EndpointId endpoint,
                                                                           chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                           uint8_t * debugText);
  /**
   * @brief  Cluster AddThreadNetwork Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterAddThreadNetworkCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                  chip::ByteSpan operationalDataset, uint64_t breadcrumb,
                                                                  uint32_t timeoutMs);
  /**
   * @brief  Cluster AddThreadNetworkResponse Command callback (from server)
   */
  bool emberAfNetworkCommissioningClusterAddThreadNetworkResponseCallback(chip::EndpointId endpoint,
                                                                          chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                          uint8_t * debugText);
  /**
   * @brief  Cluster UpdateThreadNetwork Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterUpdateThreadNetworkCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandHandler * commandObj,
                                                                     chip::ByteSpan operationalDataset, uint64_t breadcrumb,
                                                                     uint32_t timeoutMs);
  /**
   * @brief  Cluster UpdateThreadNetworkResponse Command callback (from server)
   */
  bool emberAfNetworkCommissioningClusterUpdateThreadNetworkResponseCallback(chip::EndpointId endpoint,
                                                                             chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                             uint8_t * debugText);
  /**
   * @brief  Cluster RemoveNetwork Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterRemoveNetworkCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                               chip::ByteSpan NetworkID, uint64_t Breadcrumb, uint32_t TimeoutMs);
  /**
   * @brief  Cluster RemoveNetworkResponse Command callback (from server)
   */
  bool emberAfNetworkCommissioningClusterRemoveNetworkResponseCallback(chip::EndpointId endpoint,
                                                                       chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                       uint8_t * debugText);
  /**
   * @brief  Cluster EnableNetwork Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterEnableNetworkCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                               chip::ByteSpan networkID, uint64_t breadcrumb, uint32_t timeoutMs);
  /**
   * @brief  Cluster EnableNetworkResponse Command callback (from server)
   */
  bool emberAfNetworkCommissioningClusterEnableNetworkResponseCallback(chip::EndpointId endpoint,
                                                                       chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                       uint8_t * debugText);
  /**
   * @brief  Cluster DisableNetwork Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterDisableNetworkCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                chip::ByteSpan networkID, uint64_t breadcrumb, uint32_t timeoutMs);
  /**
   * @brief  Cluster DisableNetworkResponse Command callback (from server)
   */
  bool emberAfNetworkCommissioningClusterDisableNetworkResponseCallback(chip::EndpointId endpoint,
                                                                        chip::app::CommandSender * commandObj, uint8_t errorCode,
                                                                        uint8_t * debugText);
  /**
   * @brief  Cluster GetLastNetworkCommissioningResult Command callback (from client)
   */
  bool emberAfNetworkCommissioningClusterGetLastNetworkCommissioningResultCallback(chip::EndpointId endpoint,
                                                                                   chip::app::CommandHandler * commandObj,
                                                                                   uint32_t timeoutMs);
  /**
   * @brief  Cluster RetrieveLogsRequest Command callback (from client)
   */
  bool emberAfDiagnosticLogsClusterRetrieveLogsRequestCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                               uint8_t intent, uint8_t requestedProtocol,
                                                               chip::ByteSpan transferFileDesignator);
  /**
   * @brief  Cluster RetrieveLogsResponse Command callback (from server)
   */
  bool emberAfDiagnosticLogsClusterRetrieveLogsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status, chip::ByteSpan content,
                                                                /* TYPE WARNING: utc defaults to */ uint8_t * timeStamp,
                                                                uint32_t timeSinceBoot);
  /**
   * @brief  Cluster ResetWatermarks Command callback (from client)
   */
  bool emberAfSoftwareDiagnosticsClusterResetWatermarksCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ResetCounts Command callback (from client)
   */
  bool emberAfThreadNetworkDiagnosticsClusterResetCountsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ResetCounts Command callback (from client)
   */
  bool emberAfWiFiNetworkDiagnosticsClusterResetCountsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ResetCounts Command callback (from client)
   */
  bool emberAfEthernetNetworkDiagnosticsClusterResetCountsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster StartUp Command callback (from server)
   */
  bool emberAfBridgedDeviceBasicClusterStartUpCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster ShutDown Command callback (from server)
   */
  bool emberAfBridgedDeviceBasicClusterShutDownCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster Leave Command callback (from server)
   */
  bool emberAfBridgedDeviceBasicClusterLeaveCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster ReachableChanged Command callback (from server)
   */
  bool emberAfBridgedDeviceBasicClusterReachableChangedCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster SetFabric Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterSetFabricCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                             uint16_t VendorId);
  /**
   * @brief  Cluster SetFabricResponse Command callback (from server)
   */
  bool emberAfOperationalCredentialsClusterSetFabricResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                     chip::FabricId FabricId);
  /**
   * @brief  Cluster OpCSRRequest Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterOpCSRRequestCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                chip::ByteSpan CSRNonce);
  /**
   * @brief  Cluster OpCSRResponse Command callback (from server)
   */
  bool emberAfOperationalCredentialsClusterOpCSRResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 chip::ByteSpan CSR, chip::ByteSpan CSRNonce,
                                                                 chip::ByteSpan VendorReserved1, chip::ByteSpan VendorReserved2,
                                                                 chip::ByteSpan VendorReserved3, chip::ByteSpan Signature);
  /**
   * @brief  Cluster AddNOC Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterAddNOCCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          chip::ByteSpan NOCArray, chip::ByteSpan IPKValue,
                                                          chip::NodeId CaseAdminNode, uint16_t AdminVendorId);
  /**
   * @brief  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  Cluster UpdateFabricLabel Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterUpdateFabricLabelCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandHandler * commandObj, uint8_t * Label);
  /**
   * @brief  Cluster RemoveFabric Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterRemoveFabricCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                chip::FabricId FabricId, chip::NodeId NodeId, uint16_t VendorId);
  /**
   * @brief  Cluster RemoveAllFabrics Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterRemoveAllFabricsCallback(chip::EndpointId endpoint,
                                                                    chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster AddTrustedRootCertificate Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterAddTrustedRootCertificateCallback(chip::EndpointId endpoint,
                                                                             chip::app::CommandHandler * commandObj,
                                                                             chip::ByteSpan RootCertificate);
  /**
   * @brief  Cluster RemoveTrustedRootCertificate Command callback (from client)
   */
  bool emberAfOperationalCredentialsClusterRemoveTrustedRootCertificateCallback(chip::EndpointId endpoint,
                                                                                chip::app::CommandHandler * commandObj,
                                                                                chip::ByteSpan TrustedRootIdentifier);
  /**
   * @brief  Cluster LockDoor Command callback (from client)
   */
  bool emberAfDoorLockClusterLockDoorCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t * PIN);
  /**
   * @brief  Cluster LockDoorResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterLockDoorResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                      uint8_t status);
  /**
   * @brief  Cluster UnlockDoor Command callback (from client)
   */
  bool emberAfDoorLockClusterUnlockDoorCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t * PIN);
  /**
   * @brief  Cluster UnlockDoorResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterUnlockDoorResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                        uint8_t status);
  /**
   * @brief  Cluster Toggle Command callback (from client)
   */
  bool emberAfDoorLockClusterToggleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t * pin);
  /**
   * @brief  Cluster ToggleResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterToggleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status);
  /**
   * @brief  Cluster UnlockWithTimeout Command callback (from client)
   */
  bool emberAfDoorLockClusterUnlockWithTimeoutCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                       uint16_t timeoutInSeconds, uint8_t * pin);
  /**
   * @brief  Cluster UnlockWithTimeoutResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                               uint8_t status);
  /**
   * @brief  Cluster GetLogRecord Command callback (from client)
   */
  bool emberAfDoorLockClusterGetLogRecordCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                  uint16_t logIndex);
  /**
   * @brief  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, uint8_t * pin);
  /**
   * @brief  Cluster SetPin Command callback (from client)
   */
  bool emberAfDoorLockClusterSetPinCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId,
                                            uint8_t userStatus, uint8_t userType, uint8_t * pin);
  /**
   * @brief  Cluster SetPinResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterSetPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint8_t status);
  /**
   * @brief  Cluster GetPin Command callback (from client)
   */
  bool emberAfDoorLockClusterGetPinCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId);
  /**
   * @brief  Cluster GetPinResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterGetPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj, uint16_t userId,
                                                    uint8_t userStatus, uint8_t userType, uint8_t * pin);
  /**
   * @brief  Cluster ClearPin Command callback (from client)
   */
  bool emberAfDoorLockClusterClearPinCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId);
  /**
   * @brief  Cluster ClearPinResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterClearPinResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                      uint8_t status);
  /**
   * @brief  Cluster ClearAllPins Command callback (from client)
   */
  bool emberAfDoorLockClusterClearAllPinsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ClearAllPinsResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterClearAllPinsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                          uint8_t status);
  /**
   * @brief  Cluster SetUserStatus Command callback (from client)
   */
  bool emberAfDoorLockClusterSetUserStatusCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId,
                                                   uint8_t userStatus);
  /**
   * @brief  Cluster SetUserStatusResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterSetUserStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint8_t status);
  /**
   * @brief  Cluster GetUserStatus Command callback (from client)
   */
  bool emberAfDoorLockClusterGetUserStatusCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                   uint16_t userId);
  /**
   * @brief  Cluster GetUserStatusResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterGetUserStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint16_t userId, uint8_t status);
  /**
   * @brief  Cluster SetWeekdaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterSetWeekdayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t scheduleId, uint16_t userId, uint8_t daysMask, uint8_t startHour,
                                                        uint8_t startMinute, uint8_t endHour, uint8_t endMinute);
  /**
   * @brief  Cluster SetWeekdayScheduleResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status);
  /**
   * @brief  Cluster GetWeekdaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterGetWeekdayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t scheduleId, uint16_t userId);
  /**
   * @brief  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  Cluster ClearWeekdaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterClearWeekdayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t scheduleId, uint16_t userId);
  /**
   * @brief  Cluster ClearWeekdayScheduleResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t status);
  /**
   * @brief  Cluster SetYeardaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterSetYeardayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t scheduleId, uint16_t userId, uint32_t localStartTime,
                                                        uint32_t localEndTime);
  /**
   * @brief  Cluster SetYeardayScheduleResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterSetYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status);
  /**
   * @brief  Cluster GetYeardaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterGetYeardayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t scheduleId, uint16_t userId);
  /**
   * @brief  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  Cluster ClearYeardaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterClearYeardayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t scheduleId, uint16_t userId);
  /**
   * @brief  Cluster ClearYeardayScheduleResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterClearYeardayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t status);
  /**
   * @brief  Cluster SetHolidaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterSetHolidayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t scheduleId, uint32_t localStartTime, uint32_t localEndTime,
                                                        uint8_t operatingModeDuringHoliday);
  /**
   * @brief  Cluster SetHolidayScheduleResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterSetHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t status);
  /**
   * @brief  Cluster GetHolidaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterGetHolidayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t scheduleId);
  /**
   * @brief  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  Cluster ClearHolidaySchedule Command callback (from client)
   */
  bool emberAfDoorLockClusterClearHolidayScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t scheduleId);
  /**
   * @brief  Cluster ClearHolidayScheduleResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterClearHolidayScheduleResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t status);
  /**
   * @brief  Cluster SetUserType Command callback (from client)
   */
  bool emberAfDoorLockClusterSetUserTypeCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId,
                                                 uint8_t userType);
  /**
   * @brief  Cluster SetUserTypeResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterSetUserTypeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint8_t status);
  /**
   * @brief  Cluster GetUserType Command callback (from client)
   */
  bool emberAfDoorLockClusterGetUserTypeCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId);
  /**
   * @brief  Cluster GetUserTypeResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterGetUserTypeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint16_t userId, uint8_t userType);
  /**
   * @brief  Cluster SetRfid Command callback (from client)
   */
  bool emberAfDoorLockClusterSetRfidCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId,
                                             uint8_t userStatus, uint8_t userType, uint8_t * id);
  /**
   * @brief  Cluster SetRfidResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterSetRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                     uint8_t status);
  /**
   * @brief  Cluster GetRfid Command callback (from client)
   */
  bool emberAfDoorLockClusterGetRfidCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId);
  /**
   * @brief  Cluster GetRfidResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterGetRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                     uint16_t userId, uint8_t userStatus, uint8_t userType, uint8_t * rfid);
  /**
   * @brief  Cluster ClearRfid Command callback (from client)
   */
  bool emberAfDoorLockClusterClearRfidCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t userId);
  /**
   * @brief  Cluster ClearRfidResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterClearRfidResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                       uint8_t status);
  /**
   * @brief  Cluster ClearAllRfids Command callback (from client)
   */
  bool emberAfDoorLockClusterClearAllRfidsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ClearAllRfidsResponse Command callback (from server)
   */
  bool emberAfDoorLockClusterClearAllRfidsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                           uint8_t status);
  /**
   * @brief  Cluster OperationEventNotification Command callback (from server)
   */
  bool emberAfDoorLockClusterOperationEventNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t source, uint8_t eventCode, uint16_t userId, uint8_t * pin,
                                                                uint32_t timeStamp, uint8_t * data);
  /**
   * @brief  Cluster ProgrammingEventNotification Command callback (from server)
   */
  bool emberAfDoorLockClusterProgrammingEventNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t source, uint8_t eventCode, uint16_t userId, uint8_t * pin,
                                                                  uint8_t userType, uint8_t userStatus, uint32_t timeStamp,
                                                                  uint8_t * data);
  /**
   * @brief  Cluster UpOrOpen Command callback (from client)
   */
  bool emberAfWindowCoveringClusterUpOrOpenCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster DownOrClose Command callback (from client)
   */
  bool emberAfWindowCoveringClusterDownOrCloseCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster StopMotion Command callback (from client)
   */
  bool emberAfWindowCoveringClusterStopMotionCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster GoToLiftValue Command callback (from client)
   */
  bool emberAfWindowCoveringClusterGoToLiftValueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint16_t liftValue);
  /**
   * @brief  Cluster GoToLiftPercentage Command callback (from client)
   */
  bool emberAfWindowCoveringClusterGoToLiftPercentageCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                              uint8_t liftPercentageValue, uint16_t liftPercent100thsValue);
  /**
   * @brief  Cluster GoToTiltValue Command callback (from client)
   */
  bool emberAfWindowCoveringClusterGoToTiltValueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint16_t tiltValue);
  /**
   * @brief  Cluster GoToTiltPercentage Command callback (from client)
   */
  bool emberAfWindowCoveringClusterGoToTiltPercentageCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                              uint8_t tiltPercentageValue, uint16_t tiltPercent100thsValue);
  /**
   * @brief  Cluster BarrierControlGoToPercent Command callback (from client)
   */
  bool emberAfBarrierControlClusterBarrierControlGoToPercentCallback(chip::EndpointId endpoint,
                                                                     chip::app::CommandHandler * commandObj, uint8_t percentOpen);
  /**
   * @brief  Cluster BarrierControlStop Command callback (from client)
   */
  bool emberAfBarrierControlClusterBarrierControlStopCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SetpointRaiseLower Command callback (from client)
   */
  bool emberAfThermostatClusterSetpointRaiseLowerCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t mode, int8_t amount);
  /**
   * @brief  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  Cluster SetWeeklySchedule Command callback (from client)
   */
  bool emberAfThermostatClusterSetWeeklyScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint8_t numberOfTransitionsForSequence, uint8_t dayOfWeekForSequence,
                                                         uint8_t modeForSequence,
                                                         /* TYPE WARNING: array array defaults to */ uint8_t * payload);
  /**
   * @brief  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  Cluster GetWeeklySchedule Command callback (from client)
   */
  bool emberAfThermostatClusterGetWeeklyScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint8_t daysToReturn, uint8_t modeToReturn);
  /**
   * @brief  Cluster ClearWeeklySchedule Command callback (from client)
   */
  bool emberAfThermostatClusterClearWeeklyScheduleCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster GetRelayStatusLog Command callback (from client)
   */
  bool emberAfThermostatClusterGetRelayStatusLogCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MoveToHue Command callback (from client)
   */
  bool emberAfColorControlClusterMoveToHueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t hue,
                                                   uint8_t direction, uint16_t transitionTime, uint8_t optionsMask,
                                                   uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveHue Command callback (from client)
   */
  bool emberAfColorControlClusterMoveHueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t moveMode,
                                                 uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster StepHue Command callback (from client)
   */
  bool emberAfColorControlClusterStepHueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t stepMode,
                                                 uint8_t stepSize, uint8_t transitionTime, uint8_t optionsMask,
                                                 uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveToSaturation Command callback (from client)
   */
  bool emberAfColorControlClusterMoveToSaturationCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t saturation, uint16_t transitionTime, uint8_t optionsMask,
                                                          uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveSaturation Command callback (from client)
   */
  bool emberAfColorControlClusterMoveSaturationCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t moveMode, uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster StepSaturation Command callback (from client)
   */
  bool emberAfColorControlClusterStepSaturationCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                        uint8_t stepMode, uint8_t stepSize, uint8_t transitionTime,
                                                        uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveToHueAndSaturation Command callback (from client)
   */
  bool emberAfColorControlClusterMoveToHueAndSaturationCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                uint8_t hue, uint8_t saturation, uint16_t transitionTime,
                                                                uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveToColor Command callback (from client)
   */
  bool emberAfColorControlClusterMoveToColorCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                     uint16_t colorX, uint16_t colorY, uint16_t transitionTime, uint8_t optionsMask,
                                                     uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveColor Command callback (from client)
   */
  bool emberAfColorControlClusterMoveColorCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, int16_t rateX,
                                                   int16_t rateY, uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster StepColor Command callback (from client)
   */
  bool emberAfColorControlClusterStepColorCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, int16_t stepX,
                                                   int16_t stepY, uint16_t transitionTime, uint8_t optionsMask,
                                                   uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveToColorTemperature Command callback (from client)
   */
  bool emberAfColorControlClusterMoveToColorTemperatureCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                uint16_t colorTemperature, uint16_t transitionTime,
                                                                uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster EnhancedMoveToHue Command callback (from client)
   */
  bool emberAfColorControlClusterEnhancedMoveToHueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                           uint16_t enhancedHue, uint8_t direction, uint16_t transitionTime,
                                                           uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster EnhancedMoveHue Command callback (from client)
   */
  bool emberAfColorControlClusterEnhancedMoveHueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint8_t moveMode, uint16_t rate, uint8_t optionsMask,
                                                         uint8_t optionsOverride);
  /**
   * @brief  Cluster EnhancedStepHue Command callback (from client)
   */
  bool emberAfColorControlClusterEnhancedStepHueCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint8_t stepMode, uint16_t stepSize, uint16_t transitionTime,
                                                         uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster EnhancedMoveToHueAndSaturation Command callback (from client)
   */
  bool emberAfColorControlClusterEnhancedMoveToHueAndSaturationCallback(chip::EndpointId endpoint,
                                                                        chip::app::CommandHandler * commandObj, uint16_t enhancedHue,
                                                                        uint8_t saturation, uint16_t transitionTime,
                                                                        uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster ColorLoopSet Command callback (from client)
   */
  bool emberAfColorControlClusterColorLoopSetCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                      uint8_t updateFlags, uint8_t action, uint8_t direction, uint16_t time,
                                                      uint16_t startHue, uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster StopMoveStep Command callback (from client)
   */
  bool emberAfColorControlClusterStopMoveStepCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                      uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster MoveColorTemperature Command callback (from client)
   */
  bool emberAfColorControlClusterMoveColorTemperatureCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                              uint8_t moveMode, uint16_t rate, uint16_t colorTemperatureMinimum,
                                                              uint16_t colorTemperatureMaximum, uint8_t optionsMask,
                                                              uint8_t optionsOverride);
  /**
   * @brief  Cluster StepColorTemperature Command callback (from client)
   */
  bool emberAfColorControlClusterStepColorTemperatureCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                              uint8_t stepMode, uint16_t stepSize, uint16_t transitionTime,
                                                              uint16_t colorTemperatureMinimum, uint16_t colorTemperatureMaximum,
                                                              uint8_t optionsMask, uint8_t optionsOverride);
  /**
   * @brief  Cluster ZoneEnrollResponse Command callback (from client)
   */
  bool emberAfIasZoneClusterZoneEnrollResponseCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                       uint8_t enrollResponseCode, uint8_t zoneId);
  /**
   * @brief  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  Cluster InitiateNormalOperationMode Command callback (from client)
   */
  bool emberAfIasZoneClusterInitiateNormalOperationModeCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster ZoneEnrollRequest Command callback (from server)
   */
  bool emberAfIasZoneClusterZoneEnrollRequestCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                      uint16_t zoneType, uint16_t manufacturerCode);
  /**
   * @brief  Cluster InitiateTestMode Command callback (from client)
   */
  bool emberAfIasZoneClusterInitiateTestModeCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                     uint8_t testModeDuration, uint8_t currentZoneSensitivityLevel);
  /**
   * @brief  Cluster InitiateNormalOperationModeResponse Command callback (from server)
   */
  bool emberAfIasZoneClusterInitiateNormalOperationModeResponseCallback(chip::EndpointId endpoint,
                                                                        chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster InitiateTestModeResponse Command callback (from server)
   */
  bool emberAfIasZoneClusterInitiateTestModeResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj);
  /**
   * @brief  Cluster Arm Command callback (from client)
   */
  bool emberAfIasAceClusterArmCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t armMode,
                                       uint8_t * armDisarmCode, uint8_t zoneId);
  /**
   * @brief  Cluster ArmResponse Command callback (from server)
   */
  bool emberAfIasAceClusterArmResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                               uint8_t armNotification);
  /**
   * @brief  Cluster Bypass Command callback (from client)
   */
  bool emberAfIasAceClusterBypassCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t numberOfZones,
                                          /* TYPE WARNING: array array defaults to */ uint8_t * zoneIds, uint8_t * armDisarmCode);
  /**
   * @brief  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  Cluster Emergency Command callback (from client)
   */
  bool emberAfIasAceClusterEmergencyCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster Fire Command callback (from client)
   */
  bool emberAfIasAceClusterFireCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster Panic Command callback (from client)
   */
  bool emberAfIasAceClusterPanicCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster GetZoneIdMap Command callback (from client)
   */
  bool emberAfIasAceClusterGetZoneIdMapCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster GetZoneInformation Command callback (from client)
   */
  bool emberAfIasAceClusterGetZoneInformationCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                      uint8_t zoneId);
  /**
   * @brief  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  Cluster GetPanelStatus Command callback (from client)
   */
  bool emberAfIasAceClusterGetPanelStatusCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster GetBypassedZoneList Command callback (from client)
   */
  bool emberAfIasAceClusterGetBypassedZoneListCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster GetZoneStatusResponse Command callback (from server)
   */
  bool emberAfIasAceClusterGetZoneStatusResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                         uint8_t zoneStatusComplete, uint8_t numberOfZones,
                                                         /* TYPE WARNING: array array defaults to */ uint8_t * zoneStatusResult);
  /**
   * @brief  Cluster GetZoneStatus Command callback (from client)
   */
  bool emberAfIasAceClusterGetZoneStatusCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                 uint8_t startingZoneId, uint8_t maxNumberOfZoneIds, uint8_t zoneStatusMaskFlag,
                                                 uint16_t zoneStatusMask);
  /**
   * @brief  Cluster StartWarning Command callback (from client)
   */
  bool emberAfIasWdClusterStartWarningCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t warningInfo,
                                               uint16_t warningDuration, uint8_t strobeDutyCycle, uint8_t strobeLevel);
  /**
   * @brief  Cluster Squawk Command callback (from client)
   */
  bool emberAfIasWdClusterSquawkCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t squawkInfo);
  /**
   * @brief  Cluster ChangeChannel Command callback (from client)
   */
  bool emberAfTvChannelClusterChangeChannelCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                    uint8_t * match);
  /**
   * @brief  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  Cluster ChangeChannelByNumber Command callback (from client)
   */
  bool emberAfTvChannelClusterChangeChannelByNumberCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                            uint16_t majorNumber, uint16_t minorNumber);
  /**
   * @brief  Cluster SkipChannel Command callback (from client)
   */
  bool emberAfTvChannelClusterSkipChannelCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint16_t Count);
  /**
   * @brief  Cluster NavigateTarget Command callback (from client)
   */
  bool emberAfTargetNavigatorClusterNavigateTargetCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                           uint8_t target, uint8_t * data);
  /**
   * @brief  Cluster NavigateTargetResponse Command callback (from server)
   */
  bool emberAfTargetNavigatorClusterNavigateTargetResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                   uint8_t status, uint8_t * data);
  /**
   * @brief  Cluster MediaPlay Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaPlayCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaPlayResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaPlayResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaPause Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaPauseCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaPauseResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaPauseResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                             uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaStop Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaStopCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaStopResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaStopResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaStartOver Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaStartOverCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaStartOverResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaStartOverResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaPrevious Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaPreviousCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaPreviousResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaPreviousResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaNext Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaNextCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaNextResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaNextResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaRewind Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaRewindCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaRewindResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaRewindResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaFastForward Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaFastForwardCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster MediaFastForwardResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                   uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaSkipForward Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaSkipForwardCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                           uint64_t deltaPositionMilliseconds);
  /**
   * @brief  Cluster MediaSkipForwardResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                   uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaSkipBackward Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaSkipBackwardCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                            uint64_t deltaPositionMilliseconds);
  /**
   * @brief  Cluster MediaSkipBackwardResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                    uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster MediaSeek Command callback (from client)
   */
  bool emberAfMediaPlaybackClusterMediaSeekCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                    uint64_t position);
  /**
   * @brief  Cluster MediaSeekResponse Command callback (from server)
   */
  bool emberAfMediaPlaybackClusterMediaSeekResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            uint8_t mediaPlaybackStatus);
  /**
   * @brief  Cluster SelectInput Command callback (from client)
   */
  bool emberAfMediaInputClusterSelectInputCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t index);
  /**
   * @brief  Cluster ShowInputStatus Command callback (from client)
   */
  bool emberAfMediaInputClusterShowInputStatusCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster HideInputStatus Command callback (from client)
   */
  bool emberAfMediaInputClusterHideInputStatusCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster RenameInput Command callback (from client)
   */
  bool emberAfMediaInputClusterRenameInputCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t index,
                                                   uint8_t * name);
  /**
   * @brief  Cluster Sleep Command callback (from client)
   */
  bool emberAfLowPowerClusterSleepCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster SendKey Command callback (from client)
   */
  bool emberAfKeypadInputClusterSendKeyCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t keyCode);
  /**
   * @brief  Cluster SendKeyResponse Command callback (from server)
   */
  bool emberAfKeypadInputClusterSendKeyResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                        uint8_t status);
  /**
   * @brief  Cluster LaunchContent Command callback (from client)
   */
  bool emberAfContentLauncherClusterLaunchContentCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t autoPlay, uint8_t * data);
  /**
   * @brief  Cluster LaunchContentResponse Command callback (from server)
   */
  bool emberAfContentLauncherClusterLaunchContentResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t * data, uint8_t contentLaunchStatus);
  /**
   * @brief  Cluster LaunchURL Command callback (from client)
   */
  bool emberAfContentLauncherClusterLaunchURLCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                      uint8_t * contentURL, uint8_t * displayString);
  /**
   * @brief  Cluster LaunchURLResponse Command callback (from server)
   */
  bool emberAfContentLauncherClusterLaunchURLResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint8_t * data, uint8_t contentLaunchStatus);
  /**
   * @brief  Cluster SelectOutput Command callback (from client)
   */
  bool emberAfAudioOutputClusterSelectOutputCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                     uint8_t index);
  /**
   * @brief  Cluster RenameOutput Command callback (from client)
   */
  bool emberAfAudioOutputClusterRenameOutputCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, uint8_t index,
                                                     uint8_t * name);
  /**
   * @brief  Cluster LaunchApp Command callback (from client)
   */
  bool emberAfApplicationLauncherClusterLaunchAppCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t * data, uint16_t catalogVendorId, uint8_t * applicationId);
  /**
   * @brief  Cluster LaunchAppResponse Command callback (from server)
   */
  bool emberAfApplicationLauncherClusterLaunchAppResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                  uint8_t status, uint8_t * data);
  /**
   * @brief  Cluster ChangeStatus Command callback (from client)
   */
  bool emberAfApplicationBasicClusterChangeStatusCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint8_t status);
  /**
   * @brief  Cluster GetSetupPIN Command callback (from client)
   */
  bool emberAfAccountLoginClusterGetSetupPINCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                     uint8_t * tempAccountIdentifier);
  /**
   * @brief  Cluster GetSetupPINResponse Command callback (from server)
   */
  bool emberAfAccountLoginClusterGetSetupPINResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                             uint8_t * setupPIN);
  /**
   * @brief  Cluster Login Command callback (from client)
   */
  bool emberAfAccountLoginClusterLoginCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                               uint8_t * tempAccountIdentifier, uint8_t * setupPIN);
  /**
   * @brief  Cluster Test Command callback (from client)
   */
  bool emberAfTestClusterClusterTestCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster TestSpecificResponse Command callback (from server)
   */
  bool emberAfTestClusterClusterTestSpecificResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                             uint8_t returnValue);
  /**
   * @brief  Cluster TestNotHandled Command callback (from client)
   */
  bool emberAfTestClusterClusterTestNotHandledCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster TestAddArgumentsResponse Command callback (from server)
   */
  bool emberAfTestClusterClusterTestAddArgumentsResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                 uint8_t returnValue);
  /**
   * @brief  Cluster TestSpecific Command callback (from client)
   */
  bool emberAfTestClusterClusterTestSpecificCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster TestUnknownCommand Command callback (from client)
   */
  bool emberAfTestClusterClusterTestUnknownCommandCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster TestAddArguments Command callback (from client)
   */
  bool emberAfTestClusterClusterTestAddArgumentsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                         uint8_t arg1, uint8_t arg2);
  /**
   * @brief  Cluster DisplayMessage Command callback (from server)
   */
  bool emberAfMessagingClusterDisplayMessageCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                     uint32_t messageId, uint8_t messageControl,
                                                     /* TYPE WARNING: utc defaults to */ uint8_t * startTime,
                                                     uint16_t durationInMinutes, uint8_t * message,
                                                     uint8_t optionalExtendedMessageControl);
  /**
   * @brief  Cluster GetLastMessage Command callback (from client)
   */
  bool emberAfMessagingClusterGetLastMessageCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  Cluster CancelMessage Command callback (from server)
   */
  bool emberAfMessagingClusterCancelMessageCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                    uint32_t messageId, uint8_t messageControl);
  /**
   * @brief  Cluster MessageConfirmation Command callback (from client)
   */
  bool emberAfMessagingClusterMessageConfirmationCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                          uint32_t messageId,
                                                          /* TYPE WARNING: utc defaults to */ uint8_t * confirmationTime,
                                                          uint8_t messageConfirmationControl, chip::ByteSpan messageResponse);
  /**
   * @brief  Cluster DisplayProtectedMessage Command callback (from server)
   */
  bool emberAfMessagingClusterDisplayProtectedMessageCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                              uint32_t messageId, uint8_t messageControl,
                                                              /* TYPE WARNING: utc defaults to */ uint8_t * startTime,
                                                              uint16_t durationInMinutes, uint8_t * message,
                                                              uint8_t optionalExtendedMessageControl);
  /**
   * @brief  Cluster GetMessageCancellation Command callback (from client)
   */
  bool emberAfMessagingClusterGetMessageCancellationCallback(
      chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
      /* TYPE WARNING: utc defaults to */ uint8_t * earliestImplementationTime);
  /**
   * @brief  Cluster CancelAllMessages Command callback (from server)
   */
  bool emberAfMessagingClusterCancelAllMessagesCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                        /* TYPE WARNING: utc defaults to */ uint8_t * implementationDateTime);
  /**
   * @brief  Cluster GetAlerts Command callback (from client)
   */
  bool emberAfApplianceEventsAndAlertClusterGetAlertsCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  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  Cluster EventsNotification Command callback (from server)
   */
  bool emberAfApplianceEventsAndAlertClusterEventsNotificationCallback(chip::EndpointId endpoint,
                                                                       chip::app::CommandSender * commandObj, uint8_t eventHeader,
                                                                       uint8_t eventId);
  /**
   * @brief  Cluster LogNotification Command callback (from server)
   */
  bool emberAfApplianceStatisticsClusterLogNotificationCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                                /* TYPE WARNING: unknown defaults to */ uint8_t * timeStamp,
                                                                uint32_t logId, uint32_t logLength,
                                                                /* TYPE WARNING: array array defaults to */ uint8_t * logPayload);
  /**
   * @brief  Cluster LogRequest Command callback (from client)
   */
  bool emberAfApplianceStatisticsClusterLogRequestCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                           uint32_t logId);
  /**
   * @brief  Cluster LogResponse Command callback (from server)
   */
  bool emberAfApplianceStatisticsClusterLogResponseCallback(chip::EndpointId endpoint, chip::app::CommandSender * commandObj,
                                                            /* TYPE WARNING: unknown defaults to */ uint8_t * timeStamp,
                                                            uint32_t logId, uint32_t logLength,
                                                            /* TYPE WARNING: array array defaults to */ uint8_t * logPayload);
  /**
   * @brief  Cluster LogQueueRequest Command callback (from client)
   */
  bool emberAfApplianceStatisticsClusterLogQueueRequestCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  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  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  Cluster GetProfileInfoCommand Command callback (from client)
   */
  bool emberAfElectricalMeasurementClusterGetProfileInfoCommandCallback(chip::EndpointId endpoint,
                                                                        chip::app::CommandHandler * commandObj);
  /**
   * @brief  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  Cluster GetMeasurementProfileCommand Command callback (from client)
   */
  bool emberAfElectricalMeasurementClusterGetMeasurementProfileCommandCallback(chip::EndpointId endpoint,
                                                                               chip::app::CommandHandler * commandObj,
                                                                               uint16_t attributeId, uint32_t startTime,
                                                                               uint8_t numberOfIntervals);
  /**
   * @brief  Cluster Bind Command callback (from client)
   */
  bool emberAfBindingClusterBindCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, chip::NodeId nodeId,
                                         chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId);
  /**
   * @brief  Cluster Unbind Command callback (from client)
   */
  bool emberAfBindingClusterUnbindCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj, chip::NodeId nodeId,
                                           chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId);
  /**
   * @brief  Cluster CommandOne Command callback (from client)
   */
  bool emberAfSampleMfgSpecificClusterClusterCommandOneCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                uint8_t argOne);
  /**
   * @brief  Cluster CommandTwo Command callback (from client)
   */
  bool emberAfSampleMfgSpecificCluster2ClusterCommandTwoCallback(chip::EndpointId endpoint, chip::app::CommandHandler * commandObj,
                                                                 uint8_t argOne);
  
  /** @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 Configure Reporting Response
   *
   * This function is called by the application framework when a Configure
   * Reporting 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 buffer Buffer containing the list of attribute status records.  Ver.:
   * always
   * @param bufLen The length in bytes of the list.  Ver.: always
   */
  bool emberAfConfigureReportingResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
  
  /** @brief Read Reporting Configuration Response
   *
   * This function is called by the application framework when a Read Reporting
   * Configuration 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 buffer Buffer containing the list of attribute reporting configuration
   * records.  Ver.: always
   * @param bufLen The length in bytes of the list.  Ver.: always
   */
  bool emberAfReadReportingConfigurationResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
  
  /** @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 type   Ver.: always
   * @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 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
   * ::EMBER_ZCL_STATUS_SUCCESS to permit the change or any other ::EmberAfStatus
   * to reject it.
   *
   * @param endpoint   Ver.: always
   * @param clusterId   Ver.: always
   * @param attributeId   Ver.: always
   * @param mask   Ver.: always
   * @param manufacturerCode   Ver.: always
   * @param type   Ver.: always
   * @param size   Ver.: always
   * @param value   Ver.: always
   */
  EmberAfStatus emberAfPreAttributeChangeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, chip::AttributeId attributeId,
                                                  uint8_t mask, uint16_t manufacturerCode, 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 endpoint   Ver.: always
   * @param clusterId   Ver.: always
   * @param attributeId   Ver.: always
   * @param mask   Ver.: always
   * @param manufacturerCode   Ver.: always
   * @param type   Ver.: always
   * @param size   Ver.: always
   * @param value   Ver.: always
   */
  void emberAfPostAttributeChangeCallback(chip::EndpointId endpoint, chip::ClusterId clusterId, chip::AttributeId attributeId,
                                          uint8_t mask, uint16_t manufacturerCode, uint8_t type, uint16_t size, uint8_t * value);
  
  /** @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 Write Attributes Response
   *
   * This function is called by the application framework when a Write Attributes
   * 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 buffer Buffer containing the list of write attribute status records.
   * Ver.: always
   * @param bufLen The length in bytes of the list.  Ver.: always
   */
  bool emberAfWriteAttributesResponseCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
  
  /** @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 Report Attributes
   *
   * This function is called by the application framework when a Report Attributes
   * 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 command.  Ver.: always
   * @param buffer Buffer containing the list of attribute report records.  Ver.:
   * always
   * @param bufLen The length in bytes of the list.  Ver.: always
   */
  bool emberAfReportAttributesCallback(chip::ClusterId clusterId, uint8_t * buffer, uint16_t bufLen);
  
  /** @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();
  