export declare const COMPACTION_BUFFER = 20000; export declare const COMPACTION_TRIGGER_RATIO = 0.55; export declare function getCompactionTriggerRatio(contextLimit: number): number; export declare const PRUNE_PROTECT = 40000; export declare const PRUNE_MINIMUM = 20000; export declare const COMPACTION_LLM_PROMPT_TEMPLATE: string; interface ChatMessageLike { role: "system" | "user" | "assistant" | "tool"; content: string | unknown[] | null; tool_call_id?: string; tool_calls?: unknown[]; } export interface CompactionResult { strategy: "prune" | "summarize" | "prune+summarize" | "none"; freedTokens: number; sizeBeforeKB: number; sizeAfterKB: number; tokensBefore: number; tokensAfter: number; messageCountBefore: number; messageCountAfter: number; prunedToolMessages: number; summarizedMessages: number; } export interface CompactionPhaseEvent { phase: "prune_start" | "prune_end" | "summarize_start" | "summarize_end"; messageCount?: number; prunedCount?: number; freedTokens?: number; summarizedCount?: number; usedLLM?: boolean; } export type LLMSummarizer = (input: { conversationText: string; messageCount: number; contextLimit: number; }) => Promise; export declare function calculateCompactionThreshold(contextLimit: number, maxOutput: number, inputLimit?: number): number; export declare function lookupModelLimits(modelName: string, configOverrides?: { contextLimit?: number; maxOutput?: number; }): { contextLimit: number; maxOutput: number; }; export declare function estimateTextTokens(text: string): number; export declare function estimateTokens(text: string): number; export declare function estimateConversationTokens(messages: readonly ChatMessageLike[]): number; export declare function conversationSizeKB(messages: readonly ChatMessageLike[]): number; export declare function isOverflow(messages: readonly ChatMessageLike[], contextLimit: number, _maxOutput?: number): boolean; export declare function isOverflowByActualUsage(accumulatedInput: number, accumulatedOutput: number, contextLimit: number): boolean; export declare function pruneToolOutputs(messages: ChatMessageLike[], contextLimit?: number): { prunedCount: number; freedTokens: number; }; export declare function summarizeConversation(messages: ChatMessageLike[], options?: { llmSummarizer?: LLMSummarizer; contextLimit?: number; }): Promise; export declare function snipOldestMessageGroup(messages: ChatMessageLike[]): number; export declare function performCompaction(messages: ChatMessageLike[], contextLimit: number, maxOutput?: number, options?: { llmSummarizer?: LLMSummarizer; onPhase?: (event: CompactionPhaseEvent) => void; actualUsedTokens?: number; }): Promise; export {};