import * as WebSocket from 'ws';
import { Logger } from '../../logger';
import { NotificationRequest } from '../jsonrpc';
interface WebSocketWithTracking extends WebSocket {
    isAlive?: boolean;
    id: string;
}
export type WSMessageHandler = (socket: WebSocketWithTracking, message: string) => void;
export declare class WSServer {
    server: WebSocket.Server;
    private _pingTimer;
    private _logger;
    private readonly _port;
    private readonly _host?;
    private readonly _path;
    private readonly _subscriptions;
    private readonly _accessControlAllowOrigin;
    constructor(options: {
        port: number;
        host?: string;
        path: string;
        accessControlAllowOrigin?: string;
    });
    start(logger: Logger, messageHandler: WSMessageHandler, httpServer?: WebSocket.ServerOptions['server']): WebSocket.Server;
    stop(): void;
    broadcast(message: NotificationRequest): void;
    private _handleConnection;
    private _handleHeartbeat;
    private _setUpPing;
    private _handleSubscription;
    private _handleUnsubscription;
}
export {};
