/** * Base Adapter Type Definitions - TDD approach * Type definitions created before implementing the actual adapters */ export interface ModelRequest { prompt: string; multimodal?: boolean; tools?: Tool[]; context?: RequestContext; } export interface RequestContext { latencyTarget?: number; priority?: "low" | "medium" | "high"; userTier?: "free" | "pro" | "enterprise"; retryCount?: number; streaming?: boolean; } export interface Tool { name: string; description: string; parameters: Record; } export interface ModelResponse { content: string; model: string; latency: number; usage: TokenUsage; cost: number; finishReason: string; } export interface TokenUsage { promptTokens: number; completionTokens: number; totalTokens: number; } export interface StreamChunk { id: string; content: string; finished: boolean; metadata?: { adapter?: string; routingDecision?: any; chunkIndex?: number; }; } export interface AdapterError extends Error { code: string; retryable: boolean; originalError?: Error; } export interface HealthCheck { status: "healthy" | "unhealthy" | "degraded"; latency: number; lastChecked: Date; errors: string[]; metadata: Record; } export interface AdapterCapabilities { textGeneration: boolean; codeGeneration: boolean; multimodal: boolean; streaming: boolean; functionCalling: boolean; reasoning: boolean; longContext: boolean; } export interface BaseModelAdapter { initialize(): Promise; generate(request: ModelRequest): Promise; generateStream(request: ModelRequest): AsyncIterable; healthCheck(): Promise; getCapabilities(): AdapterCapabilities; } export interface BaseAdapterConfig { apiKey?: string; endpoint?: string; timeout?: number; retryAttempts?: number; retryDelay?: number; } export interface GeminiAdapterConfig extends BaseAdapterConfig { model: string; projectId?: string; location?: string; } export interface DeepMindAdapterConfig extends BaseAdapterConfig { model: string; version?: string; } export interface JulesWorkflowConfig extends BaseAdapterConfig { modelName: string; workflowId?: string; parameters?: Record; collaborativeMode?: boolean; julesApiKey?: string; } //# sourceMappingURL=base-adapters.d.ts.map