import { Stream, Source } from '@tempest/core';
/**
 * Takes a Stream and 'upgrades' it to a Subject
 *
 * @export
 * @template T
 * @param {Stream<T>} stream
 * @returns {Subject<T>}
 * @example
 * import { never } from '@tempest/never'
 * import { asSubject } from '@tempest/subject'
 *
 * const subject = asSubject(never())
 *
 * subject.subscribe(x => console.log(x)) // 1, 2, 3
 *
 * subject.next(1)
 * subject.next(2)
 * subject.next(3)
 * subject.complete()
 */
export declare function asSubject<T>(stream: Stream<T>): Subject<T>;
export declare class Subject<T> extends Stream<T> {
    constructor(source: Source<T>);
    next(value: T): void;
    error(err: Error): void;
    complete(value?: T): void;
}
