import type { Dual, Op1, Op1N, Op2, Op3, Op4 } from "./api.js";
/**
 * Creates a multivariate dual number.
 *
 * @param real - real value
 * @param n - number of variables (default: 1)
 * @param i - variable index (0 < i <= n)
 */
export declare const dual: (real: number, n?: number, i?: number) => Dual;
/**
 * Creates a 1-dual number of `r`. Syntax sugar for {@link dual}.
 *
 * @param r -
 * @param i -
 */
export declare const $: (r: number, i?: number) => number[];
/**
 * Creates a 2-dual number of `r`. Syntax sugar for {@link dual}.
 *
 * @param r -
 * @param i -
 */
export declare const $2: (r: number, i?: number) => Dual;
/**
 * Creates a 3-dual number of `r`. Syntax sugar for {@link dual}.
 *
 * @param r -
 * @param i -
 */
export declare const $3: (r: number, i?: number) => Dual;
/**
 * Creates a 4-dual number of `r`. Syntax sugar for {@link dual}.
 *
 * @param r -
 * @param i -
 */
export declare const $4: (r: number, i?: number) => Dual;
export declare const defOp: <T extends Function>(single: T, multi: T, dispatch?: number) => T;
export declare const add: Op2;
export declare const sub: Op2;
export declare const neg: Op1;
export declare const mul: Op2;
export declare const div: Op2;
export declare const abs: Op1;
export declare const sqrt: Op1;
export declare const exp: Op1;
export declare const log: Op1;
export declare const pow: Op1N;
export declare const sin: Op1;
export declare const cos: Op1;
export declare const tan: Op1;
export declare const atan: Op1;
/**
 * Linear interpolation for dual numbers: `a + (b - a) * t`
 *
 * @param a -
 * @param b -
 * @param t -
 */
export declare const mix: (a: Dual, b: Dual, t: Dual) => Dual;
/**
 * Higher order function. Takes a 2-multivariate {@link Op2} and returns new
 * function which takes two real numbers `x` and `y` representing variables in
 * the given function. When called, converts `x` and `y` first into dual numbers
 * and then calls `fn` and returns result.
 *
 * @remarks
 * The result tuple can be interpreted the following:
 *
 * - index 0 - real value of `fn`
 * - index 1 - derivative of first var at `x`
 * - index 2 - derivative of second var at `y`
 *
 * @param fn -
 */
export declare const evalFn2: (fn: Op2) => (x: number, y: number) => Dual;
/**
 * Same as {@link evalFn2}, but 3-multivariate functions.
 *
 * @param fn -
 */
export declare const evalFn3: (fn: Op3) => (x: number, y: number, z: number) => Dual;
/**
 * Same as {@link evalFn4}, but 4-multivariate functions.
 *
 * @param fn -
 */
export declare const evalFn4: (fn: Op4) => (x: number, y: number, z: number, w: number) => Dual;
//# sourceMappingURL=ops.d.ts.map