export type Repeatable = T | T[]; export type Awaitable = T | PromiseLike; export type Callable = T | (() => T); export type Primitive = null | undefined | boolean | number | string | bigint | symbol; export type ToString = { toString(...args: any[]): string } export type TypedEventListener = (evt: E) => void | Promise; export type TypedEventListenerObject = { handleEvent(evt: E): void | Promise; } export type TypedEventListenerOrEventListenerObject = TypedEventListener | TypedEventListenerObject;