import type * as A from "../../../Collections/Immutable/Chunk";
import * as Tp from "../../../Collections/Immutable/Tuple";
import * as O from "../../../Option";
import * as P from "../../../Promise";
import * as Q from "../../../Queue";
import * as T from "../../_internal/effect";
import * as M from "../../_internal/managed";
import * as Take from "../../Take";
import type { Stream } from "../definitions";
/**
 * Allows a faster producer to progress independently of a slower consumer by buffering
 * to the provided queue.
 */
export declare function bufferSignal<R, E, O>(self: Stream<R, E, O>, queue: Q.Queue<Tp.Tuple<[Take.Take<E, O>, P.Promise<never, void>]>>): M.Managed<R, never, T.Effect<R, O.Option<E>, A.Chunk<O>>>;
//# sourceMappingURL=bufferSignal.d.ts.map