///
///
import { ClientRequestArgs } from 'http';
import WebSocket, { ClientOptions, CloseEvent } from 'isomorphic-ws';
import { EthExecutionAPI, Web3APIMethod, Web3APIPayload, Web3APISpec, Web3ProviderStatus } from 'web3-types';
import { ReconnectOptions, SocketProvider } from 'web3-utils';
export { ClientRequestArgs } from 'http';
export { ClientOptions } from 'isomorphic-ws';
/**
* Use WebSocketProvider to connect to a Node using a WebSocket connection, i.e. over the `ws` or `wss` protocol.
*
* @example
* ```ts
* const provider = new WebSocketProvider(
* `ws://localhost:8545`,
* {
* headers: {
* // to provide the API key if the Node requires the key to be inside the `headers` for example:
* 'x-api-key': '',
* },
* },
* {
* delay: 500,
* autoReconnect: true,
* maxAttempts: 10,
* },
* );
* ```
*
* The second and the third parameters are both optional. And you can for example, the second parameter could be an empty object or undefined.
* * @example
* ```ts
* const provider = new WebSocketProvider(
* `ws://localhost:8545`,
* {},
* {
* delay: 500,
* autoReconnect: true,
* maxAttempts: 10,
* },
* );
* ```
*/
export default class WebSocketProvider extends SocketProvider {
protected readonly _socketOptions?: ClientOptions | ClientRequestArgs;
protected _socketConnection?: WebSocket;
protected _validateProviderPath(providerUrl: string): boolean;
/**
* This is a class used for Web Socket connections. It extends the abstract class SocketProvider {@link SocketProvider} that extends the EIP-1193 provider {@link EIP1193Provider}.
* @param socketPath - The path to the Web Socket.
* @param socketOptions - The options for the Web Socket client.
* @param reconnectOptions - The options for the socket reconnection {@link ReconnectOptions}
*/
constructor(socketPath: string, socketOptions?: ClientOptions | ClientRequestArgs, reconnectOptions?: Partial);
getStatus(): Web3ProviderStatus;
protected _openSocketConnection(): void;
protected _closeSocketConnection(code?: number, data?: string): void;
protected _sendToSocket>(payload: Web3APIPayload): void;
protected _parseResponses(event: WebSocket.MessageEvent): import("web3-types").JsonRpcResponse[];
protected _addSocketListeners(): void;
protected _removeSocketListeners(): void;
protected _onCloseEvent(event: CloseEvent): void;
}
export { WebSocketProvider };