import type { ListOf } from '../internal/types/union.js'; export type Median = AS extends [] | readonly [] ? never : HasOnlyNumberOrBigInt> extends true ? AS[number] extends number | bigint ? GeneralizeNumeric : never : never; type HasOnlyNumberOrBigInt = [ HasOnlyNumberAndHaltAtNonNumeric, HasOnlyBigIntAndHaltAtNonNumeric, ] extends [true, false] ? true : [ HasOnlyNumberAndHaltAtNonNumeric, HasOnlyBigIntAndHaltAtNonNumeric, ] extends [false, true] ? true : false; type HasOnlyNumberAndHaltAtNonNumeric = AS extends readonly [infer THead, ...infer TTail] ? TTail extends [] ? THead extends number ? true : false : THead extends number ? HasOnlyNumberAndHaltAtNonNumeric extends true ? true : false : false : never; type HasOnlyBigIntAndHaltAtNonNumeric = AS extends readonly [infer THead, ...infer TTail] ? TTail extends [] ? THead extends bigint ? true : false : THead extends bigint ? HasOnlyBigIntAndHaltAtNonNumeric extends true ? true : false : false : never; type GeneralizeNumeric = number extends N ? N : bigint extends N ? N : N extends number ? number : bigint; /** * Returns the median of all elements in the array (only for number or bigint arrays). * * If the array has an even number of elements, the median is the average of the two middle elements. * @param array The array to get the median of. * * @throws {TypeError} If the array is empty or contains non-numbers or mixed numbers and bigints. * * @example * ```typescript * const arr = [2, 1, 3.5, 3, 4]; * median(array); // => 3 * ``` */ declare const median: ( array: T[] | readonly T[], ) => | (HasOnlyNumberOrBigInt> extends true ? T extends number | bigint ? GeneralizeNumeric : never : never) | (HasOnlyNumberOrBigInt> extends true ? T extends number | bigint ? GeneralizeNumeric : never : never); export default median; //# sourceMappingURL=median.d.ts.map