import { BaseCompressor, CompressionConfig, CompressionResult } from "./BaseCompressor.js";
import { ModelSettings } from "@inkeep/agents-core";

//#region src/domains/run/services/ConversationCompressor.d.ts

/**
 * Conversation-level compressor
 * Compresses entire conversations for long-term storage or analysis
 */
declare class ConversationCompressor extends BaseCompressor {
  constructor(sessionId: string, conversationId: string, tenantId: string, projectId: string, config?: CompressionConfig, summarizerModel?: ModelSettings, baseModel?: ModelSettings);
  /**
   * Get compression type for this compressor
   */
  getCompressionType(): 'conversation_level';
  /**
   * Check if compression is needed based on total context size exceeding conversation limits
   */
  isCompressionNeeded(messages: any[]): boolean;
  /**
   * Perform conversation-level compression
   * Unlike mid-generation, this compresses ALL messages in the conversation
   */
  compress(messages: any[]): Promise<CompressionResult>;
  /**
   * Override createConversationSummary for conversation-level compression
   * Uses specialized conversation history distillation instead of the base implementation
   */
  protected createConversationSummary(messages: any[], toolCallToArtifactMap: Record<string, string>): Promise<any>;
}
//#endregion
export { ConversationCompressor };