import { Profile } from './profileConfig';
import { AgentConfig } from './agent-config';
import { TaskConfig } from './taskConfig';
/**
 * CLI options interface for configuration overrides
 */
export interface CliOptions {
    profile?: string;
    provider?: string;
    model?: string;
    apiKey?: string;
    stream?: boolean;
    sound?: boolean;
    verbose?: boolean;
    tools?: string[];
    agent?: string;
    region?: string;
    kbId?: string;
    withStream?: boolean;
}
/**
 * Configuration Loader class
 * Handles loading all configuration types and resolving effective configuration based on overrides
 */
export declare class ConfigLoader {
    private profileManager;
    private toolManager;
    private agentManager;
    private taskManager;
    constructor();
    /**
     * Load all configurations
     * @returns Object containing all configurations
     */
    loadConfig(): Promise<{
        profiles: string[];
        activeProfile: string;
        tools: string[];
        agents: string[];
        tasks: string[];
    }>;
    /**
     * Get effective configuration based on CLI options
     * @param cliOptions CLI options for overrides
     * @returns Effective configuration for execution
     */
    getEffectiveConfig(cliOptions: CliOptions): Promise<{
        profile: Profile;
        agent?: AgentConfig;
        tools: string[];
    }>;
    /**
     * Get environment variables from a tool configuration
     * @param tools Tool configuration names
     * @returns Environment variables
     */
    resolveEnvironmentVariables(tools: string[]): Promise<Record<string, string>>;
    /**
     * Interpolate environment variables in a string
     * @param value String with potential environment variable references
     * @returns Interpolated string or undefined if interpolation fails
     */
    private interpolateEnvVar;
    /**
     * Get a task configuration by name
     * @param name Task name
     * @returns Task configuration
     */
    getTask(name: string): Promise<TaskConfig>;
    /**
     * Initialize all configuration managers with default configurations
     */
    initializeDefaults(): Promise<void>;
}
