import type { PlatformAccessory } from "homebridge"; import { type HomebridgePluginLogging, MqttClient, type Nullable } from "homebridge-plugin-utils"; import { type ProtectDevice, ProtectNvrSystemInfo } from "./devices/index.js"; import type { ProtectDeviceConfigTypes, ProtectDevices } from "./protect-types.js"; import { ProtectApi } from "unifi-protect"; import { ProtectEvents } from "./protect-events.js"; import type { ProtectNvrConfig } from "unifi-protect"; import type { ProtectNvrOptions } from "./protect-options.js"; import type { ProtectPlatform } from "./protect-platform.js"; export declare class ProtectNvr { private api; private bootstrapRefreshTimer; readonly config: ProtectNvrOptions; readonly configuredDevices: Map; private deviceRemovalQueue; readonly events: ProtectEvents; private featureLog; private hap; private liveviews; readonly log: HomebridgePluginLogging; logApiErrors: boolean; mqtt: Nullable; private name; private nvrRebootTimer; readonly platform: ProtectPlatform; systemInfo: Nullable; ufp: ProtectNvrConfig; readonly ufpApi: ProtectApi; private unsupportedDevices; constructor(platform: ProtectPlatform, nvrOptions: ProtectNvrOptions); private bootstrapNvr; private connect; private disconnect; login(): Promise; private configureNvr; private configureScheduledReboot; private executeScheduledReboot; private syncDevices; reconfigureAsDoorbell(protectDevice: ProtectDevice): void; private addProtectDevice; addHomeKitDevice(device: ProtectDeviceConfigTypes): boolean; private discoverAndSyncAccessories; private cleanupDevices; removeHomeKitDevice(accessory: PlatformAccessory, noRemovalDelay?: boolean): void; private servePlaylist; private get devicelist(); private devices; getDeviceById(deviceId: string): Nullable; getFeatureFloat(option: string): Nullable; getFeatureNumber(option: string): Nullable; isNvrFeature(option: string, device?: ProtectDeviceConfigTypes | ProtectNvrConfig): boolean; hasFeature(option: string, device?: ProtectDeviceConfigTypes | ProtectNvrConfig): boolean; logFeature(option: string, message: string): void; }