/** * @license * Copyright 2023 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type { Capability, NodeValue } from "@breadboard-ai/types"; declare const STREAM_KIND: "stream"; export interface StreamCapabilityType extends Capability { kind: typeof STREAM_KIND; stream: ReadableStream; } export declare class StreamCapability implements StreamCapabilityType { kind: "stream"; stream: ReadableStream; constructor(stream: ReadableStream); } export declare const clone: (streamCapability: StreamCapabilityType) => ReadableStream; export declare const isStreamCapability: (object: unknown) => boolean; export declare const stringifyWithStreams: (value: unknown) => { value: string; streams: ReadableStream[]; }; export declare const parseWithStreams: (value: string, getStream: (id: number) => ReadableStream) => any; export declare const getStreams: (value: NodeValue) => ReadableStream[]; /** * Stubs out all streams in the input values with empty streams. * This is useful when we don't want the streams to be transferred. * @param data * @returns */ export declare const stubOutStreams: (data: unknown) => unknown; export type PatchedReadableStream = ReadableStream & AsyncIterable; interface MessagePortLike { postMessage(message: unknown, transfer: Transferable[]): void; onmessage: ((ev: MessageEvent) => unknown) | null; } export type PortStreams = { readable: ReadableStream; writable: WritableStream; }; export declare const portToStreams: (port: MessagePortLike) => PortStreams; export declare const portFactoryToStreams: (portFactory: () => Promise) => PortStreams; export declare class WritableResult { #private; data: Read; constructor(value: Read, writer: WritableStreamDefaultWriter); reply(chunk: Write): Promise; } export type AsyncIterableWithStart = AsyncIterable & { start: (chunk: S) => Promise; }; /** * A helper to convert a pair of streams to an async iterable that follows * the following protocol: * - The async iterable yields a `WritableResult` object. * - The `WritableResult` object contains the data from the readable stream. * - The `WritableResult` object has a `reply` method that can be used to * write a value as a reply to to data in the readable stream. * * This is particularly useful with bi-directional streams, when the two * streams are semantically connected to each other. * * @param writable The writable stream. * @param readable The readable stream. * @returns An async iterable. */ export declare const streamsToAsyncIterable: (writable: WritableStream, readable: ReadableStream) => AsyncIterableWithStart, Write>; export declare const patchReadableStream: () => void; export declare const streamFromAsyncGen: (iterator: AsyncIterableIterator) => PatchedReadableStream; export declare const streamFromReader: (reader: ReadableStreamDefaultReader) => PatchedReadableStream; export declare const streamFromWriter: (writer: WritableStreamDefaultWriter) => WritableStream; export {}; //# sourceMappingURL=stream.d.ts.map