export interface ChatMessage {
    role: 'system' | 'user' | 'assistant';
    content: string;
}
export interface CostEstimate {
    inputTokens: number;
    outputTokens: number;
    inputCost: number;
    outputCost: number;
    totalCost: number;
}
export interface StreamingResponse {
    content: string;
    finishReason?: string;
    isComplete: boolean;
}
/**
 * Metin için yaklaşık token sayısı hesaplar
 * Basit heuristic: kelime başına ~1.3 token, karakter başına ~0.25 token
 * @param text - Token sayısı hesaplanacak metin
 * @returns Yaklaşık token sayısı
 */
export declare function estimateTokens(text: string): number;
/**
 * Metni belirli bir token limitine göre kırpar
 * @param text - Kırpılacak metin
 * @param maxTokens - Maksimum token sayısı
 * @returns Kırpılmış metin
 */
export declare function truncateToTokenLimit(text: string, maxTokens: number): string;
/**
 * Metni belirli token limitlerinde parçalara böler
 * @param text - Bölünecek metin
 * @param maxTokens - Her parça için maksimum token sayısı
 * @returns Metin parçaları dizisi
 */
export declare function splitByTokenLimit(text: string, maxTokens: number): string[];
/**
 * Chat mesajı formatında oluşturur
 * @param role - Mesaj rolü (system/user/assistant)
 * @param content - Mesaj içeriği
 * @returns ChatMessage objesi
 */
export declare function formatChatMessage(role: 'system' | 'user' | 'assistant', content: string): ChatMessage;
/**
 * Few-shot öğrenme için prompt oluşturur
 * @param examples - Örnek input/output çiftleri
 * @param query - Kullanıcının sorgusu
 * @returns Formatlanmış few-shot prompt
 */
export declare function createFewShotPrompt(examples: Array<{
    input: string;
    output: string;
}>, query: string): string;
/**
 * Sistem ve kullanıcı promptlarını chat mesajlarına dönüştürür
 * @param systemPrompt - Sistem talimatları
 * @param userPrompt - Kullanıcı sorgusu
 * @returns ChatMessage dizisi
 */
export declare function mergeSystemAndUser(systemPrompt: string, userPrompt: string): ChatMessage[];
/**
 * Mesajları context penceresine sığdırır (eski mesajları çıkarır)
 * @param messages - Mevcut mesajlar
 * @param maxTokens - Maksimum token sayısı
 * @returns Sığdırılmış mesajlar
 */
export declare function fitMessagesToContext(messages: ChatMessage[], maxTokens: number): ChatMessage[];
/**
 * Konuşma maliyetini tahmin eder
 * @param messages - Mesajlar
 * @param model - Model adı
 * @param expectedOutputTokens - Beklenen output token sayısı (varsayılan: input'un %50'si)
 * @returns Maliyet tahmini
 */
export declare function estimateConversationCost(messages: ChatMessage[], model?: string, expectedOutputTokens?: number): CostEstimate;
/**
 * Model için context limitini döndürür
 * @param model - Model adı
 * @returns Token limiti
 */
export declare function getModelTokenLimit(model: string): number;
/**
 * Model için fiyat bilgilerini döndürür
 * @param model - Model adı
 * @returns Input ve output fiyatları (per 1K tokens)
 */
export declare function getModelPricing(model: string): {
    input: number;
    output: number;
};
/**
 * Markdown formatındaki metinden JSON çıkarır
 * @param text - Markdown formatındaki metin (```json ... ```)
 * @returns Parse edilmiş JSON objesi veya null
 */
export declare function extractJSONFromMarkdown(text: string): any;
/**
 * Streaming response chunk'ını parse eder
 * @param chunk - Streaming chunk
 * @returns StreamingResponse objesi
 */
export declare function parseStreamingChunk(chunk: string): StreamingResponse;
/**
 * Prompt için token sayısı kontrolü yapar ve limit aşımı durumunda uyarır
 * @param prompt - Kontrol edilecek prompt
 * @param maxTokens - Maksimum token sayısı
 * @returns Limit aşıldıysa true
 */
export declare function isTokenLimitExceeded(prompt: string, maxTokens: number): boolean;
/**
 * Prompt'u belirli bir yüzde oranında kısaltır
 * @param prompt - Kısaltılacak prompt
 * @param percentage - Kısaltma yüzdesi (0-100)
 * @returns Kısaltılmış prompt
 */
export declare function truncatePromptByPercentage(prompt: string, percentage: number): string;
/**
 * Konuşma geçmişini özetlemek için mesajları sıkıştırır
 * (Eski mesajları birleştirir, son N mesajı ayrı tutar)
 * @param messages - Tüm mesajlar
 * @param keepRecent - Son tutulacak mesaj sayısı
 * @param maxSummaryTokens - Özet için ayrılacak token sayısı
 * @returns Sıkıştırılmış mesajlar
 */
export declare function compressConversationHistory(messages: ChatMessage[], keepRecent?: number, maxSummaryTokens?: number): ChatMessage[];
