import type { CleanupRecord, NormalizedBleError } from './errors.js'; import type { Capacity, ResourceCount } from './primitives.js'; export type OverflowPolicy = 'latest' | 'drop-oldest' | 'drop-newest' | 'error'; export interface StreamLimits { readonly itemCapacity: Capacity; readonly byteCapacity: Capacity; readonly reservedControlCapacity: Capacity; } export interface StreamOverflowNotice { readonly kind: 'overflow'; readonly policy: OverflowPolicy; readonly droppedItems: ResourceCount; readonly droppedBytes: ResourceCount; readonly replacedItems: ResourceCount; } export interface StreamValue { readonly kind: 'value'; readonly value: T; } export interface StreamTerminalNotice { readonly kind: 'terminal'; readonly reason: 'closed' | 'overflow' | 'source-failed' | 'owner-released' | 'connection-lost' | 'service-changed' | 'operation-aborted' | 'operation-timed-out'; readonly droppedItems: ResourceCount; readonly droppedBytes: ResourceCount; readonly replacedItems: ResourceCount; /** Structured cause when the source failed while delivering this stream. */ readonly error?: NormalizedBleError | null; } export type StreamItem = StreamValue | StreamOverflowNotice | StreamTerminalNotice; export interface BoundedAsyncStreamIterator extends AsyncIterator, undefined, undefined> { readonly return: () => Promise, undefined>>; [Symbol.asyncIterator](): BoundedAsyncStreamIterator; } export interface BoundedAsyncStream extends AsyncIterable, undefined, undefined> { readonly limits: StreamLimits; readonly overflowPolicy: OverflowPolicy; /** Optional synchronous state check for FIFO admission race prevention. */ readonly isTerminal?: () => boolean; /** Optional readable terminal cause; must not consume the unicast iterator. */ readonly terminalReason?: () => StreamTerminalNotice['reason'] | null; [Symbol.asyncIterator](): BoundedAsyncStreamIterator; close(): Promise; } //# sourceMappingURL=streams.d.ts.map