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 { (source: T): R; } export interface OperatorFunction extends UnaryFunction, Observable> { } export declare type FactoryOrValue = T | (() => T); export interface MonoTypeOperatorFunction extends OperatorFunction { } export interface Timestamp { value: T; timestamp: number; } export interface TimeInterval { value: T; interval: number; } /** SUBSCRIPTION INTERFACES */ export interface Unsubscribable { unsubscribe(): void; } export declare type TeardownLogic = Unsubscribable | Function | void; export interface SubscriptionLike extends Unsubscribable { unsubscribe(): void; readonly closed: boolean; } export declare type SubscribableOrPromise = Subscribable | Subscribable | PromiseLike | InteropObservable; /** OBSERVABLE INTERFACES */ export interface Subscribable { subscribe(observer?: PartialObserver): 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 declare type ObservableInput = SubscribableOrPromise | ArrayLike | Iterable; /** @deprecated use {@link InteropObservable } */ export declare type ObservableLike = InteropObservable; export declare type InteropObservable = { [Symbol.observable]: () => Subscribable; }; /** OBSERVER INTERFACES */ export interface NextObserver { closed?: boolean; next: (value: T) => void; error?: (err: any) => void; complete?: () => void; } export interface ErrorObserver { closed?: boolean; next?: (value: T) => void; error: (err: any) => void; complete?: () => void; } export interface CompletionObserver { closed?: boolean; next?: (value: T) => void; error?: (err: any) => void; complete: () => void; } export declare type PartialObserver = NextObserver | ErrorObserver | CompletionObserver; export interface Observer { closed?: boolean; next: (value: T) => void; error: (err: any) => void; complete: () => void; } /** SCHEDULER INTERFACES */ export interface SchedulerLike { now(): number; schedule(work: (this: SchedulerAction, state?: T) => void, delay?: number, state?: T): Subscription; } export interface SchedulerAction extends Subscription { schedule(state?: T, delay?: number): Subscription; } export declare type ObservedValueOf = O extends ObservableInput ? T : never; export declare type ObservedValuesFromArray = X extends Array> ? T : never;