import { type EventEmitter } from 'node:events'; import { BDObject } from '../generic/object.js'; import { BDArrayProperty, BDPolledArrayProperty, BDPolledSingletProperty, BDSingletProperty } from '../../properties/index.js'; import { ApplicationTag, Segmentation, DeviceStatus } from '@bacnet-js/client'; import { type BDDeviceOpts, type BDDeviceEvents } from './types.js'; import { BDStructuredView } from '../structuredview.js'; /** * Implements a BACnet Device object * * The Device object is a specialized BACnet object that represents the BACnet device itself. * It serves as a container for all other BACnet objects and provides device-level properties * and services. Each BACnet node hosts exactly one Device object. * * According to the BACnet specification, the Device object includes standard properties: * - Object_Identifier (automatically added by BACnetObject) * - Object_Name (automatically added by BACnetObject) * - Object_Type (automatically added by BACnetObject) * - System_Status * - Vendor_Name * - Vendor_Identifier * - Model_Name * - Firmware_Revision * - Application_Software_Version * - Protocol_Version * - Protocol_Revision * - Protocol_Services_Supported * - Protocol_Object_Types_Supported * - Object_List * - And other properties related to device capabilities and configuration * * @extends BDObject */ export declare class BDDevice extends BDObject implements EventEmitter { #private; readonly objectList: BDPolledArrayProperty; readonly structuredObjectList: BDPolledArrayProperty; readonly protocolVersion: BDSingletProperty; readonly protocolRevision: BDSingletProperty; readonly protocolServicesSupported: BDSingletProperty; readonly protocolObjectTypesSupported: BDSingletProperty; readonly activeCovSubscriptions: BDPolledArrayProperty; readonly vendorIdentifier: BDSingletProperty; readonly vendorName: BDSingletProperty; readonly modelName: BDSingletProperty; readonly firmwareRevision: BDSingletProperty; readonly applicationSoftwareVersion: BDSingletProperty; readonly databaseRevision: BDSingletProperty; readonly deviceAddressBinding: BDArrayProperty; readonly location: BDSingletProperty; readonly serialNumber: BDSingletProperty; readonly maxApduLengthAccepted: BDSingletProperty; readonly apduTimeout: BDSingletProperty; readonly numberOfApduRetries: BDSingletProperty; readonly apduSegmentTimeout: BDSingletProperty; readonly segmentationSupported: BDSingletProperty; readonly maxSegmentsAccepted: BDSingletProperty; readonly utcOffset: BDPolledSingletProperty; readonly localDate: BDPolledSingletProperty; readonly localTime: BDPolledSingletProperty; readonly daylightSavingsStatus: BDPolledSingletProperty; readonly systemStatus: BDSingletProperty; /** * Creates a new BACnet Device object * * This constructor initializes a Device object with all required properties * according to the BACnet specification, including support for basic BACnet * services and object types. * * @param instance - Device instance number (0-4194303). Must be unique on the BACnet network. * @param opts - Configuration options for this device * * @see {@link https://kargs.net/BACnet/Foundations2012-BACnetDeviceID.pdf} */ constructor(instance: number, opts: BDDeviceOpts); /** * Adds a BACnet object to this device * * This method registers a new BACnet object with the device and adds it to the * device's object list. The object must have a unique identifier (type and instance). * * @param object - The BACnet object to add to this device * @returns The added object * @throws Error if an object with the same identifier already exists * @typeParam T - The specific BACnet object type */ addObject(object: T): T; /** * Adds a subordinate BACnet object to this device * * This method registers a new BACnet object with the device and adds it to * the device's object list, just as {@link BDDevice.addObject}. Additionally, * however, this method also registers the object as a subordinate object of * this device, adding it to the device's structured representation. The * subordinate object *must* be a Structured View object. * * @param subordinate - The Structured View object to add as a new child of * this Device object */ addSubordinate(subordinate: BDStructuredView): BDStructuredView; destroy(): void; } //# sourceMappingURL=device.d.ts.map