import { Stimulus, Zeta } from './type';
/**
 * Calculates the probability that someone with a given ability level theta will
 * answer correctly an item. Uses the 4 parameters logistic model
 *
 * @param {number} theta - ability estimate
 * @param {Zeta} zeta - item params
 * @returns {number} the probability
 */
export declare const itemResponseFunction: (theta: number, zeta: Zeta) => number;
/**
 * A 3PL Fisher information function
 *
 * @param {number} theta - ability estimate
 * @param {Zeta} zeta - item params
 * @returns {number} - the expected value of the observed information
 */
export declare const fisherInformation: (theta: number, zeta: Zeta) => number;
/**
 * Return a Gaussian distribution within a given range
 *
 * @param {number} mean
 * @param {number} stdDev
 * @param {number} min
 * @param {number} max
 * @param {number} stepSize - the quantization (step size) of the internal table, default = 0.1
 * @returns {Array<[number, number]>} - a normal distribution
 */
export declare const normal: (mean?: number, stdDev?: number, min?: number, max?: number, stepSize?: number) => Array<[number, number]>;
/**
 * Return a uniform distribution within a given range
 *
 * @param {number} min - lower bound of the uniform distribution
 * @param {number} max - upper bound of the uniform distribution
 * @param {number} stepSize - the quantization (step size) of the internal table, default = 0.1
 * @param {number} fullMin - full range minimum (defaults to min)
 * @param {number} fullMax - full range maximum (defaults to max)
 * @returns {Array<[number, number]>} - a uniform distribution
 */
export declare const uniform: (min?: number, max?: number, stepSize?: number, fullMin?: number, fullMax?: number) => Array<[number, number]>;
/**
 * Find the item in a given array that has the difficulty closest to the target value
 *
 * @remarks
 * The input array of stimuli must be sorted by difficulty.
 *
 * @param {Stimulus[]} inputStimuli - an array of stimuli sorted by difficulty
 * @param {number} target - ability estimate
 * @returns {number} the index of stimuli
 */
export declare const findClosest: (inputStimuli: Array<Stimulus>, target: number) => number;
