import type { Fn3, FnU3 } from "@thi.ng/api";
import type { MultiFn3O } from "@thi.ng/defmulti";
import type { IRandom } from "@thi.ng/random";
import type { Color, ReadonlyColor, TypedColor } from "./api.js";
export type AnalogFn = {
    (out: Color | null, src: TypedColor<any>, delta: number, rnd?: IRandom): Color;
} & MultiFn3O<Color | null, TypedColor<any>, number, IRandom, Color>;
export declare const defAnalog: FnU3<Fn3<number, number, IRandom, number>, (out: Color | null, src: TypedColor<any>, delta: number, rnd?: IRandom) => Color>;
/**
 * Returns a random analog color based on given `src` color and variance
 * `delta`. Each channel will be randomized by +/- `delta`, optionally using
 * provided
 * [`IRandom`](https://docs.thi.ng/umbrella/random/interfaces/IRandom.html)
 * PRNG.
 *
 * @remarks
 * If `out` is null, the resulting color will be written back into `src`.
 *
 */
export declare const analog: AnalogFn;
/**
 * Similar to {@link analogRgb}. Returns an analog color based on given HSVA
 * color, with each channel randomly varied by given channel-specific delta
 * amounts (and optionally given
 * [`IRandom`](https://docs.thi.ng/umbrella/random/interfaces/IRandom.html)
 * PRNG).
 *
 * @remarks
 * This function provides more user control than {@link analog}, but the latter
 * is recommended for most use cases.
 *
 * By default (unless `deltaS`, `deltaV`, `deltaA` are provided) only the hue of
 * the color will be modulated.
 *
 * @param out -
 * @param src -
 * @param deltaH -
 * @param deltaS -
 * @param deltaV -
 * @param deltaA -
 * @param rnd -
 */
export declare const analogHsv: (out: Color | null, src: ReadonlyColor, deltaH: number, deltaS?: number, deltaV?: number, deltaA?: number, rnd?: IRandom) => import("@thi.ng/vectors").Vec<number>;
/**
 * Similar to {@link analogHsv}. Returns an analog color based on given RGBA
 * color, with each channel randomly varied by given delta amounts (and
 * optionally given
 * [`IRandom`](https://docs.thi.ng/umbrella/random/interfaces/IRandom.html)
 * PRNG).
 *
 * @remarks
 * By default the green and blue channel variance will be the same as `deltaR`.
 *
 * @param out -
 * @param src -
 * @param deltaR -
 * @param deltaG -
 * @param deltaB -
 * @param deltaA -
 * @param rnd -
 */
export declare const analogRgb: (out: Color | null, src: ReadonlyColor, deltaR: number, deltaG?: number, deltaB?: number, deltaA?: number, rnd?: IRandom) => import("@thi.ng/vectors").Vec<number>;
//# sourceMappingURL=analog.d.ts.map