/**
 * User-Level Configuration Manager
 *
 * Manages the ~/.aiwg/ (or ~/.config/aiwg/) user configuration directory.
 * Provides get/set/list/validate/reset/path operations for all config files.
 *
 * Resolution order:
 *   1. AIWG_CONFIG env var (explicit override)
 *   2. --config-dir CLI flag (explicit override)
 *   3. ~/.aiwg (primary — simple, discoverable)
 *   4. ~/.config/aiwg (fallback — XDG-compliant)
 *
 * New config files are created in whichever path already exists,
 * defaulting to ~/.aiwg if neither exists.
 *
 * @implements #545
 */
/**
 * Top-level user preferences schema
 */
export interface UserConfigData {
    apiVersion: string;
    kind: string;
    defaults: {
        provider?: string;
        verbosity?: 'normal' | 'quiet' | 'verbose';
        opsHome?: string;
    };
    telemetry: {
        enabled: boolean;
    };
    updates: {
        channel?: 'stable' | 'next' | 'nightly';
        checkOnStartup?: boolean;
    };
}
/**
 * Config file metadata for the subsystem registration pattern
 */
export interface ConfigFileSpec {
    filename: string;
    description: string;
    schema?: string;
}
/**
 * Known config files in the user config directory
 */
export declare const KNOWN_CONFIG_FILES: ConfigFileSpec[];
/**
 * Default user config values
 */
export declare const DEFAULT_USER_CONFIG: UserConfigData;
/**
 * Resolve the active user config directory
 *
 * Resolution order:
 *   1. Explicit override (AIWG_CONFIG env or --config-dir)
 *   2. ~/.aiwg (primary)
 *   3. ~/.config/aiwg (fallback)
 *   4. ~/.aiwg (default if neither exists)
 */
export declare function resolveConfigDir(overridePath?: string): string;
/**
 * User-level configuration manager
 */
export declare class UserConfig {
    private readonly configDir;
    private configCache;
    constructor(overridePath?: string);
    /**
     * Get the resolved config directory path
     */
    getPath(): string;
    /**
     * Ensure the config directory exists
     */
    ensureDir(): Promise<void>;
    /**
     * Get a config value by dot-notation key
     *
     * Supports keys like:
     *   - "defaults.provider"
     *   - "telemetry.enabled"
     *   - "updates.channel"
     */
    get(key: string): Promise<unknown>;
    /**
     * Set a config value by dot-notation key
     */
    set(key: string, value: string): Promise<void>;
    /**
     * List all config values (merged view across all files)
     */
    list(): Promise<Record<string, unknown>>;
    /**
     * Validate all config files
     *
     * Returns array of validation issues (empty = all valid)
     */
    validate(): Promise<ValidationIssue[]>;
    /**
     * Reset a key to its default value, or reset all config
     */
    reset(key?: string): Promise<void>;
    /**
     * Load config.yaml, creating defaults if it doesn't exist
     */
    private loadConfig;
    /**
     * Save config.yaml
     */
    private saveConfig;
}
export interface ValidationIssue {
    file: string;
    severity: 'error' | 'warning' | 'info';
    message: string;
}
/**
 * Minimal YAML parser for flat/nested config files.
 * Handles the subset we use: scalars, nested objects (2 levels).
 * For complex YAML, users should use a full parser.
 */
export declare function parseYamlSimple(content: string): Record<string, unknown>;
/**
 * Minimal YAML serializer for our config format
 */
export declare function serializeYamlSimple(obj: Record<string, unknown>, indent?: number): string;
//# sourceMappingURL=user-config.d.ts.map