import { OpenRouterAPIConfig, OpenRouterCompletionRequest, OpenRouterCompletionResponse, OpenRouterTokenizeRequest, OpenRouterTokenizeResponse } from './types';
import { RetryConfig } from './error-handling';
import { RateLimitConfig, QuotaConfig } from './rate-limiting';
/**
 * OpenRouter API client for making authenticated requests
 */
export declare class OpenRouterClient {
    private config;
    private retryConfig;
    private circuitBreaker;
    private rateLimiter?;
    private quotaManager?;
    constructor(config: OpenRouterAPIConfig, retryConfig?: Partial<RetryConfig>, rateLimitConfig?: RateLimitConfig, quotaConfig?: QuotaConfig);
    /**
     * Make a completion request to OpenRouter
     */
    completion(request: OpenRouterCompletionRequest): Promise<OpenRouterCompletionResponse>;
    /**
     * Make a streaming completion request to OpenRouter
     */
    completionStream(request: OpenRouterCompletionRequest): Promise<ReadableStream<string>>;
    /**
     * Get token count for text using OpenRouter's completion API
     * This makes a minimal completion request to get accurate token counts
     */
    tokenize(request: OpenRouterTokenizeRequest): Promise<OpenRouterTokenizeResponse>;
    /**
     * Get available models from OpenRouter
     */
    getModels(): Promise<any>;
    /**
     * Get generation details including native token counts
     */
    getGeneration(id: string): Promise<any>;
    /**
     * Make an authenticated request to OpenRouter API with enhanced error handling
     */
    private makeRequest;
    /**
     * Parse Server-Sent Events stream from OpenRouter
     */
    private createStreamParser;
    /**
     * Test the API connection and authentication
     */
    testConnection(): Promise<boolean>;
    /**
     * Get API key from environment or throw error
     */
    static getApiKeyFromEnv(): string;
    /**
     * Get circuit breaker status
     */
    getCircuitBreakerStatus(): {
        state: string;
        failures: number;
        lastFailureTime: number;
    };
    /**
     * Update retry configuration
     */
    updateRetryConfig(config: Partial<RetryConfig>): void;
    /**
     * Get current retry configuration
     */
    getRetryConfig(): RetryConfig;
    /**
     * Estimate tokens for a request (rough estimation)
     */
    private estimateTokens;
    /**
     * Estimate cost for a request (very rough estimation)
     */
    private estimateCost;
    /**
     * Calculate actual cost from response
     */
    private calculateActualCost;
    /**
     * Record usage in rate limiter and quota manager
     */
    private recordUsage;
    /**
     * Get rate limiting status
     */
    getRateLimitStatus(): import("./rate-limiting").UsageStats | undefined;
    /**
     * Get quota status
     */
    getQuotaStatus(): import("./rate-limiting").QuotaUsage | undefined;
    /**
     * Get quota alerts
     */
    getQuotaAlerts(): import("./rate-limiting").QuotaAlert[];
    /**
     * Enable rate limiting
     */
    enableRateLimiting(config: RateLimitConfig): void;
    /**
     * Enable quota management
     */
    enableQuotaManagement(config: QuotaConfig): void;
    /**
     * Create a client instance using environment variables
     */
    static fromEnv(config?: Partial<OpenRouterAPIConfig>, retryConfig?: Partial<RetryConfig>, rateLimitConfig?: RateLimitConfig, quotaConfig?: QuotaConfig): OpenRouterClient;
}
//# sourceMappingURL=openrouter-client.d.ts.map