import { IterableX } from './iterablex'; export declare abstract class OrderedIterableBaseX extends IterableX { _source: Iterable; constructor(source: Iterable); [Symbol.iterator](): IterableIterator; thenBy(keySelector: (item: TSource) => TKey, comparer?: (fst: TKey, snd: TKey) => number): OrderedIterableBaseX; thenByDescending(keySelector: (item: TSource) => TKey, comparer?: (fst: TKey, snd: TKey) => number): OrderedIterableBaseX; abstract _getSorter(elements: TSource[], next?: (x: number, y: number) => number): (x: number, y: number) => number; } export declare class OrderedIterableX extends OrderedIterableBaseX { private _keySelector; private _comparer; private _descending; private _parent?; constructor(source: Iterable, keySelector: (item: TSource) => TKey, comparer: (fst: TKey, snd: TKey) => number, descending: boolean, parent?: OrderedIterableBaseX); _getSorter(elements: TSource[], next?: (x: number, y: number) => number): (x: number, y: number) => number; } export declare function orderBy(source: Iterable, keySelector: (item: TSource) => TKey, comparer?: (fst: TKey, snd: TKey) => number): OrderedIterableX; export declare function orderByDescending(source: Iterable, keySelector: (item: TSource) => TKey, comparer?: (fst: TKey, snd: TKey) => number): OrderedIterableX; export declare function thenBy(source: OrderedIterableBaseX, keySelector: (item: TSource) => TKey, comparer?: (fst: TKey, snd: TKey) => number): OrderedIterableX; export declare function thenByDescending(source: OrderedIterableBaseX, keySelector: (item: TSource) => TKey, comparer?: (fst: TKey, snd: TKey) => number): OrderedIterableX;