import { a as ChatCompletionRequest, C as ChatCompletionResponse, S as StreamChunk, b as ChatMessage, M as ModelsListResponse } from './api-DL1ztBmF.js'; import { EventEmitter } from 'eventemitter3'; import { S as SelectionCriteria } from './routing-C4EW-wyV.js'; import { M as ModelSelector } from './ModelSelector-DRt9Wz6J.js'; import { M as ModelCatalog } from './ModelCatalog-BcfW6bZr.js'; import { P as PricingCalculator, C as CostTracker } from './CostTracker-_TwTsEdz.js'; interface OpenRouterConfig { apiKey: string; baseURL?: string; appName?: string; httpReferer?: string; defaultModel?: string; timeout?: number; maxRetries?: number; retryDelay?: number; modelSelection?: { strategy?: 'cost' | 'performance' | 'balanced' | 'capability' | 'custom'; fallbackEnabled?: boolean; maxFallbacks?: number; autoSelect?: boolean; }; budgets?: { daily?: number; monthly?: number; total?: number; alertThreshold?: number; }; cache?: { enabled?: boolean; ttl?: number; maxSize?: number; }; logging?: { enabled?: boolean; level?: 'debug' | 'info' | 'warn' | 'error'; }; } interface HttpConfig { timeout: number; maxRetries: number; retryDelay: number; keepAlive: boolean; maxSockets: number; } interface RetryConfig { maxAttempts: number; baseDelay: number; maxDelay: number; exponential: boolean; retryableStatusCodes: number[]; } interface SendOptions { model?: string; modelSelection?: SelectionCriteria; temperature?: number; maxTokens?: number; topP?: number; stream?: boolean; functions?: any[]; tools?: any[]; responseFormat?: { type: 'text' | 'json_object'; }; metadata?: Record; } interface ConversationOptions extends SendOptions { systemPrompt?: string; conversationId?: string; userId?: string; } interface ClientEvents { 'message:sent': (request: ChatCompletionRequest) => void; 'message:received': (response: ChatCompletionResponse) => void; 'message:error': (error: Error) => void; 'stream:start': (requestId: string) => void; 'stream:chunk': (chunk: StreamChunk) => void; 'stream:end': (requestId: string) => void; 'stream:error': (error: Error) => void; 'model:selected': (modelId: string, reason: string) => void; 'cost:tracked': (cost: number, modelId: string) => void; 'budget:warning': (current: number, limit: number) => void; 'budget:exceeded': (current: number, limit: number) => void; } type ClientEventEmitter = EventEmitter; declare class OpenRouterClient extends EventEmitter { private httpClient; private retryPolicy; private circuitBreaker; private api; private modelSelector; private catalog; private pricingCalculator; private costTracker; private logger; private config; constructor(config: OpenRouterConfig); /** * Send a message to OpenRouter */ sendMessage(message: string | ChatMessage[], options?: SendOptions): Promise; /** * Stream a message response */ streamMessage(message: string | ChatMessage[], options?: SendOptions): AsyncIterable; /** * List available models */ listModels(): Promise; /** * Get model catalog */ getModelCatalog(): ModelCatalog; /** * Get pricing calculator */ getPricingCalculator(): PricingCalculator; /** * Get cost tracker */ getCostTracker(): CostTracker; /** * Get model selector */ getModelSelector(): ModelSelector; /** * Destroy client and cleanup resources */ destroy(): void; private normalizeMessages; private selectModel; private buildRequest; private checkBudget; private trackCost; private executeWithResilience; private setupEventListeners; } export { type ConversationOptions as C, type HttpConfig as H, OpenRouterClient as O, type RetryConfig as R, type SendOptions as S, type OpenRouterConfig as a, type ClientEvents as b, type ClientEventEmitter as c };