import { Stream } from "@effect/core/stream/Stream/definition";
import { Effect } from "@effect/core/io/Effect/definition";
import { Predicate } from "@tsplus/stdlib/data/Predicate";
import { Scope } from "@effect/core/io/Scope/definition";
import { List } from "@tsplus/stdlib/collections/List/definition";
import { Dequeue } from "@effect/core/io/Queue/definition/common";
import { Exit } from "@effect/core/io/Exit/definition";
import { Maybe } from "@tsplus/stdlib/data/Maybe/definition";
/**
 * More powerful version of `Stream.broadcast`. Allows to provide a function
 * that determines what queues should receive which elements. The decide
 * function will receive the indices of the queues in the resulting list.
 * @tsplus fluent ets/Stream distributedWith
 * @tsplus location "@effect/core/stream/Stream/operations/distributedWith"
 */
export declare function distributedWith_<R, E, A>(self: Stream<R, E, A>, n: number, maximumLag: number, decide: (a: A) => Effect<never, never, Predicate<number>>, __tsplusTrace?: string): Effect<R | Scope, never, List<Dequeue<Exit<Maybe<E>, A>>>>;
/**
 * More powerful version of `Stream.broadcast`. Allows to provide a function
 * that determines what queues should receive which elements. The decide
 * function will receive the indices of the queues in the resulting list.
 * @tsplus static ets/Stream/Aspects distributedWith
 * @tsplus pipeable ets/Stream distributedWith
 * @tsplus location "@effect/core/stream/Stream/operations/distributedWith"
 */
export declare const distributedWith: <A>(n: number, maximumLag: number, decide: (a: A) => Effect<never, never, Predicate<number>>, __tsplusTrace?: string) => <R, E>(self: import("../definition").Stream<R, E, A>) => import("../../../io/Effect").Effect<import("../../../io/Scope").Scope | R, never, import("@tsplus/stdlib/collections/List").List<import("../../../io/Queue").Dequeue<import("../../../io/Exit").Exit<import("@tsplus/stdlib/data/Maybe").Maybe<E>, A>>>>;
//# sourceMappingURL=distributedWith.d.ts.map