import Vue from 'vue' import { WatchOptions } from 'vue' import { Observable } from 'rxjs' export type Observables = Record> declare module 'vue/types/options' { interface ComponentOptions { subscriptions?: Observables | ((this: V) => Observables) domStreams?: string[] observableMethods?: string[] | Record } } export interface WatchObservable { newValue: T oldValue: T } declare module "vue/types/vue" { interface Vue { $observables: Observables; $watchAsObservable(expr: string, options?: WatchOptions): Observable> $watchAsObservable(fn: (this: this) => T, options?: WatchOptions): Observable> $eventToObservable(event: string): Observable<{name: string, msg: any}> $subscribeTo( observable: Observable, next: (t: T) => void, error?: (e: any) => void, complete?: () => void): void $fromDOMEvent(selector: string | null, event: string): Observable $createObservableMethod(methodName: string): Observable } } export default function VueRx(V: typeof Vue): void