import { Stream } from "@effect/core/stream/Stream/definition";
import { LazyArg } from "@tsplus/stdlib/data/Function";
import { Effect } from "@effect/core/io/Effect/definition";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
import { Chunk } from "@tsplus/stdlib/collections/Chunk/definition";
import { Exit } from "@effect/core/io/Exit/definition";
import { Tuple } from "@tsplus/stdlib/data/Tuple/definition";
import { Take } from "@effect/core/stream/Take/definition";
import { Channel } from "@effect/core/stream/Channel/definition/base";
/**
 * Combines the chunks from this stream and the specified stream by repeatedly
 * applying the function `f` to extract a chunk using both sides and
 * conceptually "offer" it to the destination stream. `f` can maintain some
 * internal state to control the combining process, with the initial state
 * being specified by `s`.
 * @tsplus fluent ets/Stream combineChunks
 * @tsplus location "@effect/core/stream/Stream/operations/combineChunks"
 */
export declare function combineChunks_<R, E, A, R2, E2, A2, S, A3>(self: Stream<R, E, A>, that: LazyArg<Stream<R2, E2, A2>>, s: LazyArg<S>, f: (s: S, pullLeft: Effect<R, Maybe<E>, Chunk<A>>, pullRight: Effect<R2, Maybe<E2>, Chunk<A2>>) => Effect<R | R2, never, Exit<Maybe<E | E2>, Tuple<[Chunk<A3>, S]>>>, __tsplusTrace?: string): Stream<R | R2, E | E2, A3>;
/**
 * Combines the chunks from this stream and the specified stream by repeatedly
 * applying the function `f` to extract a chunk using both sides and
 * conceptually "offer" it to the destination stream. `f` can maintain some
 * internal state to control the combining process, with the initial state
 * being specified by `s`.
 * @tsplus static ets/Stream/Aspects combineChunks
 * @tsplus pipeable ets/Stream combineChunks
 * @tsplus location "@effect/core/stream/Stream/operations/combineChunks"
 */
export declare const combineChunks: <R, E, A, R2, E2, A2, S, A3>(that: import("@tsplus/stdlib/data/Function").LazyArg<import("../definition").Stream<R2, E2, A2>>, s: import("@tsplus/stdlib/data/Function").LazyArg<S>, f: (s: S, pullLeft: import("../../../io/Effect").Effect<R, import("@tsplus/stdlib/data/Maybe").Maybe<E>, import("@tsplus/stdlib/collections/Chunk").Chunk<A>>, pullRight: import("../../../io/Effect").Effect<R2, import("@tsplus/stdlib/data/Maybe").Maybe<E2>, import("@tsplus/stdlib/collections/Chunk").Chunk<A2>>) => import("../../../io/Effect").Effect<R | R2, never, import("../../../io/Exit").Exit<import("@tsplus/stdlib/data/Maybe").Maybe<E | E2>, import("@tsplus/stdlib/data/Tuple").Tuple<[import("@tsplus/stdlib/collections/Chunk").Chunk<A3>, S]>>>, __tsplusTrace?: string) => (self: import("../definition").Stream<R, E, A>) => import("../definition").Stream<R | R2, E | E2, A3>;
//# sourceMappingURL=combineChunks.d.ts.map