// Type definitions for Streams API // Project: https://github.com/whatwg/streams // Definitions by: Kagami Sascha Rosylight // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped interface ReadableStreamSource { start?(controller: ReadableStreamDefaultController): void | Promise; pull?(controller: ReadableStreamDefaultController): void | Promise; cancel?(reason: string): void | Promise; } interface ReadableByteStreamSource { start?(controller: ReadableByteStreamController): void | Promise; pull?(controller: ReadableByteStreamController): void | Promise; cancel?(reason: string): void | Promise; type: "bytes"; autoAllocateChunkSize?: number; } interface QueuingStrategy { size?(chunk: ArrayBufferView): number; highWaterMark?: number; } interface PipeOptions { preventClose?: boolean; preventAbort?: boolean; preventCancel?: boolean; } declare class ReadableStreamDefaultReader { constructor(stream: ReadableStream); closed: Promise; cancel(reason: string): Promise; read(): Promise>; releaseLock(): void; } declare class ReadableStreamBYOBReader { constructor(stream: ReadableStream); closed: Promise; cancel(reason: string): Promise; read(view: ArrayBufferView): Promise>; releaseLock(): void; } declare class ReadableStreamDefaultController { constructor(stream: ReadableStream, underlyingSource: ReadableStreamSource, size: number, highWaterMark: number); desiredSize: number; close(): void; enqueue(chunk: ArrayBufferView): number; error(e: any): void; } declare class ReadableByteStreamController { constructor(stream: ReadableStream, underlyingSource: ReadableStreamSource, highWaterMark: number); byobRequest: ReadableStreamBYOBRequest; desiredSize: number; close(): void; enqueue(chunk: ArrayBufferView): number; error(e: any): void; } declare class ReadableStreamBYOBRequest { constructor(controller: ReadableByteStreamController, view: ArrayBufferView); view: ArrayBufferView; respond(bytesWritten: number): void; respondWithNewView(view: ArrayBufferView): void; } interface WritableStreamSink { start?(controller: WritableStreamDefaultController): void | Promise; write?(chunk: any, controller?: WritableStreamDefaultController): any; close?(controller: WritableStreamDefaultController): void | Promise; abort?(reason: string): void | Promise; } declare class WritableStream { constructor(underlyingSink?: WritableStreamSink, strategy?: QueuingStrategy); locked: boolean; abort(reason: string): Promise; getWriter(): WritableStreamDefaultWriter; } declare class WritableStreamDefaultWriter { constructor(stream: WritableStream); closed: Promise; desiredSize: number | null; ready: Promise; abort(reason: string): Promise; close(): Promise; releaseLock(): void; write(chunk: any): Promise; } declare class WritableStreamDefaultController { constructor(stream: WritableStream, underlyingSink: WritableStreamSink, size: number, highWaterMark: number); error(e: any): void; } declare class ByteLengthQueuingStrategy { constructor({ highWaterMark }: { highWaterMark: number }); size(chunk: ArrayBufferView): number | undefined; } declare class CountQueuingStrategy { constructor({ highWaterMark }: { highWaterMark: number }); size(): 1; }