import type { GenericObject } from '../object/types';
import type { AsyncFunction, GenericFn } from '../types/index';
/**
 * * Type guard to check if a value is an array.
 * @param value - The value to check.
 * @returns `true` if the value is an array, otherwise `false`.
 */
export declare function isArray<T>(value: unknown): value is Array<T>;
/**
 * * Type guard to check if a value is an array with length.
 * @param value - The value to check.
 * @returns `true` if the value is an array with length, otherwise `false`.
 */
export declare function isValidArray<T>(value: unknown): value is Array<T>;
/**
 * * Type guard to check if a value is an object (excluding null).
 * @param value - The value to check.
 * @returns `true` if the value is an object, otherwise `false`.
 */
export declare function isObject(value: unknown): value is Record<string, unknown>;
/**
 * * Type guard to check if a value is an object (excluding null) and has keys in it.
 * @param value - The value to check.
 * @returns `true` if the value is an object with valid keys, otherwise `false`.
 */
export declare function isNotEmptyObject(value: unknown): value is GenericObject;
/**
 * * Type guard to check if a value is an object with specific keys.
 * @param value - The value to check.
 * @param keys - The set of keys the object should contain.
 * @returns `true` if the value is an object with the specified keys, otherwise `false`.
 */
export declare function isObjectWithKeys<T extends Record<string, unknown>>(value: unknown, keys: (keyof T)[]): value is T;
/**
 * * Type guard to check if a value is an empty object.
 * @param value - The value to check.
 * @returns `true` if the value is an empty object, otherwise `false`.
 */
export declare function isEmptyObject<T extends GenericObject>(value: T): boolean;
/**
 * * Type guard to check if a value is a function.
 * @param value - The value to check.
 * @returns `true` if the value is a function, otherwise `false`.
 */
export declare function isFunction(value: unknown): value is GenericFn;
/**
 * * Determines whether the provided property descriptor represents a method.
 *
 * @param descriptor - The property descriptor to check.
 * @returns `true` if the descriptor is defined and its value is a function; otherwise, `false`.
 */
export declare const isMethodDescriptor: (descriptor: PropertyDescriptor | undefined) => boolean;
/**
 * * Type guard to check if a value is a Date object.
 * @param value - The value to check.
 * @returns `true` if the value is a Date object, otherwise `false`.
 */
export declare function isDate(value: unknown): value is Date;
/**
 * * Type guard to check if a value is an array of a specific type.
 * @param value - The value to check.
 * @param typeCheck - The type guard function to check each item of the array.
 * @returns `true` if the value is an array of the specified type, otherwise `false`.
 */
export declare function isArrayOfType<T>(value: unknown, typeCheck: (item: unknown) => item is T): value is T[];
/**
 * * Type guard to check if a value is a Promise.
 * @param value - The value to check.
 * @returns `true` if the value is a Promise, otherwise `false`.
 */
export declare function isPromise(value: unknown): value is Promise<unknown>;
/**
 * * Type guard to check if a value is a Set.
 * @param value - The value to check.
 * @returns `true` if the value is a Set, otherwise `false`.
 */
export declare function isSet<T>(value: unknown): value is Set<T>;
/**
 * * Type guard to check if a value is a Map.
 * @param value - The value to check.
 * @returns `true` if the value is a Map, otherwise `false`.
 */
export declare function isMap<K, V>(value: unknown): value is Map<K, V>;
/**
 * * Type guard to check if a value is a RegExp.
 * @param value - The value to check.
 * @returns `true` if the value is a RegExp, otherwise `false`.
 */
export declare function isRegExp(value: unknown): value is RegExp;
/**
 * * Type guard to check if a value is an Error object.
 * @param value - The value to check.
 * @returns `true` if the value is an Error object, otherwise `false`.
 */
export declare function isError(value: unknown): value is Error;
/**
 * * Type guard to check if a string is valid JSON.
 * @param value - The value to check.
 * @returns `true` if the value is valid JSON, otherwise `false`.
 */
export declare function isJSON(value: unknown): value is string;
/**
 * * Type guard to check if a function returns a Promise.
 * @param fn - The function to check.
 * @returns `true` if the function returns a Promise, otherwise `false`.
 */
export declare function isReturningPromise<T>(fn: unknown): fn is AsyncFunction<T>;
//# sourceMappingURL=non-primitives.d.ts.map