import type { CompressionMode } from '../types/config.js';
import type { Message } from '../types/core.js';
import type { Tokenizer } from '../types/tokenization.js';
/**
 * Compression configuration constants
 */
export declare const COMPRESSION_CONSTANTS: {
    /** Default number of recent messages to keep at full detail */
    readonly DEFAULT_KEEP_RECENT_MESSAGES: 2;
    /** Character threshold for compressing user messages */
    readonly USER_MESSAGE_COMPRESSION_THRESHOLD: 500;
    /** Character threshold for compressing assistant messages with tool_calls */
    readonly ASSISTANT_WITH_TOOLS_THRESHOLD: 300;
    /** Target length for aggressive text truncation */
    readonly AGGRESSIVE_TRUNCATION_LIMIT: 100;
    /** Target length for default text truncation */
    readonly DEFAULT_TRUNCATION_LIMIT: 200;
    /** Target length for aggressive assistant message truncation */
    readonly AGGRESSIVE_ASSISTANT_LIMIT: 150;
    /** Target length for default assistant message truncation */
    readonly DEFAULT_ASSISTANT_LIMIT: 300;
    /** Minimum valid auto-compact threshold percentage */
    readonly MIN_THRESHOLD_PERCENT: 50;
    /** Maximum valid auto-compact threshold percentage */
    readonly MAX_THRESHOLD_PERCENT: 95;
    /** Character threshold for compressing user messages in conservative mode */
    readonly CONSERVATIVE_USER_MESSAGE_THRESHOLD: 1000;
    /** Target length for conservative mode text truncation */
    readonly CONSERVATIVE_TRUNCATION_LIMIT: 500;
};
export interface CompressionResult {
    compressedMessages: Message[];
    originalTokenCount: number;
    compressedTokenCount: number;
    reductionPercentage: number;
    preservedInfo: {
        keyDecisions: number;
        fileModifications: number;
        toolResults: number;
        recentMessages: number;
    };
}
export interface CompressionOptions {
    mode: CompressionMode;
    keepRecentMessages?: number;
}
/**
 * Compress message history while preserving essential information
 * @param messages - Original messages to compress
 * @param tokenizer - Tokenizer for counting tokens
 * @param options - Compression options
 * @returns Compression result with compressed messages and statistics
 */
export declare function compressMessages(messages: Message[], tokenizer: Tokenizer, options: CompressionOptions): CompressionResult;
//# sourceMappingURL=message-compression.d.ts.map