import type { CommitReceipt, MeteringDirective, MeteringUsage } from './Session.js'; import { type CommitTransport, SessionConsumer } from './SessionConsumer.js'; /** * Raw Server-Sent Event. */ export interface SseEvent { readonly data: string; readonly event?: string | undefined; readonly id?: string | undefined; readonly retry?: number | undefined; } /** * Parsed metered SSE event. */ export type MeteredSseEvent = { readonly data: Message; readonly type: 'message'; } | { readonly directive: MeteringDirective; readonly type: 'metering'; } | { readonly receipt: unknown; readonly type: 'receipt'; } | { readonly type: 'done'; } | { readonly type: 'usage'; readonly usage: MeteringUsage; }; /** * Incremental SSE decoder for HTTP streaming responses. */ export declare class SseDecoder { #private; /** * Pushes a text or byte chunk and returns all complete SSE events. */ pushChunk(chunk: Uint8Array | string): SseEvent[]; /** * Flushes the decoder and parses any trailing event. */ finish(): SseEvent[]; private drainCompleteEvents; } /** * Parses one raw SSE block into an event. */ export declare function parseSseEventBlock(block: string): SseEvent | null; /** * Parses one raw SSE event into the metered event model used by session streams. */ export declare function parseMeteredSseEvent(event: SseEvent, parseMessage?: (data: string) => Message): MeteredSseEvent; /** * Tracks metering state for an HTTP/SSE response and commits final usage on `ack()`. */ export declare class MeteredSseSession { #private; constructor(consumer: SessionConsumer); /** Whether a terminal stream marker has been observed. */ get isDone(): boolean; /** Last server-issued metering directive. */ get directive(): MeteringDirective | undefined; /** Final usage reported by the stream. */ get usage(): MeteringUsage | undefined; /** * Accepts one SSE event and updates local metering state. */ acceptEvent(event: SseEvent, parseMessage?: (data: string) => Message): MeteredSseEvent; /** * Commits the final usage amount, falling back to the reserved directive amount. */ ack(): Promise; } /** * Decodes a `ReadableStream` of SSE bytes into metered events. */ export declare function decodeMeteredSseStream(stream: ReadableStream, parseMessage?: (data: string) => Message): AsyncGenerator>; //# sourceMappingURL=HttpStream.d.ts.map