import { ChannelCategory, DataTypeType, PermissionType, PropertyCategory } from '../../../modules/devices/devices.constants'; export declare enum VirtualPropertyType { STATIC = "static", DERIVED = "derived", COMMAND = "command" } export interface VirtualPropertyDefinitionBase { property_category: PropertyCategory; virtual_type: VirtualPropertyType; data_type: DataTypeType; permissions: PermissionType[]; format?: (string | number)[] | null; unit?: string | null; } export interface StaticVirtualPropertyDefinition extends VirtualPropertyDefinitionBase { virtual_type: VirtualPropertyType.STATIC; static_value: string | number | boolean; } export interface DerivedVirtualPropertyDefinition extends VirtualPropertyDefinitionBase { virtual_type: VirtualPropertyType.DERIVED; source_property?: string; derivation: VirtualPropertyDerivation; } export interface CommandVirtualPropertyDefinition extends VirtualPropertyDefinitionBase { virtual_type: VirtualPropertyType.COMMAND; target_property: string; value_mappings: Record; } export type VirtualPropertyDefinition = StaticVirtualPropertyDefinition | DerivedVirtualPropertyDefinition | CommandVirtualPropertyDefinition; export interface VirtualPropertyDerivation { type: DerivationType; params?: Record; } export declare enum DerivationType { BATTERY_STATUS_FROM_PERCENTAGE = "battery_status_from_percentage", ILLUMINANCE_LEVEL_FROM_DENSITY = "illuminance_level_from_density", COVER_STATUS_FROM_POSITION = "cover_status_from_position", BATTERY_STATUS_WITH_CHARGING = "battery_status_with_charging" } export interface VirtualPropertyContext { state: Record; friendlyName: string; ieeeAddress: string; } export interface ResolvedVirtualProperty { category: PropertyCategory; value: string | number | boolean | null; isVirtual: true; virtualType: VirtualPropertyType; dataType: DataTypeType; permissions: PermissionType[]; format?: (string | number)[] | null; unit?: string | null; } export interface ChannelVirtualProperties { channel_category: ChannelCategory; virtual_properties: VirtualPropertyDefinition[]; } export declare const CHANNEL_VIRTUAL_PROPERTIES: ChannelVirtualProperties[]; export declare function getVirtualPropertiesForChannel(channelCategory: ChannelCategory): VirtualPropertyDefinition[]; export declare function getVirtualPropertyDefinition(channelCategory: ChannelCategory, propertyCategory: PropertyCategory): VirtualPropertyDefinition | null;