import type { ColorComponent, DoorHandleStatus, DoorLockMode, DoorLockOperationType, KeypadMode, SwitchType, ThermostatMode, ThermostatSetpointType, UserCredentialCapability, UserCredentialKeyLockerEntryCapability, UserCredentialKeyLockerEntryType, UserCredentialNameEncoding, UserCredentialRule, UserCredentialType, UserCredentialUserType, UserIDStatus, WindowCoveringParameter } from "@zwave-js/cc"; import type { CommandClasses, ConfigValue, ConfigValueFormat, MaybeUnknown } from "@zwave-js/core"; export interface BinarySensorCCCapabilities { supportedSensorTypes: number[]; getValue?: (sensorType: number | undefined) => boolean | undefined; } export interface BinarySwitchCCCapabilities { defaultValue?: MaybeUnknown; } export interface ConfigurationCCCapabilities { bulkSupport?: false; parameters: { "#": number; valueSize: number; name?: string; info?: string; format?: ConfigValueFormat; minValue?: ConfigValue; maxValue?: ConfigValue; defaultValue?: ConfigValue; readonly?: boolean; isAdvanced?: boolean; altersCapabilities?: boolean; }[]; } export interface LockCCCapabilities { /** * Time in milliseconds for the lock to travel. * Set to 0 to lock/unlock instantly. * Default: 0 */ travelTime?: number; } export interface DoorLockCCCapabilities { supportedOperationTypes: DoorLockOperationType[]; supportedDoorLockModes: DoorLockMode[]; supportedOutsideHandles?: DoorHandleStatus; supportedInsideHandles?: DoorHandleStatus; doorSupported?: boolean; boltSupported?: boolean; latchSupported?: boolean; blockToBlockSupported?: boolean; twistAssistSupported?: boolean; holdAndReleaseSupported?: boolean; autoRelockSupported?: boolean; /** * Time in milliseconds for the lock to travel. * Set to 0 to lock/unlock instantly. * Default: 0 */ travelTime?: number; } export interface ColorSwitchCCCapabilities { /** Supported colors and their default values */ colorComponents: Partial>; } export interface IndicatorCCCapabilities { indicators: Record; getValue?: (indicatorId: number, propertyId: number) => number | undefined; } export interface NotificationCCCapabilities { supportsV1Alarm: boolean; notificationTypesAndEvents: Record; } export interface NodeNamingAndLocationCCCapabilities { name?: string; location?: string; } export interface MeterCCCapabilities { meterType: number; supportedScales: number[]; supportedRateTypes: number[]; supportsReset: boolean; getValue?: (scale: number, rateType: number) => number | { value: number; deltaTime: number; prevValue?: number; } | undefined; onReset?: (options?: { scale: number; rateType: number; targetValue: number; }) => void; } export interface MultilevelSensorCCCapabilities { sensors: Record; getValue?: (sensorType: number | undefined, scale: number | undefined) => number | undefined; } export interface MultilevelSwitchCCCapabilities { defaultValue?: MaybeUnknown; primarySwitchType: SwitchType; /** Full travel time from 0 to 99 in milliseconds. Default: 0 (instant) */ travelTime?: number; } export interface SoundSwitchCCCapabilities { defaultToneId: number; defaultVolume: number; tones: { name: string; duration: number; }[]; } export interface WindowCoveringCCCapabilities { supportedParameters: WindowCoveringParameter[]; /** Full travel time from 0 to 99 in milliseconds. Default: 5000 */ travelTime?: number; } export interface EnergyProductionCCCapabilities { values: { Power: { value: number; scale: 0; }; "Production Total": { value: number; scale: 0; }; "Production Today": { value: number; scale: 0; }; "Total Time": { value: number; scale: 0 | 1; }; }; } export interface ThermostatModeCCCapabilities { supportedModes: ThermostatMode[]; } export interface ThermostatSetpointCCCapabilities { setpoints: Partial>; } export interface UserCodeCCCapabilities { numUsers: number; supportsAdminCode?: boolean; supportsAdminCodeDeactivation?: boolean; supportsUserCodeChecksum?: boolean; supportedUserIDStatuses?: UserIDStatus[]; supportedKeypadModes?: KeypadMode[]; supportedASCIIChars?: string; } export interface ScheduleEntryLockCCCapabilities { numWeekDaySlots: number; numYearDaySlots: number; numDailyRepeatingSlots: number; } export interface UserCredentialCCCapabilities { numberOfSupportedUsers: number; supportedCredentialRules: UserCredentialRule[]; maxUserNameLength: number; supportsUserSchedule?: boolean; supportsAllUsersChecksum?: boolean; supportsUserChecksum?: boolean; supportedUserNameEncodings?: UserCredentialNameEncoding[]; supportedUserTypes?: UserCredentialUserType[]; supportsCredentialChecksum?: boolean; supportsAdminCode?: boolean; supportsAdminCodeDeactivation?: boolean; supportedCredentialTypes: Map; supportedKeyLockerEntryTypes?: Map; } export type CCSpecificCapabilities = { [CommandClasses.Configuration]: ConfigurationCCCapabilities; [CommandClasses.Notification]: NotificationCCCapabilities; [0x77]: NodeNamingAndLocationCCCapabilities; [48]: BinarySensorCCCapabilities; [0x25]: BinarySwitchCCCapabilities; [0x62]: DoorLockCCCapabilities; [0x76]: LockCCCapabilities; [49]: MultilevelSensorCCCapabilities; [0x26]: MultilevelSwitchCCCapabilities; [51]: ColorSwitchCCCapabilities; [121]: SoundSwitchCCCapabilities; [106]: WindowCoveringCCCapabilities; [144]: EnergyProductionCCCapabilities; [64]: ThermostatModeCCCapabilities; [67]: ThermostatSetpointCCCapabilities; [99]: UserCodeCCCapabilities; [78]: ScheduleEntryLockCCCapabilities; [0x83]: UserCredentialCCCapabilities; [CommandClasses.Meter]: MeterCCCapabilities; [CommandClasses.Indicator]: IndicatorCCCapabilities; }; export type CCIdToCapabilities = T extends keyof CCSpecificCapabilities ? CCSpecificCapabilities[T] : never; //# sourceMappingURL=CCSpecificCapabilities.d.ts.map