import type { ListOf } from '../internal/types/union.js'; export type Mean = AS extends [] | readonly [] ? 0 : 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 mean of all elements in the array (only for number or bigint arrays). * * **Do not** use it with an array of bigint with zero elements, as it will return `0` instead of `0n`. * @param array The array to get the mean of. * * @throws {TypeError} If the array contains non-numbers or mixed numbers and bigints. * * @example * ```typescript * const arr = [2, 1, 3.5, 3, 4]; * mean(array); // => 2.7 * ``` */ declare const mean: ( 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 mean; //# sourceMappingURL=mean.d.ts.map