import { Vector3 } from "./vec3"; import { Vector2 } from "./vec2"; import { Vector, ZograMatrix } from "./generic"; export declare type vec4 = Vector4; export declare type VecMathArgs = T extends number[] ? { [key in keyof T]: U; } : never; declare const V4Constructor: new (...p: [number, number, number, number]) => [number, number, number, number]; export declare class Vector4 extends V4Constructor implements Vector, ZograMatrix { get x(): number; set x(x: number); get y(): number; set y(y: number); get z(): number; set z(z: number); get w(): number; set w(w: number); get magnitude(): number; get normalized(): Vector4; get negative(): Vector4; get inversed(): Vector4; constructor(x: number, y: number, z?: number, w?: number); static zero(): Vector4; static one(): Vector4; asMut(): this; plus(v: Readonly | number): Vector4; minus(v: Readonly | number): Vector4; mul(v: Readonly | number): Vector4; div(v: Readonly | number): Vector4; dot(v: Readonly): number; normalize(): Vector4; inverse(): this; negate(): this; clone(out?: vec4): vec4; equals(v: any): boolean; set(v: Readonly): this; set(v: Readonly>): this; fill(n: number): this; static math number>(func: F): (...args: VecMathArgs, Readonly>) => vec4; static mathNonAlloc number>(func: F): (out: vec4, ...args: VecMathArgs, Readonly>) => vec4; __to(type: Function): Vector2 | Vector4 | Vector3; } export declare function vec4(x: number): Vector4; export declare namespace vec4 { var from: (src: Iterable) => Vector4; var floor: (v: Vector4) => Vector4; var zero: typeof Vector4.zero; var one: typeof Vector4.one; var math: typeof Vector4.math; var mathNonAlloc: typeof Vector4.mathNonAlloc; var normalize: { (args_0: Readonly): Vector4; (out: Vector4, args_0: Readonly): Vector4; (out: Vector4, args_0: ArrayLike): Vector4; (args_0: ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var plus: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var minus: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var mul: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var div: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var set: { (args_0: Readonly): Vector4; (out: Vector4, args_0: Readonly): Vector4; (out: Vector4, args_0: ArrayLike): Vector4; (args_0: ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var fill: { (args_0: number): Vector4; (out: Vector4, args_0: number): Vector4; (out: Vector4, args_0: number): Vector4; (args_0: number): Vector4; (out: ArrayLike, args_0: number): ArrayLike; }; } export declare function vec4(x: number, y: number, z: number, w: number): Vector4; export declare namespace vec4 { var from: (src: Iterable) => Vector4; var floor: (v: Vector4) => Vector4; var zero: typeof Vector4.zero; var one: typeof Vector4.one; var math: typeof Vector4.math; var mathNonAlloc: typeof Vector4.mathNonAlloc; var normalize: { (args_0: Readonly): Vector4; (out: Vector4, args_0: Readonly): Vector4; (out: Vector4, args_0: ArrayLike): Vector4; (args_0: ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var plus: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var minus: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var mul: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var div: { (args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: Readonly, args_1: Readonly): Vector4; (out: Vector4, args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (args_0: ArrayLike, args_1: number | ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike, args_1: number | ArrayLike): ArrayLike; }; var set: { (args_0: Readonly): Vector4; (out: Vector4, args_0: Readonly): Vector4; (out: Vector4, args_0: ArrayLike): Vector4; (args_0: ArrayLike): Vector4; (out: ArrayLike, args_0: ArrayLike): ArrayLike; }; var fill: { (args_0: number): Vector4; (out: Vector4, args_0: number): Vector4; (out: Vector4, args_0: number): Vector4; (args_0: number): Vector4; (out: ArrayLike, args_0: number): ArrayLike; }; } export {};