import { Event } from './Event'; // eslint-disable-next-line @typescript-eslint/no-explicit-any type EventConstructor> = new (...args: any) => T; export class EventStore { private static readonly store = new WeakMap(); static register(eventConstructor: EventConstructor>, event: Event) { EventStore.store.set(eventConstructor, event); } // eslint-disable-next-line @typescript-eslint/no-explicit-any static get>(eventConstructor: EventConstructor): T { if (!EventStore.store.has(eventConstructor)) { EventStore.register(eventConstructor, new eventConstructor()); } return EventStore.store.get(eventConstructor); } }