/**
 * Deferred promise implementation.
 */
export declare class DeferredPromise<T> implements Promise<T> {
    #private;
    get [Symbol.toStringTag](): string;
    get isResolved(): boolean;
    /**
     * Create a new deferrable promise which supports resolving it outside of the context of the promise.
     * @param promise Optionally a promise to wrap.
     */
    constructor(promise?: Promise<T>);
    /**
     * Bind the current promise to another promise, resolving or rejecting the current promise when the other promise is resolved or rejected.
     * @param other The other promise to bind to.
     * @returns The current promise.
     */
    bind(other: Promise<T>): this;
    reset(): void;
    reject(err: unknown): void;
    resolve(result: T | Promise<T>): void;
    then<TResult1 = T, TResult2 = never>(onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: (reason: unknown) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>;
    catch<TResult = never>(onrejected?: (reason: unknown) => TResult | PromiseLike<TResult>): Promise<T | TResult>;
    finally(onFinally?: () => void): Promise<T>;
}
