///
import { PlatformAccessory, Characteristic, CharacteristicValue, Service, WithUUID, Logger, API } from 'homebridge';
import axios = require('axios');
import { IKHomeBridgeHomebridgePlatform } from './platform';
import { ShortEvent } from './webhook/subscriptionHandler';
import { Command } from './services/smartThingsCommand';
/**
* Platform Accessory
* An instance of this class is created for each accessory your platform registers
* Each accessory may expose multiple services of different service types.
*/
export declare class MultiServiceAccessory {
components: {
componentId: string;
capabilities: string[];
status: Record;
}[];
/**
* These are just used to create a working example
* You should implement your own code to track the state of your accessory
*/
private services;
private static capabilityMap;
private static comboCapabilityMap;
protected accessory: PlatformAccessory;
protected platform: IKHomeBridgeHomebridgePlatform;
readonly name: string;
protected characteristic: typeof Characteristic;
protected log: Logger;
protected baseURL: string;
protected key: string;
protected axInstance: axios.AxiosInstance;
protected commandURL: string;
protected statusURL: string;
protected healthURL: string;
protected api: API;
protected online: boolean;
protected deviceStatusTimestamp: number;
protected failureCount: number;
protected giveUpTime: number;
protected commandInProgress: boolean;
protected lastCommandCompleted: number;
protected statusQueryInProgress: boolean;
protected lastStatusResult: boolean;
get id(): string;
constructor(platform: IKHomeBridgeHomebridgePlatform, accessory: PlatformAccessory);
private registerServiceIfMatchesCapabilities;
addComponent(componentId: string, capabilities: string[]): void;
isOnline(): boolean;
static capabilitySupported(capability: string): boolean;
refreshStatus(): Promise;
forceNextStatusRefresh(): void;
startPollingState(pollSeconds: number, getValue: () => Promise, service: Service, chracteristic: WithUUID Characteristic>, targetStateCharacteristic?: WithUUID Characteristic>, getTargetState?: () => Promise): NodeJS.Timer | void;
sendCommand(capability: string, command: string, args?: unknown[]): Promise;
sendCommands(commands: Command[]): Promise;
private waitFor;
processEvent(event: ShortEvent): void;
}
//# sourceMappingURL=multiServiceAccessory.d.ts.map