import { ZograMatrix } from "./generic"; declare type MapArrayArgs = T extends number ? number : T extends ZograMatrix ? ArrayLike : T extends number | ZograMatrix ? ArrayLike | number : never; declare type WrappedFunction = { (...args: { [key in keyof TArgs]: Readonly; }): TReturn; (out: TOut, ...args: { [key in keyof TArgs]: Readonly; }): TReturn; (out: TOut, ...args: { [key in keyof TArgs]: MapArrayArgs; }): TReturn; (...args: { [key in keyof TArgs]: MapArrayArgs; }): TReturn; (out: ArrayLike, ...args: { [key in keyof TArgs]: MapArrayArgs; }): null extends TReturn ? ArrayLike | null : ArrayLike; }; export declare function wrapGlMatrix(func: (out: TOut, ...args: TArgs) => TOut, argCount: TArgs["length"], allocator: () => TOut): WrappedFunction; export declare function wrapGlMatrix(func: (out: TOut, ...args: TArgs) => TOut, argCount: TArgs["length"], allocator: () => TOut): WrappedFunction; export declare const MathUtils: { lerp(a: number, b: number, t: number): number; linstep(a: number, b: number, x: number): number; smoothStep(a: number, b: number, x: number): number; clamp(x: number, min: number, max: number): number; mapClamped(inMin: number, inMax: number, outMin: number, outMax: number, value: number): number; damp: typeof damp; }; declare function damp(from: number, to: number, damping: number, deltaTime: number, epslon?: number): number; export {};