export interface Deferred<T> {
    /**
     * Resolve the deferred promise with a value
     */
    resolve: (value: T) => void;
    /**
     * Reject the deferred promise with an error
     */
    reject: (reason?: any) => void;
    /**
     * The status of the deferred promise
     */
    status: 'pending' | 'resolved' | 'rejected';
    /**
     * Get the value of the deferred promise, throwing if it's not resolved yet
     */
    getOrThrow(): T;
    /**
     * Get the value of the deferred promise, blocking if it's not resolved yet
     * */
    getValue(): Promise<T>;
}
/**
 * Create a deferred promise
 */
export declare function deferred<T>(): Deferred<T>;
/**
 * Check if a value is a Deferred
 */
export declare function isDeferred<T = any>(value: any): value is Deferred<T>;
//# sourceMappingURL=deferred.d.ts.map