declare type PromiseState = 'pending' | 'fulfilled' | 'rejected'; declare type Executor = ConstructorParameters>[0]; declare type ResolveFunction = Parameters>[0]; declare type RejectFunction = Parameters>[1]; declare type DeferredPromiseExecutor = { (resolve?: ResolveFunction, reject?: RejectFunction): void; resolve: ResolveFunction; reject: RejectFunction; result?: Output; state: PromiseState; rejectionReason?: unknown; }; declare function createDeferredExecutor(): DeferredPromiseExecutor; declare class DeferredPromise extends Promise { #private; resolve: ResolveFunction; reject: RejectFunction; constructor(executor?: Executor | null); get state(): PromiseState; get rejectionReason(): unknown; then(onFulfilled?: (value: Input) => ThenResult | PromiseLike, onRejected?: (reason: any) => CatchResult | PromiseLike): DeferredPromise; catch(onRejected?: (reason: any) => CatchResult | PromiseLike): DeferredPromise; finally(onfinally?: () => void | Promise): DeferredPromise; } export { DeferredPromise, DeferredPromiseExecutor, Executor, PromiseState, RejectFunction, ResolveFunction, createDeferredExecutor };