import type { IOEmitEvents, IOListenEvents } from './SocketEvents.js'; export type ListenEventHandler = ((arg1: any, arg2: any, arg3: any, arg4: any, arg5: any) => void) | ((arg1: any, arg2: any, arg3: any, arg4: any) => void) | ((arg1: any, arg2: any, arg3: any) => void) | ((arg1: any, arg2: any) => void) | ((arg1: any) => void) | ((...args: any[]) => void); export type EmitEventHandler = ((arg1: any, arg2: any, arg3: any, arg4: any, arg5: any, callback?: (...args: any[]) => void) => void) | ((arg1: any, arg2: any, arg3: any, arg4: any, callback?: (...args: any[]) => void) => void) | ((arg1: any, arg2: any, arg3: any, callback?: (...args: any[]) => void) => void) | ((arg1: any, arg2: any, callback?: (...args: any[]) => void) => void) | ((arg1: any, callback?: (...args: any[]) => void) => void) | ((...args: [...any[], (...args: any[]) => void]) => void) | ((...args: any[]) => void); export interface ConnectOptions { /** Timeout for answer for ping (pong) */ pongTimeout?: number; /** Ping interval */ pingInterval?: number; /** connection request timeout */ connectTimeout?: number; /** Authentication timeout */ authTimeout?: number; /** Interval between connection attempts */ connectInterval?: number; /** Every connection attempt the interval increasing at options.connectInterval till max this number */ connectMaxAttempt?: number; } export interface SocketClient = Record, TEmitEvents extends Record = Record> { connect(url?: string, options?: ConnectOptions): void; close(): void; destroy(): void; readonly connected: boolean; on(event: TEvent, callback: IOListenEvents[TEvent]): void; on(event: TEvent, callback: TListenEvents[TEvent]): void; off(event: TEvent, callback: IOListenEvents[TEvent]): void; off(event: TEvent, callback: TListenEvents[TEvent]): void; emit(event: TEvent, ...args: Parameters): boolean; emit(event: TEvent, ...args: Parameters): boolean; }