import type { Prim, PrimTerm, Term, TermType } from "@thi.ng/shader-ast";
/**
 * Returns normalized value of `x` WRT to interval `[a,b]`. Returns 0, if `a`
 * equals `b`.
 *
 * @param x -
 * @param a -
 * @param b -
 */
export declare const fitNorm1: import("@thi.ng/shader-ast").TaggedFn3<"float", "float", "float", "float">;
/**
 * Similar to {@link fitNorm1} but also for vector types and without checking if
 * `a == b`. Scales value `x` from closed interval `[a,b]` to closed `[0,1]`
 * interval. No clamping performed.
 *
 * @param x
 * @param a
 * @param b
 */
export declare const fitNorm: <T extends Prim>(x: Term<T>, a: Term<T>, b: Term<T>) => import("@thi.ng/shader-ast").Op2<T>;
/**
 * Fits value `x` from closed interval `[a,b]` to closed interval `[c,d]`. No
 * clamping performed.
 *
 * @param x -
 * @param a -
 * @param b -
 * @param c -
 * @param d -
 */
export declare const fit: <T extends Prim>(x: Term<T>, a: Term<T>, b: Term<T>, c: Term<T>, d: Term<T>) => import("@thi.ng/shader-ast").FnCall<T>;
/**
 * Same as {@link fit}, but first clamps `x` to closed `[a,b]` interval.
 *
 * @param x -
 * @param a -
 * @param b -
 * @param c -
 * @param d -
 */
export declare const fitClamped: <T extends Prim>(x: Term<T>, a: Term<T>, b: Term<T>, c: Term<T>, d: Term<T>) => import("@thi.ng/shader-ast").FnCall<T>;
/**
 * Inline function. Fits value `a` in `[0,1]` interval to new interval `[b,c]`.
 * No clamping performed. Same as `mix(b, c, a)`
 *
 * @param a -
 * @param b -
 * @param c -
 */
export declare const fit01: <T extends Prim>(a: Term<T>, b: Term<T>, c: Term<T>) => Term<T>;
/**
 * Inline function. Fits value `x` in `[-1,1]` interval to `[0,1]` interval. No
 * clamping performed.
 *
 * @param x -
 */
export declare const fit1101: <T extends PrimTerm>(x: T) => Term<TermType<T>>;
/**
 * Inline function. Fits value `x` in `[0,1]` interval to `[-1,1]` interval. No
 * clamping performed.
 *
 * @param x -
 */
export declare const fit0111: <T extends PrimTerm>(x: T) => Term<TermType<T>>;
//# sourceMappingURL=fit.d.ts.map