import * as Socket from "@effect/platform/Socket";
import * as Cause from "effect/Cause";
import * as Effect from "effect/Effect";
import type * as Scope from "effect/Scope";
import * as Stream from "effect/Stream";
/**
 * Logs a cause with a message.
 *
 * @param cause - The cause to log.
 * @param message - The message to log.
 */
export declare const logCauseWith: {
    <E>(cause: Cause.Cause<E>, message: string): Effect.Effect<void>;
    (message: string): <E>(cause: Cause.Cause<E>) => Effect.Effect<void>;
};
/**
 * Pretty prints a cause.
 *
 * @param cause - The cause to pretty print.
 * @returns The pretty printed cause.
 */
export declare const prettyCause: <E>(cause: Cause.Cause<E>) => string;
/**
 * Creates an effect that waits for a port to be open.
 *
 * Retries indefinitely until the port is open.
 *
 * @param port - The port to wait for.
 * @returns An effect that yields once the port is open.
 */
export declare const waitForPort: (port: number) => Effect.Effect<void, Socket.SocketError, never>;
/**
 * Adds a line prefix to a stream.
 *
 * @param stream - The stream to add the line prefix to.
 * @param prefix - The line prefix to add.
 * @returns The stream with the line prefix added.
 */
export declare const withLinePrefix: {
    <E, R>(stream: Stream.Stream<Uint8Array<ArrayBufferLike>, E, R>, prefix: string): Stream.Stream<string, E, R>;
    (prefix: string): <E, R>(stream: Stream.Stream<Uint8Array<ArrayBufferLike>, E, R>) => Stream.Stream<string, E, R>;
};
/**
 * Forwards the given stdout and stderr streams to the respective node sinks.
 *
 * @param options.which - Which of the streams to forward. Defaults to "none".
 * @param options.stdout - The stdout stream to forward to the node sink.
 * @param options.stderr - The stderr stream to forward to the node sink.
 */
export declare const intoNodeSink: <E, E2, R, R2>({ stderr, stdout, which, }: {
    which?: "stdout" | "stderr" | "both" | "none" | undefined;
    stdout?: Stream.Stream<string | Uint8Array<ArrayBufferLike>, E, R> | undefined;
    stderr?: Stream.Stream<string | Uint8Array<ArrayBufferLike>, E2, R2> | undefined;
}) => Effect.Effect<void, never, R | R2 | Scope.Scope>;
//# sourceMappingURL=Utils.d.ts.map