import { IterableX } from './iterablex'; export declare class GroupedIterable extends IterableX { readonly key: TKey; private _source; constructor(key: TKey, source: Iterable); [Symbol.iterator](): Iterator; } export declare class GroupByIterable extends IterableX { private _source; private _keySelector; private _elementSelector; private _resultSelector; constructor(source: Iterable, keySelector: (value: TSource) => TKey, elementSelector: (value: TSource) => TValue, resultSelector: (key: TKey, values: Iterable) => TResult); [Symbol.iterator](): IterableIterator; } export declare function groupByResultIdentity(key: TKey, values: Iterable): any; export declare function groupBy(source: Iterable, keySelector: (value: TSource) => TKey): IterableX>; export declare function groupBy(source: Iterable, keySelector: (value: TSource) => TKey, elementSelector?: (value: TSource) => TValue): IterableX>; export declare function groupBy(source: Iterable, keySelector: (value: TSource) => TKey, elementSelector?: (value: TSource) => TValue, resultSelector?: (key: TKey, values: Iterable) => TResult): IterableX;