import OrderedIterable from "./helpers/OrderedIterable"; /** * Adds a secondary ascending sort key to an {@link OrderedIterable}. * * @typeParam T - Element type contained in the ordered iterable. * @typeParam TCmp - Key type produced by the selector. * @param src - Ordered iterable produced by {@link _orderBy} or another `thenBy`. * @param selector - Selector that derives the additional key used to break ties. * @returns An {@link OrderedIterable} extended with the extra ascending key. * @throws Error Rethrows any error thrown by `selector`. * * @example * ```ts * const items = [ * { category: "fruit", name: "banana" }, * { category: "vegetable", name: "okra" }, * { category: "fruit", name: "apple" }, * ]; * const ordered = _orderBy(items, (item) => item.category); * const sorted = [..._thenBy(ordered, (item) => item.name)]; * console.log(sorted); * // [ * // { category: "fruit", name: "apple" }, * // { category: "fruit", name: "banana" }, * // { category: "vegetable", name: "okra" }, * // ] * ``` * * or using the curried version: * ```ts * const sorted = [ * ...pipeInto( * [ * { category: "fruit", name: "banana" }, * { category: "vegetable", name: "okra" }, * { category: "fruit", name: "apple" }, * ], * orderBy((item) => item.category), * thenBy((item) => item.name) * ), * ]; * console.log(sorted); * // [ * // { category: "fruit", name: "apple" }, * // { category: "fruit", name: "banana" }, * // { category: "vegetable", name: "okra" }, * // ] * ``` */ export declare function _thenBy(src: OrderedIterable, selector: (x: T) => TCmp): OrderedIterable; /** * Curried version of {@link _thenBy}. */ export declare const thenBy: (selector: (x: T) => TCmp) => (src: OrderedIterable) => OrderedIterable;