/** * Resolve method signature. * * @public */ type Resolver = (value: R) => void; /** * Reject method signature. * * @public */ type Rejection = (reason?: string | Error | unknown) => void; /** * Abstract deferred promise. * * @public */ interface Deferral { /** Abort signal, if provided at construction. */ readonly signal?: AbortSignal; /** Root promise instance. */ promise(): Promise; /** Internal resolve function. */ resolve(value: R): void; /** Reject root promise. */ reject(reason?: string | Error | unknown): void; /** Alias to await root promise. */ untilResolved(): Promise; /** Test if deferral has already been resolved or rejected. */ isComplete(): boolean; } /** * Deferred Promise * * @remarks * Allows extraction of a root promise's resolve/reject methods to use * outside the promise context. * * @public */ declare class DeferredPromise implements Deferral { #private; /** * Constructor. * * @param signal - Optional abort signal to reject root promise. * * @public */ constructor(signal?: AbortSignal); /** * Exposes any provided abort signal. * * @public */ get signal(): AbortSignal | undefined; /** * Returns root promise. * * @public */ promise(): Promise; /** * Resolves root promise. * * @param result - Any typed result. * * @public */ resolve(result: R): void; /** * Rejects root promise. * * @param reason - Any string message or error instance. * * @public */ reject(reason: string | Error | unknown): void; /** * Alias to await root promise. * * @public */ untilResolved(): Promise; /** * Checks root promise state. * * @public */ isComplete(): boolean; } /** * Provide a Deferred Promise instance. * * @param signal - Optional abort signal to reject root promise. * * @public */ declare const defer: (signal?: AbortSignal) => Deferral; export { Deferral, DeferredPromise, Rejection, Resolver, defer };