import { m as ProviderConfig, t as LoadBalanceStrategy } from "./config-DDAC7XCF.js"; //#region src/services/proxy/types.d.ts interface NormalizedProvider extends ProviderConfig { apiKeys: string[]; } type ProxyProviderConfig = ProviderConfig; /** * Provider state for tracking health and key rotation */ interface ProviderState { name: string; healthy: boolean; currentKeyIndex: number; failedKeys: Set; lastError?: string; lastErrorTime?: number; requestCount: number; errorCount: number; } /** * Key state for tracking individual API key health */ interface KeyState { index: number; healthy: boolean; lastUsed?: number; lastError?: string; lastErrorTime?: number; cooldownUntil?: number; } /** * Load balancer interface */ interface LoadBalancer { strategy: LoadBalanceStrategy; selectProvider(providers: NormalizedProvider[]): NormalizedProvider | null; selectKey(provider: NormalizedProvider, state: ProviderState): string | null; reportSuccess(providerName: string, keyIndex: number): void; reportError(providerName: string, keyIndex: number, error: ProxyError): void; getProviderState(providerName: string): ProviderState | undefined; } /** * Proxy error types */ type ProxyErrorType = "rate_limit" | "auth_failure" | "quota_exceeded" | "timeout" | "network" | "upstream" | "invalid_request" | "unknown"; /** * Proxy error with classification */ interface ProxyError { type: ProxyErrorType; message: string; statusCode?: number; retryable: boolean; shouldRotateKey: boolean; } /** * Proxy request context */ interface ProxyRequestContext { requestId: string; startTime: number; provider?: string; model?: string; keyIndex?: number; retryCount: number; } /** * Proxy server options */ interface ProxyServerOptions { host?: string; port?: number; accessKey?: string; logger?: boolean; verbose?: boolean; ui?: boolean; captureBodies?: boolean; maxRecords?: number; maxBodyBytes?: number; } /** * Proxy server context returned after startup */ interface ProxyServerContext { baseUrl: string; providers: string[]; models: string[]; server: unknown; shutdown: () => Promise; } /** * Upstream request options */ interface UpstreamRequestOptions { provider: ProxyProviderConfig; apiKey: string; path: string; method: string; headers: Record; body?: unknown; timeout?: number; } /** * Upstream response */ interface UpstreamResponse { status: number; headers: Record; body: unknown; stream?: ReadableStream; } //#endregion export { ProxyErrorType as a, ProxyServerContext as c, UpstreamResponse as d, ProxyError as i, ProxyServerOptions as l, LoadBalancer as n, ProxyProviderConfig as o, ProviderState as r, ProxyRequestContext as s, KeyState as t, UpstreamRequestOptions as u };