import { Socket } from 'socket.io-client';
import { BarcodeLinkRemoteConnectionData } from './BarcodeLinkRemoteConnectionData';
import { BarcodeLinkMetricsManager } from './BarcodeLinkMetricsManager';

export interface BarcodeLinkHeadlessFlowSocket {
    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 BarcodeLinkHeadlessFlowSocketImpl implements BarcodeLinkHeadlessFlowSocket {
    private readonly metricsManager;
    onDisconnect?: () => void;
    onReconnect?: () => void;
    onConnectionFailed?: () => void;
    private get 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;
}
