/// <reference types="node" />
import i2c from "i2c-bus";
import * as winston from "winston";
import { II2CCommand } from "./II2CCommand";
import { II2CConfiguration } from "./II2CConfiguration";
import { EventEmitter } from "events";
import { ISensor } from "../ISensor";
import { HomieDevice } from "@chrispyduck/homie-device";
export declare abstract class I2CDevice<TResult extends Record<never, any>> extends EventEmitter implements ISensor<TResult> {
    constructor(deviceType: string, configuration?: II2CConfiguration);
    abstract register(device: HomieDevice): void;
    abstract read(): Promise<TResult>;
    protected readonly configuration: II2CConfiguration;
    protected readonly logger: winston.Logger;
    private bus$?;
    protected get bus(): i2c.PromisifiedBus;
    init: () => Promise<void>;
    protected abstract onInit(): Promise<void>;
    protected delay: (ms: number) => Promise<void>;
    protected sendCommand: (cmd: II2CCommand) => Promise<void>;
}
//# sourceMappingURL=I2CDevice.d.ts.map