/**
 * src/models/failover.ts
 * مدير التحويل التلقائي — إذا فشل النموذج الأساسي، جرب البديل
 * Failover order: Qwen → Gemini → DeepSeek
 *
 * STRATEGY (locked 2026-05-04): NVIDIA NIM only through the 30-day demo phase.
 * All providers below currently route to NIM via model aliases. Switch to the
 * full 3-provider hybrid (Gemini Flash via Google + Qwen 72B via Together AI +
 * DeepSeek R1 via DeepSeek API) when EITHER:
 *   (a) the first paying customer signs, OR
 *   (b) NIM rate-limits / quality become a customer-visible blocker.
 * See ~/.claude/.../memory/al-moasis.md and muassis-strategy.md §4 for context.
 */
import { type ChatMessage, type ChatOptions, type ChatResponse } from './provider.js';
import { type OllamaProbeResult } from './ollama.js';
export declare function initFailover(): Promise<OllamaProbeResult>;
export interface FailoverResult extends ChatResponse {
    /** النموذج الأصلي المطلوب */
    requestedTier: string;
    /** هل تم التحويل إلى نموذج بديل؟ */
    failedOver: boolean;
    /** قائمة الأخطاء من المحاولات الفاشلة */
    errors: Array<{
        provider: string;
        error: string;
    }>;
}
/**
 * استدعاء نموذج مع تحويل تلقائي عند الفشل
 * @param tier - المستوى المطلوب: 'brain' | 'flash' | 'reasoning'
 * @param tenantId - optional. When provided, the per-tenant preference at
 *                   identity_facts.preference.model.<tier> overrides the
 *                   default chain ordering. This is what makes the dashboard
 *                   model picker actually take effect — same code path,
 *                   tenant-specific top of chain. WhatsApp / Telegram / web
 *                   chat all funnel here so a change applies everywhere.
 */
export declare function callWithFailover(tier: 'brain' | 'flash' | 'reasoning', messages: ChatMessage[], options?: ChatOptions, tenantId?: string): Promise<FailoverResult>;
/** حساب تكلفة الاستدعاء بالدولار */
export declare function calculateCost(model: string, tokensInput: number, tokensOutput: number): number;
//# sourceMappingURL=failover.d.ts.map