import type { API, CharacteristicValue, HAP, Logging, PlatformAccessory, Service } from 'homebridge';
import type { AugustPlatform } from '../platform.js';
import type { AugustPlatformConfig, device, devicesConfig } from '../settings.js';
export declare abstract class deviceBase {
    protected readonly platform: AugustPlatform;
    protected accessory: PlatformAccessory;
    protected device: device & devicesConfig;
    readonly api: API;
    readonly log: Logging;
    readonly config: AugustPlatformConfig;
    protected readonly hap: HAP;
    protected deviceLogging: string;
    protected deviceRefreshRate: number;
    protected deviceUpdateRate: number;
    protected devicePushRate: number;
    protected deviceFirmwareVersion: string;
    constructor(platform: AugustPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
    getDeviceLogSettings(device: devicesConfig): Promise<void>;
    getDeviceRateSettings(device: devicesConfig): Promise<void>;
    getDeviceConfigSettings(device: devicesConfig): Promise<void>;
    getDeviceContext(accessory: PlatformAccessory, device: devicesConfig): Promise<void>;
    /**
     * Updates the value of a HomeKit characteristic and logs the change.
     *
     * This function updates the specified characteristic of a given service with a new value.
     * It also logs the updated value and the context before and after the update for debugging purposes.
     *
     * @param Service - The HomeKit service that contains the characteristic to be updated.
     * @param ServiceName - The name of the service being updated.
     * @param Characteristic - The specific characteristic to be updated.
     * @param CharacteristicValue - The new value to set for the characteristic. If undefined, the function logs the value and returns without updating.
     * @param CharacteristicName - The name of the characteristic being updated, used for logging purposes.
     * @param Value - The value to compare against to determine the status.
     * @param StatusMatch - The status message to log if the characteristic value matches the provided value.
     * @param StatusDoesNotMatch - The status message to log if the chxaracteristic value does not match the provided value.
     * @return void
     */
    updateCharacteristic(Service: Service, ServiceName: string, Characteristic: any, CharacteristicValue: CharacteristicValue, CharacteristicName: string, Value?: CharacteristicValue, StatusMatch?: string, StatusDoesNotMatch?: string): Promise<void>;
    statusCode(action: string, error: {
        message: string;
    }): Promise<void>;
    /**
     * Logging for Device
     */
    infoLog(...log: any[]): Promise<void>;
    successLog(...log: any[]): Promise<void>;
    debugSuccessLog(...log: any[]): Promise<void>;
    warnLog(...log: any[]): Promise<void>;
    debugWarnLog(...log: any[]): Promise<void>;
    errorLog(...log: any[]): Promise<void>;
    debugErrorLog(...log: any[]): Promise<void>;
    debugLog(...log: any[]): Promise<void>;
    loggingIsDebug(): Promise<boolean>;
    enablingDeviceLogging(): Promise<boolean>;
}
//# sourceMappingURL=device.d.ts.map