/**
 * Configuration Management
 *
 * Manages CV-Git configuration including platform settings, credentials, and features.
 */
import { GitPlatform } from '@cv-git/credentials';
export interface CVGitConfig {
    version: string;
    platform: PlatformConfig;
    credentials: CredentialsConfig;
    ai: AIConfig;
    graph: GraphConfig;
    vector: VectorConfig;
    features: FeaturesConfig;
    hub?: HubConfig;
}
export interface HubConfig {
    url: string;
    token?: string;
}
export interface PlatformConfig {
    type: GitPlatform;
    url?: string;
    api?: string;
}
export interface CredentialsConfig {
    storage: 'keychain' | 'encrypted-file';
    masterPasswordRequired: boolean;
}
export interface AIConfig {
    provider: 'anthropic' | 'openai';
    model: string;
    maxTokens: number;
    temperature: number;
}
export interface GraphConfig {
    url: string;
    database: string;
}
export interface VectorConfig {
    url: string;
    collection: string;
}
export interface FeaturesConfig {
    aiCommitMessages: boolean;
    aiPRDescriptions: boolean;
    aiCodeReview: boolean;
    autoMerge: boolean;
}
/**
 * User Preferences - stored separately from config
 * These are the user's preferred choices for interfaces/providers
 */
export type AIProvider = 'anthropic' | 'openai' | 'openrouter';
export type EmbeddingProvider = 'ollama' | 'openai' | 'openrouter';
export type GitPlatformType = 'github' | 'gitlab' | 'bitbucket';
export interface UserPreferences {
    version: string;
    gitPlatform: GitPlatformType;
    aiProvider: AIProvider;
    embeddingProvider: EmbeddingProvider;
    setupComplete: boolean;
    createdAt: string;
    updatedAt: string;
}
export declare class ConfigManager {
    private configPath;
    private config;
    constructor(configPath?: string);
    /**
     * Load configuration from file
     */
    load(): Promise<CVGitConfig>;
    /**
     * Save configuration to file
     */
    save(config: CVGitConfig): Promise<void>;
    /**
     * Update configuration
     */
    update(updates: Partial<CVGitConfig>): Promise<CVGitConfig>;
    /**
     * Get a configuration value
     */
    get<K extends keyof CVGitConfig>(key: K): Promise<CVGitConfig[K]>;
    /**
     * Set a configuration value
     */
    set<K extends keyof CVGitConfig>(key: K, value: CVGitConfig[K]): Promise<void>;
    /**
     * Get nested configuration value
     */
    getNested(path: string): Promise<any>;
    /**
     * Set nested configuration value
     */
    setNested(path: string, value: any): Promise<void>;
    /**
     * Reset to default configuration
     */
    reset(): Promise<CVGitConfig>;
    /**
     * Check if config exists
     */
    exists(): Promise<boolean>;
    /**
     * Initialize configuration (create with defaults)
     */
    init(): Promise<CVGitConfig>;
}
export declare function getConfig(): ConfigManager;
export declare class PreferencesManager {
    private prefsPath;
    private preferences;
    constructor(prefsPath?: string);
    /**
     * Load preferences from file
     */
    load(): Promise<UserPreferences>;
    /**
     * Save preferences to file
     */
    save(prefs: UserPreferences): Promise<void>;
    /**
     * Check if preferences exist
     */
    exists(): Promise<boolean>;
    /**
     * Initialize preferences with user choices
     */
    init(choices: {
        gitPlatform: GitPlatformType;
        aiProvider: AIProvider;
        embeddingProvider: EmbeddingProvider;
    }): Promise<UserPreferences>;
    /**
     * Update a single preference
     */
    set<K extends keyof UserPreferences>(key: K, value: UserPreferences[K]): Promise<void>;
    /**
     * Get a single preference
     */
    get<K extends keyof UserPreferences>(key: K): Promise<UserPreferences[K]>;
    /**
     * Reset to defaults
     */
    reset(): Promise<UserPreferences>;
    /**
     * Get preferences file path
     */
    getPath(): string;
}
export declare function getPreferences(): PreferencesManager;
//# sourceMappingURL=config.d.ts.map