import type { BuiltInTool, CacheHints, GatewayMetadata, LLMRequest, LLMResponse, TokenUsage, Tool, ToolCall, ToolResult } from './types.js'; import type { ModelRecommendationUseCase, ProviderName } from './model-catalog.js'; export interface CanonicalMessage { role: 'user' | 'assistant' | 'system'; content: string; timestamp?: string; toolCalls?: ToolCall[]; toolResults?: ToolResult[]; } export interface CanonicalMediaPart { type: 'image'; data?: string; url?: string; mimeType?: string; } export type CanonicalTool = Tool; export type CanonicalToolMode = 'auto' | 'none' | 'required' | { toolName: string; }; export interface CanonicalOutputFormat { kind: 'text' | 'json_object' | 'json_schema'; schemaName?: string; schema?: Record; strict?: boolean; } export interface CanonicalSamplingOptions { temperature?: number; maxTokens?: number; seed?: number; } export interface CanonicalRequirements { toolCalling?: boolean; structuredOutput?: boolean; vision?: boolean; longContext?: boolean; builtInTools?: boolean; } export interface CanonicalProviderOptions { cloudflare?: { lora?: string; topP?: number; frequencyPenalty?: number; }; cerebras?: { reasoning?: LLMRequest['reasoning']; prediction?: string; }; groq?: Record; nvidia?: Record; openai?: Record; anthropic?: Record; } export interface CanonicalRequestMetadata { requestId?: string; tenantId?: string; gateway?: GatewayMetadata; cache?: CacheHints; custom?: Record; } export interface CanonicalLLMRequest { messages: CanonicalMessage[]; system?: string; model?: string; stream?: boolean; sampling?: CanonicalSamplingOptions; tools?: CanonicalTool[]; toolMode?: CanonicalToolMode; builtInTools?: BuiltInTool[]; output?: CanonicalOutputFormat; media?: CanonicalMediaPart[]; workload?: ModelRecommendationUseCase; requirements?: CanonicalRequirements; providerOptions?: CanonicalProviderOptions; metadata?: CanonicalRequestMetadata; } export interface CanonicalFallbackHop { provider: ProviderName; model?: string; reason?: string; } export interface CanonicalDegradation { capability: string; action: 'stripped' | 'downgraded' | 'emulated' | 'failed'; reason: string; } export interface CanonicalRoutingMetadata { selectedProvider: ProviderName; selectedModel: string; selectionReason?: string; fallbackChain?: CanonicalFallbackHop[]; degradations?: CanonicalDegradation[]; } export interface CanonicalResponseError { class: string; provider?: ProviderName; retryable?: boolean; message: string; } export interface CanonicalLLMResponse { id?: string; reasoning?: string; message: string; model: string; provider: ProviderName; finishReason?: 'stop' | 'length' | 'tool_calls' | 'content_filter' | 'error'; toolCalls?: ToolCall[]; usage: TokenUsage; responseTime: number; routing?: CanonicalRoutingMetadata; error?: CanonicalResponseError; metadata?: Record; } export declare function normalizeLLMRequest(request: LLMRequest | CanonicalLLMRequest): CanonicalLLMRequest; export declare function canonicalToLLMRequest(request: CanonicalLLMRequest): LLMRequest; export declare function normalizeLLMResponse(response: LLMResponse, options?: { routing?: CanonicalRoutingMetadata; error?: CanonicalResponseError; }): CanonicalLLMResponse; //# sourceMappingURL=canonical.d.ts.map