import mat3 from './mat3';
import quat from './quat';
export default class vec3 {
    get x(): number;
    get y(): number;
    get z(): number;
    get xy(): [number, number];
    get xyz(): [number, number, number];
    set x(value: number);
    set y(value: number);
    set z(value: number);
    set xy(values: [number, number]);
    set xyz(values: [number, number, number]);
    constructor(values?: [number, number, number]);
    private values;
    static readonly zero: vec3;
    static readonly one: vec3;
    static readonly up: vec3;
    static readonly right: vec3;
    static readonly forward: vec3;
    at(index: number): number;
    reset(): void;
    copy(dest?: vec3): vec3;
    negate(dest?: vec3): vec3;
    equals(vector: vec3, threshold?: number): boolean;
    length(): number;
    squaredLength(): number;
    add(vector: vec3): vec3;
    subtract(vector: vec3): vec3;
    multiply(vector: vec3): vec3;
    divide(vector: vec3): vec3;
    scale(value: number, dest?: vec3): vec3;
    normalize(dest?: vec3): vec3;
    multiplyByMat3(matrix: mat3, dest?: vec3): vec3;
    multiplyByQuat(quaternion: quat, dest?: vec3): vec3;
    toQuat(dest?: quat): quat;
    static cross(vector: vec3, vector2: vec3, dest?: vec3): vec3;
    static dot(vector: vec3, vector2: vec3): number;
    static distance(vector: vec3, vector2: vec3): number;
    static squaredDistance(vector: vec3, vector2: vec3): number;
    static direction(vector: vec3, vector2: vec3, dest?: vec3): vec3;
    static mix(vector: vec3, vector2: vec3, time: number, dest?: vec3): vec3;
    static sum(vector: vec3, vector2: vec3, dest?: vec3): vec3;
    static difference(vector: vec3, vector2: vec3, dest?: vec3): vec3;
    static product(vector: vec3, vector2: vec3, dest?: vec3): vec3;
    static quotient(vector: vec3, vector2: vec3, dest?: vec3): vec3;
}