import { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from 'homebridge';
import { ConfigDevice } from './types.js';
/**
 * HomebridgePlatform
 * This class is the main constructor for your plugin, this is where you should
 * parse the user config and discover/register accessories with Homebridge.
 */
export declare class BlaQHomebridgePluginPlatform implements DynamicPlatformPlugin {
    readonly logger: Logger;
    readonly config: PlatformConfig;
    readonly api: API;
    readonly service: typeof Service;
    readonly characteristic: typeof Characteristic;
    readonly accessories: PlatformAccessory[];
    private hubs;
    private hubAccessories;
    private bonjourInstance;
    constructor(logger: Logger, config: PlatformConfig, api: API);
    /**
     * This function is invoked when homebridge restores cached accessories from disk at startup.
     * It should be used to setup event handlers for characteristics and update respective values.
     */
    configureAccessory(accessory: PlatformAccessory): void;
    getDeviceKey(device: ConfigDevice): string;
    possiblyRegisterNewDevice(device: ConfigDevice): void;
    possiblyMergeWithManualConfigDevice(deviceToMerge: ConfigDevice): {
        displayName: string;
        host: string;
        port: number;
        mac?: string;
        username?: string;
        password?: string;
    };
    searchBonjour(): void;
    /**
     * For each configured device, launch a Discovery probe to fetch its metadata.
     * Once that probe completes, we'll register the relevant accessory.
     */
    discoverDevices(): void;
    registerDiscoveredDevice(configDevice: ConfigDevice, model: string, serialnumber: string): {
        platform: BlaQHomebridgePluginPlatform;
        accessory: PlatformAccessory;
    };
}
