import type { ProviderCompactResult } from '../../provider.js'; export declare const COMPACT_SYSTEM_PROMPT: string; export declare const COMPACT_SUMMARY_HEADER = "[Compacted summary of earlier conversation]"; export declare const COMPACT_ACK_TEXT = "Acknowledged. Continuing from the summary above."; export declare function wrapTranscriptForSummary(transcript: string): string; export declare const DEFAULT_COMPACT_TIMEOUT_MS = 60000; export declare const DEFAULT_COMPACT_SHRINK_THRESHOLD = 0.7; export declare const DEFAULT_COMPACT_KEEP_LAST_TURNS = 2; export declare function readKeepLastN(): number; export declare function readShrinkFraction(): number; export declare const DEFAULT_MICROCOMPACT_TOOL_RESULT_BYTES = 2048; export declare const DEFAULT_MICROCOMPACT_KEEP_LAST = 4; export declare const DELEGATION_TOOL_NAMES: ReadonlySet; export declare const DEFAULT_MICROCOMPACT_DELEGATION_BYTES = 16384; export declare const MICROCOMPACT_PLACEHOLDER_SENTINEL = "[tool result cleared to reclaim context"; export declare function buildMicrocompactPlaceholder(bytes: number): string; export declare function isMicrocompactPlaceholder(text: string): boolean; export interface ToolResultRef { byteLength: number; isPlaceholder: boolean; clear(placeholder: string): void; toolName?: string; } export interface MicrocompactOps { listToolResults(messages: ReadonlyArray): ToolResultRef[]; } export interface MicrocompactOptions { thresholdBytes?: number; keepLast?: number; delegationThresholdBytes?: number; } export interface MicrocompactResult { blocksCleared: number; bytesReclaimed: number; blocksScanned: number; } export declare function microcompactToolResults(messages: ReadonlyArray, ops: MicrocompactOps, opts?: MicrocompactOptions): MicrocompactResult; export declare function byteLengthOf(text: string): number; export declare function resolveMicrocompactOptions(rawBytes: string | undefined, rawKeepLast: string | undefined, rawDelegationBytes?: string | undefined): Required; export interface CompactionOps { isFreshUserTurn(msg: M): boolean; renderMessage(msg: M): string; buildPreamble(summaryText: string): [userSummary: M, assistantAck: M]; countChars(msg: M): number; } export declare function findCompactionBoundary(messages: ReadonlyArray, keepLastN: number, ops: CompactionOps): number; export declare function findCompactionBoundaryAdaptive(messages: ReadonlyArray, keepLastN: number, ops: CompactionOps, usedFraction: number, shrinkAtFraction?: number): number; export declare function renderTranscript(messages: ReadonlyArray, ops: CompactionOps): string; export declare function applyCompaction(messages: ReadonlyArray, boundary: number, summaryText: string, ops: CompactionOps): M[]; export declare function estimateTokensSaved(before: ReadonlyArray, boundary: number, summaryText: string, ops: CompactionOps): number; export interface CompactionSuccess { olderSlice: M[]; summary: string; keptTailCount: number; keepLastN: number; messagesBefore: number; messagesAfter: number; tokensSavedEstimate: number; } export interface CompactionCoreDeps { messages: M[]; ops: CompactionOps; keepLastN: number; usedFraction?: number; shrinkAtFraction?: number; summarize(transcript: string): Promise; isAborted(): boolean; abortInFlight?(): void; timeoutMs?: number; onSuccess?(info: CompactionSuccess): void; } export declare function runCompactionCore(deps: CompactionCoreDeps): Promise;