declare type AnyRecord = Record<string, any>;
declare type Direction = 'asc' | 'desc';
declare type KeyOrExtractor<T extends AnyRecord> = ((thing: T) => T[keyof T]) | keyof T;
declare type KeyDirectionTuple<T extends AnyRecord> = [KeyOrExtractor<T>, Direction];
declare const enum Comparison {
    lower = -1,
    greater = 1,
    equal = 0
}
export declare function by<T extends AnyRecord>(...keys: Readonly<(KeyDirectionTuple<T> | KeyOrExtractor<T>)[]>): (left: Readonly<T>, right: Readonly<T>) => Comparison;
export {};
