import { coordinate } from '../types/coordinate';
import { ICoordinate } from '../interfaces/ICoordinate';
export declare abstract class Coordinate implements ICoordinate {
    x: number;
    y: number;
    /**
     *
     * @param primary coordinate
     * @param secondary coordinate
     * @returns coordinate
     */
    static add: (primary: coordinate, secondary: coordinate) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param coordinate coordinate
     * @param amount number
     * @returns coordinate
     */
    static addAcross: (coordinate: coordinate, amount: number) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param primary coordinate
     * @param secondary coordinate
     * @returns coordinate
     */
    static subtract: (primary: coordinate, secondary: coordinate) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param coordinate coordinate
     * @param amount number
     * @returns coordinate
     */
    static subtractAcross: (coordinate: coordinate, amount: number) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param primary coordinate
     * @param secondary coordinate
     * @returns coordinate
     */
    static multiply: (primary: coordinate, secondary: coordinate) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param coordinate coordinate
     * @param amount number
     * @returns coordinate
     */
    static multiplyAcross: (coordinate: coordinate, amount: number) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param primary coordinate
     * @param secondary coordinate
     * @returns coordinate
     */
    static divide: (primary: coordinate, secondary: coordinate) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param coordinate coordinate
     * @param amount number
     * @returns coordinate
     */
    static divideAcross: (coordinate: coordinate, amount: number) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param primary coordinate
     * @param secondary coordinate
     * @returns boolean
     */
    static isEqual: (primary: coordinate, secondary: coordinate) => boolean;
    /**
     *
     * @param primary coordinate
     * @param secondary coordinate
     * @returns coordinate { x: -1 | 0 | 1, y: -1 | 0 | 1 }
     */
    static compare: (primary: coordinate, secondary: coordinate) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param primary coordinate
     * @param target coordinate
     * @returns number
     */
    static radian: (primary: coordinate, target: coordinate) => number;
    /**
     *
     * @param radian
     * @returns (origin: coordinate, target: coordinate) => number
     */
    static offsetRadians: (radian: number) => (origin: coordinate, target: coordinate) => number;
    /**
     *
     * @param primary coordinate
     * @param target coordinate
     * @returns number
     */
    static degree: (primary: coordinate, target: coordinate) => number;
    /**
     *
     * @param radian
     * @returns (origin: coordinate, target: coordinate) => number
     */
    static offsetDegrees: (degree: number) => (origin: coordinate, target: coordinate) => number;
    /**
     * @returns coordinate { x: 0, y: 0 }
     */
    static get zero(): {
        x: number;
        y: number;
    };
    /**
     *
     * @param primary coordinate
     * @param secondary coordinate
     * @returns coordinate
     */
    protected static set: (primary: coordinate, secondary: coordinate) => coordinate;
    /**
     *
     * @param primary
     * @param secondary
     * @returns number
     */
    static distance: (primary: coordinate, secondary: coordinate) => number;
    /**
     *
     * @param coordinate coordinate
     * @returns this
     */
    set: (coordinate: coordinate) => this;
    /**
     *
     * @param coordinate coordinate
     * @returns this
     */
    add: (coordinate: coordinate) => this;
    /**
     *
     * @param amount number
     * @returns this
     */
    addAcross: (amount: number) => this;
    /**
     *
     * @param coordinate coordinate
     * @returns this
     */
    subtract: (coordinate: coordinate) => this;
    /**
     *
     * @param amount number
     * @returns this
     */
    subtractAcross: (amount: number) => this;
    /**
     *
     * @param coordinate coordinate
     * @returns this
     */
    multiply: (coordinate: coordinate) => this;
    /**
     *
     * @param amount number
     * @returns this
     */
    multiplyAcross: (amount: number) => this;
    /**
     *
     * @param coordinate coordinate
     * @returns this
     */
    divide: (coordinate: coordinate) => this;
    /**
     *
     * @param amount number
     * @returns this
     */
    divideAcross: (amount: number) => this;
    /**
     *
     * @param target coordinate
     * @returns number
     */
    radians: (target: coordinate) => number;
    /**
     *
     * @param radian
     * @returns (target: coordinate) => number
     */
    offsetRadians: (radian: number) => (target: coordinate) => number;
    /**
     *
     * @param target coordinate
     * @returns number
     */
    degree: (target: coordinate) => number;
    /**
     *
     * @param degree
     * @returns (target: coordinate) => number
     */
    offsetDegrees: (degree: number) => (target: coordinate) => number;
    /**
     *
     * @param coordinate coordinate
     * @returns boolean
     */
    isEqual: (coordinate: coordinate) => boolean;
    /**
     *
     * @param coordinate coordinate
     * @returns number
     */
    compare: (coordinate: coordinate) => {
        x: number;
        y: number;
    };
    /**
     *
     * @param coordinate
     * @returns number
     */
    distance: (coordinate: coordinate) => number;
    /**
     *
     * @param coordinate coordinate | undefined
     */
    constructor(coordinate?: coordinate);
}
