import type { Json } from "atom.io/foundations/json" import type { EventsMap, GuardedSocket, Socket } from "atom.io/realtime" export function employSocket( socket: GuardedSocket, event: K, handleEvent: (...data: Parameters) => void, ): () => void export function employSocket( socket: Socket, event: string, handleEvent: (...data: Json.Serializable[]) => void, ): () => void export function employSocket( socket: GuardedSocket | Socket, event: string, handleEvent: (...data: Json.Serializable[]) => void, ): () => void { socket.on(event, handleEvent) return socket.off.bind(socket, event, handleEvent) }