import { RpcMessageArgumentTypes, RpcMessageType } from '../protocol/rpc_messages'; import { SecureChannel } from '../protocol/secure_channel'; import { ProviderFrameElement } from './provider_frame_elem'; export declare type RpcMessageHandler = (data: RpcMessageArgumentTypes[T], type: T, ev: MessageEvent) => void; export interface RelayRequest { dispatch(options: O): Promise; } export declare abstract class BaseRequest implements RelayRequest { protected frame: ProviderFrameElement; protected channel: SecureChannel; id: string; private promiseResolver; private listenerKeys; private timeouts; private disposed; constructor(frame: ProviderFrameElement, channel: SecureChannel, id?: string); abstract dispatch(options: OptionsT): Promise; debugLog(message: string): void; getPromise(): Promise; resolve(response?: ResultT): void; reject(reason: Error): void; registerHandler(type: T, handler: RpcMessageHandler): void; protected clearListeners(): void; setAndRegisterTimeout(fn: () => void, timeout: number): void; protected clearTimeouts(): void; dispose(): void; }