/** The identity function, returns the value it was given */ export declare const identity: (x: T) => T; /** Returns a function that always returns the same value. Also known as `const` in other languages */ export declare const always: (x: T) => ((y: U) => T); export declare const Order: { readonly LT: "LT"; readonly EQ: "EQ"; readonly GT: "GT"; }; export type Order = 'LT' | 'EQ' | 'GT'; /** Compares two values using the default "<" and ">" operators */ export declare const compare: (x: T, y: T) => Order; /** Maps the Order enum to the values expected by the standard ECMAScript library when doing comparison (Array.prototype.sort, for example) */ export declare const orderToNumber: (order: Order) => number; type TupleOfLength = Extract<{ [K in keyof T]: any; }, any[]>; export type CurriedFn = ] : never>(...args: TProvidedArgs) => TProvidedArgs extends TAllArgs ? TReturn : TAllArgs extends [...TupleOfLength, ...infer TRestOfArgs] ? CurriedFn : never; /** Takes a function that receives multiple arguments and returns a "curried" version of that function that can take any number of those arguments and if they are less than needed a new function that takes the rest of them will be returned */ export declare const curry: (fn: (...args: TArgs) => TReturn) => CurriedFn; export {};