import type { AnyFunction, AnyList, AnyType } from '../../utils/types/utility.type'; export type DefaultEventMap = [never]; export type EventMap = Record | DefaultEventMap; export type AnyEventMap = DefaultEventMap | Record; export type EventType = Map extends DefaultEventMap ? string | symbol : Key extends keyof Map ? Key : never; export type EventListener = Map extends DefaultEventMap ? AnyFunction : Key extends keyof Map ? Map[Key] extends unknown[] ? (...args: Map[Key]) => AnyType : never : never; type EventParametersRest = [...args: AnyList]; export type EventParameters = Map extends DefaultEventMap ? EventParametersRest : Key extends keyof Map ? Map[Key] extends AnyList ? [...Map[Key]] : never : never; export {};