import { Characteristic, CharacteristicValue, Logger, PlatformAccessory, Service, WithUUID } from 'homebridge';
import { SmartThingsPlatform } from './smartThingsPlatform.js';
import { SmartThingsClient, Device, Component, CapabilityStatus, Capability } from '@smartthings/core-sdk';
/**
 * Class implements a base class for SmartThings accessories.
 */
export declare abstract class SmartThingsAccessory {
    protected readonly device: Device;
    protected readonly component: Component;
    protected readonly client: SmartThingsClient;
    protected readonly platform: SmartThingsPlatform;
    protected readonly accessory: PlatformAccessory;
    private readonly log;
    protected constructor(device: Device, component: Component, client: SmartThingsClient, platform: SmartThingsPlatform, accessory: PlatformAccessory, log: Logger);
    /**
     * Executes the command of the capability passed in using the arguments passed in.
     * Handles error values returned by api.
     *
     * @param capability the capability identifier
     * @param command the command identifier
     * @param args the command arguments
     */
    protected executeCommand(capability: string, command: string, args?: (string | number | object)[]): Promise<void>;
    /**
     * Returns the status of the capability passed in.
     * Handles error values returned by api.
     *
     * @param capability the capability identifier
     * @param log flag to turn logging on/off
     * @returns the capability status or undefined for errors returned by API
     */
    protected getCapabilityStatus(capability: string, log?: boolean): Promise<CapabilityStatus | null>;
    /**
     * Starts polling the status of the capability passed in using the parameters passed in.
     * Must only be used on capabilities that are not updated cyclical automatically.
     *
     * @param capability the capability that will be updated
     * @param service the service containing the characteristic
     * @param characteristic the characteristic that will be updated
     * @param getter the function to be used to get the new value
     * @param interval the interval in milliseconds (if set to undefined polling will not be started)
     */
    protected startStatusPolling<T extends WithUUID<new () => Characteristic>>(capability: string, service: Service, characteristic: T, getter: () => Promise<CharacteristicValue>, interval: number | undefined): void;
    protected logCapabilityRegistration(capability: Capability): void;
    protected logCapabilityState(capability: Capability): void;
    protected logInfo(message: string, ...parameters: unknown[]): void;
    protected logWarn(message: string, ...parameters: unknown[]): void;
    protected logError(message: string, ...parameters: unknown[]): void;
    protected logDebug(message: string, ...parameters: unknown[]): void;
}
