/**
 * High-level orientation tracker for the DualSense controller.
 *
 * Wraps the Madgwick AHRS filter and provides:
 *   - Fused orientation as Euler angles and quaternion
 *   - Accelerometer-only tilt (no drift, no yaw — useful for
 *     gravity-reference applications like steering)
 *   - Automatic unit conversion from the library's [-1, 1] calibrated
 *     values to the rad/s and g units the filter expects
 *
 * DualSense IMU hardware constants:
 *   Gyroscope:     ±2000 deg/s full scale → 1.0 = 2000 deg/s
 *   Accelerometer: ±4 g full scale        → 0.25 ≈ 1 g
 */
import { type Quaternion } from "./quaternion";
export interface OrientationParams {
    /**
     * Madgwick filter gain. Higher = more accelerometer trust (less drift,
     * more noise). Lower = smoother but driftier.
     *
     * - 0.01–0.04: very smooth, noticeable drift over minutes
     * - 0.05–0.15: general purpose (default 0.1)
     * - 0.2–0.5:  aggressive correction, jittery under vibration
     */
    beta?: number;
}
export declare class Orientation {
    /** Fused orientation as Euler angles (radians, updated each sample). */
    pitch: number;
    yaw: number;
    roll: number;
    /** Fused orientation as a unit quaternion [w, x, y, z]. */
    quaternion: Quaternion;
    /**
     * Tilt derived from the accelerometer gravity vector alone.
     * No drift, but also no yaw — only pitch and roll.
     * Noisy during motion; best used when the controller is relatively still.
     */
    tiltPitch: number;
    tiltRoll: number;
    /** Madgwick filter gain. Can be adjusted at runtime. */
    get beta(): number;
    set beta(v: number);
    private readonly filter;
    constructor(params?: OrientationParams);
    /** Reset to identity orientation (call when zeroing the view). */
    reset(): void;
    /**
     * Incorporate one IMU sample. Called automatically by the Dualsense
     * class on each HID report — you don't normally call this yourself.
     *
     * @param gx  Calibrated gyro X (pitch), [-1, 1]
     * @param gy  Calibrated gyro Y (yaw),   [-1, 1]
     * @param gz  Calibrated gyro Z (roll),  [-1, 1]
     * @param ax  Calibrated accel X, [-1, 1]
     * @param ay  Calibrated accel Y, [-1, 1]
     * @param az  Calibrated accel Z, [-1, 1]
     * @param dt  Time delta in seconds
     */
    update(gx: number, gy: number, gz: number, ax: number, ay: number, az: number, dt: number): void;
}
//# sourceMappingURL=orientation.d.ts.map