/// <reference types="node" /> import { Duplex, Readable, Writable } from 'stream'; import { EmitterAugmentation1 } from './events'; export declare type WriteCallback = (error: Error | null | undefined) => void; export interface IntermediateObjectReadable<T> extends Readable { read(size?: number): any & T; } export declare type ObjectReadable<T> = { read(size?: number): T; } & EmitterAugmentation1<'data', T> & IntermediateObjectReadable<T>; export interface IntermediateObjectWritable<T> extends Writable { _write(chunk: any & T, encoding: string, callback: Function): void; write(chunk: any & T, cb?: WriteCallback): boolean; write(chunk: any & T, encoding?: any, cb?: WriteCallback): boolean; setDefaultEncoding(encoding: string): this; end(): void; end(chunk: any & T, cb?: Function): void; end(chunk: any & T, encoding?: any, cb?: Function): void; } export interface ObjectWritable<T> extends IntermediateObjectWritable<T> { _write(chunk: T, encoding: string, callback: Function): void; write(chunk: T, cb?: Function): boolean; write(chunk: T, encoding?: any, cb?: Function): boolean; setDefaultEncoding(encoding: string): this; end(): void; end(chunk: T, cb?: Function): void; end(chunk: T, encoding?: any, cb?: Function): void; } export declare type ObjectDuplex<T, U> = { read(size?: number): U; _write(chunk: T, encoding: string, callback: Function): void; write(chunk: T, cb?: Function): boolean; write(chunk: T, encoding?: any, cb?: Function): boolean; end(): void; end(chunk: T, cb?: Function): void; end(chunk: T, encoding?: any, cb?: Function): void; } & Duplex & ObjectWritable<T> & ObjectReadable<U>;