///
import { EventEmitter } from 'events';
import { OverloadedParameters } from './overloaded-parameters';
export type FirstParameter = T extends [infer R, ...any[]] ? R : never;
export type EventListener = F extends [
T,
infer R,
...any[]
] ? R : never;
export type EventParameters = OverloadedParameters;
export type EventNames = FirstParameter>;
export type EventListenerParameters> = WithDefault, Event>>, unknown[]>;
export type WithDefault = [T] extends [never] ? D : T;
export interface AbortSignal {
aborted: boolean;
addEventListener: (name: string, listener: (...args: any[]) => any) => void;
removeEventListener: (name: string, listener: (...args: any[]) => any) => void;
}