// @flow
import type { GuardValue } from "../types";
import type { GuardObject } from "../types";
import type { GuardPromise } from "../types";
import type { GuardArray } from "../types";
declare export function isString(value: A | string): boolean;
declare export function isNumber(value: A | number): boolean;
declare export function isBoolean(value: A | boolean): boolean;
declare export function isPromise(value: A | Promise): boolean;
declare export function isArray(value: A | $ReadOnlyArray): boolean;
declare export function isObject(value: A | { [key: string]: any }): boolean;
declare export function isFunction(value: A | Function): boolean;
declare export function isError(value: A | Error): boolean;
declare export function isDate(value: A): boolean;
declare export function isNullable(value: A): boolean;
declare export function isNotNullable(value: A): boolean;
declare export function isNull(value: A | null | void): boolean;
declare export function isUndefined(value: A | null | void): boolean;
declare export function isNot(
value: A,
predicateFn: (value: A) => boolean
): boolean;
declare export function isNot(
predicateFn: (value: A) => boolean
): (value: A) => boolean;
declare export function isNot(
value: A,
predicateFn: (value: A) => any
): boolean;
declare export function isNot(
predicateFn: (value: A) => any
): (value: A) => boolean;