import { EventEmitter } from 'node:events';
import { CharacteristicType, ResourceRequestType, ServiceType } from './interfaces.js';
import { HapMonitor } from './monitor.js';
export * from './interfaces.js';
export interface Config {
    debug?: boolean;
    instanceBlacklist?: string[];
    discoveryTimeout?: number;
    autoStartDiscovery?: boolean;
}
export declare class HapClient extends EventEmitter {
    private bonjour;
    private browser;
    private discoveryInProgress;
    private readonly defaultDiscoveryTimeout;
    private readonly defaultAutoStartDiscovery;
    private readonly logger;
    private readonly pin;
    private readonly debugEnabled;
    private config;
    private instances;
    private hiddenServices;
    private hiddenCharacteristics;
    private resetInstancePoolTimeout;
    private startDiscoveryTimeout;
    private hapMonitor;
    constructor(opts: {
        pin: string;
        logger?: any;
        config: any;
    });
    private logMessage;
    debug(msg: string): void;
    info(msg: string): void;
    warn(msg: string): void;
    error(msg: string): void;
    resetInstancePool(): void;
    refreshInstances(): void;
    startDiscovery(discoveryTimeout?: number): void;
    stopDiscovery(): void;
    private checkInstanceConnection;
    private getAccessories;
    monitorCharacteristics(services?: ServiceType[]): Promise<HapMonitor>;
    getAllServices(): Promise<ServiceType[]>;
    getService(iid: number): Promise<ServiceType>;
    getServiceByName(serviceName: string): Promise<ServiceType>;
    refreshServiceCharacteristics(service: ServiceType): Promise<ServiceType>;
    getCharacteristic(service: ServiceType, iid: number): Promise<CharacteristicType>;
    setCharacteristicByType(service: ServiceType, type: string, value: number | string | boolean): Promise<CharacteristicType>;
    setCharacteristic(service: ServiceType, iid: number, value: number | string | boolean): Promise<CharacteristicType>;
    setCharacteristicsByTypes(service: ServiceType, payload: Record<string, string | number | boolean>): Promise<ServiceType>;
    setCharacteristics(service: ServiceType, characteristics: {
        aid: number;
        iid: number;
        value: string | number | boolean;
    }[]): Promise<ServiceType>;
    getResource(service: ServiceType, body: ResourceRequestType): Promise<any>;
    private humanizeString;
    destroy(): void;
}
