/**
 * The async iterator equivalent of a deferred
 */
export declare class Subject<T> {
    iterator: AsyncIterableIterator<T>;
    private doneValue;
    private queue;
    private deferreds;
    private done;
    private noMoreResults;
    private backPressureDeferred;
    private finallyCallbacks;
    private error?;
    constructor();
    finally(callback: () => void): void;
    onCompleted(): Promise<void>;
    onNext(value: T): Promise<void>;
    onError(error: any): void;
    isDone(): boolean;
    callback(result: IteratorResult<T>): Promise<void>;
}
