import { SystemAccessPoint } from "freeathome-local-api-client";
import { API, Characteristic, DynamicPlatformPlugin, Logger, PlatformAccessory, PlatformConfig, Service } from "homebridge";
import { FreeAtHomeContext } from "./freeAtHomeContext.js";
/** The free&#64;home Homebridge platform. */
export declare class FreeAtHomeHomebridgePlatform implements DynamicPlatformPlugin {
    readonly log: Logger;
    readonly config: PlatformConfig;
    readonly api: API;
    /** The service reference */
    readonly Service: typeof Service;
    /** The characteristic reference */
    readonly Characteristic: typeof Characteristic;
    /** The list of restored cached accessories */
    readonly accessories: Array<PlatformAccessory<FreeAtHomeContext>>;
    private readonly removedAccessories;
    /** The system access point */
    readonly sysap: SystemAccessPoint;
    private readonly fahAccessories;
    private readonly fahLogger;
    private readonly webSocketSubscription;
    private wsConnectionAttempt;
    private readonly maxWsRetryCount;
    private get experimentalMode();
    /**
     * Constructs a new free&#64;home Homebridge platform instance.
     * @param log {Logger} The logger instance.
     * @param config {PlatformConfig} The platform configuration.
     * @param api {API} The API instance.
     */
    constructor(log: Logger, config: PlatformConfig, api: API);
    /**
     * Configures the specified accessory.
     * @param accessory The accessory to be configured.
     * @description
     * 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;
    /** Discovers the supported free&#64;home devices from the System Access Point. */
    private discoverDevices;
    private isViableChannel;
    private createAccessory;
    private isIgnoredChannel;
    private processWebSocketMesage;
    private resolveAccessoryType;
}
//# sourceMappingURL=platform.d.ts.map