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