import type { Socket as ServerSocket } from 'socket.io'; import type { Socket as ClientSocket } from 'socket.io-client'; import type { EventMap } from 'typed-emitter'; import type { EventEmitter } from './EventEmitter'; import type { UnsubscribeFn } from '../core-types'; export type SocketIO = ServerSocket | ClientSocket; export declare class SocketIOEmitter implements EventEmitter { protected socket: TSocketIO; protected config: { waitForResponseMs: number; }; constructor(socket: TSocketIO, config?: { waitForResponseMs?: number; }); on(event: E, listener: (p: Parameters[0], ack?: (r: ReturnType) => void) => void): this; off(event: E, listener: (p: Parameters[0], ack?: (r: ReturnType) => void) => void): this; subscribe(event: E, listener: (p: Parameters[0], ack?: (r: ReturnType) => void) => void): UnsubscribeFn; emit(event: E, request: Parameters[0], acknowledgeCb?: (response: ReturnType) => void): boolean; emitAndAcknowledge(event: E, request: Parameters[0]): Promise>; onConnect(fn: () => void): () => void; onDisconnect(fn: () => void): () => void; disconnect(): void; }