import { ProviderName } from '../types';
export interface ProviderRateLimitData {
    provider: ProviderName;
    limitedAt: number;
    attempts: number;
    lastError?: string;
}
export interface RateLimitCache {
    [provider: string]: ProviderRateLimitData;
}
export declare class ProviderRateLimiter {
    private static readonly CACHE_FILE;
    private static readonly CONFIG_DIR;
    private cache;
    private cachePath;
    private cacheLoaded;
    constructor();
    loadCache(): Promise<void>;
    saveCache(): Promise<void>;
    isProviderRateLimited(provider: ProviderName): Promise<boolean>;
    markProviderRateLimited(provider: ProviderName, error?: string): Promise<void>;
    clearProviderRateLimit(provider: ProviderName): Promise<void>;
    isRateLimitError(provider: ProviderName, text: string): boolean;
    getBestGeminiModel(): Promise<string>;
    getRateLimitStatus(provider: ProviderName): Promise<{
        isLimited: boolean;
        timeRemaining?: number;
        attempts?: number;
        lastError?: string;
    }>;
    getRateLimitSummary(): Promise<Record<ProviderName, {
        isLimited: boolean;
        timeRemaining?: number;
        attempts?: number;
    }>>;
    private ensureDirectoryExists;
}
