/** * Streams * Pokemon Showdown - http://pokemonshowdown.com/ * * The Node.js standard library's Streams are really hard to use. This * offers a better stream API. * * Documented in STREAMS.md. * * @license MIT */ /// type BufferEncoding = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'latin1' | 'binary' | 'hex'; export declare class ReadStream { buf: Buffer; bufStart: number; bufEnd: number; bufCapacity: number; readSize: number; atEOF: boolean; errorBuf: Error[] | null; encoding: BufferEncoding; isReadable: boolean; isWritable: boolean; nodeReadableStream: NodeJS.ReadableStream | null; nextPushResolver: (() => void) | null; nextPush: Promise; awaitingPush: boolean; constructor(optionsOrStreamLike?: { [k: string]: any; } | NodeJS.ReadableStream | string | Buffer); get bufSize(): number; moveBuf(): void; expandBuf(newCapacity?: number): void; ensureCapacity(additionalCapacity: number): void; push(buf: Buffer | string, encoding?: BufferEncoding): void; pushEnd(): void; pushError(err: Error, recoverable?: boolean): void; readError(): void; peekError(): void; resolvePush(): void; _read(size?: number): void | Promise; _destroy(): void | Promise; _pause(): void; /** * Reads until the internal buffer is non-empty. Does nothing if the * internal buffer is already non-empty. * * If `byteCount` is a number, instead read until the internal buffer * contains at least `byteCount` bytes. * * If `byteCount` is `true`, reads even if the internal buffer is * non-empty. */ loadIntoBuffer(byteCount?: number | null | true, readError?: boolean): Promise | undefined; doLoad(chunkSize?: number | null, readError?: boolean): Promise; peek(byteCount?: number | null, encoding?: BufferEncoding): string | null | Promise; peek(encoding: BufferEncoding): string | null | Promise; peekBuffer(byteCount?: number | null): Buffer | null | Promise; read(byteCount?: number | null, encoding?: BufferEncoding): Promise; read(encoding: BufferEncoding): Promise; byChunk(byteCount?: number | null): ObjectReadStream; byLine(): ObjectReadStream; delimitedBy(delimiter: string): ObjectReadStream; readBuffer(byteCount?: number | null): Promise; indexOf(symbol: string, encoding?: BufferEncoding): Promise; readAll(encoding?: BufferEncoding): Promise; peekAll(encoding?: BufferEncoding): string | Promise | null; readDelimitedBy(symbol: string, encoding?: BufferEncoding): Promise; readLine(encoding?: BufferEncoding): Promise; destroy(): void | Promise; next(byteCount?: number | null): Promise<{ value: string | null; done: boolean; }>; pipeTo(outStream: WriteStream, options?: { noEnd?: boolean; }): Promise; } interface WriteStreamOptions { nodeStream?: NodeJS.WritableStream; write?: (this: WriteStream, data: string | Buffer) => (Promise | undefined); writeEnd?: (this: WriteStream) => Promise; } export declare class WriteStream { isReadable: boolean; isWritable: true; encoding: BufferEncoding; nodeWritableStream: NodeJS.WritableStream | null; drainListeners: (() => void)[]; constructor(optionsOrStream?: WriteStreamOptions | NodeJS.WritableStream); write(chunk: Buffer | string): void | Promise; writeLine(chunk: string): void | Promise; _write(chunk: Buffer | string): void | Promise; _writeEnd(): void | Promise; writeEnd(chunk?: string): Promise; } export declare class ReadWriteStream extends ReadStream implements WriteStream { isReadable: true; isWritable: true; nodeWritableStream: NodeJS.WritableStream | null; drainListeners: (() => void)[]; constructor(options?: AnyObject); write(chunk: Buffer | string): Promise | void; writeLine(chunk: string): Promise | void; _write(chunk: Buffer | string): Promise | void; /** * In a ReadWriteStream, `_read` does not need to be implemented, * because it's valid for the read stream buffer to be filled only by * `_write`. */ _read(size?: number): void; _writeEnd(): void | Promise; writeEnd(): Promise; } type ObjectReadStreamOptions = { buffer?: T[]; read?: (this: ObjectReadStream) => void | Promise; pause?: (this: ObjectReadStream) => void | Promise; destroy?: (this: ObjectReadStream) => void | Promise; nodeStream?: undefined; } | { buffer?: undefined; read?: undefined; pause?: undefined; destroy?: undefined; nodeStream: NodeJS.ReadableStream; }; export declare class ObjectReadStream { buf: T[]; readSize: number; atEOF: boolean; errorBuf: Error[] | null; isReadable: boolean; isWritable: boolean; nodeReadableStream: NodeJS.ReadableStream | null; nextPushResolver: (() => void) | null; nextPush: Promise; awaitingPush: boolean; constructor(optionsOrStreamLike?: ObjectReadStreamOptions | NodeJS.ReadableStream | T[]); push(elem: T): void; pushEnd(): void; pushError(err: Error, recoverable?: boolean): void; readError(): void; peekError(): void; resolvePush(): void; _read(size?: number): void | Promise; _destroy(): void | Promise; _pause(): void | Promise; loadIntoBuffer(count?: number | true, readError?: boolean): Promise; peek(): Promise; read(): Promise; peekArray(count?: number | null): Promise; readArray(count?: number | null): Promise; readAll(): Promise; peekAll(): Promise; destroy(): void | Promise; [Symbol.asyncIterator](): this; next(): Promise<{ value: T; done: false; } | { value: undefined; done: true; }>; pipeTo(outStream: ObjectWriteStream, options?: { noEnd?: boolean; }): Promise; } interface ObjectWriteStreamOptions { _writableState?: any; nodeStream?: NodeJS.WritableStream; write?: (this: ObjectWriteStream, data: T) => Promise | undefined; writeEnd?: (this: ObjectWriteStream) => Promise; } export declare class ObjectWriteStream { isReadable: boolean; isWritable: true; nodeWritableStream: NodeJS.WritableStream | null; constructor(optionsOrStream?: ObjectWriteStreamOptions | NodeJS.WritableStream); write(elem: T | null): void | Promise; _write(elem: T): void | Promise; _writeEnd(): void | Promise; writeEnd(elem?: T): Promise; } interface ObjectReadWriteStreamOptions { read?: (this: ObjectReadStream) => void | Promise; pause?: (this: ObjectReadStream) => void | Promise; destroy?: (this: ObjectReadStream) => void | Promise; write?: (this: ObjectWriteStream, elem: T) => Promise | undefined | void; writeEnd?: () => Promise | undefined | void; } export declare class ObjectReadWriteStream extends ObjectReadStream implements ObjectWriteStream { isReadable: true; isWritable: true; nodeWritableStream: NodeJS.WritableStream | null; constructor(options?: ObjectReadWriteStreamOptions); write(elem: T): void | Promise; _write(elem: T): void | Promise; /** In a ReadWriteStream, _read does not need to be implemented. */ _read(): void; _writeEnd(): void | Promise; writeEnd(): Promise; } export declare function readAll(nodeStream: NodeJS.ReadableStream, encoding?: any): Promise; export declare function stdin(): ReadStream; export declare function stdout(): WriteStream; export declare function stdpipe(stream: WriteStream | ReadStream | ReadWriteStream): Promise; export {};