import type { API, Characteristic, DynamicPlatformPlugin, Logging, PlatformAccessory, PlatformConfig, Service, WithUUID } from 'homebridge';
import { EventEmitter } from 'node:events';
import DeviceManager from './devices/deviceManager.js';
import { TaskQueue } from './taskQueue.js';
import type { KasaPythonConfig } from './config.js';
export type KasaPythonAccessoryContext = {
    deviceId?: string;
    lastSeen?: Date;
    offline?: boolean;
};
export default class KasaPythonPlatform implements DynamicPlatformPlugin {
    readonly log: Logging;
    readonly api: API;
    readonly Characteristic: typeof Characteristic;
    readonly configuredAccessories: Map<string, PlatformAccessory<KasaPythonAccessoryContext>>;
    readonly offlineAccessories: Map<string, PlatformAccessory<KasaPythonAccessoryContext>>;
    readonly Service: typeof Service;
    readonly storagePath: string;
    readonly venvPythonExecutable: string;
    config: KasaPythonConfig;
    deviceManager: DeviceManager | undefined;
    isShuttingDown: boolean;
    periodicDeviceDiscovering: boolean;
    periodicDeviceDiscoveryEmitter: EventEmitter;
    port: number;
    taskQueue: TaskQueue;
    private readonly homekitDevicesById;
    private hideHomeKitMatter;
    private isUpgrade;
    private kasaProcess;
    private platformInitialization;
    constructor(log: Logging, config: PlatformConfig, api: API);
    private createHomeKitDevice;
    initializePlatform(): Promise<void>;
    private logInitializationDetails;
    private verifyEnvironment;
    private didFinishLaunching;
    private periodicDeviceDiscovery;
    private findDiscoveredDevice;
    private updateAccessoryDeviceStatus;
    private updateOrCreateHomeKitDevice;
    private updateAccessoryStatus;
    private handleOfflineAccessory;
    private checkPython;
    private startKasaApi;
    private discoverDevices;
    private stopKasaApi;
    lsc(serviceOrCharacteristic: Service | Characteristic | {
        UUID: string;
    }, characteristic?: Characteristic | {
        UUID: string;
    }): string;
    getServiceName(service: {
        UUID: string;
    }): string | undefined;
    getCharacteristicName(characteristic: WithUUID<{
        name?: string | null;
        displayName?: string | null;
    }>): string | undefined;
    registerPlatformAccessory(platformAccessory: PlatformAccessory<KasaPythonAccessoryContext>): void;
    configureAccessory(platformAccessory: PlatformAccessory<KasaPythonAccessoryContext>): void;
    private foundDevice;
}
