/** Known LLM provider identifiers. Accepts custom string IDs for extensibility. */
export type LLMProviderId = 'anthropic' | 'openai' | 'google' | 'mistral' | 'ollama' | 'deepseek' | (string & Record<never, never>);
/** Load balancing strategy for distributing requests across providers. */
export type LoadBalancingStrategy = 'round-robin' | 'least-loaded' | 'latency-based' | 'cost-based';
/** Health status of an LLM provider. */
export type ProviderHealthStatus = 'healthy' | 'degraded' | 'unavailable';
/** Quality tier for model selection. */
export type QualityTier = 'high' | 'medium' | 'low';
/** Capabilities an LLM provider can offer. */
export type LLMCapability = 'chat' | 'code' | 'vision' | 'embeddings';
/** Task complexity classification for quality-based routing. */
export type TaskComplexity = 'complex' | 'standard' | 'simple';
/** Reason for a failover event. */
export type FailoverReason = 'timeout' | 'http429' | 'http500' | 'healthCheckFailed' | 'apiKeyMissing';
/** API key status for a provider. */
export type ApiKeyStatus = 'configured' | 'missing' | 'invalid_format';
/** Model definition within a provider. */
export interface LLMModelDefinition {
    id: string;
    name: string;
    tier: QualityTier;
    pricingPerMToken: {
        input: number;
        output: number;
    };
    contextWindow: number;
    maxOutputTokens: number;
}
/** Rate limits for a provider. */
export interface ProviderRateLimits {
    requestsPerMinute: number;
    tokensPerMinute: number;
}
/** Full provider definition from config. */
export interface LLMProviderDefinition {
    id: LLMProviderId;
    name: string;
    models: LLMModelDefinition[];
    apiKeyEnv: string;
    baseUrl: string;
    capabilities: LLMCapability[];
    keyPattern: string;
    rateLimits: ProviderRateLimits;
}
/** Result of a provider health check. */
export interface ProviderHealthResult {
    providerId: LLMProviderId;
    status: ProviderHealthStatus;
    apiKeyStatus: ApiKeyStatus;
    lastChecked: string;
    details: string;
}
/** A failover event record. */
export interface FailoverEvent {
    fromProvider: LLMProviderId;
    toProvider: LLMProviderId;
    reason: FailoverReason;
    timestamp: string;
}
/** A provider+model recommendation with cost estimate and reasoning. */
export interface ProviderRecommendation {
    providerId: LLMProviderId;
    modelId: string;
    tier: QualityTier;
    costEstimate: {
        tokensEstimated: number;
        usdEstimated: number;
    };
    reasoning: string[];
    score: number;
}
/** A single cost record entry for tracking. */
export interface ProviderCostRecord {
    providerId: LLMProviderId;
    modelId: string;
    tokensEstimated: number;
    costEstimated: number;
    timestamp: string;
}
/** Aggregated cost summary for a provider. */
export interface ProviderCostSummary {
    providerId: LLMProviderId;
    daily: number;
    weekly: number;
    monthly: number;
    requestCount: number;
}
/** User-persisted LLM provider configuration. */
export interface LLMProviderConfig {
    providers: LLMProviderId[];
    failoverOrder: LLMProviderId[];
    strategy: LoadBalancingStrategy;
    customProviders: LLMProviderDefinition[];
}
/** Cross-provider model equivalence mapping. */
export interface ModelEquivalence {
    tier: QualityTier;
    models: {
        providerId: LLMProviderId;
        modelId: string;
    }[];
    qualityScore: number;
    speedScore: number;
}
/** Language-to-provider affinity hint. */
export interface LanguageAffinity {
    language: string;
    preferredProviders: LLMProviderId[];
    weight: number;
}
/** Rate limit tracking state for a provider. */
export interface RateLimitState {
    providerId: LLMProviderId;
    requestsUsed: number;
    tokensUsed: number;
    windowStart: string;
    capacityPercent: number;
}
/** Common interface for provider adapters. */
export interface LLMProviderAdapter {
    readonly providerId: LLMProviderId;
    checkHealth(): ProviderHealthResult;
    getModels(): LLMModelDefinition[];
    estimateCost(inputTokens: number, outputTokens: number, modelId?: string): number;
    getStatus(): ProviderHealthResult;
}
/** Input for the configure_llm_providers tool. */
export interface ConfigureLLMProvidersInput {
    action: 'add' | 'remove' | 'update' | 'set_priority' | 'set_strategy';
    providerId?: string;
    provider?: LLMProviderDefinition;
    failoverOrder?: LLMProviderId[];
    strategy?: LoadBalancingStrategy;
}
/** Input for the llm_provider_status tool. */
export interface LLMProviderStatusInput {
    projectPath?: string;
    detailed?: boolean;
}
//# sourceMappingURL=llm-providers.d.ts.map