import ws from 'ws';
import { SocketAdapter, SocketAdapterAkalaEventMap } from '../shared-connection.js';
import { AllEventKeys, AllEvents, EventArgs, EventKeys, EventListener, EventOptions, EventReturnType, Subscription, TeardownManager } from '@akala/core';
/**
 * json-rpc-ws connection
 *
 * @constructor
 * @param {Socket} socket - web socket for this connection
 * @param {Object} parent - parent that controls this connection
 */
export default class WsSocketAdapter extends TeardownManager implements SocketAdapter {
    private socket;
    constructor(socket: ws);
    hasListener<const TKey extends AllEventKeys<SocketAdapterAkalaEventMap>>(name: TKey): boolean;
    get definedEvents(): AllEventKeys<SocketAdapterAkalaEventMap>[];
    emit<const TEvent extends EventKeys<SocketAdapterAkalaEventMap>>(event: TEvent, ...args: EventArgs<SocketAdapterAkalaEventMap[TEvent]>): false | EventReturnType<SocketAdapterAkalaEventMap[TEvent]>;
    pipe(socket: SocketAdapter): void;
    get open(): boolean;
    close(): void;
    send(data: string): void;
    off<const TEvent extends AllEventKeys<SocketAdapterAkalaEventMap>>(event: TEvent, handler: EventListener<AllEvents<SocketAdapterAkalaEventMap>[TEvent]>): boolean;
    private readonly messageListeners;
    on<const TEvent extends AllEventKeys<SocketAdapterAkalaEventMap>>(event: TEvent, handler: EventListener<AllEvents<SocketAdapterAkalaEventMap>[TEvent]>, options?: EventOptions<AllEvents<SocketAdapterAkalaEventMap>[TEvent]>): Subscription;
    once<const TEvent extends AllEventKeys<SocketAdapterAkalaEventMap>>(event: TEvent, handler: EventListener<AllEvents<SocketAdapterAkalaEventMap>[TEvent]>): Subscription;
}
