import { NotPromise, AnyObject, AnyFunction } from './global';
export declare class Is {
    get not(): IsNot;
    null(value: unknown): value is null;
    null<T>(value: unknown, defaultValue: () => T): T;
    function(value: unknown): value is Function;
    function<T extends AnyFunction>(value: T): value is T;
    class<T extends Function>(value: T): value is T;
    class<T extends Function = Function>(value: unknown): value is T;
    prototype<T extends Object>(value: T): value is T;
    array(value: unknown | unknown[]): value is any[];
    array<T>(value: T | T[]): value is T[];
    array<T>(value: unknown): value is T[];
    promise<T>(value: Promise<T>): value is Promise<T>;
    promise<T = unknown>(value: unknown): value is Promise<NotPromise<T>>;
    guid(value: unknown): value is string;
    keyValuePair(value: unknown): value is {
        key: unknown;
        value: unknown;
    };
    object<T extends AnyObject>(value: T): value is T;
    object<T extends AnyObject = AnyObject>(value: unknown): value is T;
    plainObject<T extends AnyObject>(value: T): value is T;
    plainObject<T extends AnyObject = AnyObject>(value: unknown): value is T;
    date(value: unknown): value is Date;
    date(value: unknown, defaultValue: Date): Date;
    boolean(value: unknown): value is boolean;
    string(value: unknown): value is string;
    empty<T extends string | null | undefined>(value: T): value is Exclude<T, string>;
    error(value: AnyObject): value is Error;
    number(value: unknown): value is number;
    enum(value: any, enumDefinition: object): boolean;
    primitive<T extends string | number | boolean>(value: T): value is T;
}
export declare class IsNot {
    null<T>(value: T): value is Exclude<T, null | undefined>;
    null<T>(value: unknown, defaultValue: () => T): T;
    empty(value: unknown): value is string;
    empty(...values: unknown[]): boolean;
    object(value: unknown): boolean;
}
export declare const is: Is;
