## API Report File for "@zwave-js/config"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

import { CommandClasses } from '@zwave-js/core/safe';
import type { CommandClassInfo } from '@zwave-js/core/safe';
import { JSONObject } from '@zwave-js/shared/safe';
import { JSONObject as JSONObject_2 } from '@zwave-js/shared';
import type { LogContext } from '@zwave-js/core/safe';
import { ReadonlyObjectKeyMap } from '@zwave-js/shared';
import type { ValueID } from '@zwave-js/core/safe';
import type { ValueType } from '@zwave-js/core/safe';
import { ZWaveLogContainer } from '@zwave-js/core';

// Warning: (ae-missing-release-tag) "AssociationConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type AssociationConfig = Omit<ConditionalAssociationConfig, "condition" | "evaluateCondition">;

// Warning: (ae-missing-release-tag) "BasicDeviceClass" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface BasicDeviceClass {
    // (undocumented)
    key: number;
    // (undocumented)
    label: string;
}

// Warning: (ae-missing-release-tag) "BasicDeviceClassMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type BasicDeviceClassMap = ReadonlyMap<number, string>;

// Warning: (ae-missing-release-tag) "CompatAddCC" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class CompatAddCC {
    constructor(filename: string, definition: JSONObject);
    // (undocumented)
    readonly endpoints: ReadonlyMap<number, Partial<CommandClassInfo>>;
}

// Warning: (ae-missing-release-tag) "CompatConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type CompatConfig = Omit<ConditionalCompatConfig, "condition" | "evaluateCondition">;

// Warning: (ae-missing-release-tag) "CompatMapAlarm" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class CompatMapAlarm {
    constructor(filename: string, definition: JSONObject, index: number);
    // (undocumented)
    readonly from: CompatMapAlarmFrom;
    // (undocumented)
    readonly to: CompatMapAlarmTo;
}

// Warning: (ae-missing-release-tag) "CompatMapAlarmFrom" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface CompatMapAlarmFrom {
    // (undocumented)
    alarmLevel?: number;
    // (undocumented)
    alarmType: number;
}

// Warning: (ae-missing-release-tag) "CompatMapAlarmTo" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface CompatMapAlarmTo {
    // (undocumented)
    eventParameters?: Record<string, number | "alarmLevel">;
    // (undocumented)
    notificationEvent: number;
    // (undocumented)
    notificationType: number;
}

// Warning: (ae-forgotten-export) The symbol "ConditionalItem" needs to be exported by the entry point index.d.ts
// Warning: (ae-missing-release-tag) "ConditionalAssociationConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConditionalAssociationConfig implements ConditionalItem<AssociationConfig> {
    constructor(filename: string, groupId: number, definition: JSONObject);
    // (undocumented)
    readonly condition?: string;
    // (undocumented)
    readonly description?: string;
    // (undocumented)
    evaluateCondition(deviceId?: DeviceID): AssociationConfig | undefined;
    // (undocumented)
    readonly groupId: number;
    readonly isLifeline: boolean;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly maxNodes: number;
    readonly multiChannel: boolean | "auto";
}

// Warning: (ae-missing-release-tag) "ConditionalCompatConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConditionalCompatConfig implements ConditionalItem<CompatConfig> {
    constructor(filename: string, definition: JSONObject);
    // (undocumented)
    readonly addCCs?: ReadonlyMap<CommandClasses, CompatAddCC>;
    // (undocumented)
    readonly alarmMapping?: readonly CompatMapAlarm[];
    // (undocumented)
    readonly condition?: string | undefined;
    // (undocumented)
    readonly disableBasicMapping?: boolean;
    // (undocumented)
    readonly disableStrictEntryControlDataValidation?: boolean;
    // (undocumented)
    readonly disableStrictMeasurementValidation?: boolean;
    // (undocumented)
    readonly enableBasicSetMapping?: boolean;
    // (undocumented)
    evaluateCondition(deviceId?: DeviceID): CompatConfig | undefined;
    // (undocumented)
    readonly forceNotificationIdleReset?: boolean;
    // (undocumented)
    readonly forceSceneControllerGroupCount?: number;
    // (undocumented)
    readonly manualValueRefreshDelayMs?: number;
    // (undocumented)
    readonly mapRootReportsToEndpoint?: number;
    // (undocumented)
    readonly overrideFloatEncoding?: {
        size?: number;
        precision?: number;
    };
    // (undocumented)
    readonly preserveEndpoints?: "*" | readonly number[];
    // (undocumented)
    readonly preserveRootApplicationCCValueIDs?: boolean;
    // (undocumented)
    readonly queryOnWakeup?: readonly [
    string,
    string,
    ...(string | number | boolean | Pick<ValueID, "property" | "propertyKey">)[]
    ][];
    // (undocumented)
    readonly removeCCs?: ReadonlyMap<CommandClasses, "*" | readonly number[]>;
    // (undocumented)
    readonly skipConfigurationInfoQuery?: boolean;
    // (undocumented)
    readonly skipConfigurationNameQuery?: boolean;
    // (undocumented)
    readonly treatBasicSetAsEvent?: boolean;
    // (undocumented)
    readonly treatDestinationEndpointAsSource?: boolean;
    // (undocumented)
    readonly treatMultilevelSwitchSetAsEvent?: boolean;
}

// Warning: (ae-missing-release-tag) "ConditionalConfigOption" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConditionalConfigOption implements ConditionalItem<ConfigOption> {
    constructor(value: number, label: string, condition?: string | undefined);
    // (undocumented)
    readonly condition?: string | undefined;
    // (undocumented)
    evaluateCondition(deviceId?: DeviceID): ConfigOption | undefined;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly value: number;
}

// Warning: (ae-missing-release-tag) "ConditionalDeviceComment" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConditionalDeviceComment implements ConditionalItem<DeviceComment> {
    constructor(level: DeviceComment["level"], text: string, condition?: string | undefined);
    // (undocumented)
    readonly condition?: string | undefined;
    // (undocumented)
    evaluateCondition(deviceId?: DeviceID): DeviceComment | undefined;
    // (undocumented)
    readonly level: DeviceComment["level"];
    // (undocumented)
    readonly text: string;
}

// Warning: (ae-missing-release-tag) "ConditionalDeviceConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class ConditionalDeviceConfig {
    constructor(filename: string, isEmbedded: boolean, definition: JSONObject_2);
    // (undocumented)
    readonly associations?: ReadonlyMap<number, ConditionalAssociationConfig>;
    readonly compat?: ConditionalCompatConfig | ConditionalCompatConfig[];
    // (undocumented)
    readonly description: ConditionalPrimitive<string>;
    // (undocumented)
    readonly devices: readonly {
        productType: number;
        productId: number;
    }[];
    // (undocumented)
    readonly endpoints?: ReadonlyMap<number, ConditionalEndpointConfig>;
    // (undocumented)
    evaluate(deviceId?: DeviceID): DeviceConfig;
    // (undocumented)
    readonly filename: string;
    // (undocumented)
    readonly firmwareVersion: FirmwareVersionRange;
    // (undocumented)
    static from(filename: string, isEmbedded: boolean, options: {
        rootDir: string;
        relative?: boolean;
    }): Promise<ConditionalDeviceConfig>;
    readonly isEmbedded: boolean;
    // (undocumented)
    readonly label: ConditionalPrimitive<string>;
    // Warning: (ae-forgotten-export) The symbol "ConditionalPrimitive" needs to be exported by the entry point index.d.ts
    //
    // (undocumented)
    readonly manufacturer: ConditionalPrimitive<string>;
    // (undocumented)
    readonly manufacturerId: number;
    readonly metadata?: ConditionalDeviceMetadata;
    // (undocumented)
    readonly paramInformation?: ConditionalParamInfoMap;
    readonly proprietary?: Record<string, unknown>;
}

// Warning: (ae-missing-release-tag) "ConditionalDeviceMetadata" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConditionalDeviceMetadata implements ConditionalItem<DeviceMetadata> {
    constructor(filename: string, definition: JSONObject);
    readonly comments?: ConditionalDeviceComment | ConditionalDeviceComment[];
    // (undocumented)
    readonly condition?: string;
    // (undocumented)
    evaluateCondition(deviceId?: DeviceID): DeviceMetadata | undefined;
    readonly exclusion?: ConditionalPrimitive<string>;
    readonly inclusion?: ConditionalPrimitive<string>;
    readonly manual?: ConditionalPrimitive<string>;
    readonly reset?: ConditionalPrimitive<string>;
    readonly wakeup?: ConditionalPrimitive<string>;
}

// Warning: (ae-missing-release-tag) "ConditionalEndpointConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConditionalEndpointConfig implements ConditionalItem<EndpointConfig> {
    constructor(filename: string, index: number, definition: JSONObject);
    // (undocumented)
    readonly associations?: ReadonlyMap<number, ConditionalAssociationConfig>;
    // (undocumented)
    readonly condition?: string;
    // (undocumented)
    evaluateCondition(deviceId?: DeviceID): EndpointConfig | undefined;
    // (undocumented)
    readonly index: number;
}

// Warning: (ae-missing-release-tag) "ConditionalParamInfoMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ConditionalParamInfoMap = ReadonlyObjectKeyMap<{
    parameter: number;
    valueBitMask?: number;
}, ConditionalParamInformation[]>;

// Warning: (ae-missing-release-tag) "ConditionalParamInformation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConditionalParamInformation implements ConditionalItem<ParamInformation> {
    constructor(parent: ConditionalDeviceConfig, parameterNumber: number, valueBitMask: number | undefined, definition: JSONObject);
    // (undocumented)
    readonly allowManualEntry: boolean;
    // (undocumented)
    readonly condition?: string;
    // (undocumented)
    readonly defaultValue: number;
    // (undocumented)
    readonly description?: string;
    // (undocumented)
    evaluateCondition(deviceId?: DeviceID): ParamInformation | undefined;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly maxValue?: number;
    // (undocumented)
    readonly minValue?: number;
    // (undocumented)
    readonly options: readonly ConditionalConfigOption[];
    // (undocumented)
    readonly parameterNumber: number;
    // (undocumented)
    readonly readOnly?: true;
    // (undocumented)
    readonly unit?: string;
    // (undocumented)
    readonly unsigned?: boolean;
    // (undocumented)
    readonly valueBitMask?: number;
    // (undocumented)
    readonly valueSize: number;
    // (undocumented)
    readonly writeOnly?: true;
}

// Warning: (ae-missing-release-tag) "CONFIG_LABEL" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const CONFIG_LABEL = "CONFIG";

// Warning: (ae-missing-release-tag) "CONFIG_LOGLEVEL" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const CONFIG_LOGLEVEL = "debug";

// Warning: (ae-missing-release-tag) "ConfigLogContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ConfigLogContext = LogContext<"config">;

// Warning: (ae-missing-release-tag) "ConfigManager" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class ConfigManager {
    constructor(options?: ConfigManagerOptions);
    // (undocumented)
    get basicDeviceClasses(): BasicDeviceClassMap;
    // (undocumented)
    get configVersion(): string;
    // (undocumented)
    get genericDeviceClasses(): GenericDeviceClassMap;
    // (undocumented)
    getFulltextIndex(): FulltextDeviceConfigIndex | undefined;
    // (undocumented)
    getIndex(): DeviceConfigIndex | undefined;
    // (undocumented)
    getMeterName(meterType: number): string;
    // (undocumented)
    getNotificationName(notificationType: number): string;
    // (undocumented)
    getSensorTypeName(sensorType: number): string;
    // (undocumented)
    get indicatorProperties(): IndicatorPropertiesMap;
    // (undocumented)
    get indicators(): IndicatorMap;
    // (undocumented)
    loadAll(): Promise<void>;
    // (undocumented)
    loadDeviceClasses(): Promise<void>;
    // (undocumented)
    loadDeviceIndex(): Promise<void>;
    // (undocumented)
    loadFulltextDeviceIndex(): Promise<void>;
    // (undocumented)
    loadIndicators(): Promise<void>;
    // (undocumented)
    loadManufacturers(): Promise<void>;
    // (undocumented)
    loadMeters(): Promise<void>;
    // (undocumented)
    loadNamedScales(): Promise<void>;
    // (undocumented)
    loadNotifications(): Promise<void>;
    // (undocumented)
    loadSensorTypes(): Promise<void>;
    // (undocumented)
    lookupBasicDeviceClass(basic: number): BasicDeviceClass;
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    lookupDevice(manufacturerId: number, productType: number, productId: number, firmwareVersion?: string): Promise<DeviceConfig | undefined>;
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    lookupDevicePreserveConditions(manufacturerId: number, productType: number, productId: number, firmwareVersion?: string): Promise<ConditionalDeviceConfig | undefined>;
    // (undocumented)
    lookupGenericDeviceClass(generic: number): GenericDeviceClass;
    lookupIndicator(indicatorId: number): string | undefined;
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    lookupManufacturer(manufacturerId: number): string | undefined;
    lookupMeter(meterType: number): Meter | undefined;
    lookupMeterScale(type: number, scale: number): MeterScale;
    lookupNamedScale(name: string, scale: number): Scale;
    lookupNamedScaleGroup(name: string): ScaleGroup | undefined;
    lookupNotification(notificationType: number): Notification | undefined;
    lookupProperty(propertyId: number): IndicatorProperty | undefined;
    lookupSensorScale(sensorType: number, scale: number): Scale;
    lookupSensorType(sensorType: number): SensorType | undefined;
    // (undocumented)
    lookupSpecificDeviceClass(generic: number, specific: number): SpecificDeviceClass;
    // (undocumented)
    get manufacturers(): ManufacturersMap;
    // (undocumented)
    get meters(): MeterMap;
    // (undocumented)
    get namedScales(): NamedScalesGroupMap;
    // (undocumented)
    get notifications(): NotificationMap;
    // (undocumented)
    saveManufacturers(): Promise<void>;
    // (undocumented)
    get sensorTypes(): SensorTypeMap;
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    // Warning: (tsdoc-param-tag-missing-hyphen) The @param block should be followed by a parameter name and then a hyphen
    setManufacturer(manufacturerId: number, manufacturerName: string): void;
    // (undocumented)
    get useExternalConfig(): boolean;
}

// Warning: (ae-missing-release-tag) "ConfigManagerOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ConfigManagerOptions {
    // (undocumented)
    deviceConfigPriorityDir?: string;
    // (undocumented)
    logContainer?: ZWaveLogContainer;
}

// Warning: (ae-missing-release-tag) "ConfigOption" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ConfigOption {
    // (undocumented)
    label: string;
    // (undocumented)
    value: number;
}

// Warning: (ae-missing-release-tag) "DeviceComment" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface DeviceComment {
    // (undocumented)
    level: "info" | "warning" | "error";
    // (undocumented)
    text: string;
}

// Warning: (ae-missing-release-tag) "DeviceConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class DeviceConfig {
    constructor(filename: string,
    isEmbedded: boolean, manufacturer: string, manufacturerId: number, label: string, description: string, devices: readonly {
        productType: number;
        productId: number;
    }[], firmwareVersion: FirmwareVersionRange, endpoints?: ReadonlyMap<number, EndpointConfig> | undefined, associations?: ReadonlyMap<number, AssociationConfig> | undefined, paramInformation?: ParamInfoMap | undefined,
    proprietary?: Record<string, unknown> | undefined,
    compat?: CompatConfig | undefined,
    metadata?: DeviceMetadata | undefined);
    // (undocumented)
    readonly associations?: ReadonlyMap<number, AssociationConfig> | undefined;
    readonly compat?: CompatConfig | undefined;
    // (undocumented)
    readonly description: string;
    // (undocumented)
    readonly devices: readonly {
        productType: number;
        productId: number;
    }[];
    // (undocumented)
    readonly endpoints?: ReadonlyMap<number, EndpointConfig> | undefined;
    // (undocumented)
    readonly filename: string;
    // (undocumented)
    readonly firmwareVersion: FirmwareVersionRange;
    // (undocumented)
    static from(filename: string, isEmbedded: boolean, options: {
        rootDir: string;
        relative?: boolean;
        deviceId?: DeviceID;
    }): Promise<DeviceConfig>;
    getAssociationConfigForEndpoint(endpointIndex: number, group: number): AssociationConfig | undefined;
    readonly isEmbedded: boolean;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly manufacturer: string;
    // (undocumented)
    readonly manufacturerId: number;
    readonly metadata?: DeviceMetadata | undefined;
    // (undocumented)
    readonly paramInformation?: ParamInfoMap | undefined;
    readonly proprietary?: Record<string, unknown> | undefined;
}

// Warning: (ae-missing-release-tag) "DeviceConfigIndex" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type DeviceConfigIndex = DeviceConfigIndexEntry[];

// Warning: (ae-missing-release-tag) "DeviceConfigIndexEntry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface DeviceConfigIndexEntry {
    // (undocumented)
    filename: string;
    // (undocumented)
    firmwareVersion: FirmwareVersionRange;
    // (undocumented)
    manufacturerId: string;
    // (undocumented)
    productId: string;
    // (undocumented)
    productType: string;
    // (undocumented)
    rootDir?: string;
}

// Warning: (ae-missing-release-tag) "DeviceID" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface DeviceID {
    // (undocumented)
    firmwareVersion?: string;
    // (undocumented)
    manufacturerId: number;
    // (undocumented)
    productId: number;
    // (undocumented)
    productType: number;
}

// Warning: (ae-missing-release-tag) "DeviceMetadata" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface DeviceMetadata {
    // (undocumented)
    comments?: DeviceComment | DeviceComment[];
    // (undocumented)
    exclusion?: string;
    // (undocumented)
    inclusion?: string;
    // (undocumented)
    manual?: string;
    // (undocumented)
    reset?: string;
    // (undocumented)
    wakeup?: string;
}

// Warning: (ae-missing-release-tag) "embeddedDevicesDir" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const embeddedDevicesDir: string;

// Warning: (ae-missing-release-tag) "EndpointConfig" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type EndpointConfig = Omit<ConditionalEndpointConfig, "condition" | "evaluateCondition" | "associations"> & {
    associations?: Map<number, AssociationConfig> | undefined;
};

// Warning: (ae-missing-release-tag) "externalConfigDir" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function externalConfigDir(): string | undefined;

// Warning: (ae-missing-release-tag) "FirmwareVersionRange" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface FirmwareVersionRange {
    // (undocumented)
    max: string;
    // (undocumented)
    min: string;
}

// Warning: (ae-missing-release-tag) "FulltextDeviceConfigIndex" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type FulltextDeviceConfigIndex = FulltextDeviceConfigIndexEntry[];

// Warning: (ae-missing-release-tag) "FulltextDeviceConfigIndexEntry" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface FulltextDeviceConfigIndexEntry {
    // (undocumented)
    description: string;
    // (undocumented)
    filename: string;
    // (undocumented)
    firmwareVersion: FirmwareVersionRange;
    // (undocumented)
    label: string;
    // (undocumented)
    manufacturer: string;
    // (undocumented)
    manufacturerId: string;
    // (undocumented)
    productId: string;
    // (undocumented)
    productType: string;
    // (undocumented)
    rootDir?: string;
}

// Warning: (ae-missing-release-tag) "GenericDeviceClass" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class GenericDeviceClass {
    constructor(key: number, definition: JSONObject);
    // (undocumented)
    readonly controlledCCs: readonly CommandClasses[];
    // (undocumented)
    readonly key: number;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly requiresSecurity?: boolean;
    // (undocumented)
    readonly specific: ReadonlyMap<number, SpecificDeviceClass>;
    // (undocumented)
    readonly supportedCCs: readonly CommandClasses[];
}

// Warning: (ae-missing-release-tag) "GenericDeviceClassMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type GenericDeviceClassMap = ReadonlyMap<number, GenericDeviceClass>;

// Warning: (ae-missing-release-tag) "getDefaultGenericDeviceClass" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function getDefaultGenericDeviceClass(key: number): GenericDeviceClass;

// Warning: (ae-missing-release-tag) "getDefaultMeterScale" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function getDefaultMeterScale(scale: number): MeterScale;

// Warning: (ae-missing-release-tag) "getDefaultScale" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function getDefaultScale(scale: number): Scale;

// Warning: (ae-missing-release-tag) "getDefaultSpecificDeviceClass" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function getDefaultSpecificDeviceClass(generic: GenericDeviceClass, key: number): SpecificDeviceClass;

// Warning: (ae-missing-release-tag) "getDevicesPaths" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function getDevicesPaths(configDir: string): {
    devicesDir: string;
    indexPath: string;
};

// Warning: (ae-missing-release-tag) "IndicatorMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type IndicatorMap = ReadonlyMap<number, string>;

// Warning: (ae-missing-release-tag) "IndicatorPropertiesMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type IndicatorPropertiesMap = ReadonlyMap<number, IndicatorProperty>;

// Warning: (ae-missing-release-tag) "IndicatorProperty" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class IndicatorProperty {
    constructor(id: number, definition: JSONObject);
    // (undocumented)
    readonly description: string | undefined;
    // (undocumented)
    readonly id: number;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly max: number | undefined;
    // (undocumented)
    readonly min: number | undefined;
    // (undocumented)
    readonly readonly: boolean | undefined;
    // (undocumented)
    readonly type: ValueType | undefined;
}

// Warning: (ae-missing-release-tag) "ManufacturersMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ManufacturersMap = Map<number, string>;

// Warning: (ae-missing-release-tag) "Meter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class Meter {
    constructor(id: number, definition: JSONObject);
    // (undocumented)
    readonly id: number;
    // (undocumented)
    readonly name: string;
    // (undocumented)
    readonly scales: ReadonlyMap<number, MeterScale>;
}

// Warning: (ae-missing-release-tag) "MeterMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type MeterMap = ReadonlyMap<number, Meter>;

// Warning: (ae-missing-release-tag) "MeterScale" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class MeterScale {
    constructor(key: number, definition: string);
    // (undocumented)
    readonly key: number;
    // (undocumented)
    readonly label: string;
}

// Warning: (ae-missing-release-tag) "NamedScalesGroupMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type NamedScalesGroupMap = ReadonlyMap<string, ScaleGroup>;

// Warning: (ae-missing-release-tag) "Notification" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class Notification {
    constructor(id: number, definition: JSONObject);
    // (undocumented)
    readonly events: ReadonlyMap<number, NotificationEvent>;
    // (undocumented)
    readonly id: number;
    // (undocumented)
    lookupValue(value: number): NotificationValueDefinition | undefined;
    // (undocumented)
    readonly name: string;
    // (undocumented)
    readonly variables: readonly NotificationVariable[];
}

// Warning: (ae-missing-release-tag) "NotificationEvent" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class NotificationEvent {
    constructor(id: number, definition: JSONObject);
    // (undocumented)
    readonly description?: string;
    // (undocumented)
    readonly id: number;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly parameter?: NotificationParameter;
}

// Warning: (ae-missing-release-tag) "NotificationMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type NotificationMap = ReadonlyMap<number, Notification>;

// Warning: (ae-missing-release-tag) "NotificationParameter" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class NotificationParameter {
    constructor(definition: JSONObject);
}

// Warning: (ae-missing-release-tag) "NotificationParameterWithCommandClass" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class NotificationParameterWithCommandClass {
    constructor(_definition: JSONObject);
}

// Warning: (ae-missing-release-tag) "NotificationParameterWithDuration" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class NotificationParameterWithDuration {
    constructor(_definition: JSONObject);
}

// Warning: (ae-missing-release-tag) "NotificationParameterWithValue" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class NotificationParameterWithValue {
    constructor(definition: JSONObject);
    // (undocumented)
    readonly propertyName: string;
}

// Warning: (ae-missing-release-tag) "NotificationState" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class NotificationState {
    constructor(id: number, definition: JSONObject);
    // (undocumented)
    readonly description?: string;
    // (undocumented)
    readonly id: number;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly parameter?: NotificationParameter;
}

// Warning: (ae-forgotten-export) The symbol "NotificationStateDefinition" needs to be exported by the entry point index.d.ts
// Warning: (ae-forgotten-export) The symbol "NotificationEventDefinition" needs to be exported by the entry point index.d.ts
// Warning: (ae-missing-release-tag) "NotificationValueDefinition" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type NotificationValueDefinition = (NotificationStateDefinition | NotificationEventDefinition) & {
    description?: string;
    label: string;
    parameter?: NotificationParameter;
};

// Warning: (ae-missing-release-tag) "NotificationVariable" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class NotificationVariable {
    constructor(definition: JSONObject);
    readonly idle: boolean;
    // (undocumented)
    readonly name: string;
    // (undocumented)
    readonly states: ReadonlyMap<number, NotificationState>;
}

// Warning: (ae-missing-release-tag) "ParamInfoMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ParamInfoMap = ReadonlyObjectKeyMap<{
    parameter: number;
    valueBitMask?: number;
}, ParamInformation>;

// Warning: (ae-missing-release-tag) "ParamInformation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ParamInformation = Omit<ConditionalParamInformation, "condition" | "evaluateCondition" | "options" | "minValue" | "maxValue"> & {
    options: readonly ConfigOption[];
    minValue: NonNullable<ConditionalParamInformation["minValue"]>;
    maxValue: NonNullable<ConditionalParamInformation["maxValue"]>;
};

// Warning: (ae-missing-release-tag) "saveManufacturersInternal" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function saveManufacturersInternal(manufacturers: ManufacturersMap): Promise<void>;

// Warning: (ae-missing-release-tag) "Scale" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class Scale {
    constructor(key: number, definition: JSONObject);
    // (undocumented)
    readonly description: string | undefined;
    // (undocumented)
    readonly key: number;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly unit: string | undefined;
}

// Warning: (ae-missing-release-tag) "ScaleGroup" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ScaleGroup = ReadonlyMap<number, Scale> & {
    readonly name?: string;
};

// Warning: (ae-missing-release-tag) "SensorType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class SensorType {
    constructor(manager: ConfigManager, key: number, definition: JSONObject);
    // (undocumented)
    readonly key: number;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly scales: ScaleGroup;
}

// Warning: (ae-missing-release-tag) "SensorTypeMap" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type SensorTypeMap = ReadonlyMap<number, SensorType>;

// Warning: (ae-missing-release-tag) "SpecificDeviceClass" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class SpecificDeviceClass {
    constructor(key: number, definition: JSONObject, generic: GenericDeviceClass);
    // (undocumented)
    readonly controlledCCs: readonly CommandClasses[];
    // (undocumented)
    readonly key: number;
    // (undocumented)
    readonly label: string;
    // (undocumented)
    readonly requiresSecurity?: boolean;
    // (undocumented)
    readonly supportedCCs: readonly CommandClasses[];
    // (undocumented)
    readonly zwavePlusDeviceType?: string;
}

// (No @packageDocumentation comment for this package)

```
