import { HAPNodeJSClient } from 'hap-node-client';
import { Subject } from 'rxjs';
import { PluginConfig, HapInstance, HapService, Instance } from './interfaces';
import { Log } from './logger';
import { Door } from './types/door';
import { Fan } from './types/fan';
import { GarageDoorOpener } from './types/garage-door-opener';
import { Lightbulb } from './types/lightbulb';
import { LockMechanism } from './types/lock-mechanism';
import { Switch } from './types/switch';
import { Window } from './types/window';
import { WindowCovering } from './types/window-covering';
import { Thermostat } from './types/thermostat';
export declare class Hap {
    socket: any;
    log: Log;
    pin: string;
    config: PluginConfig;
    homebridge: HAPNodeJSClient;
    services: HapService[];
    ready: boolean;
    types: {
        Door: Door;
        Fan: Fan;
        GarageDoorOpener: GarageDoorOpener;
        Lightbulb: Lightbulb;
        LockMechanism: LockMechanism;
        Outlet: Switch;
        Switch: Switch;
        Thermostat: Thermostat;
        Window: Window;
        WindowCovering: WindowCovering;
    };
    evInstances: Instance[];
    evServices: HapService[];
    reportStateSubject: Subject<unknown>;
    pendingStateReport: any[];
    evTypes: string[];
    instanceBlacklist: Array<string>;
    accessoryFilter: Array<string>;
    deviceNameMap: Array<{
        replace: string;
        with: string;
    }>;
    constructor(socket: any, log: any, pin: string, config: PluginConfig);
    discover(): Promise<void>;
    start(): Promise<void>;
    buildSyncResponse(): Promise<any[]>;
    requestSync(): Promise<void>;
    query(devices: any): Promise<{}>;
    execute(commands: any): Promise<any[]>;
    getStatus(service: any): Promise<void>;
    getAccessories(): Promise<unknown>;
    parseAccessories(instance: HapInstance): Promise<void>;
    registerCharacteristicEventHandlers(): Promise<void>;
    handleHapEvent(events: any): Promise<void>;
    processPendingStateReports(pendingStateReport: any): Promise<void>;
    sendFullStateReport(): Promise<void>;
    sendStateReport(states: any, requestId?: any): Promise<void>;
}
