import { Socket } from "socket.io-client";
import { BarcodeLinkRemoteConnectionData } from "./BarcodeLinkRemoteConnectionData";
import { BarcodeLinkMetricsManager } from "./BarcodeLinkMetricsManager";
export interface BarcodeLinkUilessFlowSocket {
    onAny(...args: Parameters<Socket["onAny"]>): void;
    emit(...args: Parameters<Socket["emit"]>): void;
    connect(...args: Parameters<Socket["connect"]>): void;
    disconnect(...args: Parameters<Socket["disconnect"]>): void;
    onDisconnect?(): void;
    onReconnect?(): void;
    onConnectionFailed?(): void;
}
export declare class BarcodeLinkUilessFlowSocketImpl implements BarcodeLinkUilessFlowSocket {
    private readonly metricsManager;
    onDisconnect?: () => void;
    onReconnect?: () => void;
    onConnectionFailed?: () => void;
    private barcodeLinkWsUrl;
    private socket;
    private _didDisconnect;
    private _reconnectionAttempts;
    private _maxReconnectionAttempts;
    constructor(remoteConnectionData: BarcodeLinkRemoteConnectionData, metricsManager: BarcodeLinkMetricsManager);
    connect(): void;
    disconnect(): void;
    emit(ev: string, ...args: any[]): void;
    onAny(listener: (...args: any[]) => void): void;
    private onConnect;
    private internalOnDisconnect;
    private onConnectError;
}
