import type { WebSocket as WSWebSocket } from 'ws';
import type { InitRequest, RPCMessage } from '../proto/api.ts';
import { RPCMessages } from '../proto/api.ts';
import type { IAttestorSocket, Logger, RPCEvent, RPCEventMap } from '../types/index.ts';
/**
 * Common AttestorSocket class used on the client & server side as the
 * base for their respective socket implementations.
 */
export declare class AttestorSocket implements IAttestorSocket {
    private eventTarget;
    protected socket: WebSocket | WSWebSocket;
    readonly logger: Logger;
    readonly metadata: InitRequest;
    isInitialised: boolean;
    constructor(socket: WebSocket | WSWebSocket, metadata: InitRequest, logger: Logger);
    get isOpen(): boolean;
    get isClosed(): boolean;
    sendMessage(...msgs: Partial<RPCMessage>[]): Promise<RPCMessages>;
    dispatchRPCEvent<K extends keyof RPCEventMap>(type: K, data: RPCEventMap[K]): void;
    addEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void;
    removeEventListener<K extends keyof RPCEventMap>(type: K, listener: (data: RPCEvent<K>) => void): void;
    terminateConnection(err?: Error): Promise<void>;
}
