| import { Operator } from './Operator'; | 
| import { Observable } from './Observable'; | 
| import { Subscriber } from './Subscriber'; | 
| import { Subscription } from './Subscription'; | 
| import { Observer, SubscriptionLike, TeardownLogic } from './types'; | 
| /** | 
|  * @class SubjectSubscriber<T> | 
|  */ | 
| export declare class SubjectSubscriber<T> extends Subscriber<T> { | 
|     protected destination: Subject<T>; | 
|     constructor(destination: Subject<T>); | 
| } | 
| /** | 
|  * A Subject is a special type of Observable that allows values to be | 
|  * multicasted to many Observers. Subjects are like EventEmitters. | 
|  * | 
|  * Every Subject is an Observable and an Observer. You can subscribe to a | 
|  * Subject, and you can call next to feed values as well as error and complete. | 
|  * | 
|  * @class Subject<T> | 
|  */ | 
| export declare class Subject<T> extends Observable<T> implements SubscriptionLike { | 
|     observers: Observer<T>[]; | 
|     closed: boolean; | 
|     isStopped: boolean; | 
|     hasError: boolean; | 
|     thrownError: any; | 
|     constructor(); | 
|     /**@nocollapse | 
|      * @deprecated use new Subject() instead | 
|     */ | 
|     static create: Function; | 
|     lift<R>(operator: Operator<T, R>): Observable<R>; | 
|     next(value?: T): void; | 
|     error(err: any): void; | 
|     complete(): void; | 
|     unsubscribe(): void; | 
|     /** @deprecated This is an internal implementation detail, do not use. */ | 
|     _trySubscribe(subscriber: Subscriber<T>): TeardownLogic; | 
|     /** @deprecated This is an internal implementation detail, do not use. */ | 
|     _subscribe(subscriber: Subscriber<T>): Subscription; | 
|     /** | 
|      * Creates a new Observable with this Subject as the source. You can do this | 
|      * to create customize Observer-side logic of the Subject and conceal it from | 
|      * code that uses the Observable. | 
|      * @return {Observable} Observable that the Subject casts to | 
|      */ | 
|     asObservable(): Observable<T>; | 
| } | 
| /** | 
|  * @class AnonymousSubject<T> | 
|  */ | 
| export declare class AnonymousSubject<T> extends Subject<T> { | 
|     protected destination?: Observer<T>; | 
|     constructor(destination?: Observer<T>, source?: Observable<T>); | 
|     next(value: T): void; | 
|     error(err: any): void; | 
|     complete(): void; | 
|     /** @deprecated This is an internal implementation detail, do not use. */ | 
|     _subscribe(subscriber: Subscriber<T>): Subscription; | 
| } |