export declare class Vector { readonly x: T; readonly y: T; static readonly Zero: Vector; static readonly Up: Vector; static readonly Down: Vector; static readonly Right: Vector; static readonly Left: Vector; static readonly Ones: Vector; static readonly NegativeOnes: Vector; static readonly SPAWN_LOCATION: Vector; static newScalar(scalar: number): Vector; static mutateX(vector: Vector, x: T): Vector; static mutateY(vector: Vector, y: T): Vector; constructor(x: T, y: T); static add(self: Vector, b: Vector): Vector; static adds(self: Vector, scalar: number): Vector; static sub(self: Vector, other: Vector): Vector; static subs(self: Vector, scalar: number): Vector; static mult(self: Vector, other: Vector): Vector; static mults(self: Vector, scalar: number): Vector; static div(self: Vector, other: Vector): Vector; static divs(self: Vector, scalar: number): Vector; static rem(self: Vector, other: Vector): Vector; static rems(self: Vector, scalar: number): Vector; static divis(self: Vector, other: Vector): boolean; static diviss(self: Vector, scalar: number): boolean; static eq(self: Vector, other: Vector): boolean; static ltv(a: Vector, b: Vector): Vector; static gtv(a: Vector, b: Vector): Vector; static lev(a: Vector, b: Vector): Vector; static gev(a: Vector, b: Vector): Vector; static floor(self: Vector): Vector; static round(self: Vector): Vector; static negate(v: Vector): Vector; static swap(v: Vector): Vector; static fromSize({ width, height }: { width: T; height: T; }): Vector; static and(left: Vector, right: Vector): Vector; static map(map: (...args: T[]) => U, ...args: Vector[]): Vector; static clamp(value: Vector, min: Vector, max: Vector): Vector; static clampDid(value: Vector, min: Vector, max: Vector): [Vector, Vector]; static either(v: Vector): boolean; static unique(vectors: Vector[]): Vector[]; /** * Opposite of `filterIn` * * Given a predicate vector, filters out values from the value vector. * * For both X and Y components: * * - If the predicate component is falsy (0), the value component is used * - If the predicate component is truthy (not 0), the value `0` is used * * ``` * filterOut( 0, value) = value * filterOut(predicate, value) = 0 * ``` * * @param predicate The vector which uses zeros to determine pass-through * @param value The value vector to filter values out of * @returns A vector, such that any zeros present in the predicate vector are * replaced by values in the value vector, and any non-zeros are replaced by zeros. */ static filterOut(predicate: Vector, value: Vector): Vector; /** * Opposite of `filterOut` * * Given a predicate vector, filters values in from the value vector. * * For both X and Y components: * * - If the predicate component is falsy (0), the value `0` is used is used * - If the predicate component is truthy (not 0), the value component is used * * ``` * filterIn( 0, value) = 0 * filterIn(predicate, value) = value * ``` * * @param predicate The vector which uses zeros to determine pass-through * @param value The value vector to filter values in to * @returns A vector, such that any zeros present in the predicate vector are * kept, and any non-zeros are replaced by values in the value vector. */ static filterIn(predicate: Vector, value: Vector): Vector; /** * Replaces zeros in `zeroful` with values in `substitute`. * * ``` * substituteZeros( 0, substitute) = substitute * substituteZeros(zeroful, substitute) = zeroful * ``` * * @param zeroful The vector whose zeros should be replaced by values in `replacement` * @param substitute The vector whoze values replace zeros in `zerofull` * @returns A vector where the zeros of `zerofull` are substituted by `replacement` */ static substituteZeros(zeroful: Vector, substitute: Vector): Vector; }