import { z } from 'zod';
import type { AgentConfig } from './types';
/**
 * Zod schema for AgentConfig
 */
export declare const AgentConfigSchema: z.ZodObject<{
    strategy: z.ZodDefault<z.ZodEnum<{
        "goal-directed": "goal-directed";
        "continuous-improvement": "continuous-improvement";
    }>>;
    continueOnCompletion: z.ZodDefault<z.ZodBoolean>;
    maxIterations: z.ZodDefault<z.ZodNumber>;
    timeout: z.ZodDefault<z.ZodNumber>;
    requireApprovalFor: z.ZodDefault<z.ZodEnum<{
        none: "none";
        destructive: "destructive";
        commits: "commits";
        all: "all";
    }>>;
    pauseOnError: z.ZodDefault<z.ZodBoolean>;
    workingBranch: z.ZodDefault<z.ZodString>;
    maxConcurrency: z.ZodDefault<z.ZodNumber>;
    autoSaveInterval: z.ZodDefault<z.ZodNumber>;
    enableProgress: z.ZodDefault<z.ZodBoolean>;
    destructiveOperations: z.ZodDefault<z.ZodArray<z.ZodString>>;
    maxAutoApprovalCost: z.ZodDefault<z.ZodNumber>;
    autoApproveSafeTasks: z.ZodDefault<z.ZodBoolean>;
    workingDir: z.ZodOptional<z.ZodString>;
    continuousImprovement: z.ZodDefault<z.ZodObject<{
        sleepTimeOnNoTasks: z.ZodDefault<z.ZodNumber>;
        sleepTimeBetweenTasks: z.ZodDefault<z.ZodNumber>;
        maxCycles: z.ZodDefault<z.ZodNumber>;
    }, z.core.$strip>>;
    discovery: z.ZodDefault<z.ZodObject<{
        enabledStrategies: z.ZodArray<z.ZodString>;
        cacheTime: z.ZodDefault<z.ZodNumber>;
        checkChanges: z.ZodDefault<z.ZodBoolean>;
    }, z.core.$strip>>;
    preset: z.ZodOptional<z.ZodString>;
    stateDir: z.ZodOptional<z.ZodString>;
    approval: z.ZodObject<{
        level: z.ZodDefault<z.ZodEnum<{
            none: "none";
            destructive: "destructive";
            commits: "commits";
            all: "all";
        }>>;
        autoApproveSafeTasks: z.ZodDefault<z.ZodBoolean>;
        maxAutoApprovalCost: z.ZodDefault<z.ZodNumber>;
    }, z.core.$strip>;
    safety: z.ZodObject<{
        enabledChecks: z.ZodDefault<z.ZodArray<z.ZodString>>;
        blockDestructive: z.ZodDefault<z.ZodBoolean>;
        maxFileSize: z.ZodDefault<z.ZodNumber>;
    }, z.core.$strip>;
    healthCheck: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        interval: z.ZodDefault<z.ZodNumber>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Type guard for AgentConfig
 */
export declare function isValidAgentConfig(config: unknown): config is AgentConfig;
/**
 * Validate configuration with Zod
 */
export declare function validateConfig(config: unknown): AgentConfig;
/**
 * Load configuration from CLI options and config file
 */
export declare function loadConfig(cliOptions: Partial<AgentConfig>, configPath?: string): Promise<AgentConfig>;
/**
 * Merge two configurations (second overrides first)
 *
 * Uses deepMerge utility with explicit path specification for nested objects.
 * This makes it clear which fields get deep merged vs shallow merge.
 */
export declare function mergeConfig(base: AgentConfig, override: Partial<AgentConfig>): AgentConfig;
//# sourceMappingURL=config.d.ts.map