import type { PlatformAccessory } from "homebridge";
import { AccessApi, type AccessControllerConfig, type AccessDeviceConfig } from "unifi-access";
import { type HomebridgePluginLogging, MqttClient, type Nullable } from "homebridge-plugin-utils";
import type { AccessControllerOptions } from "./access-options.js";
import type { AccessDevice } from "./access-device.js";
import { AccessEvents } from "./access-events.js";
import type { AccessPlatform } from "./access-platform.js";
export declare class AccessController {
    private api;
    config: AccessControllerOptions;
    private deviceRemovalQueue;
    readonly configuredDevices: {
        [index: string]: AccessDevice | undefined;
    };
    events: AccessEvents;
    private hap;
    logApiErrors: boolean;
    readonly log: HomebridgePluginLogging;
    mqtt: MqttClient | null;
    private name;
    platform: AccessPlatform;
    uda: AccessControllerConfig;
    udaApi: AccessApi;
    private unsupportedDevices;
    constructor(platform: AccessPlatform, accessOptions: AccessControllerOptions);
    private bootstrapController;
    login(): Promise<void>;
    private configureController;
    private addAccessDevice;
    private discoverDevices;
    addHomeKitDevice(device: AccessDeviceConfig): boolean;
    private discoverAndSyncAccessories;
    private cleanupDevices;
    private resolveDeviceName;
    private resolveDeviceModel;
    removeHomeKitDevice(accessory: PlatformAccessory, noRemovalDelay?: boolean): void;
    resetControllerConnection(): Promise<void>;
    deviceLookup(deviceId: string): AccessDevice | null;
    getFeatureFloat(option: string): Nullable<number | undefined>;
    getFeatureNumber(option: string): Nullable<number | undefined>;
    hasFeature(option: string, device?: AccessControllerConfig | AccessDeviceConfig): boolean;
    get id(): string | undefined;
}
