/**
 * Provider Manager for Requirements Gathering Agent
 * Handles provider configuration, validation, and failover
 */
interface ProviderConfig {
    name: string;
    check: () => Promise<boolean>;
    priority: number;
    description: string;
    setupGuide?: string;
    endpoint?: string;
    tokenLimit: number;
    costPerToken?: number;
}
interface ProviderMetrics {
    totalRequests: number;
    successfulRequests: number;
    failedRequests: number;
    averageResponseTime: number;
    lastError: string | null;
    lastErrorTime: Date | null;
    tokenUsage: {
        total: number;
        average: number;
    };
}
export declare class ProviderManager {
    private providers;
    private metrics;
    private quotas;
    private activeProvider;
    private fallbackQueue;
    private rateLimiters;
    constructor();
    private initializeProviders;
    private setDefaultQuotas;
    private initializeMetrics;
    private addProvider;
    validateConfigurations(): Promise<Map<string, boolean>>;
    getActiveProvider(): string | null;
    switchProvider(): Promise<boolean>;
    updateMetrics(providerName: string, success: boolean, responseTime: number, tokenCount: number, error?: Error): void;
    getProviderMetrics(providerName?: string): Map<string, ProviderMetrics> | ProviderMetrics | null;
    getProviderConfig(providerName: string): ProviderConfig | null;
    validateProvider(providerName: string): Promise<boolean>;
    getTokenLimit(providerName?: string): number;
    checkRateLimit(providerName: string): Promise<boolean>;
    getDailyTokenUsage(providerName: string): number;
    getDailyCost(providerName: string): number;
    checkQuota(providerName: string): boolean;
    getProviderStatus(providerName: string): {
        available: boolean;
        withinRateLimit: boolean;
        withinQuota: boolean;
        quotaRemaining?: number;
        estimatedCost?: number;
    };
}
export {};
//# sourceMappingURL=ProviderManager.d.ts.map