import * as P from ".";
/**
 * Any typed array
 *
 * @category Instances
 */
export type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array;
/**
 * Returns a new `Predicate<T>`.
 * Returns `true` if `value` is length less or equal to a pre-defined `count`.
 *
 * @category Predicate
 * @example
 * import { max } from "perlica/Predicate/Array"
 *
 * const predicate = max(5);
 *
 * expect(predicate([1, 2, 3, 4])).toBeTrue();
 * expect(predicate([1, 2, 3, 4, 5])).toBeFalse();
 */
export declare const maxLen: <T>(count: number) => P.Predicate<T[]>;
/**
 * Returns a new `Predicate<T>`.
 * Returns `true` if `value` is length greater or equal to a pre-defined `count`.
 *
 * @category Predicate
 * @example
 * import { min } from "perlica/Predicate/Array"
 *
 * const predicate = min(4);
 *
 * expect(predicate([1, 2, 3, 4])).toBeTrue();
 * expect(predicate([1, 2, 3])).toBeFalse();
 */
export declare const minLen: <T>(count: number) => P.Predicate<T[]>;
/**
 * Returns a new `Predicate<T>`.
 * Return `true` if `value` is length equal to a pre-defined `count`.
 *
 * @category Predicate
 * @example
 * import { len } from "perlica/Predicate/Array"
 *
 * const predicate = len(4);
 *
 * expect(predicate([1, 2, 3, 4])).toBeTrue();
 * expect(predicate([1, 2])).toBeFalse();
 * expect(predicate([1, 2, 3, 4, 5])).toBeFalse();
 */
export declare const len: <T>(count: number) => P.Predicate<T[]>;
/**
 * Returns `true` if `value` is `Array`, otherwise returns `false`.
 *
 * @category Guard
 * @example
 * import { isArray } from "perlica/Predicate"
 *
 * expect(isArray([])).toBeTrue();
 * expect(isArray(4)).toBeFalse();
 * expect(isArray(null)).toBeFalse();
 * expect(isArray(true)).toBeFalse();
 */
export declare const isArray: P.Guard<unknown, unknown[]>;
/**
 * Returns `true` if `self` is empty, otherwise returns `false`.
 *
 * @category Guard
 * @example
 * import { isEmpty } from "perlica/Predicate/Array"
 *
 * expect(isEmpty([4])).toBeFalse();
 * expect(isEmpty([])).toBeTrue();
 */
export declare const isEmpty: <T>(self: T[]) => self is [];
/**
 * Returns `true` if `self` is not empty, otherwise returns `false`.
 *
 * @category Guard
 * @example
 * import { isNonEmpty } from "perlica/Predicate/Array"
 *
 * expect(isEmpty([4])).toBeTrue();
 * expect(isEmpty([])).toBeFalse();
 */
export declare const isNonEmpty: <T>(self: T[]) => self is [T, ...T[]];
/**
 * Returns `true` if `value` is `TypedArray`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isTypedArray: P.Guard<unknown, TypedArray>;
/**
 * Returns `true` if `value` is `Int8Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isInt8Array: P.Guard<unknown, Int8Array>;
/**
 * Returns `true` if `value` is `Uint8Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isUint8Array: P.Guard<unknown, Uint8Array>;
/**
 * Returns `true` if `value` is `Uint8ClampedArray`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isUint8ClampedArray: P.Guard<unknown, Uint8ClampedArray>;
/**
 * Returns `true` if `value` is `Int16Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isInt16Array: P.Guard<unknown, Int16Array>;
/**
 * Returns `true` if `value` is `Uint16Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isUint16Array: P.Guard<unknown, Uint16Array>;
/**
 * Returns `true` if `value` is `Int32Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isInt32Array: P.Guard<unknown, Int32Array>;
/**
 * Returns `true` if `value` is `Uint32Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isUint32Array: P.Guard<unknown, Uint32Array>;
/**
 * Returns `true` if `value` is `Float32Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isFloat32Array: P.Guard<unknown, Float32Array>;
/**
 * Returns `true` if `value` is `Float64Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isFloat64Array: P.Guard<unknown, Float64Array>;
/**
 * Returns `true` if `value` is `BigInt64Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isBigInt64Array: P.Guard<unknown, BigInt64Array>;
/**
 * Returns `true` if `value` is `BigUint64Array`, otherwise returns `false`.
 *
 * @category Guards
 */
export declare const isBigUint64Array: P.Guard<unknown, BigUint64Array>;
