"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var color_control_exports = {};
__export(color_control_exports, {
  ColorControl: () => ColorControl,
  ColorControlCluster: () => ColorControlCluster
});
module.exports = __toCommonJS(color_control_exports);
var import_MutableCluster = require("../cluster/mutation/MutableCluster.js");
var import_Cluster = require("../cluster/Cluster.js");
var import_TlvNumber = require("../tlv/TlvNumber.js");
var import_TlvObject = require("../tlv/TlvObject.js");
var import_BitmapSchema = require("../schema/BitmapSchema.js");
var import_TlvNullable = require("../tlv/TlvNullable.js");
var import_model = require("@matter/model");
var import_TlvString = require("../tlv/TlvString.js");
var import_ClusterRegistry = require("../cluster/ClusterRegistry.js");
/**
 * @license
 * Copyright 2022-2026 Matter.js Authors
 * SPDX-License-Identifier: Apache-2.0
 */
var ColorControl;
((ColorControl2) => {
  let Feature;
  ((Feature2) => {
    Feature2["HueSaturation"] = "HueSaturation";
    Feature2["EnhancedHue"] = "EnhancedHue";
    Feature2["ColorLoop"] = "ColorLoop";
    Feature2["Xy"] = "Xy";
    Feature2["ColorTemperature"] = "ColorTemperature";
  })(Feature = ColorControl2.Feature || (ColorControl2.Feature = {}));
  let Direction;
  ((Direction2) => {
    Direction2[Direction2["Shortest"] = 0] = "Shortest";
    Direction2[Direction2["Longest"] = 1] = "Longest";
    Direction2[Direction2["Up"] = 2] = "Up";
    Direction2[Direction2["Down"] = 3] = "Down";
  })(Direction = ColorControl2.Direction || (ColorControl2.Direction = {}));
  ColorControl2.Options = {
    /**
     * Dependency on On/Off cluster
     *
     * This bit shall indicate if this cluster server instance has a dependency with the On/Off cluster.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.6.2.1
     */
    executeIfOff: (0, import_BitmapSchema.BitFlag)(0)
  };
  ColorControl2.TlvMoveToHueRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the hue to be moved to.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.4.1
     */
    hue: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt8.bound({ max: 254 })),
    /**
     * This field shall indicate the movement direction.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.4.2
     */
    direction: (0, import_TlvObject.TlvField)(1, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate, in 1/10ths of a second, the time that shall be taken to move to the new hue.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.4.3
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  let MoveMode;
  ((MoveMode2) => {
    MoveMode2[MoveMode2["Stop"] = 0] = "Stop";
    MoveMode2[MoveMode2["Up"] = 1] = "Up";
    MoveMode2[MoveMode2["Down"] = 3] = "Down";
  })(MoveMode = ColorControl2.MoveMode || (ColorControl2.MoveMode = {}));
  ColorControl2.TlvMoveHueRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of movement.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.5.1
     */
    moveMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the rate of movement in steps per second. A step is a change in the device’s hue of
     * one unit.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.5.2
     */
    rate: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt8),
    optionsMask: (0, import_TlvObject.TlvField)(2, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  let StepMode;
  ((StepMode2) => {
    StepMode2[StepMode2["Up"] = 1] = "Up";
    StepMode2[StepMode2["Down"] = 3] = "Down";
  })(StepMode = ColorControl2.StepMode || (ColorControl2.StepMode = {}));
  ColorControl2.TlvStepHueRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of the step to be performed.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.6.1
     */
    stepMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the change to be added to (or subtracted from) the current value of the device’s
     * hue.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.6.2
     */
    stepSize: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt8),
    /**
     * This field shall indicate, in 1/10ths of a second, the time that shall be taken to perform the step. A step
     * is a change in the device’s hue of Step size units.
     *
     * > [!NOTE]
     *
     * > Here the TransitionTime data field is of data type uint8, where uint16 is more common for TransitionTime
     *   data fields in other clusters / commands.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.6.3
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt8),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvMoveToSaturationRequest = (0, import_TlvObject.TlvObject)({
    saturation: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt8.bound({ max: 254 })),
    transitionTime: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(2, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvMoveSaturationRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of movement, as described in the MoveHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.8.1
     */
    moveMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the rate of movement in steps per second. A step is a change in the device’s
     * saturation of one unit.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.8.2
     */
    rate: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt8),
    optionsMask: (0, import_TlvObject.TlvField)(2, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvStepSaturationRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of the step to be performed, as described in the StepHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.9.1
     */
    stepMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the change to be added to (or subtracted from) the current value of the device’s
     * saturation.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.9.2
     */
    stepSize: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt8),
    /**
     * This field shall indicate, in 1/10ths of a second, the time that shall be taken to perform the step. A step
     * is a change in the device’s saturation of Step size units.
     *
     * > [!NOTE]
     *
     * > Here the TransitionTime data field is of data type uint8, where uint16 is more common for TransitionTime
     *   data fields in other clusters / commands.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.9.3
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt8),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvMoveToHueAndSaturationRequest = (0, import_TlvObject.TlvObject)({
    hue: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt8.bound({ max: 254 })),
    saturation: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt8.bound({ max: 254 })),
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvMoveToColorRequest = (0, import_TlvObject.TlvObject)({
    colorX: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
    colorY: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvMoveColorRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the rate of movement in steps per second. A step is a change in the device’s
     * CurrentX attribute of one unit.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.12.1
     */
    rateX: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvInt16),
    /**
     * This field shall indicate the rate of movement in steps per second. A step is a change in the device’s
     * CurrentY attribute of one unit.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.12.2
     */
    rateY: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvInt16),
    optionsMask: (0, import_TlvObject.TlvField)(2, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvStepColorRequest = (0, import_TlvObject.TlvObject)({
    stepX: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvInt16),
    stepY: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvInt16),
    /**
     * The field shall indicate, in 1/10ths of a second, the time that shall be taken to perform the color change.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.13.2
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvMoveToColorTemperatureRequest = (0, import_TlvObject.TlvObject)({
    colorTemperatureMireds: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
    transitionTime: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(2, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvMoveColorTemperatureRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of movement, as described in the MoveHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.21.1
     */
    moveMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the rate of movement in steps per second. A step is a change in the color
     * temperature of a device by one unit.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.21.2
     */
    rate: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt16),
    /**
     * This field shall indicate a lower bound on the ColorTemperatureMireds attribute (≡ an upper bound on the
     * color temperature in kelvins) for the current move operation
     *
     * ColorTempPhysicalMinMireds <= ColorTemperatureMinimumMireds field <= ColorTemperatureMireds As such if the
     * move operation takes the ColorTemperatureMireds attribute towards the value of the
     * ColorTemperatureMinimumMireds field it shall be clipped so that the above invariant is satisfied. If the
     * ColorTemperatureMinimumMireds field is set to 0, ColorTempPhysicalMinMireds shall be used as the lower bound
     * for the ColorTemperatureMireds attribute.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.21.3
     */
    colorTemperatureMinimumMireds: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
    /**
     * This field shall indicate an upper bound on the ColorTemperatureMireds attribute (≡ a lower bound on the
     * color temperature in kelvins) for the current move operation
     *
     * ColorTemperatureMireds <= ColorTemperatureMaximumMireds field <= ColorTempPhysicalMaxMireds As such if the
     * move operation takes the ColorTemperatureMireds attribute towards the value of the
     * ColorTemperatureMaximumMireds field it shall be clipped so that the above invariant is satisfied. If the
     * ColorTemperatureMaximumMireds field is set to 0, ColorTempPhysicalMaxMireds shall be used as the upper bound
     * for the ColorTemperatureMireds attribute.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.21.4
     */
    colorTemperatureMaximumMireds: (0, import_TlvObject.TlvField)(3, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
    optionsMask: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(5, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvStepColorTemperatureRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of the step to be performed, as described in the StepHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.22.1
     */
    stepMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the change to be added to (or subtracted from) the current value of the device’s
     * color temperature.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.22.2
     */
    stepSize: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt16),
    /**
     * This field shall indicate, in units of 1/10ths of a second, the time that shall be taken to perform the step.
     * A step is a change to the device’s color temperature of a magnitude corresponding to the StepSize field.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.22.3
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    /**
     * This field shall indicate a lower bound on the ColorTemperatureMireds attribute (≡ an upper bound on the
     * color temperature in kelvins) for the current step operation
     *
     * ColorTempPhysicalMinMireds <= ColorTemperatureMinimumMireds field <= ColorTemperatureMireds As such if the
     * step operation takes the ColorTemperatureMireds attribute towards the value of the
     * ColorTemperatureMinimumMireds field it shall be clipped so that the above invariant is satisfied. If the
     * ColorTemperatureMinimumMireds field is set to 0, ColorTempPhysicalMinMireds shall be used as the lower bound
     * for the ColorTemperatureMireds attribute.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.22.4
     */
    colorTemperatureMinimumMireds: (0, import_TlvObject.TlvField)(3, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
    /**
     * This field shall indicate an upper bound on the ColorTemperatureMireds attribute (≡ a lower bound on the
     * color temperature in kelvins) for the current step operation
     *
     * ColorTemperatureMireds ≤ ColorTemperatureMaximumMireds field ≤ ColorTempPhysicalMaxMireds As such if the step
     * operation takes the ColorTemperatureMireds attribute towards the value of the ColorTemperatureMaximumMireds
     * field it shall be clipped so that the above invariant is satisfied. If the ColorTemperatureMaximumMireds
     * field is set to 0, ColorTempPhysicalMaxMireds shall be used as the upper bound for the ColorTemperatureMireds
     * attribute.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.22.5
     */
    colorTemperatureMaximumMireds: (0, import_TlvObject.TlvField)(4, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
    optionsMask: (0, import_TlvObject.TlvField)(5, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(6, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvEnhancedMoveToHueRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the target extended hue for the light.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.15.1
     */
    enhancedHue: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt16),
    /**
     * This field shall indicate the movement direction.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.15.2
     */
    direction: (0, import_TlvObject.TlvField)(1, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the transition time, as described in the MoveToHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.15.3
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvEnhancedMoveHueRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of movement, as described in the MoveHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.16.1
     */
    moveMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the rate of movement in steps per second. A step is a change in the extended hue of
     * a device by one unit.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.16.2
     */
    rate: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt16),
    optionsMask: (0, import_TlvObject.TlvField)(2, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvEnhancedStepHueRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the mode of the step to be performed, as described in the StepHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.17.1
     */
    stepMode: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the change to be added to (or subtracted from) the current value of the device’s
     * enhanced hue.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.17.2
     */
    stepSize: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt16),
    /**
     * The field shall indicate, in units of 1/10ths of a second, the time that shall be taken to perform the step.
     * A step is a change to the device’s enhanced hue of a magnitude corresponding to the StepSize field.
     *
     * > [!NOTE]
     *
     * > Here TransitionTime data field is of data type uint16, while the TransitionTime data field of the StepHue
     *   command is of data type uint8.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.17.3
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvEnhancedMoveToHueAndSaturationRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate the target extended hue for the light.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.18.1
     */
    enhancedHue: (0, import_TlvObject.TlvField)(0, import_TlvNumber.TlvUInt16),
    /**
     * This field shall indicate the saturation, as described in the MoveToHueAndSaturation command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.18.2
     */
    saturation: (0, import_TlvObject.TlvField)(1, import_TlvNumber.TlvUInt8.bound({ max: 254 })),
    /**
     * This field shall indicate the transition time, as described in the MoveToHue command.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.18.3
     */
    transitionTime: (0, import_TlvObject.TlvField)(2, import_TlvNumber.TlvUInt16.bound({ max: 65534 })),
    optionsMask: (0, import_TlvObject.TlvField)(3, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(4, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  let ColorLoopActive;
  ((ColorLoopActive2) => {
    ColorLoopActive2[ColorLoopActive2["Inactive"] = 0] = "Inactive";
    ColorLoopActive2[ColorLoopActive2["Active"] = 1] = "Active";
  })(ColorLoopActive = ColorControl2.ColorLoopActive || (ColorControl2.ColorLoopActive = {}));
  let ColorLoopDirection;
  ((ColorLoopDirection2) => {
    ColorLoopDirection2[ColorLoopDirection2["Decrement"] = 0] = "Decrement";
    ColorLoopDirection2[ColorLoopDirection2["Increment"] = 1] = "Increment";
  })(ColorLoopDirection = ColorControl2.ColorLoopDirection || (ColorControl2.ColorLoopDirection = {}));
  ColorControl2.UpdateFlags = {
    /**
     * Device adheres to the associated action field.
     *
     * This bit shall indicate whether the server adheres to the Action field in order to process the command.
     *
     *   - 0 = Device shall ignore the Action field.
     *
     *   - 1 = Device shall adhere to the Action field.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.6.3.1
     */
    updateAction: (0, import_BitmapSchema.BitFlag)(0),
    /**
     * Device updates the associated direction attribute.
     *
     * This bit shall indicate whether the device updates the ColorLoopDirection attribute with the Direction field.
     *
     *   - 0 = Device shall ignore the Direction field.
     *
     *   - 1 = Device shall update the ColorLoopDirection attribute with the value of the Direction field.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.6.3.2
     */
    updateDirection: (0, import_BitmapSchema.BitFlag)(1),
    /**
     * Device updates the associated time attribute.
     *
     * This bit shall indicate whether the device updates the ColorLoopTime attribute with the Time field.
     *
     *   - 0 = Device shall ignore the Time field.
     *
     *   - 1 = Device shall update the value of the ColorLoopTime attribute with the value of the Time field.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.6.3.3
     */
    updateTime: (0, import_BitmapSchema.BitFlag)(2),
    /**
     * Device updates the associated start hue attribute.
     *
     * This bit shall indicate whether the device updates the ColorLoopStartEnhancedHue attribute with the value of
     * the StartHue field.
     *
     *   - 0 = Device shall ignore the StartHue field.
     *
     *   - 1 = Device shall update the value of the ColorLoopStartEnhancedHue attribute with the value of the
     *     StartHue field.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.6.3.4
     */
    updateStartHue: (0, import_BitmapSchema.BitFlag)(3)
  };
  let ColorLoopAction;
  ((ColorLoopAction2) => {
    ColorLoopAction2[ColorLoopAction2["Deactivate"] = 0] = "Deactivate";
    ColorLoopAction2[ColorLoopAction2["ActivateFromColorLoopStartEnhancedHue"] = 1] = "ActivateFromColorLoopStartEnhancedHue";
    ColorLoopAction2[ColorLoopAction2["ActivateFromEnhancedCurrentHue"] = 2] = "ActivateFromEnhancedCurrentHue";
  })(ColorLoopAction = ColorControl2.ColorLoopAction || (ColorControl2.ColorLoopAction = {}));
  ColorControl2.TlvColorLoopSetRequest = (0, import_TlvObject.TlvObject)({
    /**
     * This field shall indicate which color loop attributes to update (from the values supplied in the other
     * fields, see field descriptions below) before the color loop is started.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.19.1
     */
    updateFlags: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.UpdateFlags)),
    /**
     * This field shall indicate the action to take for the color loop.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.19.2
     */
    action: (0, import_TlvObject.TlvField)(1, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the direction for the color loop.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.19.3
     */
    direction: (0, import_TlvObject.TlvField)(2, (0, import_TlvNumber.TlvEnum)()),
    /**
     * This field shall indicate the number of seconds over which to perform a full color loop.
     *
     * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.19.4
     */
    time: (0, import_TlvObject.TlvField)(3, import_TlvNumber.TlvUInt16),
    startHue: (0, import_TlvObject.TlvField)(4, import_TlvNumber.TlvUInt16),
    optionsMask: (0, import_TlvObject.TlvField)(5, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(6, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  ColorControl2.TlvStopMoveStepRequest = (0, import_TlvObject.TlvObject)({
    optionsMask: (0, import_TlvObject.TlvField)(0, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
    optionsOverride: (0, import_TlvObject.TlvField)(1, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options))
  });
  let DriftCompensation;
  ((DriftCompensation2) => {
    DriftCompensation2[DriftCompensation2["None"] = 0] = "None";
    DriftCompensation2[DriftCompensation2["OtherOrUnknown"] = 1] = "OtherOrUnknown";
    DriftCompensation2[DriftCompensation2["TemperatureMonitoring"] = 2] = "TemperatureMonitoring";
    DriftCompensation2[DriftCompensation2["OpticalLuminanceMonitoringAndFeedback"] = 3] = "OpticalLuminanceMonitoringAndFeedback";
    DriftCompensation2[DriftCompensation2["OpticalColorMonitoringAndFeedback"] = 4] = "OpticalColorMonitoringAndFeedback";
  })(DriftCompensation = ColorControl2.DriftCompensation || (ColorControl2.DriftCompensation = {}));
  let ColorMode;
  ((ColorMode2) => {
    ColorMode2[ColorMode2["CurrentHueAndCurrentSaturation"] = 0] = "CurrentHueAndCurrentSaturation";
    ColorMode2[ColorMode2["CurrentXAndCurrentY"] = 1] = "CurrentXAndCurrentY";
    ColorMode2[ColorMode2["ColorTemperatureMireds"] = 2] = "ColorTemperatureMireds";
  })(ColorMode = ColorControl2.ColorMode || (ColorControl2.ColorMode = {}));
  let EnhancedColorMode;
  ((EnhancedColorMode2) => {
    EnhancedColorMode2[EnhancedColorMode2["CurrentHueAndCurrentSaturation"] = 0] = "CurrentHueAndCurrentSaturation";
    EnhancedColorMode2[EnhancedColorMode2["CurrentXAndCurrentY"] = 1] = "CurrentXAndCurrentY";
    EnhancedColorMode2[EnhancedColorMode2["ColorTemperatureMireds"] = 2] = "ColorTemperatureMireds";
    EnhancedColorMode2[EnhancedColorMode2["EnhancedCurrentHueAndCurrentSaturation"] = 3] = "EnhancedCurrentHueAndCurrentSaturation";
  })(EnhancedColorMode = ColorControl2.EnhancedColorMode || (ColorControl2.EnhancedColorMode = {}));
  ColorControl2.ColorCapabilities = {
    /**
     * Supports color specification via hue/saturation.
     */
    hueSaturation: (0, import_BitmapSchema.BitFlag)(0),
    /**
     * Enhanced hue is supported.
     */
    enhancedHue: (0, import_BitmapSchema.BitFlag)(1),
    /**
     * Color loop is supported.
     */
    colorLoop: (0, import_BitmapSchema.BitFlag)(2),
    /**
     * Supports color specification via XY.
     */
    xy: (0, import_BitmapSchema.BitFlag)(3),
    /**
     * Supports color specification via color temperature.
     */
    colorTemperature: (0, import_BitmapSchema.BitFlag)(4)
  };
  ColorControl2.HueSaturationComponent = import_MutableCluster.MutableCluster.Component({
    attributes: {
      /**
       * The CurrentHue attribute contains the current hue value of the light. It is updated as fast as practical
       * during commands that change the hue.
       *
       * The hue in degrees shall be related to the CurrentHue attribute by the relationship:
       *
       * Hue = "CurrentHue" * 360 / 254
       *
       * where CurrentHue is in the range from 0 to 254 inclusive.
       *
       * Changes to this attribute shall only be marked as reportable in the following cases:
       *
       *   - At most once per second or
       *
       *   - At the end of the movement/transition.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.2
       */
      currentHue: (0, import_Cluster.Attribute)(0, import_TlvNumber.TlvUInt8.bound({ max: 254 }), { persistent: true }),
      /**
       * Indicates the current saturation value of the light. It is updated as fast as practical during commands
       * that change the saturation.
       *
       * The saturation (on a scale from 0.0 to 1.0) shall be related to the CurrentSaturation attribute by the
       * relationship:
       *
       * Saturation = "CurrentSaturation" / 254
       *
       * where CurrentSaturation is in the range from 0 to 254 inclusive.
       *
       * Changes to this attribute shall only be marked as reportable in the following cases:
       *
       *   - At most once per second or
       *
       *   - At the end of the movement/transition.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.3
       */
      currentSaturation: (0, import_Cluster.Attribute)(1, import_TlvNumber.TlvUInt8.bound({ max: 254 }), { scene: true, persistent: true })
    },
    commands: {
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.4
       */
      moveToHue: (0, import_Cluster.Command)(0, ColorControl2.TlvMoveToHueRequest, 0, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.5
       */
      moveHue: (0, import_Cluster.Command)(1, ColorControl2.TlvMoveHueRequest, 1, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.6
       */
      stepHue: (0, import_Cluster.Command)(2, ColorControl2.TlvStepHueRequest, 2, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.7
       */
      moveToSaturation: (0, import_Cluster.Command)(3, ColorControl2.TlvMoveToSaturationRequest, 3, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.8
       */
      moveSaturation: (0, import_Cluster.Command)(4, ColorControl2.TlvMoveSaturationRequest, 4, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.9
       */
      stepSaturation: (0, import_Cluster.Command)(5, ColorControl2.TlvStepSaturationRequest, 5, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.10
       */
      moveToHueAndSaturation: (0, import_Cluster.Command)(6, ColorControl2.TlvMoveToHueAndSaturationRequest, 6, import_Cluster.TlvNoResponse)
    }
  });
  ColorControl2.XyComponent = import_MutableCluster.MutableCluster.Component({
    attributes: {
      /**
       * Indicates the current value of the normalized chromaticity value x, as defined in the CIE xyY Color
       * Space. It is updated as fast as practical during commands that change the color.
       *
       * The value of x shall be related to the CurrentX attribute by the relationship
       *
       * x = "CurrentX" / 65536
       *
       * where CurrentX is in the range from 0 to 65279 inclusive.
       *
       * Changes to this attribute shall only be marked as reportable in the following cases:
       *
       *   - At most once per second or
       *
       *   - At the end of the movement/transition.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.5
       */
      currentX: (0, import_Cluster.Attribute)(3, import_TlvNumber.TlvUInt16.bound({ max: 65279 }), { scene: true, persistent: true }),
      /**
       * Indicates the current value of the normalized chromaticity value y, as defined in the CIE xyY Color
       * Space. It is updated as fast as practical during commands that change the color.
       *
       * The value of y shall be related to the CurrentY attribute by the relationship
       *
       * y = "CurrentY" / 65536
       *
       * where CurrentY is in the range from 0 to 65279 inclusive.
       *
       * Changes to this attribute shall only be marked as reportable in the following cases:
       *
       *   - At most once per second or
       *
       *   - At the end of the movement/transition.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.6
       */
      currentY: (0, import_Cluster.Attribute)(4, import_TlvNumber.TlvUInt16.bound({ max: 65279 }), { scene: true, persistent: true })
    },
    commands: {
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.11
       */
      moveToColor: (0, import_Cluster.Command)(7, ColorControl2.TlvMoveToColorRequest, 7, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.12
       */
      moveColor: (0, import_Cluster.Command)(8, ColorControl2.TlvMoveColorRequest, 8, import_Cluster.TlvNoResponse),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.13
       */
      stepColor: (0, import_Cluster.Command)(9, ColorControl2.TlvStepColorRequest, 9, import_Cluster.TlvNoResponse)
    }
  });
  ColorControl2.ColorTemperatureComponent = import_MutableCluster.MutableCluster.Component({
    attributes: {
      /**
       * Indicates a scaled inverse of the current value of the color temperature. The unit of
       * ColorTemperatureMireds is the mired (micro reciprocal degree), a.k.a. mirek (micro reciprocal kelvin). It
       * is updated as fast as practical during commands that change the color.
       *
       * Changes to this attribute shall only be marked as reportable in the following cases:
       *
       *   - At most once per second or
       *
       *   - At the end of the movement/transition.
       *
       * The color temperature value in kelvins shall be related to the ColorTemperatureMireds attribute in mired
       * by the relationship
       *
       * "Color temperature [K]" = "1,000,000" / "ColorTemperatureMireds"
       *
       * where ColorTemperatureMireds is in the range from 1 to 65279 inclusive, giving a color temperature range
       * from 1,000,000 K to 15.32 K.
       *
       * If this attribute is implemented then the ColorMode attribute shall also be implemented.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.9
       */
      colorTemperatureMireds: (0, import_Cluster.Attribute)(7, import_TlvNumber.TlvUInt16, { scene: true, persistent: true }),
      /**
       * Indicates the minimum mired value supported by the hardware. ColorTempPhysicalMinMireds corresponds to
       * the maximum color temperature in kelvins supported by the hardware. ColorTempPhysicalMinMireds <=
       * ColorTemperatureMireds.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.20
       */
      colorTempPhysicalMinMireds: (0, import_Cluster.Attribute)(16395, import_TlvNumber.TlvUInt16.bound({ min: 1, max: 65279 })),
      /**
       * Indicates the maximum mired value supported by the hardware. ColorTempPhysicalMaxMireds corresponds to
       * the minimum color temperature in kelvins supported by the hardware. ColorTemperatureMireds <=
       * ColorTempPhysicalMaxMireds.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.21
       */
      colorTempPhysicalMaxMireds: (0, import_Cluster.Attribute)(16396, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * Indicates a lower bound on the value of the ColorTemperatureMireds attribute for the purposes of coupling
       * the ColorTemperatureMireds attribute to the CurrentLevel attribute when the CoupleColorTempToLevel bit of
       * the Options attribute of the Level Control cluster is equal to 1. When coupling the
       * ColorTemperatureMireds attribute to the CurrentLevel attribute, this value shall correspond to a
       * CurrentLevel value of 254 (100%).
       *
       * This attribute shall be set such that the following relationship exists: ColorTempPhysicalMinMireds <=
       * CoupleColorTempToLevelMinMireds <= ColorTemperatureMireds
       *
       * Note that since this attribute is stored as a micro reciprocal degree (mired) value (i.e. color
       * temperature in kelvins = 1,000,000 / CoupleColorTempToLevelMinMireds), the
       * CoupleColorTempToLevelMinMireds attribute corresponds to an upper bound on the value of the color
       * temperature in kelvins supported by the device.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.22
       */
      coupleColorTempToLevelMinMireds: (0, import_Cluster.OptionalAttribute)(16397, import_TlvNumber.TlvUInt16),
      /**
       * Indicates the desired startup color temperature value the light shall use when it is supplied with power
       * and this value shall be reflected in the ColorTemperatureMireds attribute. In addition, the ColorMode and
       * EnhancedColorMode attributes shall be set to 2 (ColorTemperatureMireds). The values of the
       * StartUpColorTemperatureMireds attribute are listed in the table below,
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.23
       */
      startUpColorTemperatureMireds: (0, import_Cluster.OptionalWritableAttribute)(
        16400,
        (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt16.bound({ min: 1, max: 65279 })),
        { persistent: true, writeAcl: import_model.AccessLevel.Manage }
      )
    },
    commands: {
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.14
       */
      moveToColorTemperature: (0, import_Cluster.Command)(10, ColorControl2.TlvMoveToColorTemperatureRequest, 10, import_Cluster.TlvNoResponse),
      /**
       * This command allows the color temperature of the light to be moved at a specified rate.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.21
       */
      moveColorTemperature: (0, import_Cluster.Command)(75, ColorControl2.TlvMoveColorTemperatureRequest, 75, import_Cluster.TlvNoResponse),
      /**
       * This command allows the color temperature of the light to be stepped with a specified step size.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.22
       */
      stepColorTemperature: (0, import_Cluster.Command)(76, ColorControl2.TlvStepColorTemperatureRequest, 76, import_Cluster.TlvNoResponse)
    }
  });
  ColorControl2.EnhancedHueComponent = import_MutableCluster.MutableCluster.Component({
    attributes: {
      /**
       * Indicates the non-equidistant steps along the CIE 1931 color triangle, and it provides 16-bits precision.
       *
       * The upper 8 bits of this attribute shall be used as an index in the implementation specific XY lookup
       * table to provide the non-equidistant steps. The lower 8 bits shall be used to interpolate between these
       * steps in a linear way in order to provide color zoom for the user.
       *
       * To provide compatibility with clients not supporting EHUE, the CurrentHue attribute shall contain a hue
       * value in the range 0 to 254, calculated from the EnhancedCurrentHue attribute.
       *
       * Changes to this attribute shall only be marked as reportable in the following cases:
       *
       *   - At most once per second or
       *
       *   - At the end of the movement/transition.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.12
       */
      enhancedCurrentHue: (0, import_Cluster.Attribute)(16384, import_TlvNumber.TlvUInt16, { scene: true, persistent: true })
    },
    commands: {
      /**
       * This command allows the light to be moved in a smooth continuous transition from their current hue to a
       * target hue.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.15
       */
      enhancedMoveToHue: (0, import_Cluster.Command)(64, ColorControl2.TlvEnhancedMoveToHueRequest, 64, import_Cluster.TlvNoResponse),
      /**
       * This command allows the light to start a continuous transition starting from their current hue.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.16
       */
      enhancedMoveHue: (0, import_Cluster.Command)(65, ColorControl2.TlvEnhancedMoveHueRequest, 65, import_Cluster.TlvNoResponse),
      /**
       * This command allows the light to be moved in a stepped transition from their current hue, resulting in a
       * linear transition through XY space.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.17
       */
      enhancedStepHue: (0, import_Cluster.Command)(66, ColorControl2.TlvEnhancedStepHueRequest, 66, import_Cluster.TlvNoResponse),
      /**
       * This command allows the light to be moved in a smooth continuous transition from their current hue to a
       * target hue and from their current saturation to a target saturation.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.18
       */
      enhancedMoveToHueAndSaturation: (0, import_Cluster.Command)(
        67,
        ColorControl2.TlvEnhancedMoveToHueAndSaturationRequest,
        67,
        import_Cluster.TlvNoResponse
      )
    }
  });
  ColorControl2.ColorLoopComponent = import_MutableCluster.MutableCluster.Component({
    attributes: {
      /**
       * Indicates the current active status of the color loop. If this attribute has the value 0, the color loop
       * shall NOT be active. If this attribute has the value 1, the color loop shall be active.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.14
       */
      colorLoopActive: (0, import_Cluster.Attribute)(16386, (0, import_TlvNumber.TlvEnum)(), { scene: true, persistent: true }),
      /**
       * Indicates the current direction of the color loop. If this attribute has the value Decrement, the
       * EnhancedCurrentHue attribute shall be decremented. If this attribute has the value Increment, the
       * EnhancedCurrentHue attribute shall be incremented.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.15
       */
      colorLoopDirection: (0, import_Cluster.Attribute)(16387, (0, import_TlvNumber.TlvEnum)(), { scene: true, persistent: true }),
      /**
       * Indicates the number of seconds it shall take to perform a full color loop, i.e., to cycle all values of
       * the EnhancedCurrentHue attribute (between 0 and 65534).
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.16
       */
      colorLoopTime: (0, import_Cluster.Attribute)(16388, import_TlvNumber.TlvUInt16, { scene: true, persistent: true }),
      /**
       * Indicates the value of the EnhancedCurrentHue attribute from which the color loop shall be started.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.17
       */
      colorLoopStartEnhancedHue: (0, import_Cluster.Attribute)(16389, import_TlvNumber.TlvUInt16),
      /**
       * Indicates the value of the EnhancedCurrentHue attribute before the color loop was started. Once the color
       * loop is complete, the EnhancedCurrentHue attribute shall be restored to this value.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.18
       */
      colorLoopStoredEnhancedHue: (0, import_Cluster.Attribute)(16390, import_TlvNumber.TlvUInt16)
    },
    commands: {
      /**
       * This command allows a color loop to be activated such that the color light cycles through its range of
       * hues.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.19
       */
      colorLoopSet: (0, import_Cluster.Command)(68, ColorControl2.TlvColorLoopSetRequest, 68, import_Cluster.TlvNoResponse)
    }
  });
  ColorControl2.HueSaturationOrXyOrColorTemperatureComponent = import_MutableCluster.MutableCluster.Component({
    commands: {
      /**
       * This command is provided to allow MoveTo and Step commands to be stopped.
       *
       * > [!NOTE]
       *
       * > This automatically provides symmetry to the Level Control cluster.
       *
       * > [!NOTE]
       *
       * > The StopMoveStep command has no effect on an active color loop.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.8.20
       */
      stopMoveStep: (0, import_Cluster.Command)(71, ColorControl2.TlvStopMoveStepRequest, 71, import_Cluster.TlvNoResponse)
    }
  });
  ColorControl2.Base = import_MutableCluster.MutableCluster.Component({
    id: 768,
    name: "ColorControl",
    revision: 7,
    features: {
      /**
       * Supports color specification via hue/saturation.
       */
      hueSaturation: (0, import_BitmapSchema.BitFlag)(0),
      /**
       * Enhanced hue is supported.
       */
      enhancedHue: (0, import_BitmapSchema.BitFlag)(1),
      /**
       * Color loop is supported.
       */
      colorLoop: (0, import_BitmapSchema.BitFlag)(2),
      /**
       * Supports color specification via XY.
       */
      xy: (0, import_BitmapSchema.BitFlag)(3),
      /**
       * Supports specification of color temperature.
       */
      colorTemperature: (0, import_BitmapSchema.BitFlag)(4)
    },
    attributes: {
      /**
       * Indicates the time remaining, in 1/10ths of a second, until transitions due to the currently active
       * command will be complete.
       *
       * Changes to this attribute shall only be marked as reportable in the following cases:
       *
       *   - When it changes from 0 to any value higher than 10, or
       *
       *   - When it changes, with a delta larger than 10, caused by the invoke of a command, or
       *
       *   - When it changes to 0.
       *
       * For commands with a transition time or changes to the transition time less than 1 second, changes to this
       * attribute shall NOT be reported.
       *
       * As this attribute is not being reported during a regular countdown, clients SHOULD NOT rely on the
       * reporting of this attribute in order to keep track of the remaining duration.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.4
       */
      remainingTime: (0, import_Cluster.OptionalAttribute)(2, import_TlvNumber.TlvUInt16, { default: 0 }),
      /**
       * Indicates what mechanism, if any, is in use for compensation for color/intensity drift over time.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.7
       */
      driftCompensation: (0, import_Cluster.OptionalAttribute)(5, (0, import_TlvNumber.TlvEnum)()),
      /**
       * This attribute shall contain a textual indication of what mechanism, if any, is in use to compensate for
       * color/intensity drift over time.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.8
       */
      compensationText: (0, import_Cluster.OptionalAttribute)(6, import_TlvString.TlvString.bound({ maxLength: 254 })),
      /**
       * Indicates which attributes are currently determining the color of the device.
       *
       * The value of the ColorMode attribute cannot be written directly - it is set upon reception of any command
       * in section Commands to the appropriate mode for that command.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.10
       */
      colorMode: (0, import_Cluster.Attribute)(8, (0, import_TlvNumber.TlvEnum)(), { persistent: true }),
      /**
       * Indicates a bitmap that determines the default behavior of some cluster commands. Each command that is
       * dependent on the Options attribute shall first construct a temporary Options bitmap that is in effect
       * during the command processing. The temporary Options bitmap has the same format and meaning as the
       * Options attribute, but includes any bits that may be overridden by command fields.
       *
       * This attribute is meant to be changed only during commissioning.
       *
       * Below is the format and description of the Options attribute and temporary Options bitmap and the effect
       * on dependent commands.
       *
       * Command execution shall NOT continue beyond the Options processing if all of these criteria are true:
       *
       *   - The On/Off cluster exists on the same endpoint as this cluster.
       *
       *   - The OnOff attribute of the On/Off cluster, on this endpoint, is FALSE.
       *
       *   - The value of the ExecuteIfOff bit is 0.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.11
       */
      options: (0, import_Cluster.WritableAttribute)(15, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt8, ColorControl2.Options)),
      /**
       * Indicates the number of color primaries implemented on this device. A value of null shall indicate that
       * the number of primaries is unknown.
       *
       * Where this attribute is implemented, the attributes below for indicating the “x” and “y” color values of
       * the primaries shall also be implemented for each of the primaries from 1 to NumberOfPrimaries, without
       * leaving gaps. Implementation of the Primary1Intensity attribute and subsequent intensity attributes is
       * optional.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.24
       */
      numberOfPrimaries: (0, import_Cluster.FixedAttribute)(16, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8.bound({ max: 6 }))),
      /**
       * Indicates the normalized chromaticity value x for this primary, as defined in the CIE xyY Color Space.
       *
       * The value of x shall be related to the Primary1X attribute by the relationship
       *
       * x = Primary1X / 65536 (Primary1X in the range 0 to 65279 inclusive)
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.25
       */
      primary1X: (0, import_Cluster.OptionalFixedAttribute)(17, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * Indicates the normalized chromaticity value y for this primary, as defined in the CIE xyY Color Space.
       *
       * The value of y shall be related to the Primary1Y attribute by the relationship
       *
       * y = Primary1Y / 65536 (Primary1Y in the range 0 to 65279 inclusive)
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.26
       */
      primary1Y: (0, import_Cluster.OptionalFixedAttribute)(18, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * Indicates a representation of the maximum intensity of this primary as defined in Section 3.1.3, “The
       * Dimming Light Curve”, normalized such that the primary with the highest maximum intensity contains the
       * value 254.
       *
       * A value of null shall indicate that this primary is not available.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.27
       */
      primary1Intensity: (0, import_Cluster.OptionalFixedAttribute)(19, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8)),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary2X: (0, import_Cluster.OptionalFixedAttribute)(21, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary2Y: (0, import_Cluster.OptionalFixedAttribute)(22, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary2Intensity: (0, import_Cluster.OptionalFixedAttribute)(23, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8)),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary3X: (0, import_Cluster.OptionalFixedAttribute)(25, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary3Y: (0, import_Cluster.OptionalFixedAttribute)(26, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary3Intensity: (0, import_Cluster.OptionalFixedAttribute)(27, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8)),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary4X: (0, import_Cluster.OptionalFixedAttribute)(32, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary4Y: (0, import_Cluster.OptionalFixedAttribute)(33, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary4Intensity: (0, import_Cluster.OptionalFixedAttribute)(34, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8)),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary5X: (0, import_Cluster.OptionalFixedAttribute)(36, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary5Y: (0, import_Cluster.OptionalFixedAttribute)(37, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary5Intensity: (0, import_Cluster.OptionalFixedAttribute)(38, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8)),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary6X: (0, import_Cluster.OptionalFixedAttribute)(40, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary6Y: (0, import_Cluster.OptionalFixedAttribute)(41, import_TlvNumber.TlvUInt16.bound({ max: 65279 })),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      primary6Intensity: (0, import_Cluster.OptionalFixedAttribute)(42, (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8)),
      /**
       * Indicates the normalized chromaticity value x, as defined in the CIE xyY Color Space, of the current
       * white point of the device.
       *
       * The value of x shall be related to the WhitePointX attribute by the relationship
       *
       * x = WhitePointX / 65536 (WhitePointX in the range 0 to 65279 inclusive)
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.29
       */
      whitePointX: (0, import_Cluster.OptionalWritableAttribute)(
        48,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * Indicates the normalized chromaticity value y, as defined in the CIE xyY Color Space, of the current
       * white point of the device.
       *
       * The value of y shall be related to the WhitePointY attribute by the relationship
       *
       * y = WhitePointY / 65536 (WhitePointY in the range 0 to 65279 inclusive)
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.30
       */
      whitePointY: (0, import_Cluster.OptionalWritableAttribute)(
        49,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * Indicates the normalized chromaticity value x, as defined in the CIE xyY Color Space, of the red color
       * point of the device.
       *
       * The value of x shall be related to the ColorPointRX attribute by the relationship
       *
       * x = ColorPointRX / 65536 (ColorPointRX in the range 0 to 65279 inclusive)
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.31
       */
      colorPointRx: (0, import_Cluster.OptionalWritableAttribute)(
        50,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * Indicates the normalized chromaticity value y, as defined in the CIE xyY Color Space, of the red color
       * point of the device.
       *
       * The value of y shall be related to the ColorPointRY attribute by the relationship
       *
       * y = ColorPointRY / 65536 (ColorPointRY in the range 0 to 65279 inclusive)
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.32
       */
      colorPointRy: (0, import_Cluster.OptionalWritableAttribute)(
        51,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * Indicates a representation of the relative intensity of the red color point as defined in Section 3.1.3,
       * “The Dimming Light Curve”, normalized such that the color point with the highest relative intensity
       * contains the value 254.
       *
       * A value of null shall indicate an invalid value.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.33
       */
      colorPointRIntensity: (0, import_Cluster.OptionalWritableAttribute)(
        52,
        (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      colorPointGx: (0, import_Cluster.OptionalWritableAttribute)(
        54,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      colorPointGy: (0, import_Cluster.OptionalWritableAttribute)(
        55,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      colorPointGIntensity: (0, import_Cluster.OptionalWritableAttribute)(
        56,
        (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      colorPointBx: (0, import_Cluster.OptionalWritableAttribute)(
        58,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      colorPointBy: (0, import_Cluster.OptionalWritableAttribute)(
        59,
        import_TlvNumber.TlvUInt16.bound({ max: 65279 }),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7
       */
      colorPointBIntensity: (0, import_Cluster.OptionalWritableAttribute)(
        60,
        (0, import_TlvNullable.TlvNullable)(import_TlvNumber.TlvUInt8),
        { writeAcl: import_model.AccessLevel.Manage }
      ),
      /**
       * Indicates which attributes are currently determining the color of the device.
       *
       * To provide compatibility with clients not supporting EHUE, the original ColorMode attribute shall
       * indicate CurrentHue and CurrentSaturation when the light uses the EnhancedCurrentHue attribute. If the
       * ColorMode attribute is changed, its new value shall be copied to the EnhancedColorMode attribute.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.13
       */
      enhancedColorMode: (0, import_Cluster.Attribute)(16385, (0, import_TlvNumber.TlvEnum)(), { scene: true, persistent: true }),
      /**
       * Indicates the color control capabilities of the device.
       *
       * Bits 0-4 of the ColorCapabilities attribute shall have the same values as the corresponding bits of the
       * FeatureMap attribute. All other bits in ColorCapabilities shall be 0.
       *
       * @see {@link MatterSpecification.v142.Cluster} § 3.2.7.19
       */
      colorCapabilities: (0, import_Cluster.Attribute)(16394, (0, import_TlvNumber.TlvBitmap)(import_TlvNumber.TlvUInt16, ColorControl2.ColorCapabilities))
    },
    /**
     * This metadata controls which ColorControlCluster elements matter.js activates for specific feature
     * combinations.
     */
    extensions: import_MutableCluster.MutableCluster.Extensions(
      { flags: { hueSaturation: true }, component: ColorControl2.HueSaturationComponent },
      { flags: { xy: true }, component: ColorControl2.XyComponent },
      { flags: { colorTemperature: true }, component: ColorControl2.ColorTemperatureComponent },
      { flags: { enhancedHue: true }, component: ColorControl2.EnhancedHueComponent },
      { flags: { colorLoop: true }, component: ColorControl2.ColorLoopComponent },
      { flags: { hueSaturation: true }, component: ColorControl2.HueSaturationOrXyOrColorTemperatureComponent },
      { flags: { xy: true }, component: ColorControl2.HueSaturationOrXyOrColorTemperatureComponent },
      { flags: { colorTemperature: true }, component: ColorControl2.HueSaturationOrXyOrColorTemperatureComponent },
      { flags: { enhancedHue: true, hueSaturation: false }, component: false },
      { flags: { colorLoop: true, enhancedHue: false }, component: false }
    )
  });
  ColorControl2.ClusterInstance = (0, import_MutableCluster.MutableCluster)(ColorControl2.Base);
  ColorControl2.Cluster = ColorControl2.ClusterInstance;
  const HS = { hueSaturation: true };
  const XY = { xy: true };
  const CT = { colorTemperature: true };
  const EHUE = { enhancedHue: true };
  const CL = { colorLoop: true };
  ColorControl2.CompleteInstance = (0, import_MutableCluster.MutableCluster)({
    id: ColorControl2.Cluster.id,
    name: ColorControl2.Cluster.name,
    revision: ColorControl2.Cluster.revision,
    features: ColorControl2.Cluster.features,
    attributes: {
      ...ColorControl2.Cluster.attributes,
      currentHue: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.HueSaturationComponent.attributes.currentHue,
        { mandatoryIf: [HS] }
      ),
      currentSaturation: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.HueSaturationComponent.attributes.currentSaturation,
        { mandatoryIf: [HS] }
      ),
      currentX: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.XyComponent.attributes.currentX, { mandatoryIf: [XY] }),
      currentY: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.XyComponent.attributes.currentY, { mandatoryIf: [XY] }),
      colorTemperatureMireds: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.attributes.colorTemperatureMireds,
        { mandatoryIf: [CT] }
      ),
      enhancedCurrentHue: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.EnhancedHueComponent.attributes.enhancedCurrentHue,
        { mandatoryIf: [EHUE] }
      ),
      colorLoopActive: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorLoopComponent.attributes.colorLoopActive,
        { mandatoryIf: [CL] }
      ),
      colorLoopDirection: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorLoopComponent.attributes.colorLoopDirection,
        { mandatoryIf: [CL] }
      ),
      colorLoopTime: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorLoopComponent.attributes.colorLoopTime,
        { mandatoryIf: [CL] }
      ),
      colorLoopStartEnhancedHue: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorLoopComponent.attributes.colorLoopStartEnhancedHue,
        { mandatoryIf: [CL] }
      ),
      colorLoopStoredEnhancedHue: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorLoopComponent.attributes.colorLoopStoredEnhancedHue,
        { mandatoryIf: [CL] }
      ),
      colorTempPhysicalMinMireds: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.attributes.colorTempPhysicalMinMireds,
        { mandatoryIf: [CT] }
      ),
      colorTempPhysicalMaxMireds: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.attributes.colorTempPhysicalMaxMireds,
        { mandatoryIf: [CT] }
      ),
      coupleColorTempToLevelMinMireds: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.attributes.coupleColorTempToLevelMinMireds,
        { optionalIf: [CT] }
      ),
      startUpColorTemperatureMireds: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.attributes.startUpColorTemperatureMireds,
        { optionalIf: [CT] }
      )
    },
    commands: {
      moveToHue: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.HueSaturationComponent.commands.moveToHue, { mandatoryIf: [HS] }),
      moveHue: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.HueSaturationComponent.commands.moveHue, { mandatoryIf: [HS] }),
      stepHue: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.HueSaturationComponent.commands.stepHue, { mandatoryIf: [HS] }),
      moveToSaturation: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.HueSaturationComponent.commands.moveToSaturation,
        { mandatoryIf: [HS] }
      ),
      moveSaturation: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.HueSaturationComponent.commands.moveSaturation,
        { mandatoryIf: [HS] }
      ),
      stepSaturation: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.HueSaturationComponent.commands.stepSaturation,
        { mandatoryIf: [HS] }
      ),
      moveToHueAndSaturation: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.HueSaturationComponent.commands.moveToHueAndSaturation,
        { mandatoryIf: [HS] }
      ),
      moveToColor: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.XyComponent.commands.moveToColor, { mandatoryIf: [XY] }),
      moveColor: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.XyComponent.commands.moveColor, { mandatoryIf: [XY] }),
      stepColor: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.XyComponent.commands.stepColor, { mandatoryIf: [XY] }),
      moveToColorTemperature: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.commands.moveToColorTemperature,
        { mandatoryIf: [CT] }
      ),
      enhancedMoveToHue: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.EnhancedHueComponent.commands.enhancedMoveToHue,
        { mandatoryIf: [EHUE] }
      ),
      enhancedMoveHue: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.EnhancedHueComponent.commands.enhancedMoveHue,
        { mandatoryIf: [EHUE] }
      ),
      enhancedStepHue: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.EnhancedHueComponent.commands.enhancedStepHue,
        { mandatoryIf: [EHUE] }
      ),
      enhancedMoveToHueAndSaturation: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.EnhancedHueComponent.commands.enhancedMoveToHueAndSaturation,
        { mandatoryIf: [EHUE] }
      ),
      colorLoopSet: import_MutableCluster.MutableCluster.AsConditional(ColorControl2.ColorLoopComponent.commands.colorLoopSet, { mandatoryIf: [CL] }),
      stopMoveStep: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.HueSaturationOrXyOrColorTemperatureComponent.commands.stopMoveStep,
        { mandatoryIf: [HS, XY, CT] }
      ),
      moveColorTemperature: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.commands.moveColorTemperature,
        { mandatoryIf: [CT] }
      ),
      stepColorTemperature: import_MutableCluster.MutableCluster.AsConditional(
        ColorControl2.ColorTemperatureComponent.commands.stepColorTemperature,
        { mandatoryIf: [CT] }
      )
    }
  });
  ColorControl2.Complete = ColorControl2.CompleteInstance;
})(ColorControl || (ColorControl = {}));
const ColorControlCluster = ColorControl.Cluster;
import_ClusterRegistry.ClusterRegistry.register(ColorControl.Complete);
//# sourceMappingURL=color-control.js.map
