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 { Cause } from "@effect/core/io/Cause/definition";
/**
 * @tsplus type ets/Stream/Emit
 */
export interface Emit<R, E, A, B> extends EmitOps<R, E, A, B> {
    (f: Effect<R, Maybe<E>, Chunk<A>>): Promise<B>;
}
/**
 * @tsplus type ets/Stream/Emit/Ops
 */
export interface EmitOperations {
}
export declare const Emit: EmitOperations;
export interface EmitOps<R, E, A, B> {
    /**
     * Emits a chunk containing the specified values.
     */
    readonly chunk: (as: Chunk<A>) => Promise<B>;
    /**
     * Terminates with a cause that dies with the specified `Throwable`.
     */
    readonly die: <Err>(err: Err) => Promise<B>;
    /**
     * Terminates with a cause that dies with a `Throwable` with the specified
     * message.
     */
    readonly dieMessage: (message: string) => Promise<B>;
    /**
     * Either emits the specified value if this `Exit` is a `Success` or else
     * terminates with the specified cause if this `Exit` is a `Failure`.
     */
    readonly done: (exit: Exit<E, A>) => Promise<B>;
    /**
     * Terminates with an end of stream signal.
     */
    readonly end: () => Promise<B>;
    /**
     * Terminates with the specified error.
     */
    readonly fail: (e: E) => Promise<B>;
    /**
     * Either emits the success value of this effect or terminates the stream
     * with the failure value of this effect.
     */
    readonly fromEffect: (io: Effect<R, E, A>) => Promise<B>;
    /**
     * Either emits the success value of this effect or terminates the stream
     * with the failure value of this effect.
     */
    readonly fromEffectChunk: (io: Effect<R, E, Chunk<A>>) => Promise<B>;
    /**
     * Terminates the stream with the specified cause.
     */
    readonly halt: (cause: Cause<E>) => Promise<B>;
    /**
     * Emits a chunk containing the specified value.
     */
    readonly single: (a: A) => Promise<B>;
}
/**
 * @tsplus static ets/Stream/Emit/Ops __call
 * @tsplus location "@effect/core/stream/Stream/Emit"
 */
export declare function apply<R, E, A, B>(fn: (f: Effect<R, Maybe<E>, Chunk<A>>) => Promise<B>): Emit<R, E, A, B>;
//# sourceMappingURL=Emit.d.ts.map