import type { Matrix3Like } from "../matrix/Matrix3"; import type { Matrix4Like } from "../matrix/Matrix4"; export interface IVector3Json { x: number; y: number; z: number; } export interface IVector3 extends Float32Array, IVector3Json { } export type Vector3Like = IVector3 | Vector3 | number[] | Float32Array; export declare class Vector3 extends Float32Array implements IVector3 { static readonly VECTOR3_ZERO: Vector3; static readonly VECTOR3_ONE: Vector3; static readonly VECTOR3_TOP: Vector3; static readonly VECTOR3_BOTTOM: Vector3; static readonly VECTOR3_LEFT: Vector3; static readonly VECTOR3_RIGHT: Vector3; static readonly VECTOR3_FRONT: Vector3; static readonly VECTOR3_BACK: Vector3; static add: (a: Vector3Like, b: Vector3Like, out?: T) => T; static addScalar: (a: Vector3Like, b: number, out?: T) => T; static angle: (a: Vector3Like, b: Vector3Like) => number; static clamp: (a: Vector3Like, min: Vector3Like, max: Vector3Like, out?: T) => T; static clampSafe: (a: Vector3Like, min: Vector3Like, max: Vector3Like, out?: T) => T; static clampScalar: (a: Vector3Like, min: number, max: number, out?: T) => T; static clone: (a: Vector3Like, out?: T) => T; static closeTo: (a: Vector3Like, b: Vector3Like, epsilon?: number) => boolean; static closeToRect: (a: Vector3Like, b: Vector3Like, epsilon?: number) => boolean; static create: (x?: number, y?: number, z?: number) => Vector3; static cross: (a: Vector3Like, b: Vector3Like, out?: T) => T; static distanceTo: (a: Vector3Like, b: Vector3Like) => number; static distanceToManhattan: (a: Vector3Like, b: Vector3Like) => number; static distanceToSquared: (a: Vector3Like, b: Vector3Like) => number; static divide: (a: Vector3Like, b: Vector3Like, out?: T) => T; static divideScalar: (a: Vector3Like, b: number, out?: T) => T; static dot: (a: Vector3Like, b: Vector3Like) => number; static equals: (a: Vector3Like, b: Vector3Like) => boolean; static floor: (a: Vector3Like, out?: T) => T; static fromArray: (a: ArrayLike | Vector3Like, offset?: number, out?: T) => T; static fromScalar: (num: number, out?: T) => T; static fromXYZ: (x: number, y: number, z: number, out?: T) => T; static fromMatrix4Scale: (mat: Matrix4Like, out?: T) => T; static fromMatrix4Translate: (mat: Matrix4Like, out?: T) => T; static hermite: (a: Vector3Like, b: Vector3Like, c: Vector3Like, d: Vector3Like, t: number, out?: T) => T; static inverse: (a: Vector3Like, out?: T) => T; static norm: (a: Vector3Like) => number; static lengthManhattan: (a: Vector3Like) => number; static lengthSquared: (a: Vector3Like) => number; static lerp: (a: Vector3Like, b: Vector3Like, alpha: number, out?: T) => T; static max: (a: Vector3Like, b: Vector3Like, out?: T) => T; static min: (a: Vector3Like, b: Vector3Like, out?: T) => T; static minus: (a: Vector3Like, b: Vector3Like, out?: T) => T; static minusScalar: (a: Vector3Like, b: number, out?: T) => T; static multiply: (a: Vector3Like, b: Vector3Like, out?: T) => T; static multiplyScalar: (a: Vector3Like, scalar: number, out?: T) => T; static negate: (a: Vector3Like, out?: T) => T; static normalize: (a: Vector3Like, out?: T) => T; static opposite: (a: Vector3Like, center: Vector3Like, out?: T) => T; static reflect: (origin: Vector3Like, normal: Vector3Like, out?: T) => T; static rotateX: (a: Vector3Like, b: Vector3Like, rad: number, out?: T) => T; static rotateY: (a: Vector3Like, b: Vector3Like, rad: number, out?: T) => T; static rotateZ: (a: Vector3Like, b: Vector3Like, rad: number, out?: T) => T; static round: (a: Vector3Like, out?: T) => T; static setNorm: (a: Vector3Like, norm: number, out?: T) => T; static slerp: (a: Vector3Like, b: Vector3Like, t: number, out?: T) => T; static toString: (a: Vector3Like) => string; static transformMatrix3: (a: Vector3Like, m: Matrix3Like, out?: T) => T; static transformDirection: (a: Vector3Like, m: Matrix4Like, out?: T) => T; static transformMatrix4: (a: Vector3Like, m: Matrix4Like, out?: T) => T; static transformQuat: (a: Vector3Like, q: Vector3Like, out?: T) => T; static volume: (a: Vector3Like) => number; readonly dataType: string; constructor(x?: number, y?: number, z?: number); get x(): number; set x(value: number); get y(): number; set y(value: number); get z(): number; set z(value: number); }