import { IConfigManager, IConfigManagerDeps, IConfigManagerOptions, IConfigChangeEvent, IConfigMetrics } from "./interfaces/IConfigManager";
import { IGatherTSConfig as IGatherTSConfig, IConfigValidationResult } from "@/types/config";
import { BaseService } from "@/types/services";
export declare class ConfigManager extends BaseService implements IConfigManager {
    private readonly deps;
    private eventEmitter;
    private config;
    private readonly configPath;
    private readonly projectRoot;
    private readonly debug;
    private readonly watch;
    private watchHandler?;
    private metrics;
    constructor(projectRoot: string, deps: IConfigManagerDeps, options?: IConfigManagerOptions);
    on(event: string | symbol, listener: (...args: any[]) => void): this;
    emit(event: string | symbol, ...args: any[]): boolean;
    removeAllListeners(event?: string | symbol): this;
    initialize(): Promise<void>;
    cleanup(): void;
    private initializeMetrics;
    private logDebug;
    getConfig(): IGatherTSConfig;
    private startWatching;
    private loadConfig;
    updateConfig(updates: Partial<IGatherTSConfig>): Promise<IGatherTSConfig>;
    saveConfig(): Promise<void>;
    reset(): void;
    getMetrics(): IConfigMetrics;
    onConfigChange(callback: (event: IConfigChangeEvent) => void): void;
    getProjectRoot(): string;
    getTokenizerModel(): string;
    getMaxDepth(): number | undefined;
    shouldShowTokenCount(): boolean;
    getTopFilesCount(): number;
    isDebugEnabled(): boolean;
    getModelTokenLimit(): number;
    getTokenWarning(totalTokens: number): string | null;
    validateConfig(config: Partial<IGatherTSConfig>): IConfigValidationResult;
    private validateTokenizerConfig;
    private validateOutputFormat;
}
