export type Quat = readonly [number, number, number, number]; export declare function mul(a: Quat, b: Quat): [number, number, number, number]; /** Inverse of a unit quaternion (conjugate). */ export declare const conj: (q: Quat) => [number, number, number, number]; export declare function normalize(q: Quat): [number, number, number, number]; /** Quaternion from the upper-3x3 of a column-major matrix (assumed a pure rotation). three.js algorithm. */ export declare function fromMat(m: readonly number[]): [number, number, number, number]; /** Rotate a 3-vector by a unit quaternion (q · v · q⁻¹). */ export declare function rotateVec(q: Quat, v: readonly [number, number, number]): [number, number, number]; /** Spherical linear interpolation with double-cover (shortest-arc) handling. */ export declare function slerp(a: Quat, b: Quat, t: number): [number, number, number, number]; /** Sample a rotation track (sorted `times`, flat VEC4 `quats`) at time `t` with slerp. */ export declare function sampleQuat(times: ArrayLike, quats: ArrayLike, t: number): [number, number, number, number]; /** Sample a VEC3 track (translation) at time `t` with linear interpolation. */ export declare function sampleVec3(times: ArrayLike, vals: ArrayLike, t: number): [number, number, number];