import { IEventEmitter } from "tsee"; export type StreamReadableEvents = { close(): void, error(err: Error): void, data(chunk: Chunk): void, }; export type StreamWritableEvents = { close(): void, error(err: Error): void, }; export interface IStreamReadable extends IEventEmitter> { } export type StreamReadableLike = IStreamReadable|NodeJS.ReadableStream; export interface IStreamWritable extends IEventEmitter { write(chunk: Chunk, callback?: Function): boolean; write(chunk: Chunk, stringEncoding?: string, callback?: Function): boolean; } export type StreamWritableLike = IStreamWritable|NodeJS.WritableStream; export interface IStreamDuplex< ReadChunk = string|Uint8Array, WriteChunk = string|Uint8Array, > extends IEventEmitter & StreamWritableEvents> { write(chunk: WriteChunk, callback?: Function): boolean; write(chunk: WriteChunk, stringEncoding?: string, callback?: Function): boolean; } export type StreamDuplexLike< ReadChunk = string|Uint8Array, WriteChunk = string|Uint8Array, > = IStreamDuplex|NodeJS.ReadWriteStream; export function asReadableStream< T extends StreamReadableLike, Chunk = string|Uint8Array >(rstream: T): IStreamReadable { return rstream as any; } export function asWritableStream< T extends StreamWritableLike, Chunk = string|Uint8Array >(wstream: T): IStreamWritable { return wstream as any; } export function asDuplexStream< T extends StreamDuplexLike, ReadChunk = string|Uint8Array, WriteChunk = string|Uint8Array, >(rwstream: T): IStreamDuplex { return rwstream as any; }