import type { ChatMessage } from '../runtime/chatTypes.js'; export declare const DEFAULT_CHARS_PER_TOKEN = 4; export declare const DEFAULT_IMAGE_TOKENS_HIGH = 1300; export declare const DEFAULT_IMAGE_TOKENS_LOW = 340; export declare const DEFAULT_MESSAGE_OVERHEAD = 4; export type ContextCompactionAction = 'none' | 'masked' | 'trimmed' | 'over_budget_untrimmed'; export interface TrimConversationResult { messages: ChatMessage[]; trimmedCount: number; insertedSummary: boolean; tokensSaved: number; beforeTokens: number; afterTokens: number; availableTokens: number; inputBudget: number; action: ContextCompactionAction; messageCountBefore: number; messageCountAfter: number; groupCountBefore?: number; groupCountAfter?: number; trimmedGroups: number; keptGroups: number; protectedGroups: number; summaryTokens: number; summaryTokenBudget: number; } export interface TrimConversationOptions { minProtectedGroups?: number; unmaskableTools?: ReadonlySet; videoTools?: ReadonlySet; audioTools?: ReadonlySet; charsPerToken?: number; imageTokensHigh?: number; imageTokensLow?: number; messageOverhead?: number; } export declare function estimateMessageTokens(message: ChatMessage, options?: TrimConversationOptions): number; export declare function estimateTotalTokens(messages: ChatMessage[], options?: TrimConversationOptions): number; export interface ContextBudgetInput { contextLength: number; outputBudget: number; safetyMargin?: number; toolSchemaTokens?: number; } export interface ContextBudgetResult { contextLength: number; outputBudget: number; safetyMargin: number; toolSchemaTokens: number; inputBudget: number; } export declare const DEFAULT_CONTEXT_SAFETY_MARGIN = 2048; export declare const DEFAULT_TOOL_SCHEMA_TOKENS = 16000; export declare function computeContextBudget(input: ContextBudgetInput): ContextBudgetResult; export declare function trimConversation(messages: ChatMessage[], systemMessage: ChatMessage, inputBudget: number, options?: TrimConversationOptions): TrimConversationResult; //# sourceMappingURL=index.d.ts.map