/**
 * Frontier Model Orchestrator
 *
 * Manages multiple frontier model providers, handles fallback,
 * and implements consensus across models for high-confidence results.
 *
 * @module frontier/orchestrator
 */
import type { FrontierProvider, FrontierModelProvider, FrontierAnalysisRequest, FrontierAnalysisResult, ConsensusResult, FrontierConfig, CostEstimate } from "./types.js";
/**
 * Orchestrates frontier model analysis across multiple providers
 */
export declare class FrontierOrchestrator {
    private providers;
    private config;
    constructor(config?: Partial<FrontierConfig>);
    /**
     * Register a model provider
     */
    registerProvider(provider: FrontierModelProvider): void;
    /**
     * Get a registered provider
     */
    getProvider(name: FrontierProvider): FrontierModelProvider | undefined;
    /**
     * List all registered providers
     */
    listProviders(): FrontierProvider[];
    /**
     * Check availability of all providers
     */
    checkAvailability(): Promise<Record<FrontierProvider, {
        available: boolean;
        error?: string;
    }>>;
    /**
     * Run analysis with a single provider
     */
    runWithProvider(request: FrontierAnalysisRequest, providerName: FrontierProvider): Promise<FrontierAnalysisResult>;
    /**
     * Run analysis with fallback through multiple providers
     */
    runWithFallback(request: FrontierAnalysisRequest, providerNames: FrontierProvider[]): Promise<FrontierAnalysisResult>;
    /**
     * Run analysis with multiple providers for consensus
     */
    runWithConsensus(request: FrontierAnalysisRequest, providerNames: FrontierProvider[]): Promise<ConsensusResult>;
    /**
     * Calculate consensus across model results
     */
    private calculateConsensus;
    /**
     * Estimate cost for an analysis across providers
     */
    estimateCost(request: FrontierAnalysisRequest, providerNames?: FrontierProvider[]): Promise<Record<FrontierProvider, CostEstimate>>;
    /**
     * Get the default provider order based on config
     */
    getDefaultProviderOrder(): FrontierProvider[];
    /**
     * Run analysis with default configuration
     */
    run(request: FrontierAnalysisRequest): Promise<FrontierAnalysisResult | ConsensusResult>;
}
/**
 * Get the singleton orchestrator instance
 */
export declare function getFrontierOrchestrator(config?: Partial<FrontierConfig>): FrontierOrchestrator;
/**
 * Reset the singleton (for testing)
 */
export declare function resetFrontierOrchestrator(): void;
//# sourceMappingURL=orchestrator.d.ts.map