export type Comparable = number | string | boolean | undefined | null | Date; export type ComparableFilter = T extends Comparable ? T : never; export type ComparablePropertyNames = { [K in keyof T]: T[K] extends Comparable ? K : never; }[keyof T]; export type ComparableProperties = Pick>; export type CompareArg = ComparablePropertyNames | ((t: T) => Comparable); export type CompareFn = (a: T, b: T) => number; export declare function compareBy(extract: CompareArg, ...extractors: CompareArg[]): CompareFn; export declare function compareBy(extract: CompareArg): CompareFn; export declare function compareBy(extract1: CompareArg, extract2: CompareArg): CompareFn; export declare function compareBy(extract1: CompareArg, extract2: CompareArg, extract3: CompareArg): CompareFn; export declare function compareByRev(extract: CompareArg, ...extractors: CompareArg[]): CompareFn; export declare function compareByRev(extract: CompareArg): CompareFn; export declare function compareByRev(extract1: CompareArg, extract2: CompareArg): CompareFn; export declare function compareByRev(extract1: CompareArg, extract2: CompareArg, extract3: CompareArg): CompareFn; export declare function compareEach(...compareFn: CompareFn[]): CompareFn; export declare function compare(a: ComparableFilter, b: ComparableFilter): number; export declare function reverse(fn: CompareFn): CompareFn; //# sourceMappingURL=Comparable.d.ts.map