import type { DefaultEventsMap, EventsMap, ReservedOrUserEventNames, ReservedOrUserListener, } from '@socket.io/component-emitter'; import type { Socket } from 'socket.io-client'; export function createEventEmitter< ListenEvents extends EventsMap = DefaultEventsMap, EmitEvents extends EventsMap = ListenEvents, ReservedEvents extends EventsMap = NonNullable, >(socket: Socket) { function on>( ev: Ev, listener: ReservedOrUserListener, ) { socket.on(ev, listener); return () => { socket.off(ev, listener); }; } return { on }; }