import { EventEmitter } from 'events'; import { b as StreamConfig, c as StreamCallbacks, d as Usage, e as StreamOptions, M as Message } from './streaming.d-CUzaq8hR.mjs'; /** * Extended StreamConfig with callbacks */ interface AIStreamConfig extends StreamConfig, Partial { onCost?: (usage: Usage) => void; } /** * Event types emitted by AIStream */ interface AIStreamEvents { message: (message: Message) => void; 'streaming-start': () => void; 'streaming-end': () => void; error: (error: Error) => void; usage: (usage: Usage) => void; reset: () => void; token: (token: string) => void; retry: (info: { attempt: number; delay: number; }) => void; } /** * Core AI streaming client - framework-agnostic * Handles SSE and WebSocket transports with automatic reconnection */ declare class AIStream extends EventEmitter { private config; private messages; private isStreaming; private currentStreamController; private retryCount; private usage; constructor(config: AIStreamConfig, _options?: StreamOptions); on(event: K, listener: AIStreamEvents[K]): this; emit(event: K, ...args: Parameters): boolean; once(event: K, listener: AIStreamEvents[K]): this; off(event: K, listener: AIStreamEvents[K]): this; removeListener(event: K, listener: AIStreamEvents[K]): this; removeAllListeners(event?: string | symbol): this; /** * Send a message and start streaming the response */ send(content: string): Promise; /** * Stream the AI response */ private streamResponse; /** * Make the streaming request */ private makeStreamRequest; /** * Process the SSE stream */ private processStream; /** * Handle errors with retry logic */ private handleError; /** * Determine if error is retriable */ private shouldRetry; /** * Calculate retry delay with backoff */ private calculateRetryDelay; /** * Get retry configuration with defaults */ private getRetryConfig; /** * Reset the conversation */ reset(): void; /** * Retry the last message */ retry(): Promise; /** * Stop the current stream */ stop(): void; /** * Get current messages */ getMessages(): Message[]; /** * Get streaming state */ getIsStreaming(): boolean; /** * Get usage statistics */ getUsage(): Usage; /** * Generate unique ID */ private generateId; } export { AIStream as A };