matterbridge
Version:
Matterbridge plugin manager for Matter
831 lines • 63.3 kB
TypeScript
/**
* This file contains the class MatterbridgeEndpoint that extends the Endpoint class from the Matter.js library.
*
* @file matterbridgeBehaviors.ts
* @author Luca Liguori
* @date 2024-11-07
* @version 1.0.0
*
* Copyright 2024, 2025, 2026 Luca Liguori.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License. *
*/
import { Behavior, NamedHandler } from '@matter/main';
import { BooleanStateConfiguration } from '@matter/main/clusters/boolean-state-configuration';
import { ColorControl } from '@matter/main/clusters/color-control';
import { FanControl } from '@matter/main/clusters/fan-control';
import { Identify } from '@matter/main/clusters/identify';
import { LevelControl } from '@matter/main/clusters/level-control';
import { WindowCovering } from '@matter/main/clusters/window-covering';
import { Thermostat } from '@matter/main/clusters/thermostat';
import { ValveConfigurationAndControl } from '@matter/main/clusters/valve-configuration-and-control';
import { ModeSelect } from '@matter/main/clusters/mode-select';
import { SmokeCoAlarm } from '@matter/main/clusters/smoke-co-alarm';
import { BooleanStateConfigurationServer } from '@matter/main/behaviors/boolean-state-configuration';
import { IdentifyServer } from '@matter/main/behaviors/identify';
import { OnOffServer } from '@matter/main/behaviors/on-off';
import { LevelControlServer } from '@matter/main/behaviors/level-control';
import { ColorControlServer } from '@matter/main/behaviors/color-control';
import { MovementDirection, MovementType, WindowCoveringServer } from '@matter/main/behaviors/window-covering';
import { DoorLockServer } from '@matter/main/behaviors/door-lock';
import { FanControlServer } from '@matter/main/behaviors/fan-control';
import { ThermostatServer } from '@matter/main/behaviors/thermostat';
import { ValveConfigurationAndControlServer } from '@matter/main/behaviors/valve-configuration-and-control';
import { ModeSelectServer } from '@matter/main/behaviors/mode-select';
import { SmokeCoAlarmServer } from '@matter/main/behaviors/smoke-co-alarm';
import { SwitchServer } from '@matter/main/behaviors/switch';
import { AnsiLogger } from './logger/export.js';
import { MatterbridgeEndpointCommands } from './matterbridgeEndpoint.js';
export declare class MatterbridgeBehaviorDevice {
log: AnsiLogger;
commandHandler: NamedHandler<MatterbridgeEndpointCommands>;
device: any;
endpointId: string | undefined;
endpointNumber: number | undefined;
constructor(log: AnsiLogger, commandHandler: NamedHandler<MatterbridgeEndpointCommands>, device: any);
setEndpointId(endpointId: string | undefined): void;
setEndpointNumber(endpointNumber: number | undefined): void;
identify({ identifyTime }: Identify.IdentifyRequest): void;
triggerEffect({ effectIdentifier, effectVariant }: Identify.TriggerEffectRequest): void;
on(): void;
off(): void;
toggle(): void;
moveToLevel({ level, transitionTime, optionsMask, optionsOverride }: LevelControl.MoveToLevelRequest): void;
moveToLevelWithOnOff({ level, transitionTime, optionsMask, optionsOverride }: LevelControl.MoveToLevelRequest): void;
moveToHue({ optionsMask, optionsOverride, hue, direction, transitionTime }: ColorControl.MoveToHueRequest): void;
moveToSaturation({ optionsMask, optionsOverride, saturation, transitionTime }: ColorControl.MoveToSaturationRequest): void;
moveToHueAndSaturation({ optionsOverride, optionsMask, saturation, hue, transitionTime }: ColorControl.MoveToHueAndSaturationRequest): void;
moveToColor({ optionsMask, optionsOverride, colorX, colorY, transitionTime }: ColorControl.MoveToColorRequest): void;
moveToColorTemperature({ optionsOverride, optionsMask, colorTemperatureMireds, transitionTime }: ColorControl.MoveToColorTemperatureRequest): void;
upOrOpen(): void;
downOrClose(): void;
stopMotion(): void;
goToLiftPercentage({ liftPercent100thsValue }: WindowCovering.GoToLiftPercentageRequest): void;
lockDoor(): void;
unlockDoor(): void;
step({ direction, wrap, lowestOff }: FanControl.StepRequest): void;
setpointRaiseLower({ mode, amount }: Thermostat.SetpointRaiseLowerRequest): void;
open({ openDuration, targetLevel }: ValveConfigurationAndControl.OpenRequest): void;
close(): void;
changeToMode({ newMode }: ModeSelect.ChangeToModeRequest): void;
selfTestRequest(): void;
enableDisableAlarm({ alarmsToEnableDisable }: BooleanStateConfiguration.EnableDisableAlarmRequest): void;
}
export declare class MatterbridgeBehavior extends Behavior {
static readonly id = "matterbridge";
state: MatterbridgeBehavior.State;
}
export declare namespace MatterbridgeBehavior {
class State {
deviceCommand: MatterbridgeBehaviorDevice;
}
}
export declare class MatterbridgeIdentifyServer extends IdentifyServer {
initialize(): void;
identify({ identifyTime }: Identify.IdentifyRequest): void;
triggerEffect({ effectIdentifier, effectVariant }: Identify.TriggerEffectRequest): void;
}
export declare class MatterbridgeOnOffServer extends OnOffServer {
on(): Promise<void>;
off(): Promise<void>;
toggle(): Promise<void>;
}
export declare class MatterbridgeLevelControlServer extends LevelControlServer {
moveToLevel({ level, transitionTime, optionsMask, optionsOverride }: LevelControl.MoveToLevelRequest): Promise<void>;
moveToLevelWithOnOff({ level, transitionTime, optionsMask, optionsOverride }: LevelControl.MoveToLevelRequest): Promise<void>;
}
declare const MatterbridgeColorControlServer_base: import("@matter/main").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
readonly id: 768;
readonly name: "ColorControl";
readonly revision: 6;
readonly features: {
readonly hueSaturation: import("@matter/types").BitFlag;
readonly enhancedHue: import("@matter/types").BitFlag;
readonly colorLoop: import("@matter/types").BitFlag;
readonly xy: import("@matter/types").BitFlag;
readonly colorTemperature: import("@matter/types").BitFlag;
};
readonly attributes: {
readonly remainingTime: import("@matter/types").OptionalAttribute<number, any>;
readonly driftCompensation: import("@matter/types").OptionalAttribute<ColorControl.DriftCompensation, any>;
readonly compensationText: import("@matter/types").OptionalAttribute<string, any>;
readonly colorMode: import("@matter/types").Attribute<ColorControl.ColorMode, any>;
readonly options: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>, any>;
readonly numberOfPrimaries: import("@matter/types").FixedAttribute<number | null, any>;
readonly primary1X: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary1Y: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary1Intensity: import("@matter/types").OptionalFixedAttribute<number | null, any>;
readonly primary2X: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary2Y: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary2Intensity: import("@matter/types").OptionalFixedAttribute<number | null, any>;
readonly primary3X: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary3Y: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary3Intensity: import("@matter/types").OptionalFixedAttribute<number | null, any>;
readonly primary4X: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary4Y: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary4Intensity: import("@matter/types").OptionalFixedAttribute<number | null, any>;
readonly primary5X: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary5Y: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary5Intensity: import("@matter/types").OptionalFixedAttribute<number | null, any>;
readonly primary6X: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary6Y: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly primary6Intensity: import("@matter/types").OptionalFixedAttribute<number | null, any>;
readonly whitePointX: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly whitePointY: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly colorPointRx: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly colorPointRy: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly colorPointRIntensity: import("@matter/types").OptionalWritableAttribute<number | null, any>;
readonly colorPointGx: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly colorPointGy: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly colorPointGIntensity: import("@matter/types").OptionalWritableAttribute<number | null, any>;
readonly colorPointBx: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly colorPointBy: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly colorPointBIntensity: import("@matter/types").OptionalWritableAttribute<number | null, any>;
readonly enhancedColorMode: import("@matter/types").Attribute<ColorControl.EnhancedColorMode, any>;
readonly colorCapabilities: import("@matter/types").Attribute<import("@matter/types").TypeFromPartialBitSchema<{
hueSaturation: import("@matter/types").BitFlag;
enhancedHue: import("@matter/types").BitFlag;
colorLoop: import("@matter/types").BitFlag;
xy: import("@matter/types").BitFlag;
colorTemperature: import("@matter/types").BitFlag;
}>, any>;
};
readonly extensions: readonly [{
readonly flags: {
readonly hueSaturation: true;
};
readonly component: {
readonly attributes: {
readonly currentHue: import("@matter/types").Attribute<number, any>;
readonly currentSaturation: import("@matter/types").Attribute<number, any>;
};
readonly commands: {
readonly moveToHue: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
hue: import("@matter/types").FieldType<number>;
direction: import("@matter/types").FieldType<ColorControl.Direction>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly moveHue: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
moveMode: import("@matter/types").FieldType<ColorControl.MoveMode>;
rate: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly stepHue: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
stepMode: import("@matter/types").FieldType<ColorControl.StepMode>;
stepSize: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly moveToSaturation: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
saturation: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly moveSaturation: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
moveMode: import("@matter/types").FieldType<ColorControl.MoveMode>;
rate: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly stepSaturation: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
stepMode: import("@matter/types").FieldType<ColorControl.StepMode>;
stepSize: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly moveToHueAndSaturation: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
hue: import("@matter/types").FieldType<number>;
saturation: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly xy: true;
};
readonly component: {
readonly attributes: {
readonly currentX: import("@matter/types").Attribute<number, any>;
readonly currentY: import("@matter/types").Attribute<number, any>;
};
readonly commands: {
readonly moveToColor: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
colorX: import("@matter/types").FieldType<number>;
colorY: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly moveColor: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
rateX: import("@matter/types").FieldType<number>;
rateY: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly stepColor: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
stepX: import("@matter/types").FieldType<number>;
stepY: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly colorTemperature: true;
};
readonly component: {
readonly attributes: {
readonly colorTemperatureMireds: import("@matter/types").Attribute<number, any>;
readonly colorTempPhysicalMinMireds: import("@matter/types").Attribute<number, any>;
readonly colorTempPhysicalMaxMireds: import("@matter/types").Attribute<number, any>;
readonly coupleColorTempToLevelMinMireds: import("@matter/types").OptionalAttribute<number, any>;
readonly startUpColorTemperatureMireds: import("@matter/types").OptionalWritableAttribute<number | null, any>;
};
readonly commands: {
readonly moveToColorTemperature: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
colorTemperatureMireds: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly moveColorTemperature: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
moveMode: import("@matter/types").FieldType<ColorControl.MoveMode>;
rate: import("@matter/types").FieldType<number>;
colorTemperatureMinimumMireds: import("@matter/types").FieldType<number>;
colorTemperatureMaximumMireds: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly stepColorTemperature: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
stepMode: import("@matter/types").FieldType<ColorControl.StepMode>;
stepSize: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
colorTemperatureMinimumMireds: import("@matter/types").FieldType<number>;
colorTemperatureMaximumMireds: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly enhancedHue: true;
};
readonly component: {
readonly attributes: {
readonly enhancedCurrentHue: import("@matter/types").Attribute<number, any>;
};
readonly commands: {
readonly enhancedMoveToHue: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
enhancedHue: import("@matter/types").FieldType<number>;
direction: import("@matter/types").FieldType<ColorControl.Direction>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly enhancedMoveHue: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
moveMode: import("@matter/types").FieldType<ColorControl.MoveMode>;
rate: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly enhancedStepHue: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
stepMode: import("@matter/types").FieldType<ColorControl.StepMode>;
stepSize: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
readonly enhancedMoveToHueAndSaturation: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
enhancedHue: import("@matter/types").FieldType<number>;
saturation: import("@matter/types").FieldType<number>;
transitionTime: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly colorLoop: true;
};
readonly component: {
readonly attributes: {
readonly colorLoopActive: import("@matter/types").Attribute<ColorControl.ColorLoopActive, any>;
readonly colorLoopDirection: import("@matter/types").Attribute<ColorControl.ColorLoopDirection, any>;
readonly colorLoopTime: import("@matter/types").Attribute<number, any>;
readonly colorLoopStartEnhancedHue: import("@matter/types").Attribute<number, any>;
readonly colorLoopStoredEnhancedHue: import("@matter/types").Attribute<number, any>;
};
readonly commands: {
readonly colorLoopSet: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
updateFlags: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
updateAction: import("@matter/types").BitFlag;
updateDirection: import("@matter/types").BitFlag;
updateTime: import("@matter/types").BitFlag;
updateStartHue: import("@matter/types").BitFlag;
reserved: import("@matter/types").BitField;
}>>;
action: import("@matter/types").FieldType<ColorControl.Action>;
direction: import("@matter/types").FieldType<ColorControl.ColorLoopSetDirection>;
time: import("@matter/types").FieldType<number>;
startHue: import("@matter/types").FieldType<number>;
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly hueSaturation: true;
};
readonly component: {
readonly commands: {
readonly stopMoveStep: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly xy: true;
};
readonly component: {
readonly commands: {
readonly stopMoveStep: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly colorTemperature: true;
};
readonly component: {
readonly commands: {
readonly stopMoveStep: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
optionsMask: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
optionsOverride: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
executeIfOff: import("@matter/types").BitFlag;
}>>;
}>, void, any>;
};
};
}];
}>, readonly [ColorControl.Feature.HueSaturation, ColorControl.Feature.Xy, ColorControl.Feature.ColorTemperature]>, typeof ColorControlServer, import("@matter/main/behaviors/color-control").ColorControlInterface>;
export declare class MatterbridgeColorControlServer extends MatterbridgeColorControlServer_base {
moveToHue({ optionsMask, optionsOverride, hue, direction, transitionTime }: ColorControl.MoveToHueRequest): Promise<void>;
moveToSaturation({ optionsMask, optionsOverride, saturation, transitionTime }: ColorControl.MoveToSaturationRequest): Promise<void>;
moveToHueAndSaturation({ optionsOverride, optionsMask, saturation, hue, transitionTime }: ColorControl.MoveToHueAndSaturationRequest): Promise<void>;
moveToColor({ optionsMask, optionsOverride, colorX, colorY, transitionTime }: ColorControl.MoveToColorRequest): Promise<void>;
moveToColorTemperature({ optionsOverride, optionsMask, colorTemperatureMireds, transitionTime }: ColorControl.MoveToColorTemperatureRequest): Promise<void>;
}
declare const MatterbridgeWindowCoveringServer_base: import("@matter/main").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
readonly id: 258;
readonly name: "WindowCovering";
readonly revision: 5;
readonly features: {
readonly lift: import("@matter/types").BitFlag;
readonly tilt: import("@matter/types").BitFlag;
readonly positionAwareLift: import("@matter/types").BitFlag;
readonly absolutePosition: import("@matter/types").BitFlag;
readonly positionAwareTilt: import("@matter/types").BitFlag;
};
readonly attributes: {
readonly type: import("@matter/types").FixedAttribute<WindowCovering.WindowCoveringType, any>;
readonly configStatus: import("@matter/types").Attribute<import("@matter/types").TypeFromPartialBitSchema<{
operational: import("@matter/types").BitFlag;
onlineReserved: import("@matter/types").BitFlag;
liftMovementReversed: import("@matter/types").BitFlag;
liftPositionAware: import("@matter/types").BitFlag;
tiltPositionAware: import("@matter/types").BitFlag;
liftEncoderControlled: import("@matter/types").BitFlag;
tiltEncoderControlled: import("@matter/types").BitFlag;
}>, any>;
readonly operationalStatus: import("@matter/types").Attribute<import("@matter/types").TypeFromPartialBitSchema<{
global: import("@matter/types").BitFieldEnum<WindowCovering.MovementStatus>;
lift: import("@matter/types").BitFieldEnum<WindowCovering.MovementStatus>;
tilt: import("@matter/types").BitFieldEnum<WindowCovering.MovementStatus>;
}>, any>;
readonly endProductType: import("@matter/types").FixedAttribute<WindowCovering.EndProductType, any>;
readonly mode: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
motorDirectionReversed: import("@matter/types").BitFlag;
calibrationMode: import("@matter/types").BitFlag;
maintenanceMode: import("@matter/types").BitFlag;
ledFeedback: import("@matter/types").BitFlag;
}>, any>;
readonly safetyStatus: import("@matter/types").OptionalAttribute<import("@matter/types").TypeFromPartialBitSchema<{
remoteLockout: import("@matter/types").BitFlag;
tamperDetection: import("@matter/types").BitFlag;
failedCommunication: import("@matter/types").BitFlag;
positionFailure: import("@matter/types").BitFlag;
thermalProtection: import("@matter/types").BitFlag;
obstacleDetected: import("@matter/types").BitFlag;
power: import("@matter/types").BitFlag;
stopInput: import("@matter/types").BitFlag;
motorJammed: import("@matter/types").BitFlag;
hardwareFailure: import("@matter/types").BitFlag;
manualOperation: import("@matter/types").BitFlag;
protection: import("@matter/types").BitFlag;
}>, any>;
};
readonly commands: {
readonly upOrOpen: import("@matter/types").Command<void, void, any>;
readonly downOrClose: import("@matter/types").Command<void, void, any>;
readonly stopMotion: import("@matter/types").Command<void, void, any>;
};
readonly extensions: readonly [{
readonly flags: {
readonly lift: true;
readonly positionAwareLift: true;
readonly absolutePosition: true;
};
readonly component: {
readonly attributes: {
readonly physicalClosedLimitLift: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly currentPositionLift: import("@matter/types").OptionalAttribute<number | null, any>;
readonly installedOpenLimitLift: import("@matter/types").Attribute<number, any>;
readonly installedClosedLimitLift: import("@matter/types").Attribute<number, any>;
};
};
}, {
readonly flags: {
readonly tilt: true;
readonly positionAwareTilt: true;
readonly absolutePosition: true;
};
readonly component: {
readonly attributes: {
readonly physicalClosedLimitTilt: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly currentPositionTilt: import("@matter/types").OptionalAttribute<number | null, any>;
readonly installedOpenLimitTilt: import("@matter/types").Attribute<number, any>;
readonly installedClosedLimitTilt: import("@matter/types").Attribute<number, any>;
};
};
}, {
readonly flags: {
readonly lift: true;
};
readonly component: {
readonly attributes: {
readonly numberOfActuationsLift: import("@matter/types").OptionalAttribute<number, any>;
};
readonly commands: {
readonly goToLiftPercentage: import("@matter/types").OptionalCommand<import("@matter/types").TypeFromFields<{
liftPercent100thsValue: import("@matter/types").FieldType<number>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly tilt: true;
};
readonly component: {
readonly attributes: {
readonly numberOfActuationsTilt: import("@matter/types").OptionalAttribute<number, any>;
};
readonly commands: {
readonly goToTiltPercentage: import("@matter/types").OptionalCommand<import("@matter/types").TypeFromFields<{
tiltPercent100thsValue: import("@matter/types").FieldType<number>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly lift: true;
readonly positionAwareLift: true;
};
readonly component: {
readonly attributes: {
readonly currentPositionLiftPercentage: import("@matter/types").OptionalAttribute<number | null, any>;
readonly targetPositionLiftPercent100ths: import("@matter/types").Attribute<number | null, any>;
readonly currentPositionLiftPercent100ths: import("@matter/types").Attribute<number | null, any>;
};
readonly commands: {
readonly goToLiftPercentage: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
liftPercent100thsValue: import("@matter/types").FieldType<number>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly tilt: true;
readonly positionAwareTilt: true;
};
readonly component: {
readonly attributes: {
readonly currentPositionTiltPercentage: import("@matter/types").OptionalAttribute<number | null, any>;
readonly targetPositionTiltPercent100ths: import("@matter/types").Attribute<number | null, any>;
readonly currentPositionTiltPercent100ths: import("@matter/types").Attribute<number | null, any>;
};
readonly commands: {
readonly goToTiltPercentage: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
tiltPercent100thsValue: import("@matter/types").FieldType<number>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly lift: true;
readonly absolutePosition: true;
};
readonly component: {
readonly commands: {
readonly goToLiftValue: import("@matter/types").OptionalCommand<import("@matter/types").TypeFromFields<{
liftValue: import("@matter/types").FieldType<number>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly tilt: true;
readonly absolutePosition: true;
};
readonly component: {
readonly commands: {
readonly goToTiltValue: import("@matter/types").OptionalCommand<import("@matter/types").TypeFromFields<{
tiltValue: import("@matter/types").FieldType<number>;
}>, void, any>;
};
};
}, {
readonly flags: {
readonly positionAwareLift: true;
readonly lift: false;
};
readonly component: false;
}, {
readonly flags: {
readonly positionAwareTilt: true;
readonly tilt: false;
};
readonly component: false;
}, {
readonly flags: {
readonly lift: false;
readonly tilt: false;
};
readonly component: false;
}];
}>, readonly [WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift]>, typeof WindowCoveringServer, import("@matter/main/behaviors/window-covering").WindowCoveringInterface>;
export declare class MatterbridgeWindowCoveringServer extends MatterbridgeWindowCoveringServer_base {
upOrOpen(): Promise<void>;
downOrClose(): Promise<void>;
stopMotion(): void;
goToLiftPercentage({ liftPercent100thsValue }: WindowCovering.GoToLiftPercentageRequest): void;
handleMovement(type: MovementType, reversed: boolean, direction: MovementDirection, targetPercent100ths?: number): Promise<void>;
}
export declare class MatterbridgeDoorLockServer extends DoorLockServer {
lockDoor(): Promise<void>;
unlockDoor(): Promise<void>;
}
export declare class MatterbridgeModeSelectServer extends ModeSelectServer {
changeToMode({ newMode }: ModeSelect.ChangeToModeRequest): Promise<void>;
}
declare const MatterbridgeFanControlServer_base: import("@matter/main").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<FanControl.Cluster, readonly [FanControl.Feature.MultiSpeed, FanControl.Feature.Auto, FanControl.Feature.Step]>, typeof FanControlServer, import("@matter/main/behaviors/fan-control").FanControlInterface>;
export declare class MatterbridgeFanControlServer extends MatterbridgeFanControlServer_base {
step({ direction, wrap, lowestOff }: FanControl.StepRequest): Promise<void>;
}
declare const MatterbridgeThermostatServer_base: import("@matter/main").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
readonly id: 513;
readonly name: "Thermostat";
readonly revision: 6;
readonly features: {
readonly heating: import("@matter/types").BitFlag;
readonly cooling: import("@matter/types").BitFlag;
readonly occupancy: import("@matter/types").BitFlag;
readonly scheduleConfiguration: import("@matter/types").BitFlag;
readonly setback: import("@matter/types").BitFlag;
readonly autoMode: import("@matter/types").BitFlag;
readonly localTemperatureNotExposed: import("@matter/types").BitFlag;
};
readonly attributes: {
readonly localTemperature: import("@matter/types").Attribute<number | null, any>;
readonly outdoorTemperature: import("@matter/types").OptionalAttribute<number | null, any>;
readonly hvacSystemTypeConfiguration: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
coolingStage: import("@matter/types").BitField;
heatingStage: import("@matter/types").BitField;
heatingIsHeatPump: import("@matter/types").BitFlag;
heatingUsesFuel: import("@matter/types").BitFlag;
}>, any>;
readonly remoteSensing: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
localTemperature: import("@matter/types").BitFlag;
outdoorTemperature: import("@matter/types").BitFlag;
occupancy: import("@matter/types").BitFlag;
}>, any>;
readonly controlSequenceOfOperation: import("@matter/types").WritableAttribute<Thermostat.ControlSequenceOfOperation, any>;
readonly systemMode: import("@matter/types").WritableAttribute<Thermostat.SystemMode, any>;
readonly temperatureSetpointHold: import("@matter/types").OptionalWritableAttribute<Thermostat.TemperatureSetpointHold, any>;
readonly temperatureSetpointHoldDuration: import("@matter/types").OptionalWritableAttribute<number | null, any>;
readonly thermostatProgrammingOperationMode: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
scheduleActive: import("@matter/types").BitFlag;
autoRecovery: import("@matter/types").BitFlag;
economy: import("@matter/types").BitFlag;
}>, any>;
readonly thermostatRunningState: import("@matter/types").OptionalAttribute<import("@matter/types").TypeFromPartialBitSchema<{
heat: import("@matter/types").BitFlag;
cool: import("@matter/types").BitFlag;
fan: import("@matter/types").BitFlag;
heatStage2: import("@matter/types").BitFlag;
coolStage2: import("@matter/types").BitFlag;
fanStage2: import("@matter/types").BitFlag;
fanStage3: import("@matter/types").BitFlag;
}>, any>;
readonly setpointChangeSource: import("@matter/types").OptionalAttribute<Thermostat.SetpointChangeSource, any>;
readonly setpointChangeAmount: import("@matter/types").OptionalAttribute<number | null, any>;
readonly setpointChangeSourceTimestamp: import("@matter/types").OptionalAttribute<number, any>;
readonly emergencyHeatDelta: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly acType: import("@matter/types").OptionalWritableAttribute<Thermostat.AcType, any>;
readonly acCapacity: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly acRefrigerantType: import("@matter/types").OptionalWritableAttribute<Thermostat.AcRefrigerantType, any>;
readonly acCompressorType: import("@matter/types").OptionalWritableAttribute<Thermostat.AcCompressorType, any>;
readonly acErrorCode: import("@matter/types").OptionalWritableAttribute<import("@matter/types").TypeFromPartialBitSchema<{
compressorFail: import("@matter/types").BitFlag;
roomSensorFail: import("@matter/types").BitFlag;
outdoorSensorFail: import("@matter/types").BitFlag;
coilSensorFail: import("@matter/types").BitFlag;
fanFail: import("@matter/types").BitFlag;
}>, any>;
readonly acLouverPosition: import("@matter/types").OptionalWritableAttribute<Thermostat.AcLouverPosition, any>;
readonly acCoilTemperature: import("@matter/types").OptionalAttribute<number | null, any>;
readonly acCapacityFormat: import("@matter/types").OptionalWritableAttribute<Thermostat.AcCapacityFormat, any>;
};
readonly commands: {
readonly setpointRaiseLower: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
mode: import("@matter/types").FieldType<Thermostat.SetpointRaiseLowerMode>;
amount: import("@matter/types").FieldType<number>;
}>, void, any>;
};
readonly extensions: readonly [{
readonly flags: {
readonly occupancy: true;
};
readonly component: {
readonly attributes: {
readonly occupancy: import("@matter/types").Attribute<import("@matter/types").TypeFromPartialBitSchema<{
occupied: import("@matter/types").BitFlag;
}>, any>;
};
};
}, {
readonly flags: {
readonly heating: true;
};
readonly component: {
readonly attributes: {
readonly absMinHeatSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly absMaxHeatSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly piHeatingDemand: import("@matter/types").OptionalAttribute<number, any>;
readonly occupiedHeatingSetpoint: import("@matter/types").WritableAttribute<number, any>;
readonly minHeatSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly maxHeatSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
};
};
}, {
readonly flags: {
readonly cooling: true;
};
readonly component: {
readonly attributes: {
readonly absMinCoolSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly absMaxCoolSetpointLimit: import("@matter/types").OptionalFixedAttribute<number, any>;
readonly piCoolingDemand: import("@matter/types").OptionalAttribute<number, any>;
readonly occupiedCoolingSetpoint: import("@matter/types").WritableAttribute<number, any>;
readonly minCoolSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
readonly maxCoolSetpointLimit: import("@matter/types").OptionalWritableAttribute<number, any>;
};
};
}, {
readonly flags: {
readonly localTemperatureNotExposed: false;
};
readonly component: {
readonly attributes: {
readonly localTemperatureCalibration: import("@matter/types").OptionalWritableAttribute<number, any>;
};
};
}, {
readonly flags: {
readonly cooling: true;
readonly occupancy: true;
};
readonly component: {
readonly attributes: {
readonly unoccupiedCoolingSetpoint: import("@matter/types").WritableAttribute<number, any>;
};
};
}, {
readonly flags: {
readonly heating: true;
readonly occupancy: true;
};
readonly component: {
readonly attributes: {
readonly unoccupiedHeatingSetpoint: import("@m