import { EventHandler } from '../render/eventhandler';
import Decimal from 'decimal.js';
export interface IHVec2 {
    x: Decimal;
    y: Decimal;
}
export interface IHVec3 extends IHVec2 {
    z: Decimal;
}
export interface IHVec4 extends IHVec3 {
    w: Decimal;
}
export declare class Vec3 extends EventHandler implements IHVec3 {
    private _x;
    private _y;
    private _z;
    x: Decimal;
    y: Decimal;
    z: Decimal;
    constructor(_x?: any, _y?: any, _z?: any);
    static isVec3(v: any): boolean;
    get isVec3(): boolean;
    static get Up(): Vec3;
    static get Down(): Vec3;
    static get UnitX(): Vec3;
    static get UnitY(): Vec3;
    static get UnitZ(): Vec3;
    set(x: Decimal, y: Decimal, z: Decimal): this;
    setScalar(scalar: Decimal): this;
    setComponent(index: number, value: Decimal): this;
    add(v: Vec3, w?: Vec3): this;
    addVecs(a: Vec3, b: Vec3): this;
    sub(v: Vec3, w?: Vec3): this;
    subVecs(a: Vec3, b: Vec3): this;
    multiplyScalar(scalar: Decimal | number): this;
    cross(v: Vec3, w?: Vec3): this;
    crossVecs(a: Vec3, b: Vec3): this;
    dot(v: Vec3): Decimal;
    lerp(v: Vec3, alpha: number | Decimal): this;
    clone(): Vec3;
    length(): Decimal;
    normalize(): this;
    divideScalar(scalar: number | Decimal): this;
}
