import type { Socket } from 'socket.io-client';
import { SubscribeOptions, SocketIOFactory } from './interface/index.ts';
export declare class SocketManager {
    private onDisconnect?;
    private onConnectError?;
    private socket;
    private socketPool;
    private streamCounters;
    private websocketUrl;
    private socketIOFactory;
    private callbacks;
    private onAnyRegistered;
    private handlerIdCounter;
    constructor(url: string, socketIOFactory: SocketIOFactory, onDisconnect?: (socketId: string) => void, onConnectError?: (error: Error) => void);
    private initializeSocket;
    getSocket(): Socket | null;
    subscribe(subscribeOptions: SubscribeOptions, callback: Function): number;
    private setupReconnectHandler;
    unsubscribe(handlerId: number): void;
    disconnect(): void;
    isConnected(): boolean;
    on(event: string, handler: (...args: unknown[]) => void): void;
    off(event: string, handler?: (...args: unknown[]) => void): void;
    emit(event: string, ...args: unknown[]): void;
    emitCurrentPair(data: {
        address: string;
        pair: string;
        pair_id: number;
        order_filter: string;
    }): void;
    emitOrderFilter(data: {
        order_filter: string;
    }): void;
    onReconnect(handler: () => void): () => void;
    offReconnect(handler?: () => void): void;
}
