import { IVector, VectorSetter } from '../vector/index'; export interface IVector3D extends IVector { readonly z: number; is({x, y, z}: Vector3DSetter): boolean; set({x, y, z}: Vector3DSetter): IVector3D; add({x, y, z}: Vector3DSetter): IVector3D; sustract({x, y, z}: Vector3DSetter): IVector3D; multiply({x, y, z}: Vector3DSetter): IVector3D; divide({x, y, z}: Vector3DSetter): IVector3D; isValue(x: number, y?: number, z?: number): boolean; setValue(x: number, y?: number, z?: number): IVector3D; addValue(x: number, y?: number, z?: number): IVector3D; sustractValue(x: number, y?: number, z?: number): IVector3D; multiplyValue(x: number, y?: number, z?: number): IVector3D; divideValue(x: number, y?: number, z?: number): IVector3D; map(operation: Vector3DMapper): IVector3D; every(operation: Vector3DTest): boolean; some(operation: Vector3DTest): boolean; } export default class Vector3D implements IVector3D { readonly x: number; readonly y: number; readonly z: number; static ZERO: IVector3D; static MAX: IVector3D; static of(x: number, y: number, z: number): IVector3D; static iterate(vectorA: IVector3D, vectorB?: IVector3D): IterableIterator; static map(action: (...values: number[]) => number, ...vectors: IVector3D[]): IVector3D; static fromMagnitude(value: number): IVector3D; static merge(vectorA: IVector3D, vectorB: IVector3D, ...others: IVector3D[]): IVector3D; static diff(vectorA: IVector3D, vectorB: IVector3D, ...others: IVector3D[]): IVector3D; readonly DIMENSIONS: 3; constructor(x: number, y: number, z: number); readonly isZero: boolean; readonly magnitude: number; is({x, y, z}: Vector3DSetter): boolean; isValue(x: number, y?: number, z?: number): boolean; set({x, y, z}: Vector3DSetter): IVector3D; setValue(x: number, y?: number, z?: number): IVector3D; add({x, y, z}: Vector3DSetter): IVector3D; addValue(x: number, y?: number, z?: number): IVector3D; sustract({x, y, z}: Vector3DSetter): IVector3D; sustractValue(x: number, y?: number, z?: number): IVector3D; multiply({x, y, z}: Vector3DSetter): IVector3D; multiplyValue(x: number, y?: number, z?: number): IVector3D; divide({x, y, z}: Vector3DSetter): IVector3D; divideValue(x: number, y?: number, z?: number): IVector3D; map(operation: Vector3DMapper): IVector3D; every(operation: Vector3DTest): boolean; some(operation: Vector3DTest): boolean; toString(): string; toArray(): number[]; toObject(): { x: number; y: number; z: number; }; toJSON(): string; } export interface IZSetter { x?: number; y?: number; z: number; } export declare type Vector3DSetter = VectorSetter | IZSetter; export declare type Vector3DTest = (coord: number, key: 'x' | 'y' | 'z', vector: IVector3D) => boolean; export declare type Vector3DMapper = (coord: number, key: 'x' | 'y' | 'z', vector: IVector3D) => number;