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