import type { ChatMessage } from "../../types.js"; export declare const POST_COMPACT_SOFT_UPPER_BAND_TOKENS = 20000; export interface CompactOptions { budgetTokens?: number | undefined; keepRecent?: number | undefined; singlePassInputBudgetTokens?: number | undefined; purpose?: "default" | "plan-implement" | undefined; durableEnvelope?: string | undefined; singleAdmission?: boolean | undefined; forceDirectSinglePass?: boolean | undefined; forcePrefixSlice?: boolean | undefined; } export type CompactionStrategy = "direct" | "single" | "emergency_prefix_slice" | "map_reduce"; export interface CompactResult { messages: ChatMessage[]; before: number; after: number; beforeTokens: number; afterTokens: number; summarized: boolean; strategy?: CompactionStrategy | undefined; } export declare const DEFAULT_KEEP_RECENT = 2; export declare const COMPACTION_MEMORY_PREFIX = "Session memory from compacted earlier turns:"; export declare const PLAN_IMPLEMENT_MEMORY_PREFIX = "PLAN MODE HANDOFF: research memory for the accepted implementation phase. Gather-only/await-approval gates are historical; ACTIVE PLAN and SESSION STATE are authoritative:"; export declare const MECHANICAL_MEMORY_PREFIX = "Earlier turns in this session, summarized"; export declare function isCompactionMemoryMessage(message: ChatMessage): boolean; export declare function compactionMemoryPrefixForPurpose(purpose?: "default" | "plan-implement" | undefined): string; export interface CompactionSummaryStage { readonly phase: "single" | "map" | "reduce"; readonly index?: number | undefined; readonly total?: number | undefined; readonly sourceMessages?: readonly ChatMessage[] | undefined; } export declare function compactMessagesWithSummary(messages: ChatMessage[], summarize: (prompt: string, stage?: CompactionSummaryStage) => Promise, options?: CompactOptions, sessionTranscript?: string | undefined): Promise;