/**
 * /compress Command - Context Compression (Gemini CLI inspired)
 *
 * Replaces the entire chat context with a summary to save tokens
 * while retaining key information about what has happened.
 */
import type { ChatCompletionMessageParam } from "openai/resources/chat";
/**
 * Result of a context compression operation.
 */
export interface CompressResult {
    /** Whether compression was performed. */
    success: boolean;
    /** Number of tokens before compression. */
    originalTokens: number;
    /** Number of tokens after compression. */
    compressedTokens: number;
    /** Number of tokens saved. */
    savedTokens: number;
    /** Percentage of tokens saved. */
    savingsPercent: number;
    /** The generated summary of the conversation. */
    summary: string;
}
/**
 * Compresses messages by summarizing the conversation using an LLM.
 *
 * @param messages - The conversation history to compress.
 * @param llmCall - Function to call the LLM for summarization.
 * @param estimateTokens - Function to estimate token count.
 * @returns Promise resolving to compression result.
 */
export declare function compressContext(messages: ChatCompletionMessageParam[], llmCall: (prompt: string) => Promise<string>, estimateTokens: (text: string) => number): Promise<CompressResult>;
/**
 * Creates a new message array with the compressed summary.
 * Preserves the system message and appends the summary as an assistant message.
 *
 * @param systemMessage - The original system message.
 * @param summary - The generated conversation summary.
 * @returns New array of messages.
 */
export declare function createCompressedMessages(systemMessage: ChatCompletionMessageParam, summary: string): ChatCompletionMessageParam[];
/**
 * Formats the compression result for user display.
 *
 * @param result - The compression result.
 * @returns Formatted string.
 */
export declare function formatCompressResult(result: CompressResult): string;
