import type { AgentMessage } from '@earendil-works/pi-agent-core'; import { type Api, type Model } from '@earendil-works/pi-ai/compat'; export interface CompactionResult { summary: string; firstKeptIndex: number; tokensBefore: number; tokensAfter: number; compacted: boolean; plannerVersion?: number; summaryModelRef?: string; qualityAudit?: 'passed' | 'disabled'; compactedUsage?: { input: number; output: number; total: number; cost?: number; }; } export interface CompactionConfig { enabled: boolean; triggerThreshold: number; minMessagesBeforeCompact: number; keepRecentTokens: number; recentTurnsPreserve: number; summaryMaxTokens: number; summaryChunkTokens: number; summaryTimeoutMs: number; summaryRetries: number; qualityGuard: boolean; accumulateUsage: boolean; } export interface CompactionExecutionOptions { fallbackModels?: Array>; signal?: AbortSignal; } export declare const DEFAULT_COMPACTION_CONFIG: CompactionConfig; interface MessageUsage { input: number; output: number; total: number; cost?: number; } export declare function accumulateUsage(messages: AgentMessage[]): MessageUsage | undefined; export declare class SessionCompactor { private readonly config; constructor(config?: Partial); getConfig(): Readonly; compact(messages: AgentMessage[], model: Model, instructions?: string, force?: boolean, options?: CompactionExecutionOptions): Promise; private generateSummary; private callSummaryModels; applyCompaction(messages: AgentMessage[], result: CompactionResult): AgentMessage[]; estimateTotalTokens(messages: AgentMessage[]): number; } export {};