export type EventMap = Record<string, unknown[]>;
type Listener<Args extends unknown[]> = (...args: Args) => void;
export class TypedEmitter<Events extends EventMap> {
private listeners = new Map<keyof Events, Set<Listener<any>>>();
import { EventEmitter } from "events";
export interface Job<T> {
id: string;
payload: T;
attempts: number;