import { DataTypeType, PermissionType, PropertyCategory } from '../devices.constants'; import { ChannelCategory as ChannelCategoryType, DeviceCategory as DeviceCategoryType } from '../devices.constants'; export interface DataTypeVariant { id: string; data_type: DataTypeType; unit: string | null; format: string[] | number[] | null; invalid: unknown; step: number | null; description: { en: string; } | null; } export interface PropertyMetadata { category: PropertyCategory; required: boolean; permissions: PermissionType[]; data_type: DataTypeType; unit: string | null; format: string[] | number[] | null; invalid: unknown; step: number | null; hasMultipleDataTypes?: boolean; dataTypeVariants?: DataTypeVariant[]; } export interface ChannelConstraints { oneOf?: PropertyCategory[][]; oneOrMoreOf?: PropertyCategory[][]; mutuallyExclusiveGroups?: PropertyCategory[][][]; } export declare function getChannelConstraints(channelCategory: ChannelCategoryType): ChannelConstraints | null; export declare function getRequiredProperties(channelCategory: ChannelCategoryType): PropertyCategory[]; export declare function getPropertyMetadata(channelCategory: ChannelCategoryType, propertyCategory: PropertyCategory): PropertyMetadata | null; export declare function isPropertyRequired(channelCategory: ChannelCategoryType, propertyCategory: PropertyCategory): boolean; export declare function getPropertyDefaultValue(channelCategory: ChannelCategoryType, propertyCategory: PropertyCategory): string | number | boolean | null; export interface DeviceConstraints { oneOf?: ChannelCategoryType[][]; oneOrMoreOf?: ChannelCategoryType[][]; mutuallyExclusiveGroups?: ChannelCategoryType[][][]; } export declare function getDeviceConstraints(deviceCategory: DeviceCategoryType): DeviceConstraints | null; export interface ChannelSpec { category: ChannelCategoryType; required: boolean; multiple: boolean; } export interface DeviceSpec { category: DeviceCategoryType; channels: Record; } export declare function getDeviceSpec(deviceCategory: DeviceCategoryType): DeviceSpec | null; export declare function getRequiredChannels(deviceCategory: DeviceCategoryType): ChannelCategoryType[]; export declare function getAllowedChannels(deviceCategory: DeviceCategoryType): ChannelSpec[]; export declare function isChannelAllowed(deviceCategory: DeviceCategoryType, channelCategory: ChannelCategoryType): boolean; export declare function isChannelMultiple(deviceCategory: DeviceCategoryType, channelCategory: ChannelCategoryType): boolean; export declare function isChannelRequired(deviceCategory: DeviceCategoryType, channelCategory: ChannelCategoryType): boolean; export declare function getChannelSpec(deviceCategory: DeviceCategoryType, channelCategory: ChannelCategoryType): ChannelSpec | null; export declare function getAllProperties(channelCategory: ChannelCategoryType): PropertyMetadata[]; export declare function hasMultipleDataTypes(channelCategory: ChannelCategoryType, propertyCategory: PropertyCategory): boolean; export declare function getPropertyDataTypeVariants(channelCategory: ChannelCategoryType, propertyCategory: PropertyCategory): DataTypeVariant[]; export declare function isValidDataType(channelCategory: ChannelCategoryType, propertyCategory: PropertyCategory, dataType: DataTypeType): boolean;