// ets_tracing: off import "../../Operator/index.js" import type { Cause } from "../../Cause/core.js" import * as A from "../../Collections/Immutable/Chunk/index.js" import * as O from "../../Option/index.js" import * as Q from "../../Queue/index.js" import * as T from "../_internal/effect.js" import type { Take } from "../Take/index.js" export type Pull = T.Effect, A.Chunk> export function emit(a: A): Pull { return T.succeed(A.single(a)) } export function emitChunk(as: A.Chunk): Pull { return T.succeed(as) } export function fromDequeue(d: Q.Dequeue>): Pull { return T.chain_(Q.take(d), (_) => T.done(_)) } export function fail(e: E) { return T.fail(O.some(e)) } export function halt(e: Cause) { return T.mapError_(T.halt(e), O.some) } export function empty(): Pull { return T.succeed(A.empty()) } export const end = T.fail(O.none)