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 HVec3 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(): HVec3;
    static get Down(): HVec3;
    static get UnitX(): HVec3;
    static get UnitY(): HVec3;
    static get UnitZ(): HVec3;
    set(x: Decimal, y: Decimal, z: Decimal): this;
    setScalar(scalar: Decimal): this;
    setComponent(index: number, value: Decimal): this;
    add(v: HVec3, w?: HVec3): this;
    addVecs(a: HVec3, b: HVec3): this;
    sub(v: HVec3, w?: HVec3): this;
    subVecs(a: HVec3, b: HVec3): this;
    multiplyScalar(scalar: Decimal | number): this;
    cross(v: HVec3, w?: HVec3): this;
    crossVecs(a: HVec3, b: HVec3): this;
    dot(v: HVec3): Decimal;
    lerp(v: HVec3, alpha: number | Decimal): this;
    clone(): HVec3;
    length(): Decimal;
    normalize(): this;
    divideScalar(scalar: number | Decimal): this;
}
