export interface IPromise<T> {
    promise: Promise<T>;
    resolve(value: T): void;
    reject(reason?: string): void;
}
export declare class ControllablePromise<T> implements IPromise<T> {
    private _resolve;
    private _reject;
    private _promise;
    constructor();
    get promise(): Promise<T>;
    resolve(value: T): void;
    reject(reason?: string): void;
}
export declare class ResolvedPromise<T> implements IPromise<T> {
    private _value;
    constructor(value: T);
    get promise(): Promise<Awaited<T>>;
    resolve(_: T): void;
    reject(_?: string): void;
}
