import * as i2c from 'i2c-bus';
export declare abstract class BaseDevice {
    bus: i2c.PromisifiedBus;
    debug: Console;
    address: number;
    readByte(adrs: number): Promise<number>;
    readBytes(adrs: number, length: number): Promise<Buffer>;
    writeByte(adrs: number, value: number): Promise<void>;
    readBit(adrs: number, bit: number): Promise<number>;
    bitMask(bit: number, length: number): number;
    vectorToYesNo(v: number[]): string;
    /**
     * Write a sequence of bits.  Note, this will do a read to get the existing value, then a write.
     * @param  {number}   adrs     The address of the byte to write.
     * @param  {number}   bit      The nth bit to start at.
     * @param  {number}   length   The number of bits to change.
     * @param  {number}   value    The values to change.
     */
    writeBits(adrs: number, bit: number, length: number, value: number): Promise<void>;
    /**
     * Write one bit.  Note, this will do a read to get the existing value, then a write.
     * @param  {number}   adrs     The address of the byte to write.
     * @param  {number}   bit      The nth bit.
     * @param  {number}   value    The new value, 1 or 0.
     */
    writeBit(adrs: number, bit: number, value: number): Promise<void>;
    abstract initialize(): Promise<any>;
}
