ColorControlCluster supports optional features that you can enable with the ColorControlCluster.with() factory method.

MatterSpecification.v13.Cluster § 3.2

interface Cluster {
    attributes: Merge<{
        colorCapabilities: Attribute<TypeFromPartialBitSchema<{
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        }>, any>;
        colorMode: Attribute<ColorControl.ColorMode, any>;
        colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointBx: OptionalWritableAttribute<number, any>;
        colorPointBy: OptionalWritableAttribute<number, any>;
        colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointGx: OptionalWritableAttribute<number, any>;
        colorPointGy: OptionalWritableAttribute<number, any>;
        colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
        colorPointRx: OptionalWritableAttribute<number, any>;
        colorPointRy: OptionalWritableAttribute<number, any>;
        compensationText: OptionalAttribute<string, any>;
        driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
        enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
        numberOfPrimaries: FixedAttribute<null | number, any>;
        options: WritableAttribute<TypeFromPartialBitSchema<{
            executeIfOff: BitFlag;
        }>, any>;
        primary1Intensity: OptionalFixedAttribute<null | number, any>;
        primary1X: OptionalFixedAttribute<number, any>;
        primary1Y: OptionalFixedAttribute<number, any>;
        primary2Intensity: OptionalFixedAttribute<null | number, any>;
        primary2X: OptionalFixedAttribute<number, any>;
        primary2Y: OptionalFixedAttribute<number, any>;
        primary3Intensity: OptionalFixedAttribute<null | number, any>;
        primary3X: OptionalFixedAttribute<number, any>;
        primary3Y: OptionalFixedAttribute<number, any>;
        primary4Intensity: OptionalFixedAttribute<null | number, any>;
        primary4X: OptionalFixedAttribute<number, any>;
        primary4Y: OptionalFixedAttribute<number, any>;
        primary5Intensity: OptionalFixedAttribute<null | number, any>;
        primary5X: OptionalFixedAttribute<number, any>;
        primary5Y: OptionalFixedAttribute<number, any>;
        primary6Intensity: OptionalFixedAttribute<null | number, any>;
        primary6X: OptionalFixedAttribute<number, any>;
        primary6Y: OptionalFixedAttribute<number, any>;
        remainingTime: OptionalAttribute<number, any>;
        whitePointX: OptionalWritableAttribute<number, any>;
        whitePointY: OptionalWritableAttribute<number, any>;
    }, GlobalAttributes<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>>;
    base: undefined;
    commands: {};
    events: {};
    extensions: readonly [{
        component: {
            attributes: {
                currentHue: Attribute<number, any>;
                currentSaturation: Attribute<number, any>;
            };
            commands: {
                moveHue: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            attributes: {
                currentX: Attribute<number, any>;
                currentY: Attribute<number, any>;
            };
            commands: {
                moveColor: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    rateX: FieldType<number>;
                    rateY: FieldType<number>;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: FieldType<number>;
                    colorY: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    stepX: FieldType<number>;
                    stepY: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            attributes: {
                colorTemperatureMireds: Attribute<number, any>;
                colorTempPhysicalMaxMireds: Attribute<number, any>;
                colorTempPhysicalMinMireds: Attribute<number, any>;
                coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
            };
            commands: {
                moveColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<number>;
                    colorTemperatureMinimumMireds: FieldType<number>;
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<number>;
                    colorTemperatureMinimumMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }, {
        component: {
            attributes: {
                enhancedCurrentHue: Attribute<number, any>;
            };
            commands: {
                enhancedMoveHue: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    rate: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
            };
        };
        flags: {
            enhancedHue: true;
        };
    }, {
        component: {
            attributes: {
                colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                colorLoopStartEnhancedHue: Attribute<number, any>;
                colorLoopStoredEnhancedHue: Attribute<number, any>;
                colorLoopTime: Attribute<number, any>;
            };
            commands: {
                colorLoopSet: Command<TypeFromFields<{
                    action: FieldType<ColorControl.Action>;
                    direction: FieldType<ColorControl.ColorLoopSetDirection>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    startHue: FieldType<number>;
                    time: FieldType<number>;
                    updateFlags: FieldType<TypeFromPartialBitSchema<{
                        reserved: BitField;
                        updateAction: BitFlag;
                        updateDirection: BitFlag;
                        updateStartHue: BitFlag;
                        updateTime: BitFlag;
                    }>>;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<{
                        executeIfOff: BitFlag;
                    }>>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }];
    features: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    };
    id: Branded<768, "ClusterId">;
    name: "ColorControl";
    revision: 6;
    supportedFeatures: {};
    unknown: false;
    alter<const AlterationsT>(alterations: AlterationsT): WithAlterations<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, AlterationsT>;
    enable<const FlagsT>(flags: FlagsT): WithFlags<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, FlagsT>;
    set<const ValuesT>(values: ValuesT): WithValues<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, ValuesT>;
    with<const SelectionT>(...selection: SelectionT): Of<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, SelectionT>;
}

Hierarchy (view full)

Properties

attributes: Merge<{
    colorCapabilities: Attribute<TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>, any>;
    colorMode: Attribute<ColorControl.ColorMode, any>;
    colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
    colorPointBx: OptionalWritableAttribute<number, any>;
    colorPointBy: OptionalWritableAttribute<number, any>;
    colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
    colorPointGx: OptionalWritableAttribute<number, any>;
    colorPointGy: OptionalWritableAttribute<number, any>;
    colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
    colorPointRx: OptionalWritableAttribute<number, any>;
    colorPointRy: OptionalWritableAttribute<number, any>;
    compensationText: OptionalAttribute<string, any>;
    driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
    enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
    numberOfPrimaries: FixedAttribute<null | number, any>;
    options: WritableAttribute<TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>, any>;
    primary1Intensity: OptionalFixedAttribute<null | number, any>;
    primary1X: OptionalFixedAttribute<number, any>;
    primary1Y: OptionalFixedAttribute<number, any>;
    primary2Intensity: OptionalFixedAttribute<null | number, any>;
    primary2X: OptionalFixedAttribute<number, any>;
    primary2Y: OptionalFixedAttribute<number, any>;
    primary3Intensity: OptionalFixedAttribute<null | number, any>;
    primary3X: OptionalFixedAttribute<number, any>;
    primary3Y: OptionalFixedAttribute<number, any>;
    primary4Intensity: OptionalFixedAttribute<null | number, any>;
    primary4X: OptionalFixedAttribute<number, any>;
    primary4Y: OptionalFixedAttribute<number, any>;
    primary5Intensity: OptionalFixedAttribute<null | number, any>;
    primary5X: OptionalFixedAttribute<number, any>;
    primary5Y: OptionalFixedAttribute<number, any>;
    primary6Intensity: OptionalFixedAttribute<null | number, any>;
    primary6X: OptionalFixedAttribute<number, any>;
    primary6Y: OptionalFixedAttribute<number, any>;
    remainingTime: OptionalAttribute<number, any>;
    whitePointX: OptionalWritableAttribute<number, any>;
    whitePointY: OptionalWritableAttribute<number, any>;
}, GlobalAttributes<{
    colorLoop: BitFlag;
    colorTemperature: BitFlag;
    enhancedHue: BitFlag;
    hueSaturation: BitFlag;
    xy: BitFlag;
}>>

Type declaration

  • ReadonlycolorCapabilities: Attribute<TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>, any>

    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.

    MatterSpecification.v13.Cluster § 3.2.7.19

  • ReadonlycolorMode: Attribute<ColorControl.ColorMode, any>

    The ColorMode attribute 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.

    Table 9. Values of the ColorMode Attribute

    MatterSpecification.v13.Cluster § 3.2.7.10

  • ReadonlycolorPointBIntensity: OptionalWritableAttribute<null | number, any>

    MatterSpecification.v13.Cluster § 3.2.10

  • ReadonlycolorPointBx: OptionalWritableAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.10

  • ReadonlycolorPointBy: OptionalWritableAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.10

  • ReadonlycolorPointGIntensity: OptionalWritableAttribute<null | number, any>

    MatterSpecification.v13.Cluster § 3.2.10

  • ReadonlycolorPointGx: OptionalWritableAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.10

  • ReadonlycolorPointGy: OptionalWritableAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.10

  • ReadonlycolorPointRIntensity: OptionalWritableAttribute<null | number, any>

    The ColorPointRIntensity attribute contains a representation of the relative intensity of the red color point as defined in the Dimming Light Curve in the Ballast Configuration cluster (see Ballast Configuration Cluster), normalized such that the color point with the highest relative intensity contains the value 0xFE.

    A value of null shall indicate an invalid value.

    MatterSpecification.v13.Cluster § 3.2.10.5

  • ReadonlycolorPointRx: OptionalWritableAttribute<number, any>

    The ColorPointRX attribute contains 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)

    MatterSpecification.v13.Cluster § 3.2.10.3

  • ReadonlycolorPointRy: OptionalWritableAttribute<number, any>

    The ColorPointRY attribute contains 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)

    MatterSpecification.v13.Cluster § 3.2.10.4

  • ReadonlycompensationText: OptionalAttribute<string, any>

    The CompensationText attribute holds a textual indication of what mechanism, if any, is in use to compensate for color/intensity drift over time.

    MatterSpecification.v13.Cluster § 3.2.7.8

  • ReadonlydriftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>

    The DriftCompensation attribute indicates what mechanism, if any, is in use for compensation for color/intensity drift over time. It shall be one of the non-reserved values in Values of the DriftCompensation Attribute.

    MatterSpecification.v13.Cluster § 3.2.7.7

  • ReadonlyenhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>

    The EnhancedColorMode attribute specifies which attributes are currently determining the color of the device, as detailed in Values of the EnhancedColorMode Attribute.

    To provide compatibility with standard ZCL, the original ColorMode attribute shall indicate ‘CurrentHue and CurrentSaturation’ when the light uses the EnhancedCurrentHue attribute. If the ColorMode attribute is changed, e.g., due to one of the standard Color Control cluster commands defined in the ZCL, its new value shall be copied to the EnhancedColorMode attribute.

    MatterSpecification.v13.Cluster § 3.2.7.13

  • ReadonlynumberOfPrimaries: FixedAttribute<null | number, any>

    The NumberOfPrimaries attribute contains 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.

    MatterSpecification.v13.Cluster § 3.2.8.1

  • Readonlyoptions: WritableAttribute<TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>, any>

    The Options attribute is meant to be changed only during commissioning. The Options attribute is 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.

    Below is the format and description of the Options attribute and temporary Options bitmap and the effect on dependent commands.

    Table 10. Options Attribute

    ExecuteIfOff Options bit: 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.

    MatterSpecification.v13.Cluster § 3.2.7.11

  • Readonlyprimary1Intensity: OptionalFixedAttribute<null | number, any>

    The Primary1intensity attribute contains a representation of the maximum intensity of this primary as defined in the Dimming Light Curve in the Ballast Configuration cluster (see Ballast Configuration Cluster), normalized such that the primary with the highest maximum intensity contains the value 0xFE.

    A value of null shall indicate that this primary is not available.

    MatterSpecification.v13.Cluster § 3.2.8.4

  • Readonlyprimary1X: OptionalFixedAttribute<number, any>

    The Primary1X attribute contains 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)

    MatterSpecification.v13.Cluster § 3.2.8.2

  • Readonlyprimary1Y: OptionalFixedAttribute<number, any>

    The Primary1Y attribute contains 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)

    MatterSpecification.v13.Cluster § 3.2.8.3

  • Readonlyprimary2Intensity: OptionalFixedAttribute<null | number, any>

    MatterSpecification.v13.Cluster § 3.2.8

  • Readonlyprimary2X: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.8

  • Readonlyprimary2Y: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.8

  • Readonlyprimary3Intensity: OptionalFixedAttribute<null | number, any>

    MatterSpecification.v13.Cluster § 3.2.8

  • Readonlyprimary3X: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.8

  • Readonlyprimary3Y: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.8

  • Readonlyprimary4Intensity: OptionalFixedAttribute<null | number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary4X: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary4Y: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary5Intensity: OptionalFixedAttribute<null | number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary5X: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary5Y: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary6Intensity: OptionalFixedAttribute<null | number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary6X: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • Readonlyprimary6Y: OptionalFixedAttribute<number, any>

    MatterSpecification.v13.Cluster § 3.2.9

  • ReadonlyremainingTime: OptionalAttribute<number, any>

    The RemainingTime attribute holds the time remaining, in 1/10ths of a second, until the currently active command will be complete.

    MatterSpecification.v13.Cluster § 3.2.7.4

  • ReadonlywhitePointX: OptionalWritableAttribute<number, any>

    The WhitePointX attribute contains 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)

    MatterSpecification.v13.Cluster § 3.2.10.1

  • ReadonlywhitePointY: OptionalWritableAttribute<number, any>

    The WhitePointY attribute contains 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)

    MatterSpecification.v13.Cluster § 3.2.10.2

base: undefined
commands: {}
events: {}
extensions: readonly [{
    component: {
        attributes: {
            currentHue: Attribute<number, any>;
            currentSaturation: Attribute<number, any>;
        };
        commands: {
            moveHue: Command<TypeFromFields<{
                moveMode: FieldType<ColorControl.MoveMode>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                rate: FieldType<number>;
            }>, void, any>;
            moveSaturation: Command<TypeFromFields<{
                moveMode: FieldType<ColorControl.MoveMode>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                rate: FieldType<number>;
            }>, void, any>;
            moveToHue: Command<TypeFromFields<{
                direction: FieldType<ColorControl.Direction>;
                hue: FieldType<number>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            moveToHueAndSaturation: Command<TypeFromFields<{
                hue: FieldType<number>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                saturation: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            moveToSaturation: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                saturation: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            stepHue: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                stepMode: FieldType<ColorControl.StepMode>;
                stepSize: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            stepSaturation: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                stepMode: FieldType<ColorControl.StepMode>;
                stepSize: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
        };
    };
    flags: {
        hueSaturation: true;
    };
}, {
    component: {
        attributes: {
            currentX: Attribute<number, any>;
            currentY: Attribute<number, any>;
        };
        commands: {
            moveColor: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                rateX: FieldType<number>;
                rateY: FieldType<number>;
            }>, void, any>;
            moveToColor: Command<TypeFromFields<{
                colorX: FieldType<number>;
                colorY: FieldType<number>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            stepColor: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                stepX: FieldType<number>;
                stepY: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
        };
    };
    flags: {
        xy: true;
    };
}, {
    component: {
        attributes: {
            colorTemperatureMireds: Attribute<number, any>;
            colorTempPhysicalMaxMireds: Attribute<number, any>;
            colorTempPhysicalMinMireds: Attribute<number, any>;
            coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
            startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
        };
        commands: {
            moveColorTemperature: Command<TypeFromFields<{
                colorTemperatureMaximumMireds: FieldType<number>;
                colorTemperatureMinimumMireds: FieldType<number>;
                moveMode: FieldType<ColorControl.MoveMode>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                rate: FieldType<number>;
            }>, void, any>;
            moveToColorTemperature: Command<TypeFromFields<{
                colorTemperatureMireds: FieldType<number>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            stepColorTemperature: Command<TypeFromFields<{
                colorTemperatureMaximumMireds: FieldType<number>;
                colorTemperatureMinimumMireds: FieldType<number>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                stepMode: FieldType<ColorControl.StepMode>;
                stepSize: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
        };
    };
    flags: {
        colorTemperature: true;
    };
}, {
    component: {
        attributes: {
            enhancedCurrentHue: Attribute<number, any>;
        };
        commands: {
            enhancedMoveHue: Command<TypeFromFields<{
                moveMode: FieldType<ColorControl.MoveMode>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                rate: FieldType<number>;
            }>, void, any>;
            enhancedMoveToHue: Command<TypeFromFields<{
                direction: FieldType<ColorControl.Direction>;
                enhancedHue: FieldType<number>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                enhancedHue: FieldType<number>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                saturation: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
            enhancedStepHue: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                stepMode: FieldType<ColorControl.StepMode>;
                stepSize: FieldType<number>;
                transitionTime: FieldType<number>;
            }>, void, any>;
        };
    };
    flags: {
        enhancedHue: true;
    };
}, {
    component: {
        attributes: {
            colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
            colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
            colorLoopStartEnhancedHue: Attribute<number, any>;
            colorLoopStoredEnhancedHue: Attribute<number, any>;
            colorLoopTime: Attribute<number, any>;
        };
        commands: {
            colorLoopSet: Command<TypeFromFields<{
                action: FieldType<ColorControl.Action>;
                direction: FieldType<ColorControl.ColorLoopSetDirection>;
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                startHue: FieldType<number>;
                time: FieldType<number>;
                updateFlags: FieldType<TypeFromPartialBitSchema<{
                    reserved: BitField;
                    updateAction: BitFlag;
                    updateDirection: BitFlag;
                    updateStartHue: BitFlag;
                    updateTime: BitFlag;
                }>>;
            }>, void, any>;
        };
    };
    flags: {
        colorLoop: true;
    };
}, {
    component: {
        commands: {
            stopMoveStep: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
            }>, void, any>;
        };
    };
    flags: {
        hueSaturation: true;
    };
}, {
    component: {
        commands: {
            stopMoveStep: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
            }>, void, any>;
        };
    };
    flags: {
        xy: true;
    };
}, {
    component: {
        commands: {
            stopMoveStep: Command<TypeFromFields<{
                optionsMask: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
                optionsOverride: FieldType<TypeFromPartialBitSchema<{
                    executeIfOff: BitFlag;
                }>>;
            }>, void, any>;
        };
    };
    flags: {
        colorTemperature: true;
    };
}]
features: {
    colorLoop: BitFlag;
    colorTemperature: BitFlag;
    enhancedHue: BitFlag;
    hueSaturation: BitFlag;
    xy: BitFlag;
}

Type declaration

  • ReadonlycolorLoop: BitFlag

    ColorLoop

    Color loop is supported.

  • ReadonlycolorTemperature: BitFlag

    ColorTemperature

    Supports specification of color temperature.

  • ReadonlyenhancedHue: BitFlag

    EnhancedHue

    Enhanced hue is supported.

  • ReadonlyhueSaturation: BitFlag

    HueSaturation

    Supports color specification via hue/saturation.

  • Readonlyxy: BitFlag

    Xy

    Supports color specification via XY.

id: Branded<768, "ClusterId">
name
revision
supportedFeatures: {}
unknown

Methods

  • Modify elements using ElementModifier.alter.

    Type Parameters

    • const AlterationsT extends Alterations<Of<{
          attributes: {
              colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                  colorLoop: BitFlag;
                  colorTemperature: BitFlag;
                  enhancedHue: BitFlag;
                  hueSaturation: BitFlag;
                  xy: BitFlag;
              }>, any>;
              colorMode: Attribute<ColorControl.ColorMode, any>;
              colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointBx: OptionalWritableAttribute<number, any>;
              colorPointBy: OptionalWritableAttribute<number, any>;
              colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointGx: OptionalWritableAttribute<number, any>;
              colorPointGy: OptionalWritableAttribute<number, any>;
              colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointRx: OptionalWritableAttribute<number, any>;
              colorPointRy: OptionalWritableAttribute<number, any>;
              compensationText: OptionalAttribute<string, any>;
              driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
              enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
              numberOfPrimaries: FixedAttribute<null | number, any>;
              options: WritableAttribute<TypeFromPartialBitSchema<{
                  executeIfOff: BitFlag;
              }>, any>;
              primary1Intensity: OptionalFixedAttribute<null | number, any>;
              primary1X: OptionalFixedAttribute<number, any>;
              primary1Y: OptionalFixedAttribute<number, any>;
              primary2Intensity: OptionalFixedAttribute<null | number, any>;
              primary2X: OptionalFixedAttribute<number, any>;
              primary2Y: OptionalFixedAttribute<number, any>;
              primary3Intensity: OptionalFixedAttribute<null | number, any>;
              primary3X: OptionalFixedAttribute<number, any>;
              primary3Y: OptionalFixedAttribute<number, any>;
              primary4Intensity: OptionalFixedAttribute<null | number, any>;
              primary4X: OptionalFixedAttribute<number, any>;
              primary4Y: OptionalFixedAttribute<number, any>;
              primary5Intensity: OptionalFixedAttribute<null | number, any>;
              primary5X: OptionalFixedAttribute<number, any>;
              primary5Y: OptionalFixedAttribute<number, any>;
              primary6Intensity: OptionalFixedAttribute<null | number, any>;
              primary6X: OptionalFixedAttribute<number, any>;
              primary6Y: OptionalFixedAttribute<number, any>;
              remainingTime: OptionalAttribute<number, any>;
              whitePointX: OptionalWritableAttribute<number, any>;
              whitePointY: OptionalWritableAttribute<number, any>;
          };
          extensions: readonly [{
              component: {
                  attributes: {
                      currentHue: Attribute<number, any>;
                      currentSaturation: Attribute<number, any>;
                  };
                  commands: {
                      moveHue: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveSaturation: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveToHue: Command<TypeFromFields<{
                          direction: FieldType<(...)>;
                          hue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      moveToHueAndSaturation: Command<TypeFromFields<{
                          hue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      moveToSaturation: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepHue: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepSaturation: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  hueSaturation: true;
              };
          }, {
              component: {
                  attributes: {
                      currentX: Attribute<number, any>;
                      currentY: Attribute<number, any>;
                  };
                  commands: {
                      moveColor: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rateX: FieldType<(...)>;
                          rateY: FieldType<(...)>;
                      }>, void, any>;
                      moveToColor: Command<TypeFromFields<{
                          colorX: FieldType<(...)>;
                          colorY: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepColor: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepX: FieldType<(...)>;
                          stepY: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  xy: true;
              };
          }, {
              component: {
                  attributes: {
                      colorTemperatureMireds: Attribute<number, any>;
                      colorTempPhysicalMaxMireds: Attribute<number, any>;
                      colorTempPhysicalMinMireds: Attribute<number, any>;
                      coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                      startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                  };
                  commands: {
                      moveColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMaximumMireds: FieldType<(...)>;
                          colorTemperatureMinimumMireds: FieldType<(...)>;
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveToColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMireds: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMaximumMireds: FieldType<(...)>;
                          colorTemperatureMinimumMireds: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorTemperature: true;
              };
          }, {
              component: {
                  attributes: {
                      enhancedCurrentHue: Attribute<number, any>;
                  };
                  commands: {
                      enhancedMoveHue: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      enhancedMoveToHue: Command<TypeFromFields<{
                          direction: FieldType<(...)>;
                          enhancedHue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                          enhancedHue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      enhancedStepHue: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  enhancedHue: true;
              };
          }, {
              component: {
                  attributes: {
                      colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                      colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                      colorLoopStartEnhancedHue: Attribute<number, any>;
                      colorLoopStoredEnhancedHue: Attribute<number, any>;
                      colorLoopTime: Attribute<number, any>;
                  };
                  commands: {
                      colorLoopSet: Command<TypeFromFields<{
                          action: FieldType<(...)>;
                          direction: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          startHue: FieldType<(...)>;
                          time: FieldType<(...)>;
                          updateFlags: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorLoop: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  hueSaturation: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  xy: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorTemperature: true;
              };
          }];
          features: {
              colorLoop: BitFlag;
              colorTemperature: BitFlag;
              enhancedHue: BitFlag;
              hueSaturation: BitFlag;
              xy: BitFlag;
          };
          id: 768;
          name: "ColorControl";
          revision: 6;
      }>>

    Parameters

    Returns WithAlterations<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, AlterationsT>

  • Modify elements using ElementModifier.enable.

    Type Parameters

    • const FlagsT extends ElementFlags<Of<{
          attributes: {
              colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                  colorLoop: BitFlag;
                  colorTemperature: BitFlag;
                  enhancedHue: BitFlag;
                  hueSaturation: BitFlag;
                  xy: BitFlag;
              }>, any>;
              colorMode: Attribute<ColorControl.ColorMode, any>;
              colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointBx: OptionalWritableAttribute<number, any>;
              colorPointBy: OptionalWritableAttribute<number, any>;
              colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointGx: OptionalWritableAttribute<number, any>;
              colorPointGy: OptionalWritableAttribute<number, any>;
              colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointRx: OptionalWritableAttribute<number, any>;
              colorPointRy: OptionalWritableAttribute<number, any>;
              compensationText: OptionalAttribute<string, any>;
              driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
              enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
              numberOfPrimaries: FixedAttribute<null | number, any>;
              options: WritableAttribute<TypeFromPartialBitSchema<{
                  executeIfOff: BitFlag;
              }>, any>;
              primary1Intensity: OptionalFixedAttribute<null | number, any>;
              primary1X: OptionalFixedAttribute<number, any>;
              primary1Y: OptionalFixedAttribute<number, any>;
              primary2Intensity: OptionalFixedAttribute<null | number, any>;
              primary2X: OptionalFixedAttribute<number, any>;
              primary2Y: OptionalFixedAttribute<number, any>;
              primary3Intensity: OptionalFixedAttribute<null | number, any>;
              primary3X: OptionalFixedAttribute<number, any>;
              primary3Y: OptionalFixedAttribute<number, any>;
              primary4Intensity: OptionalFixedAttribute<null | number, any>;
              primary4X: OptionalFixedAttribute<number, any>;
              primary4Y: OptionalFixedAttribute<number, any>;
              primary5Intensity: OptionalFixedAttribute<null | number, any>;
              primary5X: OptionalFixedAttribute<number, any>;
              primary5Y: OptionalFixedAttribute<number, any>;
              primary6Intensity: OptionalFixedAttribute<null | number, any>;
              primary6X: OptionalFixedAttribute<number, any>;
              primary6Y: OptionalFixedAttribute<number, any>;
              remainingTime: OptionalAttribute<number, any>;
              whitePointX: OptionalWritableAttribute<number, any>;
              whitePointY: OptionalWritableAttribute<number, any>;
          };
          extensions: readonly [{
              component: {
                  attributes: {
                      currentHue: Attribute<number, any>;
                      currentSaturation: Attribute<number, any>;
                  };
                  commands: {
                      moveHue: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveSaturation: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveToHue: Command<TypeFromFields<{
                          direction: FieldType<(...)>;
                          hue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      moveToHueAndSaturation: Command<TypeFromFields<{
                          hue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      moveToSaturation: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepHue: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepSaturation: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  hueSaturation: true;
              };
          }, {
              component: {
                  attributes: {
                      currentX: Attribute<number, any>;
                      currentY: Attribute<number, any>;
                  };
                  commands: {
                      moveColor: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rateX: FieldType<(...)>;
                          rateY: FieldType<(...)>;
                      }>, void, any>;
                      moveToColor: Command<TypeFromFields<{
                          colorX: FieldType<(...)>;
                          colorY: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepColor: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepX: FieldType<(...)>;
                          stepY: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  xy: true;
              };
          }, {
              component: {
                  attributes: {
                      colorTemperatureMireds: Attribute<number, any>;
                      colorTempPhysicalMaxMireds: Attribute<number, any>;
                      colorTempPhysicalMinMireds: Attribute<number, any>;
                      coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                      startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                  };
                  commands: {
                      moveColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMaximumMireds: FieldType<(...)>;
                          colorTemperatureMinimumMireds: FieldType<(...)>;
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveToColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMireds: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMaximumMireds: FieldType<(...)>;
                          colorTemperatureMinimumMireds: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorTemperature: true;
              };
          }, {
              component: {
                  attributes: {
                      enhancedCurrentHue: Attribute<number, any>;
                  };
                  commands: {
                      enhancedMoveHue: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      enhancedMoveToHue: Command<TypeFromFields<{
                          direction: FieldType<(...)>;
                          enhancedHue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                          enhancedHue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      enhancedStepHue: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  enhancedHue: true;
              };
          }, {
              component: {
                  attributes: {
                      colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                      colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                      colorLoopStartEnhancedHue: Attribute<number, any>;
                      colorLoopStoredEnhancedHue: Attribute<number, any>;
                      colorLoopTime: Attribute<number, any>;
                  };
                  commands: {
                      colorLoopSet: Command<TypeFromFields<{
                          action: FieldType<(...)>;
                          direction: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          startHue: FieldType<(...)>;
                          time: FieldType<(...)>;
                          updateFlags: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorLoop: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  hueSaturation: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  xy: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorTemperature: true;
              };
          }];
          features: {
              colorLoop: BitFlag;
              colorTemperature: BitFlag;
              enhancedHue: BitFlag;
              hueSaturation: BitFlag;
              xy: BitFlag;
          };
          id: 768;
          name: "ColorControl";
          revision: 6;
      }>>

    Parameters

    Returns WithFlags<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, FlagsT>

  • Modify elements using ElementModifier.set.

    Type Parameters

    • const ValuesT extends {
          colorCapabilities: {
              colorLoop?: boolean;
              colorTemperature?: boolean;
              enhancedHue?: boolean;
              hueSaturation?: boolean;
              xy?: boolean;
          };
          colorMode: number;
          colorPointBIntensity?: null | number;
          colorPointBx?: number;
          colorPointBy?: number;
          colorPointGIntensity?: null | number;
          colorPointGx?: number;
          colorPointGy?: number;
          colorPointRIntensity?: null | number;
          colorPointRx?: number;
          colorPointRy?: number;
          compensationText?: string;
          driftCompensation?: number;
          enhancedColorMode: number;
          numberOfPrimaries: null | number;
          options: {
              executeIfOff?: boolean;
          };
          primary1Intensity?: null | number;
          primary1X?: number;
          primary1Y?: number;
          primary2Intensity?: null | number;
          primary2X?: number;
          primary2Y?: number;
          primary3Intensity?: null | number;
          primary3X?: number;
          primary3Y?: number;
          primary4Intensity?: null | number;
          primary4X?: number;
          primary4Y?: number;
          primary5Intensity?: null | number;
          primary5X?: number;
          primary5Y?: number;
          primary6Intensity?: null | number;
          primary6X?: number;
          primary6Y?: number;
          remainingTime?: number;
          whitePointX?: number;
          whitePointY?: number;
      }

    Parameters

    Returns WithValues<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, ValuesT>

  • Select features using ClusterComposer.compose.

    Type Parameters

    • const SelectionT extends FeatureSelection<Of<{
          attributes: {
              colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                  colorLoop: BitFlag;
                  colorTemperature: BitFlag;
                  enhancedHue: BitFlag;
                  hueSaturation: BitFlag;
                  xy: BitFlag;
              }>, any>;
              colorMode: Attribute<ColorControl.ColorMode, any>;
              colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointBx: OptionalWritableAttribute<number, any>;
              colorPointBy: OptionalWritableAttribute<number, any>;
              colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointGx: OptionalWritableAttribute<number, any>;
              colorPointGy: OptionalWritableAttribute<number, any>;
              colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
              colorPointRx: OptionalWritableAttribute<number, any>;
              colorPointRy: OptionalWritableAttribute<number, any>;
              compensationText: OptionalAttribute<string, any>;
              driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
              enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
              numberOfPrimaries: FixedAttribute<null | number, any>;
              options: WritableAttribute<TypeFromPartialBitSchema<{
                  executeIfOff: BitFlag;
              }>, any>;
              primary1Intensity: OptionalFixedAttribute<null | number, any>;
              primary1X: OptionalFixedAttribute<number, any>;
              primary1Y: OptionalFixedAttribute<number, any>;
              primary2Intensity: OptionalFixedAttribute<null | number, any>;
              primary2X: OptionalFixedAttribute<number, any>;
              primary2Y: OptionalFixedAttribute<number, any>;
              primary3Intensity: OptionalFixedAttribute<null | number, any>;
              primary3X: OptionalFixedAttribute<number, any>;
              primary3Y: OptionalFixedAttribute<number, any>;
              primary4Intensity: OptionalFixedAttribute<null | number, any>;
              primary4X: OptionalFixedAttribute<number, any>;
              primary4Y: OptionalFixedAttribute<number, any>;
              primary5Intensity: OptionalFixedAttribute<null | number, any>;
              primary5X: OptionalFixedAttribute<number, any>;
              primary5Y: OptionalFixedAttribute<number, any>;
              primary6Intensity: OptionalFixedAttribute<null | number, any>;
              primary6X: OptionalFixedAttribute<number, any>;
              primary6Y: OptionalFixedAttribute<number, any>;
              remainingTime: OptionalAttribute<number, any>;
              whitePointX: OptionalWritableAttribute<number, any>;
              whitePointY: OptionalWritableAttribute<number, any>;
          };
          extensions: readonly [{
              component: {
                  attributes: {
                      currentHue: Attribute<number, any>;
                      currentSaturation: Attribute<number, any>;
                  };
                  commands: {
                      moveHue: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveSaturation: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveToHue: Command<TypeFromFields<{
                          direction: FieldType<(...)>;
                          hue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      moveToHueAndSaturation: Command<TypeFromFields<{
                          hue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      moveToSaturation: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepHue: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepSaturation: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  hueSaturation: true;
              };
          }, {
              component: {
                  attributes: {
                      currentX: Attribute<number, any>;
                      currentY: Attribute<number, any>;
                  };
                  commands: {
                      moveColor: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rateX: FieldType<(...)>;
                          rateY: FieldType<(...)>;
                      }>, void, any>;
                      moveToColor: Command<TypeFromFields<{
                          colorX: FieldType<(...)>;
                          colorY: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepColor: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepX: FieldType<(...)>;
                          stepY: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  xy: true;
              };
          }, {
              component: {
                  attributes: {
                      colorTemperatureMireds: Attribute<number, any>;
                      colorTempPhysicalMaxMireds: Attribute<number, any>;
                      colorTempPhysicalMinMireds: Attribute<number, any>;
                      coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                      startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                  };
                  commands: {
                      moveColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMaximumMireds: FieldType<(...)>;
                          colorTemperatureMinimumMireds: FieldType<(...)>;
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      moveToColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMireds: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      stepColorTemperature: Command<TypeFromFields<{
                          colorTemperatureMaximumMireds: FieldType<(...)>;
                          colorTemperatureMinimumMireds: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorTemperature: true;
              };
          }, {
              component: {
                  attributes: {
                      enhancedCurrentHue: Attribute<number, any>;
                  };
                  commands: {
                      enhancedMoveHue: Command<TypeFromFields<{
                          moveMode: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          rate: FieldType<(...)>;
                      }>, void, any>;
                      enhancedMoveToHue: Command<TypeFromFields<{
                          direction: FieldType<(...)>;
                          enhancedHue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                          enhancedHue: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          saturation: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                      enhancedStepHue: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          stepMode: FieldType<(...)>;
                          stepSize: FieldType<(...)>;
                          transitionTime: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  enhancedHue: true;
              };
          }, {
              component: {
                  attributes: {
                      colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                      colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                      colorLoopStartEnhancedHue: Attribute<number, any>;
                      colorLoopStoredEnhancedHue: Attribute<number, any>;
                      colorLoopTime: Attribute<number, any>;
                  };
                  commands: {
                      colorLoopSet: Command<TypeFromFields<{
                          action: FieldType<(...)>;
                          direction: FieldType<(...)>;
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                          startHue: FieldType<(...)>;
                          time: FieldType<(...)>;
                          updateFlags: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorLoop: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  hueSaturation: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  xy: true;
              };
          }, {
              component: {
                  commands: {
                      stopMoveStep: Command<TypeFromFields<{
                          optionsMask: FieldType<(...)>;
                          optionsOverride: FieldType<(...)>;
                      }>, void, any>;
                  };
              };
              flags: {
                  colorTemperature: true;
              };
          }];
          features: {
              colorLoop: BitFlag;
              colorTemperature: BitFlag;
              enhancedHue: BitFlag;
              hueSaturation: BitFlag;
              xy: BitFlag;
          };
          id: 768;
          name: "ColorControl";
          revision: 6;
      }>>

    Parameters

    Returns Of<Of<{
        attributes: {
            colorCapabilities: Attribute<TypeFromPartialBitSchema<{
                colorLoop: BitFlag;
                colorTemperature: BitFlag;
                enhancedHue: BitFlag;
                hueSaturation: BitFlag;
                xy: BitFlag;
            }>, any>;
            colorMode: Attribute<ColorControl.ColorMode, any>;
            colorPointBIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointBx: OptionalWritableAttribute<number, any>;
            colorPointBy: OptionalWritableAttribute<number, any>;
            colorPointGIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointGx: OptionalWritableAttribute<number, any>;
            colorPointGy: OptionalWritableAttribute<number, any>;
            colorPointRIntensity: OptionalWritableAttribute<null | number, any>;
            colorPointRx: OptionalWritableAttribute<number, any>;
            colorPointRy: OptionalWritableAttribute<number, any>;
            compensationText: OptionalAttribute<string, any>;
            driftCompensation: OptionalAttribute<ColorControl.DriftCompensation, any>;
            enhancedColorMode: Attribute<ColorControl.EnhancedColorMode, any>;
            numberOfPrimaries: FixedAttribute<null | number, any>;
            options: WritableAttribute<TypeFromPartialBitSchema<{
                executeIfOff: BitFlag;
            }>, any>;
            primary1Intensity: OptionalFixedAttribute<null | number, any>;
            primary1X: OptionalFixedAttribute<number, any>;
            primary1Y: OptionalFixedAttribute<number, any>;
            primary2Intensity: OptionalFixedAttribute<null | number, any>;
            primary2X: OptionalFixedAttribute<number, any>;
            primary2Y: OptionalFixedAttribute<number, any>;
            primary3Intensity: OptionalFixedAttribute<null | number, any>;
            primary3X: OptionalFixedAttribute<number, any>;
            primary3Y: OptionalFixedAttribute<number, any>;
            primary4Intensity: OptionalFixedAttribute<null | number, any>;
            primary4X: OptionalFixedAttribute<number, any>;
            primary4Y: OptionalFixedAttribute<number, any>;
            primary5Intensity: OptionalFixedAttribute<null | number, any>;
            primary5X: OptionalFixedAttribute<number, any>;
            primary5Y: OptionalFixedAttribute<number, any>;
            primary6Intensity: OptionalFixedAttribute<null | number, any>;
            primary6X: OptionalFixedAttribute<number, any>;
            primary6Y: OptionalFixedAttribute<number, any>;
            remainingTime: OptionalAttribute<number, any>;
            whitePointX: OptionalWritableAttribute<number, any>;
            whitePointY: OptionalWritableAttribute<number, any>;
        };
        extensions: readonly [{
            component: {
                attributes: {
                    currentHue: Attribute<number, any>;
                    currentSaturation: Attribute<number, any>;
                };
                commands: {
                    moveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveSaturation: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToHueAndSaturation: Command<TypeFromFields<{
                        hue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    moveToSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepSaturation: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                attributes: {
                    currentX: Attribute<number, any>;
                    currentY: Attribute<number, any>;
                };
                commands: {
                    moveColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rateX: FieldType<(...)>;
                        rateY: FieldType<(...)>;
                    }>, void, any>;
                    moveToColor: Command<TypeFromFields<{
                        colorX: FieldType<(...)>;
                        colorY: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColor: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepX: FieldType<(...)>;
                        stepY: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                attributes: {
                    colorTemperatureMireds: Attribute<number, any>;
                    colorTempPhysicalMaxMireds: Attribute<number, any>;
                    colorTempPhysicalMinMireds: Attribute<number, any>;
                    coupleColorTempToLevelMinMireds: OptionalAttribute<number, any>;
                    startUpColorTemperatureMireds: OptionalWritableAttribute<null | number, any>;
                };
                commands: {
                    moveColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    moveToColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    stepColorTemperature: Command<TypeFromFields<{
                        colorTemperatureMaximumMireds: FieldType<(...)>;
                        colorTemperatureMinimumMireds: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }, {
            component: {
                attributes: {
                    enhancedCurrentHue: Attribute<number, any>;
                };
                commands: {
                    enhancedMoveHue: Command<TypeFromFields<{
                        moveMode: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        rate: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHue: Command<TypeFromFields<{
                        direction: FieldType<(...)>;
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                        enhancedHue: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        saturation: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                    enhancedStepHue: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        stepMode: FieldType<(...)>;
                        stepSize: FieldType<(...)>;
                        transitionTime: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                enhancedHue: true;
            };
        }, {
            component: {
                attributes: {
                    colorLoopActive: Attribute<ColorControl.ColorLoopActive, any>;
                    colorLoopDirection: Attribute<ColorControl.ColorLoopDirection, any>;
                    colorLoopStartEnhancedHue: Attribute<number, any>;
                    colorLoopStoredEnhancedHue: Attribute<number, any>;
                    colorLoopTime: Attribute<number, any>;
                };
                commands: {
                    colorLoopSet: Command<TypeFromFields<{
                        action: FieldType<(...)>;
                        direction: FieldType<(...)>;
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                        startHue: FieldType<(...)>;
                        time: FieldType<(...)>;
                        updateFlags: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorLoop: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                hueSaturation: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                xy: true;
            };
        }, {
            component: {
                commands: {
                    stopMoveStep: Command<TypeFromFields<{
                        optionsMask: FieldType<(...)>;
                        optionsOverride: FieldType<(...)>;
                    }>, void, any>;
                };
            };
            flags: {
                colorTemperature: true;
            };
        }];
        features: {
            colorLoop: BitFlag;
            colorTemperature: BitFlag;
            enhancedHue: BitFlag;
            hueSaturation: BitFlag;
            xy: BitFlag;
        };
        id: 768;
        name: "ColorControl";
        revision: 6;
    }>, SelectionT>