import 'ws';
import WebSocket from 'isomorphic-ws';
import { MessageTransport, RequestMessage, ResponseMessage } from '../MessageTransport';
export declare class ServerWebSocketTransport<T, R> implements MessageTransport<T, R> {
    private readonly socket;
    constructor(socket: WebSocket);
    send(message: RequestMessage<T> | ResponseMessage<R>): Promise<void>;
    onReceive(receive: (message: RequestMessage<T> | ResponseMessage<R>) => void): void;
    close(): Promise<void>;
}
export declare class ClientWebSocketTransport<T, R> implements MessageTransport<T, R> {
    onClose?: () => void;
    private readonly url;
    private socket?;
    private onReceiveFn?;
    constructor(url: string);
    send(message: RequestMessage<T> | ResponseMessage<R>): Promise<void>;
    onReceive(onReceiveFn: (message: RequestMessage<T> | ResponseMessage<R>) => void): void;
    close(): Promise<void>;
    isOpen(): boolean;
    private connect;
}
