import { Observable } from 'rxjs';
declare type WebSocketPayload = string | ArrayBuffer | Blob;
export interface WebSocketLike {
    close(): any;
    send(data: WebSocketPayload): any;
    onopen: ((event: any) => any) | null;
    onclose: ((event: any) => any) | null;
    onmessage: ((event: any) => any) | null;
    onerror: ((event: any) => any) | null;
}
export declare type WebSocketFactory = (url: string, protocols: string | string[]) => WebSocketLike;
export declare type GetWebSocketResponses<T = WebSocketPayload> = (input: Observable<WebSocketPayload>) => Observable<T>;
export interface WebSocketOptions {
    protocols: string | string[];
    makeWebSocket: WebSocketFactory;
}
export declare const normalClosureMessage = "Normal closure";
export default function makeWebSocketObservable<T extends WebSocketPayload = WebSocketPayload>(url: string, { protocols, makeWebSocket }?: WebSocketOptions): Observable<GetWebSocketResponses<T>>;
export {};
