import { BehaviorSubject, Subject, Subscription } from "rxjs"; import type { ManagerOptions, SocketOptions, Socket } from "socket.io-client"; export type SocketFactory = (uri?: string, opts?: Partial) => Socket; export type SocketDataValue = string | number | boolean | Date | Array | Array; export interface SocketDataObj { [key: string]: SocketDataValue | SocketDataObj; } export type SocketData = SocketDataValue | SocketDataObj; export type ExtraHeaders = Record; export interface ResponseHandler { resolve: (data: SocketData) => void; reject: (error: SocketData) => void; } export declare class SocketClient { readonly url: string; protected ioLoader: () => Promise; readonly status: BehaviorSubject; protected readonly channels: Map>; protected readonly responseHandlers: Map; protected sid: string; protected open: boolean; protected factory: Promise; protected ws: Promise; get id(): string; constructor(url: string, ioLoader: () => Promise); connect(extraHeaders?: ExtraHeaders): void; disconnect(): void; subscribe(event: string, cb: (value: T) => void): Subscription; emit(event: string, content: SocketData): void; request(event: string, content: SocketDataObj): Promise; protected handleResponse(event: string, content: SocketData): void; }