import type { EventKey, Listener } from './events.js'; import { EventEmitter } from './events.js'; /** The minimum a `pipe()` destination has to provide. */ export interface PipeDestination { writable?: boolean; write(chunk: any): boolean; end(): unknown; destroy?(error?: Error): unknown; on(event: string, listener: Listener): unknown; removeListener(event: string, listener: Listener): unknown; emit(event: string, ...args: any[]): unknown; prependListener?(event: string, listener: Listener): unknown; listenerCount?(event: string): number; _isStdio?: boolean; } /** Adds `listener` ahead of the existing ones, falling back to `on` for emitters that cannot prepend. */ export declare function prependListener(emitter: PipeDestination | EventEmitter, event: EventKey, listener: Listener): void; /** * The base of every stream class, providing only the pre-`Readable` `pipe()`. * `Readable` overrides `pipe()` with the back-pressure aware implementation. */ export declare class Stream extends EventEmitter { pipe(dest: T, options?: { end?: boolean; }): T; }