@tf2pickup-org/mumble-client
Version:
A simple bot for managing mumble servers
15 lines (14 loc) • 1.1 kB
TypeScript
import { EventEmitter } from 'node:events';
type EventsMap = Record<string, (...args: any[]) => void>;
type EventNames<Map extends EventsMap> = keyof Map & (string | symbol);
export type EventParams<Map extends EventsMap, Ev extends EventNames<Map>> = Parameters<Map[Ev]>;
export interface TypedEventBroadcaster<EmitEvents extends EventsMap> {
emit<Ev extends EventNames<EmitEvents>>(ev: Ev, ...args: EventParams<EmitEvents, Ev>): boolean;
}
export declare abstract class TypedEventEmitter<ListenEvents extends EventsMap, EmitEvents extends EventsMap> extends EventEmitter implements TypedEventBroadcaster<EmitEvents> {
on<EventName extends EventNames<ListenEvents>>(eventName: EventName, listener: ListenEvents[EventName]): this;
once<EventName extends EventNames<ListenEvents>>(eventName: EventName, listener: ListenEvents[EventName]): this;
emit<EventName extends EventNames<EmitEvents>>(eventName: EventName, ...args: EventParams<EmitEvents, EventName>): boolean;
listeners<EventName extends EventNames<ListenEvents>>(event: EventName): ListenEvents[EventName][];
}
export {};