import { Module } from '../Module';
export * from './constants';
import { AVAIL_SENSOR_REPORTS } from './constants';
export declare const defaultConfig: {
    ADDRESS: number;
    DATA_BUFFER_SIZE: number;
    PACKET_READ_TIMEOUT: number;
};
type Config = typeof defaultConfig;
export declare class BNO08X extends Module<Config> {
    private dataBuffer;
    private commandBuffer;
    private readings;
    private meCalibrationStartedAt;
    private calibrationComplete;
    private magnetometerAccuracy;
    private waitForInitialize;
    private initComplete;
    private idRead;
    private packetSlices;
    private sequenceNumber;
    private twoEndedSequenceNumbers;
    private dcdSavedAt;
    constructor(busNumber?: number, address?: number, config?: Partial<Config>);
    /**
     * Initialize the sensor
     */
    init(): Promise<void>;
    getFeatureEnableReport(featureId: keyof typeof AVAIL_SENSOR_REPORTS, sensorSpecificConfig?: number, reportInterval?: number): Buffer;
    beginCalibration(): Promise<void>;
    calibrationStatus(): Promise<number>;
    private sendMeCommand;
    private incrementReportSeq;
    private getReportSeqId;
    private insertCommandRequestReport;
    /**
     * Used to enable a given feature of the BNO08x
     */
    enableFeature(featureId: keyof typeof AVAIL_SENSOR_REPORTS): Promise<void>;
    /**
     * A tuple representing the acceleration measurements on the X, Y, and Z
     * axes in meters per second squared
    */
    acceleration(): Promise<[number, number, number]>;
    /**
     * Get the roll pitch yaw on xyz axis using acceleration
     */
    euler(): Promise<[number, number, number]>;
    /**
     * A tuple representing Gyro's rotation measurements on the X, Y, and Z
     * axes in radians per second
     */
    gyro(): Promise<[number, number, number]>;
    /**
     * A tuple of the current magnetic field measurements on the X, Y, and Z axes
     */
    magnetic(): Promise<[number, number, number]>;
    /**
     * The current heading in degrees
     */
    heading(): Promise<number>;
    /**
     * A quaternion representing the current rotation vector
     */
    quaternion(): Promise<[number, number, number, number]>;
    /**
     * A quaternion representing the current rotation vector expressed as a quaternion with no
     * specific reference for heading, while roll and pitch are referenced against gravity. To
     * prevent sudden jumps in heading due to corrections, the `gameQuaternion` property is not
     * corrected using the magnetometer. Some drift is expected
     */
    gameQuaternion(): Promise<[number, number, number, number]>;
    /**
     * The number of steps detected since the sensor was initialized
     */
    steps(): Promise<number>;
    processAvailablePackets(maxPackets?: number | null): Promise<void>;
    private hardReset;
    /**
     * Reset the sensor to an initial unconfigured state
     */
    private softReset;
    private checkId;
    private parseSensorId;
    private waitForPacketType;
    private reportLength;
    private separateBatch;
    private handlePacket;
    private handleCommandResponse;
    private handleControlReport;
    private processReport;
    private parseSensorReportData;
    private parseStepCounterReport;
    private parseShakeReport;
    private parseStabilityClassifierReport;
    private parseActivityClassifierReport;
    private waitForPacket;
    private readHeader;
    private readPacket;
    private updateSequenceNumber;
    private read;
    private dataReady;
    private sendPacket;
}
export declare const config: {
    ADDRESS: number;
    DATA_BUFFER_SIZE: number;
    PACKET_READ_TIMEOUT: number;
};
