import EventEmitter from 'node:events'; type EventMap = Record; type Maybe = T | null | undefined; type PromiseOr = T | PromiseLike; export type Executor = (resolve: (value: V | PromiseLike) => void, reject: (reason?: unknown) => void) => void; export type FulfillmentFn = Maybe<(value: R) => PromiseOr>; export type RejectionFn = Maybe<(reason: unknown) => PromiseOr>; export type FinallyFn = Maybe<() => void>; export interface CancelablePromise extends Promise { cancel(): void; } export default class EmittingPromise, Result = unknown> extends EventEmitter implements Promise { #private; constructor(executor: Executor); then(onfulfilled?: FulfillmentFn, onrejected?: RejectionFn): EmittingPromise; catch(onrejected?: RejectionFn): EmittingPromise; finally(onfinally?: FinallyFn): EmittingPromise; get [Symbol.toStringTag](): string; } export {};