import { JsonRpcError, JsonRpcResponse } from './jsonrpc.model';
export declare enum WebsocketReadyStates {
    CONNECTING = 0,
    OPEN = 1,
    CLOSING = 2,
    CLOSED = 3
}
export declare type ErrorCallback = (error: JsonRpcError) => void;
export declare class JsonRpcWebsocket {
    private url;
    private requestTimeoutMs;
    private onError?;
    jsonRpcVersion: string;
    private websocket;
    private closeDeferredPromise;
    private requestId;
    private pendingRequests;
    private rpcMethods;
    get state(): WebsocketReadyStates;
    static setWebSocketFactory(factoryFn: ((url: string) => WebSocket) | null): void;
    constructor(url: string, requestTimeoutMs: number, onError?: ErrorCallback);
    open(): Promise<Event>;
    close(): Promise<CloseEvent | boolean>;
    on(methodName: string, callback: (...args: any[]) => any): void;
    off(methodName: string): void;
    call(method: string, params?: any): Promise<JsonRpcResponse>;
    notify(method: string, params?: any): void;
    private createWebsocket;
    private respondOk;
    private respondError;
    private respond;
    private handleMessage;
    private handleRequest;
    private getRequestParams;
    private handleResponse;
    private handleError;
    private createPendingRequest;
    private setupRequestTimeout;
    private callOnError;
    private getRequestId;
    private hasProperty;
}
