import { Point4D } from './Point4D';
export declare class Vector4D extends Point4D {
    constructor(x?: number, y?: number, z?: number, w?: number);
    static negative(a: Vector4D, b: Vector4D): Vector4D;
    static add(a: Vector4D, b: Vector4D | number, c?: Vector4D): Vector4D;
    static subtract(a: Vector4D, b: Vector4D | number, c?: Vector4D): Vector4D;
    static multiply(a: Vector4D, b: Vector4D | number, c?: Vector4D): Vector4D;
    static divide(a: Vector4D, b: Vector4D | number, c?: Vector4D): Vector4D;
    static cross(a: Vector4D, b: Vector4D, c?: Vector4D): Vector4D;
    static unit(a: Vector4D, b: Vector4D): Vector4D;
    static fromBearing(angle: number, length: number): Vector4D;
    static fromAngles(theta: number, phi: number): Vector4D;
    static randomDirection(): Vector4D;
    static min(a: Vector4D, b: Vector4D): Vector4D;
    static max(a: Vector4D, b: Vector4D): Vector4D;
    static lerp(a: Vector4D, b: Vector4D, fraction: number): Vector4D;
    static fromArray(a: number[]): Vector4D;
    static angleBetween(a: Vector4D, b: Vector4D): number;
    negative(): Vector4D;
    add(v: Vector4D | number): Vector4D;
    subtract(v: Vector4D | number): Vector4D;
    multiply(v: Vector4D | number): Vector4D;
    divide(v: Vector4D | number): Vector4D;
    equals(v: Vector4D): boolean;
    dot(v: Vector4D): number;
    cross(v: Vector4D): Vector4D;
    magnitude(): number;
    length(): number;
    unit(): Vector4D;
    min(): number;
    max(): number;
    toAngles(): {
        theta: number;
        phi: number;
    };
    angleTo(a: Vector4D): number;
    areaOfTriangle(a: Vector4D): number;
    volumeOfVectors(a: Vector4D, b: Vector4D): number;
    toArray(n?: number): number[];
    clone(): Vector4D;
    private init;
}
