import { PromptVariables } from './prompts.js';
export type AIModel = 'v0' | 'gpt-4' | 'gpt-4-turbo' | 'gpt-3.5-turbo' | 'o3-mini' | 'claude-3-opus' | 'claude-3-sonnet' | 'claude-3-haiku' | 'claude-sonnet-4';
export interface AIServiceConfig {
    openaiApiKey?: string;
    anthropicApiKey?: string;
    v0ApiKey?: string;
    defaultModel?: AIModel;
    verbose?: boolean;
}
export interface ChatMessage {
    role: 'system' | 'user' | 'assistant';
    content: string;
    imageUrl?: string;
}
export interface ChatOptions {
    model?: AIModel;
    temperature?: number;
    maxTokens?: number;
    systemPrompt?: string;
    promptVariables?: PromptVariables;
}
export declare class MultiModelAIService {
    private openai?;
    private anthropic?;
    private v0ApiKey?;
    private defaultModel;
    private verbose;
    private rateLimiter;
    constructor(config?: AIServiceConfig);
    private log;
    chat(messages: ChatMessage[], options?: ChatOptions): Promise<string>;
    private chatWithV0;
    private chatWithOpenAI;
    private chatWithClaude;
    isModelAvailable(model: AIModel): Promise<boolean>;
    private getServiceForModel;
    getAvailableModels(): AIModel[];
    getModelCapabilities(model: AIModel): {
        supportsImages: boolean;
        maxTokens: number;
    };
}
export default MultiModelAIService;
