Hierarchy

  • ColorControlServer_base
    • ColorControlServer

Constructors

  • Parameters

    • agent: Agent
    • backing: BehaviorBacking

    Returns ColorControlServer

Properties

[reference]: Datasource<StateType>
agent: Agent
cluster: never

The implemented cluster.

colorPointBx: undefined | number
colorPointGx: undefined | number
colorPointGy: undefined | number
colorPointRx: undefined | number
colorPointRy: undefined | number
context: ActionContext
endpoint: Endpoint<Empty>
enhancedHue: number
events: EventEmitter & Omit<ClusterEvents<WithFeatures<ColorControl.Cluster, readonly [HueSaturation, EnhancedHue, ColorLoop, Xy, ColorTemperature]>, Type<ColorControl.Cluster, Type<Of<{
    attributes: {};
    commands: {};
    events: {};
    id: 0;
    name: "Unknown";
    revision: 0;
}>, typeof ClusterBehavior, ColorControlInterface>, ColorControlInterface>>,
    | "colorMode$Changing"
    | "options$Changing"
    | "numberOfPrimaries$Changing"
    | "enhancedColorMode$Changing"
    | "colorCapabilities$Changing"
    | "remainingTime$Changing"
    | "driftCompensation$Changing"
    | "compensationText$Changing"
    | "primary1X$Changing"
    | "primary1Y$Changing"
    | "primary1Intensity$Changing"
    | "primary2X$Changing"
    | "primary2Y$Changing"
    | "primary2Intensity$Changing"
    | "primary3X$Changing"
    | "primary3Y$Changing"
    | "primary3Intensity$Changing"
    | "primary4X$Changing"
    | "primary4Y$Changing"
    | "primary4Intensity$Changing"
    | "primary5X$Changing"
    | "primary5Y$Changing"
    | "primary5Intensity$Changing"
    | "primary6X$Changing"
    | "primary6Y$Changing"
    | "primary6Intensity$Changing"
    | "whitePointX$Changing"
    | "whitePointY$Changing"
    | "colorPointRx$Changing"
    | "colorPointRy$Changing"
    | "colorPointRIntensity$Changing"
    | "colorPointGx$Changing"
    | "colorPointGy$Changing"
    | "colorPointGIntensity$Changing"
    | "colorPointBx$Changing"
    | "colorPointBy$Changing"
    | "colorPointBIntensity$Changing"
    | "colorMode$Changed"
    | "options$Changed"
    | "numberOfPrimaries$Changed"
    | "enhancedColorMode$Changed"
    | "colorCapabilities$Changed"
    | "remainingTime$Changed"
    | "driftCompensation$Changed"
    | "compensationText$Changed"
    | "primary1X$Changed"
    | "primary1Y$Changed"
    | "primary1Intensity$Changed"
    | "primary2X$Changed"
    | "primary2Y$Changed"
    | "primary2Intensity$Changed"
    | "primary3X$Changed"
    | "primary3Y$Changed"
    | "primary3Intensity$Changed"
    | "primary4X$Changed"
    | "primary4Y$Changed"
    | "primary4Intensity$Changed"
    | "primary5X$Changed"
    | "primary5Y$Changed"
    | "primary5Intensity$Changed"
    | "primary6X$Changed"
    | "primary6Y$Changed"
    | "primary6Intensity$Changed"
    | "whitePointX$Changed"
    | "whitePointY$Changed"
    | "colorPointRx$Changed"
    | "colorPointRy$Changed"
    | "colorPointRIntensity$Changed"
    | "colorPointGx$Changed"
    | "colorPointGy$Changed"
    | "colorPointGIntensity$Changed"
    | "colorPointBx$Changed"
    | "colorPointBy$Changed"
    | "colorPointBIntensity$Changed"
    | "colorTemperatureMireds$Changing"
    | "currentHue$Changing"
    | "currentSaturation$Changing"
    | "currentX$Changing"
    | "currentY$Changing"
    | "colorTempPhysicalMinMireds$Changing"
    | "colorTempPhysicalMaxMireds$Changing"
    | "enhancedCurrentHue$Changing"
    | "colorLoopActive$Changing"
    | "colorLoopDirection$Changing"
    | "colorLoopTime$Changing"
    | "colorLoopStartEnhancedHue$Changing"
    | "colorLoopStoredEnhancedHue$Changing"
    | "coupleColorTempToLevelMinMireds$Changing"
    | "startUpColorTemperatureMireds$Changing"
    | "colorTemperatureMireds$Changed"
    | "currentHue$Changed"
    | "currentSaturation$Changed"
    | "currentX$Changed"
    | "currentY$Changed"
    | "colorTempPhysicalMinMireds$Changed"
    | "colorTempPhysicalMaxMireds$Changed"
    | "enhancedCurrentHue$Changed"
    | "colorLoopActive$Changed"
    | "colorLoopDirection$Changed"
    | "colorLoopTime$Changed"
    | "colorLoopStartEnhancedHue$Changed"
    | "colorLoopStoredEnhancedHue$Changed"
    | "coupleColorTempToLevelMinMireds$Changed"
    | "startUpColorTemperatureMireds$Changed"> & {
    colorCapabilities$Changing: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>, any>>;
    colorMode$Changing: ClusterEvents.AttributeObservable<Attribute<ColorControl.ColorMode, any>>;
    enhancedColorMode$Changing: ClusterEvents.AttributeObservable<Attribute<ColorControl.EnhancedColorMode, any>>;
    numberOfPrimaries$Changing: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
    options$Changing: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>, any>>;
} & {
    colorPointBIntensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointBx$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointBy$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGIntensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointGx$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGy$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRIntensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointRx$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRy$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    compensationText$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<string, any>>;
    driftCompensation$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<ColorControl.DriftCompensation, any>>;
    primary1Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary1X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary1Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary2X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary3X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary4X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary5X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Intensity$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary6X$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Y$Changing: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    remainingTime$Changing: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<number, any>>;
    whitePointX$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    whitePointY$Changing: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
} & {
    colorCapabilities$Changed: ClusterEvents.AttributeObservable<Attribute<TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>, any>>;
    colorMode$Changed: ClusterEvents.AttributeObservable<Attribute<ColorControl.ColorMode, any>>;
    enhancedColorMode$Changed: ClusterEvents.AttributeObservable<Attribute<ColorControl.EnhancedColorMode, any>>;
    numberOfPrimaries$Changed: ClusterEvents.AttributeObservable<FixedAttribute<null | number, any>>;
    options$Changed: ClusterEvents.AttributeObservable<WritableAttribute<TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>, any>>;
} & {
    colorPointBIntensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointBx$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointBy$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGIntensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointGx$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointGy$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRIntensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<null | number, any>>;
    colorPointRx$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    colorPointRy$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    compensationText$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<string, any>>;
    driftCompensation$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<ColorControl.DriftCompensation, any>>;
    primary1Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary1X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary1Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary2X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary2Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary3X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary3Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary4X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary4Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary5X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary5Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Intensity$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<null | number, any>>;
    primary6X$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    primary6Y$Changed: undefined | ClusterEvents.AttributeObservable<OptionalFixedAttribute<number, any>>;
    remainingTime$Changed: undefined | ClusterEvents.AttributeObservable<OptionalAttribute<number, any>>;
    whitePointX$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
    whitePointY$Changed: undefined | ClusterEvents.AttributeObservable<OptionalWritableAttribute<number, any>>;
} & {} & {}

Access the behavior's events.

features: TypeFromBitSchema<{}> & TypeFromBitSchema<{
    colorLoop: BitFlag;
    colorTemperature: BitFlag;
    enhancedHue: BitFlag;
    hueSaturation: BitFlag;
    xy: BitFlag;
}> & TypeFromBitSchema<{
    colorLoop: BitFlag;
    colorTemperature: BitFlag;
    enhancedHue: BitFlag;
    hueSaturation: BitFlag;
    xy: BitFlag;
}>

Supported features as a flag object.

hue: number
kelvin: number
maximumColorTemperatureMireds: number
minimumColorTemperatureMireds: number
mireds: number
saturation: number
session: SecureSession
state: Omit<State,
    | "colorTemperatureMireds"
    | "remainingTime"
    | "driftCompensation"
    | "compensationText"
    | "colorMode"
    | "options"
    | "numberOfPrimaries"
    | "primary1X"
    | "primary1Y"
    | "primary1Intensity"
    | "primary2X"
    | "primary2Y"
    | "primary2Intensity"
    | "primary3X"
    | "primary3Y"
    | "primary3Intensity"
    | "primary4X"
    | "primary4Y"
    | "primary4Intensity"
    | "primary5X"
    | "primary5Y"
    | "primary5Intensity"
    | "primary6X"
    | "primary6Y"
    | "primary6Intensity"
    | "whitePointX"
    | "whitePointY"
    | "colorPointRx"
    | "colorPointRy"
    | "colorPointRIntensity"
    | "colorPointGx"
    | "colorPointGy"
    | "colorPointGIntensity"
    | "colorPointBx"
    | "colorPointBy"
    | "colorPointBIntensity"
    | "enhancedColorMode"
    | "colorCapabilities"
    | "currentHue"
    | "currentSaturation"
    | "currentX"
    | "currentY"
    | "colorTempPhysicalMinMireds"
    | "colorTempPhysicalMaxMireds"
    | "coupleColorTempToLevelMinMireds"
    | "startUpColorTemperatureMireds"
    | "enhancedCurrentHue"
    | "colorLoopActive"
    | "colorLoopDirection"
    | "colorLoopTime"
    | "colorLoopStartEnhancedHue"
    | "colorLoopStoredEnhancedHue"> & {
    colorCapabilities: TypeFromPartialBitSchema<{
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    }>;
    colorMode: ColorControl.ColorMode;
    enhancedColorMode: ColorControl.EnhancedColorMode;
    options: TypeFromPartialBitSchema<{
        executeIfOff: BitFlag;
    }>;
} & {
    colorPointBIntensity?: null | number;
    colorPointBx?: number;
    colorPointBy?: number;
    colorPointGIntensity?: null | number;
    colorPointGx?: number;
    colorPointGy?: number;
    colorPointRIntensity?: null | number;
    colorPointRx?: number;
    colorPointRy?: number;
    compensationText?: string;
    driftCompensation?: ColorControl.DriftCompensation;
    remainingTime?: number;
    whitePointX?: number;
    whitePointY?: number;
} & {
    numberOfPrimaries: null | number;
} & {
    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;
}

Access the behavior's state.

whitePointX: undefined | number
whitePointY: undefined | number
x: number
y: number
cluster: 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<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: FieldType<ColorControl.MoveMode>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    stepMode: FieldType<ColorControl.StepMode>;
                    stepSize: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    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<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rateX: FieldType<number>;
                    rateY: FieldType<number>;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: FieldType<number>;
                    colorY: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    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<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: FieldType<number>;
                    colorTemperatureMinimumMireds: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    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<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    rate: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: FieldType<ColorControl.Direction>;
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: FieldType<number>;
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    saturation: FieldType<number>;
                    transitionTime: FieldType<number>;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    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<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                    startHue: FieldType<number>;
                    time: FieldType<number>;
                    updateFlags: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: FieldType<TypeFromPartialBitSchema<(...)>>;
                    optionsOverride: FieldType<TypeFromPartialBitSchema<(...)>>;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }];
    features: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    };
    id: 768;
    name: "ColorControl";
    revision: 6;
}>

Base cluster state include all attribute values but may be extended by subclasses.

defaults: ClusterState.Type<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;
}>, typeof ColorControlServerLogic>
dependencies?: Iterable<Type, any, any>
early: boolean
Events: ClusterEvents.Type<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;
}>, typeof ColorControlServerLogic>
ExtensionInterface: {
    moveColorLogic(rateX: number, rateY: number): MaybePromise;
    moveColorTemperatureLogic(moveMode: ColorControl.MoveMode, rate: number, colorTemperatureMinimumMireds: number, colorTemperatureMaximumMireds: number): MaybePromise;
    moveHueLogic(moveMode: ColorControl.MoveMode, rate: number, isEnhancedHue: boolean): MaybePromise;
    moveSaturationLogic(moveMode: ColorControl.MoveMode, rate: number): MaybePromise;
    moveToColorLogic(targetX: number, targetY: number, transitionTime: number): MaybePromise;
    moveToColorTemperatureLogic(targetMireds: number, transitionTime: number): MaybePromise;
    moveToEnhancedHueAndSaturationLogic(targetEnhancedHue: number, targetSaturation: number, transitionTime: number): MaybePromise;
    moveToHueAndSaturationLogic(targetHue: number, targetSaturation: number, transitionTime: number): MaybePromise;
    moveToHueLogic(targetHue: number, direction: ColorControl.Direction, transitionTime: number, isEnhancedHue: boolean): MaybePromise;
    moveToSaturationLogic(targetSaturation: number, transitionTime: number): MaybePromise;
    setColorMode(mode: ColorControl.ColorMode): MaybePromise;
    setEnhancedColorMode(mode: ColorControl.EnhancedColorMode): MaybePromise;
    startColorLoopLogic(startHue: number): MaybePromise;
    stepColorLogic(stepX: number, stepY: number, transitionTime: number): MaybePromise;
    stepColorTemperatureLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number, colorTemperatureMinimumMireds: number, colorTemperatureMaximumMireds: number): MaybePromise;
    stepHueLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number, isEnhancedHue: boolean): MaybePromise;
    stepSaturationLogic(stepMode: ColorControl.StepMode, stepSize: number, transitionTime: number): MaybePromise;
    stopAllColorMovement(): MaybePromise;
    stopColorLoopLogic(): MaybePromise;
    stopHueAndSaturationMovement(): MaybePromise;
    stopMoveStepLogic(): MaybePromise;
    switchColorMode(oldMode: ColorControl.ColorMode, newMode: ColorControl.ColorMode): MaybePromise;
    syncColorTemperatureWithLevelLogic(level: number): MaybePromise;
}
id

The behavior ID for ClusterBehaviors is the name of the cluster.

Internal: typeof Internal
name: string
schema?: Schema
State: (new () => ClusterState.Type<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: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                moveSaturation: Command<TypeFromFields<{
                    moveMode: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                moveToHue: Command<TypeFromFields<{
                    direction: ...;
                    hue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                moveToHueAndSaturation: Command<TypeFromFields<{
                    hue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    saturation: ...;
                    transitionTime: ...;
                }>, void, any>;
                moveToSaturation: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    saturation: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepHue: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepSaturation: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            attributes: {
                currentX: Attribute<number, any>;
                currentY: Attribute<number, any>;
            };
            commands: {
                moveColor: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    rateX: ...;
                    rateY: ...;
                }>, void, any>;
                moveToColor: Command<TypeFromFields<{
                    colorX: ...;
                    colorY: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepColor: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepX: ...;
                    stepY: ...;
                    transitionTime: ...;
                }>, 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: ...;
                    colorTemperatureMinimumMireds: ...;
                    moveMode: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                moveToColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMireds: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                stepColorTemperature: Command<TypeFromFields<{
                    colorTemperatureMaximumMireds: ...;
                    colorTemperatureMinimumMireds: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }, {
        component: {
            attributes: {
                enhancedCurrentHue: Attribute<number, any>;
            };
            commands: {
                enhancedMoveHue: Command<TypeFromFields<{
                    moveMode: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    rate: ...;
                }>, void, any>;
                enhancedMoveToHue: Command<TypeFromFields<{
                    direction: ...;
                    enhancedHue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    transitionTime: ...;
                }>, void, any>;
                enhancedMoveToHueAndSaturation: Command<TypeFromFields<{
                    enhancedHue: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    saturation: ...;
                    transitionTime: ...;
                }>, void, any>;
                enhancedStepHue: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                    stepMode: ...;
                    stepSize: ...;
                    transitionTime: ...;
                }>, 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: ...;
                    direction: ...;
                    optionsMask: ...;
                    optionsOverride: ...;
                    startHue: ...;
                    time: ...;
                    updateFlags: ...;
                }>, void, any>;
            };
        };
        flags: {
            colorLoop: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                }>, void, any>;
            };
        };
        flags: {
            hueSaturation: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                }>, void, any>;
            };
        };
        flags: {
            xy: true;
        };
    }, {
        component: {
            commands: {
                stopMoveStep: Command<TypeFromFields<{
                    optionsMask: ...;
                    optionsOverride: ...;
                }>, void, any>;
            };
        };
        flags: {
            colorTemperature: true;
        };
    }];
    features: {
        colorLoop: BitFlag;
        colorTemperature: BitFlag;
        enhancedHue: BitFlag;
        hueSaturation: BitFlag;
        xy: BitFlag;
    };
    id: 768;
    name: "ColorControl";
    revision: 6;
}>, typeof ColorControlServerLogic>)
supervisor: RootSupervisor
supports: ((other: Type) => boolean)

Type declaration

    • (other): boolean
    • Does this behavior support functionality of a specific implementation?

      Parameters

      Returns boolean

Methods

  • Release resources. This is the public API for releasing application resources held by behaviors in internal state.

    Returns MaybePromise

  • Execute logic with elevated privileges.

    The provided function executes with privileges escalated to offline mode. This is not commonly necessary.

    Elevated logic effectively ignores ACLs so should be used with care.

    Note that interactions with the behavior will remain elevated until the synchronous completion of this call. You should only elevate privileges for synchronous logic.

    Parameters

    • fn: (() => void)

      the elevated logic

        • (): void
        • Returns void

    Returns void

  • Type Parameters

    • This extends Behavior
    • K extends string | number | symbol

    Parameters

    • this: This
    • attributeName: K

    Returns void

  • Create a generic callback function that has the same properties as a Reactor.

    Like a reactor, the callback's "this" will be bound to an active Behavior instance. Because of this: The reactor MUST be a real JS function - arrow functions will not work!

    Type Parameters

    • A extends any[]
    • R

    Parameters

    Returns ((...args: A) => undefined | R)

      • (...args): undefined | R
      • Parameters

        • Rest...args: A

        Returns undefined | R

  • Behaviors are ephemeral and should not perform initialization in their constructor. They can override this method instead.

    This method may be synchronous or asyncronous. If asynchronous, the behavior will not be available for external use until initialization completes.

    Parameters

    • Optional_options: {}

      Returns MaybePromise

    • Parameters

      • rateX: number
      • rateY: number

      Returns MaybePromise

    • Parameters

      • moveMode: ColorControl.MoveMode
      • rate: number
      • colorTemperatureMinimumMireds: number
      • colorTemperatureMaximumMireds: number

      Returns MaybePromise

    • Parameters

      Returns MaybePromise

    • Parameters

      Returns MaybePromise

    • Parameters

      • targetX: number
      • targetY: number
      • transitionTime: number

      Returns MaybePromise

    • Parameters

      • targetMireds: number
      • transitionTime: number

      Returns MaybePromise

    • Parameters

      • targetEnhancedHue: number
      • targetSaturation: number
      • transitionTime: number

      Returns MaybePromise

    • Parameters

      • targetHue: number
      • targetSaturation: number
      • transitionTime: number

      Returns MaybePromise

    • Parameters

      Returns MaybePromise

    • Parameters

      • targetSaturation: number
      • transitionTime: number

      Returns MaybePromise

    • Install a Reactor.

      Important: The reactor MUST be a real JS function - arrow functions will not work!

      Type Parameters

      Parameters

      Returns void

    • Type Parameters

      • This extends Behavior
      • K extends string | number | symbol

      Parameters

      • this: This
      • attributeName: K

      Returns Exclude<This["state"][K], undefined>

    • Parameters

      Returns MaybePromise

    • Parameters

      • startHue: number

      Returns MaybePromise

    • Parameters

      • stepX: number
      • stepY: number
      • transitionTime: number

      Returns MaybePromise

    • Parameters

      • stepMode: ColorControl.StepMode
      • stepSize: number
      • transitionTime: number
      • colorTemperatureMinimumMireds: number
      • colorTemperatureMaximumMireds: number

      Returns MaybePromise

    • Parameters

      Returns MaybePromise

    • Parameters

      Returns MaybePromise

    • Returns MaybePromise

    • Returns MaybePromise

    • Returns MaybePromise

    • Returns MaybePromise

    • This method is used internally to potentially handle the dependency between the ColorControl and LevelControl cluster. Do not override this method! Please use the syncColorTemperatureWithLevelLogic method instead which is called by this method if a sync is needed.

      Parameters

      • level: number

      Returns MaybePromise

    • Parameters

      • level: number

      Returns MaybePromise

    • Description used in diagnostic messages.

      Returns string

    • Type Parameters

      Parameters

      Returns This