import { UserConfig, ProviderName } from '../types';
export declare class ConfigManager {
    private readonly workingDir;
    private static readonly DEFAULT_CONFIG;
    private static readonly GLOBAL_CONFIG_DIR;
    private static readonly LOCAL_CONFIG_DIR;
    private static readonly CONFIG_FILE;
    private static readonly RATE_LIMIT_FILE;
    private config;
    private globalConfigPath;
    private localConfigPath;
    private globalRateLimitPath;
    private localRateLimitPath;
    constructor(workingDir?: string);
    loadConfig(): Promise<UserConfig>;
    getConfig(): UserConfig;
    updateConfig(updates: Partial<UserConfig>, scope?: 'global' | 'local'): Promise<void>;
    isProviderRateLimited(provider: ProviderName): Promise<boolean>;
    updateRateLimit(provider: ProviderName, isLimited: boolean): Promise<void>;
    getAvailableProviders(): Promise<ProviderName[]>;
    checkRateLimit(provider: ProviderName): Promise<{
        isLimited: boolean;
        timeRemaining?: number;
        attempts?: number;
    }>;
    private loadConfigFile;
    private saveConfigFile;
    private loadRateLimits;
    private saveRateLimits;
    initConfig(global?: boolean): Promise<void>;
    setProvider(provider: ProviderName, global?: boolean): Promise<void>;
    setFailoverProviders(providers: string[], global?: boolean): Promise<void>;
    clearRateLimit(provider: ProviderName): Promise<void>;
    saveConfig(config: UserConfig, global?: boolean): Promise<void>;
    showConfig(): Promise<void>;
    private ensureDirectoryExists;
    resolveAdditionalDirectories(configDirs?: string[], cliDirs?: string[], basePath?: string): Promise<string[]>;
    private isSystemDirectory;
}
