/**
 * Feature Flags Configuration
 *
 * Allows users to enable/disable features via `.vaspera/config.yaml`.
 *
 * Example configuration:
 * ```yaml
 * version: 1
 *
 * agents:
 *   security:
 *     enabled: true
 *     weight: 1.0
 *   reliability:
 *     enabled: true
 *     weight: 0.8
 *   typesafety:
 *     enabled: false
 *   redteam:
 *     enabled: true
 *     weight: 0.5
 *
 * scanners:
 *   semgrep:
 *     enabled: true
 *     timeout: 120000
 *   gitleaks:
 *     enabled: true
 *   npm-audit:
 *     enabled: true
 *
 * features:
 *   multiModel: false
 *   costTracking: true
 *   autofix: true
 *   incrementalScan: true
 * ```
 *
 * @module config/flags
 */
import { z } from "zod";
/**
 * Agent configuration
 */
export declare const AgentConfigSchema: z.ZodObject<{
    /** Whether agent is enabled */
    enabled: z.ZodDefault<z.ZodBoolean>;
    /** Agent weight for consensus (0-1) */
    weight: z.ZodDefault<z.ZodNumber>;
    /** Model to use for this agent */
    model: z.ZodOptional<z.ZodString>;
    /** Temperature for this agent */
    temperature: z.ZodOptional<z.ZodNumber>;
    /** Custom prompt additions */
    promptAdditions: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    enabled: boolean;
    weight: number;
    model?: string | undefined;
    temperature?: number | undefined;
    promptAdditions?: string | undefined;
}, {
    enabled?: boolean | undefined;
    model?: string | undefined;
    weight?: number | undefined;
    temperature?: number | undefined;
    promptAdditions?: string | undefined;
}>;
export type AgentConfig = z.infer<typeof AgentConfigSchema>;
/**
 * Scanner configuration
 */
export declare const ScannerConfigSchema: z.ZodObject<{
    /** Whether scanner is enabled */
    enabled: z.ZodDefault<z.ZodBoolean>;
    /** Scanner timeout in ms */
    timeout: z.ZodOptional<z.ZodNumber>;
    /** Custom rules directory */
    rulesDir: z.ZodOptional<z.ZodString>;
    /** Additional scanner-specific options */
    options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
    enabled: boolean;
    timeout?: number | undefined;
    options?: Record<string, unknown> | undefined;
    rulesDir?: string | undefined;
}, {
    enabled?: boolean | undefined;
    timeout?: number | undefined;
    options?: Record<string, unknown> | undefined;
    rulesDir?: string | undefined;
}>;
export type ScannerConfig = z.infer<typeof ScannerConfigSchema>;
/**
 * Feature flags
 */
export declare const FeatureFlagsSchema: z.ZodObject<{
    /** Enable multi-model consensus */
    multiModel: z.ZodDefault<z.ZodBoolean>;
    /** Enable cost tracking */
    costTracking: z.ZodDefault<z.ZodBoolean>;
    /** Enable auto-fix suggestions */
    autofix: z.ZodDefault<z.ZodBoolean>;
    /** Enable incremental scanning */
    incrementalScan: z.ZodDefault<z.ZodBoolean>;
    /** Enable scanner caching */
    scannerCache: z.ZodDefault<z.ZodBoolean>;
    /** Enable cross-verification */
    crossVerification: z.ZodDefault<z.ZodBoolean>;
    /** Enable Sigstore signing */
    sigstoreSigning: z.ZodDefault<z.ZodBoolean>;
    /** Enable SARIF export */
    sarifExport: z.ZodDefault<z.ZodBoolean>;
    /** Enable compliance mapping */
    complianceMapping: z.ZodDefault<z.ZodBoolean>;
    /** Enable OpenTelemetry */
    otel: z.ZodDefault<z.ZodBoolean>;
    /** Enable plugin system */
    plugins: z.ZodDefault<z.ZodBoolean>;
    /** Enable red team mode */
    redteam: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    redteam: boolean;
    autofix: boolean;
    complianceMapping: boolean;
    plugins: boolean;
    multiModel: boolean;
    costTracking: boolean;
    incrementalScan: boolean;
    scannerCache: boolean;
    crossVerification: boolean;
    sigstoreSigning: boolean;
    sarifExport: boolean;
    otel: boolean;
}, {
    redteam?: boolean | undefined;
    autofix?: boolean | undefined;
    complianceMapping?: boolean | undefined;
    plugins?: boolean | undefined;
    multiModel?: boolean | undefined;
    costTracking?: boolean | undefined;
    incrementalScan?: boolean | undefined;
    scannerCache?: boolean | undefined;
    crossVerification?: boolean | undefined;
    sigstoreSigning?: boolean | undefined;
    sarifExport?: boolean | undefined;
    otel?: boolean | undefined;
}>;
export type FeatureFlags = z.infer<typeof FeatureFlagsSchema>;
/**
 * Full configuration schema
 */
export declare const VasperaConfigSchema: z.ZodObject<{
    /** Config version */
    version: z.ZodDefault<z.ZodLiteral<1>>;
    /** Agent configurations */
    agents: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
        /** Whether agent is enabled */
        enabled: z.ZodDefault<z.ZodBoolean>;
        /** Agent weight for consensus (0-1) */
        weight: z.ZodDefault<z.ZodNumber>;
        /** Model to use for this agent */
        model: z.ZodOptional<z.ZodString>;
        /** Temperature for this agent */
        temperature: z.ZodOptional<z.ZodNumber>;
        /** Custom prompt additions */
        promptAdditions: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        enabled: boolean;
        weight: number;
        model?: string | undefined;
        temperature?: number | undefined;
        promptAdditions?: string | undefined;
    }, {
        enabled?: boolean | undefined;
        model?: string | undefined;
        weight?: number | undefined;
        temperature?: number | undefined;
        promptAdditions?: string | undefined;
    }>>>;
    /** Scanner configurations */
    scanners: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
        /** Whether scanner is enabled */
        enabled: z.ZodDefault<z.ZodBoolean>;
        /** Scanner timeout in ms */
        timeout: z.ZodOptional<z.ZodNumber>;
        /** Custom rules directory */
        rulesDir: z.ZodOptional<z.ZodString>;
        /** Additional scanner-specific options */
        options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        enabled: boolean;
        timeout?: number | undefined;
        options?: Record<string, unknown> | undefined;
        rulesDir?: string | undefined;
    }, {
        enabled?: boolean | undefined;
        timeout?: number | undefined;
        options?: Record<string, unknown> | undefined;
        rulesDir?: string | undefined;
    }>>>;
    /** Feature flags */
    features: z.ZodDefault<z.ZodObject<{
        /** Enable multi-model consensus */
        multiModel: z.ZodDefault<z.ZodBoolean>;
        /** Enable cost tracking */
        costTracking: z.ZodDefault<z.ZodBoolean>;
        /** Enable auto-fix suggestions */
        autofix: z.ZodDefault<z.ZodBoolean>;
        /** Enable incremental scanning */
        incrementalScan: z.ZodDefault<z.ZodBoolean>;
        /** Enable scanner caching */
        scannerCache: z.ZodDefault<z.ZodBoolean>;
        /** Enable cross-verification */
        crossVerification: z.ZodDefault<z.ZodBoolean>;
        /** Enable Sigstore signing */
        sigstoreSigning: z.ZodDefault<z.ZodBoolean>;
        /** Enable SARIF export */
        sarifExport: z.ZodDefault<z.ZodBoolean>;
        /** Enable compliance mapping */
        complianceMapping: z.ZodDefault<z.ZodBoolean>;
        /** Enable OpenTelemetry */
        otel: z.ZodDefault<z.ZodBoolean>;
        /** Enable plugin system */
        plugins: z.ZodDefault<z.ZodBoolean>;
        /** Enable red team mode */
        redteam: z.ZodDefault<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        redteam: boolean;
        autofix: boolean;
        complianceMapping: boolean;
        plugins: boolean;
        multiModel: boolean;
        costTracking: boolean;
        incrementalScan: boolean;
        scannerCache: boolean;
        crossVerification: boolean;
        sigstoreSigning: boolean;
        sarifExport: boolean;
        otel: boolean;
    }, {
        redteam?: boolean | undefined;
        autofix?: boolean | undefined;
        complianceMapping?: boolean | undefined;
        plugins?: boolean | undefined;
        multiModel?: boolean | undefined;
        costTracking?: boolean | undefined;
        incrementalScan?: boolean | undefined;
        scannerCache?: boolean | undefined;
        crossVerification?: boolean | undefined;
        sigstoreSigning?: boolean | undefined;
        sarifExport?: boolean | undefined;
        otel?: boolean | undefined;
    }>>;
    /** Default model for agents */
    defaultModel: z.ZodDefault<z.ZodString>;
    /** Default temperature */
    defaultTemperature: z.ZodDefault<z.ZodNumber>;
    /** Certification settings */
    certification: z.ZodDefault<z.ZodObject<{
        /** Minimum confidence threshold */
        minConfidence: z.ZodDefault<z.ZodNumber>;
        /** Required agent agreement ratio */
        requiredAgreement: z.ZodDefault<z.ZodNumber>;
        /** Maximum findings per agent */
        maxFindingsPerAgent: z.ZodDefault<z.ZodNumber>;
        /** Auto-finalize when complete */
        autoFinalize: z.ZodDefault<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        minConfidence: number;
        requiredAgreement: number;
        maxFindingsPerAgent: number;
        autoFinalize: boolean;
    }, {
        minConfidence?: number | undefined;
        requiredAgreement?: number | undefined;
        maxFindingsPerAgent?: number | undefined;
        autoFinalize?: boolean | undefined;
    }>>;
    /** Cost tracking settings */
    cost: z.ZodDefault<z.ZodObject<{
        /** Maximum budget per certification (USD) */
        maxBudget: z.ZodOptional<z.ZodNumber>;
        /** Warning threshold (percentage of budget) */
        warningThreshold: z.ZodDefault<z.ZodNumber>;
        /** Abort on budget exceeded */
        abortOnBudget: z.ZodDefault<z.ZodBoolean>;
    }, "strip", z.ZodTypeAny, {
        warningThreshold: number;
        abortOnBudget: boolean;
        maxBudget?: number | undefined;
    }, {
        maxBudget?: number | undefined;
        warningThreshold?: number | undefined;
        abortOnBudget?: boolean | undefined;
    }>>;
    /** Plugin settings */
    plugins: z.ZodDefault<z.ZodObject<{
        /** Load plugins from .vaspera/plugins */
        loadLocal: z.ZodDefault<z.ZodBoolean>;
        /** Load plugins from npm */
        loadNpm: z.ZodDefault<z.ZodBoolean>;
        /** Run plugins in sandbox */
        sandbox: z.ZodDefault<z.ZodBoolean>;
        /** Plugin-specific configs */
        configs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
    }, "strip", z.ZodTypeAny, {
        configs: Record<string, Record<string, unknown>>;
        loadLocal: boolean;
        loadNpm: boolean;
        sandbox: boolean;
    }, {
        configs?: Record<string, Record<string, unknown>> | undefined;
        loadLocal?: boolean | undefined;
        loadNpm?: boolean | undefined;
        sandbox?: boolean | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    version: 1;
    agents: Record<string, {
        enabled: boolean;
        weight: number;
        model?: string | undefined;
        temperature?: number | undefined;
        promptAdditions?: string | undefined;
    }>;
    scanners: Record<string, {
        enabled: boolean;
        timeout?: number | undefined;
        options?: Record<string, unknown> | undefined;
        rulesDir?: string | undefined;
    }>;
    plugins: {
        configs: Record<string, Record<string, unknown>>;
        loadLocal: boolean;
        loadNpm: boolean;
        sandbox: boolean;
    };
    cost: {
        warningThreshold: number;
        abortOnBudget: boolean;
        maxBudget?: number | undefined;
    };
    features: {
        redteam: boolean;
        autofix: boolean;
        complianceMapping: boolean;
        plugins: boolean;
        multiModel: boolean;
        costTracking: boolean;
        incrementalScan: boolean;
        scannerCache: boolean;
        crossVerification: boolean;
        sigstoreSigning: boolean;
        sarifExport: boolean;
        otel: boolean;
    };
    defaultModel: string;
    defaultTemperature: number;
    certification: {
        minConfidence: number;
        requiredAgreement: number;
        maxFindingsPerAgent: number;
        autoFinalize: boolean;
    };
}, {
    version?: 1 | undefined;
    agents?: Record<string, {
        enabled?: boolean | undefined;
        model?: string | undefined;
        weight?: number | undefined;
        temperature?: number | undefined;
        promptAdditions?: string | undefined;
    }> | undefined;
    scanners?: Record<string, {
        enabled?: boolean | undefined;
        timeout?: number | undefined;
        options?: Record<string, unknown> | undefined;
        rulesDir?: string | undefined;
    }> | undefined;
    plugins?: {
        configs?: Record<string, Record<string, unknown>> | undefined;
        loadLocal?: boolean | undefined;
        loadNpm?: boolean | undefined;
        sandbox?: boolean | undefined;
    } | undefined;
    cost?: {
        maxBudget?: number | undefined;
        warningThreshold?: number | undefined;
        abortOnBudget?: boolean | undefined;
    } | undefined;
    features?: {
        redteam?: boolean | undefined;
        autofix?: boolean | undefined;
        complianceMapping?: boolean | undefined;
        plugins?: boolean | undefined;
        multiModel?: boolean | undefined;
        costTracking?: boolean | undefined;
        incrementalScan?: boolean | undefined;
        scannerCache?: boolean | undefined;
        crossVerification?: boolean | undefined;
        sigstoreSigning?: boolean | undefined;
        sarifExport?: boolean | undefined;
        otel?: boolean | undefined;
    } | undefined;
    defaultModel?: string | undefined;
    defaultTemperature?: number | undefined;
    certification?: {
        minConfidence?: number | undefined;
        requiredAgreement?: number | undefined;
        maxFindingsPerAgent?: number | undefined;
        autoFinalize?: boolean | undefined;
    } | undefined;
}>;
export type VasperaConfig = z.infer<typeof VasperaConfigSchema>;
/**
 * Default configuration
 */
export declare const DEFAULT_CONFIG: VasperaConfig;
/**
 * Load configuration from .vaspera/config.yaml
 */
export declare function loadConfig(projectPath: string): Promise<VasperaConfig>;
/**
 * Clear config cache
 */
export declare function clearConfigCache(): void;
/**
 * Check if a feature is enabled
 */
export declare function isFeatureEnabled(config: VasperaConfig, feature: keyof FeatureFlags): boolean;
/**
 * Check if an agent is enabled
 */
export declare function isAgentEnabled(config: VasperaConfig, agent: string): boolean;
/**
 * Get agent weight
 */
export declare function getAgentWeight(config: VasperaConfig, agent: string): number;
/**
 * Check if a scanner is enabled
 */
export declare function isScannerEnabled(config: VasperaConfig, scanner: string): boolean;
/**
 * Get scanner timeout
 */
export declare function getScannerTimeout(config: VasperaConfig, scanner: string, defaultTimeout?: number): number;
/**
 * Generate sample configuration file
 */
export declare function generateSampleConfig(): string;
/**
 * Save configuration to file
 */
export declare function saveConfig(projectPath: string, config: VasperaConfig): Promise<void>;
//# sourceMappingURL=flags.d.ts.map