import type { API, DynamicPlatformPlugin, Logging, PlatformAccessory, PlatformConfig } from 'homebridge';
import type { DeviceDefinition, Response } from 'lutron-leap';
import type TypedEmitter from 'typed-emitter';
import { SmartBridge } from 'lutron-leap';
import type { ButtonPressLogLevel, LogLevelOption } from './Logger.js';
interface PlatformEvents {
    [event: string]: (...args: any[]) => void;
    unsolicited: (response: Response) => void;
}
export interface GlobalOptions {
    filterPico: boolean;
    excludedDeviceTypes: string[];
    clickSpeedLong: 'quick' | 'default' | 'relaxed' | 'disabled';
    clickSpeedDouble: 'quick' | 'default' | 'relaxed' | 'disabled';
    logSSLKeyDangerous: boolean;
    logLevel: LogLevelOption;
    buttonPressLogging: ButtonPressLogLevel;
}
interface BridgeAuthEntry {
    bridgeid: string;
    ca: string;
    key: string;
    cert: string;
}
export declare enum DeviceWireResultType {
    Success = 0,
    Skipped = 1,
    Error = 2
}
export type DeviceWireResult = WireSuccess | DeviceSkipped | WireError;
export interface WireSuccess {
    kind: DeviceWireResultType.Success;
    name: string;
}
export interface DeviceSkipped {
    kind: DeviceWireResultType.Skipped;
    reason: string;
}
export interface WireError {
    kind: DeviceWireResultType.Error;
    reason: string;
}
declare const LutronCasetaLeap_base: new () => TypedEmitter<PlatformEvents>;
export declare class LutronCasetaLeap extends LutronCasetaLeap_base implements DynamicPlatformPlugin {
    readonly config: PlatformConfig;
    readonly api: API;
    protected readonly accessories: Map<string, PlatformAccessory>;
    private finder;
    private options;
    private secrets;
    private bridgeMgr;
    readonly log: Logging;
    constructor(log: Logging, config: PlatformConfig, api: API);
    optionsFromConfig(config: PlatformConfig): GlobalOptions;
    private isDeviceTypeExcluded;
    secretsFromConfig(config: PlatformConfig): Map<string, BridgeAuthEntry>;
    configureAccessory(accessory: PlatformAccessory): void;
    private handleBridgeDiscovery;
    private getDeviceInfoWithRetry;
    private processAllDevices;
    processDevice(bridge: SmartBridge, d: DeviceDefinition): Promise<string>;
    wireAccessory(accessory: PlatformAccessory, bridge: SmartBridge, device: DeviceDefinition): Promise<DeviceWireResult>;
    handleUnsolicitedMessage(bridgeID: string, response: Response): void;
}
export {};
//# sourceMappingURL=Platform.HAP.d.ts.map