export type PromiseType = T extends Promise ? U : T; export type AsyncReturnType any> = PromiseType>; export declare abstract class ExtensiblePromise implements PromiseLike { constructor(); readonly promise: Promise; protected _resolve: (arg: T) => void; protected _reject: (reason?: any) => void; then(onfulfilled?: (value: T) => TResult1 | PromiseLike, onrejected?: (reason: any) => TResult2 | PromiseLike): Promise; catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): Promise; } /** * A Promise-Like class that can be controlled (resolved/rejected) via a public API */ export declare class ControlledPromise extends ExtensiblePromise { resolve(p?: T): void; reject(e?: any): void; } export declare const delay: (ms: any) => Promise;