import { Observable } from "rxjs"; export interface RemoteObservable { subscribe(observer: (t: T) => void): Promise; } export interface RemoteSubscription { unsubscribe(): Promise; } type ObservableType = T extends null | undefined ? T : T extends object & { subscribe(onfulfilled: infer F): any; } ? F extends ((value: infer V, ...args: any) => any) ? V : never : T; export type MethodsOf = { [P in keyof T as T[P] extends ((...args: any[]) => Promise) ? P : never]: T[P]; }; export type EventsOf = { [P in keyof T as T[P] extends Observable ? P : never]: RemoteObservable>; }; export type Proxied = MethodsOf & EventsOf; export declare function markProxied(value: T | Proxied): Proxied; export {};