export interface IVector { readonly DIMENSIONS: number; readonly x: number; readonly y: number; readonly isZero: boolean; readonly magnitude: number; is({x, y}: VectorSetter): boolean; set({x, y}: VectorSetter): IVector; add({x, y}: VectorSetter): IVector; sustract({x, y}: VectorSetter): IVector; multiply({x, y}: VectorSetter): IVector; divide({x, y}: VectorSetter): IVector; isValue(x: number, y?: number): boolean; addValue(x: number, y?: number): IVector; sustractValue(x: number, y?: number): IVector; multiplyValue(x: number, y?: number): IVector; divideValue(x: number, y?: number): IVector; map(operation: VectorMapper): IVector; every(operation: VectorTest): boolean; some(operation: VectorTest): boolean; toString(): string; toArray(): number[]; toObject(): { x: number; y: number; }; toJSON(): string; } export default class Vector implements IVector { readonly x: number; readonly y: number; static ZERO: IVector; static MAX: IVector; static of(x: number, y: number): IVector; static iterate(vectorA: IVector, vectorB?: IVector): IterableIterator; static map(action: (...values: number[]) => number, ...vectors: IVector[]): IVector; static merge(vectorA: IVector, vectorB: IVector, ...others: IVector[]): IVector; static diff(vectorA: IVector, vectorB: IVector, ...others: IVector[]): IVector; readonly DIMENSIONS: 2; constructor(x: number, y: number); readonly isZero: boolean; readonly radians: number; readonly degrees: number; readonly magnitude: number; is({x, y}: VectorSetter): boolean; isValue(x: number, y?: number): boolean; set({x, y}: VectorSetter): IVector; add({x, y}: VectorSetter): IVector; addValue(x: number, y?: number): IVector; sustract({x, y}: VectorSetter): IVector; sustractValue(x: number, y?: number): IVector; multiply({x, y}: VectorSetter): IVector; multiplyValue(x: number, y?: number): IVector; divide({x, y}: VectorSetter): IVector; divideValue(x: number, y?: number): IVector; map(operation: VectorMapper): IVector; every(operation: VectorTest): boolean; some(operation: VectorTest): boolean; toString(): string; toArray(): number[]; toObject(): { x: number; y: number; }; toJSON(): string; } export interface IXSetter { x: number; y?: number; z?: number; } export interface IYSetter { x?: number; y: number; z?: number; } export declare type VectorSetter = IXSetter | IYSetter; export declare type VectorTest = (coord: number, key: 'x' | 'y' | 'z', vector: IVector) => boolean; export declare type VectorMapper = (coord: number, key: 'x' | 'y' | 'z', vector: IVector) => number;