import { Subscriber } from '../Subscriber'; import { Subscription } from '../Subscription'; import { Observable } from '../Observable'; import { Subject } from '../Subject'; import { OperatorFunction } from '../types'; export declare function groupBy(keySelector: (value: T) => K): OperatorFunction>; export declare function groupBy(keySelector: (value: T) => K, elementSelector: void, durationSelector: (grouped: GroupedObservable) => Observable): OperatorFunction>; export declare function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable): OperatorFunction>; export declare function groupBy(keySelector: (value: T) => K, elementSelector?: (value: T) => R, durationSelector?: (grouped: GroupedObservable) => Observable, subjectSelector?: () => Subject): OperatorFunction>; export interface RefCountSubscription { count: number; unsubscribe: () => void; closed: boolean; attemptedToUnsubscribe: boolean; } /** * An Observable representing values belonging to the same group represented by * a common key. The values emitted by a GroupedObservable come from the source * Observable. The common key is available as the field `key` on a * GroupedObservable instance. * * @class GroupedObservable */ export declare class GroupedObservable extends Observable { key: K; private groupSubject; private refCountSubscription?; /** @deprecated Do not construct this type. Internal use only */ constructor(key: K, groupSubject: Subject, refCountSubscription?: RefCountSubscription); /** @deprecated This is an internal implementation detail, do not use. */ _subscribe(subscriber: Subscriber): Subscription; }