/**
 * todo
 * 1. Include compression
 * 2. Handle JWT when talking to walletnode, if we are going to communicate to walletnode directly.
 */
/// <reference types="node" />
import { Subject } from 'rxjs';
import { EventEmitter } from 'events';
import { StateService } from '../../services';
export declare class SocketClient extends EventEmitter {
    private stateService;
    socket: WebSocket;
    encryption: any;
    messageQueue: Array<any>;
    initialising: boolean;
    hasConnected: boolean;
    closed: boolean;
    connectTries: number;
    channels: Array<any>;
    callbackMap: {
        [requestId: string]: (error: Error, data: any) => any;
    };
    subscriptionCallback: (message: any) => void;
    open$: Subject<void>;
    constructor(stateService: StateService);
    ready(): boolean;
    connect(): Promise<void>;
    sendRequest([request, callback]: [any, any]): Promise<void>;
    subscribeToChannel(channelName: string, callback: (message: any) => void): void;
    defaultOnOpen(): void;
    disconnect(): Promise<void>;
    resetConnectionData(): void;
    showTryCatchError(error: any): void;
}
