export interface Observable { subscribe(subscriber: Subscriber): Subscription; } export declare type PartialObservable = { [K in keyof T]?: T[K] | Observable; }; export interface Subscriber { next(value: T): void; error(err: any): void; complete(): void; } export interface Subscription { unsubscribe: Function; } export interface Subject extends Observable { next(value: T): void; } export declare function isObs>(x: T | any): x is T; export declare function isSubject>(x: T | any): x is T; export declare function subscribe(obs: Observable, next: ((x: T) => void) | Subscriber): Subscription; export declare function unsubscribe(subscription: Subscription): any;