import type { Tuple } from "@dunes/tools"; export type VecData = Tuple; export type Vec2Data = VecData<2>; export type Vec3Data = VecData<3>; export type Vec4Data = VecData<4>; declare abstract class Vec { readonly dim: Dim; protected array: VecData; constructor(dim: Dim, init?: number); null(): this; identity(): this; [Symbol.iterator](): Iterator; data(): VecData; get(i: number): number; set_at(i: number, value: number): this; set(vec: VecData): this; add(other: this): this; subtract(other: this): this; add_scalar(scalar: number): this; subtract_scalar(scalar: number): this; divide_scalar(scalar: number): this; multiply_scalar(scalar: number): this; modulo_scalar(scalar: number): this; dot(other: this): number; normalize(): this; magnitude(): number; magnitude_sq(): number; angle(other: this): number; distance(other: this): number; project(other: this): this; negate(): this; abs(): this; round(): this; floor(): this; ceil(): this; trunc(): this; } export declare class Vec2 extends Vec<2> { constructor(init: number); constructor(vec: Vec2Data); get x(): number; get y(): number; set x(value: number); set y(value: number); } export declare class Vec3 extends Vec<3> { constructor(init: number); constructor(vec: Vec3Data); get x(): number; get y(): number; get z(): number; get r(): number; get g(): number; get b(): number; set x(value: number); set y(value: number); set z(value: number); set r(value: number); set g(value: number); set b(value: number); cross(other: Vec3): Vec3; } export declare class Vec4 extends Vec<4> { constructor(init: number); constructor(vec: Vec4Data); get x(): number; get y(): number; get z(): number; get w(): number; get r(): number; get g(): number; get b(): number; get a(): number; set x(value: number); set y(value: number); set z(value: number); set w(value: number); set r(value: number); set g(value: number); set b(value: number); set a(value: number); } export {}; //# sourceMappingURL=index.d.ts.map