homebridge
Version:
HomeKit support for the impatient
48 lines • 2.32 kB
TypeScript
/**
* WindowCovering Cluster Behavior
*
* Handles window covering commands for blinds, shades, and curtains
*/
import type { WindowCovering } from '@matter/main/clusters';
import { WindowCoveringServer } from '@matter/main/behaviors/window-covering';
/**
* Feature-rich variant of the public WindowCoveringServer.
*
* We extend the public `WindowCoveringServer` (not the internal
* `WindowCoveringBaseServer`) per apollon77's guidance on homebridge#3905 — the
* Base class exists so matter.js's default-implementation methods have a concrete
* feature set to compile against, and consumers shouldn't depend on it. Instead,
* we declare the superset of features our overrides need via `.with(...)`. At
* endpoint-attachment time, matter.js still narrows the effective feature set to
* whatever the device type declares, so an endpoint that declares only Lift won't
* advertise Tilt commands.
*/
declare const FeatureRichWindowCoveringServer: import("@matter/node").ClusterBehavior.Type<typeof WindowCoveringServer, import("@matter/main/types").ClusterType.WithSupportedFeatures<WindowCovering, {
lift: true;
tilt: true;
positionAwareLift: true;
positionAwareTilt: true;
}>, import("@matter/main/types").ClusterType.Concrete, typeof import("@matter/main/behaviors/window-covering").WindowCoveringBaseServer.Internal, "windowCovering">;
/**
* Custom WindowCovering Server that calls plugin handlers.
*/
export declare class HomebridgeWindowCoveringServer extends FeatureRichWindowCoveringServer {
/**
* Get the registry for this behavior's endpoint
*/
private getRegistry;
/**
* Sync window covering position state to cache
* @param endpointId - The endpoint ID
* @param targetProperty - Target position property name (e.g., 'targetPositionLiftPercent100ths')
* @param currentProperty - Current position property name (e.g., 'currentPositionLiftPercent100ths')
*/
private syncPositionStateToCache;
upOrOpen(): Promise<void>;
downOrClose(): Promise<void>;
stopMotion(): Promise<void>;
goToLiftPercentage(request: WindowCovering.GoToLiftPercentageRequest): Promise<void>;
goToTiltPercentage(request: WindowCovering.GoToTiltPercentageRequest): Promise<void>;
}
export {};
//# sourceMappingURL=WindowCoveringBehavior.d.ts.map