import { Characteristic, Service } from 'homebridge';
import { BasicLogger } from '../logger';
import { ExposesEntry, ExposesEntryWithProperty } from '../z2mModels';
import { BasicAccessory, ServiceCreator, ServiceHandler } from './interfaces';
import { CharacteristicMonitor } from './monitor';
interface ElectricalExposes {
    power?: ExposesEntryWithProperty;
    voltage?: ExposesEntryWithProperty;
    current?: ExposesEntryWithProperty;
    energy?: ExposesEntryWithProperty;
}
export declare class ElectricalSensorHandler implements ServiceHandler {
    protected log: BasicLogger;
    protected monitors: CharacteristicMonitor[];
    protected service: Service;
    protected serviceName: string;
    identifier: string;
    private readonly powerExpose?;
    private readonly voltageExpose?;
    private readonly currentExpose?;
    private readonly energyExpose?;
    constructor(accessory: BasicAccessory, electricalExposes: ElectricalExposes, endpoint: string | undefined);
    get mainCharacteristics(): (Characteristic | undefined)[];
    get getableKeys(): string[];
    updateState(state: Record<string, unknown>): void;
    static generateIdentifier(endpoint: string | undefined): string;
}
export declare class ProducedEnergySensorHandler implements ServiceHandler {
    protected log: BasicLogger;
    protected monitors: CharacteristicMonitor[];
    protected service: Service;
    protected serviceName: string;
    identifier: string;
    private static readonly SUBTYPE;
    private readonly producedEnergyExpose;
    constructor(accessory: BasicAccessory, producedEnergyExpose: ExposesEntryWithProperty, endpoint: string | undefined);
    get mainCharacteristics(): (Characteristic | undefined)[];
    get getableKeys(): string[];
    updateState(state: Record<string, unknown>): void;
    static generateIdentifier(endpoint: string | undefined): string;
}
export declare class ElectricalSensorCreator implements ServiceCreator {
    createServicesFromExposes(accessory: BasicAccessory, exposes: ExposesEntry[]): void;
    private createElectricalSensorHandler;
    private createProducedEnergySensorHandler;
}
export {};
//# sourceMappingURL=electrical.d.ts.map