import { coordinate } from '../types';
import { IVector } from '../interfaces/IVector';
import { Coordinate } from './coordinate';
export declare abstract class Vect extends Coordinate implements IVector {
    private static distanceSquare;
    private static hypot;
    /**
     *
     * @param vector IVector
     * @returns number
     */
    static hypotenuse(vector: IVector): number;
    /**
     *
     * @param main IVector
     * @param target IVector
     * @param force number
     * @returns IVector
     */
    static addForce: (main: IVector, target: IVector, force: number) => IVector;
    /**
     *
     * @param main IVector
     * @param target IVector
     * @param force number
     * @returns IVector
     */
    static subForce: (main: IVector, target: IVector, force: number) => IVector;
    /**
     *
     * @param target Type of IVector
     */
    static normalize<T extends IVector>(target: T): void;
    /**
     *
     * @param vector IVector
     * @returns number
     */
    static magnitude(vector: IVector): number;
    /**
     *
     * @param vector IVector
     * @param force number
     * @returns this
     */
    addForce: (vector: IVector, force: number) => this;
    /**
     *
     * @param vector IVector
     * @param force number
     * @returns this
     */
    subForce: (vector: IVector, force: number) => this;
    /**
     * Normalize the vector
     */
    normalize: () => void;
    /**
     * @returns number
     */
    get abs(): {
        x: number;
        y: number;
    };
    /**
     * @returns number
     */
    get hypotenuse(): number;
    /**
     * @returns number
     */
    get magnitude(): number;
    /**
     *
     * @param coordinate coordinate optional
     */
    constructor(coordinate?: coordinate);
}
