/**
 * Multi-Model Runner
 *
 * Orchestrates running certification agents across multiple LLM providers.
 *
 * @module multimodel/runner
 */
import type { AgentType, Finding } from "../certification/types.js";
import type { ModelId, ModelProvider } from "../cost/types.js";
import type { ModelConfig, ModelRunResult, MultiModelConfig, MultiModelSummary, MultiModelConsensus } from "./types.js";
/**
 * Default model configurations
 */
export declare const DEFAULT_MODELS: ModelConfig[];
/**
 * Multi-model runner for certifications
 */
export declare class MultiModelRunner {
    private config;
    private results;
    constructor(config?: Partial<MultiModelConfig>);
    /**
     * Get enabled models
     */
    getEnabledModels(): ModelConfig[];
    /**
     * Get model configuration
     */
    getModelConfig(modelId: ModelId): ModelConfig | undefined;
    /**
     * Enable/disable a model
     */
    setModelEnabled(modelId: ModelId, enabled: boolean): void;
    /**
     * Add a model configuration
     */
    addModel(config: ModelConfig): void;
    /**
     * Record a model run result
     * This is called by certification agents to record their results
     */
    recordResult(certificationId: string, agent: AgentType, model: ModelId, findings: Finding[], metrics: {
        duration: number;
        inputTokens: number;
        outputTokens: number;
    }): ModelRunResult;
    /**
     * Record a failed model run
     */
    recordFailure(certificationId: string, agent: AgentType, model: ModelId, error: string, duration: number): ModelRunResult;
    /**
     * Get results for a certification/agent
     */
    getResults(certificationId: string, agent: AgentType): ModelRunResult[];
    /**
     * Check if we have enough results for consensus
     */
    hasEnoughResults(certificationId: string, agent: AgentType, minModels?: number): boolean;
    /**
     * Calculate consensus for a certification/agent
     */
    calculateConsensus(certificationId: string, agent: AgentType, options?: {
        matchThreshold?: number;
        requireMajority?: boolean;
    }): MultiModelConsensus | null;
    /**
     * Generate summary for a certification/agent
     */
    generateSummary(certificationId: string, agent: AgentType): MultiModelSummary | null;
    /**
     * Generate markdown report
     */
    generateReport(certificationId: string, agent: AgentType): string;
    /**
     * Clear results for a certification
     */
    clearResults(certificationId: string, agent?: AgentType): void;
    /**
     * Get provider from model ID
     */
    private getProviderFromModel;
}
/**
 * Get or create global runner
 */
export declare function getRunner(config?: Partial<MultiModelConfig>): MultiModelRunner;
/**
 * Reset global runner
 */
export declare function resetRunner(): void;
/**
 * Format provider name for display
 */
export declare function formatProvider(provider: ModelProvider): string;
//# sourceMappingURL=runner.d.ts.map