export type Nullable = T | undefined; export interface Morphism { (value: T): U; } export type Primitive = string | number | boolean | symbol | bigint | null | undefined; export interface ToString { toString(): string; } export declare function staticImplements(): (constructor: U) => void; export declare function isPlainObject(value: any): boolean; export declare function isFunction(value: any): value is Function; export declare function isIterable(value: any): value is Iterable; export declare function isString(value: any): value is string; export declare function isNumber(value: any): value is number; export type Constructor = new (...args: any[]) => T; export declare function orElse(thisArg: any, a: Nullable, b: Function): (...args: any) => any; export declare function ifNull(thisArg: any, b: Function, ...args: any): (a: Nullable) => any; export declare function mixin(impl: Function): >(constructor: TBase) => TBase; type AnyFunc = (...arg: any) => any; type PipeArgs = F extends [ (...args: infer A) => infer B ] ? [...Acc, (...args: A) => B] : F extends [(...args: infer A) => any, ...infer Tail] ? Tail extends [(arg: infer B) => any, ...any[]] ? PipeArgs B]> : Acc : Acc; type LastFnReturnType, Else = never> = F extends [ ...any[], (...arg: any) => infer R ] ? R : Else; export declare function pipe(arg: Parameters[0], firstFn: FirstFn, ...fns: PipeArgs extends F ? F : PipeArgs): LastFnReturnType>; export {};