/**
 * Provider registry types.
 * Minimal surface — just enough to route calls and handle fallback.
 */
export type TaskType = 'summarize' | 'plan' | 'orchestrate' | 'embed' | 'classify' | 'code' | 'review' | 'consolidate' | 'generic';
export type ProviderName = 'anthropic' | 'openai' | 'local' | 'mock';
export interface ModelSpec {
    provider: ProviderName;
    modelId: string;
    /** Estimated cost per 1M input tokens in USD */
    costPer1MIn: number;
    /** Estimated cost per 1M output tokens in USD */
    costPer1MOut: number;
    /** Max context window in tokens */
    contextWindow: number;
}
export interface RouterRule {
    taskType: TaskType;
    /** Ordered list: first available is used */
    candidates: ModelSpec[];
}
export interface CallReceipt {
    provider: ProviderName;
    modelId: string;
    taskType: TaskType;
    inputTokens: number;
    outputTokens: number;
    latencyMs: number;
    estimatedUsd: number;
    fallbackUsed: boolean;
    error?: string;
}
