import { Observer, Subscribable, TeardownLogic } from 'rxjs'; import { ProxyDescriptor, Request, Response, WebViewCatOnDataEvent } from './common.js'; import { webViewCallbackKey, webViewHelperKey } from './utils.js'; declare global { interface Window { ReactNativeWebView?: { postMessage: (message: string) => void; }; [webViewCallbackKey]: WebViewTransport; [webViewHelperKey]: typeof createProxy; } } declare class WebViewTransport extends EventTarget { send(channel: string, request: Request, correlationId: string): void; once(correlationId: string, callback: (event: WebViewCatOnDataEvent) => void): void; /** * Keep track of listeners to be used by removeAllListeners */ private readonly listeners; on(correlationId: string, callback: (event: WebViewCatOnDataEvent) => void): void; off(correlationId: string, callback: (event: WebViewCatOnDataEvent) => void): void; removeAllListeners(correlationId: string): void; /** * To trigger an event from a message you receive in OnMessage of the page inside webview. * Actually there is no onMessage on this side, we just use the event system. We use `webViewReference.current?.injectJavaScript(jsCode)` to directly trigger this method. */ trigger(correlationId: string, channel: string, response: Response): void; } type ObservableConstructor = new (subscribe: (obs: Observer) => TeardownLogic) => Subscribable; declare function createProxy(descriptor: ProxyDescriptor, ObservableCtor?: ObservableConstructor, transport?: WebViewTransport): T; export {};