import type { AgentMessage } from '@earendil-works/pi-agent-core'; export type ContextBudgetRoute = 'fits' | 'compact_only' | 'truncate_tool_results_only' | 'compact_then_truncate'; export interface ContextBudgetInput { messages: AgentMessage[]; contextWindow: number; systemPrompt?: string; currentUserMessage?: AgentMessage; tools?: Array<{ name: string; description?: string; parameters?: unknown; }>; imageCount?: number; triggerThreshold?: number; reserveTokens?: number; minToolResultKeepChars?: number; canCompact?: boolean; } export interface ContextBudgetEvaluation { route: ContextBudgetRoute; estimatedTokens: number; transcriptTokens: number; systemPromptTokens: number; currentUserTokens: number; toolSchemaTokens: number; imageTokens: number; reducibleToolResultTokens: number; triggerTokens: number; hardLimitTokens: number; usagePercent: number; } export declare function estimateTextTokens(text: string): number; export declare function estimateMessageTokens(message: AgentMessage): number; export declare function estimateMessagesTokens(messages: readonly AgentMessage[]): number; export declare function evaluateContextBudget(input: ContextBudgetInput): ContextBudgetEvaluation; export declare function pruneToolResultsToFit(input: ContextBudgetInput): { messages: AgentMessage[]; evaluation: ContextBudgetEvaluation; prunedToolResults: number; };