import { Mat3Arg } from './mat3'; import { Mat4Arg } from './mat4'; import { Vec2Arg, Vec2Type } from './vec2'; import { Vec3Arg } from './vec3'; import { BaseArgType } from './types'; export { Vec2Arg, Vec2Type }; type Vec2Ctor = new (n: number) => T; /** * Generates am typed API for Vec3 */ declare function getAPIImpl(Ctor: Vec2Ctor): { create: (x?: number, y?: number) => VecType; fromValues: (x?: number, y?: number) => VecType; set: (x: number, y: number, dst?: T) => T; ceil: (v: Vec2Arg, dst?: T) => T; floor: (v: Vec2Arg, dst?: T) => T; round: (v: Vec2Arg, dst?: T) => T; clamp: (v: Vec2Arg, min?: number, max?: number, dst?: T) => T; add: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; addScaled: (a: Vec2Arg, b: Vec2Arg, scale: number, dst?: T) => T; angle: (a: Vec2Arg, b: Vec2Arg) => number; subtract: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; sub: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; equalsApproximately: (a: Vec2Arg, b: Vec2Arg) => boolean; equals: (a: Vec2Arg, b: Vec2Arg) => boolean; lerp: (a: Vec2Arg, b: Vec2Arg, t: number, dst?: T) => T; lerpV: (a: Vec2Arg, b: Vec2Arg, t: Vec2Arg, dst?: T) => T; max: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; min: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; mulScalar: (v: Vec2Arg, k: number, dst?: T) => T; scale: (v: Vec2Arg, k: number, dst?: T) => T; divScalar: (v: Vec2Arg, k: number, dst?: T) => T; inverse: (v: Vec2Arg, dst?: T) => T; invert: (v: Vec2Arg, dst?: T) => T; cross: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; dot: (a: Vec2Arg, b: Vec2Arg) => number; length: (v: Vec2Arg) => number; len: (v: Vec2Arg) => number; lengthSq: (v: Vec2Arg) => number; lenSq: (v: Vec2Arg) => number; distance: (a: Vec2Arg, b: Vec2Arg) => number; dist: (a: Vec2Arg, b: Vec2Arg) => number; distanceSq: (a: Vec2Arg, b: Vec2Arg) => number; distSq: (a: Vec2Arg, b: Vec2Arg) => number; normalize: (v: Vec2Arg, dst?: T) => T; negate: (v: Vec2Arg, dst?: T) => T; copy: (v: Vec2Arg, dst?: T) => T; clone: (v: Vec2Arg, dst?: T) => T; multiply: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; mul: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; divide: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; div: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; random: (scale?: number, dst?: T) => T; zero: (dst?: T) => T; transformMat4: (v: Vec2Arg, m: Mat4Arg, dst?: T) => T; transformMat3: (v: Vec2Arg, m: Mat3Arg, dst?: T) => T; rotate: (a: Vec2Arg, b: Vec2Arg, rad: number, dst?: T) => T; setLength: (a: Vec2Arg, len: number, dst?: T) => T; truncate: (a: Vec2Arg, maxLen: number, dst?: T) => T; midpoint: (a: Vec2Arg, b: Vec2Arg, dst?: T) => T; }; type API = ReturnType>; export declare function getAPI(Ctor: Vec2Ctor): API;