/**
 * Additive accumulator for body-local eye-position offsets. The first-
 * person controller's `_composeEye` clears this each frame, pushes its
 * own contributions (bob impact, lateral bob, breath, landing, jump
 * anticipation, sprint posture shift), then reads the accumulated offset
 * into the eye transform.
 *
 * Designed so external sources — gunfire recoil, melee impact reaction,
 * environmental shake — can push offsets without the controller having to
 * know about them. They reach the runtime through the same interface; the
 * controller treats all contributions identically.
 *
 * Translation only. Rotation composition stays explicit in the system
 * because the multiplication order (yaw → pitch → roll) is semantically
 * load-bearing.
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2026
 */
export class EyeOffsetStack {
    /**
     * @readonly
     * @type {Vector3}
     */
    readonly offset: Vector3;
    /**
     * Reset to zero. Call once per frame before pushing.
     */
    clear(): void;
    /**
     * Add a vector contribution. `source` is purely for debugging and
     * future inspection (e.g. a developer overlay listing each
     * contribution); the math is a plain sum.
     *
     * @param {string} _source label, e.g. "bob.impact", "breath", "shake"
     * @param {number} x
     * @param {number} y
     * @param {number} z
     */
    push(_source: string, x: number, y: number, z: number): void;
    /**
     * Convenience overload — push a Vector3.
     * @param {string} _source
     * @param {Vector3} v
     */
    pushVec(_source: string, v: Vector3): void;
}
import Vector3 from "../../../../core/geom/Vector3.js";
//# sourceMappingURL=EyeOffsetStack.d.ts.map