import type { MessageLike } from "./types"; /** Only old, verified successful tool outputs are eligible for projection. */ export interface DtcConfig { protectRecentSteps: number; protectRecentTokens: number; targetRatio: number; minimumSavingsTokens: number; /** Additional protected tool names; never expands the built-in candidate set. */ protectedTools: string[]; } export declare const DTC_DEFAULTS: DtcConfig; export interface TransformStats { foldedTools: number; /** Subset folded before unique outputs because a later identical result was visible. */ redundantTools: number; estimatedBefore: number | undefined; estimatedAfter: number | undefined; targetTokens: number; protectedSteps: number; overBudget: boolean; skipped?: "invalid-budget" | "unknown-content"; } export interface ProjectionOptions { inputBudget: number; config: DtcConfig; /** This projection only: do not bypass protections or change future policy. */ force?: boolean; now?: number; } export interface ProjectionResult { messages: MessageLike[]; stats: TransformStats; } /** Approximate visible request payload, including full inputs of compacted tools. * Undefined means that media or an unfamiliar host shape cannot be estimated. */ export declare function estimateMessages(messages: readonly MessageLike[]): number | undefined; /** Returns an independent request projection. Planning never mutates source; * publication belongs to the host adapter after this function succeeds. * Only native compacted markers change, and every protection outranks budget. */ export declare function projectMessages(messages: readonly MessageLike[], options: ProjectionOptions): ProjectionResult; //# sourceMappingURL=engine.d.ts.map