interface Identity {
    <T>(a: T): T;
}
declare const identity: Identity;

interface Constant {
    <T>(a: T): (_?: any) => T;
}
declare const constant: Constant;

type Setoid = {
    "fantasy-land/equals": (b: Setoid) => boolean;
} | {
    equals: (b: Setoid) => boolean;
};
interface Equals {
    (a: Setoid): (b: Setoid) => boolean;
    (a?: any): (b?: any) => boolean;
}
declare const equals: Equals;

interface GetType {
    (a?: any): string;
}
declare const getType: GetType;

interface Is {
    (type: string): (a?: any) => boolean;
}
declare const is: Is;

interface IsEqual {
    (a?: any): (b?: any) => boolean;
}
declare const isEqual: IsEqual;

interface IsSame {
    (a?: any): (b?: any) => boolean;
}
declare const isSame: IsSame;

interface IsSameType {
    (a?: any): (b?: any) => boolean;
}
declare const isSameType: IsSameType;

interface IsTruthy {
    (a?: any): boolean;
}
declare const isTruthy: IsTruthy;

interface IsNil {
    (a?: any): boolean;
}
declare const isNil: IsNil;

interface IsFunction {
    (a?: any): boolean;
}
declare const isFunction: IsFunction;

interface IsDate {
    (a?: any): boolean;
}
declare const isDate: IsDate;

interface IsIterable {
    (a?: any): boolean;
}
declare const isIterable: IsIterable;

interface IsSetoid {
    (a?: any): boolean;
}
declare const isSetoid: IsSetoid;

interface Inspect {
    (a?: any): string;
}
declare const inspect: Inspect;

declare const nodeInspect: unique symbol;

declare const random: (seed?: number) => number;

export { identity as I, constant as K, constant, equals, getType, identity, inspect, is, isDate, isEqual, isFunction, isIterable, isNil, isSame, isSameType, isSetoid, isTruthy, nodeInspect, random };
