/// <reference types="node" />
import { CallbackManager } from './callback-manager';
import { Zlib } from './zlib';
import { Aes } from './aes';
import { ILogger } from './interfaces';
import { BaseRequest } from './interfaces';
interface Encryption {
    mySecret: Buffer;
    myPublicKey: Buffer;
    serverPublicKey: Buffer;
    shareKey: Buffer;
}
interface Token {
    name?: string;
    token?: string;
}
export interface Message {
    data?: any;
    Data?: any;
    MessageType?: string;
}
export declare class SocketClient {
    private requiredAuthentication;
    private authMessageTypes;
    private aes;
    private zlib;
    private logger;
    private callbackManager?;
    private protocol;
    private host;
    private port;
    private path;
    encryption: Encryption;
    initMessageId: number;
    authenticated: boolean;
    token: Token;
    closed: boolean;
    socket: any;
    initialised: boolean;
    initialising: boolean;
    messageQueue: BaseRequest[];
    pingInterval: NodeJS.Timeout;
    private connSubject;
    constructor(requiredAuthentication: boolean, authMessageTypes: string[], aes: Aes, zlib: Zlib, logger: ILogger, callbackManager?: CallbackManager, protocol?: string, host?: string, port?: number, path?: string);
    connect(): Promise<unknown>;
    disconnect(): void;
    processMessageQueue(): void;
    connected(): import("rxjs").Observable<boolean>;
    clearMessageQueue(): void;
    isAuthRequest(req: BaseRequest): any;
    sendRequest<T>(req: BaseRequest): void;
    authenticate(name: any, token: any): void;
    on(event: any, callback: (id: number | string, message: Message, userData?: any) => any, userData?: any): void;
    defaultOnError(e: any): void;
    defaultOnClose(e: any): void;
}
export {};
