/**
 * Configuration management system for the lightweight browser load tester
 */
import Joi from 'joi';
import { TestConfiguration } from '../types';
/**
 * Configuration source types
 */
export type ConfigSource = 'file' | 'cli' | 'env' | 'default';
/**
 * Configuration with metadata about sources
 */
export interface ConfigurationWithMeta {
    config: TestConfiguration;
    sources: Record<keyof TestConfiguration, ConfigSource>;
}
/**
 * Configuration file formats
 */
export type ConfigFormat = 'json' | 'yaml' | 'yml';
/**
 * Configuration parsing options
 */
export interface ConfigParseOptions {
    configFile?: string;
    cliArgs?: string[];
    validateOnly?: boolean;
}
/**
 * Configuration parsing and validation errors
 */
export declare class ConfigurationError extends Error {
    source?: ConfigSource | undefined;
    field?: string | undefined;
    constructor(message: string, source?: ConfigSource | undefined, field?: string | undefined);
}
/**
 * Main configuration manager class
 */
export declare class ConfigurationManager {
    /**
     * Parse configuration from multiple sources with priority order:
     * 1. Command line arguments (highest priority)
     * 2. Environment variables
     * 3. Configuration file
     * 4. Default values (lowest priority)
     */
    static parseConfiguration(options?: ConfigParseOptions): Promise<ConfigurationWithMeta>;
    /**
     * Load configuration from file (JSON or YAML)
     */
    private static loadConfigFile;
    /**
     * Detect configuration file format from extension
     */
    private static detectFileFormat;
    /**
     * Load configuration from environment variables
     */
    private static loadFromEnvironment;
    /**
     * Parse command line arguments using Commander.js
     */
    private static parseCommandLineArgs;
    /**
     * Merge configurations with source tracking
     */
    private static mergeConfigs;
    /**
     * Set nested object value using dot notation
     */
    private static setNestedValue;
    /**
     * Parse environment variable value to appropriate type
     */
    private static parseEnvValue;
    /**
     * Validate configuration using Joi schema
     */
    private static validateConfiguration;
    /**
     * Get configuration schema for external validation
     */
    static getValidationSchema(): Joi.ObjectSchema;
    /**
     * Create example configuration file
     */
    static generateExampleConfig(format?: ConfigFormat): string;
}
//# sourceMappingURL=index.d.ts.map