import { Mat4Arg, Mat4Type } from './mat4'; import { Mat3Arg } from './mat3'; import { QuatArg } from './quat'; import { Vec3Arg } from './vec3'; import { BaseArgType } from './types'; export { Mat4Arg, Mat4Type }; type Mat4Ctor = new (n: number) => T; /** * Generates a typed API for Mat4 * */ declare function getAPIImpl(Ctor: Mat4Ctor): { add: (a: Mat4Arg, b: Mat4Arg, dst?: T) => T; aim: (position: Vec3Arg, target: Vec3Arg, up: Vec3Arg, dst?: T) => T; axisRotate: (m: Mat4Arg, axis: Vec3Arg, angleInRadians: number, dst?: T) => T; axisRotation: (axis: Vec3Arg, angleInRadians: number, dst?: T) => T; cameraAim: (eye: Vec3Arg, target: Vec3Arg, up: Vec3Arg, dst?: T) => T; clone: (m: Mat4Arg, dst?: T) => T; copy: (m: Mat4Arg, dst?: T) => T; create: (v0?: number, v1?: number, v2?: number, v3?: number, v4?: number, v5?: number, v6?: number, v7?: number, v8?: number, v9?: number, v10?: number, v11?: number, v12?: number, v13?: number, v14?: number, v15?: number) => MatType; determinant: (m: Mat4Arg) => number; equals: (a: Mat4Arg, b: Mat4Arg) => boolean; equalsApproximately: (a: Mat4Arg, b: Mat4Arg) => boolean; fromMat3: (m3: Mat3Arg, dst?: T) => T; fromQuat: (q: QuatArg, dst?: T) => T; frustum: (left: number, right: number, bottom: number, top: number, near: number, far: number, dst?: T) => T; frustumReverseZ: (left: number, right: number, bottom: number, top: number, near: number, far?: number, dst?: T) => T; getAxis: (m: Mat4Arg, axis: number, dst?: T) => MatType | T; getScaling: (m: Mat4Arg, dst?: T) => T; getTranslation: (m: Mat4Arg, dst?: T) => T; identity: (dst?: T) => T; inverse: (m: Mat4Arg, dst?: T) => T; invert: (m: Mat4Arg, dst?: T) => T; lookAt: (eye: Vec3Arg, target: Vec3Arg, up: Vec3Arg, dst?: T) => T; mul: (a: Mat4Arg, b: Mat4Arg, dst?: T) => T; mulScalar: (m: Mat4Arg, s: number, dst?: T) => T; multiply: (a: Mat4Arg, b: Mat4Arg, dst?: T) => T; multiplyScalar: (m: Mat4Arg, s: number, dst?: T) => T; negate: (m: Mat4Arg, dst?: T) => T; ortho: (left: number, right: number, bottom: number, top: number, near: number, far: number, dst?: T) => T; perspective: (fieldOfViewYInRadians: number, aspect: number, zNear: number, zFar: number, dst?: T) => T; perspectiveReverseZ: (fieldOfViewYInRadians: number, aspect: number, zNear: number, zFar?: number, dst?: T) => T; rotate: (m: Mat4Arg, axis: Vec3Arg, angleInRadians: number, dst?: T) => T; rotateX: (m: Mat4Arg, angleInRadians: number, dst?: T) => T; rotateY: (m: Mat4Arg, angleInRadians: number, dst?: T) => T; rotateZ: (m: Mat4Arg, angleInRadians: number, dst?: T) => T; rotation: (axis: Vec3Arg, angleInRadians: number, dst?: T) => T; rotationX: (angleInRadians: number, dst?: T) => T; rotationY: (angleInRadians: number, dst?: T) => T; rotationZ: (angleInRadians: number, dst?: T) => T; scale: (m: Mat4Arg, v: Vec3Arg, dst?: T) => T; scaling: (v: Vec3Arg, dst?: T) => T; set: (v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number, dst?: T) => T; setAxis: (m: Mat4Arg, v: Vec3Arg, axis: number, dst: T) => T; setTranslation: (a: Mat4Arg, v: Vec3Arg, dst?: T) => T; translate: (m: Mat4Arg, v: Vec3Arg, dst?: T) => T; translation: (v: Vec3Arg, dst?: T) => T; transpose: (m: Mat4Arg, dst?: T) => T; uniformScale: (m: Mat4Arg, s: number, dst?: T) => T; uniformScaling: (s: number, dst?: T) => T; }; type API = ReturnType>; export declare function getAPI(Ctor: Mat4Ctor): API;