export interface ISubscribable { subscribe: (observer?: IPartialObserver) => ISubscription; isEqual?: (subscribable: ISubscribable) => boolean; } export interface ISubscription { unsubscribe: () => void; } export interface IPartialObserver { next?: (value: T) => any; error?: (err: any) => any; complete?: () => any; }