| import { Observable } from './Observable'; | 
| import { Subscription } from './Subscription'; | 
|   | 
| /** | 
|  * Note: This will add Symbol.observable globally for all TypeScript users, | 
|  * however, we are no longer polyfilling Symbol.observable | 
|  */ | 
| declare global { | 
|   interface SymbolConstructor { | 
|     readonly observable: symbol; | 
|   } | 
| } | 
|   | 
| /** OPERATOR INTERFACES */ | 
|   | 
| export interface UnaryFunction<T, R> { (source: T): R; } | 
|   | 
| export interface OperatorFunction<T, R> extends UnaryFunction<Observable<T>, Observable<R>> {} | 
|   | 
| export type FactoryOrValue<T> = T | (() => T); | 
|   | 
| export interface MonoTypeOperatorFunction<T> extends OperatorFunction<T, T> {} | 
|   | 
| export interface Timestamp<T> { | 
|   value: T; | 
|   timestamp: number; | 
| } | 
|   | 
| export interface TimeInterval<T> { | 
|   value: T; | 
|   interval: number; | 
| } | 
|   | 
| /** SUBSCRIPTION INTERFACES */ | 
|   | 
| export interface Unsubscribable { | 
|   unsubscribe(): void; | 
| } | 
|   | 
| export type TeardownLogic = Unsubscribable | Function | void; | 
|   | 
| export interface SubscriptionLike extends Unsubscribable { | 
|   unsubscribe(): void; | 
|   readonly closed: boolean; | 
| } | 
|   | 
| export type SubscribableOrPromise<T> = Subscribable<T> | Subscribable<never> | PromiseLike<T> | InteropObservable<T>; | 
|   | 
| /** OBSERVABLE INTERFACES */ | 
|   | 
| export interface Subscribable<T> { | 
|   subscribe(observer?: PartialObserver<T>): Unsubscribable; | 
|   /** @deprecated Use an observer instead of a complete callback */ | 
|   subscribe(next: null | undefined, error: null | undefined, complete: () => void): Unsubscribable; | 
|   /** @deprecated Use an observer instead of an error callback */ | 
|   subscribe(next: null | undefined, error: (error: any) => void, complete?: () => void): Unsubscribable; | 
|   /** @deprecated Use an observer instead of a complete callback */ | 
|   subscribe(next: (value: T) => void, error: null | undefined, complete: () => void): Unsubscribable; | 
|   subscribe(next?: (value: T) => void, error?: (error: any) => void, complete?: () => void): Unsubscribable; | 
| } | 
|   | 
| export type ObservableInput<T> = SubscribableOrPromise<T> | ArrayLike<T> | Iterable<T>; | 
|   | 
| /** @deprecated use {@link InteropObservable } */ | 
| export type ObservableLike<T> = InteropObservable<T>; | 
|   | 
| export type InteropObservable<T> = { [Symbol.observable]: () => Subscribable<T>; }; | 
|   | 
| /** OBSERVER INTERFACES */ | 
|   | 
| export interface NextObserver<T> { | 
|   closed?: boolean; | 
|   next: (value: T) => void; | 
|   error?: (err: any) => void; | 
|   complete?: () => void; | 
| } | 
|   | 
| export interface ErrorObserver<T> { | 
|   closed?: boolean; | 
|   next?: (value: T) => void; | 
|   error: (err: any) => void; | 
|   complete?: () => void; | 
| } | 
|   | 
| export interface CompletionObserver<T> { | 
|   closed?: boolean; | 
|   next?: (value: T) => void; | 
|   error?: (err: any) => void; | 
|   complete: () => void; | 
| } | 
|   | 
| export type PartialObserver<T> = NextObserver<T> | ErrorObserver<T> | CompletionObserver<T>; | 
|   | 
| export interface Observer<T> { | 
|   closed?: boolean; | 
|   next: (value: T) => void; | 
|   error: (err: any) => void; | 
|   complete: () => void; | 
| } | 
|   | 
| /** SCHEDULER INTERFACES */ | 
|   | 
| export interface SchedulerLike { | 
|   now(): number; | 
|   schedule<T>(work: (this: SchedulerAction<T>, state?: T) => void, delay?: number, state?: T): Subscription; | 
| } | 
| export interface SchedulerAction<T> extends Subscription { | 
|   schedule(state?: T, delay?: number): Subscription; | 
| } | 
|   | 
| export type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never; | 
|   | 
| export type ObservedValuesFromArray<X> = X extends Array<ObservableInput<infer T>> ? T : never; |